Удалить небольшие объекты в маске и создать новую двоичную маску из цикла for - PullRequest
0 голосов
/ 07 января 2019

Я ценю вашу помощь;

Эта часть кода позволяет мне построить то, что я хочу, но мне нужно присвоить результат (двоичное изображение с> 500 объектами области) переменной для дальнейшей обработки

Improved_label = np.zeros_like(label_image)

#props = regionprops(label_image)

for R in regionprops(label_image):
    if R.area > 500:
        # draw the region (I'm sure there's a more efficient way of doing it)
        for c in R.coords:  
            Improved_label[c[0], c[1]] = 1

#Improved_labe1 = Improved_label > 1

1 Ответ

0 голосов
/ 07 января 2019

Видимо, что-то не так с именем «улучшено» в начале имени переменной (не знаю почему). но в любом случае, есть два решения этой проблемы. Я надеюсь, что это будет полезно для людей с опытом работы в Matlab:

------------- Вариант A --------------

label2_test = np.zeros_like(label_image)

for R in regionprops(label_image):
    if R.area > 1000:
        # draw the region (I'm sure there's a more efficient way of doing it)
        for c in R.coords:  
            label2_test[c[0], c[1]] = 1

label2_test = label2_test > 0

plt.imshow(labe2_test)

---------------- Вариант B -----------------

from skimage import morphology
labe1_improved = morphology.remove_small_objects(label_image, min_size=1000)
...