2013-07-23 2 views
0

создать образ, который имеет случайные группы случайных пикселов:найти число соседних пикселей

img=ones(100,100) 
numRandom = 505; 
linearIndices = ceil(numel(img) * rand(1, numRandom)); 
img(linearIndices) = 0; 
imshow(img)` 

Тогда я включаю это изображение в двоичную и найти площадь каждой группы пикселей:

regionprops(L, 'Area'); 

Мне также нужен периметр каждой группы. К сожалению, regionprops не дает мне правильных результатов (например, если есть один пиксель, функция возвращает 0 вместо 4), поэтому я думаю, что лучше найти число соседних пикселей каждой группы (так что для случая всего лишь один пиксель, ответ будет 4). Если группа находится на границе изображения, ее также следует принимать во внимание.

Может ли кто-нибудь дать мне совет о том, как это сделать?

+0

не имеет отношения к вашему вопросу, почему вы не используете 'randi' вместо' rand' и не нуждаетесь в 'ciel'? –

ответ

1

Perimeter и regionprops не то, что вам нужно, то, или найти все эти отдельные пиксели с помощью regionprops(L, 'Area')==1 и установить их по периметру 4 ....

Из Matlab документации:

Perimeter - это расстояние вокруг граница области. regionprops вычисляет периметр, вычисляя расстояние между каждой смежной парой пикселей вокруг границы области. Если изображение содержит несмежные регионы, regionprops возвращает неожиданные результаты. На следующем рисунке показаны пиксели, включенные в расчет периметра для этого объекта.

enter image description here

С этой картинке вы можете увидеть, что краевые пиксели подсчитываются только один раз, а не в два раза.

+0

, конечно, я могу изменить на 4. но он будет работать только для одного пикселя. и что, если есть элемент, состоящий из нескольких пикселей? – user2611275

Смежные вопросы