以下、本発明の実施例について図面を参照しながら説明する。
まず後述する具体的な実施例1〜3の説明に先立ち、各実施例において複数の視差画像を取得するために用いる撮像装置について説明する。この撮像装置は、撮像光学系の射出瞳のうち互いに異なる領域(瞳領域)を通過した複数の光束を撮像素子における互いに異なる光電変換部(画素またはサブ画素)で光電変換することで、一度の撮像により複数の視差画像を生成可能である。以下の説明において、撮像光学系と撮像素子とをまとめて撮像系という。
図2には、撮像系における撮像素子の画素と撮像光学系の射出瞳との関係を示す。図2において、MLはマイクロレンズであり、CFはカラーフィルタである。EXPは撮像光学系の射出瞳を示している。G1,G2はサブ画素(以下それぞれ、G1画素およびG2画素という)であり、1つのG1画素と1つのG2画素とが互いに対(組)をなしている。
撮像素子には、G1画素とG2画素の組(画素組)が複数配列されている。一組のG1画素とG2画素は、互いに共通の(つまりは画素組ごとに1つずつ設けられた)マイクロレンズMLを介して射出瞳EXPと共役な関係を有する。さらに、G1画素は射出瞳EXPにおける瞳領域であるP1領域と共役な関係を有し、G2画素は射出瞳EXPにおける別の瞳領域であるP2領域と共役な関係を有する。撮像素子に配列された複数のG1画素をまとめてG1画素群ともいい、同様に撮像素子に配列された複数のG2画素をまとめてG2画素群ともいう。
図3には、射出瞳EXPの位置に厚さが無い仮想的なレンズとしての薄肉レンズが設けられていると仮定した場合の撮像系を模式的に示している。G1画素は射出瞳EXPのうちP1領域を通過した光束を受光し、G2画素は射出瞳EXPのうちP2領域を通過した光束を受光する。MLは図2にも示したマイクロレンズであり、CFは同じくカラーフィルタである。X方向は撮像光学系の光軸方向を示し、Y方向およびZ方向は、X方向に対して直交し、かつ互いに直交する方向を示している。
OSPは撮像している物点である。物点OSPからの光束は、射出瞳EXPにおけるその光束が通過する領域(位置)に応じてG1画素またはG2画素に導かれる。すなわち、射出瞳EXPにおける互いに異なる領域を光束が通過することは、物点OSPからの光束が角度(視差)によって複数に分離されることに相当する。このため、撮像素子上のG1画素群からの出力信号を用いて生成された画像とG2画素群からの出力信号を用いて生成された画像とが、互いに視差を有する複数(ここでは一対)の視差画像となる。
以下の説明において、射出瞳EXPにおける互いに異なる瞳領域を通過した複数の光束を互いに異なる画素に導くことを、瞳分割という。
図4(a)は、図3に示したマイクロレンズMLとG1画素およびG2画素からなる画素組とを物点OSP側から撮像系の光軸方向(X方向)に沿って見て示している。図4(a)では、図3に示したカラーフィルタCFを省略している。図4(b)は、図4(a)に示したG1画素およびG2画素のそれぞれに対応する射出瞳EXP内のP1領域およびP2領域を示している。図4(a),(b)に示す撮像系では、上述したように一対の視差画像が得られる。
図4(c)には、1つのマイクロレンズMLに対して設けられたG1画素、G2画素、G3画素およびG4画素からなる画素組を物点側から光軸方向(X方向)に沿って見て示している。図4(c)でも、カラーフィルタCFを省略している。G1画素、G2画素、G3画素およびG4画素は、互いに共通のマイクロレンズMLを介して、図4(d)に示す射出瞳EXP内の互いに異なる瞳領域であるP1領域、P2領域、P3領域およびP4領域と共役な関係を有する。このため、物点OSPからの光束は、射出瞳EXP内のP1領域、P2領域、P3領域およびP4領域のうち通過した領域に応じてG1画素、G2画素、G3画素またはG4画素に導かれる。これにより、撮像素子上のG1画素群、G2画素群、G3画素群およびG4画素群のそれぞれからの出力信号を用いて生成された4つの画像が互いに視差を有する4つの視差画像となる。
各実施例の撮像系において、射出瞳EXPの位置がずれる等して上述した共役関係が完全ではなくてもよい。また、各実施例の撮像系において、図4(b)および図4(d)に示した複数の瞳領域は互いに部分的にオーバーラップしてもよいし、それぞれの領域の間に間隔があってもよい。
なお、撮像素子として、上述したように1つのマイクロレンズに対して2つや4つの光電変換部を有するものに限らず、さらに多くの数の光電変換部を有する(マイクロレンズを介してさらに多くの光電変換部が射出瞳と共役な関係を有する)ものを用いてもよい。
また、上述した撮像系の構成は例に過ぎず、瞳分割を行えれば撮像系の構成は特に限定されるものではない。例えば、図5に示すように、射出瞳EXPのうちP1領域およびP2領域を通過した一対の光束が三角形ミラーTMRによって互いに異なる撮像素子(光電変換部)SEN1,SEN2に導かれる構成を有する撮像系であってもよい。この撮像系では、撮像素子SEN1,SEN2の出力信号をそれぞれ別々に読み出すことで一対の視差画像を生成することができる。
次に、図1および図6〜図8を用いて、上述した撮像系により生成される複数の視差画像を用いて、収差による画質劣化(以下、単に劣化という)が抑制された補正画像を生成する画像処理方法(以下、単に画像処理ともいう)の原理について説明する。
一般に、撮像光学系においては、光束が通過する射出瞳内の領域によって発生する収差が相違する。各実施例ではこの相違に基づいて、撮像光学系で発生する収差の影響による劣化が抑制された補正画像を生成する。以下では、図3に示した撮像系で得られる一対の視差画像を用いる場合を例として説明する。
図1(a)は、画像を劣化させる収差が無い理想的な撮像系を用いて被写体を撮像することで得られる画像を示している。以下の説明において、この理想的な撮像系によって得られた画像を理想画像という。なお、収差は撮像光学系だけでなく撮像素子上のマイクロレンズでも発生し得るので、実際には撮像系全体の収差を考慮するが、以下の説明では、特に撮像光学系で発生する収差に着目して説明する。
図6(a)は、撮像光学系によって発生する収差(射出瞳上での収差量の分布)の例を示す横収差図である。この横収差図において、横軸は図3におけるZ方向での位置を、縦軸は横収差量のZ成分を示している。図6(a)に示すような収差が発生する撮像光学系を通して瞳分割を行わずに被写体を撮像した場合には、図1(b)に示すような画像が得られる。
図4(b)に示した射出瞳EXP内のP1領域およびP2領域はそれぞれ、図6(a)と同じ収差を示した図6(b)および図6(c)において破線で示した領域に相当する。これらの図から、光束がP1領域を通過する場合とP2領域を通過する場合とでは発生する収差が異なることが分かる。そして、この光束が通過する瞳領域に相違に伴う収差の相違によって、一対の視差画像間にも相違が生じる。なお、図6(a)〜(c)に示す収差は例にすぎず、必ずしもこのような収差が発生する撮像光学系であることが必要であるわけではなく、射出瞳内を通過する領域が異なることで発生する収差量が異なる撮像光学系であればよい。
図1(c)および図1(d)には、瞳分割を行って撮像することで得られる一対の視差画像のうち一方の視差画像と他方の視差画像をそれぞれ示している。なお、これらの図では、一方と他方の視差画像とを黒画像と白画像とで示して区別し易くしているが、実際には同じ色の画像である。
図1(e)には、図1(c)および図1(d)に示した一方と他方の視差画像間の差分を示している。この差分は、一方と他方の視差画像のそれぞれに含まれる撮像光学系で発生する収差に対応する成分を示している。このため、この差分に基づいて画像処理を行うことで、図1(f)に示すような収差による劣化が抑制された補正画像を生成することができる。具体的な画像処理の内容については後に実施例1で説明する。
図7(b)および図7(c)には、図1(a)、図1(c)、図1(d)および図1(f)に示した画像における図7(a)にて破線矢印に沿った直線上での画素値の1次元分布を示している。図7(b)および図7(c)における実線は理想画像の画素値の分布を示している。図7(b)中の破線および点線がそれぞれ一方と他方の視差画像の画素値の分布を示し、図7(c)中の破線が補正画像の画素値の分布を示す。
ここまで説明した画像処理は、複数の視差画像の相違に基づいて収差による劣化抑制のための補正(以下、収差補正ともいう)を行うものであり、この相違が小さい場合には劣化抑制(収差補正)効果が低減する。ここでの複数の視差画像間の相違は撮像光学系で発生する収差の相違であるため、例えば複数の視差画像に対応する点像分布関数(PSF)の相違量から、各視差画像上の部分領域(画像領域)ごとに画像処理を行うことにより得られる収差補正効果を知ることができる。PSFの相違量から画像処理を行う画像領域(補正対象領域)を限定することにより、処理負荷を低減することができる。
ここでは、例として複数の視差画像間の差分およびPSFの相違量を用いて補正画像を生成する場合の画像処理の原理について説明した。しかし、視差画像の差分およびPSFの相違量に限らず、複数の視差画像の画素値および画素値勾配のうち少なくとも一方と撮像系の光学情報とを用いて補正画像を生成すればよい。
後述する実施例1では、収差補正を、撮像系の光学情報と複数(一対)の視差画像間の画素値の差分に応じた複数(一対)の重み付け用データであるウェイト(以下、補正ウェイトという)とを用いて行う画像処理について説明する。また、実施例2では、撮像系の光学情報と一対の視差画像の画素値勾配の相違(実施例1にいう「差分」とは異なる)とに応じた一対の補正ウェイトを用いて収差補正を行う画像処理について説明する。さらに、実施例3では、撮像系の光学情報と複数の視差画像の画素値および画素値勾配のそれぞれの相違とに応じた複数の補正ウェイトを用いて収差補正を行う画像処理について説明する。
各実施例で説明する画像処理方法はいずれも、画素値飽和領域においても収差補正が行えるという特徴がある。撮像素子が出力する画像において、各画素が出力可能な画素値には上限(飽和画素値)があり、それを超える画素値を出力することはできない。図8(a)〜図8(e)において、実線は画素値が飽和しないように撮像素子への入射光量が抑えられた状態での撮像により得られた理想画像の画素値の1次元分布を示している。一方、図8(a)中の破線は、仮に撮像素子の画素値が上限を持たない(飽和しない)とした場合において瞳分割を行わない撮像により得られた画像の画素値の分布を示している。
図8(b)中の破線は、撮像素子への入射光量が大きい状況において瞳分割を行わない撮像により得られた画像における飽和した画素値の1次元分布を示している。このように、実際には撮像素子の画素値には上限があるため、その上限以上の画素値は飽和画素値として一定値となる。つまり、本来の画素値が欠落する。このように画素値が欠落した飽和画素を含む領域(以下、画素値飽和領域という)においては収差成分が正しく現れないために、特許文献1にて開示されているような従来の画像処理方法では収差補正が困難である。
図8(c)中の破線および点線はそれぞれ、仮に撮像素子の画素値が上限を持たないとした場合において瞳分割を行った撮像により得られた一対の視差画像の画素値の分布を示している。瞳分割を行った撮像でも、やはり撮像素子の画素値には上限があるため、図8(d)に破線および点線で示すように、実際に得られる一対の視差画像の画素値のうち上限以上の画素値は欠落する。しかしながら、画素値飽和領域において画素値が欠落していても、図8(d)に示すように一対の視差画像間には画素値に相違が存在する。このため、各実施例で説明する一対の視差画像間の画素値または画素値勾配の相違に基づいた画像処理によれば、図8(e)に破線で示すように、画素値が欠落している画素値飽和領域においても収差による劣化を抑制した画像を生成することができる。
なお、ここまでの説明で用い、かつ以下の各実施例の説明においても用いる「画素値」は、カラー画像を構成するRGBの各色チャンネルでの画素値でもよいし、輝度値と言い代えてもよい。
実施例1では、一対の視差画像の差分に応じて設定(生成)した一対の補正ウェイトを用いる画像処理について説明する。まず、該画像処理を実行する画像処理装置を搭載した撮像装置について説明する。
図9には、撮像装置の構成を示している。撮像光学系100は、不図示の被写体からの光を撮像素子102上に結像させる。撮像素子102は、CMOSセンサやCCDセンサ等の光電変換素子により構成されている。撮像素子102には、図2に示したように複数のマイクロレンズMLが設けられており、1つのマイクロレンズMLに対して一対の光電変換部(サブ画素)であるG1画素とG2画素が設けられている。撮像素子102は、撮像光学系100の射出瞳(図2中のEXP)のうち互いに異なる瞳領域(P1,P2)を通過した一対の光束(被写体像)を各瞳領域に対応するG1画素およびG2画素にて光電変換することで、瞳分割を伴う撮像を行う。撮像光学系100および撮像素子102により撮像系が構成される。
撮像素子102上のG1画素群およびG2画素群での光電変換により生成された撮像信号(アナログ信号)は、A/Dコンバータ103でデジタル撮像信号に変換されて画像処理装置としての画像処理部104に入力される。
画像処理部104は、該デジタル撮像信号に対して各種処理を行うことで入力画像を生成し、さらに該入力画像をG1画素群に対応する画像とG2画素群に対応する画像とに分離(再構成)することで一対の視差画像を生成する。また、画像処理部104は、記憶部108から、該記憶部108に予め記憶された撮像系の光学情報(具体的には後述する)を読み出す。そして、ウェイト生成手段および画像生成手段としての画像処理部104は、撮像系の光学情報を用いつつ、一対の視差画像間の差分を算出し、該差分に応じて該一対の視差画像のそれぞれに対して適用する一対の補正ウェイトを生成する。さらに、画像処理部104は、一対の視差画像のそれぞれに対して対応する補正ウェイトを適用した結果(一対の重み画像)を用いて単一の補正画像を生成する。
画像処理部104で生成された補正画像は、半導体メモリや光ディスク等の画像記憶媒体109に記録される。また、補正画像は、画像表示部105に表示される。
撮像素子102の駆動および画像処理部104での処理は、システムコントローラ107が制御する。また、撮像光学系100に含まれる絞り101aおよびフォーカスレンズ101bの駆動は、システムコントローラ107からの制御信号に応じて光学系制御部106が制御する。絞り101aは、設定された絞り値(Fナンバー)に応じてその開口径を変化させることで撮像素子102に入射する光量を調整する。フォーカスレンズ101bは、不図示のAFシステムやマニュアルフォーカス機構によってその位置が変更されることで焦点調節を行う。なお、撮像光学系100は、図9では撮像装置の一部として構成されているが、一眼レフカメラのように交換式の撮像光学系であってもよい。
次に、本実施例の画像処理の具体的な手順について、図10のフローチャートを用いて説明する。画像処理は、画像処理コンピュータとしての画像処理部104が、コンピュータプログラムとしての画像処理プログラムに従って、システムコントローラ107の指示のもとで実行する。なお、画像処理部104とは別に以下に説明する画像処理を行う補正処理部(画像処理装置)を設けてもよい。これら画像処理プログラムおよび別の補正処理部については、後述する他の実施例でも同じである。
ステップS101では、画像処理部104は、システムコントローラ107による制御に応じて被写体を撮像した撮像素子102からA/Dコンバータ103を介して撮像信号を取り込み、該撮像信号から入力画像を生成する。
ステップS102では、画像処理部104は、入力画像を再構成することで一対の視差画像を生成する。
ステップS103では、画像処理部104は、記憶部108から撮像系(撮像光学系100および撮像素子102)の光学情報を読み出す。ここで、一対の視差画像において互いに対応する(同じ画素アドレスの画素が複数含まれる)部分画像領域を対応画像領域という。一対の視差画像には、複数対の対応画像領域が含まれる。また、撮像光学系100の射出瞳のうち、一対の対応画像領域に含まれる一対の被写体像を形成する一対の光束が通過する一対の瞳領域を対応瞳領域という。射出瞳には、複数対の対応瞳領域が含まれる。撮像系のPSFは瞳領域の位置によって異なるため、一対の対応瞳領域のうち一方の瞳領域に対するPSFと他方の瞳領域に対するPSFとには相違がある。
本実施例では、撮像系の光学情報として、対応瞳領域ごと(つまりは対応画像領域ごと)のPSFの相違量ΔPSFが二次元配列データとして記憶部108に記憶されている。また、PSFは撮像光学系100の焦点距離や絞り値等の撮像条件に応じても異なるため、ΔPSFも撮像条件に応じて異なる。このため、記憶部108には、対応画像領域ごとに、撮像条件ごとのΔPSFの二次元配列データが記憶されている。画像処理部104は、ステップS101での撮像時における撮像条件を取得し、該撮像条件に対応するΔPSFを対応画像領域ごとに記憶部108から読み出す。
そして、判定手段としての画像処理部104は、対応画像領域ごとに二次元配列データであるΔPSFの全要素の積算値が閾値以上か否かを判定し、ΔPSFの積算値が閾値以上である対応画像領域を補正対象領域として決定する。すなわち、画像処理部104は、光学情報としてのΔPSFに応じて、各視差画像における画像処理対象領域としての補正対象領域を判定する。
ここで、上記閾値は撮像装置のユーザが任意に設定してもよいし、記憶部108に予め記憶された所定値であってもよい。ここでは例として、一対の対応画像領域ごとのPSFの和の積算値に0.1を乗じた値を閾値として設定する。言い換えれば、本実施例では、撮像系のPSFに対応する画像成分(劣化成分)が10%以上の相違を有する対応画像領域を補正対象領域とする。
なお、記憶部108に記憶されているΔPSFのデータは、事前に測定して取得したデータであってもよいし、設計値から算出したデータであってもよい。さらに、本実施例では、ΔPSFを用いているが、一対の視差画像のそれぞれに含まれる収差の相違を表すものであれば他の値であってもよい。また、補正対象領域の判定は必ずしも行う必要はなく、記憶部108に撮像条件ごと補正対象領域を予め記憶させておき、撮像時の撮像条件に対応する補正対象領域を記憶部108から読み出してもよい。
ステップS104では、画像処理部104は、ステップS103で決定した補正対象領域において一対の視差画像間の差分を算出し、該差分に応じて一対の補正ウェイトを設定(生成)する。ここでの具体的な処理について以下に説明する。一対の視差画像をIMG1およびIMG2といい、一対の視差画像IMG1,IMG2間において互いに対応する画素(同じ画素アドレスの画素)同士を対応画素という。また、一対の視差画像IMG1およびIMG2のそれぞれに適用される一対の補正ウェイトをW1およびW2という。各補正ウェイトは、各視差画像の画素数と同じ数の要素を有する二次元配列データである。
まず、画像処理部104は、補正対象領域において、IMG1の画素値からIMG2の画素値を対応画素ごとに減算することでIMG1およびIMG2間での対応画素ごとの画素値の差分を算出する。次に、画像処理部104は、算出した差分が正の値を持つ対応画素に対しては補正ウェイトの値をW1=0、W2=1とし、上記差分が負の値を持つ対応画素に対してはW1=1、W2=0とする。また、上記差分が零の対応画素に対しては、W1およびW2を、W1+W2=1を満たす範囲で任意の正の値に設定する。また、補正対象領域外の画像領域(補正対象外領域)の対応画素については、W1=0.5、W2=0.5とする。
ステップS105では、画像処理部104は、式(1)に示すように、一対の視差画像(補正対象領域および補正対象外領域)IMG1,IMG2のそれぞれに対して対応する補正ウェイトW1,W2を適用(乗算)した結果(一対の重み画像)を加算する。これにより、補正画像Rを生成して出力する。
式(1)において、(i,j)は各視差画像中の画素アドレスを示し、IMG1(i,j),IMG2(i,j)はそれぞれ、IMG1,IMG2における画素アドレス(i,j)(対応画素)での画素値を示す。W1(i,j),W2(i,j)はそれぞれ、画素アドレス(i,j)に対応する補正ウェイトの要素値を示す。
画像処理部104は、ユーザが任意に選択した対応画像領域(補正対象領域)のみにおいて算出したウェイトを用いて補正画像Rを生成し、他の対応画像領域においては一対の視差画像の画素値を平均した画素値を有する画像を補正画像Rとして出力してもよい。言い換えれば、ユーザが任意に選択した対応画像領域のみにおいて収差補正を行ってもよい。
こうして画像処理部104から出力された補正画像は、システムコントローラ107からの指示に応じて画像記憶媒体109に記憶される。この際、システムコントローラ107は、収差補正前の一対の視差画像および入力画像のうち少なくとも1つを画像記憶媒体109に記憶させてもよい。また、システムコントローラ107は、補正画像、収差補正前の一対の視差画像および入力画像のうち少なくとも1つを画像表示部105に表示させてもよい。
画像処理部104は、ステップS102〜S105にて入力画像を再構成することで一対の視差画像を生成し、その後に収差補正を行ったが、入力画像を再構成することなく一対の視差画像を取得して収差補正を行ってもよい。このことは、後述する他の実施例でも同じである。
本実施例の画像処理によれば、図7(b)に破線および点線で示した一対の視差画像を用いて、図7(c)に破線で示したように収差による劣化が良好に抑制された補正画像を生成することができる。
また、本実施例の画像処理は、ΔPSFを用いた補正対象領域の決定と、一対の視差画像の画素値の差分から算出した一対の補正ウェイトを該一対の視差画像に適用した結果の加算とで行うことができる。このため、特許文献1にて開示されたフィルタリング処理のように、撮像条件ごとや画像上での位置ごとにフィルタを用意する必要がなく、またこのフィルタを畳み込み積分するような負荷の大きい処理も不要である。したがって、補正画像を少ないデータで高速な画像処理により生成することができる。しかも、画素値飽和領域でも収差補正を行うことができる。
実施例2では、実施例1で説明した画像処理の変形例について説明する。本実施例の画像処理を実行する画像処理装置(画像処理部104)を備えた撮像装置の構成は実施例1(図9)と同じであるため、この説明は省略する。
実施例1の画像処理では、撮像光学系の光学情報と一対の視差画像間における対応画素の画素値の差分とに応じて一対の補正ウェイトを設定した。これに対して、本実施例の画像処理では、撮像系の光学情報と一対の視差画像間における対応画素での画素値勾配の相違とに応じて一対の補正ウェイトを算出(生成)する。
収差による劣化によって視差画像間での対応画素の画素値に相違があるため、画素値勾配にも相違がある。図7(d)中の破線および点線はそれぞれ、図7(b)にて破線および点線で示した画素値の1次元分布、すなわち画素値分布における画素値勾配(微分量)の絶対値を示している。
図7(b)および図7(d)に示すように、各視差画像において、画素値勾配が小さい、すなわち画素値分布がなだらかな局所的な画像領域は実線で示す理想画像により近い。実際に撮像を行った場合には理想画像は未知であってその情報を用いることはできないが、補正ウェイトの算出に画素値勾配を用いることで、各視差画像の局所的な画像領域ごとに擬似的に収差の影響が少ない画素値を選択することができる。
図11(a)には、一対の視差画像(白画像および黒画像)と画素値の微分方向(破線矢印方向)とを示す。ここでの微分方向は、一対の視差画像においてPSFの広がりが小さい方向である。また、図11(a)に示す破線矢印に沿った直線上での画素値の1次元分布を図11(c)に示す。図11(c)において、1本の破線が一対の視差画像のそれぞれの画素値の分布を示している。この分布においては一対の視差画像の画素値に差が無いために、その微分値である画素値勾配にも差が無い。このため、画素値勾配を導入したことによる収差補正効果の向上は見られない。
次に、図11(b)には、図11(a)と同じ一対の視差画像と、図11(a)とは異なる微分方向(破線矢印方向)とを示す。ここでの微分方向は、ここでの微分方向は、一対の視差画像のそれぞれにおけるPSFの広がりが大きい方向であり、一対の視差画像においてPSFの相違が大きい方向とも言える。また、図11(b)に示す破線矢印に沿った直線上での画素値の1次元分布を図11(d)に示す。図11(d)において、破線および点線が一対の視差画像のそれぞれの画素値の分布を示している。この分布においては一対の視差画像の画素値に大きな相違があるため、画素値勾配も大きく異なり、この結果、画素値勾配を導入したことによる収差補正効果の向上が大きい。このように、一対の視差画像においてPSFの広がり(相違)が大きい方向を微分方向として選択することで、収差補正効果が向上する。このため、一対の視差画像の対応画素ごとにPSFの広がりが大きい方向を撮像系の光学情報として用意しておき、その方向においてその対応画素での画素値勾配を算出することが望ましい。
なお、前述したPSFの広がりが大きい方向について詳しく説明する。図12(a)には、撮像系の像面であるYZ面でのPSFのY断面形状を示し、図12(b)には同PSFのZ断面形状を示す。これらの図において、横軸はYZ面上での位置であり、縦軸は強度(光量)である。単純なPSFの広がりは図12(b)に示すZ断面の方が図12(a)に示すY断面に比べてより大きいが、図12(b)ではPSFの強度が中心位置付近に集中している。実際に取得する画像において支配的となる収差は、図12(b)に示すような集中した強度分布よりも、図12(a)に示すように拡散した強度分布を生じさせる。したがって、上述した収差補正効果が高まる微分方向も、図12(a)に示すY断面の方向(Y方向)である。このことから、本実施例にいうPSFの広がりが大きい方向とは、図12(a)に示すように強度がより拡散している方向を意味する。ただし、目的に応じて、図12(b)に示すように強度が弱くても広く拡散している方向をPSFの広がりが大きい方向として選択してもよい。
また、微分方向の決定に用いる光学情報は、PSFについての情報ではなく、瞳分割の方向の情報であってもよい。瞳分割の方向とは、例えば図4(a)に示す撮像素子を用いる場合にはG1,G2画素が並んでいるZ方向であり、図4(b)に示すP1,P2領域(瞳領域)の分離方向である。瞳分割の方向を微分方向として特定すると、画像上の全ての領域で必ずしも収差補正効果が高い微分方向を選択することにはならない。しかし、必要な光学情報は画像上の全ての領域および全ての撮像条件に対して共通する単一方向となるので、非常に少ないデータ量で済むというメリットがある。
本実施例では、式(2)を用いて一対の補正ウェイトを算出する。
式(2)において、α,βはそれぞれ個々の視差画像を示す添え字であり、本実施例では、αおよびβはそれぞれ1から2の範囲内の整数である。(i,j)は各視差画像中の画素アドレスを示す。また、ΔIMG(i,j)は各視差画像における画素アドレス(i,j)での画素値勾配を示す。gは収差補正効果をコントロールするパラメータを示し、それの値はユーザが任意に設定することができる。また、各補正ウェイトは、対応する視差画像の画素数と同じ数の要素を有する2次元配列データである。
画素値勾配ΔIMGは、図13(a)に示すように、方向性を持った1×3タップを有する微分フィルタを視差画像に対して畳み込み積分することで算出する。ただし、これに代えて、画像上のノイズの影響を受けにくいフィルタとして、図13(b)に示す3×3タップのプリューウィットフィルタや図13(c)に示す3×3タップのソーベルフィルタを用いて算出してもよい。さらに言えば、画素値勾配を算出できる手段であれば、どのような手段を用いてもよい。また、フィルタのサイズ(タップ数)は小さいほど処理を高速に行うことが可能であるが、目的に応じて任意のサイズを用いてよい。
式(2)では、一対の視差画像の対応画素に対して適用する一対の補正ウェイトの対応要素を、互いに加算して1になるように規格化している。これは一対の視差画像の対応画素ごとに画素値勾配の相違を比較し、画素値勾配がより小さい視差画像に対応する補正ウェイトをより大きくすることに相当する。このように一対の補正ウェイトを規格化することにより、一対の補正ウェイトのうち一方を算出すれば自動的に他方の補正ウェイトが決定(算出)される。このように複数の補正ウェイトのうち1つを算出することで他の補正ウェイトが上記規格化によって自動的に決定される場合でも、該複数の補正ウェイトをそれぞれ生成することに相当する。
図7(b)に示した各視差画像を用いて上述した画像処理を行うと、図7(e)に破線で示す補正画像を得ることができる。式(2)により算出した補正ウェイトを用いて補正画像を生成する方法は、実施例1で説明した方法と同じである。
実施例1で説明した画素値の差分に応じた補正ウェイトを用いた画像処理により生成される補正画像は、図7(c)に示すように、画素値が高い画像領域において理想画像との乖離を有していた。これに比べて本実施例で行う画素値勾配の相違に応じた補正ウェイトを用いた画像処理により生成される補正画像は、画素値が高い画像領域において画素値が増加しており、より理想画像に近くなる。これにより、実施例1に比べて、より良好な収差補正効果を得ることができる。
式(2)において収差補正効果をコントロールするパラメータgは、画素値勾配の逆数の指数である。このため、パラメータgを大きくすることで、補正ウェイトの画素値勾配の逆数に対する依存性を上げることができる。パラメータgは、0より大きい正の値をとり、典型的には、g=0.1〜1程度の値に設定される。
次に、本実施例の画像処理の具体的な手順について、図14のフローチャートを用いて説明する。ステップS201およびステップS202は、実施例1(図10)におけるステップS101およびステップS102と同じであるため、説明を省略する。
ステップS203では、画像処理部104は、一対の視差画像間での視差量から、これら画像のうち撮像光学系100が合焦した領域である合焦領域を検出する。具体的には、対応画素間で得られる視差量から撮像光学系100の被写体に対するデフォーカス量を算出し、該デフォーカス量が合焦範囲内にある対応画素を含む画像領域を合焦領域として検出する。また、不図示の測距装置によって得られたデフォーカス量の情報から合焦領域を検出してもよい。
ステップS204では、画像処理部104は、記憶部108から、予め記憶部108に記憶された撮像系の光学情報として、一対の視差画像に対する撮像系のPSFの広がりが大きい方向(以下、PSF広がり方向という)の情報を読み出す。PSF広がり方向は、焦点距離、絞り値等の撮像条件や視差画像上での位置によって異なるため、画像処理部104は、記憶部108から撮像条件に対応するPSF広がり方向を視差画像上での位置(対応画素)ごとに読み出す。そして、位置ごとに読み出したPSF広がり方向をその位置での画素値勾配の算出方向(画素値の微分方向)として設定する。
ただし、瞳分割の方向を記憶部108から読み出して、それを画素値勾配の算出方向として設定してもよい。
ステップS205では、画像処理部104は、一対の視差画像IMG1,IMG2のそれぞれのうちステップS204で検出した合焦領域において、式(2)を用いて、一対の補正ウェイトW1,W2を算出(生成)する。このとき、画像処理部104は、一対の視差画像の対応画像ごとに、ステップS204で設定した画素値勾配の算出方向において画素値勾配ΔIMGを算出する。また、パラメータgの値は、例えばg=2と設定する。このとき、W1は式(3)により、W2は式(4)により算出される。
ステップS206では、画像処理部104は、一対の視差画像IMG1,IMG2の合焦領域の画素値に対して、式(1)に示したようにステップS205で算出した一対の補正ウェイトW1,W2を適用することで、補正画像Rを出力する。このとき、合焦領域外においては、画素ごとに一対の視差画像の画素値の平均値を補正画像Rの画素値として出力する。このように、本実施例では、合焦領域においてのみ収差補正を行う。
こうして画像処理部104から出力された補正画像は、システムコントローラ107からの指示に応じて画像記憶媒体109に記憶される。この際、システムコントローラ107は、収差補正前の一対の視差画像および入力画像のうち少なくとも1つを画像記憶媒体109に記憶させてもよい。また、システムコントローラ107は、補正画像、収差補正前の一対の視差画像および入力画像のうち少なくとも1つを画像表示部105に表示させてもよい。
本実施例の画像処理は、画素値勾配を算出するために畳み込み積分処理が必要であるが、該処理に用いるフィルタ(カーネル)のサイズは1×3タップ程度の小さいサイズで十分である。このため、特許文献1にて開示された数十×数十タップのフィルタの畳み込み積分が必要となるフィルタリング処理を行う場合に比べて、低負荷で高速な画像処理により補正画像を生成することができる。
また、本実施例の画像処理において必要なデータは、複数の視差画像およびPSF広がり方向に関するデータのみである。PSF広がり方向は、撮像条件や画像上の位置によって変化するためにその変化に応じた数分のデータが必要となるが、PSFそのものではなく、PSFが広がっている方向を示すデータであるため、少ないデータ量とのデータである。このため、特許文献1にて開示された撮像条件や画像上の位置ごとのPSFのデータが必要となるフィルタリング処理に比べて、必要なデータ量を削減することができる。
さらに、本実施例では、画素値勾配を用いて補正ウェイトを算出することで、出力される補正画像において良好な収差補正効果を得ることができる。
実施例3では、実施例2で説明した画像処理の変形例について説明する。本実施例の画像処理を実行する画像処理装置(画像処理部104)を備えた撮像装置の基本的な構成は実施例1(図9)と同じであるため、この説明は省略する。ただし、本実施例にて用いられる撮像素子102は、図4(c)に示すように、1つのマイクロレンズMLに対して4つのサブ画素であるG1画素、G2画素、G3画素およびG4画素が設けられている。
実施例2の画像処理では、撮像系の光学情報と一対の視差画像間における対応画素の画素値勾配の相違とに応じて一対の補正ウェイトを算出した。これに対して、本実施例の画像処理では、撮像系の光学情報と複数(4つ)の視差画像間の対応画素の画素値および画素値勾配のそれぞれの相違に応じて複数(4つ)の補正ウェイトを算出(生成)する。
まず、本実施例の特徴である複数の視差画像間における対応画素の画素値および画素値勾配のそれぞれの相違から算出される補正ウェイトを用いた画像処理(収差補正)の概要について説明する。ただし、この概要説明では、理解を容易にするために、2つ(一対)の視差画像から単一の補正画像を生成するものとする。
本実施例では、式(5)を用いて一対の補正ウェイトを算出する。
式(5)において、α,βはそれぞれ個々の視差画像を示す添え字であり、本実施例では、αおよびβは1から2の範囲内の整数である(ただし、4つの視差画像に対しては、αおよびβは1から4の範囲内の整数である)。(i,j)は各視差画像中の画素アドレスを示す。また、IMG(i,j)は各視差画像における画素アドレス(i,j)(対応画素)での画素値を示す。g1およびg2は収差補正効果をコントロールするパラメータを示し、それの値はユーザが任意に設定することができる。ΔIMG(i,j)は各視差画像における画素アドレス(i,j)での画素値勾配を示す。また、各補正ウェイトは、対応する視差画像の画素数と同じ数の要素を有する2次元配列データである。
本実施例でも、実施例2と同様に、画素値勾配ΔIMGを算出する方向を、撮像系の光学情報としてのPSF広がり方向に応じて設定する。また、画素値勾配ΔIMGの算出も、実施例2と同様に、図12(a)〜(c)に示したフィルタ等を用いて行う。
式(5)に示す補正ウェイトは、実施例2において式(2)で示した画素値勾配の逆数を用いて算出される補正ウェイトに画素値の逆数を付加したものである。ここで、画素値の逆数は主に画素値が低い画像領域において補正ウェイトに大きな影響を及ぼすのに対し、画素値勾配の逆数は画素値の高低によって補正ウェイトへの影響が変化しない。このため、式(5)で示す補正ウェイトは、画素値が低い画像領域においては画素値勾配よりも画素値の逆数による効果が強く現れ、画素値が高い画像領域においては相対的に画素値勾配による効果が強く現れる。
言い代えれば、補正ウェイトのうち画素値に応じたウェイト成分を第1のウェイト成分とし、画素値勾配に応じたウェイト成分を第2のウェイト成分とする。このとき、補正ウェイトは、各視差画像における画素値がより低い画像領域に対しては第1のウェイト成分が第2のウェイト成分に比べてより重みを有するように生成される。また、画素値がより高い画像領域に対しては第2のウェイト成分が第1のウェイト成分に比べてより重みを有するように生成される。
式(5)では、一対の視差画像の対応画素に対して適用する一対の補正ウェイトの対応要素を、互いに加算して1になるように規格化している。これは一対の視差画像の対応画素ごとに画素値および画素値勾配の相違を比較し、画素値および画素値勾配がそれぞれより小さい視差画像に対応する補正ウェイトをより大きくすることに相当する。式(2)と同様に、式(5)においても、一対の補正ウェイトを規格化することにより、一対の補正ウェイトのうち一方を算出すれば自動的に他方の補正ウェイトが決定(算出)される。このように複数の補正ウェイトのうち1つを算出することで他の補正ウェイトが上記規格化によって自動的に決定される場合でも、該複数の補正ウェイトをそれぞれ生成することに相当する。
図7(b)に示した各視差画像を用いて上述した画像処理を行うと、図7(f)に破線で示す補正画像を得ることができる。式(5)により算出した補正ウェイトを用いて補正画像を生成する方法は、実施例2で説明した方法と同じである。
実施例2で説明した画素値勾配の相違に応じた補正ウェイトを用いた画像処理により生成される補正画像は、図7(e)に示したように、画素値が低い画像領域において理想画像との乖離を有していた。これに比べて本実施例で行う画素値および画素値勾配のそれぞれの相違に応じた補正ウェイトを用いた画像処理により生成される補正画像は、画素値の逆数を導入したことで、画素値が低い画像領域において画素値が低減しており、より理想画像に近くなる。これにより、実施例2に比べて、より良好な収差補正効果を得ることができる。
式(5)において収差補正効果をコントロールするパラメータg1およびg2はそれぞれ、画素値勾配ΔIMGの指数および画素値の逆数と画素値勾配ΔIMGとの積の指数である。パラメータg2は、式(2)におけるパラメータgに相当する。パラメータg1およびg2は、0より大きい正の値をとり、典型的には、g1=0.1〜1、g2=1〜10程度の値に設定される。
次に、本実施例の画像処理の具体的な手順について、図15のフローチャートを用いて説明する。ステップS301は、実施例2(図14)におけるステップS201と同じであるため、説明を省略する。
ステップS302では、画像処理部104は、G1画素群、G2画素群、G3画素群およびG4画素群からの撮像信号から生成された入力画像を再構成する。これにより、G1画素群、G2画素群、G3画素群およびG4画素群のそれぞれに対応する4つの視差画像を生成する。
ステップS303では、周辺光量補正手段としての画像処理部104は、4つの視差画像のそれぞれに対して、周辺光量低下量の差を小さくする補正を行う。PSF(収差)の相違と同様に、4つの視差画像間では周辺光量の低下量にも差があり、この周辺光量低下量の差を小さくする(望ましくは無くする)補正を行うことで、後の収差補正の効果を向上させることができる。具体的には、画像処理部104は、予め記憶部108に記憶された、撮像系における画素ごとの周辺光量低下量の情報を記憶部108から読み出す。この後、画像処理部104は、読み出した周辺光量低下量の情報を用いて、4つの視差画像間での周辺光量低下量が同一となるように少なくとも1つの視差画像の画素値を補正することで、4つの光量補正視差画像を生成する。
ステップS304では、画像処理部104は、各視差画像(ステップS303で生成された各光量補正視差画像:以下同じ)における画素値飽和領域を検出する。このとき、それぞれの視差画像で検出された飽和画素のすべてを含む領域を画素値飽和領域とする。また、検出された飽和画素を囲む所定の大きさの周辺領域を含めて画素値飽和領域としてもよい。
ステップS305は、実施例2におけるステップS204と同じであるため、説明を省略する。
ステップS306では、画像処理部104は、4つの視差画像のそれぞれの画素値、画素値勾配およびPSF広がり方向に応じて、式(5)により、該4つの視差画像のそれぞれに対応する4つの補正ウェイトを算出(生成)する。パラメータg1およびg2は、例として、g1=0.1、g2=2と設定する。
このとき、図16(a)に示すように、各補正ウェイト(W1〜W4)を、4つの視差画像IMG1〜IMG4の画素値、画素値勾配およびPSF広がり方向のすべてを用いて算出してもよい。IMG1、IMG2、IMG3およびIMG4はそれぞれ、ステップS302で生成されたG1画素群、G2画素群、G3画素群およびG4画素群に対応する視差画像である。W1、W2、W3およびW4はそれぞれ、視差画像IMG1、IMG2、IMG3およびIMG4に対応する補正ウェイトである。また、図16(c)に示すように、各補正ウェイトを、2つの視差画像の画素値、画素値勾配およびPSF広がり方向を用いて算出してもよい。
ステップS307では、画像処理部104は、各視差画像の画素値飽和領域の画素値に対してステップS306で算出したその視差画像に対応する補正ウェイトを適用(乗算)して得られた結果を合成(加算)することで補正画像を生成する。
このとき、ステップS306で4つの視差画像を用いて各補正ウェイトを算出した場合は、図16(b)のように4つの視差画像IMG1〜IMG4のそれぞれに、対応する補正ウェイト(W1〜W4)を乗じて得られた4つの結果を加算する。これにより、単一の補正画像Rを生成する。
一方、ステップS305で2つの視差画像を用いて各補正ウェイトを算出した場合は、図15(d)のように2つの視差画像IMG1,IMG2のそれぞれに、対応する補正ウェイト(W1,W2)を乗じて得られた2つの結果を加算して補正画像R1を算出する。さらに、他の2つの視差画像IMG3,IMG4のそれぞれに、対応する補正ウェイト(W3,W4)を乗じて得られた2つの結果を加算して補正画像R2を生成する。この場合、2つの補正画像R1,R2は互いに視差を有する画像である。
画素値飽和領域以外の画像領域においては、補正ウェイトの算出に用いた4つ又は2つの視差画像の対応画素の画素値の平均値を補正画像の画素値として出力する。このように、本実施例では、画素値飽和領域においてのみ収差補正を行う。
こうして画像処理部104から出力された1つの補正画像Rまたは2つの補正画像R1,R2は、システムコントローラ107からの指示に応じて画像記憶媒体109に記憶される。この際、システムコントローラ107は、収差補正前の4つの視差画像および入力画像のうち少なくとも1つを画像記憶媒体109に記憶させてもよい。また、システムコントローラ107は、1又は2つの補正画像、収差補正前の4つの視差画像および入力画像のうち少なくとも1つを画像表示部105に表示させてもよい。
本実施例の画像処理も、実施例2の画像処理と同様に、画素値勾配を算出するために畳み込み積分処理が必要であるが、該処理に用いるフィルタ(カーネル)のサイズは1×3タップ程度の小さいサイズで十分である。このため、低負荷で高速な画像処理により補正画像を生成することができる。
また、本実施例の画像処理において必要なデータは、複数の視差画像、周辺光量低下量およびPSF広がり方向に関するデータのみである。PSF広がり方向は、撮像条件や画像上の位置によって変化するためにその変化に応じた数分のデータが必要となるが、PSFそのものではなく、PSFが広がっている方向を示すデータであるため、少ないデータ量とのデータである。このため、特許文献1にて開示された撮像条件や画像上の位置ごとのPSFのデータが必要となるフィルタリング処理に比べて、必要なデータ量を削減することができる。
さらに、本実施例でも、実施例2と同様に画素値勾配を用いて補正ウェイトを算出することで、出力される補正画像において良好な収差補正効果を得ることができる。
本実施例の画像処理は、収差補正効果をコントロールするパラメータを含む補正ウェイトを各視差画像に適用することで補正画像を生成している。ここで、収差補正効果をコントロールするパラメータg2を極端に大きくすることで、補正ウェイトを1と0に2値化することも可能である。この場合には、本実施例の画像処理は、画素ごとに各視差画像のうち1つを選び、その画素値を補正画像の画素値として採用することに相当する。例として、g1=0と設定し、g2についてはg2=∞と見なせるような極端に大きな値を設定することで、実施例1で説明した画像処理において視差画像の全域を補正対象領域とする結果と同等の補正画像が得られる。すなわち、実施例1で説明したような収差補正処理は、本実施例で説明した収差補正処理の特殊なケースの1つと言える。
以上説明した実施例1〜3の処理によれば、複数の視差画像から、少ないデータを用いた負荷が軽い処理によって、収差による劣化が良好に抑制された補正画像を生成することができる。
なお、実施例2で説明した合焦領域に補正ウェイトを適用する処理を実施例1や実施例3において行ってもよい。さらに、実施例3で説明した周辺光量低下量の差を小さくする補正を実施例1,2において行ってもよい。
また、実施例1〜3では、画素値または画素値勾配に応じて補正ウェイトを算出する方法について説明したが、他にも各視差画像におけるエッジの位置情報に応じて補正ウェイトを算出してもよい。例えば、図7(b)に示した一対の視差画像の画素値の1次元分布において、まず被写体像のエッジの位置を検出し、該エッジを境とする両側の画像領域の画素値を比較する。そして、画素値が相対的に高い画像領域では画素値がより高い視差画像に対応する補正ウェイトがより大きな値を持ち、画素値が相対的に低い画像領域では画素値がより低い視差画像に対応する補正ウェイトがより大きな値を持つように補正ウェイトを算出してもよい。
上述した実施例1〜3を代表実施例とする本発明の実施例にいう撮像系の光学情報とは、PSFや収差量等の撮像系で発生する収差やその収差の相違(ΔPSF)に関する情報を含み、さらに撮像系における瞳分割方向(瞳領域の分離方向)に関する情報を含む。また、実施例1で説明した補正対象領域についての情報のように、上記光学情報により決定される情報も撮像系の光学情報に含まれる。
図17には、本発明の実施例4として、実施例1〜3で説明した画像処理を実行する画像処理装置を示している。
画像処理装置203は、パーソナルコンピュータにより構成され、画像処理ソフトウェア204(画像処理プログラム)および記憶部205を備えている。画像処理装置203には、瞳分割を行う撮像装置201および記憶媒体202の両方またはいずれか一方が接続されている。画像処理装置203は、撮像装置201または記憶媒体202から入力画像を読み込み、画像処理ソフトウェア204に従って実施例1〜3のいずれかにて説明した画像処理を実行し、補正画像を生成する。このとき、記憶部205が、実施例1〜3における撮像装置の記憶部108に相当する。ここで、実施例1〜3では、周辺光量低下量やPSF広がり方向についての光学情報を記憶部108に記憶していたが、本実施例ではこれらの光学情報を入力画像にヘッダ情報等として付与してもよい。
画像処理装置203には、出力機器206および表示機器207のうち両方またはいずれか一方が接続されていてもよい。画像処理装置203は、入力画像、複数の視差画像、および1又は複数の補正画像のうち1又は複数の画像を出力機器206、表示機器207および記憶媒体202のうち少なくとも1つに出力する。記憶媒体202は、例えば、半導体メモリ、ハードディスク、ネットワーク上のサーバーである。表示機器207は、例えば、液晶ディスプレイやプロジェクタである。出力機器206は、例えばプリンタである。
このように、撮像装置とは別の単体の画像処理装置を用いる場合でも、複数の視差画像から、少ないデータを用いた負荷が軽い処理によって、収差による劣化が良好に抑制された補正画像を生成することができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
以上説明した各実施例は代表的な例にすぎず、本発明の実施に際しては、各実施例に対して種々の変形や変更が可能である。