(57)【特許請求の範囲】
【請求項１】
互いに異なる複数の視点から同一の被写体を見た場合の画像である複数の画像を示す画像データを入力する入力手段と、
前記複数の画像の間で第一のサイズのブロックマッチングを行うことによりことで、前記複数の画像間の視差の大きさを示す第一の情報を推定する推定手段と、
前記第一のサイズとは異なる第二のサイズの画像領域同士を前記複数の画像の間で比較することによって視差が推定される、前記複数の画像中の画像領域を、前記推定手段により推定された前記第一の情報を用いて特定する特定手段とを有し、
前記推定手段は、前記特定手段により特定された画像領域における前記複数の画像の間の視差の大きさを示す第二の情報を、前記複数の画像の間で前記第二のサイズの画像領域同士を比較することで更に推定し、
前記推定手段は、前記ブロックマッチングにおいて、比較されたブロックの組の間の類似度を示す評価値が最も高いブロックの組との評価値の差が所定の閾値以下であるブロックの組の数が、所定の数以上である場合には、前記評価値の差が所定の閾値以下である複数のブロックの組の中から１組を選択し、該選択された組に基づいて前記視差の大きさを示す情報を推定する
ことを特徴とする画像処理装置。
【請求項２】
前記特定手段は、
前記推定手段により推定された前記第一の情報の信頼度を示す評価値を導出する導出手段と、
前記導出手段により導出された前記評価値が示す信頼度が所定の基準に達するかどうかを判定する判定手段とを有し、
前記判定手段により前記評価値が示す信頼度が所定の基準に達していないと判定された前記複数の画像中の画像領域を、前記第二のサイズの画像領域同士を前記複数の画像の間で比較することによって視差が推定される画像領域として特定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記視差の大きさを示す情報は、画像の各画素位置に対応する視差値を格納した視差マップであり、
前記導出手段は、前記評価値を、前記複数の画像の間で前記第一のサイズの画像領域同士を比較することで推定された第一の視差マップの各画素位置について導出し、
前記判定手段は、前記第一の視差マップの各画素位置について導出された前記評価値が示す信頼度が、前記所定の基準に達するかどうかを判定することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記導出手段は、前記第一の視差マップの各画素位置に格納された視差値の信頼度の評価値として、前記視差マップの、該画素を含む画像領域内の視差値の分散を導出し、
前記判定手段は、前記導出手段により導出された前記分散が所定の閾値を超える場合に、該画素に格納された視差値の信頼度が前記所定の基準に達しないと判定することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記第一のサイズは、前記第二のサイズよりも小さいことを特徴とする請求項１乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
前記視差の大きさを示す情報は、前記被写体までの距離を示す情報であることを特徴とする請求項１乃至５のいずれか一項に記載の画像処理装置。
【請求項７】
前記ブロックマッチングで用いられるブロックに含まれる各画素のうち、前記ブロックマッチングの基準となる着目画素との類似度合いが所定の基準を満たさない画素を、前記ブロックマッチングに用いる画素から除外する除外手段を更に有することを特徴とする請求項１に記載の画像処理装置。
【請求項８】
前記除外手段は、前記着目画素との輝度値の差が所定の閾値を超える画素を、前記ブロックマッチングに用いる画素から除外することを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記除外手段は、前記着目画素との画素値の差が所定の閾値を超える画素を、前記ブロックマッチングに用いる画素から除外することを特徴とする請求項７に記載の画像処理装置。
【請求項１０】
前記第１の情報は、画像の各画素位置に対応する視差値を格納した視差マップであり、
前記特定手段は、前記視差マップにおいて視差値の平滑度が低い領域を前記第二の情報を推定する領域として特定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項１１】
互いに異なる複数の視点から同一の被写体を見た場合の画像である複数の画像を示すデータであって、前記被写体から撮像装置に入射する光線の、入射位置、入射方向および強度を示すデータである、ライトフィールドデータを入力する入力手段と、
前記被写体から前記撮像装置に入射する光線の入射位置および方向により定義されるライトフィールド空間において前記ライトフィールドデータが示す線分と、互いに異なる傾きをもつ複数の第一の太さの直線とをマッチングすることで、前記複数の画像の間に生じる視差の大きさを示す第一の情報を推定する推定手段と、
前記ライトフィールド空間において前記ライトフィールドデータが示す線分と、前記第一の太さとは異なる第二の太さの直線とをマッチングすることによって視差が推定される、前記複数の画像中の画像領域を、前記推定手段により推定された前記第一の情報に基づいて特定する特定手段とを有し、
前記推定手段は、前記特定手段により特定された画像領域における前記複数の画像の間の視差の大きさを示す第二の情報を、前記ライトフィールド空間において前記ライトフィールドデータが示す線分と、前記第二の太さの直線とをマッチングすることで更に推定することを特徴とする画像処理装置。
【請求項１２】
前記第一の太さは、前記第二の太さよりも小さいことを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
コンピュータを請求項１乃至１２のいずれか一項に記載の画像処理装置の各手段として機能させるプログラム。
【請求項１４】
互いに異なる複数の視点から同一の被写体を見た場合の画像である複数の画像を示す画像データを入力する入力工程と、
前記複数の画像の間で第一のサイズのブロックマッチングを行うことによりことで、前記複数の画像間の視差の大きさを示す第一の情報を推定する第一の推定工程と、
前記第一のサイズとは異なる第二のサイズの画像領域同士を前記複数の画像の間で比較することによって視差が推定される、前記複数の画像中の画像領域を、前記第一の推定工程で推定された前記第一の情報を用いて特定する特定工程と、
前記特定工程で特定された画像領域における前記複数の画像の間の視差の大きさを示す第二の情報を、前記複数の画像の間で前記第二のサイズの画像領域同士を比較することで更に推定する第二の推定工程とを含み、
前記第一の推定工程は、前記ブロックマッチングにおいて、比較されたブロックの組の間の類似度を示す評価値が最も高いブロックの組との評価値の差が所定の閾値以下であるブロックの組の数が、所定の数以上である場合には、前記評価値の差が所定の閾値以下である複数のブロックの組の中から１組を選択し、該選択された組に基づいて前記視差の大きさを示す情報を推定することを特徴とする画像処理方法。
【請求項１５】
互いに異なる複数の視点から同一の被写体を見た場合の画像である複数の画像を示すデータであって、前記被写体から撮像装置に入射する光線の、入射位置、入射方向および強度を示すデータである、ライトフィールドデータを入力する入力工程と、
前記被写体から前記撮像装置に入射する光線の入射位置および方向により定義されるライトフィールド空間において前記ライトフィールドデータが示す線分と、互いに異なる傾きをもつ複数の第一の太さの直線とをマッチングすることで、前記複数の画像の間に生じる視差の大きさを示す第一の情報を推定する推定工程と、
前記ライトフィールド空間において前記ライトフィールドデータが示す線分と、前記第一の太さとは異なる第二の太さの直線とをマッチングすることによって視差が推定される、前記複数の画像中の画像領域を、前記推定工程で推定された前記第一の情報に基づいて特定する特定工程とを有し、
前記推定工程は、前記特定工程で特定された画像領域における前記複数の画像の間の視差の大きさを示す第二の情報を、前記ライトフィールド空間において前記ライトフィールドデータが示す線分と、前記第二の太さの直線とをマッチングすることで更に推定する第二の推定工程とを含むことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、互いに異なる複数の視点から見た場合の複数の画像を示すデータを用いた画像処理に関する。
【背景技術】
【０００２】
同一の被写体を互いに異なる複数の視点から見た場合の複数の画像を用いて被写体までの距離を推定し、推定した距離情報を画像処理に応用する技術がある。異なる視点に対応する複数の画像から距離情報を推定する方法としては、各画像間に生じた視差を利用する方法がある。ここで視差は、同じ被写体領域に対応する画像領域の位置の、各視点に対応する画像間でのずれを表わす。視差の大きさは被写体までの距離の大きさに依存するため、各画像間に生じた視差の大きさと、各視点間の距離等に基づいて、被写体までの距離を推定することが可能である。視差は、ブロックマッチング法などの方法を用いて、各視点の画像間で同じ被写体領域に対応する画像領域を検出することで求められる。
【０００３】
特許文献１には、視差推定の対象である画像にフィルタを作用させることで生成した、解像度の異なる複数の画像を用いて、ブロックマッチングにおける処理量の低減を行う技術が記載されている。特許文献１に記載の技術では、解像度の低い画像でのブロックマッチングの結果を用いて、解像度が高い画像でのブロックの探索範囲を限定してブロックマッチングを行うことで、解像度の高い視差情報が高速に得られる。また、特許文献２には、ブロックマッチングにおいてマッチング精度が低下しやすい、ブロック内の画素値変動が小さい領域（テクスチャレス領域）の視差値として、仮の視差値を挿入するか、周辺の視差値で補間した値を用いることが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４５１７４４９号
【特許文献２】特許第５３２３２２２号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術では、解像度の低い画像におけるブロックマッチングの際に、距離の異なる複数の被写体が一つのブロック内に含まれる可能性が、解像度が高い画像を用いた場合に比べて高くなってしまう。このような、一つのブロック内に距離の異なる複数の被写体が含まれる領域（遠近混在領域）では、ブロック内の視差が一定ではないため、ブロックマッチングの精度が低下する。そのため、解像度の低い画像でのブロックマッチングの結果を用いて行われた、解像度が高い画像でのブロックマッチングにおいても、遠近混在領域におけるブロックマッチングの精度が低下してしまうという課題がある。また、特許文献２に記載の技術では、テクスチャレス領域で挿入又は補間された視差値が必ずしも実際の視差を反映した値ではないという課題がある。そこで本発明は、同一の被写体を互いに異なる複数の視点から見た場合の複数の画像の間の、視差の推定精度を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の画像処理装置は、互いに異なる複数の視点から同一の被写体を見た場合の画像である複数の画像を示す画像データを入力する入力手段と、前記複数の画像の間で第一のサイズのブロックマッチングを行うことによりことで、前記複数の画像間の視差の大きさを示す第一の情報を推定する推定手段と、前記第一のサイズとは異なる第二のサイズの画像領域同士を前記複数の画像の間で比較することによって視差が推定される、前記複数の画像中の画像領域を、前記推定手段により推定された前記第一の情報を用いて特定する特定手段とを有し、前記推定手段は、前記特定手段により特定された画像領域における前記複数の画像の間の視差の大きさを示す第二の情報を、前記複数の画像の間で前記第二のサイズの画像領域同士を比較することで更に推定し、
前記推定手段は、前記ブロックマッチングにおいて、比較されたブロックの組の間の類似度を示す評価値が最も高いブロックの組との評価値の差が所定の閾値以下であるブロックの組の数が、所定の数以上である場合には、前記評価値の差が所定の閾値以下である複数のブロックの組の中から１組を選択し、該選択された組に基づいて前記視差の大きさを示す情報を推定することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、同一の被写体を互いに異なる複数の視点から見た場合の複数の画像の間の、視差の推定精度を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】画像処理装置の構成を示すブロック図。
【図２】撮像部の例を示す図。
【図３】実施例１の画像処理装置の構成を示すブロック図。
【図４】実施例１の距離導出処理の流れを示すフローチャート。
【図５】実施例１の階層別処理を説明する図。
【図６】実施例１の視差推定処理の流れを示すフローチャート。
【図７】実施例２のマッチング領域を説明する図。
【図８】ライトフィールドデータの例を示す図。
【図９】実施例３の視差推定処理の概念を説明する図。
【図１０】実施例３の画像処理装置の構成を示すブロック図。
【図１１】実施例３の距離導出処理の流れを示すフローチャート。
【図１２】実施例３の視差推定処理の流れを示すフローチャート。
【発明を実施するための形態】
【０００９】
＜実施例１＞
本実施例では、ブロックマッチングにより推定された視差の信頼度に基づいて、ブロックマッチングの条件を変化させて再度ブロックマッチングを行うことにより、ブロックマッチングの精度を向上させる例について説明する。
【００１０】
まず、本実施例で行われる処理の原理について説明する。ブロックマッチング法では、比較対象となる画像領域を変更しながら、２枚の画像間で同じサイズの画像領域同士を比較し、マッチング度合いを表わす評価値が最大（最小）となる画像領域同士が、対応する画像領域として検出される。そして、検出された対応画像領域の画像中の位置の差が、その画像領域に対応する視差として導出される。
【００１１】
ブロックマッチングの精度は、マッチングに用いられるブロックの大きさ（サイズ）に大きく左右され、画像の特徴によって適切なブロックサイズは変化する。例えば、大きなブロックサイズを用いた場合では、ブロック内に遠近混在領域が含まれる可能性が上昇する。遠近混在領域では、ブロック内で被写体の像のずれ量が異なる部分が存在するため、視点の異なる画像において実質的に同じ画像領域を決定することができず、ブロックマッチングの精度が低下する。一方、小さなサイズのブロックを用いてブロックマッチングを行った場合には、テクスチャレス領域において、評価値にほとんど差のない画像領域が多数検出されてしまうために、間違った画像領域を対応画像領域として検出してしまう可能性が高くなってしまう。
【００１２】
そこで、本実施例のブロックマッチングでは、複数の異なるサイズのブロックを用いてそれぞれマッチングを行う階層型のブロックマッチングを採用する。例えば、階層１では、最も小さいサイズのブロックを用いてマッチングを行い、階層が増えるに従って、ブロックサイズを大きくしていく、といった要領である。そして、ある階層で視差の推定が上手くいかなかった領域については、他の階層での視差推定の結果を用いて視差の値を補うようにする。
【００１３】
本実施例では、視差の推定が上手くいかなかった領域、すなわちブロックマッチングが上手くいかなかった領域を、視差マップ（各画素位置に対応する視差の値を画素値として格納した画像データ）の平滑度に基づいて判定する。一般的に、視差の大きさは遠近混在領域以外では緩やかに変化するため、視差マップにおいて平滑度が低い領域は、視差推定が上手くいかなかった領域だと推定することができる。そこで、本実施例の視差推定処理では、周辺での視差マップの平滑度が小さい画素は、正しく視差推定が行われた領域に属する画素であると判定してその後の処理対象から外す。そして、周辺での視差マップの平滑度が大きい画素は、正しく視差推定が行われなかった領域に属する画素であると判定して、次の階層で再度視差を推定する。
【００１４】
上記の処理により、テクスチャレス領域および遠近混在領域の両方で、精度のよい視差マップを得ることが可能になる。なお、本実施例では、得られた視差値が正しいかどうかを調べる尺度として、周辺の視差値の平滑度を用いているが、各画素の視差値の信頼度を示す指標であれば他の指標を用いて処理を行ってもよい。例えば、画像データにおいて、ブロックマッチングで用いるブロック内にエッジ構造が含まれていない場合、間違った視差値が算出される可能性が上昇するので、ブロックマッチングで用いるブロック内のエッジ強度を信頼度の指標として用いるようにしてもよい。
【００１５】
以上が本実施例で行われる処理の概要である。以下、本実施例の具体的な構成について述べる。図１は、本実施例に係る画像処理装置の構成の一例を示す図である。画像処理装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、二次記憶装置１０４、入力インターフェース１０５、出力インターフェース１０６、システムバス１０７を有する。そして、画像処理装置１００は、入力インターフェース１０５および出力インターフェース１０６を介して、外部蓄積手段１０８と表示装置１０９と撮像部１１０とに接続されている。
【００１６】
ＣＰＵ１０１は、以下に述べる各構成部を統括的に制御するプロセッサである。ＲＡＭ１０２は、ＣＰＵ１０１の主メモリ、ワークエリア等として機能するメモリであり、ＲＯＭ１０３は、ＣＰＵ１０１で実行される制御プログラム等を格納するメモリである。ＣＰＵ１０１は、ＲＡＭ１０２をワークメモリとして、ＲＯＭ１０３に格納されたプログラムを実行し、システムバス１０７を介して後述する各部を統括的に制御することで、後述する様々な処理を実行する。
【００１７】
二次記憶装置１０４は、システムバス１０７を介してプログラムの実行に必要なデータの蓄積を行う記憶デバイスである。二次記憶装置１０４としてはＨＤＤの他、光ディスクドライブやフラッシュメモリ等の、読み書き可能な種々の記憶デバイスを用いることができる。入力インターフェース１０５は、例えばＵＳＢやＩＥＥＥ１３９４等のシリアルバスインターフェースである。画像処理装置１００は、この入力インターフェース１０５を介して、外部蓄積手段１０８（例えば、ハードディスク、メモリーカード、ＣＦカード、ＳＤカード、ＵＳＢメモリなどの記憶媒体）からデータを取得する。また、画像処理装置１００は、この入力インターフェース１０５を介して、撮像部１１０によって撮像された画像データを取得する。撮像部１１０は画像を撮像するカメラユニットである。撮像部１１０の構成の詳細については後述する。
【００１８】
出力インターフェース１０６としては、入力インターフェース１０５と同様のシリアルバスインターフェースの他に、ＤＶＩやＨＤＭＩ（登録商標）等の映像出力端子を用いることができる。画像処理装置１００は、この出力インターフェース１０６を介して、外部蓄積手段１０８にデータを送信したり、表示装置１０９（液晶ディスプレイなどの各種出力デバイス）に画像を表示したりする。なお、画像処理装置１００の構成要素は上記以外にも存在するが、本発明の主眼ではないため説明を省略する。
【００１９】
次に、本実施例の撮像部１１０の構成について図２を用いて説明する。撮像部１１０は、同一の被写体を複数の視点から撮像した画像データを得ることができればよく、その構成としては例えば、図２（ａ）に示すように、複数のカメラユニットとしての構成をとることができる。筺体２００には画像処理装置１００が格納されており、筺体２００の前面には、撮像部１１０として、カラー画像データを取得するカメラユニット２０２〜２０５が筺体前面と光軸を垂直にする形で二次元状に備えられている。このような構成のカメラは多眼カメラ又はカメラアレイなどと呼ばれる。ユーザが撮像ボタン２０１を押下すると、カメラユニット２０２〜２０５が被写体の光情報をセンサ（撮像素子）で受光する。そして、受光した信号がＡ／Ｄ変換され、複数のデジタルデータ（撮像画像データ）が同時に取得される。カメラユニット２０２〜２０５はそれぞれ異なる位置に配置されているため、それぞれ異なる視点から撮像した画像データを取得することができる。なお、ここでは多眼カメラの例としてカメラユニットを４個備えるカメラを提示したが、カメラユニットの数は４個に限定されず、異なる位置に複数のカメラユニットを備える構成である限り、視差のついた画像データを取得することが可能である。ただし、全てのカメラユニットが同一直線状に並ぶような配置ではない方が、視差推定のロバスト性の観点から有利である。
【００２０】
また、撮像部１１０としては図２（ｂ）に示すような、メインレンズと撮像素子との間にマイクロレンズアレイを配置した撮像部（プレノプティックカメラ）を用いることもできる。マイクロレンズアレイ２０８は、複数の微小な凸レンズを２次元のアレイ状に並べたものである。メインレンズ２０６はズームレンズ、フォーカスレンズを概念的にまとめて１枚で表したものであり、そこから入射した光線２１０、２１１が、絞り２０７とマイクロレンズアレイ２０８を通過して撮像素子２０９に到達する。プレノプティックカメラではマイクロレンズアレイ２０８の働きにより、メインレンズ２０６の異なる領域を通過した光線を弁別することができる。例えば図２（ｂ）の場合ではメインレンズ２０６の上半分を通過した光線２１０は画素２１３で受光され、下半分を通過した光線２１１は画素２１２で受光される。このように、メインレンズ２０６の異なる領域を通過した光線はそれぞれ撮像素子２０９の異なる画素に入射されるため、両者を弁別することができる。なお、メインレンズ２０６のどの領域を通過した光線が撮像素子２０９のどの画素に入射するかは、レンズの焦点距離やレンズ―センサ間距離などの撮影パラメータから求めることができる。例えば図２（ｂ）では、メインレンズ２０６の上半分を通過した光線は、撮像素子２０９の“Ｒ”と記載された画素に入射し、メインレンズ２０６の下半分を通過した光線は撮像素子２０９の“Ｌ”と記載された画素に入射することが予め分かっている。このような場合では、“Ｒ”と記載された画素だけを抜き出して並べることで、メインレンズの上半分を視点とする画像を得ることができ、“Ｌ”と記載された画素だけを抜き出して並べることで、メインレンズの下半分を視点とする画像を得ることができる。上記で説明したように、プレノプティックカメラでは、得られた画像の各画素を並べ替えることで、複数の異なる視点から被写体を見た場合の画像を得ることができる。
【００２１】
次に、本実施例の画像処理装置１００で行われる処理について述べる。図３は、画像処理装置１００のブロック図であり、図４は画像処理装置１００で行われる処理の流れを示すフローチャートである。画像処理装置１００は、ＣＰＵ１０１がＲＡＭ１０２をワークエリアとしてＲＯＭ１０３に格納されたプログラムを実行することで、図１に示す各構成部を図３に示すブロックとして制御し、図４に示す処理を実行する。なお、全ての処理をＣＰＵ１０１が実行するのではなく、図３に示すブロックの一部又は全てとしての機能を有する専用の処理回路を用意し、その処理回路を用いて処理を行うようにしてもよい。以下、画像処理装置１００で行われる処理の詳細について、図３と図４とを参照して説明する。
【００２２】
ステップＳ４０１では、取得部３０１が、撮像部１１０から入力された画像データを取得する。ここで取得される画像データは、多眼カメラにより撮像された、同一の被写体を複数の異なる視点から見た場合の画像データである多視点画像データである。取得部３０１は、取得した画像データを決定部３０２に出力する。
【００２３】
ステップＳ４０２では、決定部３０２が、取得部３０１から入力された画像データを取得し、視差推定に用いる基準画像と参照画像の決定を行う。ここで、基準画像とは視差推定の基準となる画像であり、ブロックマッチング処理では、基準画像の着目画素に対応する画素が参照画像から探索される。その結果、視差推定の結果として得られる視差マップは、基準画像の視点に対応する視差マップとなる。決定部３０２は、入力された画像データが示す複数の画像から、基準画像と参照画像をそれぞれ決定し、その結果を推定部３０３に出力する。
【００２４】
ステップＳ４０３では、推定部３０３が、フラグマップの初期化を行う。フラグマップとは、視差の推定を行う画素位置を示す２値の画像データであり、視差推定を行う画素位置には１、視差推定を行わない画素位置には０が入力される。最初の視差推定では全ての画素位置について視差推定が行われるため、フラグマップの全ての画素位置の値を１に更新する。なお、フラグマップの形式はこれに限られず、各画素位置が処理対象であるか否かを示すデータであればよい。また、本実施例において、フラグマップはＲＡＭ１０２に格納されているものとする。
【００２５】
ステップＳ４０４では、推定部３０３が、ブロックマッチングに用いるブロックサイズの初期化を行う。本実施例では、小さいブロックからブロックマッチングを始めて、徐々にブロックサイズを大きくしていくので、ここではブロックマッチングに用いるブロックサイズを、あらかじめ設定された最も小さいサイズに設定する。なお、本実施例では、一片を３画素とする正方形を最初のブロックマッチングに用いるブロックサイズとして設定する。
【００２６】
ステップＳ４０５では、推定部３０３が、フラグマップの値と設定されたブロックサイズとに基づいて視差推定の処理を行う。この処理の詳細については後述する。推定部３０３は、推定の結果生成された視差マップを算出部３０４に出力する。
【００２７】
ステップＳ４０６では、算出部３０４が、推定部３０３から入力された視差マップの、各画素位置における平滑度を示す評価値を算出する。ここでは、推定部３０３から入力された視差マップにおける、処理対象の画素を含む画像領域内の視差値の分散の大きさを評価値とする。すなわち、視差値の分散が大きいほど平滑度が低く、視差値の分散が小さいほど平滑度が高いことを意味する。なお、視差値の分散の大きさＶｄ（ｘ，ｙ）は以下の式で表わされる。
【００２８】
【数１】
0006655869.tif 000002
【００２９】
ここで、ｌ（ｘ，ｙ）は、視差マップの画素位置（ｘ，ｙ）における視差の値であり、Ｂは分散の算出に用いる視差マップの画像領域である。ここでは、処理対象の画素を中心とした５画素×５画素の正方領域を、分散の算出に用いる画像領域とする。算出部３０４は、推定部３０３から入力された視差マップが示す視差の値を式（１）に代入して、各画素位置における分散値Ｖｄを算出し、算出した分散値をフラグ更新部３０５に出力する。
【００３０】
ステップＳ４０７では、フラグ更新部３０５が、算出部３０４から入力された分散値に基づいてＲＡＭ１０２に格納されたフラグマップの更新を行う。フラグ更新部３０５は、算出部３０４から入力された分散値が所定の閾値よりも小さい画素については、視差が正しく推定された画素であるとしてフラグマップの値を０に更新する。一方、算出部３０４から入力された分散値が所定の閾値よりも大きい画素については、視差が正しく推定されていない画素であるとして、フラグマップの値は１のままとする。なお、ここで分散の閾値は１［ｐｉｘｅｌ］とする。フラグ更新部３０５は、フラグマップの更新が終了したら、フラグマップの更新が終了したことを示す信号を判定部３０６に出力する。なお、ＲＡＭ１０２には、最新版のフラグマップの他に、更新前のフラグマップにおいて１が入力されていた画素数が保存されているものとする。
【００３１】
ステップＳ４０８では、判定部３０６が、ステップＳ４０７で更新されたフラグマップを参照し、フラグマップが収束したかどうかを判定する。ここで、判定部３０６は、最新のフラグマップで１が入力されている画素の数と、更新前のフラグマップにおいて１が入力されていた画素の数とを比較することで、フラグマップが収束したかどうかを判定する。図５を用いてフラグマップの収束の判定の原理を説明する。
【００３２】
図５は、ある階層ｋにおける視差マップとフラグマップとの関係を表した図である。図５（ａ）において、マップ５０１は、ｋ番目の階層での視差推定の結果に基づいて更新された視差マップであり、画素の色が明るいほど視差が大きい（撮像部に近い）ことを示している。領域５０２は、視差の値にバラつきが発生しており、式（１）に従って視差値の分散を評価した結果、分散値が閾値を超えた領域である。図５（ｂ）において、マップ５０３は、視差マップ５０１に基づいて更新されたフラグマップである。領域５０４は、領域５０２に対応する領域であり、画素に値１が格納されている。フラグマップ５０３において、領域５０４以外の領域には、画素に値０が格納されている。領域５０４に含まれる画素は、ｋ＋１番目の階層において、視差推定を行う対象の画素となる。図５（ｃ）において、マップ５０５はｋ＋１番目の階層における視差推定の結果に基づいて更新された視差マップであり、領域５０６は、式（１）に従って視差の分散を評価した結果、分散値が閾値を超えた領域である。ｋ＋１番目の階層における視差推定の結果、視差が上手く求まらなかった領域が減少していることが分かる。図５（ｄ）において、マップ５０７は、視差マップ５０５に基づいて更新されたフラグマップであり、領域５０８は領域５０６に対応する領域である。領域５０８には、画素に値１が格納されている。
【００３３】
このように、視差推定を行う階層が上位に近づくに従って、視差が上手く求まらない領域、すなわち分散値が大きく、フラグマップにおいて１が入力される領域の大きさは減少していく。そこで、判定部３０６は、フラグマップにおいて１が入力された画素の数が、前の階層に対応するフラグマップからどれだけ減少しているかに基づいて、フラグマップの収束を判定する。具体的には、最新のフラグマップで１が入力されている画素の数と、１つ前の階層に対応するフラグマップで１が入力されている画素の数との差分絶対値を計算し、差分絶対値の大きさが閾値以下になった場合はフラグマップが収束したと判定する。なお、ここで算出した、最新のフラグマップで１が入力されている画素の数は、次の階層での判定の為にＲＡＭ１０２に記憶しておくものとする。フラグマップが収束したと判定された場合は、判定部３０６は視差マップを距離導出部３０８に出力し、ステップＳ４１０に進む。フラグマップが収束していないと判定された場合は、ステップＳ４０９に進む。なお、あらかじめ設定したイタレーション回数が終了したらフラグマップが収束したと判定するようにしてもよい。そのような構成では、視差推定の精度が落ちる場合があるが、一定以上に処理量が大きくなることを防ぐことができる。
【００３４】
ステップＳ４０９では、ブロック更新部３０７が、ブロックマッチングに用いるブロックサイズを更新し、ステップＳ４０４に戻る。本実施例では、ｋ回目のイタレーション、すなわちｋ番目の階層において用いるブロックの大きさを、一辺の長さが（２ｋ＋１）の正方形として設定するものとする。なお、各階層におけるブロックの大きさは上記のものに限られず。例えば、処理量が増大してもより精度の高いマッチングを行いたい場合には、一辺の長さが（２ｋ＋１）の正方形をブロックマッチングに用いるブロックとして設定してもよい。なお、この場合は、一辺の長さが（２ｋ＋１）の正方形を用いる場合よりも、階層数を大きく設定することが望ましい。また、ブロックマッチングに用いるブロックは正方形に限られず、長方形や円形等の正方形とは異なる形状として設定してもよい。また、一番最初の視差推定で用いるブロックサイズを最大に設定し、イタレーション回数に従ってブロックを縮小していくようにしてもよいが、本実施例のように小さなブロックからイタレーション回数に従ってブロックを拡大する構成の方が望ましい。これは、最初に小さいブロックで計算を行った方が、遠近混在領域において間違った視差値が算出される可能性が低下するからである。また、本実施例では、画像の解像度を固定し、階層に応じてマッチングに用いるブロックサイズを変更したが、ブロックサイズを固定して、階層に応じてマッチングに用いる画像の解像度を変更するようにしてもよい。すなわち、一つのブロックに対応する被写体の範囲が各階層で異なるように設定されていれば同様の効果を得ることができる。
【００３５】
ステップＳ４１０では、距離導出部３０８が、判定部３０６から入力された視差マップと、撮像部１１０から入力された撮像パラメータとに基づいて、各画素位置に対応する被写体距離を示す距離マップを生成する。各画素位置に対応する距離ｄ（ｘ，ｙ）［ｍ］は以下の式で表わされる。
【００３６】
【数２】
0006655869.tif 000003
【００３７】
ここで、αは撮像部１１０の画角であり、ｌは基準視点と参照視点の間の視点間距離［ｍ］、ｌｐｉｘは画素位置（ｘ，ｙ）に対応する視差値［ｐｉｘｅｌ］、ｐｐｉｘは視差が付いている方向における、各画像の総画素数である。距離導出部３０８は、撮像部１１０の撮像パラメータと視差マップとが示す値を式（２）に代入し、得られた距離マップを出力して処理を終了する。
【００３８】
以上が本実施例で行われる処理の流れである。次に、推定部３０３で行われる処理（ステップＳ４０５）の詳細について述べる。図６はステップＳ４０５の詳細を示すフローチャートである。
【００３９】
ステップＳ６０１では、推定部３０３が、ＲＡＭ１０２に格納されたフラグマップを参照して、基準画像において視差推定を行う着目画素を決定する。各階層の視差推定においては、フラグマップで１が入力されている画素のうちから着目画素が選択される。本実施例では、各階層の視差推定のはじめには、フラグマップで１が入力されている画素のうち、最も左上の画素が着目画素として選択される。その後、着目画素に対応する視差が決定されるたびに、フラグマップで１が入力されている画素のうちから右下に向かって、それまでに着目画素として選択されていない画素が新たな着目画素として選択される。なお、着目画素の選択の順番はこれに限られず、どのような順番で着目画素を決定してもよい。
【００４０】
ステップ６０２では、推定部３０３が、参照画像において、着目画素と比較する参照画素を決定する。最初の参照画素としては、参照画像の最も左上の画素が選択される。その後、参照画素の評価値が算出されるたびに、右下に向かって、それまでに参照画素として選択されていない画素が新たな参照画素として選択される。参照画素の選択の順番はこれに限られない。なお、着目画素と対応する画素が存在しそうにない画像領域の画素はあらかじめ参照画素の候補から除外しておいてもよい。例えば、参照画像が基準画像よりも水平方向に右側の視点に対応する場合、被写体上の同じ点に対応する画素は、参照画像において基準画像よりも水平方向に右側に存在するはずである。そこで、参照画像において、着目画素の画素位置よりも水平方向に右側に存在する画素のみを参照画素の候補としてもよい。また、あらかじめ被写体が存在する距離の範囲が分かっている場合には、着目画素から大きく離れた位置に存在する画素は参照画素の候補から除外してもよい。
【００４１】
ステップＳ６０３では、推定部３０３が、着目画素と参照画素とを比較し、ブロックマッチングの評価値を計算する。本実施例では、比較対象のブロック間での画素値の分散の大きさを評価値として用いる。分散の計算に用いるブロックは、ＲＡＭ１０２に格納されたブロックサイズが示す大きさを有する、着目画素および参照画素を中心とする正方形の領域とする。着目画素を中心とするブロックと、参照画素を中心とするブロック同士で画素値の分散が計算され、その分散が最も小さくなる組み合わせが、互いに対応するブロックの組として検出される。そして、そのブロックの組に対応する着目画素と参照画素の画素位置の差から、着目画素に対応する視差が導出される。
【００４２】
着目画素と参照画素の画素位置の水平方向の差をｌｘ、垂直方向の差をｌｙとすると、着目画素の画素位置（ｘ，ｙ）、における評価値ＶＢ（ｌｘ、ｌｙ、ｘ、ｙ）は以下の式で表わされる。なおここでは、簡単のため各視点の光軸は互いに平行であるとする。
【００４３】
【数３】
0006655869.tif 000004
【００４４】
ここで、Ｂはマッチングに用いるブロックに含まれる画素の集合を示しており、｜Ｂ｜は領域Ｂに含まれる画素数を示している。また、Ｉｂ（ｘ，ｙ）は基準画像の画素位置（ｘ，ｙ）における画素値を、Ｉｒ（ｘ，ｙ）は参照画像の画素位置（ｘ，ｙ）における画素値を示している。推定部３０３は、式３を用いて導出した評価値を、ＲＡＭ１０２に格納する。なお、ここで算出される評価値は式３に示す画素値の分散値に限られず、二つの画像領域の類似度合いを示す値であれば公知の様々なものが利用可能である。
【００４５】
ステップＳ６０４では、推定部３０３が、参照画像の全ての画素を参照したかどうかを判定する。参照画像の全ての画素が参照されたと判定された場合は、ステップＳ６０５に進む。参照画像の全ての画素が参照されていないと判定された場合は、ステップＳ６０２に戻り、新たな画素を参照画素として決定する。
【００４６】
ステップＳ６０５では、推定部３０３が、ステップＳ６０３で算出された全ての評価値を比較し、最も評価値が小さい画素に対応する視差値を、着目画素の視差値として決定する。着目画素の視差値としては、（ｌｘ，ｌｙ）を格納してもよいし、ベクトル（ｌｘ，ｌｙ）大きさを格納してもよい。
【００４７】
ステップＳ６０６では、推定部３０３が、基準画像の全ての画素について視差値が決定されたか否かを判定する。全ての画素について視差値が決定されたと判定された場合には、ステップＳ６０７に進む。全ての画素について視差値が決定されていないと判定された場合には、ステップＳ６０１に戻り、新たな画素を着目画素として決定する。ステップＳ６０７では、ステップＳ６０５で決定された視差値に基づいて、基準画像の各画素に対応する視差値を格納した視差マップを生成し、距離導出部３０８に出力して処理を終了する。
【００４８】
以上が、本実施例の画像処理装置１００で行われる処理である。以上の処理によれば、同一の被写体を互いに異なる複数の視点から見た場合の複数の画像の間の視差を、高精度に推定することができる。なお、本実施例において、取得部３０１は、互いに異なる複数の視点から同一の被写体を見た場合の画像である複数の画像を示す画像データを入力する入力手段として機能する。また、推定部３０３は、前記複数の画像同士を比較することで、前記複数の画像間の視差の大きさを示す情報を推定する推定手段として機能する。また、算出部３０４は、前記推定手段により推定された前記視差の大きさを示す情報の信頼度を示す評価値を導出する導出手段として機能する。また、フラグ更新部３０５は、前記導出手段により導出された前記評価値が示す信頼度が、所定の基準に達するかどうかを判定する判定手段として機能する。すなわち、算出部３０４とフラグ更新部３０５は、第一のサイズの画像領域同士の比較により推定された視差に基づいて、第二のサイズの画像領域同士の比較により視差を推定する画像領域を特定する特定手段として機能する。
【００４９】
＜実施例２＞
実施例１では、マッチングに用いる領域として、着目画素および参照画素を中心とする正方形の画像ブロックを用いる例について説明した。本実施例では、着目画素ごとにマッチングに用いる領域の形状や、視差マップの平滑度の計算領域を変える場合について説明する。図７は、本実施例におけるマッチング領域の決め方の概念を表した図である。正方形７０１は実施例１のブロックマッチングでも用いられた、着目画素を中心とする５×５画素の画像ブロックである。図７において、白色の画素は着目画素、灰色の画素は正方形７０１の中でマッチングに用いる領域を表している。黒色の画素は、正方形７０１に含まれる画素のうち、マッチングに用いる領域から除外された画素を表している。このように、本実施例では、ブロックマッチングに用いる画像ブロックの中から、マッチングに用いるのにふさわしくない画素を除外することで、マッチングの精度を高めている。
【００５０】
着目画素の座標を（ｘ０，ｙ０）、画像ブロック内の各画素の座標を（ｘｋ、ｙｋ）とすると、推定部３０３は、例えば以下の規則を満たす画素をマッチングに用いる画素として決定する。
【００５１】
【数４】
0006655869.tif 000005
【００５２】
Ｙｂ（ｘ，ｙ）は基準画像の画素位置（ｘ，ｙ）における輝度であり、τは適当な閾値である。式（４）は、着目画素と同じような輝度を有する画素は、似たような視差を有する可能性が高いという仮定に基づいている。つまり、式（４）に基づいてマッチング領域を決定することで、遠近混在領域においても、着目画素と異なる距離に存在する被写体の情報をマッチングに用いる可能性が低下するので、視差推定の精度が向上する。なお、より高精度に視差を求めたい場合には、（Ｒ，Ｇ，Ｂ）すべての値が式（４）を満たす画素をマッチング領域とするようにしてもよい。
【００５３】
なお、算出部３０４における視差マップの平滑度の算出においてもこの技術を応用することができる。すなわち、着目画素と輝度値や画素値の近い画素のみで平滑度を算出することで、遠近混在領域における平滑度がより正確に求められるようになる。
【００５４】
＜実施例３＞
実施例３では、テクスチャレス領域において間違った視差値が算出されてしまう可能性を低減する例について説明する。テクスチャレス領域においては、複数の視差値の候補の間で、評価値の差がほとんど見られないことがある。そのため、テクスチャレス領域では間違った視差が選択されてしまう可能性が高くなる。この性質の為に、算出された視差マップにおいて、テクスチャレス領域では視差値がばらつく。しかし、被写体の条件によっては、間違った視差を示しつつも平滑な領域が視差マップに一部表れてしまい、間違った視差が正しい視差であるとして判定されてしまう場合がある。本実施例の推定部３０３では、このような事象を回避するために以下の処理が行われる。
【００５５】
本実施例の推定部３０３は、マッチング度合いが最も高いとして判定された画像領域同士が示す視差（第一の視差候補）の評価値と、他の視差候補の評価値との差を考慮する。第一の視差候補との評価値の差が所定の閾値以下となる距離候補が、所定の数以上存在する場合には、第一の視差候補の信頼度が低いため、第一の視差候補が一定以上の広さの領域で視差として選択されてしまわないように、選択する視差候補を変更する。例えば、推定部３０３は、第一の視差候補をその画素に対応する視差として決定するのではなく、評価値の差が所定の閾値以下である複数の視差候補からランダムで選択した視差候補を、その画素に対応する視差として決定する。これは、ブロックマッチングで比較された組の中から１組を選択することと等価である。これにより、間違った視差を示す平滑な領域が視差マップに表れてしまい、間違った視差が正しい視差として決定されてしまうことが抑制される。この処理を行った場合のテクスチャレス領域では、視差マップの平滑度が低くなるので、マッチングに用いるブロックサイズを変更して再度視差の推定が行われる。すなわち、より適切なブロックサイズで視差推定が行われる可能性が向上する。
【００５６】
なお、複数の視差候補からの視差の選択は必ずしもランダムに行われる必要はなく、選択される視差の候補に偏りが生じないように選択するのであれば様々な選択方法を利用して良い。
【００５７】
＜実施例４＞
実施例１から実施例３では、異なる視点から見た場合の画像同士でブロックマッチングを行うことにより、各画像の間の視差を求める例について説明した。本実施例では、多視点画像データから生成されたライトフィールドデータを用いて、ライトフィールド空間（以下、ライトフィールドはＬＦと記載する）での処理により各画像の間の視差を求める例について説明する。
【００５８】
ここではまず、ＬＦデータとＬＦ空間の定義について説明する。ＬＦデータは被写体からカメラに入射する光線の入射位置、入射方向および強度の情報を示すデータであり、一般には撮像面上で光線が入射する点の空間座標（ｘ，ｙ）および、光線の方向を示す方向座標（ｕ，ｖ）または（θ，φ）と、強度値Ｌとで表わされる。ここで（ｕ，ｖ）はｘｙ平面に平行で所定の距離だけ離れたｕｖ平面において光線が通過する点の空間座標であり、（θ，φ）は点（ｘ，ｙ）に入射する光線の角度を示す値である。ＬＦデータの表現は上記に示したものに限られず、光線の入射位置、入射方向、および強度が定義されるパラメータを含んでいればどのような表現形式であってもよい。例えば、上記のような４次元空間における点の強度による表現ではなく、より一般化された７次元空間を用いた表現を採用してもよい。この７次元空間のデータは一般にプレノプティック関数と呼ばれ、３次元の空間座標、２次元の方向座標、時刻、波長を含んでいる。
【００５９】
本実施例で用いるＬＦデータはＬ（ｘ，ｙ，ｕ，ｖ）で表わされる４次元量であるが、以降の説明では説明の簡略化の為、断りがない限り１次元の空間座標および１次元の方向座標により表現されるＬＦデータの２次元断面を前提として説明する。一般にこのようなＬＦデータの断面はエピポーラ平面画像（Ｅｐｉｐｏｌａｒ−Ｐｌａｎｅ  Ｉｍａｇｅ）と呼ばれることもあるが、以降では２次元のＬＦデータと呼ぶ。２次元のＬＦデータが有する性質やそれに対する以降で述べる処理は、そのまま本来の４次元のＬＦデータに対して当てはめることができる。また、ＬＦデータは上記の形式で表現されていない場合に、例えば多眼カメラやプレノプティックカメラで取得した多視点画像データから生成することで取得してもよい。上記の説明において、（ｘ，ｙ）は各画像中の画素位置、（ｕ，ｖ）は各画像に対応する視点位置を示しているので、視差画像群の各画素の画素値に上記の対応関係に基づく座標を割り振れば、４次元量のＬＦデータＬ（ｘ，ｙ，ｕ，ｖ）に変換することができる。
【００６０】
図８に２次元のＬＦ空間におけるＬＦデータの例を示す。ここで横軸は空間座標ｘ、縦軸は方向座標ｕであり、各データの濃淡は強度値Ｌを示している。図８に示すように、光線の空間座標および方向座標で定義されるＬＦ空間において、被写体上の同一の点に対応するデータ点は線分を形成する。これは、被写体上の同一の点から出射された光線は、空間座標と方向座標の間に同一の相関関係を有するためである。この線分９の傾きは、異なる視点から入射された光線がセンサ上でどれだけ異なる位置に入射するか、つまり、異なる視点から見た場合の複数の画像の間にどれだけの視差が生じるかを示している。そこで、本実施例では、ＬＦデータがＬＦ空間において示す線分の傾きを調べることにより視差を求める場合について説明する。
【００６１】
まず、本実施例でＬＦデータが示す線分の傾きを調べる方法の原理について述べる。本実施例では、着目画素を通過する直線の傾きを変化させながら、直線上の画素の画素値の分散を評価し、最も画素値の分散が小さい直線に対応する傾きを視差として出力する。しかし、テクスチャレス領域などの、同じ傾きをもつ直線が広い範囲にわたって存在する領域内では、複数の傾きでほぼ差の無い分散値が算出されてしまうため、視差推定の精度が低下してしまう。そこで、本実施例では、分散の評価に用いる直線に幅を持たせ、幅を持った直線が示す領域内に存在する画素の画素値の分散を評価することで、テクスチャレス領域においても正確な傾きを求められるようにする。本実施例では、この時に用いる直線の幅を階層ごとに切り替えることとする。これは、遠近混在領域においては幅の細い直線を用いて分散を求めた方が、テクスチャレス領域においては幅の太い直線を用いて分散を求めた方が高精度な視差推定が望めるからである。この原理を図９に示す。
【００６２】
図９において、データ９０１はＬＦ空間におけるＬＦデータである。そして、領域９０２は分散の算出に用いる直線が示す領域であり幅９０３は分散の算出に用いる直線の幅を示している。また、領域９０４は遠近混在領域を、領域９０５はテクスチャレス領域を示している。図９に示すように、遠近混在領域においては、分散の算出に用いる直線の幅を太くすると、傾きの異なる直線が領域内に含まれる可能性が高くなってしまうため、傾き算出の精度が下がってしまう。一方、テクスチャレス領域においては、細い直線を用いて分散の算出を行うと、正しい傾きの近傍の複数の傾きで分散の違いがほとんどなくなってしまうため、正しい傾きを一意に決定できず、視差推定の精度が低下してしまう。上記の理由から、遠近混在領域においては幅の細い直線を用いて分散を求め、テクスチャレス領域においては幅の太い直線を用いて分散を求めた方が、高精度な視差推定を行うことができる。
【００６３】
以下、本実施例の画像処理装置１００で行われる処理について説明する。なお、実施例１および実施例２と同様の処理については説明を省略する。図１０は本実施例の画像処理装置１００のブロック図であり、図１０は画像処理装置１００で行われる処理の流れを示すフローチャートである。画像処理装置１００は、ＣＰＵ１０１がＲＡＭ１０２をワークエリアとしてＲＯＭ１０３に格納されたプログラムを実行することで、図１に示す各構成部を図１０に示すブロックとして制御し、図１１に示す処理を実行する。
【００６４】
以下、図１０および図１１を参照し、実施例１および実施例２との差について説明する。ステップＳ１１０１では、変換部１００１が、取得部３０１から入力された画像データをＬＦデータに変換する。本実施例では、４次元のＬＦデータＬ（ｘ，ｙ，ｕ，ｖ）を用いることとするが、以下の説明では、簡単の為に２次元のＬＦデータを用いて処理の原理等の説明を行う。なお、ＬＦデータの変換の際に、（ｘ，ｙ）には画像データが示す各画像中の画素位置を、Ｌはその画素位置における画素値を、（ｕ，ｖ）には各画素に対応する視点を示す座標を代入するものとする。変換部１００１は、この変換により生成されたＬＦデータを推定部１００２に出力し、ステップＳ４０３に進む。なお、本実施例ではこのステップで多視点画像データをＬＦデータに変換するが、変換されたＬＦデータを用いずに、二次記憶装置１０４に予め格納されたＬＦデータを読み込んで推定部１００２に入力するようにしてもよい。
【００６５】
ステップＳ１１０２では、推定部３０３が、視差値の推定に用いる直線の幅を初期化する。本実施例では、細い直線から分散値の算出を始めて、徐々に用いる直線の幅を大きくしていくので、ここでは分散値の算出に用いる直線の幅を、あらかじめ設定された最も小さい値に設定する。なお、本実施例では、最初に用いる直線の幅を１画素として設定する。
【００６６】
ステップＳ１１０３では、推定部１００２が、ＬＦデータが示す線分の傾きに基づく視差推定処理を行う。ここで行う処理の詳細については後述する。
【００６７】
ステップＳ１１０４では、サイズ更新部１００３が、視差値の推定に用いる直線の幅を更新し、ステップＳ１１０３に戻る。本実施例では、ｋ回目のイタレーション、すなわちｋ番目の階層において用いる直線の幅を（２ｋ＋１）画素として設定するものとする。なお、処理量が増大してもより精度の高いマッチングを行いたい場合には、（２ｋ＋１）画素を、ｋ番目の階層において用いる直線の幅として設定してもよい。この時、（２ｋ＋１）画素の幅の直線を用いる場合よりも、階層数を大きく設定することが望ましい。
【００６８】
以上が本実施例で行われる処理の流れである。次に、本実施例の推定部１００２で行われる処理（ステップＳ１１０３）の詳細について図１２を参照して説明する。なお、図６に示すステップＳ４０５の処理と同様の処理については説明を省略する。
【００６９】
ステップＳ１２０１では、推定部１００２が着目画素の決定を行う。ここで決定する着目画素は、あらかじめ定められた（ｕ，ｖ）におけるｘｙ平面上での画素である。これは、定められた（ｕ，ｖ）に対応する視点から見た画像中の画素を示している。２次元のＬＦデータでは、ある定められたｕにおける座標ｘを決定することとなる。着目画素を決定する視点としては、全ての視点の中でより中央に近い視点を用いるのが望ましい。例えば、多視点画像データとして、ｕ＝１，２，３，４，５となる、等間隔に並んだ５視点に対応する画像を示すデータが入力されている場合には、ｕ＝３に対応するｘｙ平面を用いるのが望ましい。これは、ｕ＝１やｕ＝５といった端の視点で着目画素を決定した場合、ＬＦデータの端部で視差が求まらない画素が出てきてしまう可能性があるためである。定められたｘｙ平面上での着目画素の決定の仕方はステップＳ６０１と同様であるので、説明を省略する。
【００７０】
ステップＳ１２０２では、推定部１００２が、分散の算出に用いる直線の傾きを決定する。着目画素が存在するｘｙ平面のｕをｕ＝０、着目画素のｘ座標をｘ＝ｘ０とすると、着目画素を通過する直線の式は、ｘ＝ｘ０＋αｕと表わされる。この直線上では、位置がｕだけずれた視点においてαｕだけ視差が付いていることになる。本実施例では、このαを直線の傾きとして変化させ、各着目画素に対応するαを、着目画素に対応する視差を示す値として視差マップに格納する。なお、このステップでは、あらかじめＲＡＭ１０２に格納された複数の傾き候補の中から、分散の算出に用いる傾き候補を推定部１００２が選択するものとする。例えば、本実施例においては、画像間で視差が検出可能な最近接の被写体に対応する傾きから、無限遠の被写体に対応する傾きまでの間で、各傾きが示す直線の間の角度の差が等間隔になるように、２５６の傾き候補が設定されている。このステップでは、傾き候補の中から一つを選択すると、ステップＳ１２０３に進む。なお、選択した傾きについての評価値が計算され、またこのステップに戻ってきた場合は、傾き候補の中でまだ選択されていない候補を新たに選択するものとする。
【００７１】
ステップＳ１２０３では、推定部１００２が、ステップＳ１２０２で決定された傾きの評価値を計算する。ここで計算される評価値は、直線に含まれるＬＦデータの強度値Ｌ（ｕ，ｘ）の分散であり、着目画素位置ｘにおける傾きαの直線の評価値Ｖ（α，ｘ）は以下の式で表わされる。
【００７２】
【数５】
0006655869.tif 000006
【００７３】
式（４）において、Δｕは２次元のＬＦデータのｕ軸方向の幅であり、Δは評価値の算出に用いる直線のｘ軸方向の幅である。推定部１００２は、各パラメータを式４に代入して求めた評価値をＲＡＭ１０２に格納し、ステップＳ１２０４に進む。
【００７４】
ステップＳ１２０４では、推定部１００２が、全ての傾き候補について評価値が計算されたかどうかを判定する。全ての傾き候補について評価値が計算されたと判定された場合は、ステップＳ１２０５に進む。全ての傾き候補について評価値が計算されていないと判定された場合は、ステップＳ１２０２に戻り、新たな傾き候補の選択を行う。
【００７５】
ステップＳ１２０５では、推定部１００２が、ＲＡＭ１０２に格納された全ての傾き候補の評価値を比較し、最も評価値が小さくなる傾きαを、視差マップの着目画素における値として決定する。ステップＳ６０６とステップＳ６０７とで行われる処理は実施例１と同様であるため、説明を省略する。以上の処理によれば、より高精度な視差推定を行うことができる。
【００７６】
＜その他の実施例＞
本発明の実施形態は、上記の実施例に限られるものではなく、様々な実施形態をとることが可能である。例えば、第一の実施例では、多視点画像データが示す複数の画像のうち、選択した基準画像と参照画像のみを比較することで視差値の推定を行ったが、３枚以上の画像を用いて視差値の推定を行ってもよい。この場合は、視差値として各視点間の位置関係を示す単位ベクトルごとの被写体像の移動量が格納される。この場合の、マッチングに用いる評価値は以下の式で表わされる。
【００７７】
【数６】
0006655869.tif 000007
【００７８】
式（６）において、Ｂはマッチングに用いるブロックに含まれる画素の集合を示しており、｜Ｂ｜は領域Ｂに含まれる画素数を示している。ｌは前述の、単位ベクトルごとの被写体像の移動量を示す視差値、（ｒｘｋ，ｒｙｋ）は、基準の視点から見た各視点の相対位置ベクトルを示しており、ｎはマッチングに用いる視点の総数を示している。
【００７９】
また、上記の実施例では、ブロックマッチング法を用いて視差の推定を行ったが、他の方法を用いて視差の推定を行ってもよい。例えば、基準画像から、各階層に応じたサイズのブロックを切り出し、そのブロックに対応する画像領域を、参照画像全体から位相限定相関法を使って導き出し、導き出した対応画像領域の位置から視差を推定するようにしてもよい。
【００８０】
また、上記の実施例では、視差マップの平滑度に基づいてフラグマップを更新し、フラグマップが収束するまで処理を行った結果生成された視差マップを用いて距離マップを生成したが、距離マップ生成処理の順番はこれに限られない。例えば、各階層で距離マップの導出までを行い、各階層で距離マップの平滑度に基づいてフラグマップを更新するようにしてもよい。なお、多視点画像データが示す各視点の間の視差は被写体の距離に依存するので、各画素位置に対応する被写体の距離を格納した距離マップも、視差の大きさを示す情報であると言える。
【００８１】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８２】
１００  画像処理装置
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
３０１  取得部
３０３  推定部
３０４  算出部
３０５  フラグ更新部
【図１】
0006655869.tif 000008
【図２】
0006655869.tif 000009
【図３】
0006655869.tif 000010
【図４】
0006655869.tif 000011
【図５】
0006655869.tif 000012
【図６】
0006655869.tif 000013
【図７】
0006655869.tif 000014
【図８】
0006655869.tif 000015
【図９】
0006655869.tif 000016
【図１０】
0006655869.tif 000017
【図１１】
0006655869.tif 000018
【図１２】
0006655869.tif 000019