Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

imfindcircles

円のハフ変換を使用した円の検索

说明

中心= imfindcircles(一个,,,,半径は,イメージ一个で半径が半径にほぼ円をします。出力中心は,イメージ内にある円の中心の (x,y) 座標を含む 2 列の行列です。

[[中心,,,,半径] = imfindcircles(一个,,,,半径は,半径が半径で指定された範囲内にある円を検索します。追加の出力引数半径には、中心の各円の中心に対応する推定半径を含めます。

[[中心,,,,半径,,,,metric] = imfindcircles(一个,,,,半径は,にアキュムレータのピーク大きさを(降顺で)含む含む列ベクトルmetricも返します。中心半径の行はそれぞれmetricの行対応します。

[[___] = imfindcircles(___,,,,名称,价值は,上記の任意の構文を用いて、1 つまたは複数の名称,价值の引数ペアもつ追加を指定します。

すべて折りたたむ

この例,内すべてのをすると最も最も强い円を保持および表示表示するする方法を说明说明

グレースケールイメージをワークスペースに読み取って表示します。

一个= imread('coins.png');imshow(a)

图包含一个轴对象。轴对象包含类型图像的对象。

半径rが [15, 30] ピクセルの範囲にある円をすべて検出します。

[[Centers, radii, metric] = imfindcircles(A,[15 30]);

5つててつつの强いを保持しし。。

CentersStrong5 =中心(1:5,:);Radiistrong5 =半径(1:5);MetricStrong5 =公制(1:5);

元のイメージ上に 5 つの最も強い円の円周を描画します。

Viscircles(Centersstrong5,Radiistrong5,'edgeColor',,,,'b');

图包含一个轴对象。轴对象包含3个类型线的对象,图像。

イメージをワークスペースに読み取って表示します。

一个= imread('circlesBrightDark.png');imshow(a)

图包含一个轴对象。轴对象包含类型图像的对象。

半径の范囲を定義します。

Rmin = 30; Rmax = 65;

半径の范囲内のイメージ内にある明るい円をすべて検索します。

[[CentersBright, radiiBright] = imfindcircles(A,[Rmin Rmax],“对象光性”,,,,'明亮的');

半径ののイメージにある暗いを検索検索ますます。

[centersdark,radiidark] = imfindcircles(a,[rmin rmax],“对象光性”,,,,'dark');

明るい円エッジ青い実线描画します。

voscircles(Centersbright,Radiibright,'Color',,,,'b');

图包含一个轴对象。轴对象包含3个类型线的对象,图像。

暗い円エッジ赤い破线描画します。

viscircles(centersDark, radiiDark,'LineStyle',,,,' - ');

图包含一个轴对象。The axes object contains 5 objects of type line, image.

入力引数

すべて折りたたむ

入力イメージ円形を検出対象なるイメージ。グレースケール,トゥルーカラーまたはバイナリバイナリのイメージイメージししし

データ型:single|double|int16|uint8|uint16|逻辑

円のまたはする円形オブジェクトの半径正の数値としてします。

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

検出するオブジェクトの半径。。[rmin rmax]形式の正の整数の 2 要素ベクトルとして指定します。Rminr最大限度未満です。

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

名前と値引数

例:“对象光性”,,,,'明亮的'は暗い背景色に明るい円のオブジェクトを指定します。

オプションの引数名称,价值のコンマ切りペア指定します。Nameは引数名,价值は対応するです。Nameは引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueNのに复数名前とのペア引数を任意の顺番で指定指定ます。。。

オブジェクトの极。“对象光性”とののかので构成れるコンマ切りのペアとして指定指定ます。。。

'明亮的' 円オブジェクト背景も明るいを示します。
'dark' 円オブジェクト背景も暗いを示します。

计算法アキュムを计算するため使用する手法です。'Method'とののかので构成れるコンマ切りのペアとして指定指定ます。。。

'PhaseCode' 一个therton および Kerbyson[[1]の位相符号化メソッド。
'TwoStage' 2段阶円変换で使用さメソッドメソッド[2][3]

例:'Method','PhaseCode'はathertonおよびkerbysonのの位相化を指定し。。

感度系数は,円のハフ変換アキュムレータ配列の感度です。'灵敏度'と,[[0,,,,1] の範囲の数値で構成されるコンマ区切りのペアとして指定します。感度係数を大きくすると、imfindcirclesは不完全で部分的に不明瞭な円も含めて、より多くの円形オブジェクトを検出します。また、感度を高い値に設定すると、誤検出のリスクが高くなります。

エッジ勾配は,イメージのピクセルを判别ための勾配勾配しきいきい値をを设定。'edgethreshold'と[0,1]内の数値构成さ切りのペアとしてししますしきいしきい値をゼロ勾配勾配のの大き0を指定ます最大の大きさ设定するには1を指定ますしきいを低い値设定すると,imfindcircles,弱い强いの両方ををより多くのを検出検出ししますます。。しきい値をを大きくするするほど,弱いエッジををををimfindcirclesは关数灰色を使用エッジ勾配しきい値を的选択选択ますます。

例:'edgethreshold',,,,0。5

出力引数

すべて折りたたむ

p2列の行列で返される円の中心の座標です。この行列の 1 列目には円の中心の x 座標が含まれ、2 列目には y 座標が含まれます。行数pは検出された円の数です。中心は,円の強度が最も強いものから最も弱いものの順に並べ替えられます。

データ型:double

列ベクトルで返される、円の中心の推定半径です。半径(J)の半径値は、中心が中心(J,:)にある円に対応します。

データ型:double

円の,ベクトル返される,のの相対的な强度です。metric(j)の値は、半径が半径(J)で中心が中心(J,:)にある円に対応します。

データ型:double

ヒント

  • 半径(またはRmin)の値がが以下の,,imfindcirclesの精度制限され。。

  • 通常の场合,'TwoStage'ではなく'PhaseCode'メソッド(既定设定)ををする,のステップがになります。

  • 'PhaseCode''TwoStage'の両方メソッド,同心ををにおいてされれます。同心同心円の検出结果はは,,入力入力入力イメージ

  • imfindcirclesは中心がイメージの領域の外にある円を検索しません。

  • imfindcirclesは,精度高める()RGB2Grayを使用トゥルーカラーをグレースケールにし。。。

アルゴリズム

imfindcircles(cht)ベースベースベースのの使用てのの円を検出検出します。この手法がが使用れるののは,,,オクルージョンオクルージョンです。

chtは厳密されてアルゴリズムではなくさまざまな方法実装することができことができますますます。。。ただしただし,,全体すべてににににににするするするするする通通通通通通通つつ

  1. アキュムレータ配列の計算

    高い値前景は候补ピクセルとしてされ,ににににににににににににできるできるできるできるできるできるようにますますののののののののののの実装実装実装においてにおいて,,候补候补候补ます。。は実际円(実线円)上上ある候补ピクセルとと,候补候补ピクセルピクセルののののの投票投票

    従来の CHT 投票パターン

  2. 中心の推定

    のに候补ののは,円の中心ににアキュムレータレータ配列配列配列のののビンビンにされれます。。。したがってて,円円のの中心中心,レータレータレータレータレータレータ配列配列配列配列配列配列配列,の(実线円)上上ピクセル(実线点点点点ピクセルピクセルピクセルピクセルととと,実际の円円のと一致するする投票投票パターンパターンパターンパターン

  3. 半径の推定

    chtアルゴリズム一般行われるよう,,半径のにアキュムレータレータ配列ををを使用使用する场合,検出検出されれたの半径半径はは

imfindcirclesには、イメージ内の円を検出するための次の 2 つのアルゴリズムが備わっています。位相符号化 (既定の設定) および 2 段階。この 2 つのアルゴリズムは共通の計算手順をいくつか使いますが、また、それぞれに固有の特徴をもちます。

両方のアルゴリズムで使用される共通の計算機能は以下のとおりです。

  • 2次元アキュム配列使用使用

    従来ハフで,复数のののを格纳するためためににためため次元次元配列配列配列ををを必要必要必要必要とますますます。。これこれこれによりによりにより,,,大きな大きなストレージストレージががが必要必要必要必要にににに,,すべての半径に対して 2 次元アキュムレータ配列を 1 つ使用することによりこの問題を解決しています。この手法では半径の推定という追加ステップが必要になりますが、広い半径範囲を扱うときは特に、全体的な計算負荷は通常低くなります。これは、最近の CHT 実装で広く採用されている手法です。

  • エッジピクセルの使用

    全体メモリ速度は,候补の数に大きく依存し。そのその数数ををを制限制限するためため,高い高い勾配勾配ののピクセルのみのみが票票ののの集计含ま含ま含ま含まなってい。

  • エッジ方向のの使用

    パフォーマンスを最適化するためのもう 1 つの方法は、候補ピクセルに対して利用可能なビンの数を制限することです。これを行うには、ローカルで利用可能なエッジ情報を使用して、勾配の方向に沿って限られた間隔のみで投票を許可します (図 2)。

    投票:勾配勾配の复数半径半径

rmin 最小探索半径
r最大限度 最大探索半径
ractual 候補ピクセルが属する円の半径
Cmin rminの円の中心
C最大限度 r最大限度の円の中心
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和J. Kittler。“对圆形发现的霍夫变换方法的比较研究。”图像和视觉计算。第8卷,第1期,1990年,第71-77页。

[3] E.R. Davies,机器视觉:理论,算法,实用性。第10章。第三版。摩根·考夫曼出版社(Morgan Kauffman Publishers),2005年。

拡張機能

バージョン履歴

R2012Aで导入

すべて展開する

R2019a での動作変更