以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、デジタルカメラ10の構成を説明する図である。デジタルカメラ10は、1つのシーンについて複数の視点数の画像を一度の撮影により生成する。互いに視点の異なるそれぞれの画像を視差画像と呼ぶ。
デジタルカメラ10は、撮影光学系としての撮影レンズ20および手振れ補正用の補正レンズ30を備え、光軸21に沿って入射する被写体光束を撮像素子100へ導く。デジタルカメラ10は、被写体光束の周辺を遮光する絞り22をさらに備える。撮影レンズ20、補正レンズ30および絞り22は、デジタルカメラ10に対して一体的に着脱できる交換式レンズであっても構わない。デジタルカメラ10は、撮像素子100、制御部201、A/D変換回路202、メモリ203、駆動部204、メモリカードIF207、操作部208、表示部209、LCD駆動回路210、AFセンサ211、駆動部250、手振れセンサ252および画像処理部260を備える。
なお、図示するように、撮像素子100へ向かう光軸21に平行な方向をZ軸プラス方向と定め、Z軸と直交する平面において紙面手前へ向かう方向をX軸プラス方向、紙面上方向をY軸プラス方向と定める。当該座標軸はデジタルカメラ10に固定された座標軸であって、図1における撮影における構図との関係はX軸が水平方向、Y軸が垂直方向となる。以降のいくつかの図においては、図1の座標軸を基準として、それぞれの図の向きがわかるように座標軸を表示する。
撮影レンズ20は、複数の光学レンズ群から構成され、補正レンズ30と共に、シーンからの被写体光束をその焦点面近傍に結像させる。図1では撮影レンズ20を説明の都合上、瞳近傍に配置された仮想的な1枚のレンズで代表して表している。
補正レンズ30は、XY面内に移動可能であって、ユーザの手振れによる撮像素子100上での像のブレを光学的に補正する。なお、撮影レンズ20と補正レンズ30とをまとめて撮影光学系と呼ぶことがある。
絞り22は、撮影光学系の瞳近傍に配され、撮像素子100へ入射する被写体光束の周辺領域を遮光する。絞り22の絞り量は可変であって、制御部201からの制御により設定される。当該絞り22の一例は虹彩絞りであるが、これに限られない。
撮像素子100は、撮影光学系の焦点面近傍に配置されている。撮像素子100は、二次元的に複数の光電変換素子が配列された、例えばCCD、CMOSセンサ等のイメージセンサである。撮像素子100は、駆動部204によりタイミング制御されて、受光面上に結像された被写体像を画像信号に変換してA/D変換回路202へ出力する。
A/D変換回路202は、撮像素子100が出力する画像信号をデジタル画像信号に変換してメモリ203へ出力する。画像処理部260は、メモリ203をワークスペースとして種々の画像処理を施し、画像データを生成する。
AFセンサ211は、例えば、被写体空間に対して複数の測距点が設定された位相差センサである。AFセンサ211は、それぞれの測距点において被写体像のデフォーカス量を検出する。なお、撮像素子100がAFセンサを兼ねてもよく、その場合には別個のAFセンサ211を設けなくてよい。
手振れセンサ252は、ジャイロセンサ等を含み、主にユーザの手振れによるデジタルカメラ10の姿勢の変化を検知して、制御部201に出力する。姿勢の変化には、X軸周りのピッチング、Y軸周りのヨーイング、X軸方向およびY軸方向のシフト等が含まれる。
駆動部250は、手振れセンサ252により検知されたデジタルカメラ10の姿勢の変化に対して補正レンズ30を駆動することにより、撮像素子100で撮像される像のブレを補正する。この場合に、制御部201は、手振れセンサ252により検知されたデジタルカメラ10の姿勢の変化の方向および量に応じて、補正レンズ30の移動の方向および量を算出する。駆動部250は制御部201により算出された移動の方向および量で補正レンズ30を駆動する。補正レンズ30の当該移動の方向および量を、手振れ補正量と呼ぶことがある。
制御部201は、デジタルカメラ10を統合的に制御する。例えば、設定された絞り値に応じて絞り22の開口を調整し、AFセンサ211のデフォーカス量に応じて撮影レンズ20を光軸方向に進退させる。また、撮影レンズ20の位置を検出して、撮影レンズ20の焦点距離、フォーカスレンズ位置を把握する。さらに、駆動部204に対してタイミング制御信号を送信し、撮像素子100から出力される画像信号が画像処理部260で画像データに処理されるまでの一連のシーケンスを管理する。
画像処理部260は、選択された画像フォーマットに従って画像データを調整するなどの画像処理一般の機能も担う。生成された画像データは、LCD駆動回路210により表示信号に変換され、表示部209に表示される。また、メモリカードIF207に装着されているメモリカード220に記録される。
一連の撮影シーケンスは、操作部208がユーザの操作を受け付けて、制御部201へ操作信号を出力することにより開始される。撮影シーケンスに付随するAF,AE等の各種動作は、制御部201に制御されて実行される。例えば、制御部201は、AFセンサ211の検出信号を解析して、撮影レンズ20の一部を構成するフォーカスレンズを移動させる合焦制御を実行する。
図2は、撮像素子100の一部を拡大した様子を概念的に表す概念図である。画素領域には2000万個以上もの画素がマトリックス状に配列されている。本実施形態においては、隣接する8画素×8画素の64画素が一つの基本格子110を形成する。基本格子110は、2×2の4画素を基本単位とするベイヤー配列を、Y軸方向に4つ、X軸方向に4つ含む。なお、図示するように、ベイヤー配列においては、左上画素と右下画素に緑フィルタ(Gフィルタ)、左下画素に青フィルタ(Bフィルタ)、右上画素に赤フィルタ(Rフィルタ)が配される。
基本格子110は、視差画素と視差なし画素を含む。視差画素は、撮影レンズ20を透過する入射光束のうち、光軸から偏位した部分光束を受光する画素である。視差画素には、当該部分光束のみを透過させるように、画素中心から偏位した偏位開口を有する開口マスクが設けられている。開口マスクは、例えば、カラーフィルタに重ねて設けられる。本実施形態においては、開口マスクにより、部分光束が画素中心に対して−X側に到達するように規定された視差Lt画素と、部分光束が画素中心に対して+X側に到達するように規定された視差Rt画素の2種類が存在する。一方、視差なし画素は、開口マスクが設けられていない画素であり、撮影レンズ20を透過する入射光束の全体を受光する画素である。
なお、視差画素は、光軸から偏位した部分光束を受光するにあたり、開口マスクに限らず、受光領域と反射領域が区分された選択的反射膜、偏位したフォトダイオード領域など、様々な構成を採用し得る。すなわち、視差画素は、撮影レンズ20を透過する入射光束のうち、光軸から偏位した部分光束を受光できるように構成されていれば良い。
基本格子110内の画素をPIJで表す。例えば、−Xおよび+Yの端の画素はP11であり、+Xおよび−Yの端の画素はP81である。図に示すように、視差画素は以下のように配列されている。
P11…視差Lt画素+Gフィルタ(=G(Lt))
P51…視差Rt画素+Gフィルタ(=G(Rt))
P32…視差Lt画素+Bフィルタ(=B(Lt))
P63…視差Rt画素+Rフィルタ(=R(Rt))
P15…視差Rt画素+Gフィルタ(=G(Rt))
P55…視差Lt画素+Gフィルタ(=G(Lt))
P76…視差Rt画素+Bフィルタ(=B(Rt))
P27…視差Lt画素+Rフィルタ(=R(Lt))
他の画素は視差なし画素であり、視差無し画素+Rフィルタ、視差なし画素+Gフィルタ、視差無し画素+Bフィルタのいずれかである。
撮像素子100の全体でみた場合に、視差画素は、Gフィルタを有する第1群と、Rフィルタを有する第2群と、Bフィルタを有する第3群のいずれかに区分され、基本格子110には、それぞれの群に属する視差Lt画素および視差Rt画素が少なくとも1つは含まれる。図の例のように、これらの視差画素および視差なし画素が、基本格子110内においてランダム性を有して配置されると良い。ランダム性を有して配置されることにより、色成分ごとの空間分解能に偏りを生じさせることなく、視差画素の出力としてRGBのカラー情報を取得することができるので、高品質な視差画像データが得られる。
図3は、2D画像データと視差画像データの生成処理の例を説明する図である。図3を用いて、撮像素子100から出力されるRAW元画像データから、2D画像データと視差画像データを含むRAW画像データセットを生成する処理の概念を説明する。
基本格子110における視差画素および視差なし画素の配列からもわかるように、撮像素子100のデジタル画像信号をその画素配列に一致させてそのまま羅列しても、特定の像を表す画像データにはならない。撮像素子100のデジタル画像信号を、同一に特徴付けられた画素グループごとに分離して寄せ集めてはじめて、その特徴に即した一つの像を表す画像データが形成される。例えば、視差Rt画素と視差Lt画素をそれぞれ寄せ集めると、互いに視差を有する左右の視差画像を示す視差画像データが得られる。このように、同一に特徴付けられた画素グループごとに分離して寄せ集められたそれぞれの画像データを、プレーンデータと呼ぶ。
画像処理部260は、撮像素子100の画素配列順にそのデジタル画像信号が羅列されたRAW元画像データを受け取り、デジタル画像信号を画素値として複数のプレーンデータに分離するプレーン分離処理を実行する。図の左列は、2D画像を示す2D−RGBプレーンデータの生成処理の例を示す。
2D−RGBプレーンデータを生成するにあたり、画像処理部260は、まず視差画素の画素値を除去して、空格子とする。そして、空格子となった画素値を、周辺画素の画素値を用いて補間処理により算出する。例えば、空格子P11の画素値は、斜め方向に隣接するGフィルタ画素の画素値である、P−1−1、P2−1、P−12、P22の画素値を平均化演算して算出する。また、例えば空格子P63の画素値は、X方向およびY方向に1画素飛ばして隣接するRフィルタの画素値である、P43、P61、P83、P65の画素値を平均化演算して算出する。同様に、例えば空格子P76の画素値は、X方向およびY方向に1画素飛ばして隣接するBフィルタの画素値である、P56、P74、P96、P78の画素値を平均化演算して算出する。
このように補間された2D−RGBプレーンデータは、ベイヤー配列を有する通常の撮像素子の出力と同様であるので、その後は2D画像データとして各種処理を行うことができる。すなわち、公知のベイヤー補間を行って、各画素にRGBデータの揃ったカラー画像データを生成する。画像処理部260は、静止画データを生成する場合にはJPEG等の、動画データを生成する場合にはMPEG等の、予め定められたフォーマットに従って一般的な2D画像としての画像処理を行う。
本実施形態においては、画像処理部260は、2D−RGBプレーンデータをさらに色ごとに分離し、上述のような補間処理を施して、基準画像データとしての各プレーンデータを生成する。すなわち、緑色の基準画像プレーンデータとしてのGnプレーンデータ、赤色の基準画像プレーンデータとしてのRnプレーンデータ、および青色の基準画像プレーンデータとしてのBnプレーンデータの3つを生成する。
図の右列は、視差画素データとしての2つのGプレーンデータ、2つのRプレーンデータおよび2つのBプレーンデータの生成処理の例を示す。2つのGプレーンデータは、左視差画像データとしてのGLtプレーンデータと右視差画像データとしてのGRtプレーンデータであり、2つのRプレーンデータは、左視差画像データとしてのRLtプレーンデータと右視差画像データとしてのRRtプレーンデータであり、2つのBプレーンデータは、左視差画像データとしてのBLtプレーンデータと右視差画像データとしてのBRtプレーンデータである。
GLtプレーンデータを生成するにあたり、画像処理部260は、撮像素子100の全出力値からG(Lt)画素の画素値以外の画素値を除去して空格子とする。すると、基本格子110には、P11とP55の2つの画素値が残る。そこで、基本格子110をXY面内で4等分し、−Xおよび+Y側の16画素分をP11の出力値で代表させ、+Xおよび−Y側の16画素分をP55の出力値で代表させる。そして、+Xおよび+Y側の16画素分並びに−Xおよび−Y側の16画素分は、X方向およびY方向に隣接する周辺の代表値を平均化演算して補間する。すなわち、GLtプレーンデータは、16画素単位で一つの値を有する。
同様に、GRtプレーンデータを生成するにあたり、画像処理部260は、撮像素子100の全出力値からG(Rt)画素の画素値以外の画素値を除去して空格子とする。すると、基本格子110には、P51とP15の2つの画素値が残る。そこで、基本格子110をXY面内で4等分し、+Xおよび+Y側の16画素分をP51の出力値で代表させ、−Xおよび−Y側の16画素分をP15の出力値で代表させる。そして、−Xおよび+Y側の16画素分並びに+Xおよび−Y側の16画素分は、X方向およびY方向に隣接する周辺の代表値を平均化演算して補間する。すなわち、GRtプレーンデータは、16画素単位で一つの値を有する。このようにして、2D−RGBプレーンデータよりは解像度の低いGLtプレーンデータとGRtプレーンデータを生成することができる。
RLtプレーンデータを生成するにあたり、画像処理部260は、撮像素子100の全出力値からR(Lt)画素の画素値以外の画素値を除去して空格子とする。すると、基本格子110には、P27の画素値が残る。この画素値を基本格子110の64画素分の代表値とする。同様に、RRtプレーンデータを生成するにあたり、画像処理部260は、撮像素子100の全出力値からR(Rt)画素の画素値以外の画素値を除去して空格子とする。すると、基本格子110には、P63の画素値が残る。この画素値を基本格子110の64画素分の代表値とする。このようにして、2D−RGBプレーンデータよりは解像度の低いRLtプレーンデータとRRtプレーンデータが生成される。この場合、RLtプレーンデータとRRtプレーンデータの解像度は、GLtプレーンデータとGRtプレーンデータの解像度よりも低い。
BLtプレーンデータを生成するにあたり、画像処理部260は、撮像素子100の全出力値からB(Lt)画素の画素値以外の画素値を除去して空格子とする。すると、基本格子110には、P32の画素値が残る。この画素値を基本格子110の64画素分の代表値とする。同様に、BRtプレーンデータを生成するにあたり、画像処理部260は、撮像素子100の全出力値からB(Rt)画素の画素値以外の画素値を除去して空格子とする。すると、基本格子110には、P76の画素値が残る。この画素値を基本格子110の64画素分の代表値とする。このようにして、2D−RGBプレーンデータよりは解像度の低いBLtプレーンデータとBRtプレーンデータが生成される。この場合、BLtプレーンデータとBRtプレーンデータの解像度は、GLtプレーンデータとGRtプレーンデータの解像度よりも低く、RLtプレーンデータとRRtプレーンデータの解像度と同等である。
本実施形態においては、画像処理部260は、これらのプレーンデータを用いて、左側視点のカラー画像データおよび右側視点のカラー画像データを生成する。さらに、上記プレーンデータを時系列的に並べて動画を生成してもよい。
図4は、デフォーカスの概念を説明する図である。視差Lt画素および視差Rt画素は、レンズ瞳の部分領域としてそれぞれ光軸対象に設定された2つの視差仮想瞳のいずれかから到達する被写体光束を受光する。本実施形態の光学系においては、実際の被写体光束はレンズ瞳の全体を通過するので、視差画素に到達するまでは、視差仮想瞳に対応する光強度分布が互いに区別されるのではない。しかし、視差画素は、それぞれが有する開口マスクの作用により、視差仮想瞳を通過した部分光束のみを光電変換した画像信号を出力する。したがって、視差画素の出力が示す画素値分布は、それぞれ対応する視差仮想瞳を通過した部分光束の光強度分布と比例関係にあると考えても良い。
図4(a)で示すように、被写体である物点が焦点位置に存在する場合、いずれの視差仮想瞳を通った被写体光束であっても、それぞれの視差画素の出力は、対応する像点の画素を中心として急峻な画素値分布を示す。像点付近に視差Lt画素が配列されていれば、像点に対応する画素の出力値が最も大きく、周辺に配列された画素の出力値が急激に低下する。また、像点付近に視差Rt画素が配列されていても、像点に対応する画素の出力値が最も大きく、周辺に配列された画素の出力値が急激に低下する。すなわち、被写体光束がいずれの視差仮想瞳を通過しても、像点に対応する画素の出力値が最も大きく、周辺に配列された画素の出力値が急激に低下する分布を示し、それぞれの分布は互いに一致する。
一方、図4(b)に示すように、物点が焦点位置からずれると、物点が焦点位置に存在した場合に比べて、視差Lt画素が示す画素値分布のピークは、像点に対応する画素から一方向に離れた位置に現れ、かつその出力値は低下する。また、出力値を有する画素の幅も広がる。視差Rt画素が示す画素値分布のピークは、像点に対応する画素から、視差Lt画素における一方向とは逆向きかつ等距離に離れた位置に現れ、同様にその出力値は低下する。また、同様に出力値を有する画素の幅も広がる。すなわち、物点が焦点位置に存在した場合に比べてなだらかとなった同一の画素値分布が、互いに等距離に離間して現れる。また、図4(c)に示すように、さらに物点が焦点位置からずれると、図4(b)の状態に比べて、さらになだらかとなった同一の画素値分布が、より離間して現れる。つまり、物点が焦点位置から大きくずれる程、ぼけ量と視差量が増すと言える。別言すれば、デフォーカスに応じて、ぼけ量と視差量は連動して変化する。すなわち、ぼけ量と視差量は、一対一に対応する関係を有する。
また、図4(b)(c)は、物点が焦点位置から遠ざかる方向へずれる場合を示すが、物点が焦点位置から近づく方向へずれる場合は、図4(d)に示すように、図4(b)(c)と比べて、視差Lt画素が示す画素値分布と視差Rt画素が示す画素値分布の相対的な位置関係が逆転する。このようなデフォーカス関係により、視差画像を鑑賞するときに鑑賞者は、焦点位置より奥に存在する被写体を遠くに視認し、手前に存在する被写体を近くに視認する。
図4(b)(c)で説明した画素値分布の変化をそれぞれグラフ化すると、図5のように表される。図において、横軸は画素位置を表し、中心位置が像点に対応する画素位置である。縦軸は各画素の出力値(画素値)を表す。この出力値は上述の通り実質的に光強度に比例する。
分布曲線804と分布曲線805は、それぞれ図4(b)の視差Lt画素の画素値分布と視差Rt画素の画素値分布を表す。図からわかるように、これらの分布は中心位置に対して線対称の形状を成す。また、これらを足し合わせた合成分布曲線806は、図4(b)の状況に対する視差なし画素の画素値分布、すなわち被写体光束の全体を受光した場合の画素値分布と略相似形状を示す。
分布曲線807と分布曲線808は、それぞれ図4(c)の視差Lt画素の画素値分布と視差Rt画素の画素値分布を表す。図からわかるように、これらの分布も中心位置に対して線対称の形状を成す。また、これらを足し合わせた合成分布曲線809は、図4(c)の状況に対する視差なし画素の画素値分布と略相似形状を示す。
図6は、手振れ時および手振れ補正時におけるデフォーカスの概念を説明する図である。図6(a)は、説明のため上記図4(b)を再掲した。図6(b)は、手振れによりデジタルカメラ10がY軸周りの回転すなわちヨーイングした状態を示す。図(c)は、手振れによりヨーイングした状態に対して手振れ補正を実行した状態を示す。
図6(a)に示すように物点の像光が撮像素子100のX方向の中心の位置X0近傍に入力されている場合を考える。図6(a)の状態から、図6(b)に示すように、デジタルカメラ10が手振れにより図中の左回りにヨーイングしたとする。当該手振れにより、物点の像光は撮像素子100上において位置X0から−X方向の位置X1近傍に移動する。
当該ヨーイングを手振れセンサ252が検知することにより、駆動部250が補正レンズ30を撮像素子100の撮像面に平行な+X方向に移動する。これにより、レンズ瞳も図6(c)の矢印の方向に移動し、上記物点の像光が図6(a)の位置X0に近い位置X2に移動する。従って、当該ヨーイングによる像光のブレが補正される。なお、位置X2を位置X0に一致させるように補正レンズ30を移動することが好ましいが、他の条件を優先させる等により完全に一致させなくてもよい。
図7は、図6(c)の破線の円内を拡大して示す拡大図である。なお、図7においては、撮像素子100の撮像面が図中の上下方向となるように描いた。
図7に示すように、補正レンズ30が中心位置から移動すると、像光の入力の位置は手振れ前にほぼ一致するものの、撮像素子100への像光の入力の角度が変わる。補正レンズ30が撮像素子100の撮像面に平行に+X方向に移動したことによって、視差Rt画素に入力する主光線の角度θRおよび視差Lt画素に入力する主光線の角度θLは、手振れ前の主光線の角度から変化する。さらに、図7に示す例において、視差Rt画素に入力する主光線の角度θRが視差Lt画素に入力する主光線の角度θLよりも大きくなっている。
ここで、視差画素の感度には像光が入力する角度に対する依存性があるので、手振れ補正の前後における上記角度の変化によって、視差画素から出力される視差画像の視差量が変化する。よって、連写、動画等の互いに関連付けられた複数の視差画像間において、それぞれの視差画像に対する手振れ補正によって視差量が異なることになる。よって、当該複数の視差画像を見る観察者に不快感または違和感を与えるおそれがある。
そこで、本実施形態においては、手振れ補正量に基づいて視差画像の視差量を補正した補正画像を生成する。この場合に、元の視差画像の視差量よりも補正画像の視差量が小さくなるように補正することが好ましい。さらに、互いに関連付けられた複数の視差画像間で視差量が予め定められた範囲内となるように、複数の視差画像の視差量が補正されることが好ましい。これに代えてまたはこれに加えて、手振れ補正量が大きいほど視差量を低減した補正画像を生成することが好ましい。
図8は、画像処理部260の機能ブロック図である。画像処理部260は、視差画像取得部261、補正量取得部262、補正画像生成部264およびテーブル格納部266を有する。
視差画像取得部261は、メモリ203またはメモリカード220から、RAW画像データセットを取得する。補正量取得部262は、RAW画像データセットのヘッダ部分に書き込まれた手振れ補正量を取得する。補正画像生成部264は、当該手振れ補正量に基づいてRAW画像データセットの視差量を補正した補正画像データセットを生成する。テーブル格納部266は、手振れ補正量と補正する視差量との関係が対応付けられた対応テーブルを格納する。
図9は、手振れ補正量を説明する概念図である。図9において、撮像素子100の撮像面の中心位置に対する、補正レンズ30単体の中心位置の関係が描かれている。
図9において、手振れ補正前は、補正レンズ30の中心位置V0は撮像素子100の中心位置にある。その後、撮影の露光中における手振れ補正により、図中の実線の軌跡を描いて露光終了時に位置V1に来ていたとする。
この場合に、視差量を補正するのに用いる手振れ補正量として、例えば、X軸方向の最大値Vmaxと±の方向の情報とが用いられる。これに代えてまたはこれに加えて、軌跡を時間積分した位置V2のX軸方向の値、言い換えれば時間平均値Vavgと±の方向の情報とが用いられてもよい。また、軌跡自体が手振れ補正量として用いられてもよい。
上記手振れ補正量と、視差の変化量との関係を実験的にまたは解析的に把握することにより、当該手振れ補正量に対する、視差の補正量を設定する。この場合に、手振れ補正量に対して、視差画像の画面全体に対して一律に視差量を補正する補正量を設定してもよいし、画面の領域毎に異なる補正量を設定してもよい。画面の領域毎に異なる補正量を設定する場合に、手振れ補正の方向に応じて画面の当該領域が設定されてもよい。
図10は、デジタルカメラ10の動作のフローチャートの一例を示す。図10の動作は、レリーズボタンの押し下げが操作部208に入力されることにより開始する。
手振れセンサ252はデジタルカメラ10の姿勢を検知して、制御部201に出力する(S102)。制御部201は手振れセンサ252からの出力に基づいて手振れを補正する補正レンズ30の手振れ補正量を算出し、駆動部250は補正レンズ30を駆動して手振れ補正量だけ移動させる(S104)。制御部201は手振れ補正量をメモリ203に記録する(S105)。撮像条件により設定された露光が終了するまで(S106:No)、上記ステップS102からS105が繰り返される。
露光が終了した場合に(S106:Yes)、画像処理部260は、撮像素子100から出力されたRAW元画像データから、図3に示すRAW画像データセットを生成する(S108)。RAW画像データセットがメモリ203またはメモリカード220に書き込まれる。この場合に、RAW画像データセットのヘッダ部分に、手振れ補正量、および、当該RAW画像データセットが連写または動画のうちの1フレームである場合にはその旨、が書き込まれる。
視差画像取得部261は、メモリ203またはメモリカード220に書き込まれたRAW画像データセットを取得する(S109)。さらに、視差画像取得部261は、RAW画像データセットが他のRAW画像データセットと関連付けされているか否かを判断する(S110)。この場合に、視差画像取得部261は、RAW画像データセットのヘッダ部分を参照して、連写または動画のうちの1フレームである旨が書き込まれている場合に、他のRAW画像データセットと関連付けされていると判断し(S110:Yes)、連写または動画のうちの1フレームである旨が書き込まれていない場合に、関連付けされていないと判断する(S110:No)。
視差画像取得部261が他のRAW画像データセットと関連付けされていると判断した場合に(S110:Yes)、補正量取得部262は、RAW画像データセットの手振れ補正量を取得する(S112)。この場合に、補正量取得部262は、RAW画像データセットのヘッダ部分から手振れ補正量を読み出して、対応テーブルに対応した手振れ補正量を算出する。例えば、RAW画像データのヘッダ部分に手振れ補正の軌跡が記録されており、対応テーブルが手振れ補正量の最大値Vmaxまたは平均値Vavgと視差の補正量とを対応付けている場合には、補正量取得部262は、読み出した手振れ補正の軌跡から図8のように最大値Vmaxまたは平均値Vavgを算出して、補正画像生成部264に引き渡す。
補正画像生成部264は、テーブル格納部266に格納されている対応テーブルを参照することにより、上記手振れ補正量に対応する視差の補正量を特定する(S114)。補正画像生成部264は、当該視差の補正量でRAW画像データセットを補正した補正画像データセットを生成する(S116)。
補正画像生成部264は、上記ステップS116で生成した補正画像データセット、または、上記ステップS110で関連付けがないと判断された場合には視差画像取得部261が取得したRAW画像データセットをメモリカード220に保存する(S118)。以上により、本フローチャートによる動作が終了する。
図11は、図10のフローチャートのステップS116で視差量を補正する方法の一例を示す。図12は、図11の視差量の補正による画素値の変化を示す説明図である。
特に、図11および図12の例において、立体調整パラメータを導入することにより、主要被写体のぼけを感じさせない範囲で視差量を任意に補正した補正画像データセットが生成される。
対応テーブルには、手振れ補正量に対して、視差画像全体に対して一律に適用する立体調整パラメータCが対応付けられている。立体調整パラメータCは、0.5<C<1の範囲で設定されることが好ましい。また、当該対応テーブルにおいて、手振れ補正量が大きいほど、立体調整パラメータCは小さいことが好ましい。
図11を用いて、補正画像データセットのうち赤色の右視差画像データおよび赤色の左視差画像データの生成処理の例を示す。
赤色の視差画像データは、視差画像取得部261が取得したRAW画像データセットのRnプレーンデータの画素値と、RLtプレーンデータおよびRRtプレーンデータの輝度値とを用いて生成する。具体的には、例えば左視差画像データの対象画素位置(im,jn)の画素値RLtmnを算出する場合、まず、補正画像生成部264は、Rnプレーンデータの同一画素位置(im,jn)から画素値Rnmnを抽出する。次に、補正画像生成部264は、RLtプレーンデータの同一画素位置(im,jn)から輝度値RLtmnを、RRtプレーンデータの同一画素位置(im,jn)から輝度値RRtmnを抽出する。そして、画像処理部260は、画素値Rnmnに、輝度値RLtmnとRRtmnを立体調整パラメータCで分配した値を乗じて、画素値RLctmnを算出する。具体的には、以下の式(1)により算出する。
RLctmn=2Rnmn×{C・RLtmn+(1−C)・RRtmn}/(RLtmn+RRtmn)…(1)
同様に、右視差画像データの対象画素位置(im,jn)の画素値RRctmnを算出する場合も、補正画像生成部264は、画素値Rnmnに輝度値RLtmnと輝度値RRtmnを立体調整パラメータCで分配した値を乗じて算出する。具体的には、以下の式(2)により算出する。
RRctmn=2Rnmn×{C・RRtmn+(1−C)・RLtmn}/(RLtmn+RRtmn)…(2)
補正画像生成部264は、このような処理を、左端かつ上端の画素である(1、1)から右端かつ下端の座標である(i0,j0)まで順次実行する。
赤色の右視差画像データおよび左視差画像データの生成処理が完了したら、次に緑色の右視差画像データと左視差画像データ、および、青色の右視差画像データと左視差画像データを同様に生成する。以上の処理により、視差情報を含む補正画像データセットが完成する。
図12(a)は、焦点位置から一定量だけずれた位置に存在する物点からのある白色被写体光束を受光した場合の、G(Lt)画素、G(Rt)画素、R(Lt)画素、R(Rt)画素、B(Lt)画素およびB(Rt)画素のそれぞれの出力値を並べたグラフである。
図12(b)は、図12(a)における物点からのある白色被写体光束を受光した場合の、視差無し画素であるR(N)画素、G(N)画素およびB(N)画素の出力値を並べたグラフである。このグラフも、各色の画素値分布を表すと言える。
C=0.8として対応する画素ごとに上述の処理を施すと、図12(c)のグラフで表される光強度分布となる。図12および上記式(1)(2)から分かるように、0.5<C<1の範囲で立体調整パラメータCが1に近いほど視差量が大きく、0.5に近いほど視差量が小さくなる。すなわち、立体調整パラメータCは、視差Lt画素の示す視差量と視差Rt画素の示す視差量とに基づいた視差量を視差なし画素に割り付ける場合の、視差Lt画素の示す視差量と視差Rt画素の示す視差量との重みを調整している。そして、立体調整パラメータCが1に近いほど視差Lt画素の示す視差量と視差Rt画素の示す視差量の一方の重みが大きく、0.5に近いほどそれらの重みが近い視差量が、視差なし画素に割り付けられる。
以上、本実施形態によれば、手振れによる撮像素子100上の像光のブレを補正しつつ、当該手振れ補正による視差量の変化による不快感および違和感を低減することができる。
上記対応テーブルは、手振れ補正量と視差の補正量とが対応付けられている。これに代えて、対応テーブルにおいて、デジタルカメラ10のブレ量と視差の補正量とが対応付けられていてもよい。この場合に、RAW画像データセットのヘッダ部には、デジタルカメラ10のブレ量が書き込まれる。また、デジタルカメラ10のブレ量に対して手振れ補正をした場合における視差変化に基づいた視差の補正量を予め算出しておき、対応テーブルにおいて、デジタルカメラ10のブレ量と当該視差の補正量とが対応付けられる。
上記フローチャートのステップS116において、手振れ補正量が予め定められた範囲にある場合、例えば閾値よりも大きい場合に、視差をなくした2D画像を補正画像にしてもよい。この場合に、RAW画像データセットのうちのRnプレーンデータ、GnプレーンデータおよびBnプレーンデータを補正画像データセットとしてもよい。これに代えて、上記立体調整パラメータCを0.5とすることにより視差をなくしたRGBの画像データを補正画像データセットとしてもよい。一方、手振れ補正量が他の予め定められた範囲にある場合、例えば上記閾値よりも小さい第2の閾値よりも小さい場合に、視差画像を補正しなくてもよい。
立体調整パラメータC以外を用いて視差量を補正してもよい。例えば、RAW元画像データセットが、視差量を画像から分離した視差量のマップとして有している場合に、当該マップの視差量を直接補正して、所定の範囲となるようにしてもよい。
なお、上記実施形態において、補正レンズ30がX軸方向に移動する場合の視差量の補正について説明した。これに代えてまたはこれに加えて、補正レンズ30がY軸方向に移動する場合に、視差量を補正してもよい。この場合に、補正レンズ30のY軸方向の移動と視差量の変化との関係を実験的にまたは解析的に特定しておき、当該関係に基づいてY方向の移動量である手振れ補正量と、視差の補正量との対応テーブルを格納しておけばよい。
上記実施形態において、補正レンズ30はXY面内で移動する例を説明した。これに代えて、補正レンズ30がXY面内に対して傾きながら移動する場合に上記実施形態を適用してもよい。この場合も、補正レンズ30の傾きながらの移動と視差量の変化との関係を実験的にまたは解析的に求めておき、当該関係に基づいてY方向の移動量である手振れ補正量と、視差の補正量との対応テーブルを格納しておけばよい。補正レンズ30を設けることに代えてまたはこれに加えて、撮像素子100を移動することにより手振れを補正する場合に上記実施形態を適用してもよい。
上記実施形態において、RAW画像データセットが他のRAW画像データセットと関連付けされている場合に、視差量を補正した。これに代えて、他のRAW画像データセットと関連付けされているか否かに関わらず、視差量を補正してもよい。
上記実施形態において、撮像素子100から出力された画像信号により生成されたRAW画像データセットの視差量を補正した。これに代えてまたはこれに加えて、撮像素子100以外で生成されたRAW画像データセットを外部から取得し、視差量を補正してもよい。RAW画像データセットに限られず、他の画像フォーマットのデータセットに対して視差量を補正してもよい。
また、上記実施形態においては、視差画像取得部261が、RAW画像データセットのヘッダ部分を参照して、連写または動画のうちの1フレームである旨が書き込まれている場合に、他のRAW画像データセットと関連付けされていると判断した。これに代えてまたはこれに加えて、視差画像取得部261は、RAW画像データセットのヘッダ部分に書き込まれた撮影時間が互いに一定時間内であるものを、互いに関連付けられたRAW画像データセットであると判断してもよい。この場合に、いずれかの撮像時における手振れ補正量が閾値以上であった場合には、当該時間内に撮像して生成されたRAW画像データセットのいずれに対しても2D画像に補正してもよい。一方、いずれの撮像時における手振れ補正量も閾値以内であった場合には、時間的にひとつ前のRAW画像データセットに対して次のRAW画像データセットの視差の変化量が一定以下になるように、当該次のRAW画像データセットの視差量を補正してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。