以下、添付図面を参照しながら実施例について詳細に説明する。
<第1実施例:画像処理装置を含む撮像装置の概略構成例>
図1は、第1実施例における画像処理装置を含む撮像装置の概略構成の一例を示す図である。図1に示す撮像装置10は、光学系11と、撮像素子12と、Analog Front End(AFE)13と、画像処理装置の一例である画像処理部14と、後処理部15と、駆動制御部16と、制御部17と、記憶部の一例である画像メモリ18と、表示部19とを有する。
光学系11は、被写体からの光を像面に集光する。光学系11は、例えばレンズ21a,21b,21c、及び絞り22等を有する。レンズ21a,21b,21cは、駆動制御部16による制御に基づき配置の調整がなされる。また、絞り22は、駆動制御部16による制御に基づき絞り度合い調整がなされる。これにより、光学系11は、被写体からの光を撮像素子12の撮像面に集光させて被写体の像を結像する。なお、光学系11の構成は、図1に示す例に限定されるものではない。
撮像素子12は、駆動制御部16による制御に基づき光学系11によって集光された被写体からの光を電子信号(アナログ信号)に変換する。撮像素子12は、例えば、Charge Coupled Device(CCD)/Complementary Metal Oxide Semiconductor(CMOS)等の二次元撮像素子を有する。二次元撮像素子は、被写体の像を電子信号(画像信号)に変換してAFE13へ出力する。
AFE13は、撮像画像のアナログ信号をデジタル信号に変換する。AFE13は、例えばA/D(アナログデジタル)コンバータ31と、タイミングジェネレータ32とを有する。タイミングジェネレータ32は、制御部17からの制御に基づき、撮像素子12の駆動に用いられるタイミングパルスを生成し、撮像素子12及びA/Dコンバータ31へ出力する。
画像処理部14は、デジタル信号の画像を保存して所定の画像処理を行う。画像処理部14は、例えば記憶部の一例であるRAWメモリ41と、PSF推定部(推定部)42と、設定部43と、補正処理部44とを有する。
RAWメモリ41は、A/Dコンバータ31でデジタル信号に変換された画像(RAW画像)を記憶する。PSF推定部42は、ボケ画像を補正する補正パラメータの一例として、RAWメモリ41に記憶されたRAW画像を用いてボケの大きさ(程度)に対応するPSF等を推定する。例えば、PSF推定部42は、元画像(RAW画像)から矩形に近い部分を抽出し、補正画像とのオーバーシュート量を抽出して、PSFを推定する。PSF推定部42は、PSFが異なっている場合の特徴を数値的に分析することでPSFを容易に推定することができる。
例えば、PSF推定部42は、撮影したオリジナル画像(元画像)を微分して得られる第1の波形と、ボケの大きさに対応する補正パラメータを用いてオリジナル画像を補正し、補正した画像を微分した第2の波形とを比較する。更に、PSF推定部42は、第2の波形が第1の波形に対して逆符号となる領域の値と、所定の閾値とを用いて撮影された画像に対するボケの大きさを推定する。
例えば、PSF推定部42は、オリジナル画像(RAW画像)の微分により得られる輝度値(以下、「微分輝度値」という)に閾値を設定し、設定した閾値より小さく、かつオリジナル画像の微分輝度値と補正画像の微分輝度値との符号が逆の部分を抽出する。また、PSF推定部42は、抽出した部分の成分(逆エッジ成分)を取得することにより、ボケの程度(大きさ)を表すPSFを推定する。
なお、PSF推定部42は、所定の条件に基づいてPSFの大きさを変えながら逆エッジ成分を算出し、その算出した成分と、予め設定した閾値とに基づいてPSFの大きさを推定してもよい。
また、PSF推定部42は、予め複数の異なるPSFを設定し、各々の逆エッジ成分を算出して補間を繰り返し、その結果が予め設定した閾値の範囲内であることにより、PSFの大きさを推定してもよい。また、PSF推定部42は、元画像の一部を抽出し、その一部の画像を用いて上述したようなPSFの推定を行い、その結果で画像全体を画像補正させてもよい。
PSF推定部42は、上述した推定手法のうち、どの手法を用いて推定を行うかについての設定情報を、設定部43から取得して推定を行うことができる。PSF推定部42は、設定部43から得られる設定情報に基づいてRAW画像を用いたPSFの推定を行う。
設定部43は、PSF推定部42によりPSFを推定するための各種設定情報を設定する。なお、設定は、ユーザが表示部19のタッチパネル等から行ってもよく、また予め設定情報が登録されていてもよい。
なお、各種設定情報としては、上述した推定手法に関するものだけでなく、例えばPSFの大きさ(幅)の初期値や、PSF幅を変更するときの変更幅、所定のPSFを用いた補正の実行回数、閾値等であるが、これに限定されるものではない。
補正処理部44は、PSF推定部42により推定されたPSFに基づいてボケ画像を補正し、ボケのない画像を取得する。補正処理部44は補正した画像を画像メモリ18に記憶させる。
後処理部15は、制御部17による制御に基づき、上述した所定の処理を行った画像に対して更に必要な処理を施して表示画像を生成する。例えば、後処理部15は、補正処理部44により補正された画像を取得して表示部19に表示するための画像を生成し、生成した画像を表示部19へ出力する。また、後処理部15は、画像メモリ18に記憶された画像を取得して表示部19に表示するための画像を生成し、生成した画像を表示部19へ出力してもよい。なお、表示部19に表示するための画像の生成とは、例えば画像のフォーマットを変換したり、表示部19の画面サイズに対応させて画像を拡大又は縮小したり、表示部19の解像度に応じて画像解像度を変換する等であるが、これに限定されるものではない。
駆動制御部16は、制御部17による制御に基づき、光学系11のレンズ21a,21b,21cの位置や絞り22の絞り度合い等を制御する。制御部17は、撮像装置10全体を制御する。例えば、制御部17は、上述したAFE13、後処理部15、及び駆動制御部17を制御するための制御信号を生成し、生成した制御信号を対応する構成部へ出力して、各構成部を制御する。
画像メモリ18は、補正処理部44により補正された画像を記憶する。表示部19は、後処理部15で処理された画像を画面に表示する。表示部19は、例えば画像を記録するVideo Random Access Memory(VRAM)と、VRAMの画像を出力するディスプレイとを有する。撮像装置10は、表示機能を必ずしも備えなくてもよく、例えば表示部19の替わりに表示用の画像を記録する記録部(例えば、VRAM等)が設けられてもよい。
ここで、上述した撮像装置10において、画像処理部14は、例えば、Digital Signal Processor(DSP)により構成することができる。この場合、上述したRAWメモリ41は、DSP内蔵メモリであってもよいし、外部のメモリであってもよい。また、後処理部15、画像メモリ18、表示部19等が画像処理部14と共に一体のDSPで構成されてもよい。また、画像処理部14は、DSPのような特定処理専用プロセッサでなく、Central Processing Unit(CPU)等の汎用プロセッサが、所定のプログラムを実行することにより画像処理部14等の機能を実現することもできる。駆動制御部16、制御部17、後処理部15等も同様に、少なくとも1台の特定処理専用プロセッサ又は汎用プロセッサにより構成することができる。
なお、プロセッサを画像処理部14として機能させるプログラムやそれを記録した記録媒体も本実施例に含まれる。
<第1実施例における画像処理の一例>
次に、第1実施例における画像処理の一例について、フローチャートを用いて説明する。図2は、第1実施例における画像処理の一例を示すフローチャートである。図2の例において、撮像装置10の画像処理部14は、設定部43により初期値等の設定情報を設定する(S01)。また、撮像装置10の画像処理部14は、AFE13から画像を取得する(S02)。取得した画像は、RAWメモリ等41の記憶部に記憶してもよい。
画像処理部14のPSF推定部42は、S02の処理で取得した画像(例えば、RGB形式の画像)に対して、YUV形式の画像に変換する(S03)。S03の処理において、PSF推定部42は、YUV形式の画像に変換後に、輝度信号Yと、色差信号U(Cb),V(Cr)とを分離する。なお、S03の処理において、PSF推定部42は、S02の処理で取得した画像がYUV形式の画像である場合には、変換処理は必要なく、輝度信号Yと、色差信号U(Cb),V(Cr)とを分離する処理のみを行う。
次に、画像処理部14のPSF推定部42は、S03の処理で得られた輝度信号Yのみを用いて、PSF推定処理を行う(S04)。S04の処理では、輝度信号Yのみを用いることでデータ量が削減でき、推定処理時間等を短縮することができる。なお、S04のPSF推定処理は、輝度信号に限定されるものではなく、例えば、上述したRGB画像のR,G,Bそれぞれを用いてPSF推定処理を行ってもよい。
次に、画像処理部14の補正処理部44は、S04の処理により得られるPSFを用いて画像を補正し(S05)、更に補正した画像とS03の処理で分離された色差信号U(Cb),V(Cr)を用いてRGB形式の画像に変換する(S06)。なお、第1実施例では、上述した後処理部15が、S06の処理(YUV形式の画像からRGB形式の画像への変換)を行ってもよい。
次に、撮像装置10の表示部19は、変換した補正画像をディスプレイに出力する(S07)。S07の処理において、撮像装置10は、補正された画像を記憶部等に記憶してもよい。
上述した第1実施例における画像処理は、推定されたPSFを用いて補正画像を出力する処理まで行っているが、これに限定されるものではなく、例えば上述したS04におけるPSF推定処理までを行う処理であってもよい。
<本実施形態におけるボケ画像について>
ここで、本実施形態におけるボケ画像について説明する。ボケ画像は、例えばボケがない画像(真の画像)に対し、ある点から光学的な拡がりを持ったボケを畳み込んだものである。したがって、ボケ画像をy、ボケのない真の画像をx、ボケ関数(例えば、PSF)をk、ノイズをnとすると、ボケ画像は、以下に示す(1)式で表される。
上述した(1)式において、ボケ画像yは、真の画像xに対してPSFにkを畳みこんだ画像となっている。更に、ボケ画像yには、画像上のノイズnが含まれる。
上述したボケを画像の観点から考えると、画像上のある1点の画素は、その周りの画素の情報を足し合わせた画像であるといえる。そこで、本実施形態では、周りの画素の情報をどう足し合わせるか(PSFに相当)という情報を用いて、この真の画像を求めるため、本実施形態におけるボケの補正にはPSFの情報が必要となる。
なお、ボケ画像だけではPSF(周囲の画素をどのように足し合わせたか)の情報は未知であるため、上述した第1実施例におけるPSF推定により、PSFの情報を明確にする。更に、第1実施例において、PSFを用いた画像の補正手法については、例えば空間周波数も用いてもよく、繰返し手法等を用いてもよいが、これに限定されるものではない。
<PSF推定部42における処理の具体例>
次に、上述したPSF推定部42における処理の具体例について説明する。図3は、ボケ画像と補正画像との関係を模式化した図である。なお、図3(A)〜(C)は、画像のボケを1次元(矩形波)で模式化した図を示し、図3(D)〜(F)は、画像のボケを矩形波ではなく、繰り返し波形を用いて模式化した図を示している。
図3(A)の例では、真の矩形波形51に周辺画素の拡がりを持った分布情報52−1を畳み込むことで、エッジのなまった波形(ボケ画像に相当)53が生成される。なお、上述した真の矩形波形51とは、例えば画像中に含まれる隣接画素間での輝度の高低を示すものであり、輝度が急激な高低がある場合には、矩形波形51に示すようなエッジが生じる。
ここで、なまった波形53に対して、適切なPSF相当の拡がり(PSF幅)を持った分布情報52−1を用いて補正した場合には、図3(B)に示すような真の矩形波形51に近い補正波形54−1となる。
しかしながら、図3(B)の例は理想的な結果であり、実際には、余分な周辺画素の情報も付加され、分布情報52−1よりも広い(PSF幅の大きい)分布情報52−2を用いて補正される。このように過補正された場合には、図3(C)に示すように矩形波形のエッジ部分がオーバーシュートする。そのため、図3(C)に示すように、真の矩形波形51とは異なる補正波形54−2となる。なお、PSFが大きくなると、オーバーシュート量も増える。そのため、第1実施例では、上述したオーバーシュート量を、PSFの大きさを推定する上での判断情報の1つとすることができる。
また、上述した矩形波形を用いた例を、繰り返し波形を用いて説明すると、図3(D)の例では、真の繰返し波形55に周辺画素の拡がりを持った分布情報56−1を畳み込み、繰返し波形の振幅が劣化したなまった波形(ボケ画像に相当)57が生成される。なお、上述した真の繰返し波形55は、例えば画像中に含まれる隣接画素間で明るさ(輝度)が急激に変化するエッジ(輪郭)部分である。
ここで、なまった波形57に対して、適切なPSF相当の拡がり(PSF幅)を持った分布情報56−1を用いて補正した場合には、図3(E)に示すような真の繰り返し波形55に近い補正波形58−1となる。
ここで、図3(E)の例は、理想的な結果であり、実際には余分な周辺画素の情報も付加され、分布情報56−1よりも広い(PSF幅の大きい)分布情報56−2を用いて補正される。しかしながら、そのような分布情報56−2を用いて過補正された補正波形58−2も、図3(F)に示すようにオーバーシュートがなく波形に違和感がない。
つまり、余分な情報で補正した波形と、なまった波形との単純な差分を比較するだけでは、例えば図3(D)〜(F)に示すような繰り返しパターンのような場合に、図3(G)(ii)に示すように、波形に違和感がないため、適切なPSFの推定ができない。
したがって、第1実施例では、図3(G)(i)に示すように、カメラ等の撮像装置10から撮影された画像から、上述した矩形波形に近いエッジ部分を抽出し、抽出した部分を用いて余分な情報で補正した波形となまった波形との差分を取得する。更に、第1実施例では、差分により得られるオーバーシュート量を用いて逆エッジ成分の領域を取得し、中側した逆エッジ成分の値から、PSFを推定する。なお、第1実施例では、逆エッジ成分を用いずにオーバーシュート量のみを用いてPSFを推定してもよい。
<PSF推定の具体例>
図4は、本実施形態におけるPSF推定の具体例を示す図である。PSF推定部42は、例えば図4(A)、図4(B)に示すように、例えば上述したなまった波形(ボケ画像)や、余分な情報で補正した波形に対して微分を行うことで、隣接する画素の輝度変化を示す波形を生成する。
更に、PSF推定部42は、図4(A)に示すように、なまった波形(ボケ画像)を微分して得られた波形(第1の波形)と、予め設定された閾値とを比較し、第1の波形が閾値よりも小さい部分(例えば、画像中の画素の位置)を取得する。なお、閾値は、補正対象の画像の種類等により任意に設定することができるが、これに限定されるものではなく、予め固定値に設定してもよい。
更に、PSF推定部42は、図4(B)に示すように、上述した閾値よりも小さい部分であって、余分な情報で補正された波形を微分した波形(第2の波形)を用いて、第1の波形と比較して逆符号の領域を取得する。これにより、PSF推定部42は、画像補正のときに、画素の周りの情報をどの程度使うのがよいのか(つまり、適切なPSFの大きさ(幅))を判断する。
なお、逆符号の領域とは、例えば微分により得られる第1の波形と第2の波形のそれぞれの輝度値(エッジ成分)を、同じ画像中の画素の位置で比較したときに符号が逆となる領域である。なお、この逆符号の領域を逆エッジ成分という。図4(B)の例では、第2の波形が閾値(0)よりも小さい部分であって輝度値が正(プラス)とは逆の負(マイナス)の領域が逆符号の領域となる。なお、逆符号の領域は、負の領域に限定されるものではなく、例えば微分した後の基準となる輝度値が負の場合には、正の領域が逆符号の領域となる。
また、逆符号の領域は、オーバーシュート量に応じて変動し、オーバーシュート量が増加すると、逆符号の領域の値も増加する。更に、逆符号の領域における輝度値(逆エッジ輝度値)は、PSFの大きさ(幅)に対して単調増加することから、この逆エッジ輝度値を用いて効率よく適切なPSFを推定することができる。
ここで、図5は、PSF幅と逆エッジ最大輝度値との関係を示す図である。図5の例において、横軸はPSF幅を示し、縦軸は逆エッジ最大輝度値(abs)を示している。また、図5の例では、撮像装置10で被写体を撮影した場合のボケの程度(フォーカス距離)を変化させた例を示している。なお、図5の例では、撮像装置10から被写体までの距離が同じ8mで、フォーカス(focus)距離を、8m(ジャストフォーカス)、5m、4m、3mと変化させてボケの大きさ(幅)を変えたときの逆エッジ成分の最大輝度値を計算した例を示している。
図5に示すように、フォーカス距離が被写体距離と離れるほどボケが大きくなる。また、PSF幅を大きくしていくと逆エッジ成分の最大輝度値は、どのフォーカス距離においても単調に増加する。そこで、PSF推定部42は、図5に示すように、逆エッジ成分の最大輝度値に閾値を設定し、ボケが大きい画像でのPSF幅を取得する。
また、PSFが異なるときに、余分な周辺部の画素の情報が増えるほど矩形部分のオーバーシュートの量が増えていく。したがって、PSF推定部42は、このオーバーシュート量をPSFの大きさの判断基準とする。また、PSF推定部42は、例えば上述した図4に示すような微分の逆符号の領域を用いてオーバーシュート量を取得してもよい。
図6は、補正前後の1次元ラインの輝度値の比較例を示す図である。1次元ラインとは、例えば、縦mピクセル×横nピクセルの画像上の所定の位置に引いた直線である。図6(A)、図6(B)において、横軸は画像中における画素の位置(ピクセル)を示し、縦軸は各画素に対する輝度値を示している。また、図6(B)は、図6(A)の画素範囲0〜100ピクセル部分を拡大して表示したものである。
図6(A)、図6(B)の例では、オリジナル画像(ボケ画像)の各画素単位の輝度値の変化を、適正に補正した画像(以下、「適正補正画像」という)と、過補正した画像(以下、「過補正画像」という)の場合における輝度値の変化と共に示している。
図6(B)の例では、1次元ラインの約8〜28ピクセルの位置で、それぞれの輝度値の差が大きく表れている。したがって、PSF推定部42は、この部分を数値化し、PSFの推定に用いる。例えば、PSF推定部42は、上述した微分処理等によりPSFの適正を評価する逆エッジ成分を抽出し、抽出した逆エッジ成分の大きさからPSFを推定する。
図7は、逆エッジ成分の抽出結果の一例を示す図である。図7(A)は、逆エッジ成分を抽出する対象画像(例えば、顔画像)60と、上述した1次元ライン61を示している。なお、対象画像60は、輝度のみが抽出された画像でもよい。また、図7(B)は、過補正画像に対する逆エッジ成分の抽出例を示し、図7(C)は、適正補正画像に対する逆エッジ成分の抽出例を示している。なお、図7(B)、図7(C)の例では、上述した図7(A)に示す1次元ライン61の画像部分に対応させて、画像中の画素の位置(ピクセル)に対する輝度値を示している。
図7(B)(i)では、1次元ライン61に対応する画像部分(一部の領域)に対して、オリジナル画像(ボケのある画像)を微分して得られる波形(第1の波形)と、過補正による補正後の画像を微分して得られる波形(第2の波形)を示している。更に、図7(B)(ii)では、図7(B)(i)に示す横軸の画素の位置(0〜350ピクセル)を0〜100ピクセルに拡大した波形を示している。更に、図7(B)(iii)では、図7(B)(ii)に示すオリジナル画像を微分して得られる波形と、過補正による補正後の画像を微分して得られる波形との差分により得られる逆エッジ成分をプロットした波形を示している。
また、図7(C)(i)では、1次元ライン61の画像部分に対して、オリジナル画像を微分して得られる波形(第1の波形)と、適正なPSFを用いた補正による補正後の画像を微分して得られる波形(第2の波形)を示している。更に、図7(C)(ii)では、図7(C)(i)に示す横軸の画素の位置(0〜350ピクセル)を0〜100ピクセルに拡大した波形を示している。更に、図7(C)(iii)では、図7(C)(ii)に示すオリジナル画像を微分して得られる波形と、適正補正による補正後の画像を微分して得られる波形との差分により得られる逆エッジ成分をプロットした波形を示している。
ここで、図7(B)(iii)に示す逆エッジ成分と、図7(C)(iii)に示す逆エッジ成分とを比較すると、PSFが大きい場合(過補正の場合)には、適正補正時と比較して逆エッジ成分が大きいことがわかる。このように、逆エッジ成分が大きい場合には、補正した画像に違和感が生じるため、この行き過ぎた補正部分が閾値以下になるように、PSFの大きさ(幅)を推定する。
<PSF推定例>
次に、上述したPSF推定部42におけるPSF推定例についてフローチャートを用いて説明する。
<第1の処理例>
図8は、PSF推定部における第1の処理例を示すフローチャートである。また、図9は、第1の処理例を説明するための図である。なお、図9の横軸はPSF幅を示し、縦軸は逆エッジの最大輝度値(abs)を示す。
図8の例において、PSF推定部42は、撮影されたボケ画像(オリジナル画像)の入力を受け付けると(S11)、設定部43から設定情報を取得する(S12)。なお、S12の処理で取得する設定情報としては、例えばPSF幅の初期値やPSF幅を変更するときの変更幅(例えば、増加幅)、PSFを用いた補正の実行回数、逆エッジ最大輝度値に対する閾値等であるが、これに限定されるものではない。図9の例では、例えばPSF幅の初期値が0.25、変更幅が+0.25、実行回数15回、閾値3absであるが、数値についてはこれに限定されるものではない。
次に、PSF推定部42は、補正の実行回数に初期値(=1)を設定し(S13)、PSF幅を用いて、S11の処理で取得したボケ画像に対する補正処理を実行し(S14)、補正した画像を用いて、上述した逆エッジ成分を取得する(S15)。S14の補正処理における補正手法は、予め設定された手法(例えば、空間周波数で補正する手法、逆フィルタで補正する手法、最小化処理で補正する手法)等があるが、これに限定されるものではない。また、S14の処理では、PSF幅が変更される度に補正処理を行うが、その場合には、予め設定された同一の補正手法により補正される。
また、上述したS15の処理において、PSF推定部42は、S11の処理で入力したボケ画像を微分した波形と、S13の処理で得られた補正画像を微分した波形とを用いて、上述した逆エッジ成分の最大輝度値(逆エッジ最大輝度値)を取得する。
次に、PSF推定部42は、S15の処理で取得した逆エッジ最大輝度値が予め設定された閾値(図9の例では、閾値3)以上であるか否かを判断する(S16)。PSF推定部42は、逆エッジ最大輝度値が閾値以上でない場合(S16において、NO)、補正の実行回数が所定回数以上であるか否かを判断し(S17)、所定回数以上である場合でない場合(S17において、NO)、実行回数を1増加する(S18)。更に、PSF推定部42は、S12の処理で得られた設定情報に基づいてPSF幅を変更し(S19)、S14の処理に戻る。
また、PSF推定部42は、S16の処理において、逆エッジ最大輝度値が閾値以上である場合(S16において、YES)、そのときのPSF幅を適切なPSFの大きさとして推定する(S20)。なお、上述の処理では、閾値以上である場合に、その直前に使用したPSF幅を適切なPSFの大きさとして推定してもよい。
また、PSF推定部42は、S17の処理において、補正の実行回数が所定回数以上である場合(S17において、YES)、そのときのPSF幅を適切なPSFの大きさとして推定する(S20)。なお、上述の処理では、例えばPSF幅を増加させ続けたとしても逆エッジ最大輝度値が閾値を越えないような場合に、PSF幅を推定して処理を終了させることができる。また、上述の処理により補正処理を無駄に繰り返すことがないため処理時間を短縮することができる。
上述した第1の処理例において、PSF推定部42は、図9に示すようにPSF幅を段階的に上げていき、各段階で補正した画像に対する逆エッジ最大輝度値が、予め設定された閾値以上となった場合のPSFを、適切なPSFと推定する。
なお、図9の例では、PSF幅が3.25の場合に逆エッジ最大輝度値の閾値3以上となっている。したがって、図9の例において、PSFの大きさは、3.25(又は、その直前の3)と推定することができる。
<第2の処理例>
図10は、PSF推定部における第2の処理例を示すフローチャートである。また、図11は、第2の処理例を説明するための図である。なお、図11(A)、図11(B)の横軸はPSF幅を示し、縦軸は逆エッジの最大輝度値(abs)を示す。また、図11(A)、図11(B)には、説明の便宜上、PSF幅と逆エッジ最大輝度値との対応関係を示す曲線も示している。
図10の例において、PSF推定部42は、撮影されたボケ画像(オリジナル画像)の入力を受け付けると(S31)、設定部43から設定情報を取得する(S32)。なお、S32の処理で取得する設定情報としては、例えば2つのPSF幅の値dw1、dw2や2つのPSF幅を変更するときの変更幅(例えば、増加幅)、逆エッジ最大輝度値に対する閾値範囲(上限閾値、下限閾値)等であるが、これに限定されるものではない。図11の例では、例えばPSF幅の2つの値が0.5(初期値1)と、4(初期値2)、閾値範囲が2.75(下限閾値)〜3.25(上限閾値)absであるが、数値についてはこれに限定されるものではない。また、PSF幅の初期値となる2つの値は、例えば閾値範囲に対応させて小さい値と大きい値とを設定することが好ましいがこれに限定されるものではない。
次に、PSF推定部42は、2つのPSF幅を用いて、S31の処理で取得したボケ画像に対する補正処理を実行し(S33)、補正した画像を用いて、上述した逆エッジ成分を取得する(S34)。S33の補正処理では、PSF幅が変更される度に補正処理を行うが、その場合には予め設定された同一の補正手法により補正される。
また、上述したS34の処理において、PSF推定部42は、S31の処理で入力したボケ画像を微分した波形と、S33の処理で得られた補正画像を微分した波形とを用いて、上述した逆エッジ最大輝度値を取得する。
次に、PSF推定部42は、逆エッジ最大輝度値と閾値との差分r1、r2を算出する(S35)。S35の処理において、PSF推定部42は、図11(A)に示すように、閾値範囲における上限値又は下限値と、2つのPSF幅を用いて補正したそれぞれの補正画像から得られるそれぞれの逆エッジ最大輝度値との差分を算出する。例えば、図11の例において、PSF推定部42は、PSF幅の値dw1に対する逆エッジ最大輝度値と、閾値範囲のうち近い方の下限閾値との差分r1を算出する。また、PSF推定部42は、PSF幅の値dw2に対する逆エッジ最大輝度値と、閾値範囲のうち近い方の上限閾値との差分r2を算出する。
次に、PSF推定部42は、S34の処理により得られた2つの逆エッジ最大輝度値の点を用いて、補間によりPSF幅dwaを取得する(S36)。S36の処理において、PSF推定部42は、例えばPSF幅の2つの値dw1、dw2を用いて得られたそれぞれの逆エッジ最大輝度値の点を結ぶ直線L1を引く。更に、PSF推定部42は、その直線L1を用いて閾値範囲の中心(図11(A)の場合には、逆エッジ最大輝度値3)のときのPSF幅をdwaとして取得する。なお、補間処理は、上述の例に限定されるものではない。
次に、PSF推定部42は、S36の処理により得られたPSF幅dwaを用いて、S31の処理で取得したボケ画像に対する補正処理を実行し、その補正画像を用いて逆エッジ成分を取得し、取得した逆エッジ成分と閾値範囲との差分raを算出する(S37)。なお、S37の処理において、PSF推定部42は、上述したPSF幅の2つの値dw1、dw2ではなく、PSF幅dwaを用いて上述したS33〜S35と同様の処理を行い、差分raを算出する。
次に、PSF推定部42は、例えばPSF幅dwaを用いて得られた逆エッジ最大輝度値が、予め設定された閾値範囲内であるか否かを判断し(S38)、閾値範囲内でない場合(S38において、NO)、2つのPSF幅を変更し(S39)、S36の処理に戻る。例えば、S35の処理で得られた差分r1、r2において、図11(A)に示すようにr2がr1より小さい場合(r2<r1)には、r2を取得したときのPSF幅の方が閾値範囲に近いことになる。したがって、S39の処理において、PSF推定部42は、r2がr1より小さい場合に、図11(B)に示すようにr2を取得したときのPSF幅をdw1に変更し、そのr2をr1に変更する。更に、PSF推定部42は、図11(B)に示すように、上述したPSF幅dwaをdw2と変更し、差分raをr2と変更する。上述した変更を行った後、PSF推定部42は、上述したS36以降の処理を行う。
また、S38の処理において、PSF推定部42は、逆エッジ最大輝度値が、予め設定された閾値範囲内である場合(S38において、YES)、そのときのPSF幅を適切なPSFの大きさとして推定する(S40)。
図11(B)の例では、PSF推定部42は、S39の処理を行った後、S36以降の処理で補間により図11(B)に示すような直線L2を引き、その直線L2と閾値範囲の中心とを用いて、新たなPSF幅dwaを取得する。また、PSF推定部42は、そのPSF幅dwaを用いて逆エッジ最大輝度値を取得する。この逆エッジ最大輝度値は、閾値範囲内であるため、PSF推定部42は、このときのPSF幅dwaを適切なPSFの大きさとして推定する。
上述した第2の処理例では、PSF幅に対する逆エッジ最大輝度値が、ほぼ単調増加することを利用して、上述したような補間を繰り返すことで、補正の実行回数(繰り返し数)を上述した第1の処理例よりも低減することができる。したがって、第2の処理例では、迅速にPSFを推定することができる。
上述した第1又は第2の処理例を用いて適切なPSFを推定することで、ボケ画像を補正するための処理の手間を軽減することができる。上述した第1の処理例と第2の処理例は、一部又は全部を組み合わせて処理することもできる。したがって、PSF推定部42は、例えば第2の処理例において、上述した第1の処理例と同様に実行回数の制限を設け、所定回数以上でも逆エッジ最大輝度値が閾値範囲内にない場合に、その直前の補正を使用したPSF幅を適切なPSFの大きさとしてもよい。
<補正処理部44におけるボケ補正手法>
次に、補正処理部44におけるボケ画像の補正手法について説明する。例えば、上述した(1)式に示すPSF関数kを求めるには、例えば空間周波数で求める手法、逆フィルタで求める手法、最小化で求める手法等があるが、これに限定されるものではない。以下に、上述したそれぞれの手法について説明する。
<空間周波数>
空間周波数の場合、例えばフーリエ変換により、(1)式は、Y(ω)=K(ω)X(ω)(ω:空間周波数)と表すことができる。この場合、補正処理部44は、一番単純には逆数として、逆フィルタKinvを求めてから、補正画像(ボケのない真の画像)を算出する。
この場合、Kinv(ω)は、1/K(ω)となり、X(ω)=Kinv(ω)Y(ω)となる。補正処理部44は、逆フーリエ変換をして補正画像を求める。ただし、逆フィルタを求めるときに割り算を行うので、高周波が0に近いと逆数が大きくなりすぎて高周波成分が強調されてしまう。
そこで、補正処理部44は、例えば割り算の分母に補正項を入れる。この場合、重みをλとすると、Kinv(ω)=1/(K(ω)+λ)となり、Kinv(ω)は、以下に示す(2)式で表すことができる。
このように、補正処理部44は、空間周波数を用いて補正画像xを求めることができる。
<逆フィルタ>
逆フィルタの場合、補正処理部44は、X(ω)=Kinv(ω)Y(ω)に対して、Kinvを逆フーリエ変換して逆フィルタKinvを求める。更に、補正処理部44は、以下に示す(3)式を用いて畳み込み処理を行うことで、補正画像xを求めることができる。
<最小化>
最小化の場合、補正処理部44は、以下に示す(4)式のような評価関数を用いて、その値が最小となるxを求める。
なお、補正処理部44は、値を収束させるために以下に示す(5)式のような正則化項を追加し、この評価関数が最小となるxを求める。
なお、上述した(5)式において、λは重みを示し、E(x)は正則化関数を示す。このように、補正処理部44は、評価関数を用いた最小化処理を用いて補正画像xを求めることができる。
なお、補正処理部44における補正手法については、これに限定されるものではない。また、補正処理部44は、上述した補正手法を、用途等に応じてそれぞれ選択的に使用してもよく、複数を組み合わせてもよい。例えば、補正処理部44は、迅速な補正処理を実現する場合には、上述した空間周波数又は逆フィルタによる処理を選択し、精度を重視する場合には上述した最小化による処理を選択するが、これに限定されるものではない。
<他のPSF推定例>
上述したPSF推定は、撮影したボケ画像の全領域(全画素)を用いて上述したPSF推定処理を行ってもよく、また一部の領域又は直線(例えば、1次元ライン)を抽出し、その抽出した部分画像を用いて上述したPSF推定処理を行ってもよい。PSF推定部42は、部分画像を用いてPSFを推定することで、画像の全領域を使用するよりもデータ量を削減することができるため、PSF推定の処理時間を短縮することができる。
図12は、画像の一部の領域を用いたPSF推定例を説明するための図である。例えば、PSF推定部42は、図12(A)に示すように、例えば画像70の中心付近を含む一部の領域71を抽出し、抽出した一部の領域71を用いてPSF推定を行ってもよい。撮影したい被写体は、通常、画像70の中心にくることが多いため、PSF推定部42は、上述した手法で一部の領域71を抽出することで、ボケ画像を補正するための適切なPSFを推定することができる。一部の領域71の大きさは、予め固定の画素サイズにしてもよく、また全画素数に基づく比率等に基づいて設定することができるが、これに限定されるものではない。
また、PSF推定部42は、図12(B)に示すように、図12(A)に示す画像70を微分した画像72を用いてエッジを検出し、エッジが多い領域を一部の領域71として抽出し、抽出した一部の領域71を用いてPSF推定を行ってもよい。エッジが多い領域を利用することで、上述した逆エッジ成分をより多く取得できる可能性があるため、より適切なPSFの大きさを推定することができる。
また、PSF推定部42は、図12(C)に示すように、画像73から顔画像を抽出し、その顔画像を含む領域を一部の領域71として、PSF推定を行ってもよい。なお、顔画像の抽出は、例えば顔の特徴情報(目、鼻、口等の配置情報や色情報)等に基づいて、顔画像を抽出することができるが、これに限定されるものではない。顔画像はボケによる違和感が目立つため、顔画像に対応するPSFを適用することで、より適切な画像補正を実現できる。
また、PSF推定部42は、図12(C)に示すような顔画像に限定されるものではなく、例えば花や山、建物等の所定の物体の場合には、所定の物体抽出処理等を行い、抽出した物体を含む一部の領域71を用いてPSF推定を行ってもよい。
また、PSF推定部42は、図12(D)に示すように、画像74に複数(例えば、2つ)の顔画像が存在する場合に、それぞれの顔画像から一部の領域71−1,71−2を抽出し、抽出した一部の領域71−1,71−2からPSFの推定を行う。また、PSF推定部42は、得られた複数のPSFの大きさを平均して、画面全体に対するPSFを推定してもよい。
なお、図12(D)に示すように、1画像中から複数のPSFを取得した場合、補正処理部44は、一部の領域71−1,71−2のそれぞれに対応して取得したPSFを用いて補正を行ってもよい。更に、補正処理部44は、その他の画像領域については、一部の領域71−1,71−2により得られたPSFの値を補間した値を用いて補正を行ってもよい。これにより、領域毎に適切なPSFを用いてボケ画像を補正することができる。
上述した図12(A)〜(D)に示すような一部の領域71の抽出条件は、上述した設定部43により設定することができる。また、設定情報には、一部の領域71を使用するか画像の全領域を使用するかの情報を有してしてもよい。
<第2実施例:画像処理装置の概略構成例>
ここで、本実施形態における画像処理装置は、上述した第1実施例に示すような撮像装置10に内蔵されるだけでなく、画像処理部14における各処理をCPUやDSP等に行わせてもよい。図13は、第2実施例における画像処理装置の概略構成の一例を示す図である。
図13に示す画像処理装置80は、制御部81と、主記憶部82と、補助記憶部83と、通信部84と、記録媒体インターフェース部85と、カメラインターフェース部86とを備える。各部は、バスを介して相互にデータ送受信可能に接続されている。画像処理装置80は、例えばPersonal Computer(PC)やサーバ、タブレット、スマートフォン端末等の情報処理機能を有する装置である。
制御部81は、コンピュータの中で、各装置の制御やデータの演算、加工を行うCPU等である。また、制御部81は、主記憶部82や補助記憶部83に記憶されたプログラムを実行する演算装置である。制御部81は、例えば補助記憶部83に記憶される画像処理を行うためのプログラムを実行することで、上述した各処理を実行することができる。
主記憶部82は、制御部81が実行する基本ソフトウェアであるOSやアプリケーションソフトウェア等のプログラムやデータを記憶又は一時保存する記憶装置である。主記憶部82は、例えばRead Only Memory(ROM)やRandom Access Memory(RAM)等である。
補助記憶部83は、例えばアプリケーションソフトウェア等に関連するデータを記憶する記憶装置である。また、補助記憶部83は、記録媒体87等から取得された画像処理(例えば、PSF推定処理、補正処理等)を行うためのプログラムを記憶しておいてもよい。補助記憶部83は、例えばHard Disk Drive(HDD)、又はSolid State Drive(SSD)等である。
通信部84は、インターネットやLocal Area Network等の通信ネットワークやケーブル等を用いて接続された他の装置とのデータの送受信を行う。通信部84による通信は、有線でも無線でもよく、それらの組み合わせでもよい。例えば、通信部84は、他の装置から1又は複数の画像を取得し、取得した画像を補助記憶部83等に記憶させることができる。
記録媒体インターフェース部85は、例えばUniversal Serial Bus(USB)等のデータ伝送路を介して接続された記録媒体87(例えば、フラッシュメモリ等)と画像処理装置80とのインターフェースである。記録媒体インターフェース部85は、制御部81からの制御により、記録媒体87に格納された所定のプログラム(例えば、画像処理プログラム等)を読み出し、画像処理装置80にインストールすることができる。これにより、インストールされた所定のプログラムは、画像処理装置80により実行可能となる。
また、記録媒体インターフェース部85は、上述した画像処理プログラムによる実行結果や画像処理プログラム自体を記録媒体87に書き込むこともできる。なお、記録媒体87は、CD−ROM、フレキシブルディスク、光磁気ディスク等のように情報を光学的,電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
カメラインターフェース部86は、カメラ(撮像部)88との通信を行うインターフェースである。カメラ88で撮像された画像(例えば、ボケ画像)は、カメラインターフェース部86がカメラ88から取得し、補助記憶部83等に記憶される。
カメラ88は、通常の風景や人物等の被写体を撮影する。撮影された画像は、カメラインターフェース部86を介して画像処理装置80に取り込まれる。なお、カメラ88は、画像処理装置80に内蔵されてもよい。
これにより、画像処理装置80は、撮影した画像を取得して、上述したPSF推定を行い、推定したPSFを用いて画像を補正することができる。
本実施形態では、上述したコンピュータ本体のハードウェア構成に実行プログラム(例えば、画像処理プログラム等)をインストールすることで、ハードウェア資源とソフトウェアとが協働して、上述した画像処理等を実現することができる。また、上述した画像処理に対応する画像処理プログラムは、例えば装置上で常駐している状態であってもよく、ユーザによる起動指示により起動させてもよい。
上述したように本実施形態では、ボケ画像を補正するための処理の手間を軽減することができる。また、本実施形態では、適切なPSFを推定し、推定したPSFを用いてボケ画像を適切に補正することができる。また、本実施形態では、PSFを容易に推定することができるので、ボケ画像を適切に補正することができる。
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、上記変形例以外にも種々の変形及び変更が可能である。
なお、以上の実施例に関し、更に以下の付記を開示する。
(付記1)
撮影された画像を微分して得られる第1の波形と、ボケの大きさに対応する補正パラメータを用いて前記画像を補正し、補正した前記画像を微分して得られる第2の波形とを比較し、前記第2の波形が前記第1の波形に対して逆符号となる領域の値と、所定の閾値とを用いて前記撮影された画像に対するボケの大きさを推定する、処理をコンピュータに実行させるための画像処理プログラム。
(付記2)
推定した前記ボケの大きさに対応する補正パラメータを用いて前記撮影された画像を補正することを特徴とする付記1に記載の画像処理プログラム。
(付記3)
前記第1の波形が予め設定された閾値より小さく、かつ前記第1の波形と前記第2の波形との差分により得られる波形の符号が前記逆符号となる部分を取得し、取得した前記部分から前記ボケの大きさを推定することを特徴とする付記1又は2に記載の画像処理プログラム。
(付記4)
前記ボケの大きさに対応する補正パラメータを変えながら、前記撮影された画像を補正し、補正した前記画像を微分して得られる前記第2の波形と、前記第2の波形が前記第1の波形に対して逆符号となる領域の値を取得し、取得した前記領域の値が、前記所定の閾値を越えたときの補正パラメータから前記ボケの大きさを推定することを特徴とする付記1乃至3の何れか1項に記載の画像処理プログラム。
(付記5)
前記ボケの大きさを複数設定し、設定した各ボケの大きさに対する補正パラメータを用いて前記撮影された画像を補正し、補正した前記画像を微分して得られる前記第2の波形と、前記第2の波形が前記第1の波形に対して逆符号となるそれぞれの領域の値を取得し、取得した前記それぞれの領域の値を用いて補間を繰り返すことで、前記ボケの大きさを推定することを特徴とする付記1乃至4の何れか1項に記載の画像処理プログラム。
(付記6)
前記撮影された画像から一部の領域を抽出し、抽出した前記一部の領域を用いて前記ボケの大きさを推定することを特徴とする付記1乃至5の何れか1項に記載の画像処理プログラム。
(付記7)
撮像部で撮影された画像を微分して得られる第1の波形と、ボケの大きさに対応する補正パラメータを用いて前記画像を補正し、補正した前記画像を微分して得られる第2の波形とを比較し、前記第2の波形が前記第1の波形に対して逆符号となる領域の値と、所定の閾値とを用いて前記撮影された画像に対するボケの大きさを推定する推定部を有することを特徴とする画像処理装置。
(付記8)
画像処理装置が、
撮影された画像を微分して得られる第1の波形と、ボケの大きさに対応する補正パラメータを用いて前記画像を補正し、補正した前記画像を微分して得られる第2の波形とを比較し、前記第2の波形が前記第1の波形に対して逆符号となる領域の値と、所定の閾値とを用いて前記撮影された画像に対するボケの大きさを推定することを特徴とする画像処理方法。