我有一个二进制图像,它有两个连接的组件。两者都是相当水平的,一个在图像的顶部,另一个在底部。我需要做的是通过获取质心的y值最低的组件来提取我想要做的顶部组件(或者至少我认为是一个好方法)(因为MATLAB使用Java来显示图像,所以起源位于左上角)并擦除其他组件。到目前为止,我已经能够使用regionprops
来查找哪个区域具有质心最低的y值,但是从那里我不知道如何使用该组件再次获取二进制图像我想要。
我已在文档中读到bwconncomp
,labelmatrix
和ismember
有用,但我不太清楚如何正确使用它们(或者非常多。)
答案 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`