ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

houghlines

ハフ変換に基づく線分の抽出

構文

lines = houghlines(BW,theta,rho,peaks)
lines = houghlines(___,Name,Value,...)

説明

lines = houghlines(BW,theta,rho,peaks) は、ハフ変換で特定のビンに関連付けられたイメージ BW の線分を抽出します。thetarho は関数 hough が返すベクトルです。peaks は、関数 houghpeaks が返す行列で、線分の探索に使用するハフ変換ビンの行座標と列座標が含まれます。戻り値 lines は、見つかった結合線分の数と長さが等しい構造体配列です。

lines = houghlines(___,Name,Value,...) はイメージ BW の線分を抽出します。ここで、指名されたパラメーターは演算に影響を与えます。

すべて折りたたむ

イメージをワークスペースに読み取ります。

I  = imread('circuit.tif');

イメージを回転します。

rotI = imrotate(I,33,'crop');

バイナリ イメージを作成します。

BW = edge(rotI,'canny');

バイナリ イメージを使用してハフ変換を作成します。

[H,T,R] = hough(BW);
imshow(H,[],'XData',T,'YData',R,...
            'InitialMagnification','fit');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;

イメージのハフ変換でピークを検出します。

P  = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
x = T(P(:,2)); y = R(P(:,1));
plot(x,y,'s','color','white');

ラインを検出してプロットします。

lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
figure, imshow(rotI), hold on
max_len = 0;
for k = 1:length(lines)
   xy = [lines(k).point1; lines(k).point2];
   plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

   % Plot beginnings and ends of lines
   plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
   plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

   % Determine the endpoints of the longest line segment
   len = norm(lines(k).point1 - lines(k).point2);
   if ( len > max_len)
      max_len = len;
      xy_long = xy;
   end
end

最長の線分をシアンに色付けして強調表示します。

plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');

入力引数

すべて折りたたむ

バイナリ イメージ。実数、2 次元、非スパースの論理配列または数値配列として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

ラジアン単位で表したラインの回転角度。実数、2 次元、非スパースの論理配列または数値配列として指定します。

データ型: double

座標原点からの距離。実数、2 次元、非スパースの論理配列または数値配列として指定します。座標原点はイメージの左上隅 (0,0) です。

データ型: double

ハフ変換ビンの行座標と列座標。実数、非スパースの数値配列として指定します。

データ型: double

名前/値のペアの引数

オプションの Name,Value 引数のペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

例: lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);

すべて折りたたむ

同じハフ変換ビンに関連付けられている 2 つの線分間の距離。正の実数のスカラーとして指定します。線分間の距離が指定された値よりも小さい場合、関数 houghlines は 2 つの線分を結合して 1 つにします。

データ型: double

ラインの最小の長さ。正の実数のスカラーとして指定します。houghlines は指定された値より短いラインを取り除きます。

データ型: double

出力引数

すべて折りたたむ

見つかったライン。見つかった結合線分の数と長さが等しい構造体配列として返します。構造体配列の各要素には、これらのフィールドがあります。

フィールド

説明

point1

線分の終了点の座標を指定する 2 要素ベクトル [X Y]

point2

線分の終了点の座標を指定する 2 要素ベクトル [X Y]

theta

ハフ変換ビンの角度 (度単位)

rho

ハフ変換ビンの rho 軸位置

拡張機能

R2006a より前に導入

この情報は役に立ちましたか?