処理1:キーポイントの検出
スケールが変わっても画像上に特徴的に現れる点「キーポイント」を、ガウシアンピラミッドというものを用いて検出します。ガウシアンピラミッドとは、1枚の画像に対してボケさせ具合を変えた複数のガウシアンフィルターを段階的に変えて適用させた画像群のことです。
ガウシアンフィルターによる入力画像をボケさせる具合を順番に2倍ずつにしていくと、フィルタリングされた各画像の解像度が順番に2分の1になった画像を作ることと(ほぼ)等価になります。従って、元画像、元画像の解像度1/2の画像、解像度1/4の画像、解像度1/8の画像といった画像をガウシアンフィルターで順番に作ることで、「ピラミッドのようにスケールが順番に1/2ずつになっていく画像群」をつくることができ、これをガウシアンピラミッドと呼んでいます。
ガウシアンピラミッドを用いて各解像度(スケール)の画像ごとの差を取った画像を作成する事で、各画素においてLaplacian of Gaussianの値を近似的に表したものである「DoG画像」が計算できます(ガウシアン画像間の差分画像なので、これをDifference of Gaussian(DoG)画像と呼びます)。
DoG画像の値は各画素における2次(偏)微分値(Laplacian)を近似的に表しています。ここで、注目画素の周辺の局所領域ごとにおいて、DoG画像間(解像度方向)+画像平面(画像の(x,y)方向)の3次元において、極値(一番大きい値、もしくは一番小さい値)を探索すると、それら3次元の方向全てにおいて一番コントラスト変化が大きい「スケール+座標」を決定することができます。
こうして検出される、周辺領域に対して中心部分の領域の値が大きい/小さい(=変化が大きい)点や領域が「キーポイント」として検出され、この特徴を俗に「Blob特徴」と呼びます。Blob特徴によるキーポイントを検出した際に、スケール変化に最も強い最適なスケールが自動的に決まっているので、Blob特徴部分がスケール変化した別の画像においても、同様に大きくなった/小さくなったBlob領域を安定して検出してくる事ができるようになっています。以下の画像は、奥行きの出ているひまわり畑の画像に対してBlob特徴の検出を行ったものです。この画像を見ると、ひまわりの中心部分がスケールが大きくても小さくてもBlob領域として検出されていることがわかります。
処理2:SIFT記述子の計算
処理1でキーポイントが検出できたら、各キーポイント上でSIFT記述子を計算します。SIFT記述子計算は2段階での処理AとBにより行われます。
処理A
まず、処理1で割り当てられたスケールで、キーポイント上の周辺領域においてエッジのヒストグラムを計算し、エッジ方向が8方向のどの方向に一番多くの値を保持しているかを決定し、その決定した方向をSIFT記述子を計算するためのそのキーポイントの「基本方向」とします。
処理B
次に、処理Aで求めたキーポイントの「基本方向」を基準にして、エッジ画像上のキーポイント周辺の16×16画素の矩形領域において、4×4画素ごとに8方向のどの方向に向いている画素が多いかを計算した「ヒストグラム」を計算します。これにより各4×4画素の領域で、8方向のどの向きにエッジ方向が分布しているかのヒストグラムが計算でき、「このキーポイントの周辺では、どの方向にどれだけエッジ成分が集中しているか」の分布が表現できます。この時、前処理として矩形領域全体にガウシアンフィルターをかけてぼやかしておくことで、検出したスケールにおいて矩形全体の中央の重要度を上げたSIFT記述子が計算でき、これによりスケールが変わっても、毎回同じような値のSIFT記述子が計算されることになります(キーポイントのスケール不変ではなく記述子のスケール不変であることに注意)。
つまり、このSIFT記述子をキーポイントごとに計算しておくことで、「異なる画像上において、SIFT記述子の値が最も近い2点同士が同じ3次元座標を示している」というエッジ方向のヒストグラムを元にした、スケール不変の強固な対応付け計算が実現できるわけです。
以上の1と2の処理により検出・計算を行う事ができるSIFTなどの「局所特徴量(記述子)」は、画像のスケールの変化や回転が起こっても毎回同じ場所から検出して計算できる「キーポイント上で計算したエッジ勾配のヒストグラムを表した記述子」であり、コンピュータビジョンの多くの問題において使われている非常に有用な特徴量です。
今回紹介するパノラマだけでなく、ステレオカメラでの点対応の計算や、画像に写っている物体の種類の認識(一般物体認識)など、様々なところで活用されています。ここでは詳しくは触れませんが、局所特徴量も模様が少ない平坦な部分だけがずっと続くところから取得できないので、滑らかな表面模様ばかりの画像は不得意です。逆に言うと、パノラマ画像のように模様がたくさん写っている分キーポイントが沢山検出されてかつ各局所特徴量の値がそれぞれ違う値になりやすい「風景画像」には好ましい特徴量です。