0

我有以下图像初始图像,在将其转换为二进制二进制图像后,我希望以某种方式仅保留显示的 3 行并删除其他对象。我在 Matlab 中使用区域道具等尝试了几件事,但我没有设法过滤掉这些区域。任何想法?

4

1 回答 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 回答