Segmenting rectangular features from various images
1 view (last 30 days)
Show older comments
I would like to segment the following image from the separation that happens in the middle. I am currently using Hough and it produces a line in the separation but it's not accurate enough to provide the edge right at the separation (see second image). Eventually I want it to work with various images like the third one below that has a different contrast and wider separation in the middle.
The code I am using is as follows:
[I1]=imread(['A_gray.PNG']);
imshow(I1)
B=edge( medfilt2(I1,[30,1]) );
B=bwareafilt(B,[30,inf]); % [50, Inf]
imshow(B)
B=imclose(B,ones(100,5));
imshow(B)
BW2_V = B;
[H_V,theta_V,rho_V] = hough(BW2_V);
figure
imshow(imadjust(rescale(H_V)),[],...
'XData',theta_V,...
'YData',rho_V,...
'InitialMagnification','fit');
xlabel('\theta (degrees)')
ylabel('\rho')
axis on
axis normal
hold on
colormap(gca,hot)
P_V = houghpeaks(H_V,5,'threshold',ceil(0.3*max(H_V(:))));
x_V = theta_V(P_V(:,2));
y_V = rho_V(P_V(:,1));
plot(x_V,y_V,'s','color','black');
lines_V = houghlines(BW2_H,theta_V,rho_V,P_V,'FillGap',500,'MinLength',100);
figure, imshow(I1), title('Line Detection Horizontal'), hold on
max_len_V = 0;
for k = 1:length(lines_V)
xy_v = [lines_V(k).point1; lines_V(k).point2];
plot(xy_v(:,1),xy_v(:,2),'LineWidth',2,'Color','green');
% Plot beginnings and ends of lines
plot(xy_v(1,1),xy_v(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy_v(2,1),xy_v(2,2),'x','LineWidth',2,'Color','red');
% Determine the endpoints of the longest line segment
len_V = norm(lines_V(k).point1 - lines_V(k).point2);
if ( len_V > max_len_V)
max_len_V = len_V;
xy_long_V = xy_v;
end
end
% highlight the longest line segment
plot(xy_long_V(:,1),xy_long_V(:,2),'LineWidth',2,'Color','red');
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/359035/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/359038/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/359041/image.png)
0 Comments
Answers (0)
See Also
Categories
Find more on Image Segmentation and Analysis in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!