我有这张裁剪的样本图像:
我需要使黑色粗线(水平和垂直)消失或提取,同时保留所有其他信息。这些特定的行是4或5像素厚。我尝试过:
有人可以提供关于什么类型的结构元素,应考虑哪种类型的形态学操作的见解或指导,或者可以是其他任何巧妙的启发式方法?如果完成了粗黑线的提取,则输出将看起来像下面的随机线段网格:
答案 0 :(得分:2)
这是侵蚀图像并提取轮廓线的方法:
I=rgb2gray(imread('https://i.stack.imgur.com/cbHFL.jpg'));
Ibw=I>200;
imshow(Ibw)
SE=strel('disk',1)
Ier=imerode(~Ibw,SE);
[H,T,R] = hough(Ier);
P = houghpeaks(H,100,'threshold',ceil(0.1*max(H(:))));
lines = houghlines(Ier,T,R,P);
%% plot
imshow(I);hold on
max_len = 0;
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
% Plot beginnings and ends of lines
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','blue');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
% Determine the endpoints of the longest line segment
len = norm(lines(k).point1 - lines(k).point2);
if ( len > max_len)
max_len = len;
xy_long = xy;
end
end
从这里开始,您可以考虑删除什么。除非您有一个符号字典,例如如何删除具有>-<
形状的结构周围的线?删除所有中间像素还是保留整个中间细条?仅当您知道没有粗线的符号应该如何时,您才能知道这一点。