以下、添付図面に従って本発明に係る実施の形態を詳細に説明する。
[第1の実施形態]
本実施形態のサーバ装置やクライアント装置を構成するコンピュータ装置の構成について、図1のブロック図を参照して説明する。サーバ装置やクライアント装置はそれぞれ単一のコンピュータ装置で実現してもよいし、必要に応じた複数のコンピュータ装置に各機能を分散して実現するようにしてもよい。複数のコンピュータ装置で構成される場合は、互いに通信可能なようにLocal Area Network(LAN)などで接続されている。コンピュータ装置は、パーソナルコンピュータ(PC)やワークステーション(WS)等の情報処理装置によって実現することができる。
図1において、CPU101はコンピュータ装置100全体を制御するCentral Processing Unitである。ROM102は変更を必要としないプログラムやパラメータを格納するRead Only Memoryである。RAM103は外部装置などから供給されるプログラムやデータを一時記憶するRandom Access Memoryである。外部記憶装置104はコンピュータ装置100に固定して設置されたハードディスクやメモリカードなどの記憶装置であり、画像ファイルを蓄積するために利用される。なお、外部記憶装置104は、コンピュータ装置100から着脱可能なフレキシブルディスク(FD)やCompact Disk(CD)等の光ディスク、磁気や光カード、ICカード、メモリカードなどを含んでもよい。入力デバイスインターフェイス105はユーザの操作を受け、データを入力するポインティングデバイスやキーボードなどの入力デバイス109とのインターフェイスである。出力デバイスインターフェイス106はコンピュータ装置100の保持するデータや供給されたデータを表示するためのモニタ110とのインターフェイスである。通信インターフェイス107はインターネットなどのネットワーク回線111や、デジタルカメラ112,デジタルビデオカメラ113,スマートフォン114などに接続するための通信インターフェイスである。システムバス108は101〜107の各ユニットを通信可能に接続する伝送路である。
後述する各動作は、ROM102等のコンピュータ読み取り可能な記憶媒体に格納されたプログラムをCPU101が実行することにより実行される。
[画像検索装置の構成]
本実施形態では、画像検索装置に適用した例を説明する。本実施形態の画像検索装置は、既に登録された画像に包含される画像を登録するとき、その登録対象画像は画像インデックスに追加せず、既に登録された画像からのリンク情報を生成・保持するものである。
以下、本実施形態の画像検索装置の構成について図2を用いて説明する。同図は、ROM102に格納されたプログラムを、CPU101が実行した際の機能ブロック図である。
コンテンツ登録部201では、検索対象とする画像を登録する処理を行う。具体的には、既に登録された画像に包含される画像が登録されるとき、既に登録された画像からのリンク情報を生成し、リンク情報管理部202に格納する。一方で、包含される画像が登録されていないとき、登録対象画像の画像特徴量を画像インデックス管理部203に格納する。詳細なコンテンツ登録処理については、フローチャート図4を用いて後述する。
リンク情報管理部202では、基準となる画像(基準コンテンツ)の情報と、基準コンテンツに包含される画像の情報をリンク情報として保持・管理する。
例えば、図3(c)に示すような画像ID1が基準コンテンツであるとき、画像ID2は画像ID1の破線領域301cに包含されることをリンク情報として保持する。
具体的には、図3(a)に示すように、基準コンテンツIDとリンク個数とリンク画像リストと領域情報と特徴量数を保持する。なお、この1行のことを以下ではレコードと呼ぶ。図3(a)の1レコード目は、図3(c)のリンク情報である。
基準コンテンツIDは、基準コンテンツが定まるごとに生成されるIDである。そのため、基準コンテンツID「A」は画像ID1が基準コンテンツとして定められたときに生成されたIDである。なお、画像IDと区別しやすくするために、IDにアルファベットを用いているが、数値等を用いてもよい。
リンク画像リストは、基準コンテンツに包含される画像IDのリストである。リンク画像リストの先頭画像は、基準コンテンツそのものであり、それに続く画像が先頭画像に包含される画像(つまり、リンクされている画像)となる。この例では、画像ID1に対して画像ID2を含むことが示されている。
領域情報は、リンク画像が基準コンテンツのどの領域に対応するかを示す矩形領域の座標情報である。領域情報の並びは、リンク画像リストの並びと対応している。例えば、先頭の領域情報は、画像ID1の対応領域を示す情報である。ただし、画像ID1は基準コンテンツそのものであるため、画像ID1の全領域となる。ゆえに、画像ID1の全領域が領域情報として記載されている。次の領域情報は、画像ID1中の画像ID2の対応領域を示しており、図3(c)の画像ID1上の破線領域301cの左上と右下の座標となる。なお、本実施形態では画像の左上を原点として、右方向にX軸、下方向にY軸を設定した座標系を用いる。また、領域情報は矩形領域であるため、矩形の左上隅と右下隅の座標の組で領域情報を表現するが、左上隅の座標と、水平方向のサイズ(画素数)、垂直方向のサイズ(画素数)でも構わない。領域情報は対応領域を記述できれば十分であるため、領域情報は矩形領域である必要はない。例えば複数の座標で構成される多角形の領域であってもよい。あるいは、中心と半径で記述する円形領域等であってもよい。本発明は、領域情報の表現に限定されるものではない。
特徴量数は、基準コンテンツとリンク画像とで一致した局所特徴量の数である。特徴量数の並びは、リンク画像リストの並びと対応している。例えば、先頭の特徴量数は、基準コンテンツと画像ID1とで一致した局所特徴量の数であり、つまり画像ID1の局所特徴量の数になる。2つ目の特徴量数は、基準コンテンツ(画像ID1)と画像ID2とで一致した局所特徴量の数であり、ここでは500個であったとして記録されている。あるいは、特徴量数は、基準コンテンツとリンク画像とで一致し、かつ領域情報の範囲内にあった局所特徴量の数であってもよい。あるいは、単純にリンク画像の局所特徴量の数を用いてもよい。
なお、領域情報と特徴量数は後述の検索結果の類似度を計算するときに用いる。そのため、類似度の計算に用いないとき、使用しない情報はなくてもよい。あるいは、類似度計算を不要とするとき、これら情報はなくてもよい。
また、リンク情報管理部202で保持する情報は、異なる構成で保持管理してもよい。例えば、上記の構成では、一つの基準コンテンツIDに対して、複数のリンク画像の情報が対応づけられている。これを一つの基準コンテンツIDに対して、一つのリンク画像の情報として、複数のレコードに分割して保持してもよい。
あるいは、上記の構成では、複数の情報を一つのテーブル構造で保持している。しかしながら、基準コンテンツの情報用のテーブルと、リンク情報用のテーブルに分けて管理してもよい。例えば、基準コンテンツ用のテーブルは、基準コンテンツIDと、基準コンテンツの画像IDと、画像の領域情報等から構成されるテーブルとなる。一方で、リンク情報のテーブルは、基準コンテンツIDと、基準コンテンツにリンクされる画像IDと、それら画像の領域情報などから構成される。本発明におけるリンク情報管理部202で保持する情報の構成は、これらに限定されるものではない。要するに、どのリンク画像がどの基準コンテンツ画像に対応するのか、リンク画像が基準コンテンツ画像のどの領域に対応するのかを示す情報を記憶管理できれば良い。
画像インデックス管理部203は、画像から抽出した局所特徴量と、該局所特徴量を含む基準コンテンツIDを管理する。加えて、基準コンテンツ上での局所特徴量の座標も管理する。
画像の局所特徴量は、画像の特徴的な点(局所特徴点)を抽出し、当該特徴点とその周辺の画像情報とに基づいて、当該特徴点に対応する特徴量(局所特徴量)を計算したものである。詳細な「局所特徴量の抽出処理」については、フローチャート図6(a)を用いて後述する。
さらに、画像インデックスとして用いるために、局所特徴量は量子化される。例えば、局所特徴量が2次元ベクトルであるとき、図7(a)に示すように特徴量の空間を格子状等に分割して、同一の格子領域に属する局所特徴量に同じ量子化値を割り当てることになる。実際はN次元ベクトルであるため、これをN次元空間に拡張した処理を適用する。詳細な「局所特徴量の量子化処理」に関しては後述する。
画像インデックス管理部203では、量子化値に対して「その局所特徴量を含む画像ID群」及び「その局所特徴量の情報」を割り当てて保持する。具体的には、図3(b)に示すように、量子化値と{基準コンテンツID,X座標,Y座標}のリストから画像インデックスは構成される。量子化値は、局所特徴量の量子化値である。{基準コンテンツID,X座標,Y座標}のリストは、局所特徴量を含む基準コンテンツのIDと、その基準コンテンツ上の局所特徴量の位置座標である。
なお、画像インデックス管理部203で、異なる構成で情報を保持してもよい。例えば、上記の構成では、一つの量子化値に対して、複数の基準コンテンツの情報を対応づけているが、1対1対応になるように構成してもよい。本発明における画像インデックスの構成は、これらに限定されるものではない。
部分画像検索部204は、クエリ画像と部分一致する基準コンテンツを、画像インデックス管理部203から検索する。具体的には、クエリ画像から局所特徴量を抽出・量子化する。そして、クエリ画像と同じ量子化値を有する基準コンテンツIDを得る。基準コンテンツIDごとに、含まれていた回数をカウントして類似度とする。類似度順にソートした検索結果を作成する。詳細な「部分画像検索処理」については、フローチャート図8を用いて後述する。
コンテンツ検索部205は、クエリ画像をもとに、コンテンツ登録部201で登録された画像を検索する。具体的には、クエリ画像を用いて、部分画像検索部204により基準コンテンツを得る。そして、基準コンテンツを用いて、リンク情報管理部202から、リンク画像リストを取得する。得られた画像ID群に対して、類似度を決定して、類似度順にソートした検索結果を作成する。詳細な「コンテンツ検索処理」については、フローチャート図5(a)を用いて後述する。
検索インターフェイス部206は、コンテンツ登録部201へ登録する画像を受け付ける、あるいはクエリ画像を受け付けて検索結果を出力するインターフェイス部分である。具体的には、入力デバイス109を用いて外部記憶装置104に保存された画像のファイルパスなどを登録画像あるいはクエリ画像として指定することで、入力を受け付ける。また、検索インターフェイス部206は、登録画像のファイルパスと画像IDの対応関係を記憶する。そして、検索結果の表示では、コンテンツ検索部205が生成した検索結果をもとにファイルパス一覧をモニタ110に表示する。あるいは、ファイルパスから画像のサムネイルなどを読み出して表示してもよい。本発明における入出力形態はこれらに限定されるものではない。
なお、登録画像、クエリ画像は、図1に示すように、通信インターフェース107を介し、撮像機能を有するデジタルカメラ112、デジタルビデオカメラ113、スマートホン114をはじめ、ネットワーク111から入力しても構わない。
[コンテンツ登録処理]
次に、コンテンツ登録処理についてフローチャート図4を用いて説明する。本処理はコンテンツ登録部201によって実行される。本処理の実行時には、検索インターフェイス部206から登録対象画像が与えられる。そして、既存の基準コンテンツの有無あるいは包含関係に基づいて、リンク情報管理部202あるいは画像インデックス管理部203への登録が制御される。具体的な制御内容について図4を用いて説明する。
S401は、登録対象画像をクエリとして部分画像検索により基準コンテンツを検索する。具体的には、部分画像検索部204が登録対象画像から局所特徴量を抽出し、局所特徴量に基づいて画像インデックス管理部203を検索する。部分画像検索の詳細な処理(図8)については後述するが、これによって登録対象画像に部分一致する基準コンテンツIDが類似度順にソートされたリストとして取得される。
S402では、該当する基準コンテンツがあるいか否かを判定する。具体的には、S401によって取得した基準コンテンツIDのリストに、所定の閾値を上回る類似度を有する基準コンテンツIDがあるか否かを判定する。基準コンテンツがないと判断されるとき(NO)、S403へ移る。それ以外の場合(YES)は、S405へ移る。
S403では、登録対象画像を新たな基準コンテンツとしてリンク情報管理部202に登録する。具体的には、まず、新たな基準コンテンツIDを生成する。例えば、最後に生成した基準コンテンツIDを記憶しておき、それをインクリメントした値を新たな基準コンテンツIDとする。なお、本実施形態ではIDは文字であるため、文字コード値をインクリメントするなどして唯一のIDを生成してもよいし、あるいは他の方法で唯一のIDを生成するようにしてもよい。次に、リンク画像リストに登録対象画像の画像IDを設定する。次に、リンク個数に初期値として“1”を設定する。次に、領域情報に登録対象画像のサイズの矩形領域座標を設定する。次に、特徴量数に、登録対象画像から抽出された局所特徴量の数を設定する。そして、これらの情報を有するレコードをリンク情報管理部202に登録する。
S404では、登録対象画像の局所画像特徴量を画像インデックスに登録する。具体的には、画像インデックス管理部203に、登録対象画像の量子化した局所特徴量に対して、S403で生成した基準コンテンツIDと局所特徴量の座標を追加する。もし、対応する量子化局所特徴量がないときは、新たにレコードを生成して登録する。
一方、ステップS402において、登録対象画像に対応する基準コンテンツが既に登録済みであると判定した場合、処理はS405に進む。このS405では、S402で得た基準コンテンツと登録対象画像の包含関係を求める。ここでは、RANSAC(非特許文献3)を利用する。RANSACは、比較元画像と比較先画像の局所特徴量同士の対応を求めて、その局所特徴量の座標が一致するように変換するためのアフェイン変換行列を求める方法である。
ここでは、比較元画像を登録対象画像、比較先画像を基準コンテンツとして、RANSACを用いてアフェイン変換行列を求める。そして、アフェイン変換行列を用いて、登録対象画像の四隅の座標を変換する。その結果得られた四隅の座標が、基準コンテンツの四隅の座標の内側にあるとき「基準コンテンツは登録対象画像を包含している」と包含関係を決定する。基準コンテンツの四隅の座標は、リンク情報管理部の領域情報から容易に得ることができる。一方で、基準コンテンツの四隅の座標が、変換で得た登録対象画像の四隅の座標の内側にあるとき「登録対象画像は基準コンテンツを包含している」と包含関係を決定する。それ以外の場合は、「包含関係は存在しない」と包含関係を決定する。それ以外の場合として、例えば、登録対象画像と基準コンテンツの一部分が重なっているような場合は包含関係が存在しないと判断される。
あるいは、画像の四隅の座標を用いるのではなく、画像から抽出された局所特徴量の最外接矩形の四隅の座標を用いてもよい。これは、局所特徴量のない部分は検索結果に影響を与えないため、局所特徴量の最外接矩形であっても十分で有るためである。
なお、画像同士の包含関係が得るために、RANSACを用いたが、これ以外の手法を採用しても構わず、その種類によって本願発明が限定されるものではない。
S406では、基準コンテンツが登録対象画像を包含するか否かを判定する。これは、S405で得た包含関係に基づいて行われる。基準コンテンツが登録対象画像を包含するとき(YES)、S407へ移る。それ以外のとき(NO)は、S403へ移る。
S407では、登録対象画像は、画像インデックス管理部203での管理対象外とし、その代わりに、登録対象画像を既存の基準コンテンツのリンクに追加する。具体的には、基準コンテンツIDが一致するリンク情報管理部202のレコードを特定する。次に、リンク個数を“1”加算する。次に、リンク画像リストの末尾に、登録対象画像の画像IDを追加する。次に、S405で求めた登録対象画像の四隅の変換後座標を用いて、外接矩形領域を求めて、領域情報の末尾に追加する。最後に、登録対象画像と基準コンテンツで一致した局所特徴量の数を、特徴量数の末尾に追加する。なお、本実施形態では、一致した局所特徴量の数は、S401で得た類似度と同じため、該類似度を用いてもよい。
S408では、登録対象画像の差分特徴量を画像インデックスに登録する。具体的には、登録対象画像から局所特徴量を抽出・量子化する。次に、画像インデックス管理部203において、抽出した量子化値に対応する{基準コンテンツID,X座標,Y座標}のリストを特定する。次に、該リストの中に、包含関係にある基準コンテンツIDが存在しないならば、該基準コンテンツIDと該基準コンテンツ上での局所特徴量の座標とを、画像インデックス管理部203に追加する。あるいは、該リストの中に、包含関係にある基準コンテンツIDが存在する場合も、異なる座標であれば登録してしまってもよい。また、量子化値そのものがない場合も同様の情報を生成してレコードを追加する。なお、登録対象画像から抽出された局所特徴量の位置座標は、基準コンテンツ上の位置座標とは異なる。そのため、登録に用いる位置座標には、S405で求めたアフェイン変換行列を用いて変換したものを用いる。
なお、S408の処理は行わなくてもよい。行わない場合は、登録対象画像の差分の局所特徴量は登録されない。しかし、元の基準コンテンツの局所特徴量は登録されているため、コンテンツ検索処理は行うことができる。加えて、コンテンツ登録処理が簡素化されるため、登録速度が向上する。しかしながら、登録対象画像からは基準コンテンツより多くの局所特徴量を得ることができる可能性がある。これは局所特徴量がスケールスペースと呼ばれる縮小画像を作成して、それぞれの縮小画像から局所特徴量を抽出するためである。つまり、登録対象画像は基準コンテンツよりも小さいため、基準コンテンツの縮小画像より、より高い縮小率の縮小画像までを作成する。そのため、基準コンテンツが作成していなかった縮小画像からも局所特徴量が抽出される。そのため、登録対象画像からより多くの局所特徴量が得られる可能性がある。特に、基準コンテンツの部分領域に比べて、登録対象画像のサイズが大きいとき、基準コンテンツの部分領域に対しては登録対象画像は解像度が高い。そのため、このよう場合には特に差分の局所特徴量を多く得ることが期待できる。このような、差分の局所特徴量を登録しておくことによって、検索結果の精度向上が期待できる。
また、S408の処理を行わない場合は、登録対象画像が基準コンテンツよりも極端に小さいときは、リンク情報を用いずに、画像インデックスに登録するようにしてもよい。具体的には、S406において、基準コンテンツが登録画像を包含していても、登録対象画像が基準コンテンツよりも極端に小さい場合は、S403へ移るようにする。これによって、登録対象画像の画像特徴量が極端に失われることを防ぐことができる。そのため、検索精度の低下を防ぐことが期待できる。
また、S405では、S402で得た基準コンテンツの最も類似度の高いものを一つだけ用いている。しかしながら、所定の閾値以上の基準コンテンツに対して、類似度が高い順に包含関係を求めてゆき、包含関係が存在する基準コンテンツが見つかったときに、該包含関係と該基準コンテンツをS406以降で用いてもよい。これによって、包含関係にある基準コンテンツの類似度が相対的に少し低い場合においても、包含関係にある基準コンテンツを見つけることができるようになる。
また、他の実施形態の画像検索装置では、登録対象画像を基準コンテンツとして登録する処理と、登録対象画像を基準コンテンツからのリンクとして登録する処理に分けてもよい。具体的には、前者の処理はS403とS404とを実行する処理である。一方で、後者の処理はS403とS404以外を実行する処理である。ただし、後者の処理では、S402とS406でNOのときは処理を終了する。
このように予め基準コンテンツを登録しておく実施形態は、基準コンテンツを予め用意できる場合に有効である。
例えば、印刷した文書画像を登録しておき、特定のデザインを含む印刷をあとから検索するシステムを考える。このとき、システム稼働前に、前者の処理を用いて、予め綺麗なデザイン画像を用意して、これを基準コンテンツとして登録しておく。そして、システム稼働時には、後者の処理を用いることで、デザイン画像の一部あるいは全体を印刷している文書画像を、基準コンテンツからのリンクとして登録しておくことができる。
なお、印刷する文書はデザイン画像以外のテキストなども含んでいることが考えられる。そのため、文書内の画像領域を特定して、その部分のみを登録するようにした方が、より効果的であると考えられる。
このように、基準コンテンツの登録フェーズと、基準コンテンツからのリンクとしてのみ登録するフェーズとに、処理を分けてもよい。そして、それぞれの処理を、単一の装置で実施するように構成してもよし、あるいは別々の装置で実施するように構成してもよい。
[コンテンツ検索処理]
次に、コンテンツ検索処理についてフローチャート図5(a)を用いて説明する。本処理はコンテンツ検索部205によって実行される。本処理の実行時には、検索インターフェイス部206からクエリ画像が与えられる。そして、クエリ画像をもとに基準コンテンツを検索し、基準コンテンツに紐づくリンク画像を取得する。さらに、得られた画像に対して類似度を求めて、検索結果を作成する。検索結果は、検索インターフェイス部206からモニタ110などに出力される。
まず、S501では、クエリ画像を用いて部分画像検索部204により基準コンテンツを検索する。具体的には、部分画像検索部204がクエリ画像から局所特徴量を抽出し、局所特徴量に基づいて画像インデックス管理部203を検索する。部分画像検索の詳細な処理(図8)については後述するが、これによってクエリ画像に部分一致する基準コンテンツIDが類似度順にソートされたリストとして取得される。
S502は、S501で得た基準コンテンツIDのリストに対するループであり、リスト中の各々に番号が1から順に割り当てられているものとする。これを変数iを用いて参照するため、はじめにiを1に初期化する。さらに、iが基準コンテンツIDの個数以下であるときS503へ移り、これを満たさないときループを抜けてS506へ移る。
S503では、i番目の基準コンテンツからリンクされた画像を得る。具体的には、リンク情報管理部202をi番目の基準画像コンテンツのIDをキーとして検索して、各基準コンテンツIDのリンク画像リストを取得する。
S504では、S503で取得したリンク画像リストの各々の画像に対して、クエリ画像との類似度を計算する。具体的には、クエリ画像と計算対象画像の重複領域の面積を求めて、これをクエリ画像の面積で割ったものを類似度とする。
例えば、図5(b)に示すようにクエリ画像によって、基準コンテンツの画像ID1と、それからリンクされた画像である画像ID2が検索されたとする。なお、各々の波線は画像ID1上のどの部分に画像ID2とクエリ画像が対応するかを示している。このとき、画像ID1とクエリ画像の重複面積は、クエリ画像の面積と同じであるため、類似度は1である。一方で、画像ID2はクエリ画像のおよそ6割程度しか被覆していないため、0.6等と類似度が計算される。つまり、類似度は「重複面積÷クエリ画像の面積」によって得られる。
基準コンテンツ上でクエリ画像が該当する部分領域は、既に説明したRANSACを用いる。具体的には、比較元画像をクエリ画像、比較先画像を基準コンテンツとして、RANSACを用いてアフェイン変換行列を求める。そして、クエリ画像の四隅の座標を、アフェイン変換行列を用いて、基準コンテンツ上の座標に変換する。これによって、太い破線で示されるような矩形座標が求まる。なお、アフェイン変換によってわずかに回転などが生じることも考えられる。この場合は、重複面積を求めやすいように、アフェイン変換後の座標の最外接矩形を用いるようにしてもよい。
一方で、基準コンテンツの領域情報と、基準コンテンツからリンクされた画像の領域情報は、リンク情報管理部202において管理されているため、それを参照することで求めることができる。これによって各々の領域情報が求められるため、上記類似度を計算することができる。
S505は、基準コンテンツのループの終端であり、iに1を加算してS502へ戻る。S503〜S505を繰り返すことで、S501で検索された基準コンテンツに紐づく画像を全て得られて、さらに画像ごとの類似度が決定される。S506では、類似度に従って画像を降順にソートして検索結果として出力する。また、このとき、類似度が閾値以下の画像は、検索結果から除外してもよい。
なお、S504において、類似度としてクエリ画像の被覆率を用いている。しかしながら、被覆率に「一致した特徴量数」を積算したものを用いてもよい。これによって、クエリ画像に含まれる特徴量のうちリンクの画像にも含まれる特徴量の数を疑似的に求めることができる。そのため、部分画像検索処理の類似度と似た類似度を計算によって求めることができる。これを類似度として用いてもよい。
あるいは、クエリ画像の一致した領域に含まれる「一致した特徴量」の個数を数え上げてもよい。前記では疑似的に求めていたのに対して、厳密に一致した特徴量の個数を求めることができるようになる。
あるいは、面積を用いずに、特徴量の個数のみに基づいて類似度を計算してもよい。例えば、特徴量数の被覆率を疑似的に求めることが考えられる。具体的には、リンク情報管理部では、画像と基準コンテンツで一致した特徴量数が記憶されている。これを用いて、「クエリと基準コンテンツで一致した特徴量数×画像と基準コンテンツで一致した特徴量数÷基準コンテンツの特徴量数」として類似度を求めてもよい。この方法では面積を用いないため、RANSAC等は不要である。そのため、速度向上が期待できる。
あるいは、単純にリンク画像リストの順番で類似度を決定してもよい。例えば、部分画像検索の類似度を第一のソートキーとし、リンク画像リスト上の順番を第二のソートキーとして、画像をソートする。そのソート結果に従って、最下位に1を割り当て上位に向かってインクリメントしながら整数を割り当てていって、これを類似度としてもよい。この方法では、領域情報や特徴量数などが不要であるため、リンク情報を削減することができる。加えて、登録時にこれら情報のための計算処理が不要であるため、登録処理を早くすることなども期待できる。
以下では、本実施形態で用いた「局所特徴量の抽出処理」「局所特徴量の量子化処理」「部分画像検索処理」の一例について説明を行う。
[局所特徴量の抽出処理]
画像から局所特徴量を抽出する方法の一例について、図6(a)を用いて説明する。
ステップS601aで、入力された画像から輝度成分を抽出し、抽出した輝度成分に基づいて輝度成分画像(モノクロ画像)を生成する。
次にステップS602bで、輝度成分画像を倍率(縮小率)pに従って順次縮小することを繰り返し、オリジナルのサイズの画像から段階的に縮小した、オリジナルの画像を含めてn枚の縮小画像を生成する。ここで、倍率p及び縮小画像の枚数nは予め決められているものとする。
図6(b)は、縮小画像生成処理の一例を示す図である。図6(b)に示す例は、倍率pが「2の−(1/4)乗」、縮小画像の枚数nが「9」の場合である。もちろん、倍率pは必ずしも「2の−(1/4)乗」で無くとも良い。図6(b)において、601bはステップS601aで生成された輝度成分画像である。602bは当該輝度成分画像601bから倍率pに従って再帰的に4回の縮小処理を行って得られた縮小画像である。そして、603bは当該輝度成分画像601bから倍率pに従って8回縮小された縮小画像である。
この例では、縮小画像602bは、輝度成分画像601bの水平、垂直とも1/2に縮小された画像となる。縮小画像603bは輝度成分画像601bの水平、垂直とも1/4に縮小された画像となる。尚、画像を縮小する方法は何れの方法でも良く、本実施形態では、線形補間による縮小方法により縮小画像を生成するものとする。
次に、ステップS603aでは、n枚の縮小画像の各々に画像の回転があってもロバスト(robust)に抽出されるような局所的な特徴点(局所特徴点)を抽出する。この局所特徴点の抽出方法として、本実施形態ではHarris作用素を用いる(非特許文献1:C.Harris and M.J. Stephens, "A combined corner and edge detector," In Alvey Vision Conference, pages 147-152, 1988.参照)。
具体的には、Harris作用素を作用させて得られた出力画像H上の画素について、当該画素及び当該画素の8近傍にある画素(合計9画素)の画素値を調べる。そして、当該画素が局所極大になる(当該9画素の中で当該画素の画素値が最大になる)点を局所特徴点として抽出する。ここで、当該画素が局所極大になったときでも、当該画素の値がしきい値以下の場合には局所特徴点として抽出しないようにする。
なお、局所特徴点を抽出可能な方法であれば、上述のHarris作用素による特徴点抽出方法に限らず、どのような特徴点抽出方法を用いてもよい。
次に、ステップS604aで、ステップS603aで抽出された局所特徴点の各々について、画像の回転があっても不変となるように定義された特徴量(局所特徴量)を算出する。この局所特徴量の算出方法として、本実施形態ではLocal Jet及びそれらの導関数の組み合わせを用いる(J.J.Koenderink and A.J.van Doorn, "Representation of local geometry in the visual system," Riological Cybernetics, vol.55, pp.367-375, 1987.参照)。
具体的には、以下の式(1)により局所特徴量Vを算出する。
ただし、式(1)の右辺で用いている記号は、以下に示す式(2)から式(7)で定義される。ここで、式(2)右辺のG(x,y)はガウス関数、I(x,y)は画像の座標(x,y)における画素値であり、“*”は畳み込み演算を表す記号である。また、式(3)は式(2)で定義された変数Lのxに関する偏導関数、式(4)は当該変数Lのyに関する偏導関数である。式(5)は式(3)で定義された変数Lxのyに関する偏導関数、式(6)は式(3)で定義された変数Lxのxに関する偏導関数、式(7)は式(4)で定義されたLyのyに関する偏導関数である。
なお、局所特徴量を算出可能な方法であれば、上述したような特徴量算出方法に限らず、どのような特徴量算出方法を用いてもよい。
以上によって、対象画像から局所特徴量を抽出することができる。
[局所特徴量の量子化処理]
局所特徴量同士のマッチングを行いやすくするために、上記の局所特徴量を量子化する。
例えば、局所特徴量をN次元ベクトルVとし、各次元をVnと表記する。このとき、n番目の次元の特徴量について、Kn階調の量子化は、以下の式により行うことができる。なお、NおよびKnは予め決められた値である。
Qn=(Vn*Kn)/(Vn_max−Vn_min+1) …(8)
ここで、Qnは、N次元のうちのn番目の次元の特徴量Vnを量子化した値である。Vn_maxとVn_minはそれぞれn番目の次元の特徴量の取りうる値の最大値、および、最小値である。
なお、上記の量子化では、次元ごとに量子化階調数を定めているが、全次元で共通の階調数を用いてもよい。この量子化方法は、図7(a)に示すように、特徴量空間を格子状に分割する方法を意味するが、図7(b)のような格子形状に分割してもよい。この図で、701の格子は特徴量空間における量子化領域、702は各特徴を表している。図7(a)、(b)ともに、二次元の特徴量空間を量子化分割している例であるが、これを局所特徴量の次元数分の多次元に拡張した分割を行う。
また、特徴量空間を分割可能な方法であれば、上述したような規則に基づいて量子化する方法に限らずに、どのような分割方法でも適用可能である。例えば、複数の画像を機械学習させることによりクラスタリングのルールを作成し、そのルールに則って特徴量空間を分割し、量子化するようにしてもよい。
また、各次元についての量子化を行った後、以下の式(9)により、量子化値群のラベル化を行うことで、実質的に一次元の特徴量と同等に扱うことも可能である。
IDX=Q
1+Q
2*K
1+Q
3*K
1*K
2+…+Q
n*K
1*K
2*…*K
n-1 …(9)
また、全次元の階調数が共通の場合は、以下の式(10)により、量子化値群のラベル化が可能である。ここで、Kは階調数である。
なお、ラベル化可能な算出方法であれば、上述したような算出方法に限らずに、どのようなラベル化方法を用いてもよい。
量子化値をキーとして画像IDなどを検索可能とするデータベースなどを構成することで、局所特徴量同士のマッチングを高速に行うことが可能になる。これを画像インデックスと呼ぶ。
なお、本実施形態では、画像インデックスには量子化値に対して、直接画像IDを対応づけておらず、基準コンテンツIDを対応付けた構成をとっている。そして、基準コンテンツIDは、リンク情報管理部にて画像IDと対応づけられている。
[部分画像検索処理]
次に、上記画像インデックスを用いて、クエリ画像に類似する画像を検索する部分類似画像検索の処理について述べる。部分類似画像検索では、クエリ画像から局所特徴量を抽出・量子化して、画像インデックスの基準コンテンツIDを検索する。そして、基準コンテンツIDが出現した回数を数え上げていく。これは、クエリの局所特徴量を含む基準コンテンツIDへと投票していく様に似ているため、投票方式と呼ばれる。以下、本実施形態の部分画像検索処理の詳細について図8を用いて説明する。
S801では、クエリ画像から局所特徴量を抽出する。これは前述の局所特徴量の抽出処理と同じである。S802では、S801で得た局所特徴量を量子化する。量子化方法は前述の方法と同じである。S803では、局所特徴量のループであり、S801で得た局所特徴量に対して番号が割り当てられているものとし、これを変数iを用いて参照するため、はじめにiを1に初期化する。さらに、iが局所特徴量数以下であるときS804へ移り、これを満たさないときループを抜けてS807へ移る。
S804では、局所特徴量iを持つ基準コンテンツIDを求める。具体的には、S802で求めた局所特徴量iの量子化値を用いて、画像インデックスを検索することで、量子化値に対応する基準コンテンツIDのリストを得る。S805では、基準コンテンツIDごとに出現頻度をカウントアップする。ここでは、予め基準コンテンツIDに対してカウント値を保持するようなテーブルを用意しておき、S804で得た基準コンテンツIDのカウント値を加算していく。これによって、基準コンテンツIDごとに、クエリ画像の局所特徴量を含む数をカウントしていく。S806は、局所特徴量のループの終端であり、iを1加算してS803へと写る。
S807では、S805で更新していた、基準コンテンツIDとカウント値のテーブルを、カウント値の降順でソートする。これによって、クエリ画像の局所特徴量を多く含む基準コンテンツIDが上位に出現するリストが得られる。この基準コンテンツIDと類似度を組みとしたリストを部分画像検索結果処理の結果として処理を終了する。
[局所特徴量を用いた画像照合]
局所特徴点/局所特徴量の比較に基づく画像の照合方法にはいろいろあるが、ここではRANSAC(非特許文献3)を利用した方法を説明する。RANSACでは比較元画像と比較先画像の局所特徴量同士を対応づけて、比較元画像の座標値を比較先画像の対応する座標値へと変換するアフェイン変換行列を得る。
具体的には、比較元画像の各局所特徴点に対し、比較先画像の局所特徴点で、特徴間距離が最小となるものをペアで記述する。
次に、比較元画像から3個の局所特徴点をランダムに選択し、それぞれの特徴間距離が最小となる比較先画像の局所特徴点群との間で、その座標の対応からアフィン変換行列を求める。このアフィン変換行列を用い、比較元画像の残りの局所特徴点の座標を比較先画像の座標に変換し、その近傍に上記特徴間距離が最小となるペアの局所特徴点が存在するかを確認し、存在すれば1票投票し、存在しなければ投票しない。
最終的に、この投票数が所定の値に達した場合には、比較元画像と比較先画像は部分一致する領域が存在すると判断し、その投票数が多いほど一致する領域が大きいと考える。他方、投票数が所定の値に達しない場合には、新たに比較元画像から3個の局所特徴点をランダムに選択しアフィン変換行列を求める処理から再度処理を行うが、この再処理は定められた反復カウント数以内で繰り返す。
もし、反復カウント数に達しても投票数が所定の値を超えなければ、部分的に一致する領域が存在しないと判断して比較の処理を終了する。そして、部分一致する領域が存在する場合、上記求めたアフィン変換行列と特徴間距離が最小となるもののペアを用い、比較元画像中の着目した局所特徴点と対応する特徴点を求める事が出来る。
[本実施形態の効果]
従来は、登録対象画像は全て画像インデックスへ登録されていた。しかるに、本第1の実施形態では、登録対象画像が、既に登録された画像に包含される関係にあるとき、既存の基準コンテンツから登録対象画像へのリンク情報を生成する。そして、画像インデックスへの登録を回避していた。あるいは、差分の局所特徴量のみを登録することで、画像インデックスへの登録を減らしていた。これによって、本実施形態では画像インデックスの肥大化を低減することができる。そのため、画像インデックスのサイズをこれまでよりも十分に小さくすることができるため、ディスク容量あるいはメモリ容量などの使用率を減らすことができる。
具体的な削減率としては、例えば、画像インデックス・リンク情報などが次に示すようなバイトサイズを使用するとき、リンク画像に対してインデックス削減率は1/1500になる。
図3(a)のリンク情報の「基準コンテンツID」が4Byte、「リンク個数」が4Byte、「リンク画像リスト」の各要素が4Byte、「領域情報」の各要素が16Byte、「特徴量数」の各要素が4Byteであったとする。さらに、図3(b)に示す画像インデックスの「量子化値」が4Byte、「{基準コンテンツID,X座標,Y座標}のリスト」の各要素が12Byteであったとする。
ここで、画像1枚あたりから3000点の特徴量が取得されると仮定する。このとき、従来は画像インデックスのみを用いていたため、12Byte×3000点となり36KByteを画像1枚あたりに消費すると試算できる。本実施形態では、基準画像に対しては画像インデックスを生成するため、同様に36KByteを消費する。加えて、リンク情報も生成するため、32Byte消費する。そのため、基準画像に対しては約36KByteを消費する。しかしながら、基準画像と同一の画像を登録したとき、画像インデックスは生成されないため、画像インデックスの増加量は0Byteである。一方で、リンク情報は24Byteのみ増加する。よって、同一のリンク画像に対しては合計24Byteのみの増加である。一方で、リンク画像であっても従来の方式では画像インデックスが36KByte増加する。よって、基準画像に対するリンク画像が登録されたとき、そのインデックスの削減量は「36KByte÷24Byte=1/1500」と試算される。
なお、従来の画像インデックスにおいては、特徴量の座標は必要ないため、これを省いてもよい。このとき「量子化値」を4Byteで、「ID」を4Byteとすると、従来の画像インデックスは1枚当たり8Byte×3000点=24KByteを消費する。そのため、2枚目以降は「24KByte÷24Byte=1/1000」と試算される。
しかしながら、各要素のバイトサイズや、細かなリンク情報や画像インデックスの構成は変えてもよい。その際は、削減率はそれに応じたものになる。しかし、画像1枚に対するリンク情報と画像インデックスでは、圧倒的に画像インデックスの方が巨大になるため、概ねサイズは削減されることに変わりはない。
また、検索速度を高速にするために、画像インデックスをメモリ上に配置することが良く行われる。このとき、画像インデックスのサイズが大きいと、画像インデックスを物理メモリ上に配置しきれないことが起こる。このとき、OSの機能によってHDD上に配置されることが起きる。HDDはメモリに比べて極端に参照速度が低下するため、検索速度も低下することになる。そのため本実施形態によって画像インデックスのサイズを小さくすることができれば、このような事態も回避することができる。
また、画像インデックスが肥大化すると、部分画像検索の速度も低下する。なぜならば、部分画像検索のときに、量子化値に対応する画像のリストを走査する必要がある。そのため、リスト長が長くなればなるほど、検索速度は低下する。本実施形態では、リスト長が長くなることを防ぐため、画像インデックスを検索する部分画像検索の速度性能の低下を防ぐことができている。一方で、部分画像検索で特定した基準コンテンツからリンク画像リストを取得する処理は必要である。しかしながら、これは部分画像検索に比べて、比較的処理量は少ない。そのため、画像インデックスのみを用いた場合に比べて、本実施形態は検索速度の低下を防ぐことも期待できる。
[第2の実施形態]
上記第1の実施形態では、登録対象画像が基準コンテンツを包含する場合、その登録対処画像を画像インデックスへと登録され、既存の基準コンテンツとのリンク情報が生成されなかった。本第2の実施形態では、登録対象画像が、既存の基準コンテンツを包含すると判断した場合に、その登録対象画像を新たな基準コンテンツとし、直前まで基準コンテンツとなっていた画像を、新たな基準コンテンツからのリンクへと修正する画像検索装置について述べる。
本第2の実施形態の画像検索装置の構成は、第1の 実施形態で示した図2の構成と同じである。ただし、コンテンツ登録部201の動作が異なる。第1の実施形態では、コンテンツ登録部201は、既に登録された画像に包含される登録対象画像が与えられたとき、既に登録された画像からのリンク情報を生成し、リンク情報管理部202に格納していた。加えて、包含する画像が登録されていないとき、登録対象画像の画像特徴量を画像インデックス管理部203に格納していた。これに加えて本第2の実施形態では、登録対象画像が、既存の基準コンテンツを包含すると判断した場合に、登録対象画像を基準コンテンツする。さらに、直前まで基準コンテンツとなっていた画像を新たな基準コンテンツからのリンクとなるように、リンク情報管理部202と画像インデックス管理部203の情報を修正する。
以下、コンテンツ登録処理の詳細について、フローチャート図9を用いて説明する。
フローチャート図9のS901〜S908は、第1の実施形態のフローチャート図4のS401〜S408と同じである。ただし、S906でNOの場合の遷移先が、S909になっている点が異なる。以下は、S909以降の処理の説明である。
S909では、登録対象画像が基準コンテンツを包含するか否かを判定する。これは、S905で得た包含関係に基づいて行われる。登録画像が基準コンテンツを包含するとき、S910へ移る。それ以外のときは、S903へ移る。
S910では、登録対象画像が基準コンテンツとなるように、既存の基準コンテンツのリンクを更新する。具体的には、基準コンテンツIDを用いてリンク情報管理部202のレコードを特定する。そして、リンク個数を1加算する。次に、リンク画像リストの先頭に登録対象画像IDを挿入する。次に、領域情報を更新していく。領域情報を更新するために、まず既存の基準コンテンツが登録画像上のどの部分領域に対応するかを求める。そのために、既存の基準コンテンツの画像を比較元として、登録画像を比較先として、前述のRANSACを用いてアフェイン変換行列を求める。そして、アフェイン変換行列を、リンク情報管理部202の領域情報の座標値に適用する。具体的には、領域情報には矩形領域の左上と右下の座標値があるため、それぞれに対してアフェイン変換行列を適用して、新たな領域情報を得る。これによって、基準コンテンツ上の座標値であった領域情報を、登録対象画像上の座標値へと変換する。最後に、領域情報の先頭に、登録対象画像の全領域に相当する矩形領域の座標値を挿入する。これによって、領域情報の更新を行うことができる。
次に、特徴量数を更新する。具体的には、基準コンテンツの局所特徴量の量子化値のうち、登録対象画像の局所特徴量として出現する数を数えあげて、それを特徴量数とする。この値は、S901で得た類似度と似た値となるため、該類似度を用いてもよい。そして、特徴量数のリストの先頭に、該値を挿入する。これによって、特徴量数を更新できる。
S911では、画像インデックスの局所特徴量の座標を更新する。具体的には、画像インデックス管理部203において、処理対象の基準コンテンツIDの局所特徴量の座標を、S910で求めたアフェイン変換行列を用いて変換して書き変える。S912では、登録対象画像の差分特徴量を画像インデックスに登録する。具体的には、登録対象画像から局所特徴量を抽出・量子化する。次に、画像インデックス管理部203において、抽出した量子化値に対応する(基準コンテンツID,X座標,Y座標)のリストを特定する。次に、該リストの中に、包含関係にある基準コンテンツIDが存在しないならば、該基準コンテンツIDと該基準コンテンツ上での局所特徴量の座標とを、画像インデックス管理部203に追加する。あるいは、該リストの中に、包含関係にある基準コンテンツIDが存在する場合も、異なる座標であれば登録してしまってもよい。また、量子化値そのものがない場合も同様の情報を生成してレコードを追加する。
なお、S911およびS912で行っている画像インデックスの更新の際に、既存の基準コンテンツの局所特徴量を一度削除してから、新たに登録対象画像の局所特徴量を登録し直してもよい。具体的には、処理対象となる基準コンテンツIDを有する(基準コンテンツID,X座標,Y座標)を画像インデックス管理部203から削除する。その後、登録対象画像の局所特徴量の量子化と対応づけて、処理対象の基準コンテンツIDと登録画像上での局所特徴量の座標をペアにして、画像インデックス管理部203に登録する。これによって、既存の局所特徴量の座標の書き換え等が不要になり、簡易な処理で画像インデックスを更新できるようになる。
以上によって、既存の基準コンテンツを包含する画像が登録されたときに、リンク情報が適切に生成され、差分の特徴量のみが画像インデックスに登録されるようになる。そのため、登録順序によらずに、画像インデックスの肥大化を抑えることができる。
[第3の実施形態]
本発明の目的は前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUまたはMPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM、DVDなどを用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOperating System(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。