Drawing a white line on an image using (rho, theta).
    8 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
I want to draw a line on the following image using (| |rho , theta ) of the detected line using the Hough transformation.

.
expected output

.
What is wrong in the following code?
It's not being able to display the line.
input_image = gray_imread('Scratch1.1.png');
maxPeaks = 1; 
fillgap = 500; 
minline = 7; 
binary_image = edge(input_image,'canny');
[H,T,R] = hough(binary_image);
threshPeaks = ceil(0.3*max(H(:)));    
P  = houghpeaks(H, maxPeaks, 'threshold', threshPeaks);    
hlines = houghlines(binary_image, T, R, P, 'FillGap', fillgap, 'MinLength', minline);
h_line = hlines(1);
rho = h_line.rho;
theta = h_line.theta;
imshow(input_image);
hold on;
x = h_line.point1(1):h_line.point2(1);
y = (rho - x* cos(theta) )/ sin(theta);
plot(x,y);
2 Kommentare
  Julian Hapke
      
 am 19 Jun. 2017
				
      Bearbeitet: Julian Hapke
      
 am 19 Jun. 2017
  
			There seems to be a Problem when you calculate x and y. The line is there but in the wrong location (try expanding the axis limits to see what I mean.) Also: Calculation of x and y (especially with interval 1 on x, it's just a line) is not necessary. If I use
hline = plot([h_line.point1(1) h_line.point2(1)],[h_line.point1(2) h_line.point2(2)],'w')
I get the results you seem to be expecting.
Antworten (1)
  Julian Hapke
      
 am 20 Jun. 2017
        My comment was the answer, so to stick to the structure of this forum:
Your calculation of x and y yields to wrong values. If you use the end points of the houghlines directly
hline = plot([h_line.point1(1) h_line.point2(1)],[h_line.point1(2) h_line.point2(2)],'w')
you get the line you showed in your "expected output"
Please mark this as answer if it fits your needs.
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

