Hough変換を作成するために、Rosetta Codeにあるコードを使用しています。画像内のすべての線を検索したいと思います。そのためには、ハフ空間の各ピークのρ値とθ値が必要です。五角形のサンプル出力は次のようになります。
ハフ空間に表示される各「ホットスポット」の単一の[θ、ρ]座標を見つけるにはどうすればよいですか?
Hough変換を作成するために、Rosetta Codeにあるコードを使用しています。画像内のすべての線を検索したいと思います。そのためには、ハフ空間の各ピークのρ値とθ値が必要です。五角形のサンプル出力は次のようになります。
ハフ空間に表示される各「ホットスポット」の単一の[θ、ρ]座標を見つけるにはどうすればよいですか?
回答:
ピークの座標を見つけ、軸を使用してそれらを[θ、ρ]座標にスケーリングします。
データのノイズの多さ、予想される偽のピークの数、およびどれだけの時間があるかによって、いくつかの方法があります。最も簡単なのは、実際のピークであるレベルを選び、その下にあるすべてのデータを切り取り、次に各ピークに重心を置いてその中心を取得することです。
また、各ピークが1ピクセルになるまで画像を侵食/ダイヤルすることもできます。
ファイル交換のこのコードは、すべての極大値を見つけるのに役立ちます。 http://www.mathworks.com/matlabcentral/fileexchange/14498-local-maxima-minima
検索する行数(この場合は5)についてある程度の知識がある場合は、ハフスコアが最も高い5つの極大を選択するだけです。
特定の半径の極大値を見つけることができます。たとえば、最大の場合にのみ、ピークを最大としてハフイメージをスキャンします。ウィンドウでます。
2番目のステップは、ピーク位置をサブピクセル精度に調整することです。これは放物線フィッティングによって行うことができます。
補正ベクトルは
微分は、有限差分法によってハフイメージから計算できます。。
ことに注意してくださいヘッセ行列と は2つのベクトル(水平および垂直方向のグラデーション)なので、 また、ローカルマキシマイザーの正確な位置を取得するためのサブピクセルシフトを指定する2つのベクトルです。
上記の式では、1ピクセルを超えるシフトが生じる場合があります。そのような場合、マキシマイザー近傍は放物線形状を持たず、修正を実行したくないか、候補マキシマイザーをドロップする必要があります。
center of gravity
ますか?