(57)【特許請求の範囲】
【請求項１】
複数の視点から被写体を撮像して得られた複数の撮像画像データを入力する画像入力手段と、
前記複数の撮像画像データを用いて、前記複数の撮像画像データのそれぞれよりも被写界深度が浅い出力画像データを生成する生成手段とを有し、
前記生成手段は、前記出力画像データにおいて、所定の距離よりも手前に存在する被写体に対応する第一の画像領域と、前記所定の距離よりも奥に存在する被写体に対応する第二の画像領域とで、異なる数の撮像画像データを用いて前記出力画像データを生成し、
前記出力画像データの生成において、前記生成手段が前記第一の画像領域で用いる撮像画像データの数は、前記生成手段が前記第二の画像領域で用いる撮像画像データの数よりも大きいことを特徴とする画像処理装置。
【請求項２】
ピント距離を示すピントパラメータを入力するパラメータ入力手段を更に有し、
前記生成手段は、前記出力画像データにおいて、前記ピント距離よりも手前に存在する被写体に対応する第一の画像領域と、前記ピント距離よりも奥に存在する被写体に対応する第二の画像領域とで異なる数の撮像画像データを用いて、前記出力画像データとして、前記ピントパラメータが示すピント距離にピントが合った画像データを生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記被写体までの距離を示す距離情報を取得する取得手段と、
前記距離情報と前記ピントパラメータとに基づいて、前記第一の画像領域と前記第二の画像領域とを特定する特定手段とを更に有し、
前記生成手段は、前記特定手段により特定された前記第一の画像領域と前記第二の画像領域とに基づいて、前記出力画像データを生成することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記取得手段は、前記複数の撮像画像データに基づいて前記距離情報を取得することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記生成手段は、前記第一の画像領域において、前記第二の画像領域において前記出力画像データの生成に用いる撮像画像データの数よりも多くの数の撮像画像データを用いて、前記出力画像データを生成することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記生成手段は、前記第一の画像領域において少なくとも２つの撮像画像データを用いて、更に、前記第二の画像領域において１つの撮像画像データを用いて前記出力画像データを生成することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記生成手段は、前記第二の画像領域において、撮像画像データにぼけを付与するフィルタ処理を行うことにより前記出力画像データを生成することを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
前記生成手段は、前記第一の画像領域において、複数の撮像画像データをシフトさせ、重み付き加算することにより、前記出力画像データを生成することを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
前記出力画像データのぼけ量にかかる絞りパラメータを入力する手段を更に有し、
前記生成手段は、前記絞りパラメータに基づいて前記出力画像データを生成することを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１０】
請求項１乃至９のいずれか一項に記載の画像処理装置としての機能を有し、前記複数の撮像画像データを撮像する複数の撮像部を有することを特徴とする撮像装置。
【請求項１１】
複数の視点から被写体を撮像して得られた複数の撮像画像データを入力する画像入力工程と、
前記複数の撮像画像データを用いて、前記複数の撮像画像データのそれぞれよりも被写界深度が浅い出力画像データを生成する生成工程とを含み、
前記生成工程では、前記出力画像データにおいて、所定の距離よりも手前に存在する被写体に対応する第一の画像領域と、前記所定の距離よりも奥に存在する被写体に対応する第二の画像領域とで、異なる数の撮像画像データを用いて前記出力画像データを生成し、前記出力画像データの生成において、前記生成工程が前記第一の画像領域で用いる撮像画像データの数は、前記生成工程が前記第二の画像領域で用いる撮像画像データの数よりも大きいことを特徴とする画像処理方法。
【請求項１２】
コンピュータを請求項１乃至９のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の視点から撮像された撮像画像データから、被写界深度の浅い画像データを生成する技術に関する。
【背景技術】
【０００２】
従来、撮像画像データに対して画像処理を施すことにより被写界深度の浅い画像データを生成する方法が提案されている。特許文献１では、一枚の画像データに対して距離に応じて異なるぼけを付与するフィルタ処理を施すことにより、被写界深度の浅い画像データを生成している。特許文献２では、視点の異なる複数枚の画像データから生成した被写体の３次元モデルに対してレンダリング処理を施すことにより、被写界深度の浅い画像データを生成している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１―１０１９４号
【特許文献２】特願２００９−２１１２５４号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１では手前側をぼかした場合に、被写体の境界が不自然にぼけるなどの画質的な課題がある。特許文献２では手前側も自然にぼかせるものの、計算コストが大きいという課題がある。
そこで、本発明は、複数の視点から被写体を撮像して得られた複数の撮像画像データから、出力画像を示す出力画像データを生成する際に、画質を保ちつつ、計算コストを低減させることを目的とする。
【課題を解決するための手段】
【０００５】
上記の目的を達成するために本発明の画像処理装置は、複数の視点から被写体を撮像して得られた複数の撮像画像データを入力する画像入力手段と、前記複数の撮像画像データを用いて、前記複数の撮像画像データのそれぞれよりも被写界深度が浅い出力画像データを生成する生成手段とを有し、前記生成手段は、前記出力画像データにおいて、所定の距離よりも手前に存在する被写体に対応する第一の画像領域と、前記所定の距離よりも奥に存在する被写体に対応する第二の画像領域とで、異なる数の撮像画像データを用いて前記出力画像データを生成し、前記出力画像データの生成において、前記生成手段が前記第一の画像領域で用いる撮像画像データの数は、前記生成手段が前記第二の画像領域で用いる撮像画像データの数よりも大きいことを特徴とする画像処理装置。
【発明の効果】
【０００６】
本発明によれば、複数の視点から被写体を撮像して得られた複数の撮像画像データから、出力画像を示す出力画像データを生成する際に、画質を保ちつつ、計算コストを低減させることが可能となる。
【図面の簡単な説明】
【０００７】
【図１】本実施形態における画像処理装置のシステム構成を示すブロック図。
【図２】本実施形態における撮像装置を表す図。
【図３】本実施形態における概要機能構成を表す図。
【図４】本実施形態における処理の流れを示すフローチャート。
【図５】本実施形態における奥行き推定処理の流れを示すフローチャート。
【図６】本実施形態における視点位置の間隔と被写体までの距離との関係を示す図。
【図７】本実施形態における領域分割処理の流れを示すフローチャート。
【図８】本実施形態における領域分割画像の例を示す図。
【図９】本実施形態における深度変更処理の流れを示すフローチャート。
【図１０】本実施形態における基準画像とデプス画像を用いた深度変更処理の流れを示すフローチャート。
【図１１】本実施形態におけるデプス値とフィルタ径の関係を示す図。
【図１２】本実施形態における多視点画像を用いた深度変更処理の流れを示すフローチャート。
【図１３】本実施形態における仮想絞りパラメータに含まれる重み係数の例を示す図。
【図１４】実施例２における深度変更処理の流れを示すフローチャート。
【図１５】本実施形態におけるブロック分割の例。
【発明を実施するための形態】
【０００８】
［実施例１］
本実施例では、図２に示すような複数のカメラユニット２０１〜２０９をからなる撮像装置１０７で撮像した複数の画像データ（撮像画像データ）を基に被写界深度の浅い画像を生成する。この際、ピントを合わせたい距離（仮想ピント距離）よりも手前側の領域では複数の画像データを、奥側の領域では一枚の画像データをそれぞれ使用し被写界深度の浅い画像データ（合成画像データ）を生成する。なお、本実施例においてカメラユニット２０１〜２０９は格子状に等間隔になるよう配置されており、各カメラユニットの上下軸、左右軸、光軸は全て同じ方向であるとする。そして、撮像画像データは、パンフォーカスで撮像された画像データであることが望ましい。また、本実施例で生成する合成画像データは、カメラユニット２０５で撮像された画像データの被写界深度を浅くしたものである。
【０００９】
まず、本実施例における画像処理装置のシステム構成例について、図１を用いて説明する。同図において、ＣＰＵ１０１は、ＲＡＭ１０２をワークメモリとしてＲＯＭ１０３及びハードディスクドライブ（ＨＤＤ）１０５に格納されたプログラムを実行し、システムバス１１２を介して後述する各構成を制御する。これにより、後述する様々な処理が実行される。ＨＤＤインタフェイス（Ｉ／Ｆ）１０４は、ＨＤＤ１０５や光ディスクドライブなどの二次記憶装置を接続する、例えばシリアルＡＴＡ（ＳＡＴＡ）等のインタフェイスである。ＣＰＵ１０１は、ＨＤＤＩ／Ｆ１０４を介して、ＨＤＤ１０５からのデータ読み出し、およびＨＤＤ１０５へのデータ書き込みが可能である。さらにＣＰＵ１０１は、ＨＤＤ１０５に格納されたデータをＲＡＭ１０２に展開し、同様に、ＲＡＭ１０２に展開されたデータをＨＤＤ１０５に保存することが可能である。そしてＣＰＵ１０１は、ＲＡＭ１０２に展開したデータをプログラムとみなし、実行することができる。撮像インタフェイス（Ｉ／Ｆ）１０６は、図２に示すような複数のカメラユニット２０１〜２０９からなる撮像装置１０７などを接続する、例えばＵＳＢやＩＥＥＥ１３９４などのシリアルバスインタフェイスである。ＣＰＵ１０１は、撮像Ｉ／Ｆ１０６を介して撮像装置１０７を制御し、撮像を行うことが可能である。さらに、ＣＰＵ１０１は、撮像Ｉ／Ｆを介して撮像装置１０７から撮像したデータを読み込むことが可能である。入力インタフェイス（Ｉ／Ｆ）１０８は、キーボードやマウスなどの入力デバイス１０９を接続する、例えばＵＳＢやＩＥＥＥ１３９４等のシリアルバスインタフェイスである。ＣＰＵ１０１は、入力Ｉ／Ｆ１０８を介して入力デバイス１０９からデータを読み込むことが可能である。出力インタフェイス（Ｉ／Ｆ）１１０は、画像表示装置等の出力デバイス１１１を接続する、例えばＤＶＩやＨＤＭＩ等の映像出力インタフェイスである。ＣＰＵ１０１は、出力Ｉ／Ｆ１１０を介して出力デバイス１１１にデータを送り、表示を実行させることができる。
【００１０】
次に、本実施例に係る一連の処理を行う際の概要機能構成について、図３を用いて説明する。ＣＰＵ１０１の機能部としての撮像画像データ入力部３０１は、撮像画像データ３０７および撮像装置情報３０８を撮像装置１０７あるいはＲＯＭ１０３、ＨＤＤ１０５等の記憶装置から取得する。なお、撮像画像データ３０７は撮像装置１０７によって異なる視点位置（撮像位置）から被写体を撮像して得られる複数の画像を示すデータである。また、撮像装置情報３０８は、撮像装置１０７の撮影時の画角や視点位置を含む情報である。
【００１１】
また、ＣＰＵ１０１の機能部としてのパラメータ入力部３０２は、仮想ピントパラメータ３０９および仮想絞りパラメータ３１０を、入力デバイス１０９あるいはＲＯＭ１０３、ＨＤＤ１０５等の記憶装置から取得する。仮想ピントパラメータ３０９は仮想的なピント面までの距離を含む情報である。即ち、仮想ピントパラメータ３０９は、一連の処理による出力画像のピント距離の情報を含む。また、仮想絞りパラメータ３１０は奥行きに応じて画像をぼかす際に使用するフィルタ径及び重み係数に関する情報を含む。ＣＰＵ１０１の機能部としての距離推定処理部３０３は、撮像画像データ３０７および撮像装置情報３０８に基づき、ステレオマッチング法により撮像シーンのデプス値を推定し、デプス画像データ３１１を生成する。デプス画像データ３１１は、撮像装置１０７から被写体までの画素ごとの距離に係る情報を有する。デプス画像データ３１１の距離情報は、領域ごと（例：矩形ブロックごと）に設定されていても良い。ＣＰＵ１０１の機能部としての領域分割処理部３０４は、仮想ピントパラメータ３０９及びデプス画像データ３１１に基づき、撮像シーンを仮想的なピント面よりも手前の領域（前ぼけ領域）と奥の領域（後ぼけ領域）に分割し、領域分割画像データ３１２を生成する。即ち、前ぼけ領域は、仮想的なピント面よりも手前に被写体が存在する領域を、後ぼけ領域は、仮想的ピント面よりも奥に被写体が存在する領域を示している。ＣＰＵ１０１の機能部としての深度変更処理部３０５は、撮像装置情報３０８、仮想ピントパラメータ３０９、仮想絞りパラメータ３１０、領域分割画像データ３１２に基づいて、撮像画像データ３０７を用いて、深度変更画像データ３１３を生成する。最後に、ＣＰＵ１０１の機能部としての画像出力部３０６は、深度変更画像データ３１３（出力画像データ３１３）を出力デバイス１１１へ出力したり、ＨＤＤ１０５へ保存したりする。
【００１２】
図４は、本実施例の画像処理装置における一連の処理の動作手順を示すフローチャートである。詳細には、図４のフローチャートに示す手順を記述したコンピュータ実行可能なプログラムをＲＯＭ１０３あるいはＨＤＤ１０５からＲＡＭ１０２上に読み込んだ後に、ＣＰＵ１０１によって該プログラムを実行することによって当該処理が実行される。以下、図４に示す各処理について説明する。
【００１３】
まずステップＳ４０１において、撮像画像データ入力部３０１は、撮像装置１０７を用いて撮像画像データ３０７を撮像し、撮像画像データ３０７およびカメラユニット２０１〜２０９の画角や視点位置を含む撮像装置情報３０８を取得する。あるいは、予めＲＯＭ１０３やＨＤＤ１０５などの記録装置に撮像画像データ３０７および撮像装置情報３０８を保持しておき、これを撮像画像データ入力部３０１が取得するようにしてもよい。
【００１４】
次にステップＳ４０２において、パラメータ入力部３０２は入力デバイス１０９から仮想ピント距離を含む仮想ピントパラメータ３０９および画像合成時に使用する各画像データの重み係数を含む仮想絞りパラメータ３１０を取得する。あるいは、予めＲＯＭ１０３やＨＤＤ１０５などの記録装置に仮想ピントパラメータ３０９および仮想絞りパラメータ３１０を保持しておき、これをパラメータ入力部３０２が取得するようにしてもよい。
【００１５】
次にステップＳ４０３において、距離推定処理部３０３はＳ４０１で取得した撮像画像データ３０７および撮像装置情報３０８を用いて距離推定処理を行い、撮像したシーンの奥行きを推定しシーンのデプス画像データ３１１を生成する。Ｓ４０３で行う距離推定処理については後に詳述する。
【００１６】
次にステップＳ４０４において、Ｓ４０２で取得した仮想ピントパラメータ３０９およびＳ４０３で取得したデプス画像データ３１１を基に、シーンを２領域に分割した領域分割画像データ３１２を生成する。ここで、２領域とはピントを合わせたい距離よりも被写体が手前側に存在する領域（前ぼけ領域）と、ピントを合わせたい距離よりも被写体が奥側に存在する領域（後ぼけ領域）である。Ｓ４０４で行う領域分割処理については後に詳述する。
【００１７】
次にステップＳ４０５において、撮像装置情報３０８、仮想絞りパラメータ３１０、領域分割画像データ３１２を基に、撮像画像データ３０７から撮像画像データ３０７よりも被写界深度の浅い深度変更画像データ３１３（出力画像データ３１３）を生成する。Ｓ４０５で行う画像合成処理については後に詳述する。
【００１８】
次にステップＳ４０６において、画像出力部３０６は深度変更画像データ３１３を出力デバイス１１１に表示したり、ＨＤＤ１０５などの記録装置に記録したりする。
【００１９】
＜距離推定処理＞
ここでは、ステップＳ４０３で行う距離推定処理について説明する。距離推定処理では、視点位置の異なる複数の撮像画像データ３０７を基に、撮像したシーンの距離を推定することでデプス画像データ３１１を生成する。距離推定方法としては既存の方法を利用する。例えば、ステレオ法、マルチベースラインステレオ法などが利用可能である。本実施例では、ステレオ法によって距離推定を行う。以下、図５に示すフローチャートを用い、距離推定処理の詳細を説明する。
【００２０】
まずステップＳ５０１において、撮像画像データ３０７から処理に使用する２画像を選択する。本実施例では撮像装置１０７の中央のカメラユニット２０５で撮像された画像データと、カメラユニット２０５と横方向に隣接するカメラユニット２０６で撮像された画像データを選択するものとする。以下、前者を基準画像を示す基準画像データ、後者を対象画像を示す対象画像データと呼ぶ。
【００２１】
次にステップＳ５０２において、最初の画素を注目画素として初期化する。
【００２２】
次にステップＳ５０３において、全画素で距離値が求められているかを判定する。全画素で距離値が求められている場合はステップＳ５０７へ進み、距離値の求められていない画素がある場合はステップＳ５０４へ進む。
【００２３】
次にステップＳ５０４では、まず基準画像の注目画素とその周囲の画素からなる領域を選択する。そして選択した領域を用いて対象画像とパターンマッチングを行い、対象画像中から注目画素に対応する画素（対応画素）を求める。
【００２４】
次にステップＳ５０５において、撮像装置情報３０８と注目画素とＳ５０４で求めた対応画素を基に注目画素に対応する距離値ｐを求める。距離値ｐは、図６に示すα、β、ｓを基に以下の式で表される。
【００２５】
【数１】
0005906033.tif 000002
【００２６】
ここで、αはカメラユニット２０５の水平画角、基準画像データの視点位置、注目画素の座標から算出される角度である。βはカメラユニット２０６の水平画角、対象画像データの視点位置、対応画素の座標から算出される。ｓはカメラユニット間の距離であり、基準画像データおよび対象画像データの視点位置より算出される。
【００２７】
次にステップＳ５０６において、注目画素を次の画素へ更新しＳ５０３へ戻る。
【００２８】
最後にステップＳ５０７において、デプス画像データ３１１を出力する。
【００２９】
なお、本実施例ではステップＳ５０１において、カメラユニット２０５、２０６で撮像した画像データを選択し距離推定を行ったが、距離推定可能なカメラの組み合わせはこれに限るものではない。例えば、対象画像データとして他のカメラユニットで撮像した画像データを選択しても構わない。また、本実施例では画素ごとに距離情報を取得するとしたが、矩形ブロック等の領域ごとに距離情報を取得しても良い。
【００３０】
＜領域分割処理＞
ここでは、ステップＳ４０４で行う領域分割処理について説明する。領域分割処理では、仮想ピントパラメータ３０９及びデプス画像データ３１１を基に、ピントを合わせたい距離よりも被写体が手前側に存在する領域（前ぼけ領域）と、奥側に存在する領域（後ぼけ領域）にシーンを分割し、領域分割画像データ３１２を生成する。以下、図７に示すフローチャートを用い、領域分割処理の詳細を説明する。
【００３１】
まずステップＳ７０１において、前ぼけ領域の領域特定を行う。仮想ピントパラメータ３０９より得られる仮想ピント距離をｄｐ、デプス画像データ３１１の画素値をＤ（ｉ，ｊ）とする。このとき、Ｄ（ｉ，ｊ）≦ｄｐとなる画素（ｉ，ｊ）と、の周囲ｒ１画素以内に含まれる画素の集合を前ぼけ領域とする。ここで、ｒ１はあらかじめ定めたぼけの最大半径とする。
【００３２】
次にステップＳ７０２において、後ぼけ領域の領域特定を行う。デプス画像データ３１１において前ぼけ領域以外の画素の集合を後ぼけ領域とする。
【００３３】
最後にステップＳ７０３において、前ぼけ領域、後ぼけ領域にそれぞれ異なるラベル値を割り当てた画像データを領域分割画像データ３１２として出力する。
【００３４】
以上の処理によって得られる領域分割画像データ３１２の例を図８に示す。デプス画像データ３１１を距離値ｄ０、ｄ１、ｄ２からなる画像データとし、仮想ピントパラメータ３０９から得られる仮想ピント距離ｄｐの値がｄ２であるとする。この場合、デプス画像データ３１１において距離値がｄ２となる画素とその周囲ｒ画素以内に含まれる画素の集合が前ぼけ領域、それ以外の画素の集合が後ぼけ領域となる。
【００３５】
なお、本実施例ではステップＳ７０１において、前ぼけ領域を決める際の距離ｒはあらかじめ定めた値としたが、距離値ｒの設定方法はこれに限るものではない。例えば、仮想ピントパラメータより、ぼけの最大半径を計算しこの値を距離ｒとしてしてもよい。こうすることで、仮想ピントパラメータに応じて最適な前ぼけ領域を設定可能である。
【００３６】
＜深度変更処理＞
ここでは、ステップＳ４０５で行う深度変更処理について説明する。深度変更処理では、領域分割画像データ３１２を参照しながら、前ぼけ領域と後ぼけ領域とでそれぞれ異なる処理を適用し深度の浅い深度変更画像データ３１３（出力画像データ３１３）を生成する。その際、前ぼけ領域では撮像画像データ３０７の中から視点位置の異なる複数の画像データを合成することにより、深度変更画像データ３１３の画素値を算出する。また、後ぼけ領域ではカメラユニット２０５で撮像した基準画像データとデプス画像データ３１１とを用いることにより深度変更画像データ３１３の画素値を算出する。以下、図９に示すフローチャートを用い、深度変更処理の詳細を説明する。
【００３７】
まずステップＳ９０１において、領域分割画像データ３１２を複数のブロックに分割する。後述するステップＳ９０５及びステップＳ９０６処理はここで定めたブロック毎に行う。ブロックの分割例を図１５（ａ）に示す。
【００３８】
次にステップＳ９０２において、注目ブロックを最初のブロックに初期化する。
【００３９】
次にＳ９０３において、全ブロックに対して後述するステップＳ９０５あるいはステップＳ９０６の処理が行われたか否かを判定する。全ブロックで処理が行われている場合はステップＳ９０８へ進み、そうでない場合はＳ９０４へ進む。
【００４０】
次にステップＳ９０４において、注目ブロック内に前ぼけ領域が含まれているかを判定する。含まれていない場合はステップＳ９０５へ進み、含まれている場合はステップＳ９０６へ進む。
【００４１】
ステップＳ９０５では、一つの基準画像データとデプス画像データ３１１とを用いて深度を浅くする処理を行い、深度変更画像データ３１３の注目ブロックに対応する領域の画素値を算出する。詳細は後述する。
【００４２】
ステップＳ９０６では、複数の撮像画像データ３０７を用いて深度を浅くする処理を行い、深度変更画像データ３１３の注目ブロックに対応する領域の画素値を算出する。詳細は後述する。
【００４３】
ステップＳ９０７では、注目ブロックを次の未処理ブロックへ更新し、ステップＳ９０３へ戻る。
【００４４】
最後にステップＳ９０８において、深度変更画像データ３１３を出力する。
【００４５】
以上説明した処理を行うことで、複数の画像データからより被写界深度の浅い画像データを生成する際に、ぼけの画質を保ちつつ計算コストを低減させる効果を奏する。
【００４６】
＜＜基準画像データとデプス画像データを用いた深度変更処理＞＞
ステップＳ９０５で行う前ボケ領域を含まないブロックに対して行う深度変更処理について説明する。ここでは、デプス画像データ３１１を参照することで被写体の前後関係を考慮しつつ基準画像データを平滑化することにより、深度変更画像データ３１３の注目ブロックに対応する画素値を算出する。以降、深度変更画像データ３１３の画素（ｉ，ｊ）に対応する画素値をＨ（ｉ，ｊ）と表す。以下、図１０に示すフローチャートを用い、処理の詳細を説明する。
【００４７】
まずステップＳ１００１において、注目画素（ｉ，ｊ）を最初の画素に初期化する。
【００４８】
次にステップＳ１００２において、注目ブロック内の全画素について処理を行ったか否かを判定する。全画素が処理済みである場合はステップＳ９０５を終了し、そうでない場合はステップＳ１００３へ進む。
【００４９】
次にステップＳ１００３において、以降の処理で使用する変数ｖａｌ，ｓｕｍをそれぞれ０に初期化する。ここで、ｖａｌは出力画素値を計算するための変数、ｓｕｍは以降で述べる係数の和を計算するための変数である。
【００５０】
次にステップＳ１００４において、近傍画素（ｉ’，ｊ’）を初期化する。近傍画素（ｉ’，ｊ’）は、注目画素（ｉ，ｊ）からｒ２画素以内の領域（以降近傍領域と呼ぶ）に含まれる画素である。ここでｒ２はあらかじめ定めた定数とする。
【００５１】
次にステップＳ１００５において、近傍領域内の全画素を近傍画素として参照したかを判定する。未参照の画素がある場合はステップＳ１００６へ進み、全画素を参照している場合はステップＳ１０１１へ進む。
【００５２】
次にステップＳ１００６において、注目画素（ｉ，ｊ）と近傍画素（ｉ’，ｊ’）のフィルタ径を算出する。フィルタ径は、仮想絞りパラメータに含まれる値であり、デプス値に応じて異なる値を持つ。デプス値とフィルタ径の関係を図１１に示す。フィルタ径Ｒｆは、仮想ピントパラメータ３０９に含まれる仮想ピント距離ｄｐと、デプス画像データ３１１から得られる各画素のデプス値が等しい場合に０となり、デプス値が仮想ピント距離から前後に離れるにつれ大きな値となる。画素（ｘ、ｙ）に対応するデプス値をＤ（ｘ，ｙ）とすると、注目画素のフィルタ径Ｒｆ１、近傍画素のフィルタ径Ｒｆ２は以下の式により求められる。
【００５３】
【数２】
0005906033.tif 000003
【００５４】
次にステップＳ１００７において、近傍画素（ｉ’，ｊ’）が処理対象画素か否かの判定を行う。処理対象画素の場合はステップＳ１００８へ進み、処理対象画素でない場合はステップＳ１０１０へ進む。判定には、注目画素及び近傍画素のデプス値、注目画素のフィルタ径ｒｆを用いた以下に示す２つの判定式を用いる。
【００５５】
【数３】
0005906033.tif 000004
【００５６】
ここで、式（４）は近傍画素が注目画素より手前側か奥側かを判定している。近傍画素が注目画素よりも手前側の場合は「真」、奥側の場合は「偽」となる。式（５）は注目画素と近傍画素の間の距離が注目画素のフィルタ径よりも大きいか否かを判定している。注目画素と近傍画素の間の距離が注目画素のフィルタ径よりも小さければ「真」、大きければ「偽」となる。これらの式により、オクルージョンの有無を判定している。式（４）または式（５）が真の場合は、近傍画素（ｉ’，ｊ’）を処理対象画素とみなしステップＳ１００８へ進む。式（４）式（５）がともに偽の場合は、近傍画素（ｉ’，ｊ’）を処理対象画素から除外しステップＳ１０１０へ進む。なお、対象画素の選択方法はこれに限るものではない。例えば、式（４）のみを判定式に用いてもよいし、オクルージョンの有無を判定する他の判定式を用いるなどしても構わない。
【００５７】
次にステップＳ１００８において、処理対象画素となる近傍画素の重み係数ｃを算出する。ここでは、注目画素から近傍画素までの距離を用いて下記の式に従い係数ｃを算出する。
【００５８】
【数４】
0005906033.tif 000005
【００５９】
なお、上式ではぼけを滑らかにするためにガウシアンを使用しているが、係数の決め方はこれに限るものではない。例えば、フィルタ係数を多項式関数に基づいて決定するなどしてもよい。
【００６０】
次にステップＳ１００９において、変数ｖａｌ，ｓｕｍの値をそれぞれ下記のように更新する。
【００６１】
【数５】
0005906033.tif 000006
【００６２】
ここでＩ（ｘ’，ｙ’）は近傍画素の画素値である。
【００６３】
次にステップＳ１０１０において、近傍画素（ｉ’，ｊ’）を更新しステップＳ１００５へ戻る。
【００６４】
ステップＳ１０１１では、深度変更画像データ３１３における注目画素（ｉ，ｊ）の画素値Ｈ（ｉ，ｊ）を次式に従い算出する。
【００６５】
【数６】
0005906033.tif 000007
【００６６】
ここでは、近傍画素の重み付け和を係数の合計値で正規化することにより、処理対象画素の有無による画素値のばらつきを補正している。
次にステップＳ１０１２において、近傍画素（ｉ，ｊ）を更新しステップＳ１０１２へ戻る。
【００６７】
以上の処理により、深度変更画像データ３１３の注目ブロックに対応する領域を生成する。
【００６８】
なお、本実施例ではステップＳ１００４において、近傍領域を決める際の距離値Ｒの値はあらかじめ定めた値としたが、距離値Ｒの設定方法はこれに限るものではない。例えば、フィルタ径の最大値をＲにしてもよい。こうすることで、仮想ピントパラメータに応じて最適な大きさの近傍領域を設定可能である。
【００６９】
＜＜多視点画像データを用いた深度変更処理＞＞
ステップＳ９０６で行う前ボケ領域を含むブロックに対して行う深度変更処理について説明する。ここでは、合成開口法を用いて複数の撮像画像データ３０７からより深度の浅い画像データを生成する例を述べる。本処理によって、深度変更画像データ３１３の注目ブロックに対応する領域を生成する。以下、図１２に示すフローチャートを用い、処理の詳細を説明する。
【００７０】
まずステップＳ１２０１において、ステップＳ４０２で取得した仮想絞りパラメータ３１０に含まれる重み係数を用いて、画像データを合成する際に用いる重み係数ｗを設定する。仮想絞りパラメータ３１０に含まれる重み係数は複数の撮像画像データ３０７に対する係数のセットである。図１３に示すように、撮像画像データ３０７の視点位置をそれぞれＰｍと表し、Ｐｍに対応する撮像画像データ３０７を画像データＩｍとする。このとき、Ｉｍに対応する重み係数の値をＷ（ｍ）とする。ここでＷ（ｍ）はＰ４を中心としたガウス関数に従い、総和が１になるよう正規化された値を設定している。Ｗ（ｍ）をガウス関数に従うように設定することにより、合成時に画像データを滑らかにぼかすことができる。
【００７１】
次にステップＳ１２０２において、撮像装置情報３０８を基に各画像データのシフト量を算出する。ピント距離をｄとした際の画像データＩｍの水平方向のシフト量△ｉ（ｍ、ｄ）および垂直方向のシフト量△ｊ（ｍ、ｄ）は以下の式で表される。
【００７２】
【数７】
0005906033.tif 000008
【００７３】
ここで、Ｗ、Ｈはそれぞれ画像データの水平方向、垂直方向の画像サイズ、θｗはカメラユニットの水平視野角、θｈはカメラユニットの垂直視野角である。また、（ｓｍ，ｔｍ）はｘｙ平面上におけるＰｍの座標、（ｓ‘，ｔ’）はカメラユニット２０５の視点位置Ｐ４の座標である。
【００７４】
次にステップＳ１１０３において、ステップＳ１１０２で求めたシフト量、ステップＳ１１０１で求めた重み係数を用いて、撮像画像データ３０７に対して重み付け加算処理を行い、注目ブロック内の深度変更画像データ３１３の画素値Ｈ（ｉ，ｊ）を算出する。画素値Ｈ（ｉ，ｊ）は以下の式で算出する。
【００７５】
【数８】
0005906033.tif 000009
【００７６】
以上の処理により、深度変更画像データ３１３の注目ブロックに対応する領域を生成する。
【００７７】
なお、ここでは撮像画像データを合成開口撮像法を用いて合成する方法について述べたが、他の方法用いても構わない。例えば、撮像画像データから視点位置を内装するように補間画像データを生成し、合成開口撮像法によって撮像画像データと補間画像データとを合成することにより深度変更画像データを生成しても構わない。あるいは、撮像画像データからシーンの３次元的なモデルを生成し、それを用いてレンダリングを行うことで深度変更画像データを生成しても構わない。これらの方法を用いた場合には、よりぼけの画質が良好な深度変更画像データを得ることができる。
【００７８】
＜＜深度変更処理の比較＞＞
一般的に、前ぼけ領域に対する深度変更処理は複数の撮像画像データに基づく処理であるため、計算コストは高い。仮に、前ぼけ領域に対する深度変更処理を基準画像データとデプス画像データとに基づいて行ったとすると、ぼけ領域の画質は著しく悪いものとなる。これは前ボケになる手前の被写体に、後ろの被写体の一部が隠れているためである。前ボケにより本来後ろの被写体の隠れていた部分が見えてくるはずだが、その情報がないため画質が著しく低下してしまう。複数の撮像画像データを用いることで、隠れた部分の情報を基準画像データ以外の撮像画像データから得ることができる。これにより前述した前ボケ領域の画質の低下を防ぐことができる。
【００７９】
一方で、後ぼけ領域に対する深度変更処理は基準画像データとデプス画像データとに基づく処理であるため、計算コストは低い。仮に、後ぼけ領域に対する深度変更処理を複数の撮像画像データに基づいて行ったとしても、ぼけ領域の画質の向上は高くない。これは、手前の被写体に後ろの被写体の一部が隠れてしまうが、この隠れた部分は後ろの被写体をぼかす際に画質にほとんど影響しないためである。
【００８０】
本実施例は、前ぼけ領域に対して複数の撮像画像データに基づいて深度変更処理を行う一方で、後ぼけ領域に対して基準画像データとデプス画像データとに基づいて深度変更処理を行う。これにより、ぼけ領域の画質を維持しながら、深度変更処理に要する計算コストを低減させることができる。
【００８１】
＜変形例＞
・本実施例では、後ぼけ領域に対して基準画像データとデプス画像データとに基づいて深度変更処理を行うこととした。しかしながら、後ぼけ領域に対する深度変更処理はこれに限らず、前ぼけ領域に対する深度変更処理に要する計算コストよりも低い計算コストで実現される深度変更処理であれば、何であっても構わない。例えば、後ぼけ領域に対する深度変更処理をＮ枚の撮像画像データに基づく処理とし、前ぼけ領域に対する深度変更処理をＭ枚（Ｍ＞Ｎ）の撮像画像データに基づく処理としても良い。
【００８２】
［実施例２］
実施例１ではシーンを前ぼけ領域と後ぼけ領域の２領域に分割した。実施例２では、これらの境界に中間領域を設定することで、前ぼけ領域と後ぼけ領域の境界を滑らかに接続する。
【００８３】
実施例２では実施例１と比較し、ステップＳ４０５で行う深度変更処理が異なる。以下、深度変更処理の詳細を説明する。
【００８４】
実施例１ではブロック毎に異なる処理を適用して深度を浅くしていたが、実施例２ではブロックの境界部分において処理結果をブレンドすることでブロックの境界を滑らかに接続する。以下、図１４に示すフローチャートを用い詳細を説明する。
【００８５】
まずステップＳ１４０１において、領域分割画像データ３１２を基に画像データを複数の領域に分割する。まずは、ステップＳ９０２と同様に複数のブロックに分割した後、前ぼけ領域を含むブロックと前ぼけ領域を含まない領域とに分類し、その境界領域を中間領域とする。分割結果の例を図１５（ｂ）に示す。ここでは、前ぼけ領域を含むブロックと、前ぼけ領域を含まないブロックの境界から距離ｒ内に含まれる画素の集合を中間領域としている。
【００８６】
次にステップＳ１４０２において、以降の処理を行う注目領域を初期化する。
【００８７】
次にステップＳ１４０３において、全領域で処理が行われたかを判定する。全領域で処理が行われている場合はステップＳ１４０９へ進み、未処理の領域がある場合はステップＳ１４０４に進む。
【００８８】
次にステップＳ１４０４において、領域の判定を行う。注目領域が前ぼけ領域を含まない場合はステップＳ１４０５へ進み、前ぼけ領域を含む場合はステップＳ１４０６へ進み、中間領域の場合はステップＳ１４０７へ進む。
【００８９】
ステップＳ１４０５では、実施例１のステップＳ９０５と同様に基準画像データとデプス画像データとを用いて深度変更処理を行う。
【００９０】
ステップＳ１４０６では、実施例１のステップＳ９０６と同様に複数の撮像画像データ３０７を用いて深度変更処理を行う。
【００９１】
ステップＳ１４０７では、実施例１のステップＳ９０５の方法と実施例１のステップＳ９０６の方法とで２種類の深度変更処理を行い、その結果をブレンドする。ステップＳ９０５の方法で得られた画像データＨ１、ステップＳ９０６の方法で得られた画像データＨ２とすると、深度変更画像データＨは下記の式に基づいて算出する。
【００９２】
【数９】
0005906033.tif 000010
【００９３】
ここで、αは中間領域の範囲を決める距離ｒと、前ぼけ領域を含まない領域から画素（ｉ，ｊ）までの距離によって定まる０以上１以下の係数である。αの値は画素（ｉ，ｊ）が前ぼけ領域を含まない領域に近いほど１に近づき、前ぼけ領域を含む領域に近づくほど０に近い値となる。
【００９４】
次にステップＳ１４０８では、注目領域を更新しステップＳ１４０３へ戻る。
【００９５】
最後にステップＳ１３０９において、深度変更画像データ３１３を出力する。
【００９６】
以上説明した処理を行うことで、複数の画像からより被写界深度の浅い画像を生成する際に、前ぼけ領域と後ぼけ領域との境界を滑らかに接続しながら、ぼけの画質を保ちつつ計算コストを低減させる効果を奏する。
【００９７】
＜その他の変形例＞
実施例１及び実施例２ではステップＳ４０３の距離推定処理によりデプス画像データ３１１を生成していたが、デプス画像データ３１１の生成方法はこれに限るものではない。例えば、シーンの奥行きを外部のセンサを利用して測定し、それを基にデプス画像データを生成してもかまわない。あるいは、新たに撮像装置１０７に測距センサを設け、それを基にデプス画像データを生成してもかまわない。
【００９８】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005906033.tif 000011
【図２】
0005906033.tif 000012
【図３】
0005906033.tif 000013
【図４】
0005906033.tif 000014
【図５】
0005906033.tif 000015
【図６】
0005906033.tif 000016
【図７】
0005906033.tif 000017
【図８】
0005906033.tif 000018
【図９】
0005906033.tif 000019
【図１０】
0005906033.tif 000020
【図１１】
0005906033.tif 000021
【図１２】
0005906033.tif 000022
【図１３】
0005906033.tif 000023
【図１４】
0005906033.tif 000024
【図１５】
0005906033.tif 000025