找到相邻像素的数量

时间:2013-07-23 16:49:28

标签: matlab image-processing

我创建了一个图像,其中包含随机像素的随机组:

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)。如果该组位于图像的边界,则还应将其考虑在内。

有人可以给我一个关于如何做的提示吗?

1 个答案:

答案 0 :(得分:1)

Perimeterregionprops不是您需要的,或使用regionprops(L, 'Area')==1找到所有这些单个像素并将其周长设置为4 ....

来自Matlab文档:

Perimeter - 是该地区边界的距离。 regionprops通过计算区域边界周围每个相邻像素对之间的距离来计算周长。 如果图片包含不连续的区域,则regionprops会返回意外结果。下图显示了此对象的周长计算中包含的像素。

enter image description here

从该图像中可以看到边缘像素只计数一次,而不是两次。