オフショア開発で日本研究機関からの開発実績No.1!完全日本語対応です。

A.N.LAB Advance & Nurture
お問い合わせ
お気軽にお問い合わせください。03-6869-0539
オフショア開発で日本研究機関からの開発実績No.1 ソフトウェア・アプリ・各種システム開発ならA.N.LAB にお任せください!

画像マッチング技術の基本原理

当社は、写真認識エンジン及びAR(Augmented Reality、拡張現実)のアプリケーションを多数制作しております。

例えば、動画の中のタレントさんの出演シーン検出エンジンや、写真から本を自動認識する棚卸しシステムや、カメラに映っている企業ロゴに合わせて演出を行うスマートフォンアプリなどを作っています。
IM_Examples

これらのアプリケーションの基本技術は画像マッチングです。

今日は、その画像マッチング技術の基本原理を紹介します。

あくまでも基本原理なので、これだけでは良いエンジンは作れません。
ただ、画像マッチング技術の応用について考えるきっかけになって頂ければ幸いです。

写真の対応付け(マッチング)方法

下の2枚の写真をご覧になってください。

IM_Mount1_2_original

1枚目の写真の右側にある山と、2枚目の写真の左側にある山は、同じ山であることはお分かりでしょう。

さて、人間は何をもって、この2枚の写真にある山が同じ物であると判断しているのでしょうか?
超能力者でない限り、皆は目で見た形と色で判断しています。

画像マッチングの技術はそれの真似をし、形と色の特性をうまく融合した「特徴点」という概念を使っています。
言葉通り、「特徴点」は画像の特徴を表しているものです。

特徴点をうまく見つけすり合わせられると、次のようなマッチングができます。

Mount1_2_match

画像マッチングには、大きな2つのステップがあります。
A. 写真の中の特徴点の抽出。
B. 特徴点の間のマッチング。

A. 特徴点の抽出

以下の写真を見てください。

IM_BuildingCorners

この写真の「特徴」は建物の形、つまり各(コーナー、黄色の部分)の位置に相当すると言えるでしょう。

画像マッチング技術は、を抽出し、その角の位置を特徴点にします。

角を抽出するための関数があります。

例えば、「Harris corner response function」(角反応関数?)というものがあります。

数学の計算方法は省略しますが、例えば以下のような写真に
IM_HarrisOriginal

上記の関数を適用すると、次のようになります。
IM_HarrisCornerResponse

の所は高いプラスの値(赤いに近い色)、
の所は大きいマイナスの値(濃い青に近い色)、
平らの所はゼロに近い値(薄い水色)になります。

上の図から、局所最大値 (local maxima)を取り、局所最大値の所は特徴点(赤点)の位置となります。
IM_HarrisFeaturepoints

(局所最大値というのは、自分のすぐ周りは全て自分より低い点のことです。全体に一番高い所とは限りません。)

これらの特徴点は写真の形を表していることはお分かりでしょう。

「注」特徴点の位置は角に限る必要はありません。

下の図のように、形というより、色の広がりが写真の特徴をうまく表している場合、同一色のエリアを抽出し、そのエリアの中心を特徴点の位置にする方法もあります。

この方法をブロブ解析(blog detection)と呼びます。

IM_FlowerBlob
(この写真では、同一色のエリアは円形に近似されています。それぞれの円の中心の位置は特徴点の位置となります。)

B. 特徴点のマッチング方法

2枚の写真のから、特徴点の集まりを抽出できたとします。

IM_Mount1_2_features

似ている特徴点が多ければ多いほど、2枚の写真が「似ている」(マッチング)と言えます。

2枚の写真のマッチングの処理概略は以下のようになります。
———————————
i) 2枚の写真から、「色が近い」特徴点の1つをそれぞれ選び、一つのペアにします。
そのペアは、写真Aの中の点aと、写真Bの点bであるとします。

ii) 点aから点bになるような変換を計算します。
例えば、「左(または右)に何ピクセルの移動」か「何度の時計回り(または、反時計回り)」の変換です。

iii) その変換を写真Aにある他の特徴点にも施し、その移動された位置に、写真Bの対応(「色が近い」)特徴点があるかどうかを調べます。

2つの特徴点の間の「色の近い」判定は後ほど説明します。

———————————

Mount1_2_match
この例は、一つのペアが見つかった後、変換が計算され、その変換が写真Aに施された時の状態です。

移動された先に写真Bの特徴点があり、その特徴点が自分と「色が近い」のであれば、2つの特徴点が「マッチングする」といいます。

iv) i)〜iii)を繰り返し、マッチング特徴点ペアの数が最も多い変換を見つけます。

v) マッチングペアの数が最も多い変換において、マッチング数やマッチング具合を見て、2枚の写真が似ているかどうかを判断します。
(内部で閾値を決め、その閾値を超えたら、「マッチング」と判断します。)

特徴点が同じであるの判定方法

では、2つの特徴点は何をもって、「色が近い」と判断できるのでしょうか。

一番簡単なやり方は、特徴点の周辺の点を取って、一点一点の対応の色の値を比較し、「色が近さ」を計算します。

但し、写真が横(または縦)に伸びた場合、点と点の比較がうまく機能しないことがあります。例えば、
IM_StretchedAreas

同じ模様なのに、別の方向に伸びたため、周辺の点同士の比較では、対応する点が見つけ難くなります。

そのため、一旦、伸びた具合の補正を行います。
色の値の変更傾向を計算し、色の変動傾向が一定になるように、写真をリサイズします。

また、撮影時の光環境によって、同じ写真でも、色の値が違ってくることがあります。
そのため、色の絶対の値より、色の変動傾向の値同士で比較した方が、精度が出ます。

形補正の結果と色の変更傾向は次のようになります。

一番左は元の画像で、真ん中は伸び具合を補正した結果、右側が色の変更傾向です。

IM_NormalizeResult

右側の色の変更傾向の結果を見ると、実際の色の値と写真の伸び具合が違っても、色の変更傾向が同じであり、同じ特徴点であることが分かります。

このように、マッチング特徴点を見つけ、その数で写真のマッチングを判定できるわけです。


以上、写真のマッチング技術の基本原理の紹介でした。

本文が使っている写真の素材は、こちらのイリノイ大学のページから引用しています。
より詳しい技術内容については、こちらの教材をお薦めします。

投稿タグ
ソフトウェア開発 画像マッチング 画像処理 研究開発



PAGETOP