不変ハフ変換を学ぶ

      No Comments on 不変ハフ変換を学ぶ

InvarientGHT1所謂不変じゃないハフ変換であれば、回転やリサイズに対応していません。しかし、不変ハフ変換はこれらを対応してくれます。ハフ法は基本的にパターンのマッチングです。例えば右の図にある黒い線でできた形状を絵から探したい。そうなりますと、三つの要素を確定させる必要があります。
1. 位置
2. 回転角度
3. サイズ

最重要となる部分は位置です。図形は回転されているや拡大縮小されているかもしれないので、これに強い解析法が必要になります。一つの方法としては、図に示されたように、角度を利用します。

仮にエッジポイント\( \omega_1 \)を発見しました。\( \omega_1 \)はパターンのどの辺にあるかを知りたい。\( \omega_1 \)とその勾配であれば、パターンのどこでもあるかもしれませんので、検索範囲は大きい過ぎます。このため、\( \omega_1 \)とその勾配から固定の\( \alpha \)を足した方向でエッジポイントを探します。仮に\( \omega_2 \)に到達したとします。\( \omega_2 \)も勾配がありますから。\( \omega_1 \)と\( \omega_2 \)の切線は角\( \beta \)を形成します。この\( \beta \)は回転とサイズに無関係です。\( \omega_1 \)とその\( \beta \)はともになって、位置検索の手がかりになります。\( ( \omega_1, \beta ) \)ではパターンの方向が分かります。\( \omega_1 \)から一定の角度\( k \)に沿って直線を描けば、図形の中心位置を通すことができます。描きながら投票すれば、図形の中心位置は決まります。図形の中心位置は予め設定できます。決まりはないですが、\( \beta \)の値を有効に使うため、図形の中心位置は図形の中に置いた方がいいでしょう。例えばパターンの全座標の平均値に置くなどです。\( k \)はパターンから予め計算できます。\( \beta \)の区間をテーブルに詰め込んで、可能な\( k \)を並べば、中心位置を割り出すための情報が揃います。

次は回転角度を決めます。方法は上記と似ています。\( \omega_1 \)が見つかったとします。\( \omega_1 \)の切線と中心位置から\( \omega_1 \)への直線の間に一点の角度\( k \)があります。この\( k \)を有しているパターンのエッジポイントの角度は最初から知れます。\( \omega_1 \)の所在角度とパターンのエッジポイントのあるべき角度に差が出る。この差に投票すれば、回転角度を割り出せます。さらに検索範囲を小さくしたい場合は、前記の\( \beta \)を\( k \)と一緒に使用すればいいです。でも\( \beta \)を割り出す計算量を負担することになります。

最後に、サイズを割り出します。方法はクラシックなハフ変換です。位置と角度は既に決まっています。仮にエッジポイント\( \omega_1 \)が見つかりました。\( \omega_1 \)と中心位置の距離が分かります。また角度と合わせれば、\( \omega_1 \)の所在図形とパターンのサイズの比例が分かります。この比例値に投票すれば、サイズが出てきます。

はい。以上です。

Leave a Reply

Your email address will not be published. Required fields are marked *