how to get a line information after applying the houghlines

4 views (last 30 days)
Hello.
I want to measure the terrain slope angle from the terrain image file. so I used some preferred code from the community. which is below.
I = imread('IMG.tif');
rotI = imrotate(I, 0 ,'crop');
BW = edge(rotI,'canny');
[H,T,R] = hough(BW);
imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
x = T(P(:,2));
y = R(P(:,1));
plot(x,y,'s','color','white');
% Find lines and plot them
lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
figure, imshow(rotI), 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','yellow');
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
so, I got some lines on the image. however, how to measure the drawn lines information? is it possible to get such information, slope angle, from the lines?
Please let me know!

Accepted Answer

Jiro Doke
Jiro Doke on 25 Oct 2016
In your example, the variable lines has the information about the straight lines. Double-click the variable in the Workspace. You will see that it has the coordinates of the end points of the lines ( point1 and point2 ). Also, theta gives you the angle information. 90 - theta is the actual angle of the lines, measured counter-clockwise from +x axis.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!