ハフ変換画像のデハフを行う方法は?


9

Hough変換を作成するために、Rosetta Codeにあるコードを使用しています。画像内のすべての線を検索したいと思います。そのためには、ハフ空間の各ピークのρ値とθ値が必要です。五角形のサンプル出力は次のようになります。

ハフスペース

ハフ空間に表示される各「ホットスポット」の単一の[θ、ρ]座標を見つけるにはどうすればよいですか?

回答:


9

ピークの座標を見つけ、軸を使用してそれらを[θ、ρ]座標にスケーリングします。

データのノイズの多さ、予想される偽のピークの数、およびどれだけの時間があるかによって、いくつかの方法があります。最も簡単なのは、実際のピークであるレベルを選び、その下にあるすべてのデータを切り取り、次に各ピークに重心を置いてその中心を取得することです。

また、各ピークが1ピクセルになるまで画像を侵食/ダイヤルすることもできます。


1
正確な回答を得るには+1。どのように定義/計算しcenter of gravityますか?
Dipan Mehta

より正確にするには、最大値を見つけ、放物面をその点とその近傍の点に当てはめ、次に放物面のピークを見つけます。
内部石

2
@endolith-一般にハフ変換では、初期画像のエッジの識別とハフ空間での結果の「離散化」によって精度が制限されます。より正確な結果が必要な場合は、戻って変換をやり直して[θ、ρ]座標の範囲を制限し、より高い解像度を取得します。コースソリューションの周りのハフスペース
マーティンベケット

@DipanMehta-(各ピクセルの x 値)と(y ..)を単純に合計してから、検索しているボックスのX、Y幅で割ります。ただし、endolith へのコメントを参照してください
Martin Beckett


2

特定の半径の極大値を見つけることができます。たとえば、最大の場合にのみ、ピークを最大としてハフイメージをスキャンします。×ウィンドウでます。

2番目のステップは、ピーク位置をサブピクセル精度に調整することです。これは放物線フィッティングによって行うことができます。

fバツバツpfバツ+p

fバツ+pfバツ+pTfバツ+12pTfバツ+p

補正ベクトルは

p=fバツ1fバツ

微分は、有限差分法によってハフイメージから計算できます。

ことに注意してくださいfバツ2×2ヘッセ行列とfバツ は2つのベクトル(水平および垂直方向のグラデーション)なので、 p また、ローカルマキシマイザーの正確な位置を取得するためのサブピクセルシフトを指定する2つのベクトルです。

上記の式では、1ピクセルを超えるシフトが生じる場合があります。そのような場合、マキシマイザー近傍は放物線形状を持たず、修正を実行したくないか、候補マキシマイザーをドロップする必要があります。


0

80年半ばにGerigとKleinによって開発された非常に優れたテクニックがあります。これは、ハフ空間を分析して各エッジポイントに関連付けられた最も可能性の高いポイントを特定し、エッジポイントのパラメーターへのマッピングが1対多ではなく1対1である2番目のハフ空間を構築するバックマッピング手順です。通常の最初の段階です。私は手への言及はありませんが、IllingworthとKittlerの独創的なHoughレビューペーパーを見てください(1987年頃?)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.