(57)【要約】【課題】距離マップの取得方法に依存することなく、任意視点から見たボケの少ない画像を生成すること。【解決手段】被写体を複数視点から撮像した画像データと、任意視点における前記被写体までの距離を示す距離データの変化量とに基づいて、任意視点における画像データを生成する。【選択図】図２
2014142781.tif 000002
【特許請求の範囲】
【請求項１】
被写体を複数視点から撮像した画像データと、前記複数視点とは異なる視点である任意視点における前記被写体までの距離を示す距離データの変化量とに基づいて、前記任意視点における画像データを生成する生成手段を有することを特徴とする画像処理装置。
【請求項２】
前記生成手段は、前記距離データの変化が生じていない領域に対して、前記複数視点から撮像した画像データを合成することにより、前記任意視点における画像データを生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記生成手段は、前記距離データの変化が生じている領域に対して、前記複数視点のうちの一部の視点で撮像した画像データを合成することにより、前記任意視点における画像データを生成することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記複数視点から撮像した画像データと、前記複数視点と前記任意視点との位置関係とに応じて前記距離データを取得する取得手段をさらに有し、
前記生成手段は、前記取得手段で取得した距離データを用いることを特徴とする請求項１から３のいずれか一項に記載の画像処理装置。
【請求項５】
前記任意視点における距離データを測定する測定手段をさらに備え、
前記生成手段は、前記測定手段で測定した距離データを用いることを特徴とする請求項１から３のいずれか一項に記載の画像処理装置。
【請求項６】
前記複数視点と前記任意視点との位置関係を決定する決定手段をさらに備え、
前記生成手段は、前記任意視点における前記距離データの変化量の勾配の強度と角度と、前記決定された位置関係を示すデータとに基づいて、前記任意視点における前記距離データの変化が生じている領域に対して合成する画像データを決定することを特徴とする請求項１から４のいずれか一項に記載の画像処理装置。
【請求項７】
被写体を複数視点から撮像した画像データと、前記複数視点とは異なる視点である任意視点における前記被写体までの距離を示す距離データの変化量とに基づいて、前記任意視点における画像データを生成する生成ステップを有することを特徴とする画像処理方法。
【請求項８】
コンピュータを、請求項１から６のいずれか一項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、視点位置の異なる複数の視点から撮像された画像データをもとに、任意視点位置の画像データを生成するための画像処理装置、画像処理方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、複数の視点で撮像された画像データを用いて、撮像シーンの距離マップを取得し、その距離マップに基づいて、任意視点の画像データを生成する方法がある。しかし、例えば4台のカメラで撮像した画像データから、その4台のカメラの中心に位置する視点の画像データを生成する場合、４台中３台のカメラからは撮像できるが、残り１台のカメラからは撮像できない領域がある。このような領域を隠蔽領域と呼ぶ。そのような状況で、４台のカメラで撮像した画像を合成することにより、中心視点の画像を生成すると、隠蔽領域では画像がボケるという課題がある。これは、隠蔽領域を撮像できていないカメラで撮像した画像データも合成処理に使用していることが原因である。
【０００３】
この課題に対処した従来技術として、次のような技術が知られている。すなわち、複数の視点で撮像された画像データから、各視点における距離マップを生成する。そして、その距離マップに基づいて複数視点の画像データを合成することで、隠蔽領域でボケの発生しない任意視点の画像を生成する（例えば非特許文献１）。非特許文献１では、各視点から見た撮像シーンの距離マップを任意指定位置へ射影変換することにより、撮像視点それぞれの距離マップから任意視点の距離マップを生成する。このように生成された任意視点の距離マップ上では、隠蔽領域は距離情報を持たない領域として現れる（以下、欠落領域と呼ぶ）。何故ならば隠蔽領域はある視点のカメラから撮像できていない領域であるので、その領域についてはその視点の画像データ上では距離情報を取得できていない。そして、そのように取得できていない距離情報の領域を含む距離マップを任意指定位置へ射影変換すると、結局のところ射影変換された領域の距離情報も欠落することになるからである。非特許文献１では、画像合成時に任意視点における距離マップの欠落領域を利用して合成処理を行う。具体的には、画素ごとに距離情報を持つ視点の画像データのみを合成する。係る処理により、隠蔽領域においてもボケの無い任意視点の画像データを生成している。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ISO/IEC JTC1/SC29/WG11, “Report on Experimental Framework for 3D Video Coding”, Doc. N11631, Guangzhou, China, October 2010.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献１は任意視点の距離マップにおける欠落領域を利用することにより、隠蔽領域でボケが発生する課題を解決している。したがって、任意視点において欠落領域の無い距離マップが得られた場合、その距離マップを活用して任意視点の画像データを生成することは出来ない。例えば、生成したい任意視点の位置に距離センサが配置されているとする。距離センサを用いることで、画像データから求める距離マップよりも高精度な距離マップが取得可能である。しかし、非特許文献１の手法では、周辺の視点の画像データから得られる距離マップから任意視点における欠落領域を含む距離マップを生成し、その欠落領域を含む距離マップを介して任意視点の画像データを生成しなければならない。すなわち、非特許文献１の手法は、隠蔽領域を含む撮像シーンにおいて、欠落領域を必ず含む距離マップを使用しなければならないという限定的な手法であり、多様性に欠けるという課題がある。
【課題を解決するための手段】
【０００６】
本発明に係る画像処理装置は、被写体を複数視点から撮像した画像データと、前記複数視点とは異なる視点である任意視点における前記被写体までの距離を示す距離データの変化量とに基づいて、前記任意視点における画像データを生成する生成手段を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、距離情報の取得方法に依存することなくボケのない任意視点の画像を生成することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】画像処理装置の構成の一例を示すブロック図である。
【図２】実施例１に係る情報処理システムの主要な構成要素を示す図である。
【図３】実施例１において、撮像した視点位置と生成したい任意視点位置を示す図である。
【図４】実施例１における視差マップのデータ例を示す図である。
【図５】視差マップ補正の効果を示す図である。
【図６】視点補間部の内部構成の一例を示す図である。
【図７】撮像時におけるカメラ配置などの状況を示す図である。
【図８】領域算出部の原理を示す図である。
【図９】実施例１の処理の流れを示すフローチャートである。
【図１０】視点補間における処理の流れを示すフローチャートである。
【図１１】隠蔽領域を特定する処理の流れを示す図である。
【図１２】画像合成処理における処理の流れを示すフローチャートである。
【図１３】Plenopticカメラの構成例を示す図である。
【図１４】実施例１の効果を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明を実施する形態について説明する。
【実施例１】
【００１０】
図１は、本実施例に係る画像処理装置の構成を示す図である。図１において、画像処理装置はＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、汎用インターフェース（Ｉ／Ｆ）１０４、モニタ１０８、メインバス１０９を備える。汎用Ｉ／Ｆはカメラなどの撮像装置１０５や、マウス、キーボードなどの入力装置１０６、メモリーカードなどの外部メモリ１０７をメインバス１０９に接続する。
【００１１】
以下では、ＣＰＵ１０１がＨＤＤ１０３に格納された各種ソフトウェア（プログラム）を動作させることで実現する各種処理について述べる。
【００１２】
まず、ＣＰＵ１０１はＨＤＤ１０３に格納されているプログラムを起動し、ＲＡＭ１０２に展開するとともに、モニタ１０８にユーザインターフェース（ＵＩ）を表示する。続いて、ＨＤＤ１０３や外部メモリ１０７に格納されている各種データ、撮像装置１０５で撮影された画像データ、入力装置１０６からの指示などがＲＡＭ１０２に転送される。さらに、画像処理アプリケーション内の処理に従って、ＲＡＭ１０２に格納されているデータはＣＰＵ１０１からの指令に基づき各種演算を行う。演算結果はモニタ１０８に表示したり、ＨＤＤ１０３、外部メモリ１０７に格納したりする。
【００１３】
撮像装置１０５は、複数の視点から画像データを撮像できるように構成されている。本実施例は4つの撮像部を持つ4眼撮像装置により撮像された画像データから任意視点の画像データを生成することを例に挙げて説明する。
【００１４】
図２は実施例１の画像処理部の内部構成を示すブロック図である。画像処理部２００は、ＣＰＵ１０１がＲＡＭ１０２に展開されたプログラムを実行することによって機能する。画像処理部２００は、視点相互位置決定部２０１と、視差マップ生成部２０２と、視差マップ補正部２０３と、視点補間部２０４を有する。
【００１５】
画像処理部２００は複数視点画像データと、その複数視点の視点位置データおよび画像データを生成したい任意視点の視点位置データとを入力として、任意視点の画像データを出力とする。本実施例では、４視点から撮像された画像データと、その４視点の視点位置データおよび画像データを生成したい任意視点の視点位置データと、を入力とし、任意視点の画像データを生成して、出力する。以下、「任意視点」とは、撮像された画像データを合成して新たな画像データを生成したい視点のことを指す。
【００１６】
視点相互位置決定部２０１は、入力された４視点の視点位置データと任意視点の視点位置データとに基づいて、画像データを撮像した視点と任意視点との相互位置関係を決定する。図３は本実施例における、画像データを撮像した４視点と任意視点との相互位置関係を示した図である。後述する視点補間部２０４内での処理に、画像データを撮像した４視点と任意視点との相互位置関係を使用するため、式（１）により、任意視点位置から見た各視点位置の角度を決定する。図３において、(xn,yn)は画像データを撮像した各視点の位置座標、(xa,ya)は任意視点の位置座標を示しており、nは各視点を示す変数である。本実施例では、画像データを撮像した４視点全てで、各視点と任意視点との為す角度がx軸方向、y軸方向に対して45度となるように、視点を配置している。すなわち、係る配置となるように４つの撮像部を配置している。なお、上記例は一例であり、撮像部の数を増減してもよいし、角度を変えてもよい。
【００１７】
【数１】
2014142781.tif 000003
【００１８】
視差マップ生成部２０２は、複数視点画像データと、視点相互位置決定部２０１で決定された複数の視点と任意視点との相互位置関係と、に基づいて、任意視点と各視点の視差量を算出し、任意視点の視差マップを生成する。複数視点画像データとは、複数の視点で得られた複数の画像データのことである。視差とは、撮像視点の位置の違いにより撮像された各画像データ内の対象点の見える位置がずれることであり、視差量とはそのずれ量の大きさを指す。視差量は任意視点における対象点までの距離に対応し、手前にある対象点ほど視差量は大きくなり、奥にある対象点ほど視差量は小さくなる。視差マップは任意視点における画像全体における視差量の分布を表す。本実施例では、複数視点画像データと、その複数の視点と任意視点との相互位置関係と、を用いて、ブロックマッチング処理を行い、各視点の画像間で対応関係を求めることで、任意視点における撮像シーンの視差マップを生成する。このように生成される任意視点における撮像シーンの視差マップは、従来技術で説明したように欠落領域が含まれている必要はない。すなわち、本実施例では欠落領域が含まれていないような任意視点の視差マップから、後述するように隠蔽領域を決定する。なお、視差マップの生成は公知の手法を用いて行うことができ、本実施例では視差マップの生成方法についての説明は省略する。また、本実施例では各視点の画像間での対応関係を求めることで視差マップ（距離マップ）を取得する例を説明するが、任意視点における撮像シーンの視差マップ取得方法はこれに限られない。すなわち、距離センサによって任意視点における距離データを測定し、距離マップ（視差マップ）を取得する方法であっても実施可能である。すなわち、本実施例では視差マップの取得方法に依存した処理は行わない。
【００１９】
図４は任意視点における視差マップのデータ例を示す図である。図４に示すように視差マップは画素ごとに、x方向の視差量とy方向の視差量とから成る視差ベクトルを保持している。本実施例では、撮像した視点と任意視点との成す角度が４５度であるため、x方向の視差量とy方向の視差量が同じ値になっているが、視差マップはこれに限らない。
【００２０】
視差マップ補正部２０３は、視差マップ生成部２０２で生成した任意視点の視差マップを補正し、生成する任意視点画像データの画質向上を行う。本実施例では、視差マップに平滑化処理を行うことで、被写体までの距離の精度向上を行う。ここで図５(a)のような撮像シーンにおけるx方向の視差画像を図５(b)に示す。視差画像とは視差マップ全体で視差量を輝度値に変換した画像であり、色が濃いほど視差量が小さく、色が淡いほど視差量が大きくなるように設定している。画像中に類似パターンや周期パターンが含まれていると、画像間で正しい対応がとれず、図５(b)の黒点のように視差マップに誤差が含まれる。このような視差マップを用いて任意視点の画像データを生成すると、視差マップにおける誤差の領域で、画像中の輝度値が不連続になってしまう。このような誤差を含む視差マップに対し、本実施例では平滑化処理を行うことで、視差マップを補正する。補正後のx方向の視差画像を図５(c)に示す。補正後の視差マップを用いて任意視点の画像データを生成することにより、画像中の不連続な領域が解消され、画質が向上する。本実施例では上記手法を選択したが、視差マップ補正手法はこれに限らない。
【００２１】
視点補間部２０４は、４視点で撮像した画像データと視点相互位置関係を示すデータと視差マップ補正部２０３で補正した視差マップに基づいて、任意視点画像データを補間処理によって生成する。
【００２２】
視点補間部２０４の詳細について説明する。
【００２３】
図６は視点補間部２０４の内部構成の一例を示すブロック図である。
【００２４】
変化量導出部６０４は、視差マップ補正部２０３で補正した任意視点の視差マップの全ての画素に於いて、隣接する画素との変化量を導出する。本実施例では変化量として勾配情報を用いる例を説明する。視差マップの勾配を式（２）、勾配強度は式（３）、勾配方向は式（４）によって導出する。ここでDは視差マップ（DisparityMap）を示し、視差マップ中の１点を指す座標の水平方向をu、垂直方向をvとする。
【００２５】
【数２】
2014142781.tif 000004
【００２６】
【数３】
2014142781.tif 000005
【００２７】
【数４】
2014142781.tif 000006
【００２８】
領域決定部６０５は、変化量導出部６０４で導出した視差マップの変化量に基づいて、撮像した視点のうち、一部の撮像視点から見えていない領域を決定する。この一部の撮像視点から見えていない領域を隠蔽領域（オクリュージョン領域）と呼ぶ。本実施例では変化量導出部６０４で求めた勾配（具体的には、勾配強度と勾配方向）をもとに隠蔽領域を決定する。隠蔽領域と撮像画像との関係を図７に示す。以下では、撮像装置をカメラとして説明する。図７(a)は左カメラ７０１と右カメラ７０２の前に、チャートAとチャートBと背景とが配置された撮像時の状況を示している。ここで任意視点を左カメラ７０１と右カメラ７０２との中間に位置する視点７０３と設定する。図７(a)において、チャートB上の点PAから発せられた光は、チャートAの右端を通って左カメラ７０１へと到達する。そのため、左カメラ７０１で撮像した場合の画像は図７(b)のようになる。同様に、チャートB上の点PBから発せられた光は、チャートAの右端を通って右カメラ７０２へと到達する。そのため、右カメラ７０２で撮像した場合の画像は図７(c)のようになる。また、視点７０３は左カメラ７０１と右カメラ７０２の中間に位置するため、視点７０３から見た撮像シーンのx方向の視差画像は図７(d)のようになり、チャートAとチャートBの境界は点PCの位置となる。よって、図７(a)のチャートB上の点PAと点PBに挟まれた領域は、右カメラ７０２からは見えているが、左カメラ７０１からは見えていない領域であることが分かる。また同様に、図７(a)のチャートB上の点PCより右の領域が視点７０３から見える領域であることも分かる。よって、チャートB上の点PCと点PAに挟まれた領域は、視点７０３と右カメラ７０２からは見えているが、左カメラ７０１からは見えていない、隠蔽領域である。この隠蔽領域は視差マップの勾配情報に基づいて決定することが可能である。この原理については後述する。隠蔽領域は、勾配方向と同じ方向に、勾配強度に応じたサイズで存在するので、式（５）によって決定できる。
【００２９】
【数５】
2014142781.tif 000007
【００３０】
画像選択部６０６は、変化量導出部６０４で導出した視差マップの変化量が大きな方向と視点相互位置関係を示すデータとに基づいて、領域決定部６０５で決定した隠蔽領域で、画像合成に使用する画像データを選択する。本実施例では変化量導出部６０４で導出した視差マップの勾配方向GradientAngle(u,v)と、視点相互位置決定部２０１で決定した任意視点位置から見た各視点位置の角度を示す式（１）のAngle[n]とを用いる。すなわち、画像選択部６０６は、GradientAngle(u,v)とAngle[n]とに基づいて画像合成に使用する画像データを選択する。GradientAngle(u,v)とAngle[n]が式（６）を満たす時、その視点nの画像データを画像合成に使用する。ここで変数thresholdは視点を選択する際に用いる角度の閾値であり、本実施例ではthreshold=90度としているが、変数thresholdの値はこれに限らない。
【００３１】
【数６】
2014142781.tif 000008
【００３２】
上記手法により、領域決定部６０５が画像中の隠蔽領域を決定し、画像選択部６０６がその隠蔽領域が見えている視点、見えていない視点を判別することが可能である。この結果を用いて、画像を合成することにより、隠蔽領域でボケの発生しない任意視点の画像データを生成することができる。
【００３３】
画像合成部６０７は、画像中の領域ごとに、視差マップに応じて画像データを合成し任意視点画像データを生成する。隠蔽領域については、画像合成部６０７は、領域決定部６０５で決定した領域ごとに、画像選択部６０６で選択した画像データを視差マップに応じて、画像をずらし、加算平均を求める。その他の領域は、全ての画像を視差マップに応じて、領域を視差量ずらし加算平均を求める。画像合成部における処理の詳細は後述する。
【００３４】
〔領域決定部における処理の原理説明〕
ここでは、領域決定部６０５において、視差マップの勾配情報を用いて隠蔽領域を決定する処理の原理を説明する。図７(a)の一部を図８(a)に示す。ここで、図８(a)より斜線三角形８０１と斜線三角形８０２が相似関係であることが分かる。隠蔽領域の大きさであるチャートB上の点PAと点PCの幅をr、カメラ７０１と任意視点７０３との幅である基線長をlとすると、以下の式（７）、式（８）が成り立つ。ここでd1はカメラからチャートAまでの距離、d2はカメラからチャートBまでの距離を示す。
【００３５】
【数７】
2014142781.tif 000009
【００３６】
【数８】
2014142781.tif 000010
【００３７】
ここで撮像に使用したカメラが図８(b)に示すような、焦点距離fのカメラであるとすると、隠蔽領域の幅rの像面上での大きさr’は以下の式（９）で求められる。
【００３８】
【数９】
2014142781.tif 000011
【００３９】
また、ここで被写体までの距離d、焦点距離f、基線長lと被写体の像面上での視差Dとの関係を図８(c)に示す。図８(c)より視差は以下の式（１０）で表すことが可能である。
【００４０】
【数１０】
2014142781.tif 000012
【００４１】
式（９）、式（１０）より隠蔽領域の大きさであるチャートB上の点PCと点PAの幅の像面上での大きさr’は、距離d1における視差量と距離d2における視差量の差によって決定できることが分かる。また、隠蔽領域は手前の被写体と奥側の被写体が重なる領域の奥側に現れる。勾配方向は、画像平面上で手前領域から奥側領域へ向いているため、隠蔽領域は勾配方向と同じ方向に、勾配強度に応じたサイズで存在することが分かる。
【００４２】
〔本実施例の処理の流れ〕
本実施例の画像処理部の処理の流れについて説明する。
【００４３】
図９は本実施例における処理の流れを示すフローチャートである。図９に示す処理は、ＲＡＭ１０２に展開されたプログラムをＣＰＵ１０１が実行することによって実現される。
【００４４】
ステップＳ９０１において、視点相互位置決定部２０１は、画像データを撮像した４視点の視点位置データと、任意視点位置データとを取得し、画像データを撮像した視点と任意視点との相互位置関係を式（１）により決定する。ステップＳ９０２において、視差マップ生成部２０２は、ステップＳ９０１で決定した相互位置関係と４視点で撮像した画像データとを取得し、画像間でブロックマッチング処理を行うことにより、任意視点位置における視差マップを生成する。ステップＳ９０３において、視差マップ補正部２０３は、ステップＳ９０２で生成された視差マップを取得し、その視差マップを補正する。ステップＳ９０４において、視点補間部２０４は、ステップＳ９０３で補正された視差マップと、４視点で撮像された画像データと、４視点と任意視点の視点位置データとを取得し、任意視点の画像データを生成する。ステップＳ９０５において、画像処理部２００が生成した任意視点画像データを出力し、本処理を終了する。
【００４５】
〔視点補間部の処理の流れ〕
本実施例における視点補間部２０４の処理の流れについて説明する。
【００４６】
図１０は視点補間部２０４における処理の流れを示すフローチャートである。図１０に示す処理は、ＲＡＭ１０２に展開されたプログラムをＣＰＵ１０１が実行することによって実現される。
【００４７】
ステップＳ１００１において、視点補間部２０４は、視差マップ補正部２０３で補正された視差マップを、視差マップデータ入力端子６０１を通して取得する。取得した視差マップデータは変化量導出部６０４に送られる。
【００４８】
ステップＳ１００２において、画像合成時に参照するデータ配列Flag[視点数](画像サイズ)をtrueで初期化する。ここでデータ配列Flagは、画像合成時に画像中のある座標値において、どの視点で撮像された画像を合成するかを参照するために用いられる。したがって、データ配列Flagは任意視点における画像データと同じサイズの配列が視点数分必要である。
【００４９】
ステップＳ１００３において、変化量導出部６０４は、視差マップを格納しているデータ配列において、視差マップ上の１点の座標を指し示す変数を初期化する。視差マップの水平方向の座標を示す変数u、垂直方向の座標を示すvを、それぞれ１に初期化する。変数u、vによって視差マップ上の１点の座標を示す。
【００５０】
ステップＳ１００４において、変化量導出部６０４が、式（２）、式（３）、式（４）により、視差マップ上の１画素(u,v)において隣接する画素との視差量の変化量と、変化の方向とを導出する。
【００５１】
ステップＳ１００５において、領域決定部６０５が、式（５）により、視差マップ上の１画素(u,v)における視差量の変化量を取得し、画素(u,v)を端点とした隠蔽領域を決定する。
【００５２】
ここで、x方向の視差画像である図７(d)の任意視点の視差画像に含まれる点線に囲まれた領域７０５における、変化量導出部６０４と領域決定部６０５との処理（すなわち、ステップＳ１００４、ステップＳ１００５）について、数値を用いて説明する。領域７０５における視差マップを図１１(a)に示す。図１１では、勾配強度GradientStrengthの数値を示している。この視差マップに対して、勾配（視差の変化量）を求めると図１１(b)のようになる。ここで注目画素１１０１では隣接する画素間で視差量に差が無いため、勾配は０となる。注目画素１１０２では右隣りの画素との間に視差量の差が存在するため、強度GradientStrengthが２、方向GradientAngleが０度の勾配が得られる。よって注目画素１００２から０度の方向に２画素の領域を隠蔽領域と決定する。同様の処理を全ての画素で行うことにより、図１１(c)のような隠蔽領域が決定される。なお、図１１の例では、説明を簡素化する趣旨で隠蔽領域について勾配の強度GradientStrengthが２の場合に２画素の領域を隠蔽領域として決定すると説明した。しかしながら、より詳細には、注目画素の距離（すなわち視差）と勾配強度に応じて隠蔽領域の大きさを決定することができる。
【００５３】
ステップＳ１００６において、領域決定部６０５は、カメラおよび視点を指すカメラナンバーnを１に初期化する。
【００５４】
ステップＳ１００７において、画像選択部６０６が、視点相互位置決定部２０１で式（１）により決定した撮像した視点と任意視点との視点相互位置関係を示すデータを、視点相互位置データ入力端子６０２を通して取得する。
【００５５】
ステップＳ１００８において、画像選択部６０６は、取得した視点相互位置関係を示すデータと、変化量導出部６０４で導出した画素(u,v)における視差量の変化方向とに基づき、画像データを選択する。すなわち、画像選択部６０６は、領域決定部６０５で決定した隠蔽領域において、式（６）により、視点nの画像データを、後述する画像合成処理に使用するか判定する。視点nの画像データを画像合成処理に使用しないと判定した場合、ステップＳ１００９において、画像選択部６０６は、次の処理を行う。すなわち、画像選択部６０６は、領域決定部６０５で決定した隠蔽領域に含まれる全画素において、画像合成処理時に参照する配列Flag[n](u,v)にfalseを代入する。画像選択部６０６が視点nの画像を画像合成処理に使用すると判定した場合、配列Flag[n](u,v)はtrueで初期化されているため、次のステップＳ１０１０へと処理が進行する。
【００５６】
ステップＳ１０１０において、画像選択部６０６は、全ての視点で、画像合成に使用するかの判定を行ったかどうか、判定する。本実施例では視点数が４であるため、図１１のステップＳ１０１０ではn≧４となっている。全ての視点で上記判定処理を行っていない場合、ステップＳ１０１１において、n=n+1とすることで、画像選択部６０６は、視点を次の視点へと移動する。画像選択部６０６が全ての視点で上記判定処理を行ったと判定すると、ステップＳ１０１２へと処理が進行する。
【００５７】
ステップＳ１０１２において、視点補間部２０４は、上記の変化量導出処理、領域決定処理、画像選択処理を、視差マップ全体で行ったかを変数u、vに基づき判定する。視差マップ全体で処理が行われていない場合、視点補間部２０４は、ステップＳ１０１３において、変数u、vを更新し、処理対象画素を移動する。本実施例では、視差マップ全体で処理を行うため、変数uを優先的に更新（u=u+1）し、uが視差マップの右端に到達すると、uを１に、vを更新（v=v+1）する。視差マップ全体で処理が行われた場合、ステップＳ１０１４へと処理が進行する。
【００５８】
ステップＳ１０１４において、画像合成部６０７が、撮像された複数視点の画像データを、画像データ入力端子６０３を通して取得する。
【００５９】
ステップＳ１０１５において、取得した複数視点の画像データと、視差マップ補正部２０３で補正された視差マップと、画像選択部６０６で生成した配列Flagとに基づき、画像合成部６０７が画像データを合成し、任意視点の画像データを生成する。
【００６０】
次にステップＳ１０１５において、画像合成部６０７が行う処理の詳細について説明する。
【００６１】
図１２は画像合成部６０７における処理の流れを示すフローチャートである。図１２に示す処理は、ＲＡＭ１０２に展開されたプログラムをＣＰＵ１０１が実行することによって実現される。
【００６２】
ステップＳ１２０１において、画像合成部６０７が生成する任意視点画像用にメモリ領域を確保し、初期化する。ここで任意視点画像を示す画像データの画素数は、撮像した画像と等しいサイズである。ここで確保した画像領域Imageに、各視点の画像データを加算していく。ここで確保した領域のデータが示す画像を、以後、合成画像と呼ぶ。
【００６３】
ステップＳ１２０２において、画像合成部６０７がカメラおよび視点を指すカメラナンバーnを１に初期化する。
【００６４】
ステップＳ１２０３において、画像合成部６０７が視点nで撮像した画像上の水平方向の座標を示す変数u、垂直方向の座標を示すvを、それぞれ１に初期化する。変数u、vによって、視点nで撮像した画像上の１点の座標を示す。
【００６５】
ステップＳ１２０４において、画像合成部６０７が任意視点における視差マップに基づき、視点nで撮像した画像上の１画素(u,v)を、視差量分移動する。ここで移動先の画素を(u’,v’)とする。
【００６６】
ステップＳ１２０５において、画像合成部６０７が視点nで撮像した画像の画素(u,v)の画素値を、合成画像の画素(u’,v’)の画素値に加算するか判定を行う。画像合成部６０７は、ステップＳ１２０５の判定を、画像選択部６０６で生成した配列Flag[n](u’,v’)に基づいて行う。画素値を加算することになれば、画像合成部６０７は、ステップＳ１２０６において画素値を加算する。画素値を加算しない場合は、ステップＳ１２０７へと処理が進行する。また、ステップＳ１２０６において、画像合成部６０７が合成画像の画素(u’,v’)ごとに、画素値が加算された回数をカウントしておく。
【００６７】
ステップＳ１２０７において、画像合成部６０７がステップＳ１２０４、ステップＳ１２０５の処理が、視点nで撮像された画像全体で行われたか、判定する。画像全体で処理が行われていない場合、ステップＳ１２０８において、画像合成部６０７が変数u、vを更新し、処理対象画素を移動する。本実施例では、画像全体で処理を行うため、変数uを優先的に更新（u=u+1）し、uが視差マップの右端に到達すると、uを１に、vを更新（v=v+1）する。画像全体で処理が行われた場合、ステップＳ１２０９へと処理が進行する。
【００６８】
ステップＳ１２０９において、画像合成部６０７が全ての視点で、画像合成処理を行ったかどうか、判定する。本実施例では視点数が４であるため、図１２のステップＳ１２０９ではn≧４となっている。全ての視点で画像合成処理を行っていない場合、ステップＳ１２１０において、n=n+1とすることで、視点を次の視点へと移動する。画像合成部６０７が全ての視点で画像合成処理を行ったと判定すると、ステップＳ１２１１へと処理が進行する。
【００６９】
ステップＳ１２１１において、画像合成部６０７が合成画像上の水平方向の座標を示す変数u’、垂直方向の座標を示すv’を、それぞれ１に初期化する。変数u’、v’によって、合成画像上の１点の座標を示す。
【００７０】
ステップＳ１２１２において、合成画像の画素(u’,v’)の画素値を、その画素(u’,v’)に加算した画像枚数で割ることで、加算した合成画像の平均を算出し、任意視点画像の画素値を求める。
【００７１】
ステップＳ１２１３において、画像合成部６０７がステップＳ１２１２の処理が合成画像全体で行われたか、判定する。画像全体で処理が行われていない場合、画像合成部６０７はステップＳ１２１４において、変数u’、v’を更新し、処理対象画素を移動する。本実施例では、画像全体で処理を行うため、変数u’を優先的に更新（u’=u’+1）し、u’が視差マップの端に到達すると、u’を１に、v’を更新（v’=v’+1）する。画像全体で処理が行われると、任意視点画像が生成されるため、画像合成部６０７、視点補間部２０４の処理を終了する。
【００７２】
本実施例は４眼撮像装置の例を説明したが、撮像装置の数はこれに限らない。また、撮像に用いる撮像装置は同一平面上に配置され、任意視点は撮像視点に囲まれた範囲内にある必要がある。これを満たしていれば、多眼カメラに限らず、Plenopticカメラや多視点での撮像についても、実施可能である。図１３に示すPlenopticカメラでは、被写体面１３０１から発せられた光を結像光学系１３０２によって像側共役面１３０３で結像する。さらにマイクロレンズアレイ１３０４によって撮像素子１３０５上で再結像することにより、多視点で撮像した画像を取得する。
【００７３】
〔実施例１の効果〕
図１４は、本実施例に係る画像処理を施した場合の効果を説明するための図である。図１４(a)は従来技術（非特許文献１）により、欠落領域を含まない高精度な視差マップを用いて生成した任意視点画像である。全ての視点の画像を合成して任意視点画像を生成するため、隠蔽領域であるチャートAとチャートBの境界周辺で、画像がボケていることがわかる。図１４(b)は本実施例を適用して、生成した任意視点画像である。隠蔽領域におけるボケが改善されていることが分かる。
【００７４】
このように、本実施例では、視差マップ（距離マップ）の取得方法に依存することなく、隠蔽領域におけるボケを改善することができる。さらに、欠落領域のない高精度な距離マップを用いて、その距離マップの変化に基づき、隠蔽領域におけるボケを回避することにより、任意視点画像の画質を向上することができる。
【００７５】
＜その他の実施例＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014142781.tif 000013
【図２】
2014142781.tif 000014
【図４】
2014142781.tif 000015
【図６】
2014142781.tif 000016
【図８】
2014142781.tif 000017
【図９】
2014142781.tif 000018
【図１０】
2014142781.tif 000019
【図１１】
2014142781.tif 000020
【図１２】
2014142781.tif 000021
【図１３】
2014142781.tif 000022
【図３】
2014142781.tif 000023
【図５】
2014142781.tif 000024
【図７】
2014142781.tif 000025
【図１４】
2014142781.tif 000026