- ベストアンサー
画像のHessian行列の固有値の意味について
- 画像の中からコーナーを探すために使用される輝度値のHessian行列についての疑問です。
- Hessian行列の固有値が大きい場合、その点はコーナーであるとされていますが、その理由が分かりません。
- 固有値の本質を理解しておらず、解説が見つからないため、理解したいと考えています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1のコメントについてです。 > この方法についても、同じような理解でよいのでしょうか? (1) 画像に対してある旨い回転をしたとき、検出したいパターンが「特徴量の行列の非対角要素が0で対角要素が大きい」という状態と対応するような、特徴量の行列の作り方をしている。しかも、 (2) 画像の回転が、特徴量の行列を回転することと対応している(つまり、画像を回転してから特徴量の行列を計算するのと、特徴量の行列を計算してからそれを回転するのとが(ほぼ)等価である)、 ならば、どんな特徴量であろうとも、固有値の計算を利用して「画像が最もパターンに近くなるという意味で(ほぼ)最適な回転をしたときの、対角要素」が計算できることは自明かと思います。 きちんと証明することも難しくはないと思いますが(ただし、四角いピクセルでできた離散画像だと思うと大変そう)、ま、パターン認識の話でそこまでやらねばならんということもないでしょう。むしろ、直感的イメージを掴む方が大事だろうな。
その他の回答 (3)
#3です。すいません。間違えました。 ついこの間まで、f:R^2→R^2の平均曲率(の絶対値)の最小化を考えていたので、そっちとかぶってしまいました。輝度は、I:R^2→Rなので、ヤコビ行列は、^Tを転置記号として、 dI=|Ix,Iy||dx,dy|^T であり、勾配の二乗は、 dI^2=|dx,dy||Ix,Iy|^T|Ix,Iy||dx,dy|^T で、 |Ix,Iy|^T|Ix,Iy| =|(Ix)^2 (IxIy) | |(IyIx) (Iy)^2 | ですよね。混乱を招く事を言い、申し訳ありません。
>なるほど旨いやり方だなあ。(#1さんより) 同感です。 私は現在プログラマーで、画像をピクセル単位で扱う事が、ときどきあります。また過去、構造関係の解析技術者をやっていた時期もあり、FEMやBEMをカスタマイズする時に、構造物の輪郭線の角を自動で判定させる方法はないものかと、考えた事があります(やりっぱなしで終わりましたが)。その経験から、もうちょっと説明したくなりました(← 大きなお世話)。 一般に二次微分は、外形の曲率にほぼ比例します。角で曲率は無限大です。従って#1さんの仰るように、「最もコーナーっぽく見えるように座標を回転させて」みた時に、固有値が無限大であれば、それは厳密にコーナーです。しかし画像はピクセル単位の離散データであるため、二次微分は差分で行うはずです。よって、差分データに基づけば、「固有値が飛び抜けて大きくなる差分中心点」は、コーナーの可能性大、となります。 >Tomasiさんの論文 基本発想は同じ、というイメージが沸きました。先の二次微分を差分に代行させる場合、最低3点必要です。これが「3×3程度のピクセルウィンドウ」の意味と思われます。そして、ヤコビ行列、 | I1x I2x | | I1y I2y | は各点での勾配を表し、勾配の絶対値の二乗は、 | (Ix)^2 (IxIy) | | (IyIx) (Iy)^2 | で表せます。二次微分を差分で代行させる場合、この絶対値二乗の値が大きければ、傾向として二次微分も大きくなるので、「3×3程度のピクセルウィンドウ」の平均評価として、 | Σ(Ix)^2 Σ(IxIy) | | Σ(IyIx) Σ(Iy)^2 | を用いる、という事だと思いました。Σは、ウィンドウ内での総和です。これも「旨いやり方だなあ」と思いました。
補足
ありがとうございます。 自分の勉強不足のため、わからないことがあるのですが、 | I1x I2x | | I1y I2y | がヤコビ行列というのはわかります。 その絶対値の2乗を | (Ix)^2 (IxIy) | | (IyIx) (Iy)^2 | と書かれておられますが、その意味がいまいちわかりません。 I1とI2は違う変数での微分値ですよね?ということは、 | (I1x)^2 (I2xI1y) | | (I1yI2x) (I2y)^2 | となりそうなのですが、実際には確かに | Σ(Ix)^2 Σ(IxIy) | | Σ(IyIx) Σ(Iy)^2 | の形で使われています。 この間の関係がよくわからないので、よろしければ教えていただけないでしょうか?
- stomachman
- ベストアンサー率57% (1014/1775)
「コーナー」が直角に近いコーナーであって、しかもある特定の方向を向いている場合、その頂点においてHessian(要するに2階微分)が特徴的なパターン(すなわち、対角要素が大きく、非対角要素がほぼ0)を示す。このことから、その点がコーナーの頂点であるかどうかが判定できる、としましょう。 さて、固有値ってのは、簡単に言えば「ある行列Aが与えられた時、座標系をうまく回転して行列の非対角要素を0にする」という操作をしたときに得られる対角行列Bの、対角要素のことです。 なので、Hessianの固有値を計算することは、「Hessian Hを回転して得られる行列Gであって、旨い回転によってGの非対角要素が0になるようにした時の行列Gについて、その対角要素」を計算したことになる。ところで、その同じ回転を画像に適用した場合、回転した画像のHessianはGになる。 つまり、「コーナーがどっちを向いていても、上記の判定法にとって一番コーナーらしく見えるように図形を回転して眺めたときに、上記の判定法でコーナーだと判定されるかどうか」という判定をしていることと等価になるわけです。 そして、画像を回転するのは大変手間が掛かるけれど、Hessian行列Hを回転したものGを計算するなら簡単です。 なるほど旨いやり方だなあ。
補足
どうもありがとうございます。 「画像を回転するかわりに、行列を座標変換している」 というのは、なるほど!と思いました。 昨日自分で調べたところによりますと、現在は、1次微分を用いて判別する方法が主流のようです。 Tomasiさんの論文では、Hessianの代わりに 勾配共分散行列とよばれる M= | Σ(Ix)^2 Σ(IxIy) | | Σ(IyIx) Σ(Iy)^2 | と呼ばれるものを、コーナーかどうか判別したいピクセルを中心とした3×3程度のピクセルウィンドウごとに計算し Mの固有値をとり、同様に2つの固有値が大きいとき、 その点はコーナーであるとされていました。 この方法についても、同じような理解でよいのでしょうか?
お礼
ありがとうございます。 非対角要素が0になるようにし、 固有値で比較するということは 画像(座標系)を回転させることで 評価する尺度をどの方向を向いたコーナーにおいても、統一させていることになり、その上で曲率を評価している という理解ができました! 固有値が求まるということは、固有ベクトルが2つ求まるということなので、実際にどんな角度(をもった座標系)からコーナーを見たときに、非対角要素が0になるのか、わかるんじゃないかな~と思ったのですが・・・ 画像上でその方向を考えようと思うと、 なかなか難しいですね><