2016-09-14 5 views
0

私はこのイメージを特徴づける2つの異なる値を持つ配列を有します。これを行う良い方法はありますか?ノイズ除去が

答えて

1

スレッショルド値に基づいて信号からノイズを特定する方法がない場合(つまり、すべての赤い点が同じ値を持つか、または1/0フラグだけである場合)、比較的シンプルで簡単な実装方法が可能です塊のサイズに基づいてノイズを除去することを検討する必要があります。

scipy's labelをご覧ください。これは、それぞれ別々の「塊」が個々の番号を持つ配列を与えます。次に、閾値以下の画素数(以下、n_thresh)を除去するだけの場合です。特徴は対角であるため

>>> from scipy.ndimage.measurements import label 
>>> import numpy as np 
>>> n_thresh = 1 
>>> a = np.array([[0,0,1,1,0,0],[0,0,0,1,0,0], 
        [1,1,0,0,1,0],[0,0,0,1,0,0], 
        [1,1,0,0,1,0],[0,0,1,1,0,0]]) 
>>> a 
array([[0, 0, 1, 1, 0, 0], 
     [0, 0, 0, 1, 0, 0], 
     [1, 1, 0, 0, 1, 0], 
     [0, 0, 0, 1, 0, 0], 
     [1, 1, 0, 0, 1, 0], 
     [0, 0, 1, 1, 0, 0]]) 
>>> labeled_array, num_features = label(a) 
>>> binc = np.bincount(labeled_array.ravel()) 
>>> noise_idx = np.where(binc <= n_thresh) 
>>> shp = a.shape 
>>> mask = np.in1d(labeled_array, noise_idx).reshape(shp) 
>>> a[mask] = 0 
>>> a 
array([[0, 0, 1, 1, 0, 0], 
     [0, 0, 0, 1, 0, 0], 
     [1, 1, 0, 0, 0, 0], 
     [0, 0, 0, 0, 0, 0], 
     [1, 1, 0, 0, 0, 0], 
     [0, 0, 1, 1, 0, 0]]) 
>>> a 

は、あなたはそのサンプルの塊内のグループ斜めに触れるピクセルlabelのドキュメンテーションの例に注意を払う必要があります。

関連する問題