ハフ変換で得た直線の​延長のやり方と直線の​始点からx軸に平行な​線の引き方を教えてく​ださい。

6 visualizaciones (últimos 30 días)
Chikako Kuriyama
Chikako Kuriyama el 7 de Sept. de 2017
Comentada: Chikako Kuriyama el 11 de Sept. de 2017
ハフ変換で得た直線を延長して二本の直線を交差させたいです。また、得た直線の始点からx軸に平行な線を引きたいです。 見た目としては下の図のようにしたいと思っています。
  2 comentarios
Jiro Doke
Jiro Doke el 7 de Sept. de 2017
見やすいように添付画像をここに貼り付けておきます。
line.png
line2.png
line3.png
Chikako Kuriyama
Chikako Kuriyama el 11 de Sept. de 2017
ありがとうございます。どのようなプログラムなのか見せてもらうことは可能ですか。

Iniciar sesión para comentar.

Respuesta aceptada

Kei Otsuka
Kei Otsuka el 8 de Sept. de 2017
ハフ変換で直線の情報は得られているということなので、2直線の交点を求めることができれば、目的の図が得られそうです。 恐らくhoughlinesをお使いかと思いますが、出力は構造体になっていますので求められた直線の始点・終点だけ取り出してみます。
line1 = [lines(1).point1; lines(1).point2];
line2 = [lines(2).point1; lines(2).point2];
2直線を式(y=ax+b)で表現したいので、まずは2直線の傾きを求めます。
slope = @(line) (line(2,2) - line(1,2))/(line(2,1) - line(1,1));
a1 = slope(line1)
a2 = slope(line2)
次に、交点を求めます。
intercept = @(line,a) line(1,2) - a*line(1,1);
b1 = intercept(line1, a1);
b2 = intercept(line2, a2);
xint= (b2-b1)/(a1-a2);
yint = a1*xint + b1;
2直線と交点をプロットするとこんな感じです。
figure, imshow(bw) %画像データ
hold on
h = plot(line1(:,1), line1(:,2));
h(2) = plot(line2(:,1),line2(:,2));
set(h,'linewidth', 2)
plot(xint, yint, 'm*', 'markersize', 8)
交点が求まったので、insertShapeなどを利用して直線を描くと結果が得られます。
img = insertShape(img, 'line', [line1(2,:) xint yint], 'LineWidth', 7, 'Color', 'red');
img = insertShape(img, 'line', [line2(2,:) xint yint], 'LineWidth', 7, 'Color', 'red');
figure, imshow(img)
X軸に対して平行線を描く例は記載しませんが、是非トライしてみてください。

Más respuestas (1)

Chikako Kuriyama
Chikako Kuriyama el 11 de Sept. de 2017
ありがとうございます。説明のおかげでわからなかった部分がわかりました。ありがとうございました。

Categorías

Más información sobre 関数の基礎 en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!