このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
imfindcircles
円のハフ変換を使用した円の検索
構文
説明
[
は、半径が centers
,radii
] = imfindcircles(A
,radiusRange
)radiusRange
で指定された範囲内にある円を検索します。追加の出力引数 radii
には、centers
の各円の中心に対応する推定半径を含めます。
[
は、円ごとにアキュムレータ配列のピークの大きさを (降順で) 含む列ベクトル centers
,radii
,metric
] = imfindcircles(A
,radiusRange
)metric
も返します。centers
と radii
の行はそれぞれ metric
の行に対応します。
[___] = imfindcircles(___,
は、前述の構文のいずれかを使用して、1 つ以上の名前と値の引数をもつ追加オプションを指定します。Name=Value
)
例
入力引数
出力引数
ヒント
radius
(またはrmin
) の値が 5 以下の場合、imfindcircles
の精度は制限されます。通常の場合、
"TwoStage"
ではなく"PhaseCode"
メソッド (既定の設定) を使用すると、半径の推定ステップが高速になります。"PhaseCode"
と"TwoStage"
の両方の計算メソッドが、同心円を検出する機能において制限されます。同心円の検出結果は、入力イメージによって異なる場合があります。imfindcircles
は中心がイメージの領域の外にある円を検索しません。imfindcircles
は、イメージを処理する前に、関数rgb2gray
を使用してトゥルーカラー イメージをグレースケールに変換します。バイナリ (logical
) イメージおよび整数型イメージは、処理する前に、関数im2single
を使用してデータ型single
に変換されます。バイナリ イメージの結果の精度を高めるため、imfindcircles
は、前処理手順としてimfilter
を使用してガウス平滑化も適用します。
アルゴリズム
imfindcircles
は、円のハフ変換 (CHT) ベースのアルゴリズムを使用してイメージ内の円を検出します。この手法が使用されるのは、ノイズ、オクルージョン、および照度の変化に対してロバスト性があるためです。
CHT は厳密に規定されているアルゴリズムではなく、さまざまな方法で実装することができます。ただし、すべての手法に共通する 3 つの重要な手順があります。
アキュムレータ配列の計算
高い勾配値の前景ピクセルは候補ピクセルとして指定され、アキュムレータ配列に "投票" できるようになります。従来の CHT 実装において、候補ピクセルは、周囲に一定半径の完全な円を形成するパターンに投票します。図 1a は、実際の円 (実線の円) 上にある候補ピクセルと、候補ピクセルの従来の CHT 投票パターン (破線の円) の例を示しています。
従来の CHT 投票パターン
中心の推定
イメージの円に属する候補ピクセルの票は、円の中心に対応するアキュムレータ配列のビンに蓄積されます。したがって、円の中心は、アキュムレータ配列内のピークを検出することで推定されます。図 1b は、実際の円 (実線の円) 上にある候補ピクセル (実線の点) と、実際の円の中心と一致する投票パターン (点線の円) の例を示しています。
半径の推定
CHT アルゴリズムで一般に行われるように、複数の半径の値に同じアキュムレータ配列を使用する場合、検出された円の半径は別の手順で推定する必要があります。
imfindcircles
には、イメージ内の円を検出するために位相符号化 (既定の設定) および 2 段階という 2 つのアルゴリズムが備わっています。この 2 つのアルゴリズムは共通の計算手順をいくつか使いますが、また、それぞれに固有の特徴をもちます。
この 2 つのアルゴリズムで使用される共通の計算機能は以下のとおりです。
2 次元アキュムレータ配列の使用
従来のハフ変換では、複数の半径の投票を格納するために 3 次元配列を必要とします。これにより、大きなストレージが必要になり、処理時間が長くなります。位相符号化メソッドと 2 段階メソッドは、すべての半径に対して 2 次元アキュムレータ配列を 1 つ使用することによりこの問題を解決しています。この手法では半径の推定という追加ステップが必要になりますが、広い半径範囲を扱うときは特に、全体的な計算負荷は通常低くなります。これは、最近の CHT 実装で広く採用されている手法です。
エッジ ピクセルの使用
全体のメモリ要件と速度は、候補ピクセルの数に大きく依存します。その数を制限するため、高い勾配のピクセルのみが票の集計に含まれるように、入力イメージの勾配の大きさがしきい値になっています。
エッジ方向の情報の使用
パフォーマンスは、候補ピクセルに対して利用可能なビンの数を制限することでも最適化されます。これを行うには、ローカルで利用可能なエッジ情報を使用して、勾配の方向に沿って限られた間隔のみで投票を許可します (図 2)。投票間隔の幅 (図中の点 cmin と cmax の間) は、rmin と rmax で定義される半径の範囲によって決まります。
投票モード: 勾配方向の複数の半径
rmin | 最小探索半径 |
rmax | 最大探索半径 |
ractual | 候補ピクセルが属する円の半径 |
cmin | 半径 rmin の円の中心 |
cmax | 半径 rmax の円の中心 |
cactual | 半径 ractual の円の中心 |
関数 imfindcircles
で用いられている 2 つの CHT メソッドでは、円の半径を計算する方法が基本的に異なります。
2 段階
半径は、推定された円の中心とイメージ情報を使用して明示的に推定されます。この手法は、半径ヒストグラムの計算に基づいています [2] [3]。
位相符号化
半径は、アキュムレータ配列内の複素数値と、配列エントリの位相で符号化された半径情報から推定されます[1]。エッジ ピクセルによって投じられた票には、考えられる中心の位置だけでなく、中心位置に関連付けられた円の半径についての情報も含まれます。放射状ヒストグラムを使用して明示的に半径を推定しなければならない 2 段階メソッドとは異なり、位相符号化では、アキュムレータ配列内にある推定された中心位置の位相情報をデコードするだけで半径を推定できます。
参照
[1] T.J Atherton, D.J. Kerbyson. "Size invariant circle detection." Image and Vision Computing. Volume 17, Number 11, 1999, pp. 795-803.
[2] H.K Yuen, .J. Princen, J. Illingworth, and J. Kittler. "Comparative study of Hough transform methods for circle finding." Image and Vision Computing. Volume 8, Number 1, 1990, pp. 71–77.
[3] E.R. Davies, Machine Vision: Theory, Algorithms, Practicalities. Chapter 10. 3rd Edition. Morgan Kauffman Publishers, 2005.