コーナー検出法のソースを表示
←
コーナー検出法
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{更新|date=2023年11月25日 (土) 09:41 (UTC)}} {{翻訳中途|1=[[:en:Corner detection]]|date=2007年12月}} {{Expand English|date=2023年11月25日 (土) 09:41 (UTC)}} '''コーナー検出法'''(コーナーけんしゅつほう)とは、[[コンピュータビジョン]]において確実といえる特徴点を抽出し画像の中身を推測するための手法である。コーナー検出法は[[動き検出]],[[画像マッチング]],[[画像追跡]],[[イメージモザイキング]],[[パノラマ画像生成]],[[3Dモデリング]],[[物体認識]]でよく使われている。コーナー検出法は[[特徴点検出法]]とも共通点がある。 ==問題の定式化== コーナーとは2つのエッジの交点と定義することができる。コーナーは、ある局所近傍で方向の異なる2つの際立ったエッジが存在するような点と定義することもできる。特徴点とは、際立って検出できる画像上の点のことをいう。これは、特徴点がコーナーになれるということだけでなく、例えば、強度が極大・極小の点、曲線の終点、あるいは曲率が極大である曲線上の点、といった孤立点でもあることを意味する。実際は、コーナー検出法と呼ばれているものの多くは、コーナー点だけでなく特徴点を検出する。結果として、コーナーだけを検出する場合は検出された特徴点を局所分析してどれが真のコーナーなのかを決定する必要がある。コーナー検出のための後処理と共に使われるエッジ検出の例として[[Kirsch検出オペレータ]]、Frei-Chenマスクがある。 なお、書物では「コーナー(corner)」,「特徴点(interest point)」,「特徴(feature)」を取り違えて書かれることがあり、注意が必要である。特に挙げられることとして、"特徴点検出オペレータ(interest point operator)"としての[[blob detection|blob検出器]]がいくつかあるが、それらは時々誤って"コーナー検出器"として言及されることがある。さらには、細長い像を検出するための[[リッジ検出]](ridge detection)といったものも存在する。 コーナー検出器は通常それほど安定しておらず、熟練した管理、過失を防ぐための十分な認識が必要である。コーナー検出器の性能は、異なる明るさ、置き換え、回転、その他の変換の下での類似した多数の画像から同じコーナーを検出する能力によって決定される。画像におけるコーナー検出の単純なものとして[[相関]]を使うというのがあるが、計算量が多く適していない。代わりによく用いられる方法として、HarrisとStephensの提案を基にした検出法(以下に記述)があり、順に[[ハンス・モラベック]]の方法を改良したものである。 ==モラベック(Moravec)のコーナー検出アルゴリズム== この方法は最も早く考案されたコーナー検出アルゴリズムの1つで、コーナーを自己相似性が少ない点と定義している。このアルゴリズムは画像の各ピクセルを検査し、ピクセルを中心とするパッチが、近傍の多く重なるパッチとどの程度似ているかを考慮してコーナーかどうかを調べる。類似度はパッチの差分の2乗和(SSD)によって計測される。低い数値は類似性が高いことを指す。 ピクセルが同程度の強度の範囲内ならば、近傍のパッチは類似している。ピクセルがエッジ上にあれば、エッジと直交する方向にある近傍のパッチは大きく異なって見えるが、エッジと等方向にある近傍のパッチは小さな変化として検出される。ピクセルが全ての方向に異なった特徴点上にあれば、近傍のパッチはどれも類似しない。 コーナーの強さはパッチと近傍のパッチ(水平,垂直と2つの対角線方向)のSSDの最小値として定義される。この数値が極大であれば特徴点が存在するということになる。 [[ハンス・モラベック|モラベック]]が指摘したように、このオペレータの大きな問題の1つは等方的でない、すなわち近傍のエッジと方向が異なるエッジが存在した場合には、特徴点として検出されないことである。 ==HarrisとStephens、Plesseyのコーナー検出アルゴリズム== Harris と Stephens は、位置の異なるパッチを用いる代わりに、真っ直ぐな方向を重視したコーナースコアの差分を考慮することで、モラベックのコーナー検出器を改良した。(コーナースコアは、この検出器が論文で使われて以降、しばしば自己相関として言及される。しかしながら、論文で用いられている数式は明らかに差分の2乗和が使われていることを示している。) グレースケールの2次元画像を用いるとする。こうしても一般性を失わない。この画像を <math>I</math> とする。領域 <math>(u,v)</math> 上に画像のパッチを置き、 <math>(x,y)</math> ずらすことを考える。2つのパッチの差分の重みつき2乗和(SSD) <math>S</math> は以下で与えられる。 :<math> S(x,y)=\sum_u \sum_v w(u,v)\, \left( I(u+x,v+y)-I(u,v) \right)^2 </math> <math>I(u+x,v+y)</math> は[[テイラー展開]]により近似できる。<math>I_x</math> , <math>I_y</math> を <math>I</math> の[[偏導関数]]とすると、 :<math> I(u+x,v+y) \approx I(u,v)+ I_x (u,v)x+ I_y (u,v)y </math> この近似式から次の近似式が導かれる。 :<math> S(x,y) \approx \sum_u \sum_v w(u,v) \, \left( I_x (u,v)x+ I_y (u,v)y \right)^2 </math> これを行列で書くと次のようになる。 :<math> S(x,y) \approx \begin{pmatrix} x &y \end{pmatrix} A \begin{pmatrix} x \\ y \end{pmatrix} </math> ''A'' は[[構造テンソル]]を表す。 :<math> A = \sum_u \sum_v w(u,v) \begin{bmatrix} I_x^2 & I_x I_y \\ I_x I_y & I_y^2 \end{bmatrix} = \begin{bmatrix} \langle I_x^2 \rangle & \langle I_x I_y \rangle\\ \langle I_x I_y \rangle & \langle I_y^2 \rangle \end{bmatrix} </math> この行列はHarris行列であり、< >は平均( <math>(u,v)</math> 上での総和)を意味する。円形のウィンドウ(あるいは円形の重み付けが行われる[[ガウス関数]])が用いられていれば、結果は等方的になる。 コーナー(一般的には特徴点)は、ベクトル <math>\begin{pmatrix} x &y \end{pmatrix}</math> の全ての方向での <math> S </math> の大きな変化量により特徴付けられる。 <math>A</math> の固有値を分析することにより、この特徴付けは次のように表現できる: <math>A</math> は特徴点に対して2つの"大きな"固有値を持たなければならない。固有値の大きさにより、本議論に基づいて以下の推測ができる。 #<math>\lambda_1 \approx 0</math> かつ <math>\lambda_2 \approx 0</math> であれば、ピクセル<math>(x,y)</math>は特徴点をもたない。 #<math>\lambda_1 \approx 0</math> かつ <math>\lambda_2</math> が正のある程度大きい値であれば、エッジが存在する。 #<math>\lambda_1</math> , <math>\lambda_2</math> が正の大きな値であれば、コーナーが存在する。 HarrisとStephensは、[[平方根]]の計算が必要なため、固有値の正確な計算は計算量が多いということを言及している。代わりに敏感に調整できる <math>\kappa</math> をパラメータとする関数 <math>M_c</math> を提案している。 :<math> M_c :=\lambda_1 \lambda_2 -\kappa \, (\lambda_1 + \lambda_2 )^2 = \operatorname{det} (A)-\kappa \, \operatorname{trace}^2 (A) </math> したがって、本アルゴリズムは実際に行列<math>A</math>の[[固有値分解]]を計算する必要はなく、コーナーあるいはより一般的に特徴点を見つけ出すために、 <math>A</math> の[[行列式]]と[[固有和]]を評価するだけで十分である。<math>\kappa</math>の値は実験から決めるしかなく、論文で 0.04 - 0.15 の範囲が適性であると報告されている。 コーナー点における[[共分散行列]]は <math>A^{-1}</math> i.e. <math>\frac{1}{\langle I_x^2 \rangle \langle I_y^2 \rangle - \langle I_x I_y \rangle^2} \begin{bmatrix} \langle I_y^2 \rangle & -\langle I_x I_y \rangle\\ -\langle I_x I_y \rangle & \langle I_x^2 \rangle \end{bmatrix} </math> である。 ==多重スケールHarrisオペレータ== Harrisオペレータによる2次モーメント行列([[構造テンソル]])<math>A</math>の計算は、偏導関数<math>I_x , I_y</math>の非線形結合の総和計算だけでなく、これら偏導関数の計算を必要とする。偏微分が大抵スケール空間の平滑化を必要とするようになってから、Harrisオペレータでは2つのスケールパラメータの定義が必要になった: (i) 偏微分に先立つ平滑化のための局所スケール (ii) 微分演算子上での非線形作用素を積分された画像描写へと累積するための積分スケール <math>I</math>は元の画像強度を表し、<math>L</math>はガウス核の畳み込みにより得られた<math>I</math>の[[スケール空間]]表現を表す。 :<math>g(x,y,t)= \frac {1}{2{\pi} t}e^{-(x^2+y^2)/2t}</math> 局所スケールパラメータ<math>t</math>を用い: :<math>L(x,y,t)\ =g(x,y,t)*I(x,y)</math> <math>L_x =\partial_x L</math> , <math>L_y =\partial_y L</math>として、<math>L</math>の偏導関数を表すことにする。 さらに、ガウス窓(Gaussian window)<math>g(x,y,s)</math>を積分スケールパラメータ<math>s</math>と共に取り入れる。このとき、[[多重スケール2次モーメント行列]]は次のように定義できる。 :<math> \mu (x,y;t,s)= \int_{\xi =-\infty}^{\infty} \int_{\eta =-\infty}^{\infty} \begin{bmatrix} L_x^2 (x-\xi ,y-\eta ;t) &L_x (x-\xi ,y-\eta ;t) \, L_y(x-\xi, y-\eta; t) \\ L_x (x-\xi ,y-\eta ;t) \, L_y (x-\xi ,y-\eta ;t) &L_y^2 (x-\xi ,y-\eta ;t) \end{bmatrix} g(\xi ,\eta ;s) \, d\xi \, d\eta. </math> このとき、<math>\mu</math>の固有値を<math>A</math>の固有値と同様に計算でき、多重スケールHarrisコーナー測度を次のように定義できる。 :<math>M_c (x,y;t,s)=\operatorname{det} (\mu (x,y;t,s))-\kappa \, \operatorname{trace}^2 (\mu (x,y;t,s))</math>. 局所スケールパラメータ<math>t</math>と、積分スケールパラメータ<math>s</math>の選択については、これらのスケールパラメータが通常であるような相対積分スケールパラメータ<math>\gamma</math>を用いて対にすると、<math>s=\gamma^2 t</math> , <math>\gamma</math> は <math>[1,2]</math> から取る。このようにして、画像領域で変化するコーナー構造に反応する多重スケールコーナー検出器を手に入れるために、多重スケールHarrisコーナー測度<math>M_c (x,y;t,\gamma^2 t)</math>を、スケール空間でのどのスケール<math>t</math>に対しても計算することができる。 実際は、この多重スケールコーナー検出器はスケール標準化されたラプラス作用素であるようなスケール選択することで補完される。 :<math>\nabla^2_{norm} L(x,y;t)=t \nabla^2 L(x,y,t)=t(L_{xx} (x,y,t)+L_{yy} (x,y,t))</math> がスケール空間の各スケールごとに計算され、適合したスケールに自動選択された(Harris-Laplace演算子)コーナー点が同時に計算される。 ;多重スケールコーナー測度<math>M_c (x,y;t,\gamma^2 t)</math>の空間的な最大値 :<math>(\hat{x} ,\hat{y} ;t)= \operatorname{argmaxlocal}_{(x,y)} M_c (x,y;t,\gamma^2 t)</math> ;スケール標準化されたラプラス作用素<math>\nabla^2_{norm} (x,y,t)</math>のスケールの極大・極小値 :<math>\hat{t} =\operatorname{argmaxminlocal}_t \nabla^2_{norm} L(\hat{x} ,\hat{y} ;t)</math>. ==ShiとTomasiの方法== ==曲率による方法== ==ラプラシアン・ガウシアンと派生法== ==WangとBradyの方法== ==SUSANオペレータ== 日本で最近よく用いられる手法である。S.M. Smithらによって開発された検出法。SUSANとはSmallest Univalue Segment Assymilating Nucleusの略である。 円形マスクを用いてマスク中の「任意の閾値以上の画素数」をカウントする。 ==Trajkovic and Hedleyの手法== ==FAST特徴検出== ==参考文献== ==実装コード== ここで紹介したいくつかの手法はそれぞれの著者自身などがコードを書いて公開している。 *[http://www.fmrib.ox.ac.uk/~steve/susan/susan2l.c SUSAN](C言語コード) {{DEFAULTSORT:こなけんしゆつほう}} [[Category:コンピュータビジョン]] {{Computer-stub}}
このページで使用されているテンプレート:
テンプレート:Computer-stub
(
ソースを閲覧
)
テンプレート:Expand English
(
ソースを閲覧
)
テンプレート:更新
(
ソースを閲覧
)
テンプレート:翻訳中途
(
ソースを閲覧
)
コーナー検出法
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報