ドキュメンテーション

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

構文

[H,theta,rho] = hough(BW)
[H,theta,rho] = hough(BW,Name,Value,...)

説明

[H,theta,rho] = hough(BW) はバイナリ イメージ BW の標準的なハフ変換 (SHT) を計算します。関数 hough はラインを検出するように設計されています。関数はラインのパラメトリック表現 rho = x*cos(theta) + y*sin(theta) を使用します。この関数は、ラインに垂直なベクトルに沿った原点からラインまでの距離 rhox 軸とこのベクトルとの間の角度 theta (度単位) を返します。また、この関数は、行と列がそれぞれ rhotheta の値に対応するパラメーター空間行列になる、標準的なハフ変換 H を返します。詳細は、アルゴリズムを参照してください。

[H,theta,rho] = hough(BW,Name,Value,...) はバイナリ イメージ BW の標準的なハフ変換 (SHT) を計算し、名前付きパラメーターが計算に影響します。

コード生成 サポート: あり。

MATLAB Function ブロック サポート: あり。

すべて折りたたむ

イメージを読み取って強度イメージに変換します。

RGB = imread('gantrycrane.png');
I  = rgb2gray(RGB);

エッジを抽出します。

BW = edge(I,'canny');

ハフ変換を計算します。

[H,T,R] = hough(BW,'RhoResolution',0.5,'ThetaResolution',0.5);

元のイメージとハフ行列を表示します。

subplot(2,1,1);
imshow(RGB);
title('gantrycrane.png');
subplot(2,1,2);
imshow(imadjust(mat2gray(H)),'XData',T,'YData',R,...
      'InitialMagnification','fit');
title('Hough transform of gantrycrane.png');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
colormap(gca,hot);

イメージを読み取ってグレースケールに変換します。

RGB = imread('gantrycrane.png');
I  = rgb2gray(RGB);

エッジを抽出します。

BW = edge(I,'canny');

ハフ変換を計算します。

[H,T,R] = hough(BW, 'Theta', 44:0.5:46);

ハフ変換を表示します。

figure
imshow(imadjust(mat2gray(H)),'XData',T,'YData',R,...
   'InitialMagnification','fit');
title('Limited Theta Range Hough Transform of Gantrycrane Image');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal;
colormap(gca,hot)

入力引数

すべて折りたたむ

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

例: [H,T,R] = hough(BW);

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

名前/値のペアの引数

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

例: [H,T,R] = hough(BW,'RhoResolution',0.5,'Theta',0.5);

すべて折りたたむ

rho 軸に沿ったハフ変換ビンの間隔。'RhoResolution'0 より大きく、norm(size(BW)) より小さい実数の数値スカラーで構成されるコンマ区切りのペアとして指定します。

データ型: double

すべて折りたたむ

出力行列 H の対応する列の Theta 値。'Theta'[-90, 90) の範囲内の実数の数値ベクトルで構成されるコンマ区切りのペアとして指定します。

データ型: double

出力引数

すべて折りたたむ

ハフ変換行列。サイズが nrhontheta 列の数値配列として返されます。行と列は rhotheta の値に対応します。詳細は、アルゴリズムを参照してください。

x 軸と rho ベクトルの間の角度 (度単位)。double クラスの数値配列として返されます。詳細は、アルゴリズムを参照してください。

ラインに垂直なベクトルに沿った原点からラインまでの距離。double クラスの数値配列として返されます。詳細は、アルゴリズムを参照してください。

詳細

すべて折りたたむ

コード生成

この関数では MATLAB® Coder™ を使用した C コードの生成がサポートされています。詳細は、「画像処理のコード生成」を参照してください。

コード生成時には、以下の点に注意してください。

  • オプションのパラメーター 'Theta' および 'RhoResolution' はコンパイル時の文字列定数でなければなりません。

  • オプションの Theta ベクトルは制限付きのサイズでなければなりません。

MATLAB Function ブロック

この関数は Simulink の MATLAB Function ブロックで使用できます。

アルゴリズム

標準的なハフ変換 (SHT) はラインのパラメトリック表現を使用します。

rho = x*cos(theta) + y*sin(theta)

変数 rho は、ラインと垂直なベクトルに沿った原点からラインまでの距離です。theta は、原点からラインまでの垂直な投影を正の x 軸から時計回りに測定した角度です。theta の範囲は 90°θ<90° です。ライン自体の角度は θ+90° で、正の x 軸に対して時計回りに測定されています。

SHT は、行と列がそれぞれ rho 値と theta 値に対応するパラメーター空間行列です。SHT の要素は積和セルを表します。当初、各セルの値はゼロです。次に、イメージの背景以外のすべての点で、rhotheta ごとに計算されます。rho は SHT 内の最も近似する行に丸められます。積和セルは増分されます。この手順の終了時に、SHT(r,c)Q の値は、xy 平面の Q 点が theta(c)rho(r) によって指定されたライン上にあることを意味します。SHT のピーク値は入力イメージの潜在的なラインを表します。

ハフ変換行列 Hnrhontheta 列の行列です。ここで、

nrho = 2*(ceil(D/RhoResolution)) + 1 および
D = sqrt((numRowsInBW - 1)^2 + (numColsInBW - 1)^2) です。
rho 値は -diagonal から diagonal までの範囲です。ここで、
diagonal = RhoResolution*ceil(D/RhoResolution) です。

ntheta = length(theta)

R2006a より前に導入

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