以下、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態に係る画像処理システムの構成例および処理例を示す図である。図1に示す画像処理システム1−1は、記憶部1a、演算部1bおよび判定部1cを有する。記憶部1aは、例えば、RAM(Random Access Memory)、HDD(Hard Disk Drive)などの記憶装置として実現される。演算部1bおよび判定部1cは、例えば、プロセッサとして実現される。
記憶部1aは、画像10a、10bを記憶する。画像10a、10bは、それぞれ特徴領域を複数有する。図1では、画像10aが有する特徴領域10a−1と、画像10bが有する特徴領域10b−1とを例示している。画像10a、10bに設定される特徴領域には、複数の画素ペアが共通に設定されている。例えば、特徴領域には、画素ペア11a〜11dが設定されている。
また、記憶部1aはさらに、画素ペアを第1群と第2群とに分類するための分類情報を記憶する。この分類は、後述する第1の特徴量および第2の特徴量に基づく距離計算に対する画素ペアの有効度に応じて行われる。ここでは例として、有効度の高いn組の画素ペアが第1群に分類され、それ以外の画素ペアが第2群に分類されるものとする。
図1では、分類情報の例として有効度そのものが記憶部1aに記憶されている。図1では一例として、各画素ペアの第1画素および第2画素の各座標が登録された画素ペア管理テーブル12に、有効度が登録されている。また、画素ペア管理テーブル12では、有効度の高い順に画素ペアが登録されているものとする。図1の例では、画素ペア11a〜11dの有効度はそれぞれd1〜d4であり、d1>d2>d3>d4であるとする。そして、例としてn=3とされ、画素ペア11a〜11cが第1群に分類され、画素ペア11dが第2群に分類されるものとする。
演算部1bは、記憶部1aに記憶された画像10a、10bから特徴量を算出する。特徴量は、画像内の特徴領域ごとに、画素ペアについて算出された画素間の輝度差に基づく特徴量の集合であり、例えば、特徴領域ごとの特徴量を保持するテーブル情報として記憶部1aに記憶される。
演算部1bは、記憶部1aに記憶された画像10a、10bの特徴領域内の画素ペアについて、画素間の輝度差と第1の閾値との比較に基づく第1の特徴量を算出する。また、演算部1bは、記憶部1aに記憶された画像10a、10bの特徴領域内の画素ペアについて、画素間の輝度差の絶対値と第2の閾値との比較に基づく第2の特徴量を算出する。
例えば、特徴領域10a−1の画素ペア11aについては、特徴領域10a−1における第1画素(s1,t1)の輝度と第2画素(u1,v1)の輝度との差分と、第1の閾値との比較に基づいて第1の特徴量が算出される。また、特徴領域10a−1における第1画素(s1,t1)の輝度と第2画素(u1,v1)の輝度との差分の絶対値と、第2の閾値との比較に基づいて第2の特徴量が算出される。なお、第1の閾値としては、0を含む任意の整数が設定される。また、第2の閾値としては、−1以上の任意の整数が設定される。第1の閾値と第2の閾値とが同じ値であってもよい。
画素ペアごとの第1の特徴量および第2の特徴量は、例えばビット値として算出される。ここでは、第1の特徴量は、輝度差が第1の閾値より大きい場合に1に設定され、第1の閾値以下の場合に0に設定されるものとする。また、第2の特徴量は、輝度差の絶対値が第2の閾値より大きい場合に1に設定され、第2の閾値以下の場合に0に設定されるものとする。
演算部1bは、このような各特徴量の算出処理を画素ペア管理テーブル12の上位から順に行って、各画素ペアについての第1の特徴量と第2の特徴量を算出する。その結果、特徴領域ごとの特徴量は、画素ペア数と同じビット数を有するビット列として表される。また、このビット列では、上位ビットほど有効度の高い画素ペアに対応している。図1の例では、特徴領域10a−1についての第1、第2の特徴量として、それぞれビット列13a−1、13a−2が算出されている。また、特徴領域10b−1についての第1、第2の特徴量として、それぞれビット列13b−1、13b−2が算出されている。
判定部1cは、画像10aの特徴領域についての第1の特徴量および第2の特徴量と、画像10bの特徴領域についての第1の特徴量および第2の特徴量とを用いて、画像10bの中に画像10aに類似する領域が含まれるか否かの判定処理を行う。この判定処理には、画像10aの特徴領域と画像10bの特徴領域との類似度を判定する処理が含まれる。この類似度の判定精度が向上することにより、画像10bの中に画像10aに類似する領域が含まれるか否かの判定が向上する。以下、特徴領域10a−1と特徴領域10b−1との類似度15の判定処理について説明する。
判定部1cは、特徴領域10a−1に設定された画素ペアのうち第1群に含まれる第1の画素ペア群(画素ペア11a〜11c)の特徴量と、特徴領域10b−1に設定された画素ペアのうち第1群に含まれる第2の画素ペア群(画素ペア11a〜11c)の特徴量との間の距離14aを、第1の特徴量および第2の特徴量に基づいて算出する。このとき算出に使用される第1、第2の特徴量は、第1、第2の画素ペア群に対応する特徴量である。図1の例では、距離14aは、ビット列13a−1、13a−2、13b−1、13b−2のうち、最上位ビットからnビット目までのビット列に基づいて算出される。
また、判定部1cは、特徴領域10a−1に設定された画素ペアのうち第2群に含まれる第3の画素ペア群(画素ペア11dを少なくとも含む)の特徴量と、特徴領域10b−1に設定された画素ペアのうち第2群に含まれる第4の画素ペア群(画素ペア11dを少なくとも含む)の特徴量との間の距離14bを、第1の特徴量に基づいて算出する。このとき算出に使用される第1の特徴量は、第3、第4の画素ペア群に対応する特徴量である。図1の例では、距離14bは、ビット列13a−1、13b−1のうち、n−1ビット目から最下位ビットまでのビット列に基づいて算出される。
判定部1cは、距離14a、14bに基づいて、特徴領域10a−1と特徴領域10b−1との類似度15を判定する。ここで、距離14aは、特徴領域10a−1における第1群に含まれる第1の画素ペア群と、特徴領域10b−1における第1群に含まれる第2の画素ペア群との類似性を表す。距離14aが小さいほど類似度が高い。また、距離14bは、特徴領域10a−1における第2群に含まれる第3の画素ペア群と、特徴領域10b−1における第2群に含まれる第4の画素ペア群との類似性を表す。距離14bが小さいほど類似度が高い。従って、類似度15は、例えば、距離14aと距離14bとの加算値の逆数として求められる。
ここで、第1の特徴量、すなわちビット列13a−1、13b−1のビット値と、第2の特徴量、すなわちビット列13a−2、13b−2のビット値との両方に基づく距離計算では、使用される情報量の多さから、第1の特徴量だけに基づく距離計算より類似度の判定精度が高い。その反面、処理負荷が高く、類似度の判定処理にかかる時間は長い。これに対して、判定部1cによる上記処理では、特徴領域に設定された画素ペアのうち、第1群に分類された画素ペアについてのみ、画素ペア群間の特徴量の距離計算の際に第2の特徴量が使用される。このように、第1の特徴量と第2の特徴量の両方を用いた距離計算が、限定された画素ペアについてのみ実行されることで、類似度の判定精度を大きく低下させずに処理負荷を軽減し、類似判定処理にかかる時間を短縮することができる。
[第2の実施の形態]
次に、第2の実施の形態として、複数の撮像画像の中から参照画像(以下、「キー画像」と呼ぶ)が選択され、キー画像以外の撮像画像からキー画像と類似するシーンの撮像画像を検索する画像処理装置について説明する。なお、第2の実施の形態では、画像の特徴量としてBRIEFをベースとした特徴量を用いるが、例えば、ORB(Oriented Fast and Rotated BRIEF)、BRISK(Binary Robust Invariant Scalable Keypoints)など、特徴点付近に設定した画素ペア間の輝度差を2値化することで得られる他の種類のバイナリ特徴量をベースとすることもできる。
図2は、第2の実施の形態に係る画像処理装置のハードウェア構成例を示す図である。第2の実施の形態に係る画像処理装置100は、例えば、図2に示すようなコンピュータとして実現される。
画像処理装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
プロセッサ101には、バス108を介して、RAM102と複数の周辺機器が接続されている。
RAM102は、画像処理装置100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
バス108に接続されている周辺機器としては、HDD103、グラフィック処理装置104、入力インタフェース105、読み取り装置106および通信インタフェース107がある。
HDD103は、画像処理装置100の補助記憶装置として使用される。HDD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
グラフィック処理装置104には、表示装置104aが接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像を表示装置104aに表示させる。表示装置としては、液晶ディスプレイや有機EL(Electroluminescence)ディスプレイなどがある。
入力インタフェース105には、入力装置105aが接続されている。入力インタフェース105は、入力装置105aから出力される信号をプロセッサ101に送信する。入力装置105aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
読み取り装置106には、可搬型記録媒体106aが脱着される。読み取り装置106は、可搬型記録媒体106aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体106aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
通信インタフェース107は、ネットワーク107aを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、画像処理装置100の処理機能を実現することができる。
上記の画像処理装置100の記憶装置(例えば、HDD103)には、複数の撮像画像のデータが記憶される。これらの撮像画像は、撮像装置によって撮像された画像である。これらの撮像画像のデータは、例えば、可搬型記録媒体106aを用いて画像処理装置100の記憶装置に格納されてもよいし、あるいは、ネットワーク107aを介して画像処理装置100の記憶装置に格納されてもよい。
画像処理装置100では、例えば、写真管理ソフトウェアが実行されることで次のような処理が行われる。ユーザの入力操作により、記憶装置内の複数の撮像画像からキー画像が選択される。すると、画像処理装置100は、記憶装置内の複数の撮像画像のうちキー画像を除く撮像画像(以下、「対象画像」と呼ぶ)から、キー画像と類似するシーンの撮像画像を抽出する。例えば、キー画像に含まれる対象物と同じ対象物が写っていると推定される対象画像が、キー画像と類似するシーンの撮像画像として抽出される。これにより、ユーザは、例えば、素材として必要な画像を画像処理装置100内から検索したり、同じイベントの開催時の写真を集めて自動的に整理することができる。従って、ユーザに利便性や娯楽性を提供することができる。
このような画像処理装置100は、例えば、パーソナルコンピュータ、スマートフォンなどのユーザによって操作される端末装置として実現される。また、画像処理装置100は、ネットワーク上のサーバ装置として実現されてもよい。この場合、撮像画像のデータは、例えば、ユーザの端末装置からネットワークを介して画像処理装置100にアップロードされる。
なお、画像処理装置100の画像検索機能は、上記のような撮像画像の管理の他、例えば、プレゼンテーション資料などの文書コンテンツの管理に利用することもできる。例えば、画像処理装置100の記憶装置に複数の文書のデータが記憶され、これらの中からキー文書が選択される。画像処理装置100は、例えば、文書表示時の見た目がキー文書と似ている文を含む文書をその他の文書の中から抽出することもできるし、あるいは、キー文書と同じ画像や表、グラフなどを含む文書をその他の文書の中から抽出することもできる。これにより、文書を探すための作業時間を低減できる。また、過去の文書資産の再利用が推進され、業務の効率化を図ることもできる。
また、画像処理装置100の画像認識機能は、医療画像管理システムの付加機能として利用することもできる。例えば、複数の時期に撮影されたCT(Computed Tomography)画像や、MRI(Magnetic Resonance Imaging)画像上の患部を自動的に位置合わせして、患部の画像の経時変化を判断するために利用できる。
図3は、画像処理装置が備える処理機能の構成例を示すブロック図である。画像処理装置100は、記憶部110、画像取得部121、特徴量算出部122、画像認識部123、有効度決定部124および結果出力部125を有する。
記憶部110は、画像処理装置100が備える記憶装置(例えば、RAM102またはHDD103)の記憶領域として実装される。記憶部110には、画像データ111、画素ペア管理テーブル112および特徴量管理テーブル113が記憶される。
画像データ111は、撮像画像によって撮像された撮像画像のデータを示す。記憶部110には、画像データ111が複数記憶される。画素ペア管理テーブル112には、輝度差特徴量および絶対値特徴量を算出するために利用される画素ペアの座標と、有効度とが登録される。特徴量管理テーブル113は、撮像画像ごとに用意される。特徴量管理テーブル113には、撮像画像内の特徴点ごとの輝度差特徴量と、絶対値特徴量とが登録される。
画像取得部121、特徴量算出部122、画像認識部123、有効度決定部124および結果出力部125の処理は、例えば、所定のプログラムがプロセッサ101に実行されることによって実現される。
画像取得部121は、撮像画像の画像データ111を取得して記憶部110に格納する。例えば、画像取得部121は、撮像画像の画像データ111を可搬型記録媒体106aを介して、あるいはネットワーク107aを介して取得する。
特徴量算出部122は、画像データ111および画素ペア管理テーブル112を参照しながら、撮像画像内の各特徴点についての輝度差特徴量および絶対値特徴量を算出し、算出した輝度差特徴量および絶対値特徴量を特徴量管理テーブル113に登録する。
画像認識部123は、特徴量管理テーブル113を参照しながら、キー画像の選択操作を受け付け、選択されたキー画像以外の撮像画像の中からキー画像と類似する類似画像を検索する。後述するように、類似画像の検索処理には、キー画像内の特徴領域の特徴量と対象画像の特徴領域の特徴量との間の距離計算が含まれる。この距離計算としては、輝度差特徴量に基づく距離計算と、輝度差特徴量および絶対値特徴量の組合せに基づく距離計算とが併用される。なお、以下の説明では、後者を「絶対値特徴量に基づく距離計算」と記載する場合がある。
有効度決定部124は、特徴領域に設定される画素ペアの座標の空間的配置、または画素ペアの輝度差の統計情報に基づいて、絶対値特徴量に基づく距離計算が有効な画素ペアと、有効でない画素ペアとを分類するための数値化した有効度を決定する。結果出力部125は、画像認識部123により検索されたキー画像と類似する類似画像を、検索結果として出力する。
<特徴量算出処理>
次に、特徴量算出部122による特徴量算出処理について詳しく説明する。
特徴量算出部122は、撮像画像上に特徴点を設定する。特徴点は、各撮像画像で共通に設定される。本実施の形態では例として、撮像画像上に等間隔(例えば、24画素間隔)で特徴点を設定するDense Samplingを用いる。そして、特徴量算出部122は、各撮像画像の各特徴点についての輝度差特徴量および絶対値特徴量を算出する。
輝度差特徴量および絶対値特徴量は、各特徴点を中心とする一定領域(以下、「特徴領域」と呼ぶ)ごとに算出される。特徴領域は、例えば、特徴点を中心とする48画素四方の矩形領域とされる。また、特徴領域の内部には、複数の画素ペアがあらかじめ設定される。ある特徴点の特徴量は、対応する特徴領域内の各画素ペアの輝度差に基づく符号を組み合わせて構成されたビット列として算出される。
図4は、画素ペア管理テーブルの構成例を示す図である。図4に示すように、画素ペア管理テーブル112には、画素ペアを識別するためのIDと、画素ペアを構成する第1画素(s,t)および第2画素(u,v)の各座標と、絶対値特徴量に基づく距離計算の有効度とが登録される。
画素ペア管理テーブル112には、まず、画素ペアを構成する第1画素(s,t)および第2画素(u,v)の各座標が登録される。その後、各画素ペアに対して有効度が登録されると、各画素ペアのレコードは有効度の高い順にソートされ、先頭レコードから若いID番号が付される。画素ペア管理テーブル112に登録された画素ペアの情報は、すべての特徴領域に対して共通に適用される。
次に、特徴量の算出処理について説明する。まず、図5を用いて、BRIEFの算出処理を比較例として説明し、その後、図6、図7を用いて、本実施の形態で適用される輝度差特徴量および絶対値特徴量について説明する。
図5は、比較例として、BRIEFを算出する処理の例を示す図である。BRIEFは、特徴領域内の各画素ペアに対応するビットを含むビット列として表される。各ビットは、画素ペアの輝度差の符号(正負)に基づいて決定される。なお、ここでは、特徴量算出部122によってBRIEFが算出されるものとして説明する。
例えば、特徴量算出部122は、特徴点201に対応する特徴領域202について、各画素ペアの輝度差を計算する(ステップS11)。画素ペアの輝度差は、例えば、画素ペア管理テーブル112における第1画素の輝度値から第2画素の輝度値を減算することで得られる。
特徴量算出部122は、算出された輝度差の符号に応じたビット値を組み合わせることでビット列203−1を生成する(ステップS12)。例えば、輝度差が正値の場合にはビット値を“1”(または“0”)とし、輝度差が0以下の場合にはビット値を“0”(または“1”)とする。特徴量算出部122は、画素ペア順にビット値を決定してビット列に付加する。例えば、M組の画素ペアが設定されている場合、Mビットのビット列が生成される。特徴量算出部122は、生成されたビット列203−1を、特徴点201の局所特徴量(BRIEF)として、撮像画像200に対応する特徴量管理テーブル113に登録する(ステップS13)。
図6は、輝度差特徴量を算出する処理の例を示す図である。上記のBRIEFでは、画素ペアの輝度差と閾値0との比較結果に基づいて、画素ペアに対応するビット値が決定された。これに対して、輝度差特徴量では、画素ペアの輝度差と、0以外の閾値との比較結果に基づいて、画素ペアに対応するビット値が決定される。
撮像画像200内の特徴領域201aには、画素ペア21a、22aが設定されており、撮像画像200内の特徴領域201bには、画素ペア21b、22bが設定されている。
特徴量算出部122は、特徴領域201aについて、各画素ペアの輝度差を計算し、特徴領域201bについて、各画素ペアの輝度差を計算する(ステップS11−1)。特徴量算出部122は、画素ペアの輝度差と、設定範囲30との比較に基づいて輝度差特徴量の各ビット値を決定する(ステップS12−1)。設定範囲30は、輝度値の範囲であり、輝度値“0”を挟んで設定される。例えば、図6の例のように、設定範囲30は閾値th1によって規定され、−th1を下限とし、th1を上限とする。なお、閾値th1は、撮影状況の違いによる輝度差の変化幅を考慮して、撮影状況の違いによる影響を受けにくい輝度差に設定される。また、閾値th1の上限値は、輝度値の最大値(図14では255)である。
特徴量算出部122は、次のような条件に従って、ビット値を0または1に決定する。特徴量算出部122は、画素ペアの輝度差が設定範囲30の上限より大きい場合には、この画素ペアに対応するビット値を第1の値(図6の例では1)に決定する。特徴量算出部122は、画素ペアの輝度差が設定範囲30の下限より小さい場合には、この画素ペアに対応するビット値を第2の値(図6の例では0)に決定する。特徴量算出部122は、画素ペアの輝度差が設定範囲30に含まれる場合には、この画素ペアに対応するビット値を第1の値と第2の値のうちあらかじめ決められた一方の値(図6の例では0)に決定する。すなわち、図6の例では、輝度差が閾値th1より大きい場合、ビット値が1に決定され、輝度差が閾値th1以下の場合、ビット値が0に決定される。
このようにして撮像画像200内の各特徴領域に対応する輝度差特徴量が算出され、決定されたビット列203a−1、203a−2は、輝度差特徴量として、特徴量管理テーブル113に登録される(ステップS13−1)。
図7は、絶対値特徴量を算出する処理の例を示す図である。画素ペアの輝度差の絶対値と閾値との比較結果に基づいて、絶対値特徴量のビット値を決定する算出処理を示している。
撮像画像200内の特徴領域201aにおいて、画素ペア(xA1,yA1)が設定され、撮像画像200内の特徴領域201bにおいて、画素ペア(xA2,yA2)が設定されている。
特徴量算出部122は、画素ペア毎に輝度差の絶対値を計算する(ステップS11−2)。次いで、特徴量算出部122は、算出した絶対値が閾値th2より大きいか否かを判定し、例えば、「絶対値>閾値th2」の場合にビット値を1に決定し、「絶対値≦閾値th2」の場合にビット値を0に決定する(ステップS12−2)。なお、閾値th2は、撮影状況の違いによる輝度差の変化幅を考慮して、撮影状況の違いによる影響を受けにくい輝度差の絶対値に設定される。また、閾値th2は閾値th1と同じ値でもよいし、異なる値でもよい。
特徴量算出部122は、画素ペア(xA1,yA1)において、画素xA1の輝度値bxA1と、画素yA1の輝度値byA1との輝度差の絶対値dA1を求め、絶対値dA1と閾値th2とを比較する。図7の例では、絶対値dA1は閾値th2よりも小さいと判断されており、ビット値“0”が選択される。
また、特徴量算出部122は、画素ペア(xA2,yA2)において、画素xA2の輝度値bxA2と、画素yA2の輝度値byA2との輝度差の絶対値dA2を求め、絶対値dA2と閾値th2とを比較する。図7の例では、絶対値dA2は閾値th2よりも大きいと判断されており、ビット値“1”が選択される。
このようにして撮像画像200内の特徴領域201a、201bに対応する絶対値特徴量が算出され、生成されたビット列204a−1、204b−1は、絶対値特徴量として、特徴量管理テーブル113に登録される(ステップS13−2)。
図8は、特徴点ごとに算出された輝度差特徴量および絶対値特徴量の例を示す図である。撮像画像200内の特徴点201に対し、この特徴点201の特徴領域202に設定された画素ペアにおいて、特徴量算出部122は、図6に示した輝度差特徴量の算出処理を行って輝度差特徴量のビット列205aを生成する。また、特徴量算出部122は、図7に示した絶対値特徴量の算出処理を行って絶対値特徴量のビット列205bを生成する。このように、輝度差特徴量のビット列および絶対値特徴量のビット列は、撮像画像200内に設定された特徴点ごとに算出される。
図9は、特徴量管理テーブルの構成例を示す図である。前述のように、図9に示す特徴量管理テーブル113は、撮像画像ごとに用意される。
特徴量管理テーブル113には、撮像画像内の特徴点ごとにレコードが登録される。各レコードには、ID、特徴点座標、輝度差特徴量および絶対値特徴量が登録される。IDは、撮像画像内の特徴点を識別するための識別番号を示す。特徴点座標は、特徴点の座標を示す。輝度差特徴量の項目には、特徴点の輝度差特徴量を示すビット列が登録される。絶対値特徴量の項目には、特徴点の輝度差特徴量を示すビット列が登録される。
図10は、特徴量算出部の動作を示すフローチャートである。図10では、特徴量の算出処理として、図6および図7で上述した輝度差特徴量と絶対値特徴量を算出する動作を示している。
[ステップS21]特徴量算出部122は、処理対象の撮像画像から特徴点を1つ選択する。また、特徴量算出部122は、画素ペア管理テーブル112から画素ペアを1つ選択する。特徴量算出部122は、選択された特徴点に対応する特徴領域内の画素ペアのうち、選択された画素ペアについて、画素ペアの輝度値の差と閾値th1とを比較し、比較結果に基づいて輝度差特徴量のビット値を決定する算出処理を行う。例えば、画素ペアの輝度値の差が閾値th1より大きい場合はビット値を“1”とし、画素ペアの輝度値の差が閾値以下の場合はビット値を“0”と決定する。
[ステップS22]特徴量算出部122は、ステップS21と同様の画素ペアについて、画素ペアの輝度値の差の絶対値と閾値th2とを比較し、比較結果に基づいて絶対値特徴量のビット値を決定する算出処理を行う。例えば、画素ペアの輝度値の差の絶対値が閾値th2より大きい場合はビット値を“1”とし、画素ペアの輝度値の差が閾値th2以下の場合はビット値を“0”と決定する。
[ステップS23]特徴量算出部122は、1つの特徴点における特徴領域内のすべての画素ペアについてステップS21、S22が処理済みかを判定する。処理済みでない画素ペアがある場合、ステップS21に戻り、他の画素ペアが選択される。すべての画素ペアについて処理済みの場合、ステップS24の処理が実行される。
[ステップS24]特徴量算出部122は、1つの撮像画像内のすべての特徴点についてステップS21、S22が処理済みかを判定する。処理済みでない特徴点がある場合、ステップS21に戻り、他の特徴点が選択される。すべての特徴点について処理済みの場合、ステップS25の処理が実行される。
[ステップS25]特徴量算出部122は、記憶部110に記憶されたすべての撮像画像についてステップS21、S22が処理済みかを判定する。処理済みでない撮像画像がある場合、ステップS21に戻り、他の撮像画像が選択される。すべての撮像画像について処理済みの場合、特徴量算出処理を終了する。
<輝度差が0近傍の場合の特徴量算出>
特徴量のビット値を決定する方法として、図5に示したBRIEFによる方法では、対応する画素ペアの輝度差の符号(正負)に基づいて決定する。ただし、この方法では、画像内の平坦な領域では、輝度差が0に近いため、撮像条件の微妙な違いによってビット値が容易に変化し、そのことが画像認識精度の劣化につながるという問題がある。例えば、画素ペアが平坦な画像領域に配置されている場合に、光源やノイズの状態のわずかな変化によってビット値が変化しやすくなり、輝度差の符号が正から負、あるいは負から正に容易に変化してしまう。このようにして算出された特徴量同士を比較して類似度を判定した場合、対応する特徴領域同士が本来は類似するものであるとしても、算出された類似度が低くなる可能性があり、類似領域の判定を誤ってしまうことがある。以下、この問題点について、図11〜図13を用いて説明する。
図11は、対応点の探索例を示す図である。図11に示す画像230、240には、同じ建物250が写っているが、建物250の位置や方向などの写り方が異なっている。また、画像230の特徴領域231と画像240の特徴領域241には、建物250の外面のうち窓が存在する部分が写っている。一方、画像230の特徴領域232と画像240の特徴領域242には、建物250における平坦な壁面と背景である空との境界部分が写っている。このため、特徴領域232、242は、特徴領域231、241と比較して、平坦な部分が占める面積が広い平坦な画像領域となっている。
ここで、特徴領域231と特徴領域241とは類似度が高く、特徴領域241は特徴領域231に対する正しい対応領域であるとする。また、特徴領域232と特徴領域242とは類似度が高く、特徴領域242は特徴領域232に対する正しい対応領域であるとする。
特徴領域231、241には、輝度差が大きい画素ペアが多く含まれる。この場合、光源の状態やノイズの影響によって画素ペアの輝度差の符号が変化する可能性は低い。このため、画素ペアの輝度差の符号に応じて特徴量のビット値を決定した場合、撮影条件が変化したとしても画素ペアに対応するビット値は安定的に0または1のどちらかに決定される可能性が高い。その結果、特徴領域231に類似する対応領域として特徴領域241が正しく認識される可能性が高い。
一方、特徴領域232、242は平坦なので、これらの領域には、各画素の輝度差が0に近い画素ペアが多く含まれる。この場合、光源の状態やノイズのわずかな違いによって、画素ペアの輝度差の符号が変化しやすくなる。このため、画素ペアの輝度差の符号に応じて特徴量のビット値を決定する方法では、撮影条件のわずかな違いによって画素ペアに対応するビット値が変化しやすく、特徴量の算出値が不安定になる。その結果、特徴領域232に類似する対応領域として特徴領域242が正しく認識されない可能性が高くなり、画像認識精度が低下する。
図12は、特徴領域での画素ペアの例を示す図である。この図12では、図11に示した画像230の特徴領域232および画像240の特徴領域242における画素ペアの設定パターンの例を示す。なお、図12における特徴領域232、242において、網掛け部分は図11の建物250の壁面を示し、それ以外の部分は背景(空)を示す。建物250の壁面の輝度より背景の輝度の方が高く、これらの間にはある程度大きな差があるものとする。
設定パターン1では、画素P1が背景に設定され、画素P2が壁面に設定されている。この場合、例えば、撮影状況の違いによって光源やノイズの状態が変化したとしても、画素P1の輝度値p1と画素P2の輝度値p2との差は常に正になる。このため、例えば、輝度差の符号が正の場合にビット値を“1”に決定した場合、ビット値は“1”のまま変動しない可能性が高い。従って、バイナリ特徴量として安定的な数値が算出される。
一方、設定パターン2では、画素P1、P2ともに背景に設定されている。この場合、画素P1の輝度値p1と画素P2の輝度値p2との差は0に近い。このため、撮影状況の違いによって光源やノイズの状態が変化した場合に、輝度差(p1−p2)の符号が変化しやすい。従って、輝度差の符号が正の場合にビット値を“1”に決定する方法では、画素P1、P2のビット値は0にも1にもなる可能性があり、その結果、バイナリ特徴量の算出値が不安定になる。
設定パターン3では、画素P1、P2ともに壁面に設定されている。この場合も、画素P1の輝度値p1と画素P2の輝度値p2との差は0に近い。従って、設定パターン2と同様に、バイナリ特徴量の算出値が不安定になる。
平坦な領域がその多くを占めている特徴領域では、設定パターン1のように輝度差が安定的に正または負になるような画素ペアより、設定パターン2、3のように輝度差の符号が変化しやすい画素ペアが多くなる。そのため、このような特徴領域から算出されたバイナリ特徴量は、撮影状況の違いに対して変化しやすく、不安定であり、画像認識精度を劣化させる原因になる。
図13は、画素ペアの輝度差のヒストグラムの例を示す図である。この図13は、多数の撮像画像から算出された画素ペアの輝度差の分布を示している。この図13の例のように、一般的な写真やビジネス文書画像、CT画像から画素ペアの輝度差を算出すると、輝度差の分布は0付近に集中する傾向がある。換言すると、一般的に、画像からバイナリ特徴量を算出すると、輝度差が0に近い画素ペアが多数出現する傾向にある。このため、画像認識処理の精度劣化に与える影響は大きい。
このように、BRIEFでのビット値決定方法では、類似度の算出精度が低くなる可能性があり、その結果、画像認識精度が低くなる可能性がある。これに対して、図6では、ビット値を“0”にするか“1”にするかを決定するための輝度差の境界を0からずらし、対応する画素ペアの輝度差を閾値に基づいて、輝度差特徴量のビット値を決定する。これにより、輝度差が0に近い画素ペアについてのビット値はどの画素ペアについても0または1のどちらかに固定され、光源やノイズの変化によって変動しなくなる。従って、類似領域の誤判定が発生しにくい特徴量を算出することができる。
図6を参照すると、例えば、特徴領域201b内の画素ペア22bの輝度差は、設定範囲30に含まれておらず、輝度値“0”から遠いと推定される。この場合、画素ペア22bに対応するビット値は、輝度差の符号に応じて決定されても特に問題にならない。図6の例では、輝度差が設定範囲30の上限より大きいため、対応するビット値は1に決定される。
また、例えば、特徴領域201a内の画素ペア22aの輝度差は、設定範囲30に含まれており、輝度値“0”に近いと推定される。この場合、画素ペア22aは画像内の平坦な領域に設定されている可能性が高いと推定され、画素ペア22aに対応するビット値は、一方の値(図6では0)に固定される。これにより、撮影状況が変化したとしても、平坦な領域の画素ペアについてのビット値は安定的に同じ値をとるようになる。その結果、類似する特徴点同士の探索精度が向上し、それに伴って画像認識精度が向上する。
ところで、閾値th1としては、あらかじめ固定的な値が設定されていてもよい。あるいは、次の図14に示す例のように、閾値th1は、撮像画像から得られた各画素ペアの輝度差に関する統計情報に基づいて動的に設定されてもよい。
図14は、閾値を動的に設定する例を示す図である。この図14では、図13に示した輝度差のヒストグラムに基づいて閾値th1を設定する例を示す。
特徴量算出部122は、例えば、輝度差のヒストグラムから、一定割合(例えば50%)の画素ペアが含まれる、輝度差0を中心とした範囲を抽出する。特徴量算出部122は、閾値th1として、抽出した範囲の正側の境界の輝度値を設定する。すなわち、閾値th1は、抽出された範囲の幅が2・th1となるように設定される。
このような方法により、画像認識の対象とする撮像画像の状況に応じて、閾値th1を適切に設定することができる。
また、他の方法の例として、特徴量算出部122は、図13のヒストグラムに所定の度数閾値を設定し、度数(画素ペア数)が度数閾値以上となる、輝度差0を中心とした範囲を抽出し、抽出した範囲に基づいて上記と同様に閾値th1を設定してもよい。
なお、ヒストグラムに登録する輝度差の算出対象となる撮像画像(サンプル画像)は、記憶部110に記憶されたすべての画像データ111であってもよいし、それらの中の一部であってもよい。また、サンプル画像は、記憶部110に記憶された画像データ111とは別に専用に用意された画像であってもよい。
また、上記のような輝度差に関する統計情報に基づいて閾値th1を設定する方法は、閾値th1の初期設定のために用いられてもよい。この場合、閾値th1が一旦設定された後は、例えば撮像画像が追加された場合でも、最初に設定された閾値th1を用いてその撮像画像から特徴量が算出される。また、画像認識の対象とする撮像画像が更新されるのに伴って、一定期間ごとに、更新された撮像画像を用いて閾値th1が再計算されてもよい。
<類似度判定を行う際の距離計算>
画像間の類似度判定を行う場合、画像認識部123は、キー画像側の1つの特徴点の特徴量と、対象画像側の1つの特徴点の特徴量との距離を計算し、距離が最小となる対象画像の特徴点を、類似度が最も高い対応点とする。この距離計算では、画像認識部123は、絶対値特徴量および輝度差特徴量の組合せに基づく距離計算と、輝度差特徴量に基づく距離計算とを行う。
(輝度差特徴量に基づく距離計算)
まず、輝度差特徴量に基づく距離計算について説明する。図15は、輝度差特徴量に基づく距離計算の例を示す図である。輝度差特徴量に基づく距離計算では、キー画像側で算出された輝度差特徴量のビット列と、対象画像側で算出された輝度差特徴量のビット列との排他論理和(XOR)をとってハミング距離が求められる。例えば、キー画像で算出された輝度差特徴量のビット列が010010000、対象画像側で算出された輝度差特徴量のビット列が010010101であった場合、これら2つのビット列の排他論理和は、000000101となる。桁数が同じ2つのビット列を比較して、異なっている桁の個数がハミング距離であるから、この場合、ハミング距離は2と算出される。
(絶対値特徴量と輝度差特徴量の組合せに基づく距離計算)
次に、絶対値特徴量と輝度差特徴量の組合せによる距離計算について説明する。キー画像の1つの特徴領域Ainと、対象画像の1つの特徴領域Arとの距離を計算するものとする。ここで、特徴領域Ainの輝度差特徴量をLFin、絶対値特徴量をAFinと表記する。また、特徴領域Arの輝度差特徴量をLFr、絶対値特徴量をAFrと表記する。
画像認識部123は、下記の式(1)に従って、輝度差特徴量LFin、LFr、絶対値特徴量AFin、AFrからビット列HVを計算する。さらに、画像認識部123は、ビット列HVの長さ(HVに含まれるビット値1の数)を計算する。計算されたビット列HVの長さが、特徴領域Ain、Ar間における特徴の違いを表す距離Dである。ただし、下記の式(1)において、ANDは論理積演算、XORは排他的論理和演算、ORは論理和演算を表す。
HV={(AFin XOR AFr)OR((AFin AND AFr)AND(LFin XOR LFr))}
…(1)
上記の式(1)で表現した演算のうち、(AFin AND AFr)の部分は、絶対値特徴量AFin、AFrの各ビット値について、互いに対応するビット値がいずれも1である場合に1、少なくとも1つのビット値が0である場合に0となる演算である。絶対値特徴量のビット値が1の場合とは、輝度差の絶対値が閾値th2より大きい場合であり、撮影状況の違いによる影響を受けにくい場合に相当する。つまり、この部分は、撮影状況の違いによる影響を受けにくい画素ペアの組と、撮影状況の違いによる影響を受けやすい画素ペアを含む組とを仕分けるマスクパターンを生成する演算に相当する。
一方、上記の式(1)で表現した演算のうち、(AFin XOR AFr)の部分は、絶対値特徴量AFin、AFrの各ビット値について、一致する場合に1、不一致の場合に0とする演算である。つまり、この演算により1となったビット値の数を合計することで、絶対値特徴量に基づく特徴領域Ain、Ar間の距離(特徴の違い)が得られる。
また、(LFin XOR LFr)の部分は、輝度差特徴量LFin、LFrの各ビット値について、一致する場合に1、不一致の場合に0とする演算である。つまり、この演算により1となったビット値の数を合計することで、輝度差特徴量に基づく特徴領域Ain、Ar間の距離(特徴の違い)が得られる。ただし、この距離は撮影状況の違いによる影響を受けやすいため、式(1)では、マスクパターンとなる(AFin AND AFr)の部分と、(LFin XOR LFr)の部分との論理積演算を行って、(LFin XOR LFr)の部分をマスクする演算を行う。
図16は、絶対値特徴量と輝度差特徴量の組合せによる距離計算の内容を模式的に示す図である。図16の例では、対象画像Prの中に2つの特徴領域Ar(1)、Ar(2)が含まれ、キー画像Pinの中に2つの特徴領域Ain(1)、Ain(2)が含まれる。
例えば、特徴領域Ar(1)、Ain(1)に注目する。また、2つの画素ペアL1、L2に注目する。図16の例では、特徴領域Ar(1)について、画素ペアL1から絶対値特徴量のビット値0が得られ、画素ペアL2から絶対値特徴量のビット値1が得られている。同様に、特徴領域Ain(1)について、画素ペアL1から絶対値特徴量のビット値0が得られ、画素ペアL2から絶対値特徴量のビット値1が得られている。
つまり、特徴領域Ar(1)、Ain(1)のいずれも、画素ペアL1において輝度差の絶対値が閾値th2以下であり、画素ペアL1は撮影状況の違いによる影響を受けやすい。逆に、特徴領域Ar(1)、Ain(1)のいずれも、画素ペアL2において輝度差の絶対値が閾値th2より大きく、画素ペアL2は撮影状況の違いによる影響を受けにくい。この場合、特徴領域Ar(1)、Ain(1)のいずれにおいても絶対値特徴量が1となっている画素ペアL2は、輝度差特徴量に基づく距離の計算に利用される。一方、画素ペアL1は、輝度差特徴量に基づく距離の計算に利用されない。
また、特徴領域Ar(2)については、画素ペアL1、L2のいずれも絶対値特徴量のビット値が0である。同様に、特徴領域Ain(2)についても、画素ペアL1、L2から得られる絶対値特徴量のビット値が0である。つまり、特徴領域Ar(2)、Ain(2)の特徴を比較する際、輝度差特徴量に基づく距離計算に画素ペアL1、L2は利用されない。このように、輝度差が小さく(平坦)、撮影状況の違いによる影響を受けやすい画素ペアについては、輝度差特徴量に基づく距離計算に利用されないようにする。その結果、撮影状況の違いによる影響を抑制した特徴領域Ain、Ar間の特徴差を表す距離Dが得られることになる。
図17は、絶対値特徴量と輝度差特徴量の組合せによる距離計算について説明するための図である。この図17は、上記の式(1)による距離Dの具体的な計算例を示す。なお、図17の例の特徴領域Ain、Arと、図16に例示した特徴領域Ain(1)、Ain(2)、Ar(1)、Ar(2)とは異なる領域であるとする。式(1)に基づく距離計算では、絶対値特徴量AFinのビット値、対応する絶対値特徴量AFrのビット値が両方0の場合にビットの距離を0とし、一方が0の場合にビットの距離を1とする。つまり、一方の画素ペアの輝度差が大きく、他方の画素ペアの輝度差が小さい場合、これらの画素ペアの組は特徴が異なるとみなす。逆に、比較する2つの画素ペアの輝度差がいずれも小さい場合、これらの画素ペアの組は特徴が類似するとみなす。このように、輝度差が小さい画素ペアを距離Dの計算時に考慮することで、多くの画素ペアを距離Dの計算に利用することが可能になる。
図17の例では、画素ペアL1から得られた特徴領域Ainの絶対値特徴量のビット値は0、特徴領域Arの絶対値特徴量のビット値は0であり、この場合、画素ペアL1に対応するビット列HVのビット値(ビットの距離)は0となる。また、画素ペアL2、L3の組み合わせの場合、特徴領域Ainの絶対値特徴量と、特徴領域Arの絶対値特徴量のいずれか一方のビット値が0であるから、ビット列HVのビット値は1となる。
さらに、画素ペアL4については、絶対値特徴量のビット値が特徴領域Ain、Arのいずれにおいても1であるため、輝度差特徴量同士のビットの距離が計算される。図17の例では、特徴領域Ainにおける輝度差特徴量のビット値が0、特徴領域Arにおける輝度差特徴量のビット値が1であるため、ビットの距離は1となる。このように特徴領域Ain、Arの絶対値特徴量がいずれも1の場合、画素ペアの輝度差が大きいため、輝度差特徴量の正確性が高いと推定される。そのため、輝度差特徴量同士のビットの距離が計算される。
従って、図17の例では、各ビットの距離を合計(ビット値1の数をカウント)し、距離Dが3となる。なお、上記の式(1)を利用すれば、ここで説明した演算を効率良く実行することができる。
図18は、絶対値特徴量と輝度差特徴量の組合せに基づく距離計算の論理の流れを示す図である。図18に示すように、画像認識部123は、輝度差特徴量LFin、LFrのXOR演算を実行する(ステップS1)。ステップS1の演算により、輝度差特徴量LFin、LFr間でビット毎の距離が計算される。また、画像認識部123は、絶対値特徴量AFin、AFrのAND演算を実行する(ステップS2)。ステップS2の演算により、絶対値特徴量のビット値が特徴領域Ain、Arの両方で1となる画素ペアを抽出するマスクパターンが得られる。
ステップS1、S2の演算後に、画像認識部123は、ステップS1の演算により得たビット列とステップS2の演算により得たビット列とのAND演算を実行する(ステップS3)。ステップS3の演算により、ステップS2の演算で得たマスクパターンに従って輝度差特徴量から得たビット毎の距離がマスクされる。
また、画像認識部123は、絶対値特徴量AFin、AFrのXOR演算を実行する(ステップS4)。ステップS4の演算により、絶対値特徴量AFin、AFr間でビット毎の距離が計算される。なお、ステップS1、S2、S4の演算順序は入れ替え可能である。
また、画像認識部123は、ステップS3の演算により得たビット列と、ステップS4の演算により得たビット列とのOR演算を実行する(ステップS5)。ステップS5の演算により、絶対値特徴量AFin、AFrから得たビット毎の距離と、輝度差特徴量LFin、LFrから得たビット毎の距離(マスク後の距離)とが合成されたビット列(ビット列HV)が得られる。
画像認識部123は、ステップS5の演算により得たビット列HVのうち、ビット値が1のビットの数をカウントする(ステップS6)。ステップS6のカウント処理により得たビットの数が距離Dとなる。以上説明した方法により、画像認識部123は、特徴領域Ain、Ar間の距離を計算する。
(距離計算の効果の違い)
次に、絶対値特徴量と輝度差特徴量との組合せによる距離計算と、輝度差特徴量による距離計算との効果の違いについて説明する。上述したような距離計算において、絶対値特徴量と輝度差特徴量に基づく距離計算を使用した方が、輝度差特徴量に基づく距離計算を使用するよりも精度は高い。ただし、絶対値特徴量と輝度差特徴量との組合せに基づく距離計算の方が、輝度差特徴量に基づく距離計算よりも計算負荷が大きい。
例えば、輝度差の範囲が0近傍に集中する画素ペアに対して、絶対値特徴量と輝度差特徴量の組合せに基づく距離計算を行った場合と、輝度差特徴量に基づく距離計算を行った場合では、類似度判定において、精度の効果にさほど差はない。ただし、絶対値特徴量と輝度差特徴量の組合せに基づく距離計算の方が、輝度差特徴量に基づく距離計算よりも時間を要する。このために、輝度差の範囲が0近傍に集中する画素ペアに対して、絶対値特徴量と輝度差特徴量の組合せに基づく距離計算を行うことは効率が悪い。
図19は、輝度差のヒストグラムを示す図である。輝度差の範囲が広い画素ペアの分布状態を示している。このような場合、画素ペア間の輝度差の正負や大きさのバリエーションが多く、絶対値特徴量と輝度差特徴量の組合せを用いることで輝度差特徴量だけを用いた場合より画素ペア付近の多くの画像状況を場合分けして判断できる。このため、類似度検索を行う際に、絶対値特徴量と輝度差特徴量の組合せに基づく距離計算を使用することは効果が大きい。
図20は、輝度差のヒストグラムを示す図である。輝度差の範囲が0近傍に集中する画素ペアの分布状態を示している。このような分布状態の画素ペアについて、絶対値特徴量を算出すると、絶対値特徴量はほとんどの場合0になる。このため、絶対値特徴量を用いたとしてもほとんどの場合は同じような画像状況であると判断されてしまい、判断の意義が低い。一方、輝度差が0近傍に集中する場合には、輝度差特徴量に基づく距離計算でも十分な類似判定精度が得られる。従って、図20のような状態では、距離計算に絶対値特徴量を用いる分だけ計算処理に無駄が生じることになる。
このように、画素ペアの輝度差の状態に応じて、類似度検索を行う際に、絶対値特徴量と輝度差特徴量の組合せに基づく距離計算を使用することが有効な場合と、絶対値特徴量と輝度差特徴量の組合せに基づく距離計算を使用すると計算処理に無駄が生じて有効でない場合とがある。
従って、本実施の形態では、画像類似度判定において、絶対値特徴量にもとづく距離計算が、輝度差特徴量に基づく距離計算よりも有効である度合いを示す有効度を計算する。そして、相対的に、有効度が高い画素ペアに対しては絶対値特徴量と輝度差特徴量の組合せに基づく距離計算を行い、有効度が低い画素ペアに対しては輝度差特徴量に基づく距離計算を行う。
<有効度決定処理>
次に、具体的な有効度の決定処理例について説明する。まず、第1、第2の処理例として、特徴領域における画素ペアの各画素の位置関係に基づいて有効度を決定する処理例を示す。
図21は、有効度決定の第1の処理例を示すフローチャートである。図21の例では、画素ペアの距離から有効度を決定する処理を示しており、距離が大きいほど有効度は大きく、距離が小さいほど有効度は小さくなる。
[ステップS31]有効度決定部124は、画素ペア管理テーブル112から画素ペアを選択し、選択した画素ペアにおける第1画素および第2画素に対し、第1画素の座標と、第2画素の座標との距離を計算し、この距離を有効度とする。第1画素の座標を(s,t)、第2画素の座標を(u,v)、有効度をdvとすると、dv=((s−u)2+(t−v)2)1/2によって算出される。
[ステップS32]有効度決定部124は、画素ペア管理テーブル112に登録されるすべての画素ペアについて、処理済みかを判定する。処理済みでない画素ペアがある場合、ステップS31に戻り、他の画素ペアが選択される。すべての画素ペアについて処理済みの場合、ステップS33の処理が実行される。
[ステップS33]有効度決定部124は、画素ペア管理テーブル112における画素ペアごとのレコードを有効度の大きい順に並び替え、有効度の大きい順に番号の若いIDを画素ペアに付与する。
図22は、有効度決定の第2の処理例を示すフローチャートである。図22の例では、画素ペアの配置から有効度を決定する処理を示しており、画素ペアの配置が水平線に近いほど(画素ペアの勾配の逆数が大きいほど)有効度は大きく、画素ペアの配置が垂直線に近いほど(画素ペアの勾配の逆数が小さいほど)有効度は小さくなる。
[ステップS41]有効度決定部124は、画素ペア管理テーブル112から画素ペアを選択し、選択した画素ペアにおける第1画素および第2画素に対し、第1画素の座標と、第2画素の座標との勾配の逆数を計算し、この勾配の逆数を有効度とする。第1画素の座標を(s,t)、第2画素の座標を(u,v)、有効度をdvとすると、d=|u−s|/|v−t|で算出される。
[ステップS42]有効度決定部124は、画素ペア管理テーブル112に登録されるすべての画素ペアについて、処理済みかを判定する。処理済みでない画素ペアがある場合、ステップS41に戻り、他の画素ペアが選択される。すべての画素ペアについて処理済みの場合、ステップS43の処理が実行される。
[ステップS43]有効度決定部124は、画素ペア管理テーブル112における画素ペアごとのレコードを有効度の大きい順に並び替え、有効度の大きい順に番号の若いIDを画素ペアに付与する。
次に、第3、第4の処理例として、画素ペアの輝度差の統計情報に基づいて有効度を決定する処理例を示す。これらの処理例では、記憶部110に記憶された全撮像画像がサンプル画像として用いられる。
図23は、有効度決定の第3の処理例を示すフローチャートである。有効度決定部124は、画素ペアの輝度差の統計情報に基づいて有効度を決定する。図23の例では、画素ペアごとに画素値の差の分散から有効度を決定する処理を示しており、分散が大きいほど有効度は大きく、分散が小さいほど有効度は小さくなる。
[ステップS51]有効度決定部124は、画素ペア管理テーブル112から画素ペアを選択する。また、有効度決定部124は、撮像画像を選択し、選択した撮像画像から特徴点を選択する。有効度決定部124は、選択した特徴点に対応する特徴領域内の画素ペアのうち、選択した画素ペアについての第1画素の値と第2画素の値との差を計算して記録する。
[ステップS52]有効度決定部124は、選択した撮像画像内のすべての特徴点について、処理済みかを判定する。処理済みでない特徴点がある場合、ステップS51に戻り、他の特徴点が選択される。すべての特徴点について処理済みの場合、ステップS53の処理が実行される。
[ステップS53]有効度決定部124は、すべての撮像画像について、処理済みかを判定する。処理済みでない画像がある場合、ステップS51に戻り、他の撮像画像が選択される。すべての撮像画像について処理済みの場合、ステップS54の処理が実行される。
[ステップS54]有効度決定部124は、有効度として、ステップS51で記録された画素値の差の分散を計算する。
[ステップS55]有効度決定部124は、画素ペア管理テーブル112のすべての画素ペアについて、処理済みかを判定する。処理済みでない画像がある場合、ステップS51に戻り、他の画素ペアが選択される。この場合、ステップS51で記録された画素値の差はクリアされる。一方、すべての画素ペアについて処理済みの場合、ステップS56の処理が実行される。
[ステップS56]有効度決定部124は、画素ペア管理テーブル112における画素ペアごとのレコードを有効度の大きい順に並び替え、有効度の大きい順に番号の若いIDを画素ペアに付与する。
図24は、有効度決定の第4の処理例を示すフローチャートである。有効度決定部124は、画素ペアの輝度差の統計情報に基づいて有効度を決定する。図24の例では、画素ペアごとに画素値の差のヒストグラムの尖度から有効度を決定する処理を示しており、尖度が小さいほど有効度は大きく、尖度が大きいほど有効度は小さいとする。
[ステップS61]有効度決定部124は、画素ペア管理テーブル112から画素ペアを選択する。また、有効度決定部124は、撮像画像を選択し、選択した撮像画像から特徴点を選択する。有効度決定部124は、選択した特徴点に対応する特徴領域内の画素ペアのうち、選択した画素ペアについての第1画素の値と第2画素の値との差を計算して記録する。
[ステップS62]有効度決定部124は、選択した撮像画像内のすべての特徴点について、処理済みかを判定する。処理済みでない特徴点がある場合、ステップS61に戻り、他の特徴点が選択される。すべての特徴点について処理済みの場合、ステップS63の処理が実行される。
[ステップS63]有効度決定部124は、すべての撮像画像について、処理済みかを判定する。処理済みでない画像がある場合、ステップS61に戻り、他の撮像画像が選択される。すべての撮像画像について処理済みの場合、ステップS64の処理が実行される。
[ステップS64]有効度決定部124は、有効度として、ステップS61で記録された画素値の差のヒストグラムの尖度を計算する。
[ステップS65]有効度決定部124は、画素ペア管理テーブル112のすべての画素ペアについて、処理済みかを判定する。処理済みでない画像がある場合、ステップS61に戻り、他の画素ペアが選択される。この場合、ステップS61で記録された画素値の差はクリアされる。一方、すべての画素ペアについて処理済みの場合、ステップS66の処理が実行される。
[ステップS66]有効度決定部124は、画素ペア管理テーブル112における画素ペアごとのレコードを有効度の大きい順に並び替え、有効度の大きい順に番号の若いIDを画素ペアに付与する。
なお、尖度を計算する場合、例えば、以下のようにして算出することができる。確率変数をX、分布関数をF(X)、平均をμ、分散をμτとすると、平均μは式(2)で表され、分散μτは、式(3)で表される。なお、τは正整数である。
このとき、分布関数F(X)の尖度をβ2とすると、正規分布の尖度を0とする場合、尖度β2は、β2=(μ4/μ2 2)−3と定義される。また、正規分布の尖度を3とする場合、尖度β2は、β2=(μ4/μ2 2)と定義される。これらの式に基づいて尖度を計算することができる。
<画像認識処理>
次に、画像認識部123による画像認識処理について詳しく説明する。
(距離計算)
画像認識部123は、ユーザの操作入力に応じて撮像画像からキー画像を選択する。そして、画像認識部123は、選択したキー画像と他の撮像画像(対象画像)とを比較し、対象画像の中からキー画像と類似する画像を探索する。
キー画像と対象画像との比較では、画像間で類似する特徴点が探索される。この処理では、画像認識部123は、キー画像から選択した特徴点と、対象画像の各特徴点との類似度を計算し、対象画像の特徴点のうち類似度が最大の特徴点を対応点として抽出する。特徴点間の類似度は、特徴点の特徴量の距離として算出される。本実施の形態では、この距離計算として、絶対値特徴量に基づく距離計算と、輝度差特徴量に基づく距離計算とが併用される。より具体的には、特徴領域内の画素ペアが有効度に応じて2群に分類される。そして、各特徴領域における有効度が高い一方の画素ペア群同士の類似度が、絶対値特徴量に基づく距離計算によって算出され、他方の画素ペア群同士の類似度が、輝度差特徴量に基づく距離計算によって算出される。そして、算出された両方の類似度から最終的な類似度が算出される。
図25は、距離計算を説明するための図である。キー画像から選択された1つの特徴点の特徴領域から算出された特徴量として、絶対値特徴量A1と輝度差特徴量B1が算出されている。また、対象画像の1つの特徴点の特徴領域から算出された特徴量として、絶対値特徴量A2と輝度差特徴量B2が算出されている。
画像認識部123は、絶対値特徴量A1、A2および輝度差特徴量B1、B2の最上位ビットからnビット目までのビット列を用いて、式(1)による距離計算を行う。それ以降のn−1ビット目から最下位ビットに対しては、輝度差特徴量B1、B2を用いて、排他論理和に基づく距離計算を行う。
図25の例では、最上位ビットからnビット目までのビット列は、絶対値特徴量A1は“0101000”、輝度差特徴量B1は“0010101”、絶対値特徴量A2は“0110110”、輝度差特徴量B2は“1001101”である。従って、画像認識部123は、これらのビット列に対して式(1)による演算を行ってビット列C1を算出する。また、画像認識部123は、輝度差特徴量B1のn−1ビット目から最下位ビットの“11101・・・”と、輝度差特徴量B2のn−1ビット目から最下位ビットの“00011・・・”とに対しては排他論理和の計算を行ってビット列C2を算出する。
ビット列C1における1の個数が、一方の画素ペア群間の類似度を示し、ビット列C2における1の個数が、他方の画素ペア群間の類似度を示す。したがって、画像認識部123は、ビット列C1とビット列C2とを含むビット列の1の個数を、特徴領域同士の特徴量の距離、すなわち特徴領域間の類似度として出力する。
前述のような有効度決定部124による有効度に応じた画素ペアの並び替えにより、各特徴領域の特徴量を示すビット列の上位ビットほど、絶対値特徴量に基づく距離計算の有効度が高くなっている。このため、上記の処理により、絶対値特徴量に基づく距離計算の有効度が高い画素ペアについてのみ、絶対値特徴量に基づく距離計算が行われ、残りの画素ペアについては処理負荷の低い輝度差特徴量に基づく距離計算が行われる。従って、距離計算精度の低下を抑制しながら、距離計算負荷を軽減し、その計算時間を短縮することができる。
(投票処理)
次に、画像認識部123は、キー画像上の特徴点ごとに次のような処理を実行する。画像認識部123は、キー画像上の特徴点と対象画像上の対応点とが一致するように対象画像にキー画像を重ねた場合の、対象画像におけるキー画像の中心位置を推定する。画像認識部123は、対象画像の各画素のうち、推定された中心位置の画素に対して投票する。画像認識部123は、対象画像の画素のうち、投票数が最大の画素を判別し、判別した画素の投票数が所定の閾値を超えている場合に、対象画像をキー画像に類似する画像と判定する。
ここで、図26は、投票処理を説明するための図である。図26では、キー画像210の特徴点211と類似する対象画像220の対応点を探索する処理の例を示す。画像認識部123は、例えば、キー画像210の特徴点211の輝度差特徴量と、対象画像220の各特徴点の輝度差特徴量とのハミング距離を計算することで、対応点を探索する(ステップS21a)。
キー画像210の特徴点211に対する対応点として、対象画像220の特徴点221が抽出されたものとする。このとき、画像認識部123は、特徴点211と特徴点221(対応点)とが一致するように対象画像220にキー画像210を重ねた場合の、対象画像220におけるキー画像210の中心位置212を推定する(ステップS22a)。
ここで、対象画像の横幅および高さの画素数をそれぞれwi、hiとし、キー画像の横幅および高さの画素数をそれぞれwr、hrとする。キー画像の特徴点(xr,yr)に対応する対象画像の対応点として対象画像の特徴点(xi,yi)が探索されたとすると、対象画像におけるキー画像の中心点の位置(xv,yv)は、次の式(4−1)、(4−2)を用いて算出される。
xv=xi・xr+(wr/2) ・・・(4−1)
yv=yi・yr+(hr/2) ・・・(4−2)
図26の特徴点211と特徴点221との対応関係に基づいて対象画像220におけるキー画像210の中心位置として画素222が推定されたとすると、画像認識部123は、対象画像220の画素のうち、画素222に対して投票する。この投票処理には、例えば、対象画像220の各画素に対応するエントリを有する投票マップ114が用いられる。投票マップ114の各エントリの初期値は0とされる。図26の処理では、投票マップ114における画素222に対応するエントリに1が加算される(ステップS23a)。
なお、実際には、画像認識部123は、例えば、画素222を中心とした所定領域(例えば、10画素四方の矩形領域)に含まれる各画素に投票してもよい。これにより、キー画像210と対象画像220との違いに対してある程度ロバストな認識処理を行うことが可能になる。
図27は、投票結果に基づく類似画像の判定処理について説明するための図である。図27に示す投票マップ114aは、図26に示すような処理がキー画像210の各特徴点について実行された後の投票マップ114の状態を示す。画像認識部123は、投票マップ114aにおける各画素についての投票数のうちの最大値を抽出し、この最大値が所定の閾値を超えているかを判定する。
ここで、キー画像210と対象画像220とに同じ対象物が写っている場合、キー画像210の特徴点と対象画像220の対応点との位置関係が、キー画像の特徴点間で同じ場合が多い。この場合、投票マップ114aにおける同じ画素に対応するエントリに投票数が集中する。一方、キー画像210と対象画像220との関連性が低い場合、キー画像210の特徴点と対象画像220の対応点との位置関係が、キー画像210の特徴点間で異なる場合が多い。この場合、投票マップ114aにおいて投票数が分散する。
従って、投票マップ114aにおける投票数の最大値が閾値を超えた場合には、投票数が同じ画素に集中していると推定されるため、キー画像210と対象画像220とに同じ対象物が写っている可能性が高いと判断できる。このことから、画像認識部123は、投票数の最大値が閾値を超えた場合、対象画像220をキー画像210に類似する画像であると判定する。
なお、実際には、対象画像220における特徴点の数によって投票数の最大値が影響を受けることから、例えば、対象画像220における特徴点の数で投票数を除算するなどの正規化処理が行われた上で、閾値との比較が行われることが望ましい。
図28は、画像認識処理の例を示すフローチャートである。
[ステップS71]画像認識部123は、ユーザの操作入力に応じて撮像画像からキー画像を選択する。
[ステップS72]画像認識部123は、キー画像以外の撮像画像(対象画像)の中から1つを選択する。
[ステップS73]画像認識部123は、キー画像の特徴点を1つ選択する。
[ステップS74]画像認識部123は、ステップS72で選択した対象画像から、ステップS73でキー画像から選択した特徴点に類似する特徴点(対応点)を探索する。この処理では、画像認識部123は、キー画像から選択した特徴点の絶対値特徴量および輝度差特徴量と、対象画像の各特徴点の絶対値特徴量および輝度差特徴量とを用いて、図25で説明した計算を行う。詳細については図29で説明する。
[ステップS75]画像認識部123は、ステップS73で選択した特徴点とステップS74で探索された対応点とが一致するように対象画像にキー画像を重ねた場合の、対象画像におけるキー画像の中心位置を推定する。画像認識部123は、対象画像の各画素のうち、推定された中心位置の画素に対して投票する。なお、実際には、画像認識部123は、例えば、推定された中心位置を中心とした所定領域(例えば、10画素四方の矩形領域)に含まれる各画素に投票してもよい。
[ステップS76]画像認識部123は、キー画像の全特徴点について処理済みかを判定する。処理済みでない特徴点がある場合、ステップS73に戻り、他の特徴点が選択される。一方、すべての特徴点について処理済みの場合、ステップS77の処理が実行される。
[ステップS77]画像認識部123は、ステップS72で選択した対象画像の各画素についての投票数の最大値が所定の閾値を超えている場合、この対象画像をキー画像に類似する画像と判定する。この場合、画像認識部123は、例えば、キー画像に類似すると判定された対象画像の識別情報を出力する。一方、画像認識部123は、投票数の最大値が閾値以下の場合、この対象画像をキー画像に類似しない画像と判定する。
なお、ステップS77では、画像認識部123は、例えば、投票数の最大値が所定の閾値を超えているすべての対象画像の識別情報を、投票数の大きさ順に出力してもよい。
[ステップS78]画像認識部123は、すべての対象画像について処理済みかを判定する。処理済みでない対象画像がある場合、ステップS72に戻り、他の対象画像が選択される。一方、すべての対象画像について処理済みの場合、画像認識部123は、ステップS77でキー画像に類似すると判定された対象画像の識別情報を出力して、画像認識処理を終了する。
図29は、対応点の探索処理の例を示すフローチャートである。この図29の処理は、図28のステップS74に対応する。
[ステップS74a]画像認識部123は、対象画像から特徴点を選択する。
[ステップS74b]画像認識部123は、ステップS73で選択した特徴点についての絶対値特徴量および輝度差特徴量と、ステップS74aで選択した特徴点についての絶対値特徴量および輝度差特徴量のそれぞれの上位nビットを用いて、式(1)の演算を行う。
[ステップS74c]画像認識部123は、ステップS73で選択した特徴点についての輝度差特徴量と、ステップS74aで選択した特徴点についての輝度差特徴量のそれぞれの、上位からn−1ビット目から最下位ビットまでを用いて、排他的論理和の演算を行う。
なお、ステップS74b、S74cの処理順は逆であってもよい。
[ステップS74d]画像認識部123は、ステップS74b、S74cの演算によってそれぞれ得られたビット列から、1の個数を計数し、1の個数を特徴点間の特徴量の距離(すなわち、特徴点間の類似性を表す指標)として出力する。
[ステップS74e]画像認識部123は、対象画像の全特徴点について処理済みかを判定する。処理済みでない特徴点がある場合、ステップS74aに戻り、他の特徴点が選択される。一方、すべての特徴点について処理済みの場合、ステップS74fの処理が実行される。
[ステップS74f]画像認識部123は、対象画像の特徴点のうち、ステップS74dで算出された距離が最小の特徴点を対応点として特定する。
以上説明した第2の実施の形態では、特徴領域に設定される画素ペアが、絶対値特徴量に基づく距離計算の有効度に応じて分類される。そして、画像の特徴点間の特徴量の距離(類似度)を算出する際に、絶対値特徴量に基づく距離計算の有効度が高い画素ペアについてのみ、絶対値特徴量に基づく距離計算が行われ、残りの画素ペアについては処理負荷の低い輝度差特徴量に基づく距離計算が行われる。これにより、特徴量の全ビットについて絶対値特徴量に基づく距離計算を行った場合と比較して、類似度計算精度の低下を抑制しながら、類似度計算負荷を軽減し、その計算時間を短縮することができる。その結果、画像認識精度を大きく低下させずに、認識処理負荷を軽減し、その計算時間を短縮することができる。
なお、以上の第2の実施の形態の処理においては、輝度差特徴量の代わりに図5で説明したBRIEFが用いられてもよい。この場合、輝度差特徴量を用いた場合より特徴点間の類似度計算精度は低下する。しかし、特徴量の全ビットについてBRIEFのハミング距離を類似度として計算する場合と比較して、類似度計算精度を向上させることができ、その結果、画像認識精度を高めることができる。
〔第3の実施の形態〕
図30は、第3の実施の形態に係る画像処理システムの構成例を示す図である。なお、図30では、図3と同じ構成要素には同じ符号を付して示している。
画像処理システム1−2は、画像処理装置300と、サーバ装置400を備える。画像処理装置300は、記憶部110、画像取得部121、特徴量算出部122、画像認識部123および結果出力部125を含む。サーバ装置400は、有効度決定部124を含む。
上述した画像処理装置100では、有効度の決定と画像認識処理とが同じ装置において行われていた。しかし、図21、図22に示した有効度決定の第1、第2の処理例は、特徴領域内での画素ペアの位置さえ決定されれば、画像認識対象の画像に関係なく実行可能である。そこで、画像処理システム1−2では、有効度の決定が画像処理装置300とは別のサーバ装置400で実行される。サーバ装置400は、例えば、画像認識ソフトウェアの開発企業や販売企業の装置である。
サーバ装置400内の有効度決定部124は、画素ペア管理テーブル112に登録された画素ペアの位置に基づいて、画素ペアごとの有効度を決定し、画素ペア管理テーブル112の画素ペアの配列を、有効度に基づき並び替える。並び替え後の画素ペア管理テーブル112は、例えば、ネットワークを介して、あるいは可搬型の記録媒体を用いて、画像処理装置300に記録される。
このように、開発企業側では、サーバ装置400において、画素ペア管理テーブル112の画素ペアの有効度に基づく並び替えをあらかじめ行っておいてから画像処理装置300、あるいはその処理機能を実現するソフトウェアを出荷する。ユーザが使用する画像処理装置300では、あらかじめ設定されている画素ペアの順番に基づく特徴量の距離計算を行って、画像類似度判定を行う。
なお、第2の実施の形態の変形例として、図3に示した画像取得部121、有効度決定部124および特徴量算出部122の機能が、画像処理装置100とは別の端末装置に実装されてもよい。この場合、例えば、端末装置は撮像機能を備え、撮像した画像についての特徴量を算出して特徴量管理テーブル113を作成する。また、端末装置は、撮像した画像を用いて有効度を算出し、有効度に応じて画素ペアがソートされた画素ペア管理テーブル112を作成してもよい。画像処理装置100は、端末装置によって撮像された画像を特徴量管理テーブル113とともに受信し、画像認識処理を実行する。
また、第3の実施の形態の変形として、図30に示した画像取得部121および特徴量算出部122の機能が、画像処理装置300とは別の端末装置に実装されてもよい。この場合も、例えば、端末装置は撮像機能を備え、撮像した画像についての特徴量を算出して特徴量管理テーブル113を作成する。また、サーバ装置400によって作成された画素ペア管理テーブル112は、端末装置に記録される。画像処理装置300は、端末装置によって撮像された画像を特徴量管理テーブル113とともに受信し、画像認識処理を実行する。
なお、上記の各実施の形態に示した装置(画像処理装置100、300、サーバ装置400)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc-Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。