2015-01-29 2 views
0
import numpy as numpy 

data = np.array([[0, 0 , 0 , 0 , 0 , 0 , 0 , 0], 
       [0,*1*, 0 , 0 , 0 , 0 , 0 , 0], 
       [1, 0 , 0 , 0 ,*1*, 0 , 0 , 0], 
       [1, 0 , 0 , 0 ,*1*,*1*, 0 , 0], 
       [0, 0 , 0 ,*1*,*1*, 0 , 0 , 1], 
       [1, 0 , 0 , 0 ,*1*, 0 , 1 , 1], 
       [1, 1 , 0 , 0 , 0 , 0 , 1 , 0]]) 

Я хочу, чтобы извлечь индексы белых (единицы) пластыри, если патч окружен чернокожие (нули) во всех четырех соседних пикселях. Ожидаемые позиции обозначаются курсивом.Extract показателей белых окруженных черных

Любые идеи?

+1

возможно дубликат [2D Numpy array- проверить, если все соседние члены равны] (http://stackoverflow.com/questions/26662055/2d-numpy- array-check-to-see-if-all-nearby-terms-are-equal) – farenorth

+3

Я не уверен, что понимаю ваш вопрос. Вы отметили точки ('* 1 *'), у которых рядом есть «1». Вместо того, чтобы находить * точки *, окруженные 0 на всех четырех сторонах, похоже, что вы пытаетесь найти смежные * патчи *, которые не пересекают край домена. – farenorth

+0

@farenorth да, вы правы, я пытаюсь найти смежные исправления, которые не пересекают край домена. – Borys

ответ

2

Сначала наклейте все связанные объекты на изображении (элемент структурирования по умолчанию рассматривает соседей в направлениях север-юго-восток-запад). Затем удалите все объекты, которые касаются границы. Фон помечен как 0, остальные объекты полностью окружены им.

from __future__ import print_function 
import numpy as np 

from scipy.ndimage import label 
from skimage.segmentation import clear_border 

data = np.array([[0, 0 , 0 , 0 , 0 , 0 , 0 , 0], 
       [0, 1 , 0 , 0 , 0 , 0 , 0 , 0], 
       [1, 0 , 0 , 0 , 1 , 0 , 0 , 0], 
       [1, 0 , 0 , 0 , 1 , 1 , 0 , 0], 
       [0, 0 , 0 , 1 , 1 , 0 , 0 , 1], 
       [1, 0 , 0 , 0 , 1 , 0 , 1 , 1], 
       [1, 1 , 0 , 0 , 0 , 0 , 1 , 0]]) 

objects, count = label(data) 
objects_inside = clear_border(objects) 

print((objects_inside != 0).astype(int)) 

Результат:

[[0 0 0 0 0 0 0 0] 
[0 1 0 0 0 0 0 0] 
[0 0 0 0 1 0 0 0] 
[0 0 0 0 1 1 0 0] 
[0 0 0 1 1 0 0 0] 
[0 0 0 0 1 0 0 0] 
[0 0 0 0 0 0 0 0]] 
Смежные вопросы