以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
[第1の実施形態]
まず、第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は、第1の実施形態における画像処理装置の機能構成例を示すブロック図である。図2に示す各構成における動作の詳細については、後述する。
第1の実施形態は、画像特徴量を用いて類似画像を検索するにあたって、入力画像から画像特徴量を算出し、登録する処理に関する。更に、入力画像から画像特徴量を算出し、登録されている画像特徴量と比較することにより、類似する画像を検索する処理に関する。また、複数の画像を割り付けることによって生成された画像(以降、割り付け画像)を登録する場合は、元の複数の画像に分割し、それらの画像ごとに画像特徴量を算出し、登録する。ここでは、分割された元の複数の画像のそれぞれを基準画像という。
図2において、画像入力部201は、登録する画像(登録対象画像)、および、検索元画像(クエリ画像)の入力を行う。本実施形態では、図3(A)に一例を示すように、ドキュメントをラスタライズして画像としたものを対象画像として説明する。この入力画像は、ドキュメントを印刷する際に、プリンタドライバで生成することもできる。特にプリンタドライバで生成した場合、その印刷データには1枚の記録紙に何ページを印刷するかを示す情報を含ませることができるので、実施形態では好都合と言える。
割り付け画像判定部202は、画像入力部201から入力された入力画像が、割り付け画像であるかどうかを判定すると共に、割り付け画像である場合には割り付けたページ数を判定する。ここで、割り付け画像とは、図3(B)〜(G)に例を示すように、ドキュメントの複数ページを1つ(1枚)にまとめた画像のことである。ドキュメントを印刷する際に、このような設定をすることができる。割り付け印刷を行う際は、複数のページを同じ大きさで縮小し、1枚の記録紙(1個の画像内)に割り付ける。したがって、割り付け印刷可能なページ数は、2ページ、4ページ、6ページ、8ページ、9ページ、16ページ、32ページなどである。一般に、1枚の記録紙にNページを割り付けて印刷することをNin1と呼ばれる。32ページを超えるページ数を1枚(1ページ)に均等に割り付けることも理論的には可能であり、これらのページ数に限定するものではない。割り付けを行う際、例えば3ページのドキュメントから4ページの割り付け画像を生成する場合は、4ページ目の位置には空白のページが入る。割り付け画像判定部202では、割り付け画像と判定された場合は、更に、何ページの割り付け画像であるかを判定する。ここでは、Nページの割り付け画像であると判定されたとして説明する。
領域分割部203は、割り付け画像判定部202によりNページの割り付け画像と判定された場合、入力画像をN個の領域に分割する。割り付け方法はあらかじめ定められており、その方法にしたがって分割する。画像特徴量算出部204は、入力画像が割り付け画像で無い場合は、その入力画像、割り付け画像の場合は領域分割部203で分割した領域ごとの画像について、画像特徴量を算出する。
画像検索部205は、画像特徴量算出部204で算出された画像特徴量を検索元とし、既に登録されている画像の画像特徴量との比較を行い、類似画像を検索する。画像検索部205で類似画像が見つかった場合、リンク情報登録部206は、検索元とした画像特徴量の画像が、類似画像と同じ画像であるというリンク情報を登録する。画像検索部205で類似画像が見つからなかった場合は、画像特徴量登録部207は、検索元とした画像特徴量を登録する。記憶部208は、処理中のデータ、各種インデックス、画像ファイル等を記憶するメモリ・HDD等である。なお、これら各構成は、不図示のCPUにより統括的に制御されている。
[登録処理]
図4は、第1の実施形態の画像処理装置における登録処理手順の一例を示すフローチャートである。
まず、ステップS401において、画像入力部201を介して登録対象の画像が入力される。入力された登録対象の画像には、画像IDが割り振られる。第1の実施形態では、一例として、ドキュメントを印刷する際にプリンタドライバでラスタライズした画像を入力とした場合について述べる。入力された画像は、記憶部208に保存される。
ステップS402では、割り付け画像判定部202において、入力した登録対象画像が割り付け画像であるかどうかを判定する。前述のように、ドキュメントを印刷する際のプリンタドライバの設定で、割り付け印刷の指示をすることができる。本実施形態では、入力した画像に付随する、その情報を利用する。ステップS403で、入力画像が割り付け画像でない場合はステップS404へ進み、入力画像を処理対象画像に設定する。入力画像が割り付け画像の場合は、ステップS405で、入力した登録対象画像が、何ページの画像で構成されているのかを示す割り付け数Nを取得する。割り付け数Nも、プリンタドライバで設定した情報を利用する。ただし、プリンタドライバの設定情報を利用する場合に限定するものではなく、プリンタや複合機などの機器の操作情報を利用してもよい。例えば、複合機でコピーする際、2枚の用紙を1枚に割りつけてコピーするようなことも可能であり、そのような情報も利用可能である。
次にステップS406で、領域分割部203において、入力画像をN個の領域に分割する。この分割はあらかじめ定められた分割方法であり、均等サイズの領域に分割する。次にステップS407でN分割した最初の領域の画像を処理対象画像に設定する。ステップS408では、画像特徴量算出部204において、ステップS404又はステップS407で決定した処理対象画像の画像特徴量を抽出する。
図5は、ステップS408における画像特徴量抽出処理手順の一例を示すフローチャートである。第1の実施形態では、画像特徴量として画像の局所的な特徴量(局所特徴量)を用いる。まず、ステップS501で、処理対象の画像から輝度成分を抽出し、抽出した輝度成分に基づいて輝度成分画像を生成する。次にステップS502で、輝度成分画像を倍率(縮小率)pに従って順次縮小することを繰り返し、オリジナルのサイズの画像から段階的に縮小した、オリジナルの画像を含めてn枚の縮小画像を生成する。ここで、倍率p及び縮小画像の枚数nは予め決められているものとする。
図6は、縮小画像生成処理の一例を示す図である。図6に示す例は、倍率pが「2の−(1/4)乗」、縮小画像の枚数nが「9」の場合である。もちろん、倍率pは必ずしも「2の−(1/4)乗」で無くとも良い。図6において、601はステップS501で生成された輝度成分画像である。602は当該輝度成分画像601から倍率pに従って再帰的に4回の縮小処理を行って得られた縮小画像である。そして、603は当該輝度成分画像601から倍率pに従って8回縮小された縮小画像である。
この例では、縮小画像602は輝度成分画像601が1/2に縮小された画像となり、縮小画像603は輝度成分画像601が1/4に縮小された画像となる。尚、画像を縮小する方法は何れの方法でも良く、第1の実施形態では、線形補間による縮小方法により縮小画像を生成するものとする。
次に、ステップS503では、n枚の縮小画像の各々に画像の回転があってもロバスト(robust)に抽出されるような局所的な特徴点(局所特徴点)を抽出する。この局所特徴点の抽出方法として、第1の実施形態では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作用素による特徴点抽出方法に限らず、どのような特徴点抽出方法でも適用可能である。
次に、ステップS504で、ステップS503で抽出された局所特徴点の各々について、画像の回転があっても不変となるように定義された特徴量(局所特徴量)を算出する。この局所特徴量の算出方法として、第1の実施形態では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に関する偏導関数である。
尚、局所特徴量を算出可能な方法であれば、上述したような特徴量算出方法に限らず、どのような特徴量算出方法でも適用可能である。
対象画像のすべての局所特徴点に対する局所特徴量をひとまとめにすることで画像特徴量群を得ることができる。
次に、ステップS505で、ステップS504で抽出した画像特徴量を量子化し、処理対象画像の量子化画像特徴量を生成する。
第1の実施形態で使用している画像特徴量、すなわち、Local Jetおよびそれらの導関数の組み合わせにより各局所特徴点から算出される局所特徴量は、N次元のベクトルである。ここでは、N次元のうちのn番目の次元の特徴量について、Kn階調に量子化を行う。ここで、NおよびKnはあらかじめ決められているものとする。
具体的には以下の式(8)により、量子化を行う。
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は階調数である。
尚、ラベル化可能な算出方法であれば、上述したような算出方法に限らずに、どのようなラベル化方法でも適用可能である。第1の実施形態では、ラベル化値IDXを特徴量IDという。
以上、図4のステップS408の処理内容を説明した。次のステップS409では、画像検索部205において、画像特徴量算出部204で算出された画像特徴量を検索元とし、すでに登録されている画像特徴量との比較を行い、類似画像を検索する。そして、その結果をもとに、リンク情報登録部206、もしくは、画像特徴量登録部207で処理対象画像を登録する。
ここで、ステップS409における画像登録処理手順の一例を、図8のフローチャートを参照して説明する。
まず、ステップS801で、画像検索部205において、ステップS408で算出された画像特徴量を検索元とし、すでに登録されている基準画像の画像特徴量との比較を行い、類似する基準画像を検索する。類似基準画像検索処理では、登録済みの基準画像の画像特徴量との比較が行われ、類似度が算出される。そして、類似度の高い順にソートされた結果が得られる。この類似基準画像検索処理の詳細に関しては、後述する。
ステップS802で、所定類似度以上の検索結果が無い場合は、ステップS803に進み、処理対象画像の画像特徴量を登録する。つまり、処理対象画像を、新たな基準画像の1つとして登録する。
ここで、図9は、画像特徴量をデータベースに登録するときのスキーマ例である。これらは、例であり、違う型のスキーマであっても構わない。
図9(A)は、画像IDと基準画像IDを関連付けるスキーマ例である。ここで、画像IDは登録対象画像に付与されるIDである。また、基準画像IDは、登録対象画像が割り付け画像のとき、ページごとに分割した基準画像それぞれに対して付与されるIDである。登録対象画像が割り付け画像でないときは、登録対象画像に対して基準画像IDが付与される。本スキーマでは、更に、登録される画像のどの領域が基準画像なのかを領域情報として記憶する。領域情報としては、例えば、左上座標、右下座標の画素値を記憶する。基準画像ID、画像IDは、登録される画像の枚数にもよるが、それぞれ8バイトの型を用いて記憶される。領域情報は、2バイトの型の4つの値を用いて記憶される。したがって、1枚の基準画像を登録するにあたり、24バイトの記憶領域を必要とする。ただし、この記憶サイズは、一例であり、この値に限定するものではない。
図9(B)は、特徴量IDと基準画像IDを関連付けるスキーマ例である。ここで、特徴量IDは画像特徴量をラベル化したときのラベル値である。複数の基準画像から、同じ特徴量IDになる画像特徴量が算出されることがあるため、1つの特徴量IDに対し、複数の基準画像IDが関連付けられることがある。本スキーマでは、更に、特徴点の座標の画素値を記憶する。1枚の基準画像から、同じ特徴量IDになる画像特徴量が算出されることがあり、その場合は、それらの特徴点座標をリストとし、そのリスト自体をリストとして保持する。また、画像特徴量の値も記憶する。特徴量ID、基準画像IDは、それぞれ8バイトの型を用いて記憶される。特徴点座標は、2バイトの型の2つの値を用いて記憶される。ここでは128次元の倍精度小数型で表される画像特徴量を想定しており、8バイトの型の128個の値を用いて記憶される。したがって、1点の特徴点を登録するにあたり、約1キロバイトの記憶領域を必要とする。1枚の基準画像から数1000点の特徴点が抽出されることが一般的である。ここで、1枚の基準画像から抽出される特徴点の数を3000点とすると、1枚の基準画像を登録するにあたり、約3メガバイトの記憶領域を必要とする。もちろん、主成分分析等により画像特徴量の次元数を減らしたり、倍精度小数型を用いる代わりに固定小数型を用いたりすることにより、記憶領域を小さくすることは可能である。
図8のフローに戻り、ステップS802で、所定類似度以上の検索結果がある場合は、ステップS804に進む。ステップS804では、処理対象画像と検索結果画像の一致領域を特定する。一致領域特定処理では、図10の例で示すように、処理対象画像における一致領域の包含割合RQと場所、および、検索結果画像における一致領域の包含割合RSと場所が得られる。
図10(A)〜(D)は処理対象画像と検索結果画像との関係を示している。同図(A)乃至(D)の左側の符号100乃至103が処理対象画像の例を示し、右側の符号110乃至113が検索結果画像の例を示してる。各図において、太線の矩形で囲まれた範囲が、一致領域とその場所を示している。点線で一致領域の位置を対応付けて表している。また、各画像の横に記載しているRQで始まる数値(%)が、処理対象画像における一致領域の割合を示し、RSで始まる数値が検索結果画像における一致領域の割合を示している。100%は、一致領域が、該当する画像全体であることを表している。
処理対象画像と検索結果画像の一致領域の関係としては、図10(A)の関係のようにほぼ全面一致している場合、図10(B)の関係のように処理対象画像が検索結果画像を包含している場合がある。また、図10(C)や、図10(D)の関係のように処理対象画像が検索結果画像の一部になっている場合がある。ここで、図10(C)の検索結果画像112は2ページ分を包含しているものであり、本来、ページ単位で登録されるべき画像である。本画像は、登録時のステップS402において、何らかの影響により、割り付け画像と判断されないまま登録されてしまった画像ということになる。この一致領域特定処理の詳細に関しては、後述する。
ステップS805では、処理対象画像における一致領域の包含割合RQと検索結果画像における一致領域の包含割合RSを比較し、ほぼ同じ割合であればステップS806へ進む。ここで、ほぼ同じ割合とは、RQに対し例えば±10%程度のマージンをもたせた範囲内にRSが収まっていることとする。ここで、10%のマージンの値は一例であり、この値は実験により求めるようにしてもよいし、システム管理者が設定できるようにしても良い。RQとRSがほぼ同じ割合のときは、処理対象画像と検索結果画像が同じ画像であると考えることができる。したがって、ステップS806では、処理対象画像から検索結果画像へのリンク情報を登録する。ここでは、新たに画像特徴量を登録するのではなく、すでに登録されている画像特徴量と同じであるという情報のみを登録する。
一例として、処理対象画像の画像IDが5で、検索結果基準画像IDが1であったとする。この場合、図9(A)に示した画像IDと基準画像IDとを管理するテーブルは、図11に示すように更新あれる。すなわち、図11のように、基準画像IDが“1”のレコード中の、「画像ID」フィールドに“5”を挿入(追加)し、領域情報に処理対象画像の一致領域の座標情報を挿入する。1枚の基準画像を登録するにあたって必要な記憶容量は、画像IDの8バイトと領域情報の8バイトの合計16バイトのみである。画像特徴量を登録する場合は、約3メガバイトの記憶領域を必要としていたため、大幅な削減が可能であることがわかる。
ステップS805で、RQとRSの値がほぼ同じでない場合はステップS807へ進む。ステップS807で、RQがRSよりも小さい場合は、ステップS803に進み、処理対象画像の画像特徴量を登録する。RQがRSよりも小さい場合とは、図10(B)のように、処理対象画像が検索結果画像を包含している場合である。
ステップS807で、RQがRSよりも大きい場合は、ステップS808に進む。RQがRSよりも大きい場合は、図10(C)や(D)のように、検索結果画像が処理対象画像を包含している場合である。ここで、図10(C)は、割り付け画像の1ページであり、図10(D)は割り付け画像の1ページではなく、単に検索結果画像の一部分である。ステップS808では、処理対象画像がこれらのどちらであるか、すなわち、検索結果画像が割り付け画像であるかどうかの判定を行う。更に、検索結果画像が割り付け画像である場合は、割り付け数、および、割り付け位置を取得する。
図12は、ステップS808における検索結果画像の割り付け画像判定処理手順の一例を示すフローチャートである。
まず、ステップS1201で、RS/RQの値により割り付け数候補を取得する。ここでは、図3(B)〜(G)で示した、2ページ、4ページ、6ページ、8ページ、9ページ、16ページの割り付け画像を例に説明する。図13は、割り付け画像に関しての情報をまとめた表である。図13の表中の割合は、割り付けることによる各ページの縮小率である。回転は、割り付ける際に90度回転させるかどうかであり、Yesは回転させることを示しており、Noは回転させないことを示している。回転させる場合は、割り付ける画像の向きと、割り付けた画像の向きが90度回転した状態になる。中心x座標、中心y座標は、割り付けたページの中心のx座標、y座標を幅もしくは高さを1としたときの割合で示したものである。中心x座標のうちのいずれか1つと中心y座標のうちのいずれか1つを組み合わせた座標が、割り付けたページの中心座標となる。
ステップS1201では、RS/RQの値が、図13の表の割合とほぼ同じ値の割り付け数を割り付け数候補とする。ここで、ほぼ同じ値とは、図13の表の割合に対し例えば±10%程度のマージンを持たせた範囲内にRS/RQの値が収まっていることとする。ここで、10%のマージンの値は一例であり、この値は実験により求めるようにしてもよい。また、割り付け数ごとにマージンの値を変えるようにしてもよい。この時点では、複数の候補が存在することもある。
次に、ステップS1202で、割り付け数候補が無い場合は、ステップS1203に進み、検索結果画像は割り付け画像ではないと判定する。ステップS1202で、割り付け数候補がある場合は、ステップS1204に進む。
ステップS1204では、処理対象画像と検索結果画像の向き、すなわち、縦長画像であるか横長画像であるか、により割り付け数候補を絞る。画像の向きが同じ場合は、図13の表の回転がNoである割り付け数のみを割り付け数候補に残し、それ以外は割り付け数候補から除く。画像の向きが異なる場合は、図13の表の回転がYesである割り付け数のみを割り付け数候補に残し、それ以外は割り付け数候補から除く。
次に、ステップS1205で、割り付け数候補が無い場合は、ステップS1203に進み、検索結果画像は割り付け画像ではないと判定する。ステップS1205で、割り付け数候補がある場合は、ステップS1206に進む。
ステップS1206では、処理対象画像における一致領域を処理対象画像全体に広げたときの領域に対応する、検索結果画像における領域を求め、その領域の中心座標を取得する。図14の処理対象画像1400の中の細い線1401で囲った領域が一致領域であり、この領域を太い線で囲った画像全体の領域に広げることを考える。そのとき、検索結果画像1410の中の細い線1411で囲った一致領域を、同じ方向に同じ割合だけ広げることで、処理対象画像の全体の領域に対応する検索結果画像の領域を得ることができる。そして、その領域の中心座標を取得する。
ステップS1207では、検索結果画像の領域の中心座標により割り付け数候補を絞る。すなわち、図13の表の中心x座標、および、中心y座標のいずれかが、検索結果画像の領域の中心座標とほぼ同じ値である割り付け数のみを割り付け数候補に残し、それ以外は割り付け数候補から除く。
ステップS1208で、割り付け数候補が無い場合は、ステップS1203に進み、検索結果画像は割り付け画像ではないと判定する。ステップS1208で、割り付け数候補がある場合は、ステップS1209に進み、検索結果画像は割り付け画像であると判定する。更に、ステップS1207において、どの中心x座標、中心y座標とほぼ同じであったかにより、包含位置、すなわち、割り付け位置を取得する。
以上で、ステップS808における検索結果画像の割り付け画像判定処理は終了である。
図8のフローに戻り、ステップS809では、検索結果画像が割り付け画像でない場合は、ステップS803に進み、処理対象画像の画像特徴量を登録する。検索結果画像が割り付け画像の場合は、ステップS810に進み、検索結果画像を割り付け方法に沿って分割した状態で再登録する。
図15は、ステップS810における検索結果画像の分割再登録処理手順の一例を示すフローチャートである。以下、同図に従い、ステップS810の詳細を説明する。まず、ステップS1501で、検索結果画像の割り付け数をKに、登録済みの基準画像IDの最大数をNに代入する。次にステップS1502で、基準画像IDと画像IDとの関連付けテーブルを参照し、検索結果画像の基準画像IDから画像ID、領域情報を取得する。ステップS1503では、割り付け数によってあらかじめ定められている割り付け方法にしたがって、得られた領域情報をK個に分割する。
次に、ステップS1504で、基準画像IDと画像IDとの関連付けテーブルに対し、N+1からN+Kの基準画像IDを追加する。さらに、それらの基準画像IDに対し、ステップS1502で得られた画像IDとステップS1503で得られたK分割した領域情報を関連付けて登録する。ステップS1505では、基準画像IDと画像IDとの関連付けテーブルから、検索結果画像の基準画像IDを削除する。
ステップS1506で、特徴量IDと基準画像IDとの関連付けテーブルを参照し、検索結果画像の基準画像IDの特徴点座標を取得する。次にステップS1507では、ステップS1506で得られた特徴点座標が、K分割した領域のうちどの領域に含まれるのかを求め、対応する基準画像IDを取得する。そして、検索結果画像の基準画像IDを、K分割後の基準画像IDに書き換える。
図8のフローに戻り、ステップS811で、検索結果画像を割り付け分割した複数の画像のうち、処理対象画像から該当する分割画像へのリンク情報を登録する。ステップS811の処理は、ステップS806の処理と同等である。このステップS810、S811の処理により、割り付け画像が何らかの原因で基準画像として一旦は登録されたとしても、その割り付け画像に含まれる1ページの画像が処理対象として入力された場合、割り付け画像に含まれていた各ページが、基準画像として再登録されることになる。
ここで、ステップS810およびS811の処理を具体例を用いて説明する。図9の状態から追加登録する場合について説明する。ここでは、処理対象画像と検索結果画像との関係が図10(C)であったとする。そして、処理対象画像の画像IDは5とし、検索結果画像の画像IDは4とする。図10(C)に示すように、検索結果画像は2ページの割り付け画像であり、その左側半分が処理対象画像と一致している。検索結果画像に対しては1枚の基準画像(基準画像IDは5)が登録されていたので、これを2枚の基準画像として登録しなおす。登録済みの最大基準画像IDは5だったとすると、左側ページを基準画像IDの6、右側ページを基準画像IDの7として登録する。図16(A),(B)に分割再登録後の各テーブルの状態を示す。
図16(A)の基準画像IDと画像IDとの関連付けに対しては、基準画像IDの6と7を追加し、基準画像IDの5に登録されていた画像IDの4を挿入する。更に、基準画像IDが6の行に対しては基準画像IDの5に登録されていた画像IDが4の領域情報の左側の領域情報を、基準画像IDが7の行に対しては右側の領域情報を、それぞれの領域情報として挿入する。基準画像IDが5の行については、削除する。さらに、処理対象画像のリンク情報を追加する。すなわち、基準画像IDが6の行の画像IDに5を挿入し、領域情報に処理対象画像の座標情報を挿入する。
図16(B)の特徴量IDと基準画像IDとの関連付けに対しては、基準画像IDの5が登録されている特徴量IDを検索する。図9(B)から、特徴量IDの1と4が取得される。そして、それらの特徴点の座標情報を取得する。特徴量IDの1に登録されている特徴点の座標は、検索結果画像の左側ページ内に存在する点であることがわかるので、基準画像IDを5から6に変更する。特徴量IDの4に登録されている特徴点の座標は、検索結果画像の右側ページ内に存在する点であることがわかるので、基準画像IDを5から7に変更する。
以上で、図4のステップS409における画像登録処理は終了である。次に、図4のフローに戻り、ステップS410にて、入力画像が割り付け画像でない場合は、第1の実施形態の登録処理を終了する。入力画像が割り付け画像の場合は、ステップS411に進む。
ステップS411ですべての画像の処理が終了した場合は、第1の実施形態の画像登録処理を終了する。すべての画像の処理が終了していない場合は、ステップS412で次の領域の画像を処理対象画像に設定し、ステップS408以降の処理を繰り返す。
[類似基準画像検索処理]
ここで、図8のステップS801の類似基準画像検索処理の詳細について、図17のフローチャートを用いて説明する。ここで説明する検索処理方式は、投票方式ともいわれる方式である。
まず、ステップS1701で、登録されている基準画像数分の投票箱を用意する。技術的には、RAM上に、各基準画像用の投票数を格納するための変数を確保する処理である。
次に、ステップS1702で、すべての投票箱の投票数を0でリセットする。ステップS1703では、カウンタkを1でリセットする。ステップS1704では、処理対象画像のk番目の特徴量IDを取得し、ステップS1705で特徴量IDのkに登録されている基準画像IDリストを取得する。ステップS1706で、基準画像IDリスト中のすべての基準画像IDの投票箱に、投票を行う。投票を行う際の投票数は、常に1にしてもよいし、特徴量の類似度をもとにした投票数にしてもよい。また、特徴点の座標をもとにした投票数にしてもよい。
ステップS1707で、カウンタkに1を加える(インクリメント)。ステップS1708で、カウンタkが処理対象画像の特徴点数以下である場合はステップS1704に戻り、特徴点数を超えた場合はステップS1709に進む。最後に、ステップS1709で、投票数の多い順にソートする。
なお、特徴量を量子化した際に、特徴量は類似していても、量子化値が異なる場合がある。その場合は、特徴量IDが異なってしまう。その対策として、ステップS1705において、特徴量IDのkに登録されている基準画像IDリストを取得するだけでなく、特徴量IDのkと類似度が高い特徴量IDに登録されている基準画像IDも取得する。そして、ステップS1706で、それらすべての基準画像IDに投票するという方式が採られることもある。
[一致領域特定処理]
ここで、図8のステップS804の一致領域特定処理の詳細について、図18のフローチャートを用いて説明する。
まず、ステップS1801で、比較元画像の特徴点に対して最も特徴量間距離が短い比較先画像の特徴点を対応点とし、それらのリストを最短距離対応点リストとして作成する。具体的には、比較元画像のある特徴点の特徴量と比較先画像のすべての特徴量との特徴量間距離を計算する。その中で、最も短い距離が閾値Tv以内であれば、比較先画像の特徴点IDと最も近い距離になった比較先画像の特徴点IDとを最短距離対応点とし、最短距離対応点リストに登録する。その際、それらの特徴点の座標、特徴量間距離も合わせて登録する。比較元画像のすべての特徴点に対してこの処理を行うことにより、最短距離対応点リストが作成できる。最短距離対応点リストのスキーマは、例えば図19のように、比較元画像の特徴点IDとその座標、比較先画像の特徴点IDとその座標からなる。ただし、必ずしも1つのスキーマにこれらの項目がある必要はなく、複数のスキーマの結合により、これらの情報が得られれば良い。
これ以降、最短距離対応点リストにはm組の最短距離対応点が登録されたとして説明する。また、最短距離対応点リストに登録されたk番目の対応点について、比較元画像、比較先画像の特徴点IDをそれぞれQk、Skと表し、それらの特徴点座標をそれぞれ(x’k,y’k)、(xk,yk)と表す。
次に、ステップS1802では、ステップS1801で作成された最短距離対応点リストの中から、実際の画像上で正しい対応点と推測される対応点のみを選別し、正対応点リストを作成する。1枚の画像の中には、類似する特徴量も存在する。したがって、特徴量間距離が最短であるというだけで対応付けた対応点、すなわち、ステップS1801で作成された対応点の中には、実際の画像上では正しく対応した点ではない点が含まれる。本処理では、複数の特徴点の位置関係を用いることにより、正しい対応点と推測される対応点を選別する。
図20は、ステップS1802における正対応点リストの作成処理手順の一例を示すフローチャートである。ここで説明する方式は、RANSAC(RANdom SAmple Consensus)といわれる方式である。
まず、ステップS2001で、最終投票数を表す変数VoteMaxを0に初期化する。次に、ステップS2002で、類似度算出処理の反復カウント数を表す変数Countを0に初期化する。
ステップS2003で、反復カウント数Countが最大反復処理回数Rnを超えていない場合はステップS2004へ進み、投票数を表す変数Voteを0に初期化する。次に、ステップS2005で、当該最短距離対応点リストから対応点の組をランダムに2組抽出する。ここでは、最短距離対応点リストのi番目の対応点とj番目の対応点を抽出した場合を説明する。i番目の対応点の特徴点IDは、QiとSiであり、それらの座標はそれぞれ(x’ i,y’ i)、(xi,yi)である。また、j番目の対応点の特徴点IDは、QjとSjであり、それらの座標はそれぞれ(x’ j,y’ j)、(xj,yj)である。
次に、ステップS2006で、抽出したQi(x’i,y’ i)、Si(xi,yi)及びQj(x’j,y’j)、Sj(xj,yj)が式(11)に示す変換を満たしていると仮定し、式(11)中の変数a〜fを求める。
ただし、図20に示すステップS2006では、変数a〜dで構成される行列をMで示し、変数e〜fで構成される行列をTで示している。
ここで、第1の実施形態では、簡略化のため、相似変換だけを考える。このとき、上記式(11)は以下の式(12)のように書き換えられる。
このとき、変数a、b、e、fはx’i、y’i、xi、yi、x’j、y’j、xj、yjを使って式(13)から式(16)で表される。
次に、ステップS2007で、対応点選択変数kを1で初期化する。ステップS2008では、上述のステップS2005で当該最短距離対応点リストからランダムに抽出された2組の点以外の点を選択するために、kがiでもjでもないかを判定する。kがiかjのときは、ステップS2015に進み、kをインクリメントした後、ステップS2008に戻る。kがiでもjでもないときは、ステップS2009に進み、対応点選択変数kが当該最短距離対応点リストに登録されている対応点の組数mを超えていないかを判定する。ここで、超えている場合はステップS2016へ処理を移すが、これについては後述する。ステップS2009における判定で対応点選択変数kが当該最短距離対応点リストに登録されている対応点の組数mを超えていない場合はステップS2010へ処理を移す。このステップS2010では、上述のステップS2006で当該最短距離対応点リストからランダムに抽出した2組の点Si及びSj以外の点を当該最短距離対応点リストから抽出する。第一の実施形態では、抽出された点をSkとし、Skの座標は(xk,yk)とする。
次にステップS2011で、Skの座標(xk,yk)が式(12)を使って移される点S’kの座標(uk,vk)を求める。
その後、ステップS2012では、S’kの座標(uk,vk)とQkの座標(x’k,y’k)との幾何学的距離をユークリッド距離で計算し、当該ユークリッド距離がしきい値Td以下であるか否かを判定する。当該ユークリッド距離がしきい値Td以下の場合はステップS2013へ進み2つの画像の対応点情報を仮正対応点リストに記憶し、ステップS2014で投票数Voteをインクリメントし、ステップS2015へ処理を移す。また、当該ユークリッド距離がしきい値Tdより大きい場合は、何もせずにステップS2015へ処理を移す。このステップS2015では、対応点選択変数kをインクリメントし、ステップS2008に戻り、対応点選択変数kが当該最短距離対応点リストに登録されている対応点の組数mを超えるまで、上述の処理を繰り返す。
次に、ステップS2009で、対応点選択変数kが当該最短距離対応点リストに登録されている対応点の組数mを超えた場合の処理であるステップS2016を説明する。ステップS2016では、投票数Voteの値と最終投票数VoteMaxの値とを比較し、投票数Voteの値が最終投票数VoteMaxの値よりも大きい場合にはステップS2017へ処理を移す。このステップS2017では、最終投票数VoteMaxの値を投票数Voteの値で置き換え、次のステップS2018で、正対応点リストを仮正対応点リストで置き換える。その後、ステップS2019で反復カウント数Countをインクリメントし、上述のステップS2003に処理を戻す。
また、ステップS2016で、投票数Voteの値が最終投票数VoteMaxの値以下の場合にはステップS2019へ処理を移し、反復カウント数Countをインクリメントし、上述のステップS2003に処理を戻す。
次に、ステップS2003で、反復カウント数Countが予め定められた最大反復処理回数Rnを超えている場合はステップS2020へ進み、最終投票数VoteMax、正対応点リストを出力し、この処理を終了する。
尚、第1の実施形態における類似度の算出方法の説明では、相似変換だけを考えて説明したが、アフィン変換などその他の幾何学変換についても、ステップS2006でそれぞれに応じた変換行列を求めることにより、対応可能である。例えば、アフィン変換の場合には、まずステップS2005で、ランダムに選択する対応点の組の座標数を3とする。次に、ステップS2006で、式(12)ではなく式(11)を使うこととし、ステップS2005で選択した3組の対応点(合計6点)を使って変数a〜fを求めれば良い。
以上で、図18のステップS1802における正対応点リスト作成処理は終了である。次に図18のフローに戻り、ステップS1803で、正対応点リストの特徴点の座標をもとに、処理対象画像、および、検索結果画像の最外接矩形を求める。正対応点リストの各特徴点のx座標、y座標それぞれの最小値、最大値を求める。(x座標の最小値,y座標の最小値)と(x座標の最大値,y座標の最大値)の2点で囲まれた矩形を最外接矩形とする。
次に、ステップS1804で、最外接矩形の面積を画像全面の面積で割ることにより、処理対象画像における一致領域の包含割合RQ、および、検索結果画像における一致領域の包含割合RSを求める。
[検索処理]
図21は、第1の実施形態の画像処理装置における検索処理手順の一例を示すフローチャートである。
まず、ステップS2101において、画像入力部201を介して検索元画像(クエリ画像)が入力される。ステップS2102では、画像特徴量算出部204において、検索元画像の画像特徴量を抽出する。ステップS2102の画像特徴量抽出処理は、図4のステップ308における処理と同じである。
次に、ステップS2103で、画像検索部205において、ステップS2102で算出された画像特徴量を検索元とし、すでに登録されている基準画像の画像特徴量との比較を行い、類似する基準画像を検索する。ステップS2103の類似基準画像検索処理は、図8のステップS801における処理と同じである。類似基準画像検索処理では、登録済みの基準画像の画像特徴量との比較が行われ、類似度が算出される。そして、類似度の高い順にソートされた結果が得られる。
次に、ステップS2104で、画像検索部205において、ステップS2103で検索された基準画像IDに対応した画像IDを取得する。図9(A)や図11、図16(A)に示すように、基準画像IDに対して、複数の画像IDが関連付けられて登録されており、基準画像IDに対応した画像IDをすべて取得する。
最後に、ステップS2105において、ステップS2104で取得した画像を類似度とともに表示する。
上記例では、基準画像に対応する画像の類似度を同じ値で表示しているが、領域情報をもとに、類似度を調整してもよい。例えば、ステップS2103で検索された基準画像IDに対して登録されている画像IDを取得する際、領域情報をもとに、該画像IDの画像における基準画像の包含割合を求める。そして、包含割合をもとに類似度の調整を行い、再度類似度でソートした結果を検索結果として出力するようにしてもよい。また、基準画像ごとに特徴点数を記憶しておき、その特徴点数をもとに、類似度の調整を行うようにしてもよい。
また、上記例では、検索結果として検索結果画像と類似度を表示するとしているが、領域情報をもとに、どの領域が検索元画像と同じ領域であったかを表示するようにしてもよい。
以上のように第1の実施形態では、登録する画像が割り付け画像であるかどうかを判定し、割り付け画像の場合は、割りつけられた元の画像(基準画像)ごとに登録するようにした。その際、登録する基準画像がすでに登録されている基準画像と類似する場合は、すでに登録されている基準画像へのリンク情報を登録するようにした。これにより、同じ画像を複数回登録する場合に、検索結果に影響を与えずに、少ない記憶領域で登録することが可能となる。また、割り付け枚数の異なる画像同士であっても、ページ単位のリンク情報で登録することにより、少ない記憶領域で登録することが可能となる。
[第2の実施形態]
以下、第2の実施形態を説明する。上記の第1の実施形態では、画像登録時の処理である図4のステップS402において、プリンタドライバの設定情報や、プリンタや複合機などの機器の操作情報をもとに、入力画像の割り付け画像判定を行った。第2の実施形態では、入力された画像を解析(像域分離)することにより、割り付け画像判定を行う例を説明する。
図22は、第2の実施形態の画像処理装置における入力画像の割り付け画像判定処理手順の一例を示すフローチャートである。
まず、ステップS2201で、入力画像を解析し、像域分離処理(又は、矩形領域決定処理)を行う。像域分離処理とは、例えば、図23における画像2301を2302に示すように、意味のある領域毎の塊として認識する。そして、該領域各々の属性(テキスト(TEXT)/図画(PICTURE)/写真(PHOTO)/線(LINE)/表(TABLE)等)を判定し、異なる属性を持つ領域に分割する処理である。
ここで、像域分離処理の一実施例について詳細に説明する。まず、入力画像を白黒画像に2値化し、これで得られる2値画像中の輪郭線追跡を行って黒画素輪郭で囲まれる画素が連続する塊を抽出する。そして、面積の大きい黒画素の塊については、内部にある白画素に対しても輪郭線追跡を行って白画素の塊を抽出し、さらに一定面積以上の白画素の塊の内部からは再帰的に黒画素の塊を抽出する。
このようにして得られた黒画素の塊に外接する矩形領域を、その大きさ及び形状で分類し、異なる属性を持つ領域へ分類する。例えば、縦横比が1に近く、大きさが一定の範囲の領域は文字相当の画素塊とし、近接する文字が整列している場合にはそれらを連結してグループ化し、そのグループ化した矩形領域をテキスト領域とする。文字領域意外の画素塊について、扁平な画素塊を線領域、一定大きさ以上でかつ矩形の白画素塊を整列よく内包する黒画素塊の占める範囲を表領域、不定形の画素塊が散在している領域を写真領域、それ以外の任意形状の画素塊を図画領域とする。
次にステップS2202で、像域分離した領域をもとに、割り付け数候補を求める。まず、あらかじめ定められている分割方法で入力画像を分割できるか考える。図24で一例を示す。図24(A)は、像域分離した状態の図である。図24(B)〜(G)は、それぞれ順番に、画像を2〜16分割した分割位置を破線(2501等)で示した図であり、これらの情報は予めハードディスクなどの記憶装置に記憶されているものとする。ここでは、この線のことを、分割線(ページ境界位置でもある)という。このとき、像域分離した領域が、分割線をまたいでいるかどうか(ページを跨いでいるかどうか)を調べる。この図により、同図(B)、(C)は領域が分割線をまたいでいないことがわかる。また、同図(D)〜(G)は領域が分割線をまたいでいることがわかる。したがって、この例では、{2、4}を割り付け数の候補とする。
次に、ステップS2203で、割り付け数候補が無い場合は、ステップS2204に進み、割り付け画像ではないと判定し、処理を終了する。ステップS2203で、割り付け数候補がある場合は、ステップS2205に進み、割り付け画像であると判定する。そして、ステップS2206で、割り付け数候補のうち最大の数を割り付け数とし、処理を終了する。上記の例の場合、割り付け数候補が{2、4}であったので、大きい方の「4」が最終的な割り付け数であると判定する。
以上のように第2の実施形態では、入力された画像を解析(像域分離)することにより、処理対象画像に含まれるページ数判定が可能となる。これにより、プリンタドライバの設定情報や、機器の操作情報が無い場合であっても、入力画像の割り付け画像判定を行うことができ、基準画像ごとの登録が可能となる。
[第3の実施形態]
以下、第3の実施形態を説明する。上記第1、第2の実施形態では、入力画像として、文書画像の割り付け画像を想定している。第3の実施形態は、割り付け画像ではなく、1ページ文書に複数の画像が貼り付けられている画像が入力されたときの例である。ここでいう画像とは、自然画のみを対象としてもよいし、ドローや線画なども対象としてもよい。また、テキストの画像も対象としてもよい。この場合は、貼り付けられている画像ごとに登録を行う。
図25は、第3の実施形態の画像処理装置における登録処理手順の一例を示すフローチャートである。本フローは、図4のフローと類似しており、図4のフローと同じ処理を行う箇所については、同じステップ番号を振っている。ここでは、処理の異なる箇所のみの説明を行う。
ステップS2502では、入力画像の像域分離処理を行う。像域分離処理は、図22のステップS2201と同じである。ステップS2503、および、ステップS2510は、複数の領域があると判定されたか否かで分岐を行う。ステップS2505は領域数Nを取得し、ステップS2506で領域分割を行う。ここでいう領域分割は、ステップS2502で求められた領域を抽出する処理を行う。ステップS2509では、処理対象画像の登録処理を行う。
図26は、ステップS2509における画像登録処理手順の一例を示すフローチャートである。本フローは、図8のフローを類似しており、図8のフローと同じ処理を行う箇所については、同じステップ番号を振っている。ここでは、処理の異なる箇所のみの説明を行う。
ステップS2605で、処理対象画像における一致領域の包含割合RQと検索結果画像における一致領域の包含割合RSを比較し、ほぼ同じではない、と判定された場合、ステップS803に進み、処理対象画像の画像特徴量を登録する。図8のステップS807〜S811相当の処理は行わない。
以上のように第3の実施形態では、1ページ文書に複数の画像が貼り付けられている場合、貼り付けられている画像(基準画像)ごとに登録を行うようにした。その際、登録する基準画像がすでに登録されている基準画像と類似する場合は、すでに登録されている基準画像へのリンク情報を登録するようにした。これにより、同じ画像が異なる文書に貼り付けられている場合であっても、画像単位のリンク情報で登録することにより、少ない記憶領域で登録することが可能となる。
(その他の実施形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。