Reputation: 151
I have this sample cropped image:
I need to make black thick lines (horizontal and vertical) disappear or extracted while leave all other info intact. These specific lines are either 4 or 5 pixels thick. I tried:
Can someone give insights or directions about what kind of structuring elements, what type of morphological ops should be considered or may be any other clever heuristics? The output, if extraction of thick black lines is done, will then look like this grid of random line segments:
Upvotes: 3
Views: 470
Reputation: 35525
This is how you erode the image and extract hough lines:
I=rgb2gray(imread('https://i.sstatic.net/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
From here, you can start thinking on what to delete. This is not straightforward unless you have a dictionary of symbols, e.g. how do you delete the line around the structures with >-<
shape? do you delete all the middle pixels or do you keep the entire middle thin bar? You can only know this if you know how the symbol should be without the thick lines.
Upvotes: 2