【问题标题】:find the number of neighbour pixels找到相邻像素的数量
【发布时间】:2013-07-24 00:59:57
【问题描述】:

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

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

谁能给我一些建议吗?

【问题讨论】:

  • 与您的问题无关,您为什么不使用randi 而不是rand 并避免使用ciel

标签: matlab image-processing


【解决方案1】:

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

来自 Matlab 文档:

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

从这张图片可以看出,边缘像素只计算了一次,而不是两次。

【讨论】:

  • 当然我可以改成4。但它只适用于一个像素。如果有一个元素由几个像素组成呢?
猜你喜欢
  • 2020-11-08
  • 2023-03-10
  • 1970-01-01
  • 2019-07-24
  • 2015-10-20
  • 2013-08-27
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
相关资源
最近更新 更多