頂点の近似をしたいです。

조회 수: 5 (최근 30일)
daisuke shuugisono
daisuke shuugisono 2018년 7월 6일
댓글: daisuke shuugisono 2018년 7월 8일
添付ファイルの画像にある四角形の角が丸みのある角です。 その四角形のそれぞれの辺を延長し、交わった座標の取得を行いたいです。 よろしくお願い致します。
  댓글 수: 2
mizuki
mizuki 2018년 7월 8일
いつも MATLAB Answers をご活用いただきありがとうございます.ご質問とは関係ありませんが,MATLAB Answers 利用時のヒントをお知らせします.
画像ファイルがある場合,本文の文中に挿入していただくと文章と一緒に画像を見ることができます.また,適切な場所で画像を紹介することができます.
画像を挿入する方法は,以下のキャプチャの赤い部分をクリックします.
もし画像以外のコードやPDFファイルなどをお持ちの場合は,今までどおり青い部分をクリックしてください.
MATLAB Answers の UI が分かりにくく恐縮ですが,ぜひ次回画像を使用される場合はご活用ください.
daisuke shuugisono
daisuke shuugisono 2018년 7월 8일
ありがとうございます。次回から利用させていただきます。

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

채택된 답변

Yuichi Tadokoro
Yuichi Tadokoro 2018년 7월 7일
ちょうど似たような内容に取り組んでいたので回答します. 方法はいろいろ考えられますが,ハフ変換を使用したものが簡単だと思います.
手順は以下のとおりです.
  1. ラプラシアンフィルタ等で輪郭線だけを取り出す
  2. ハフ変換をかける
  3. ハフ空間上のピークをhoughpeaks関数で4つ取り出す
  4. 得られた4つの直線から2つ選ぶ組み合わせを列挙する
  5. 直線の式を連立することで交点を求める( https://blog.tokor.org/2018/07/04/%25E3%2583%258F%25E3%2583%2595%25E5%25A4%2589%25E6%258F%259B%25E3%2581%25A7%25E6%25B1%2582%25E3%2582%2581%25E3%2581%259F2%25E7%259B%25B4%25E7%25B7%259A%25E3%2581%25AE%25E4%25BA%25A4%25E7%2582%25B9/ )
コードとしては以下のような感じになります.
※外側の四角がじゃまだったため,コードの最初の部分で画像の真ん中の方だけ取り出しています.
clear
close all
GS = rgb2gray(imread('sample.bmp'));
BW = GS(100:end-100, 100:end-100)>128;
BW2 = imfilter(BW,fspecial('laplacian'),'replicate');
figure(1);
imshow(BW2);
[H,T,R] = hough(BW2,'RhoResolution',0.5,'ThetaResolution',0.5);
P = houghpeaks(H,4);
A = [cosd(T(P(:,2)))' sind(T(P(:,2)))'];
B = R(P(:,1))';
figure(2);
imshow(BW);hold on;
XY = [];
idx = nchoosek([1 2 3 4],2); % 4直線の組み合わせをつくる
for k=1:size(idx,1)
if abs(det(A(idx(k,:),:))) < 1e-3
% 交点がないor遠方にできる場合(1e-3は適宜調整)
continue;
end
xy = A(idx(k,:),:)\B(idx(k,:)); % 交点を求める
XY = [XY; xy'];
end
plot(XY(:,1), XY(:,2), 'r*', 'MarkerSize', 10);
XY
  댓글 수: 1
daisuke shuugisono
daisuke shuugisono 2018년 7월 8일
例文や参考までのせてくださりありがとうございます。

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

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!