2017-06-24 12 views
0

これに対処する方法がわかりません。白黒ピクセルのリストがあります。私はこれに似た何かをするのPythonの方法を探していますブラックピクセルが8以下のクラスターに含まれている場合、削除する

x = [255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
255] 

if x[2] = 0 
then look ahead 8 places, 
if all x[2] to x[10] are 0 and x[11] = 255 change all to 255 
if all are not 0 
see if all x[2] to x[9] are zero 
... 
... 
... 
see if x[2] to x[3] are zero 

私はこれまでhabe

for w in range(len(x)): 
     if x[w] == 0 and x[w+8] == 0 and x[w+9] == 255: 
      print thresh1[h][w] 
     elif x[w] == 0 and x[w+7] == 0 and x[w+8] == 255: 
      print thresh1[h][w] 
     elif x[w] == 0 and x[w+6] == 0 and x[w+8] == 255: 
      print thresh1[h][w] 
     elif x[w] == 0 and x[w+5] == 0 and x[w+8] == 255: 
      print thresh1[w] 
     elif x[w] == 0 and x[w+4] == 0 and x[w+8] == 255: 
      print thresh1[w] 
     elif x[w] == 0 and x[w+3] == 0 and x[w+8] == 255: 
      print thresh1w] 
     elif x[w] == 0 and x[w+2] == 0 and x[w+8] == 255: 
      print thresh1[h][w] 
     elif x[w] == 0 and x[h][w+1] == 0 and x[w+8] == 255: 
      print thresh1[h][w] 
     elif x[w] == 0 and x[w+1] == 255: 
      print x[w] 

任意の助けを動作していないようです大変感謝しています。

+0

これは役立つかもしれない - https://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.ndimage.morphology.binary_closing.html – Divakar

+0

私の最初のアプローチは、内部のバグがありました。今私の例が働く。私の答えでコードを実行してください。 – Franz

答えて

0

このソリューションは、少し複雑であると思われると改善されるかもしれないが、それは動作します:

import numpy as np 
my_list = np.array([255]*100) 
my_list[10:17] = 0 
my_list[20:30] = 0 
print(my_list) 
del_list = [] 
count = 0 
current_del_list = [] 
for iterator, value in enumerate(my_list): 
    if value < 255: 
     current_del_list += [iterator] 
     count+=1 
     print(current_del_list) 
    else: 
     if count > 8: 
      count = 0 
      current_del_list = [] 
     else: 
      del_list += current_del_list 
      current_del_list = [] 
      count=0 
my_list[del_list]=255 
my_list = list(my_list) 
print(my_list) 

あなたのリスト内のすべての要素についてはその255下回っている場合は、カウンタがインクリメントされている場合、私はテストしています。次の255が発生したときにこのカウンタが8未満になると、現在位置のリストがdel_listに追加されます。その後、del_listの位置のすべての値はmy_listで255に設定されます。

0

形態学的にはopening操作を使用できます。

In [131]: from scipy.ndimage.morphology import grey_opening 

In [132]: grey_closing(np.array(x), structure=np.ones(8)) 
Out[132]: 
array([255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 255, 255, 255]) 
関連する問題