Drawing a white line on an image using (rho, theta).
4 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Julian Hapke
2017 年 6 月 19 日
編集済み: Julian Hapke
2017 年 6 月 19 日
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.
回答 (1 件)
Julian Hapke
2017 年 6 月 20 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Spline Postprocessing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!