在Matlab中求连接件的最小孔和最大孔
如何在连接组件分析的图像中查找最小和最大孔。我已经做了如何找到洞:(下面的代码)在Matlab中求连接件的最小孔和最大孔,matlab,Matlab,如何在连接组件分析的图像中查找最小和最大孔。我已经做了如何找到洞:(下面的代码) 通过最小和最大孔,我假设你指的是最小和最大面积的孔。您可以使用regionprops查找连接组件的区域。但首先你必须区分洞和背景。因此,我们排除了与图像边界接触的组件 lbl = bwlabel(~BW); holes = ~(BW|ismember(lbl,unique([lbl([1 end],:) lbl(:,[1 end])']))); 现在,您需要找到剩余组件的最小和最大面积 rp = regionpr
通过最小和最大孔,我假设你指的是最小和最大面积的孔。您可以使用
regionprops
查找连接组件的区域。但首先你必须区分洞和背景。因此,我们排除了与图像边界接触的组件
lbl = bwlabel(~BW);
holes = ~(BW|ismember(lbl,unique([lbl([1 end],:) lbl(:,[1 end])'])));
现在,您需要找到剩余组件的最小和最大面积
rp = regionprops(holes);
min_hole_area = min([rp.Area]);
max_hole_area = max([rp.Area]);
你没有说你想要的只是面积还是像素的地图。您可以获得最小/最大孔的索引,但通常它可能不是唯一的。我在执行代码时出错。错误是在调用regionprops之前使用bwlabel(BW)或double(BW)将二进制图像转换为标签矩阵。您可能使用的Matlab版本与我不同。在任何情况下,只需按照它所说的去做:
rp=regionprops(bwlab(holes))代码>我必须在连接的组件(CC)中找到最小和最大大小的孔。当我使用regionprops(bwlabel(holes))执行时,它将打印min_hole_area=[],max_hole_area=[],不会打印任何值。如果得到的结果为空,则表明图像中没有孔。可能吗?使用imshow(孔)
和imshow(BW)
进行查看。如果你能发布你想使用的图片,这可能也会很有帮助。
rp = regionprops(holes);
min_hole_area = min([rp.Area]);
max_hole_area = max([rp.Area]);