我有以下图像初始图像,在将其转换为二进制二进制图像后,我希望以某种方式仅保留显示的 3 行并删除其他对象。我在 Matlab 中使用区域道具等尝试了几件事,但我没有设法过滤掉这些区域。任何想法?
问问题
57 次
1 回答
0
霍夫变换可能是第一种参考方式,但如果你对结果不满意,你可以尝试使用以线条作为结构元素的形态学开口。由于您的线条指向几个不同的方向,因此您应该尝试任何可能的方向,然后合并产生图像。如果您对方向有先验知识,则可以利用它并按方向过滤。
示例代码块可能如下所示:
my_img = imread('img.png'); % get your image here
opened=[];
se_length = 25; % chose in pixels, according to your need
for derece = 50:2:70 % use 0:3:180 for all directions
se_line = strel('line', se_length, derece);
opened = cat(3, opened, imopen(my_img, se_line));
end
max_opened = max(opened, [], 3); % merge images based on maximum (or your own method)
形态开口可用于过滤许多形状。只需根据您的需要选择结构元素。上述脚本为您的特定图像示例提供以下结果:
于 2021-05-14T13:19:16.667 回答