このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
houghlines
ハフ変換に基づく線分の抽出
説明
例
線分の検索と最長セグメントの強調表示
イメージをワークスペースに読み取ります。
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');
入力引数
BW
— バイナリ イメージ
2 次元 logical 行列 | 2 次元数値行列
バイナリ イメージ。2 次元 logical 行列または 2 次元数値行列として指定します。数値入力の場合、非ゼロのピクセルは 1
(true
) であると見なされます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
theta
— ラインの回転角度
数値行列
ラインの回転角度 (度単位)。数値行列として指定します。角度は x 軸と rho
ベクトルの間で測定されます。
データ型: double
rho
— 原点からラインまでの距離
数値行列
座標原点からの距離。数値行列として指定します。座標原点はイメージの左上隅 (0,0) です。
データ型: double
peaks
— ハフ変換ビンの行座標と列座標
数値行列
ハフ変換ビンの行座標と列座標。数値行列として指定します。
データ型: double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name
を引用符で囲みます。
例: lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
FillGap
— 同じハフ変換ビンに関連付けられている 2 つの線分間の距離
20
(既定値) | 正の数値
同じハフ変換ビンに関連付けられている 2 つの線分間の距離。正の数値として指定します。線分間の距離が指定された値よりも小さい場合、関数 houghlines
は 2 つの線分を結合して 1 つにします。
データ型: double
MinLength
— ラインの最小の長さ
40
(既定値) | 正の数値
ラインの最小の長さ。正の数値として指定します。houghlines
は指定された値より短いラインを取り除きます。
データ型: double
出力引数
lines
— 検出されたライン
構造体配列
検出されたライン。見つかった結合線分の数と長さが等しい構造体配列として返されます。構造体配列の各要素には、これらのフィールドがあります。
フィールド | 説明 |
---|---|
| 線分の終了点の座標を指定する 2 要素ベクトル |
| 線分の終了点の座標を指定する 2 要素ベクトル |
| ハフ変換ビンの角度 (度単位) |
| ハフ変換ビンの |
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
houghlines
では C コードの生成がサポートされています (MATLAB® Coder™ が必要)。詳細については、イメージ処理のコード生成を参照してください。オプションのパラメーター名
'FillGap'
および'MinLength'
はコンパイル時の定数でなければなりません。それらに関連付けられた値はコンパイル時の定数である必要はありません。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
オプションのパラメーター名
'FillGap'
および'MinLength'
はコンパイル時の定数でなければなりません。それらに関連付けられた値はコンパイル時の定数である必要はありません。
バージョン履歴
R2006a より前に導入
参考
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)