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

조회 수: 7 (최근 30일)
Chikako Kuriyama
Chikako Kuriyama 2017년 9월 7일
댓글: Chikako Kuriyama 2017년 9월 11일
ハフ変換で得た直線を延長して二本の直線を交差させたいです。また、得た直線の始点からx軸に平行な線を引きたいです。 見た目としては下の図のようにしたいと思っています。
  댓글 수: 2
Jiro Doke
Jiro Doke 2017년 9월 7일
見やすいように添付画像をここに貼り付けておきます。
line.png
line2.png
line3.png
Chikako Kuriyama
Chikako Kuriyama 2017년 9월 11일
ありがとうございます。どのようなプログラムなのか見せてもらうことは可能ですか。

댓글을 달려면 로그인하십시오.

채택된 답변

Kei Otsuka
Kei Otsuka 2017년 9월 8일
ハフ変換で直線の情報は得られているということなので、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軸に対して平行線を描く例は記載しませんが、是非トライしてみてください。

추가 답변 (1개)

Chikako Kuriyama
Chikako Kuriyama 2017년 9월 11일
ありがとうございます。説明のおかげでわからなかった部分がわかりました。ありがとうございました。

카테고리

Help CenterFile Exchange에서 関数の基礎에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!