2016-06-13 13 views
0

私はカーブを表示する実験からいくつかのスクリーンショットを持っており、そのカーブを配列に抽出してデータを分析したいと考えています。バイナリイメージのカーブを確認

私の方法の最初の部分は、曲線を残すだけでよく選択されたしきい値を持つ画像をバイナリに変換することです。これは正常に動作しますが、カーブから配列を抽出する2番目の部分はありません。私は、絵を見て白いピクセルを特定する "素朴な"方法を試しましたが、結果は期待されたもののどこにもありません。

誰かに解決策がありますか?

A screenshot example

import numpy as np 
import matplotlib.pyplot as plt 
import PIL.Image as img 

gray = img.open('0100k.jpg').convert('L') 
bw = gray.point(lambda x: 0 if x<240 else 255, '1') 
bw = bw.convert('1') 
bw.show() 
pix = np.array(bw) 
(n,m) = pix.shape 
curve = np.zeros(n) 
for i in range(n): 
    for j in range(m): 
     if pix[i,j] == 1: 
     curve[i] = j 
plt.plot(curve) 
plt.show() 
+0

私は助けることが疑問に思うことができません'np.array'はリストのリストを返すからです。最初の要素は内部リスト(垂直)にアクセスし、2番目の要素は各リストの個々の要素(水平)にアクセスします。 –

+0

あなたは正しいです。また、0,0ポイントは左上隅にあるので、私はちょうどこのようなより良いことがわかりました: '(n、m)= pix.shape curve = np.zeros(m) for範囲(n)内: jの範囲(m): pix [i、j] == 1の場合: 曲線[j] = ni' – Izzul

+0

ああ、まあ、でる。それは私にとっても欲求不満の原因です。すべての数学では、原点は左下隅にあります。なぜ多くの図書館がそうでなければ私より先にいると主張するのか –

答えて

0

おかげでみんな、メソッドが機能するようになりました、解決策は、それぞれの寸法にiとjの正しい逢引にありました。それを指摘する@Matt Cremensに感謝します。
しかし、プロットは厚く、それは絵の左側にあるもののvisibleを同様に、いくつかの非既存の画素を検出する:あなたは `i`と` j`逆転を持っている場合http://s31.postimg.org/i0conbbxn/figure_1.png

関連する問題