コーナー検出

ハリスのコーナー検出

ある画像のコーナー、つまり角っこを検出する方法について検討してみましょう。
上の画像にあるように、コーナーとは『画素値I(x,y)のx方向,y方向の変化成分の大きい場所』ということができます。
変化成分はそれぞれ微分係数で表せますね。したがって次のような行列をまず考えます。
 M=\begin{bmatrix} \left(\frac{\partial I}{\partial x}\right)^2 & \frac{\partial I}{\partial x}\frac{\partial I}{\partial y} \\ \frac{\partial I}{\partial x}\frac{\partial I}{\partial y} & \left( \frac{\partial I}{\partial y} \right)^2 \end{bmatrix}
を考えます。

ここでコーナー検出関数Rを次のように定義します。
 R=\mbox{d}\mbox{et}M-k(\mbox{tr}M)^2
kは時々に応じた調整用のパラメータです。
ハリスのコーナー検出はこの値Rの極大点を探し、それをコーナーであると検出する方法です。

SUSANコーナー検出

どっかの画素\vec{r_0}と、その周りの画素\vec{r}について、次のような計算をします。
 c(\vec{r}, \vec{r_0})=\exp\left(-\left(\frac{I(\vec{r})-I(\vec{r_0})}{t}\right)^6 \right)
I(\vec{r})っていうのは\vec{r}のおける画素値、tは調整用のパラメータです。

このcという値、注目画素と周囲の画素の関数になっていますね。
そしてその画素値の値が大きければ大きいほど、関数全体として小さくなることがお分かりでしょうか。

さて、ここで周囲の画素すべてについての和をとります。つまり
 n(\vec{r_0})=\sum_r c(\vec{r}, \vec{r_0})
とします。さっきの関数cの意味からして、周囲との画素値のギャップが大きいほどこの和の値は小さくなります。

ギャップが大きいほど小さくなるっていうのはなんか紛らわしいので、次のように補正しましょう。
 R(r_0)=g-n(r_0)\ (if\ n(\vec{r_0})<g)
 R(r_0)=0\ else
ここでgもその時々に応じたパラメータで、うまく調整すればエッジ検出にもこのSUSANコーナー検出と同じ方法が使えます。


javascript plugin Error : このプラグインで利用できない命令または文字列が入っています。
最終更新:2012年11月12日 19:47
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル