Monthly Archives: November 2015

不変ハフ変換を学ぶ

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

所謂不変じゃないハフ変換であれば、回転やリサイズに対応していません。しかし、不変ハフ変換はこれらを対応してくれます。ハフ法は基本的にパターンのマッチングです。例えば右の図にある黒い線でできた形状を絵から探したい。そうなりますと、三つの要素を確定させる必要があります。 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 \)の区間をテーブルに詰め込んで、可能な\(… Read more »

画像から楕円の検出を学ぶ

      No Comments on 画像から楕円の検出を学ぶ

楕円を画像から見つけ出したい場合は、楕円上の任意の二点から楕円の中心を推測することができます。勾配情報を使用すれば、検索の範囲は大幅に削減できます。次の問題は楕円の方向と長軸と短軸をどう割り出すかになります。 回転した楕円は下記の式で表現できます。 \[ \left[ \begin{array}{c} x(\theta) \\ y(\theta) \end{array} \right] =  \left[ \begin{array}{c} x_0 \\ y_0 \end{array} \right] + \left[ \begin{array}{cc} cos(\rho) & sin(\rho) \\ -sin(\rho) & cos(\rho) \end{array} \right] \left[ \begin{array}{cc} a & 0 \\ 0 & b \end{array} \right] \left[ \begin{array}{c} cos(\theta) \\ sin(\theta) \end{array} \right] \] \( x(\theta), y(\theta),x_0,y_0 \)は既知内容です。\(… Read more »

楕円の四点が一本の直線にある

      No Comments on 楕円の四点が一本の直線にある

偶然のように見えてしまう必然、数学は証明してくれます。私は勉強している所、楕円の四点が一本の直線にあると、半信半疑でした。しかし、実際に演算してみると、全く偶然ではなかった。 楕円は下記のような式で表現できます。 \[ \left[ \begin{array}{c} x(\theta) \\ y(\theta) \end{array} \right] =  \left[ \begin{array}{c} x_0 \\ y_0 \end{array} \right] + \left[ \begin{array}{c} a \times cos(\theta) \\ b \times sin(\theta) \end{array} \right] \] 右の図に示された楕円に、\( (x_0,y_0) \) と \( (x_m,y_m) \) と \( (x_\theta,y_\theta) \) と \( (x_T,y_T) \) が一本の直線にあります。\( (x_1,y_1) \)と\( (x_2,y_2) \)は楕円上の2点です。\(… Read more »