OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
ハフ円変換

目的

  • ハフ変換を用いて画像内の円を検出する方法を学ぶ。
  • 次の関数を学ぶ: cv.HoughCircles()

理論

円は数学的に \((x-x_{center})^2 + (y - y_{center})^2 = r^2\) と表される。ここで \((x_{center},y_{center})\) は円の中心、\(r\) は円の半径である。この式から、3つのパラメータがあることがわかるので、ハフ変換には3次元のアキュムレータが必要となり、これは非常に非効率である。そこでOpenCVは、より巧妙な方法である ハフ勾配法 (Hough Gradient Method) を用いる。これはエッジの勾配情報を利用する。

次の関数を使用する: cv.HoughCircles (image, circles, method, dp, minDist, param1 = 100, param2 = 100, minRadius = 0, maxRadius = 0)

引数
image8ビット、シングルチャンネルのグレースケール入力画像。
circles検出された円の出力ベクトル(cv.CV_32FC3型)。各ベクトルは3要素の浮動小数点ベクトル (x,y,radius) としてエンコードされる。
method検出方法(cv.HoughModes を参照)。現在実装されている方法は HOUGH_GRADIENT のみである。
dpアキュムレータの解像度と画像の解像度の逆比。たとえば dp = 1 の場合、アキュムレータは入力画像と同じ解像度を持つ。dp = 2 の場合、アキュムレータの幅と高さは入力画像の半分になる。
minDist検出される円の中心間の最小距離。このパラメータが小さすぎると、真の円に加えて複数の隣接する円が誤って検出されることがある。大きすぎると、いくつかの円が見逃されることがある。
param11つ目の方法固有のパラメータ。HOUGH_GRADIENT の場合、これはCannyエッジ検出器に渡される2つのしきい値のうち高い方である(低い方はその半分になる)。
param22つ目の方法固有のパラメータ。HOUGH_GRADIENT の場合、これは検出段階における円の中心に対するアキュムレータのしきい値である。これが小さいほど、より多くの誤った円が検出されることがある。より大きなアキュムレータ値に対応する円が先に返される。
minRadius円の最小半径。
maxRadius円の最大半径。

試してみる