如何在质心

时间:2016-07-12 21:15:39

标签: matlab image-processing

我有一个二进制图像,它有两个连接的组件。两者都是相当水平的,一个在图像的顶部,另一个在底部。我需要做的是通过获取质心的y值最低的组件来提取我想要做的顶部组件(或者至少我认为是一个好方法)(因为MATLAB使用Java来显示图像,所以起源位于左上角)并擦除其他组件。到目前为止,我已经能够使用regionprops来查找哪个区域具有质心最低的y值,但是从那里我不知道如何使用该组件再次获取二进制图像我想要。

我已在文档中读到bwconncomplabelmatrixismember有用,但我不太清楚如何正确使用它们(或者非常多。)

1 个答案:

答案 0 :(得分:1)

这是我刚刚编写的解决方案,但是如果有更好或更优雅的解决方案,我很乐意了解它!

P.S。 filtered是我的形象

connComp = bwconncomp(filtered);

props = regionprops(filtered, 'Centroid');

justTop = zeros(size(filtered,1), size(filtered,2));
if props(1).Centroid(2) > props(2).Centroid(2)
    justTop(connComp.PixelIdxList{2}) = 1;
else
    justTop(connComp.PixelIdxList{1}) = 1;
end`