我创建了一个图像,其中包含随机像素的随机组:
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 :(得分:1)
Perimeter
和regionprops
不是您需要的,或使用regionprops(L, 'Area')==1
找到所有这些单个像素并将其周长设置为4 ....
来自Matlab文档:
Perimeter
- 是该地区边界的距离。 regionprops通过计算区域边界周围每个相邻像素对之间的距离来计算周长。 如果图片包含不连续的区域,则regionprops会返回意外结果。下图显示了此对象的周长计算中包含的像素。
从该图像中可以看到边缘像素只计数一次,而不是两次。