(57)【要約】【課題】画像間における対応するブロックを探索する処理を、精度を低下させることなく高速化すること。【解決手段】情報処理装置は、複数の画像データを取得する。そして、取得した各画像データに対して射影演算を行い、処理対象の画素に対応する、次元数を減らしたベクトルを生成する。そして生成されたベクトルを用いて処理対象の画素の類似度を算出する。【選択図】図３
2017126264.tif 000002
【特許請求の範囲】
【請求項１】
複数の画像データを取得する取得手段と、
前記取得手段で取得した各画像データに対して射影演算を行い、処理対象の画素に対応する、次元数を減らしたベクトルを生成する生成手段と、
前記生成手段で生成された前記ベクトルを用いて前記処理対象の画素の類似度を算出する算出手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記生成手段は、乱数、離散チャープ行列、Ｄｅｌｓａｒｔｅ―Ｇｏｅｔｈａｌｓコード、ＢＣＨコードのいずれかによって決定されるＭ行Ｎ列（Ｍ＜Ｎ）の射影行列と、前記複数の画像データが示す各画像の、複数の画素から構成される部分領域の画素値に対応するベクトルと、の積を求めることで前記次元数を減らしたベクトルを生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成手段は、乱数、離散チャープ行列、Ｄｅｌｓａｒｔｅ―Ｇｏｅｔｈａｌｓコード、ＢＣＨコードのいずれかによって決定される値を要素に含む複数のカーネルと前記複数の画像データが示す各画像との畳み込み演算を行うことで射影画像を生成し、前記次元数を減らしたベクトルとして、前記射影画像の所定の位置の画素群の画素値に対応するベクトルを生成することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記生成手段は、複数の画像データが示す複数の画像のうち、第１の画像に対して前記複数のカーネルの畳み込み演算を行なって得られた第１の射影画像群の所定の位置の画素群の画素値に対応するベクトルに含まれる各要素の値と、前記第１の画像とは異なる第２の画像に対して前記複数のカーネルの畳み込み演算を行なって得られた第２の射影画像群の所定の位置の画素群の画素値に対応するベクトルに含まれる各要素の値とが、同じカーネルをそれぞれの画像に畳み込んで得られた射影画像に対応する値となるように、前記ベクトルを生成することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記カーネルの総数は、前記カーネルに含まれる要素数よりも少ないことを特徴とする請求項３または４に記載の情報処理装置。
【請求項６】
前記射影行列において、符号が反転した同じ値が略同数あることを特徴とする請求項２に記載の情報処理装置。
【請求項７】
前記カーネルにおいて、符号が反転した同じ値が略同数あることを特徴とする請求項３から５のいずれか一項に記載の情報処理装置。
【請求項８】
前記行列は巡回行列であることを特徴とする請求項２から７のいずれか一項に記載の情報処理装置。
【請求項９】
前記乱数は離散値に丸められた値であることを特徴とする請求項２から８のいずれか一項に記載の情報処理装置。
【請求項１０】
前記類似度を用いて視差または被写体とカメラの距離を算出する算出手段をさらに有することを特徴とする請求項１から９のいずれか一項に記載の情報処理装置。
【請求項１１】
複数の画像データを取得する取得ステップと、
前記取得ステップで取得した各画像データに対して射影演算を行い、処理対象の画素に対応する、次元数を減らしたベクトルを生成する生成ステップと、
前記生成ステップで生成された前記ベクトルを用いて前記処理対象の画素の類似度を算出する算出ステップと
を有することを特徴とする情報処理方法。
【請求項１２】
コンピュータを請求項１から１０のいずれか一項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画像から対応する局所領域を探索する処理に関する。
【背景技術】
【０００２】
従来より、視点が異なる複数の画像（視差画像群）に基づき視差マップまたは距離マップを推定する技術がある。このようにして推定された視差マップまたは距離マップは、被写体の３次元形状の計測などに用いられる。その他、視差マップまたは距離マップは撮影後にピント位置、被写界深度、視点、照明などを画像処理によって変更するために用いられる場合もある。このような、撮影後にピント位置、被写界深度、視点、照明などを画像処理によって変更する技術はコンピュテーショナルフォトグラフィと呼ばれており、一部のカメラで製品化されている。
【０００３】
この視差マップまたは距離マップの推定技術は、２つの画像間での対応する特徴点を探索する方法と、対応するブロックを探索する方法とに分けられる。特徴点を探索する方法は、結果が疎な情報であるため先述した用途には補助的にしか用いることができない。これに対しブロックを探索する方法は、密な距離情報を推定できるため先述した用途に適用できる。ブロックを探索する方法を用いる場合、推定精度はブロックのサイズに大きく依存する。このため、対応するブロックを探索する処理を、入力画像に対するブロックのサイズを変えて複数回実行する方法が一般的に用いられている。また、ブロックのサイズが大きいほど対応の精度が向上する一方で演算量が増え、処理の時間が増大する。そこで、対応するブロックを探索する演算において、演算量を低減し処理を高速化する技術が求められている。特許文献１では、シーンに応じて入力画像の解像度変換を行うことで演算量の低減を図ることが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１２６０６５号公報
【非特許文献】
【０００５】
【非特許文献１】Ｄｉｍｉｔｒｉｓ  Ａｃｈｌｉｏｐｔａｓ著「Ｄａｔａｂａｓｅ―ｆｒｉｅｎｄｌｙ  Ｒａｎｄｏｍ  Ｐｒｏｊｅｃｔｉｏｎｓ」第２０回ＡＣＭ  ＳＩＧＭＯＤ―ＳＩＧＡＣＴ―ＳＩＧＡＲＴシンポジウム予稿集、２００１年、２７４―２８１頁
【非特許文献２】Ｒｏｂｅｒｔ  Ｃａｌｄｅｒｂａｎｋ、Ｓｔｅｐｈｅｎ  Ｈｏｗａｒｄ、Ｓｉｎａ  Ｊａｆａｒｐｏｕｒ著「Ｃｏｎｓｔｒｕｃｔｉｏｎ  ｏｆ  ａ  Ｌａｒｇｅ  Ｃｌａｓｓ  ｏｆ  Ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｓｅｎｓｉｎｇ  Ｍａｔｒｉｃｅｓ  Ｔｈａｔ  Ｓａｔｉｓｆｙ  ａ  Ｓｔａｔｉｓｔｉｃａｌ  Ｉｓｏｍｅｔｒｙ  Ｐｒｏｐｅｒｔｙ」ＩＥＥＥ  Ｊｏｕｒｎａｌ  ｏｆ  Ｓｅｌｅｃｔｅｄ  Ｔｏｐｉｃｓ  ｉｎ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ、２０１０年、４巻、２号、３５８―３７４頁
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の技術では、解像度変換により情報量が低減するために、解像度変換が適切でない場合にブロックマッチングの精度が低下してしまう。これは、画像を低解像度化すると画像上の詳細な特徴が消失することに起因する。このため、入力画像の各部分が属する距離レンジが予め正確に推定されていなければならないという制約がある。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、複数の画像データを取得する取得手段と、前記取得手段で取得した各画像データに対して射影演算を行い、処理対象の画素に対応する、次元数を減らしたベクトルを生成する生成手段と、前記生成手段で生成された前記ベクトルを用いて前記処理対象の画素の類似度を算出する算出手段とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、画像間における対応するブロックを探索する処理を、精度を低下させることなく高速化することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施例１の説明で用いる、情報処理装置の構成を示すブロック図である。
【図２】実施例１の説明で用いる、情報処理装置の構成を示すブロック図である。
【図３】実施例１の説明で用いる、情報処理装置による処理の流れを示すフローチャートである。
【図４】実施例１の説明で用いる、類似度の一例を示す図である。
【図５】実施例１の説明で用いる、視差マップの一例を示す図である。
【図６】実施例２の説明で用いる、情報処理装置による処理の流れを示すフローチャートである。
【図７】実施例２の説明で用いる、類似度の一例を示す図である。
【図８】実施例２の説明で用いる、視差マップの一例を示す図である。
【図９】実施例１および２の説明で用いる、処理内容を説明する模式図である。
【発明を実施するための形態】
【００１０】
＜実施例１＞
実施例１では、画像データの局所領域（以下、ブロックという）にそれぞれ次元圧縮処理を行うことで、対応ブロック探索処理の高速化を実現する例について述べる。まずは、実施例１の情報処理装置の構成について説明する。
【００１１】
図１は、実施例１の情報処理装置の構成の一例を示す図である。実施例１の情報処理装置１００（以下、処理装置１００とする）は、ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、二次記憶装置１０４、入力インターフェース１０５、出力インターフェース１０６を含む。そして、処理装置１００の各構成部はシステムバス１０７によって相互に接続されている。また、処理装置１００は、入力インターフェース１０５を介して外部記憶装置１０８および操作部１１０に接続されており、出力インターフェース１０６を介して外部記憶装置１０８および表示装置１０９に接続されている。
【００１２】
ＣＰＵ１０１は、ＲＡＭ１０２をワークメモリとして、ＲＯＭ１０３に格納されたプログラムを実行し、システムバス１０７を介して処理装置１００の各構成部を統括的に制御するプロセッサーである。これにより、後述する様々な処理が実行される。二次記憶装置１０４は、処理装置１００で取り扱われる種々のデータを記憶する記憶装置であり、本実施例ではＨＤＤが用いられる。ＣＰＵ１０１は、システムバス１０７を介して二次記憶装置１０４へのデータの書き込みおよび二次記憶装置１０４に記憶されたデータの読出しを行うことができる。なお、二次記憶装置１０４にはＨＤＤの他に、光ディスクドライブやフラッシュメモリなど、様々な記憶デバイスを用いることが可能である。
【００１３】
入力インターフェース１０５は、例えばＵＳＢやＩＥＥＥ１３９４等のシリアルバスインターフェースであり、外部装置から処理装置１００へのデータや命令等の入力は、この入力インターフェース１０５を介して行われる。処理装置１００は、この入力インターフェース１０５を介して、外部記憶装置１０８（例えば、ハードディスク、メモリーカード、ＣＦカード、ＳＤカード、ＵＳＢメモリなどの記憶媒体）からデータを取得する。また、処理装置１００は、この入力インターフェース１０５を介して、操作部１１０を用いて入力されたユーザによる命令を取得する。操作部１１０はマウスやキーボードなどの入力装置であり、ユーザの指示を処理装置１００に入力するために用いられる。
【００１４】
出力インターフェース１０６は、入力インターフェース１０５と同様にＵＳＢやＩＥＥＥ１３９４等のシリアルバスインターフェースを備える。その他に、例えばＤＶＩやＨＤＭＩ（登録商標）等の映像出力端子を用いることも可能である。処理装置１００から外部装置へのデータ等の出力は、この出力インターフェース１０６を介して行われる。処理装置１００は、この出力インターフェース１０６を介して表示装置１０９（液晶ディスプレイなどの各種画像表示デバイス）に、処理された画像などを出力することで、画像の表示を行う。なお、処理装置１００の構成要素は上記に限られるものではなく、他の構成要素を含むことが可能であるが、ここでは説明を省略する。また、ここではＰＣなどの情報処理装置を例に挙げて説明したが、図１に示す構成の一部がネットワーク接続されている構成を利用する形態であってもよい。
【００１５】
以下、実施例１の処理装置１００で行われる処理について、図２に示す機能ブロック図、図３に示すフローチャートおよび図９（ａ）に示す模式図を用いて説明する。実施例１の処理装置１００は、図２に示すようにデータ取得部２０１、射影演算部２０２、照合部２０３、対応決定部２０４としての機能を有する。処理装置１００は、ＣＰＵ１０１がＲＯＭ１０３内に格納された制御プログラムを読み込み実行することで、上記各部の機能を実現する。なお、各構成部に相当する専用の処理回路を備えるように処理装置１００を構成するようにしてもよい。以下、各構成部により行われる処理の流れを説明する。
【００１６】
ステップＳ３０１では、データ取得部２０１は、入力インターフェース１０５を介して、または二次記憶装置１０４から、処理対象の画像データを取得する。取得する画像データは、複数の画像にそれぞれが対応する複数の画像データである。例えば複数の画像は、１台または複数台のカメラで撮像した複数の異なる視点からの画像を含む。撮像手段として、例えば、小型カメラを複数台並置した多眼カメラを用いてもよいし、マイクロレンズアレイを内蔵することで複数視点の画像を同時に取得できるプレノプティックカメラを用いてもよい。処理装置１００は、取得した複数の画像の１つを基準画像９０１として決定する。基準画像９０１としては、取得した画像のうち視差マップなどの情報を推定したい画像を選択すればよく、予めユーザが設定してもよいし、処理装置１００が自動的に決定してもよい。また、以降では基準画像以外の入力画像の１つを参照画像９０６とする。
【００１７】
ステップＳ３０２では、データ取得部２０１は、基準画像９０１の１つの画素（以下、対象画素と呼ぶ）に対応する１つのブロック９０２を抽出し、射影演算部２０２に出力する。ブロックは複数の画素から構成される。ブロック９０２は、対象画素を中心とする矩形領域としてもよい。
【００１８】
ステップＳ３０３では、射影演算部２０２が、データ取得部２０１から入力された基準画像９０１の１つのブロック９０２に対し射影演算を行う。射影演算としては、ブロック９０２を変形して得られるベクトル９０３（列ベクトル）に対し後述する横長の射影行列９０４を乗じる方法が挙げられる。この射影演算の結果として、ブロック９０２に対応するベクトル９０３から、より低次元の（要素数の少ない）ベクトル９０５が生成される。例えば図９（ａ）に示すように、Ｎ画素のブロックに対してＭ×Ｎのサイズの行列を乗じると、Ｍ次元のベクトル９０５が生成される。なお、射影演算の目的はデータサイズを低減することであるので、Ｍ＜Ｎを満たすこととする。
【００１９】
先述した射影行列が満たすべき条件の１つとして、非特許文献１にも記載されているように、Ｊｏｈｎｓｏｎ―Ｌｉｎｄｅｎｓｔｒａｕｓｓの補題がある。この補題によれば、任意の２ベクトルの差分に対しある条件を満たすＭ＜Ｎの射影行列を乗じて次元を縮小しても、そのノルム（長さ）はほぼ完全に保存されることが数学的に保証される。また、２ベクトルの類似度を算出するための情報と２ベクトルの差分のノルムとは密接な関係をもつ。２ベクトルの類似度を算出する際には、２ベクトルの差分などを求める処理を行なうからである。よって、このような射影行列を乗じて前記ブロックをより低次元のベクトルに変換しても、前記ブロックが有する類似度算出のための情報は失われない。このように、本実施例では、情報を損なうことなく類似度の算出に用いるデータのサイズを縮小できるために、精度を維持しながら対応ブロック探索の演算量を低減できる。
【００２０】
任意の２ベクトルの差分に対して射影行例を乗じて次元を縮小しても、そのノルムが保存されるような射影行列の具体例が、非特許文献１の１．１節に記載されている。非特許文献１には、任意の２ベクトルの差分に対して射影行例を乗じて次元を縮小しても、そのノルムが保存されるような射影行列の具体例として、各要素が独立に１／２の確率で＋１または−１をランダムにとる２値の行列が記載されている。また、各要素が独立に１／６の確率で＋√３を、１／６の確率で−√３を、２／３の確率で０をランダムにとる疎な行列も同じ性質を有することが知られている。なお、任意の２ベクトルの差分に対して射影行例を乗じて次元を縮小しても、そのノルムが保存されるような条件を満たす射影行列はこれらに限定されず、ランダム性を有するベクトルから生成された巡回行列でもよい。さらには、射影行列は必ずしもランダム性を有する必要はなく、非特許文献２の２節に記載されているような離散チャープ行列、Ｄｅｌｓａｒｔｅ―Ｇｏｅｔｈａｌｓコード、ＢＣＨコードなどの一意に決定される行列でもよい。なお、ブロックによらず射影行列を同一にすることが計算上好適である。このように、本実施例では、乱数、離散チャープ行列、Ｄｅｌｓａｒｔｅ―Ｇｏｅｔｈａｌｓコード、ＢＣＨコードのいずれかによって決定されるＭ行Ｎ列（Ｍ＜Ｎ）を用いることができる。また、この行列においては、符号が反転した同じ値が略同数あることができる。さらには、乱数は離散値に丸められた値としてもよい。
【００２１】
ステップＳ３０４では、データ取得部２０１は、参照画像９０６から特定の位置の画素に対応する複数のブロック９０７を抽出する。ブロック９０７の位置は、ブロック９０２の位置から予め決定された複数の相対位置に移動した位置としてもよい。この複数の相対位置は視差の候補値であり、ブロック９０２の位置によらず固定された値の集合でもよいし、ブロック９０２の位置ごとに異なる値の集合でもよい。
【００２２】
ステップＳ３０５では、射影演算部２０２は、ステップＳ３０３と同様に、ブロック９０７の各々を変形して得られるベクトル９０８に対し射影演算を行い、複数の低次元ベクトル９０９を生成する。なお、本実施例では、基準画像のブロック９０２に対応する複数のブロックを先に抽出し、その後、抽出した複数のブロックそれぞれに射影演算を行なう例を説明したが、これに限られない。例えば、基準画像のブロック９０２に対応する単一のブロック９０７を抽出して射影演算を行い、この処理をブロック９０７の位置を変えて反復する処理でもよい。
【００２３】
なお、ステップＳ３０５の射影変換で用いる射影行列はステップＳ３０３の射影変換で用いる射影行列と同じ射影行列である。すなわち、後述する類似度の比較で用いられる、基準画像のブロックと、参照画像の複数のブロックとの第１の組においては、同じ射影行列を用いることが必要であるが、他の組においては第１の組で用いた射影行列とは異なる射影行例を用いてもよい。
【００２４】
ステップＳ３０６では、照合部２０３は、ベクトル９０５とベクトル９０９の類似度の算出を行う。すなわち、ステップＳ３０３で射影演算がされたベクトル９０５と、ステップＳ３０５で射影演算がされた複数のベクトル９０９との類似度の算出を行なう。類似度の算出方法としては、一般に知られている差分２乗和、差分絶対値和、正規化相互相関などを用いてもよいし、これらに限定されることはない。従来から行なわれているブロックマッチングでは、射影前のベクトル９０３とベクトル９０８との類似度を算出していたが、ブロックサイズが大きいほどこの演算量が増大する。これに対し、本実施例で説明した方法では次元を低減したベクトル同士の類似度の算出を行うため演算量の低減が可能になる。
【００２５】
ステップＳ３０７では、対応決定部２０４は、ステップＳ３０６において算出された類似度と参照画像のブロック９０７の基準画像のブロック９０２に対する相対位置とに基づき、基準画像９０１のブロック９０２の位置における視差を推定する。最も単純な方法としては、類似度が最大になるブロック９０２とブロック９０７との間の距離ｄを視差値とする。別の方法としては、類似度をブロック９０２とブロック９０７の距離の関数とみなし、関数フィッティングにより極大値をとる距離を算出し、これを視差値とする。なお、類似度に基づき視差を推定する方法はこれらに限られることはなく、任意の公知の技術を用いることができる。また、視差値は必要に応じて距離値に変換してもよい。
【００２６】
ステップＳ３０８では、処理装置１００は、基準画像９０１の視差を算出すべき対象画素の全ての画素に対応するブロック９０２に対して処理が行われたかを判定する。処理が完了していない場合にはステップＳ３０２に戻り、未処理の対象画素に対応するブロック９０２を選択した上でステップＳ３０２〜３０７の処理を行う。
【００２７】
以上が、実施例１の処理装置１００で行われる処理である。この処理を、図９（ａ）に模式的に示す。以上の処理によれば、画像内のブロックの次元数を、情報量を低減させることなく縮小することができるので、視差マップを高速に生成することができる。
【００２８】
本実施例の効果を説明するため、以下に上記の処理を画像データに対して実際に行った例を示す。
【００２９】
水平方向にのみ視差を有する２枚のステレオ画像を入力画像データとする。ブロックサイズを５×５画素とし、各ブロックの組に対する類似度として式（１）に示す正規化相互相関ＮＣＣを基準画像の座標（ｘ０，ｙ０）および推定視差ｄごとに算出する。
【００３０】
【数１】
2017126264.tif 000003
【００３１】
ここで、Ｆ（ｘ，ｙ）は基準画像の座標（ｘ，ｙ）における画素値、Ｇ（ｘ，ｙ）は参照画像の座標（ｘ，ｙ）における画素値、Ｂは座標（ｘ０，ｙ０）を中心とするブロック内の座標の集合である。ブロックサイズが５×５画素の場合には、射影演算を行わない場合のＢは２５組の座標の集合である。また射影演算を行う場合は、Ｂは１０組の座標の集合であり、ブロックに対応するベクトルに乗じる行列は１０×２５のサイズで各要素は独立に１／２の確率で０または１をとるとした。すなわち、射影演算によりベクトルの次元を６０％削減することになる。
【００３２】
各座標（ｘ０，ｙ０）に対し、ＮＣＣが最大になるｄを探索し、視差マップの座標（ｘ０，ｙ０）における値をｄとする。１つの座標（ｘ０，ｙ０）におけるＮＣＣとｄとの対応を図４に示す。図４（ａ）は射影演算を行わない場合、図４（ｂ）は射影演算を行った場合を示す図であり、図中の△はＮＣＣが最大の点を表す。射影演算によらずＮＣＣが最大値を取るｄの値は一致しており、ＮＣＣのｄ依存性は類似している。また、算出された視差マップに５×５画素のメディアンフィルタ処理を行った結果を、図５に示す。図５（ａ）は射影演算を行わない場合、図５（ｂ）は射影演算を行った場合、図５（ｃ）は図５（ｂ）から図５（ａ）を減算した分布を示す図である。画像端部や物体の輪郭近傍のような原理的に正確な視差の推定が困難な位置を除けば、両者はほぼ差が０である。このように、類似度の算出に用いるベクトルの次元を削減しても、射影行列が所定の条件を満たせばブロックの情報が保存されるために、視差推定の結果に実質的に影響を与えない。
【００３３】
以上が実施例１の処理である。以上の処理によれば、視差マップの推定精度を損なうことなく類似度算出処理の演算量低減を実現できる。
【００３４】
＜実施例２＞
実施例１の方法では、画像データから１つ１つのブロックを抽出してベクトル化した上で行列を乗じるため、計算効率が良くない。そこで、実施例２では、先述の射影行列と同様の方法で生成した同一サイズの異なるカーネルを複数生成する。そして生成したカーネルの各々を基準画像および参照画像にそれぞれ畳み込むことで複数の射影画像をそれぞれ算出し、この射影画像を用いて類似度を算出する。２次元の畳み込み演算は高速フーリエ変換を用いて効率よく計算できるため、この方法の方がブロックごとに行列を乗じるよりも高速に処理することが可能である。
【００３５】
本実施例は、ブロックに対応するベクトルから射影演算により得られた低次元ベクトルを用いる代わりに、上記のように得られた複数の射影画像の同一座標の画素値を並べたベクトルを類似度の算出に用いる以外は、実施例１と同じである。
【００３６】
以下、実施例１の処理装置１００で行われる処理について、図２に示す機能ブロック図、図６に示すフローチャートおよび図９（ｂ）に示す模式図を用いて説明する。
【００３７】
ステップＳ６０１では、ステップＳ３０１と同様に、データ取得部２０１は、入力インターフェース１０５を介して、または二次記憶装置１０４から、複数の画像に対応する複数の処理対象の画像データを取得する。また、処理装置１００は、複数の画像のうち１つを基準画像９０１に、他の１つを参照画像９０６に定める。
【００３８】
ステップＳ６０２では、射影演算部２０２は、基準画像９０１に対し複数のカーネル９１０を畳み込み、カーネルにそれぞれが対応した射影画像から構成される射影画像群９１１を生成し照合部２０３に出力する。同様に、参照画像９０６に対し先述と同一の複数のカーネル９１０を畳み込み、カーネルにそれぞれが対応した射影画像から構成される射影画像群９１３を生成し照合部２０３に出力する。なお、ここで畳み込みに用いるカーネルは、カーネル内の要素の値が実施例１で説明したような射影行例と同様の方法で生成されたカーネルである。ステップＳ６０２の処理によって、カーネルの個数分の射影画像群９１１、９１３がそれぞれ生成されることになる。また、射影演算部２０２は、基準画像９０１と参照画像９０６とに対して複数のカーネルをそれぞれ同じ順番で使用して射影画像を生成し、生成した順で照合部２０３に射影画像を出力する。照合部２０３においては、同じカーネルを使用して得られた基準画像９０１の射影画像と参照画像９０６の射影画像との対応関係がわかるように射影画像群を処理する。例えば、照合部は射影演算部２０２から出力された順序で射影画像群を取得する。
【００３９】
ステップＳ６０３では、照合部２０３は、基準画像の射影画像群９１１から画素群９１２を抽出する画素位置を１つ選択する。すなわち、基準画像の射影画像群９１１における対象画素の画素位置を選択する。
【００４０】
ステップＳ６０４では、照合部２０３は、基準画像の射影画像群９１１の対象画素の画素位置と同一位置の画素群９１２を射影画像群９１１から抽出し、ベクトル９０５を生成する。
【００４１】
ステップＳ６０５では、照合部２０３は、参照画像の射影画像群９１３において、特定の位置に対応する複数の画素群９１４を射影画像群９１３から抽出し、複数のベクトル９０９を生成する。なお、画素群９１４の位置は、画素群９１４から予め決定された複数の相対位置に移動した位置としてもよい。このように、画素群９１２と画素群９１４の相対位置は、ステップＳ３０４で説明した相対位置と同一としてよい。
【００４２】
前述のように照合部２０３では、同じカーネルを使用して得られた基準画像９０１の射影画像と参照画像９０６の射影画像との対応関係がわかるように射影画像群を処理する。したがって、生成されたベクトル９０５とベクトル９０９とにおける各要素は、それぞれ同じカーネルを用いて生成された射影画像に基づく要素となっている。
【００４３】
ステップＳ６０６では、照合部２０３は、ベクトル９０５とベクトル９０９の類似度の算出を行う。このように処理を行なう結果、カーネルと同じサイズのブロックを直接類似度の算出に用いる場合に比べて演算量が低減する。
【００４４】
ステップＳ６０７では、ステップＳ３０７と同様に、対応決定部２０４が、ステップＳ６０６において算出された類似度と、画素群９１２と画素群９１４の画素位置の距離とに基づき、基準画像の選択された画素位置における視差を推定する。最も単純な方法としては、類似度が最大になる画素群９１２と画素群９１４の画素位置の距離を視差値とする。別の方法としては、類似度を画素群９１２と画素群９１４の画素位置の距離の関数とみなし、関数フィッティングにより極大値をとる画素位置の距離を算出し、これを視差値とする。
【００４５】
ステップＳ６０８では、基準画像の視差を算出すべき処理対象の全ての画素に対して処理が行われたかを判定する。処理が完了していない場合にはステップＳ６０３に戻り、未処理の画素に対応する画素位置を選択した上でステップＳ６０３〜６０７の処理を行う。
【００４６】
以上が、実施例２の処理装置１００で行われる処理である。以上の処理によれば、画像内のブロックに対し必要な情報を損失することなく縮小することができるので、視差マップを高速に生成することができる。
【００４７】
演算量のオーダーは、類似度にＮＣＣを用い入力画像がｎ画素とすると、射影演算を用いない場合はＯ（Ｎｎ）である。一方で本実施例の射影演算を用いる場合は、高速フーリエ変換を用いた畳み込みと縮小されたブロックを用いたＮＣＣ算出の２つの演算を行うため、Ｏ（ｎｌｏｇｎ）＋Ｏ（Ｍｎ）となる。これらを比べるとおおよそＮとＭの比となり、Ｍが小さいほど本実施例の方法は高速になることが分かる。つまり、ベクトルを用いた類似度の算出においては、本実施例のように次元数（Ｍ）が少ないほど高速になる。なお、本実施例のベクトルの次元数は、カーネルの個数に対応する。従って、本実施例で使用するカーネルの総数は、カーネルに含まれる画素数よりも少ないものとする。
【００４８】
本実施例の効果を説明するため、以下に上記の処理を画像データに対して実際に行った例を示す。
【００４９】
図４と同じ１つの座標（ｘ０，ｙ０）におけるＮＣＣとｄの対応を図７に示す。図４（ａ）と比較すると、ＮＣＣが最大値を取るｄの値は一致しており、ＮＣＣのｄ依存性は類似している。また、算出された視差マップに５×５画素のメディアンフィルタ処理を行った結果を、図８に示す。図８（ａ）は射影演算を行わない場合、図８（ｂ）は図８（ａ）から図５（ａ）を減算した分布である。実施例１と同様に、推定が困難な位置を除けば、両者はほぼ差が０である。なお、視差マップの算出に要した演算時間は、一例として図５（ａ）が６．４秒、図８（ａ）が３．７秒であった。
【００５０】
以上が実施例２の処理である。以上の処理によれば、視差マップの推定精度を損なうことなく処理の高速化を実現できる。
【００５１】
＜その他の実施形態＞
以上説明した実施形態においては、撮影条件が異なる２つの撮影画像の対応する局所領域（部分領域）を探索する処理を例に挙げて説明した。しかしながら、必ずしも撮影画像に限られるものではなく、２つの画像間の対応する局所領域を探索する処理であればよく、処理対象の画像がどのようにして得られた画像であってもよい。また、ここでは２つの画像間の局所領域を探索する処理を例に挙げて説明したが、処理対象の画像の数は２つに限られるものではなく、複数の画像間の局所領域を探索するような処理でもよい。
【００５２】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５３】
２０１  データ取得部
２０２  射影演算部
２０３  照合部
２０４  対応決定部
【図１】
2017126264.tif 000004
【図２】
2017126264.tif 000005
【図３】
2017126264.tif 000006
【図４】
2017126264.tif 000007
【図５】
2017126264.tif 000008
【図６】
2017126264.tif 000009
【図７】
2017126264.tif 000010
【図８】
2017126264.tif 000011
【図９】
2017126264.tif 000012