ハフ変換
本旨
バイナリ画像を直交座標系の表現から極座標系の表現に変換します。このように、極座標系は同じρ \rhoを持ちます。ρ和θ \θθの位置がある閾値よりも大きければ、その位置は直線であることを意味する。
基本的なプロセス
直線の場合、デカルト座標系ではy = kx + by = kx+bと表すことができます。y=k ×+bは、極座標系では次のように表すことができます。ρ = x cos θ + y sin θ \rho = x\cos \theta + y\sin \thetar=バツコス私+y罪θ。その中で、ρ \rhoρ は座標原点から直線θ \thetaθは直線、xxはX軸の角度。
次の 2 つの図はどちらも直交座標から極座標への変換を表していますが、座標原点が異なります。
さて、直交座標系から極座標系への変換では、任意のバイナリ画像に対して (次元が100 × 100 100 \times 100であると仮定します)1 0 0×1 0 0 )、表を作成できます (横軸は角度θ \thetaθ、縦軸はρ \rhoρ ) を使用して、すべての前景ピクセルを極座標に変換します。具体的な操作は次のとおりです。
- まず角度の解像度を選択します。たとえば、解像度が 1 の場合、角度は 180 (0 ~ 180) あります。
- アキュムレータ、つまりテーブル (ここではハフ空間と呼ばれる特別な用語があります) を構築します。横座標はθ \thetaです。θ (0~180度) (0~180度)( 0−1 8 0度)、縦座標ρ \rhoρ (0、対角線の長さ)
- 任意の前景点について、その点を通過するθ \thetaを与えます。θ、対応するρ \rhoρ、そして対応するテーブル( ρ , θ ) (\rho, \theta)( p ,θ )プラス 1。
- すべての前景ポイントをトラバースして、最終的なテーブルを取得します。
- ラインはしきい値を使用して選択されます。
次の図は、上記 1 ~ 5 の操作プロセスを動的に示しています。
下の図は、デカルト座標から極座標に変換した後の画像を視覚的に示しています。ハフ空間で強調表示されている点は、デカルト座標系で直線が表示される可能性がある場所です。
確率的ハフ変換 (PPHT)
序章
OpenCV は、ハフ変換の 2 つの実装を提供します。1 つはオリジナルのハフ変換で、もう 1 つは確率的ハフ変換です。違いはどこにあるのでしょうか?
ハフ変換の計算量とメモリ使用量は依然として非常に大きいことがわかりました。特に前景ピクセルが多い場合や解像度が低い場合、確率的ハフ変換はこの問題をある程度解決します。
本旨
確率的ハフ変換の主な考え方は、デカルト座標系のすべての点を走査するのではなく、前景点の一部のみをハフ空間に計算することで、計算を簡素化することです。
基本的なプロセス
- 画像が空かどうかを確認し、空の場合は終了します
- 画像内の前景点をランダムに選択して極座標系にマッピングし、アキュムレータ (アキュムレータ) を更新します。
- 画像内のこの前景点を削除します
- 更新されたアキュムレータのピーク値を検出し、設定されたしきい値TTを超えているかどうかを確認します。T . 超えていない場合は 1 を返します
- アキュムレータのピークに沿って見て、連続したピクセルを持つ線分を見つけるか、指定されたしきい値ギャップを超えない最長の線分を見つけます。
- 画像内の線分上のすべての前景点を削除します。(計算量を減らすことができます)
- アキュムレータでは、先ほどの線分上のすべての点に対応するρ \rhoρ和θ \θθ削除
- 線分が設定された最小長より長い場合、出力リストに追加されます。
- 1を返す
参考文献
[1]ハフ線変換
[2]ハフ変換
[3] https://en.wikipedia.org/wiki/Hough_transform
[4] J. マタス、C. ガランボス、J. キットラー。「Progressive Probabilistic Hough Transform を使用した線のロバスト検出」、Computer Vision and Image Understanding、2000、78(1): 119-137 doi: 10.1006/cviu.1999.0831