説明

画像処理装置、画像処理方法、及びプログラム

【課題】画質の低下を抑制しつつ、より高速に画像のブレおよびボケを補正する。
【解決手段】HPF213は、Gブレ画像のストラクチャ成分のブレを補正したG補正画像のテクスチャ成分を抽出する。マスク生成部214は、縮小Rブレ画像のストラクチャ成分のブレを補正した後、縮小前の大きさに戻したR補正画像、および、縮小Bブレ画像のストラクチャ成分のブレを補正した後、縮小前の大きさに戻したB補正画像に、G補正画像のテクスチャ成分を合成する量を、ブレ画像のG成分の変動とR成分の変動との相関またはG成分の変動とB成分の変動との相関のうち少なくとも一方が弱い領域ほど小さくするマスク画像を生成する。乗算部215は、マスク画像を用いて、R補正画像およびB補正画像にG補正画像のテクスチャ成分を合成する。本発明は、例えば、記録再生装置等に適用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法、及びプログラムに関し、特に、ブレまたはボケが発生している画像を補正する場合に用いて好適な画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【0002】
従来、撮像した画像に生じた手振れボケやピンボケ(以下、単にボケともいう)を補正する補正技術が存在する。
【0003】
例えば、L.B.LucyとWilliam Hardley Richardsonにより提唱されたRichardson-Lucy法がある。しかし、この手法では、点広がり関数(PSF(Point Spread Function))の周波数軸上で零点に落ち込むスペクトラムを用いて逆問題を解く際に、零点において、ノイズの増幅やリンギングの発生等が見られる。また、点広がり関数が正確に求まらなかった場合には、零点において、ノイズの増幅やリンギングの発生等が、より大きくなってしまう。
【0004】
そこで、ゲインマップの導入により、点広がり関数が正確にわかる場合に、リンギングを抑制することが可能なresidual deconvolution技術が存在する(例えば、非特許文献1を参照)。
【0005】
しかしながら、従来のresidual deconvolution技術では、点広がり関数に誤差が存在する場合には、画像のストラクチャ成分(structure)と残差(residual部分)の復元がうまくいかず、リンギングがより多く発生してしまう。
【0006】
そこで、Richardson-Lucy法をベースにした静止画手振れ補正アルゴリズムに、画像のストラクチャ成分とテクスチャ成分を分離するStructure/Texture分離フィルタを組み込んだ技術(以下、Structure Deconvolution技術と称する)を適用することが考えられる。
【0007】
Structure Deconvolution技術では、例えば、Structure/Texture分離フィルタの一種であるトータルバリエーション(Total Variation)フィルタにより、ブレが発生している画像(以下、ブレ画像と称する)のストラクチャ成分とテクスチャ成分を分離し、ストラクチャ成分に対してのみブレを補正することで、ノイズやリンギングの発生を抑制する。
【0008】
ここで、ストラクチャ成分とは、画像がほとんど変化しない平坦部、画像が緩やかに変化する傾斜部、被写体の輪郭、エッジなど、画像の骨格を構成する成分を表す。また、テクチャ成分とは、被写体の細かな模様など画像のディテイルを構成する部分を表す。従って、ストラクチャ成分のほとんどが空間周波数の低い低周波成分に含まれ、テクスチャ成分のほとんどが空間周波数の高い高周波成分に含まれる。
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】Lu Yuan, Jian Sun, Long Quan, Heung-Yeung Shum, Image deblurring with blurred/noisy image pairs, ACM Transactions on Graphics (TOG), v.26 n.3, July 2007
【発明の概要】
【発明が解決しようとする課題】
【0010】
ところで、上述したStructure Deconvolution技術においては、計算量を削減し、より処理を高速化することが望まれている。
【0011】
本発明は、このような状況に鑑みてなされたものであり、画質の低下を抑制しつつ、より高速に画像のブレおよびボケを補正できるようにするものである。
【課題を解決するための手段】
【0012】
本発明の一側面の画像処理装置は、入力画像のG成分からなるG画像のストラクチャ成分のブレまたはボケを補正したG補正画像のテクスチャ成分を抽出するテクスチャ抽出手段と、前記入力画像のR成分からなるR画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したR補正画像、および、前記入力画像のB成分からなるB画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したB補正画像に、前記G補正画像のテクスチャ成分を合成する量を、前記入力画像のG成分の変動とR成分の変動との相関または前記入力画像のG成分の変動とB成分の変動との相関のうち少なくとも一方が弱い領域ほど小さくするマスク画像を生成するマスク生成手段と、前記マスク画像を用いて、前記R補正画像および前記B補正画像に前記G補正画像のテクスチャ成分を合成する合成手段とを含む。
【0013】
前記マスク生成手段には、前記R画像の高周波成分と前記G画像の高周波成分との相関が弱い領域ほど、前記R補正画像に前記G補正画像のテクスチャ成分を合成する量を小さくする第1のマスク画像を生成させ、前記B画像の高周波成分と前記G画像の高周波成分との相関が弱い領域ほど、前記B補正画像に前記G補正画像のテクスチャ成分を合成する量を小さくする第2のマスク画像を生成させ、前記合成手段には、前記第1のマスク画像を用いて、前記R補正画像に前記G補正画像のテクスチャ成分を合成し、前記第2のマスク画像を用いて、前記B補正画像に前記G補正画像のテクスチャ成分を合成させることができる。
【0014】
前記マスク生成手段は、前記R画像、前記G画像、および、前記B画像の高周波成分を抽出する高周波抽出手段と、前記R画像の高周波成分と前記G画像の高周波成分との差、および、前記B画像の高周波成分と前記G画像の高周波成分との差を検出する検出手段と、前記R画像の高周波成分と前記G画像の高周波成分との差が大きい領域ほど、前記R補正画像に前記G補正画像のテクスチャ成分を合成する量を小さくする前記第1のマスク画像を生成し、前記B画像の高周波成分と前記G画像の高周波成分との差が大きい領域ほど、前記B補正画像に前記G補正画像のテクスチャ成分を合成する量を小さくする前記第2のマスク画像を生成する生成手段とを含むようにすることができる。
【0015】
前記R画像および前記B画像を縮小する縮小手段と、前記R画像を縮小したR縮小画像のストラクチャ成分、前記B画像を縮小したB縮小画像のストラクチャ成分、および、前記G画像のストラクチャ成分のブレまたはボケを補正する補正手段と、ブレまたはボケを補正した後の前記R縮小画像および前記B縮小画像を元の大きさに戻す拡大手段とをさらに含むようにすることができる。
【0016】
本発明の一側面の情報処理方法は、画像処理装置が、入力画像のG成分からなるG画像のストラクチャ成分のブレまたはボケを補正したG補正画像のテクスチャ成分を抽出し、前記入力画像のR成分からなるR画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したR補正画像、および、前記入力画像のB成分からなるB画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したB補正画像に、前記G補正画像のテクスチャ成分を合成する量を、前記入力画像のG成分の変動とR成分の変動との相関または前記入力画像のG成分の変動とB成分の変動との相関のうち少なくとも一方が弱い領域ほど小さくするマスク画像を生成し、前記マスク画像を用いて、前記R補正画像および前記B補正画像に前記G補正画像のテクスチャ成分を合成するステップを含む。
【0017】
本発明の一側面のプログラムは、入力画像のG成分からなるG画像のストラクチャ成分のブレまたはボケを補正したG補正画像のテクスチャ成分を抽出し、前記入力画像のR成分からなるR画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したR補正画像、および、前記入力画像のB成分からなるB画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したB補正画像に、前記G補正画像のテクスチャ成分を合成する量を、前記入力画像のG成分の変動とR成分の変動との相関または前記入力画像のG成分の変動とB成分の変動との相関のうち少なくとも一方が弱い領域ほど小さくするマスク画像を生成し、前記マスク画像を用いて、前記R補正画像および前記B補正画像に前記G補正画像のテクスチャ成分を合成するステップを含む処理をコンピュータに実行させる。
【0018】
本発明の一側面によれば入力画像のG成分からなるG画像のストラクチャ成分のブレまたはボケを補正したG補正画像のテクスチャ成分が抽出され、前記入力画像のR成分からなるR画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したR補正画像、および、前記入力画像のB成分からなるB画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したB補正画像に、前記G補正画像のテクスチャ成分を合成する量を、前記入力画像のG成分の変動とR成分の変動との相関または前記入力画像のG成分の変動とB成分の変動との相関のうち少なくとも一方が弱い領域ほど小さくするマスク画像が生成され、前記マスク画像を用いて、前記R補正画像および前記B補正画像に前記G補正画像のテクスチャ成分が合成される。
【発明の効果】
【0019】
本発明の一側面によれば、画像のブレおよびボケを補正することができる。特に、本発明の一側面によれば、画質の低下を抑制しつつ、より高速に画像のブレおよびボケを補正することができる。
【図面の簡単な説明】
【0020】
【図1】本発明を適用した情報処理装置の第1の構成例を示すブロック図である。
【図2】初期推定PSFの推定方法の概要を説明する図である。
【図3】ブレ画像についてケプストラムを生成する生成方法を説明する図である。
【図4】ケプストラムに対して、輝点の最大値を算出する算出方法を説明する図である。
【図5】初期推定PSFの推定が成功したか否かを判定する判定方法を説明する図である。
【図6】初期推定PSFを生成する生成方法を説明する図である。
【図7】ストラクチャUの初期値U_initの生成方法を説明する図である。
【図8】バイリニア補間による補間方法を示す図である。
【図9】サポート制限部が行うサポート制限処理を説明する図である。
【図10】反復更新処理を説明するフローチャートである。
【図11】本発明を適用した情報処理装置の第2の構成例を示すブロック図である。
【図12】YUV空間について反復更新処理を行うことを説明する図である。
【図13】本発明を適用した情報処理装置の第3の構成例を示すブロック図である。
【図14】糊代処理を説明する第1の図である。
【図15】糊代処理を説明する第2の図である。
【図16】本発明を適用した画像処理装置の構成例を示すブロック図である。
【図17】マスク生成部の詳細な構成例を示すブロック図である。
【図18】画像補正処理を説明するフローチャートである。
【図19】マスク生成処理を説明するフローチャートである。
【図20】マスク画像を用いずに図18の画像補正処理を行った場合に発生する偽色の例について説明するための図である。
【図21】マスク画像を用いずに図18の画像補正処理を行った場合に発生する偽色の例について説明するための図である。
【図22】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【0021】
以下、本発明を実施するための形態(以下、実施の形態という)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態
2.変形例1
3.第2の実施の形態
4.変形例2
【0022】
<1.第1の実施の形態>
[情報処理装置の構成]
図1は、本発明の第1の実施の形態である情報処理装置1の構成例を示している。
【0023】
この情報処理装置1には、JPEG(Joint Photographic Experts Group)圧縮により圧縮された画像であって、撮像時の手振れによりブレが生じているブレ画像が入力される。
【0024】
情報処理装置1は、入力されるブレ画像を、複数のブロックgに分割し、各ブロック毎に、ブロックgに生じているブレ(の方向や長さ)を表す点広がり関数h、及びブロックgの平坦部とエッジ等の大振幅の成分を表すストラクチャfを初期推定する。
【0025】
そして、情報処理装置1は、各ブロック毎に初期推定した点広がり関数h及びストラクチャfを、それぞれ、真の点広がり関数、及び真のストラクチャに近づくように、反復して更新する。
【0026】
なお、以下において、k回だけ更新したときの点広がり関数hを、点広がり関数hkというとともに、k回だけ更新したときのストラクチャfを、ストラクチャfkという。
【0027】
また、各ブロック毎の点広がり関数hkを区別する必要がない場合、単に、点広がり関数Hkという。また、各ブロック毎のストラクチャfkを区別する必要がない場合、単に、ストラクチャUkという。さらに、各ブロックgを区別する必要がない場合、単に、ブレ画像Gという。
【0028】
情報処理装置1は、H_init生成部21、サポート制限部22、乗算部23、加算部24、重心補正(Center of gravity revision)部25、H生成部26、conv部27、処理部28、残差生成部29、corr部30、corr部31、平均化(average)部32、減算部33、U_init生成部34、U生成部35、乗算部36、及びトータルバリエーション(Total Variation)フィルタ37により構成される。
【0029】
H_init生成部21には、ブレ画像Gが入力される。H_init生成部21は、入力されたブレ画像Gを構成する画素の輝度値(Y成分)から、ケプストラム上で特徴点を検出し、PSFの直線推定を行い、その直線推定により得られた初期推定PSFを、点広がり関数Hの初期値H_init(=H0)として、サポート制限部22、及びH生成部26に供給する。
【0030】
なお、H_init生成部21は、入力されたブレ画像Gを構成する画素のY成分の他、R成分、G成分、B成分、並びに、R成分、G成分及びB成分それぞれを加算して得られるR+G+B成分から、ケプストラム上で特徴点を検出し、PSFの直線推定を行うようにすることが可能である。
【0031】
サポート制限部22は、H_init生成部21からの初期値H_init(=初期推定PSF)の近傍のみを更新対象領域として更新させるためのサポート制限情報を生成し、乗算部23に供給する。
【0032】
ここで、サポート制限情報とは、初期推定PSFの近傍のみを更新対象領域とし、更新対象領域以外の領域ではゼロ固定とするマスク情報をいう。
【0033】
乗算部23は、サポート制限部22からのサポート制限情報に基づいて、減算部33からの減算結果Uko(G-Hk○Uk)-mean(Hk)のうち、初期推定PSFの周辺に存在する減算結果に対応するもののみを抽出し、加算部24に供給する。
【0034】
すなわち、例えば、乗算部23は、サポート制限部22からのサポート制限情報と、対応する、減算部33からの減算結果Uko(G-Hk○Uk)-mean(Hk)どうしを乗算して、PSFの周辺に存在する減算結果に対応するもののみを抽出し、加算部24に供給する。
【0035】
なお、oは相関演算を表し、○は畳込み演算を表している。また、mean(Hk)は、点広がり関数Hkの平均値を表している。
【0036】
加算部24は、乗算部23からの値Uko(G-Hk○Uk)-mean(Hk)のうち、値Uko(G-Hk○Uk)に、未定乗数λを乗算する。そして、加算部24は、その結果得られる値λUko(G-Hk○Uk)-mean(Hk)に、H生成部26からの点広がり関数Hkを加算し、その結果得られる値Hk+λUko(G-Hk○Uk)-mean(Hk)に対して、Lagrangeの未定乗数法を適用し、未定乗数λの解として値aを算出する。
【0037】
加算部24は、Lagrangeの未定乗数法により算出された値aを、値Hk+λUko(G-Hk○Uk)-mean(Hk)に代入し、その結果得られる値Hk+aUko(G-Hk○Uk)-mean(Hk)を、重心補正部25に供給する。
【0038】
これにより、重心補正部25には、ブレ画像を構成する複数のブロック毎に得られたHk+aUko(G-Hk○Uk)-mean(Hk)=Hk+ΔHkが供給される。
【0039】
重心補正部25は、点広がり関数Hk+△Hk(但し、△Hkは更新分)の重心を、バイリニア補間により、画面の中心(点広がり関数の初期値H_initの重心)に移動させ、重心を移動させた点広がり関数Hk+△Hkを、H生成部26に供給する。なお、詳細は、図8を参照して後述する。
【0040】
H生成部26は、H_init生成部21からの初期値H_initを、点広がり関数H0として、加算部24、conv部27、及びcorr部30に供給する。
【0041】
また、H生成部26は、重心補正部25からの点広がり関数Hk+△Hkを、更新後の点広がり関数Hk+1として、加算部24、conv部27、及びcorr部30に供給する。
【0042】
なお、H生成部26は、重心補正部25から、点広がり関数Hk-1を更新して得られる点広がり関数Hk-1+△Hk-1が供給された場合、同様にして、重心補正部25からの点広がり関数Hk-1+△Hk-1を、更新後の点広がり関数Hkとして、加算部24、conv部27、及びcorr部30に供給する。
【0043】
conv部27は、H生成部26からの点広がり関数Hkと、U生成部35からのストラクチャUkとの畳み込み演算を行い、その演算結果Hk○Ukを、処理部28に供給する。
【0044】
処理部28は、入力されるブレ画像Gから、conv部27からの演算結果Hk○Ukを減算し、その減算結果G-Hk○Ukを、残差生成部29に供給する。
【0045】
残差生成部29は、処理部28からの減算結果G-Hk○Ukを、残差Ekとして、corr部30及びcorr部31に供給する。
【0046】
corr部30は、残差生成部29からの残差Ekと、H生成部26からの点広がり関数Hkの相関演算を行い、その演算結果Hko(G-Hk○Uk)を、乗算部36に供給する。
【0047】
corr部31は、残差生成部29からの残差Ekと、U生成部35からのストラクチャUkの相関演算を行い、その演算結果Uko(G-Hk○Uk)を、減算部33に供給する。
【0048】
平均化部32には、H生成部26から、conv部27、処理部28、残差生成部29、及びcorr部31を介して、点広がり関数Hkが供給される。
【0049】
平均化部32は、corr部31からの点広がり関数Hkの平均値mean(Hk)を算出し、減算部33に供給する。
【0050】
減算部33は、corr部31から供給される演算結果Uko(G-Hk○Uk)から、平均化部32からのmean(Hk)を減算し、その結果得られる減算結果Uko(G-Hk○Uk)-mean(Hk)を、乗算部23に供給する。
【0051】
U_init生成部34は、H_init生成部21により生成された初期値H_init(=初期推定PSF)を用いて、入力されるブレ画像G(ブロックg)を、初期推定PSFサイズで縮小し、畳み込んだPSFを1点に戻すことにより、ブレ画像Gのブレが除去(低減)された画像であって、縮小された画像を生成する。
【0052】
また、U_init生成部34は、縮小された画像を、初期推定PSFサイズで拡大することにより、拡大によりボケた画像であって、ブレが除去された画像を生成し、ストラクチャUの初期値U_initに設定して、U生成部35に供給する。
【0053】
なお、後述する図7を参照して、U_init生成部34が、初期値U_initを設定する方法の詳細を説明する。
【0054】
U生成部35は、トータルバリエーションフィルタ37からのストラクチャUk+1を、conv部27、corr部31及び乗算部36に供給する。
【0055】
また、U生成部35には、トータルバリエーションフィルタ37からストラクチャUkが供給される。U生成部35は、トータルバリエーションフィルタ37からのストラクチャUkを、conv部27、corr部31及び乗算部36に供給する。
【0056】
乗算部36は、corr部30からの演算結果Hk○(G-Hk○Uk)に、U生成部35からのストラクチャUkを乗算し、その乗算結果Uk{Hk○(G-Hk○Uk)}を、更新後のストラクチャとして、トータルバリエーションフィルタ37に供給する。
【0057】
トータルバリエーションフィルタ37は、乗算部36からの乗算結果Uk{Hk○(G-Hk○Uk)}を、ストラクチャ成分とテクスチャ成分に分離し、分離により得られるストラクチャ成分を、次の更新対象であるストラクチャUk+1として、U生成部35に供給する。
【0058】
上述したように、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、H_init生成部21により生成された点広がり関数Hの初期値H_init(=H0)を用いて、Richardson-Lucy法によるストラクチャU0の更新を行う。
【0059】
また、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、点広がり関数Hk-1が更新された場合、更新により得られた最新の点広がり関数Hkを用いて、Richardson-Lucy法によるストラクチャUkの更新を行う。
【0060】
Richardson-Lucy法では、ストラクチャUkの更新により得られたストラクチャUk+1について、増幅されたノイズや発生したリンギングを、トータルバリエーションフィルタ37による、ストラクチャ成分(structure)とテクスチャ成分(texture)との分離により落とすので、ノイズとリンギングを大幅に抑制することができる。
【0061】
さらに、トータルバリエーションフィルタ37については、「Structure-Texture Image Decomposition Modeling,Algorithms, and Parameter Selection(Jean-Fran_cois Aujol)」に詳細に記載されている。
【0062】
なお、トータルバリエーションフィルタ37には、ストラクチャ成分とテクスチャ成分との境界を示すフィルタ閾値がパラメータのひとつとして設定され、そのパラメータを調整することにより、出力されるストラクチャ成分(structure)に、より多くのディテイル(detail)を含ませることが可能である。
【0063】
しかし、ストラクチャUkと、後述する点広がり関数Hkとを、交互に反復的に更新する反復更新処理(図10において後述)の初期段階では、点広がり関数Hkが充分に更新されていないため、点広がり関数Hkには多くの誤差を含むことがある。
【0064】
したがって、誤差を多く含む点広がり関数Hkを用いてストラクチャUkの更新を行うと、更新により得られるストラクチャUk+1には、点広がり関数Hkに含まれる誤差に応じたリンギング等が発生してしまう。
【0065】
同様に、ストラクチャUkについても、点広がり関数Hk-1に含まれる誤差に応じたリンギング等が発生している。
【0066】
そして、リンギング等が発生したストラクチャUkを用いて更新される点広がり関数Hkについても同様に、悪影響を及ぼしてしまう。
【0067】
そこで、点広がり関数Hkが充分に更新されていない間は、トータルバリエーションフィルタ37に設定されるフィルタ閾値を高く設定しておき、より強力に、リンギングとノイズを落とし、更新されるストラクチャUが、リンギング等の発生により劣化しないようにすることが可能である。
【0068】
そして、ある程度、点広がり関数Hkが更新されて、より真の点広がり関数に近づくと、トータルバリエーションフィルタ37に設定されるフィルタ閾値を低く設定して、ディテイルの復元をより真の点広がり関数Hkで行うようにする。
【0069】
すなわち、点広がり関数Hkが充分に更新されていない間は、トータルバリエーションフィルタ37から出力されるストラクチャUkを構成する画素のうち、隣接する画素どうしの輝度の差分絶対値和を表すトータルバリエーション(total variation)が小さくなるようにフィルタ閾値を高く設定する。
【0070】
また、ある程度、点広がり関数Hkが更新されて、より真の点広がり関数に近づくと、トータルバリエーションフィルタ37から出力されるストラクチャUkのトータルバリエーションがこれ以上小さくならないようにフィルタ閾値を低く設定する。
【0071】
これにより、トータルバリエーションフィルタ37では、ストラクチャUkに含まれるエッジを残しつつ、ストラクチャUkを平滑化することにより、ストラクチャUに含まれるリンギングとノイズを落とすことが可能となる。
【0072】
なお、第1の実施の形態では、点広がり関数Hkの更新の程度に拘わらず、トータルバリエーションフィルタ37は、フィルタ閾値を充分低くした状態で、ストラクチャUkについて増幅されたノイズや発生したリンギングを、トータルバリエーションフィルタ37による、ストラクチャ成分とテクスチャ成分との分離により落とすように構成されているものとする。
【0073】
H生成部26乃至残差生成部29、corr部31、及びU生成部35等は、ストラクチャUkの初期値U_initを用いて、最急降下法(landweber法)による点広がり関数Hkの更新を行う。
【0074】
また、H生成部26乃至残差生成部29、corr部31、及びU生成部35等は、ストラクチャUk-1が更新された場合、更新により得られた最新のストラクチャUkを用いて、最急降下法(landweber法)による点広がり関数Hkの更新を行う。
【0075】
以下、ストラクチャUkとして、ブレ画像を構成する複数のブロックのうちの所定のブロックgのストラクチャfk(更新により得られた最新のストラクチャ)を用いて、最急降下法による点広がり関数Hkの更新として、所定のブロックgの点広がり関数hkを更新する処理を説明する。
【0076】
ここで、現時点のストラクチャfkをfとし、現時点の点広がり関数hkをhとすると、コスト関数は、次式(1)により与えられる。
【0077】
【数1】

【0078】
なお、式(1)において、||・||はノルムを表しており、*は乗算を表している。
【0079】
現時点のストラクチャfを固定した場合、式(1)のe2を最小にすることを目的として、次式(2)のように、式(1)を変数h(点広がり関数h)により偏微分して、降下方向を求める。
【0080】
【数2】

【0081】
現時点での点広がり関数hを、式(2)により求めた降下方向に沿って検索していくと、式(2)の最小値が存在する。現在の点広がり関数hに対して、次式(3)のように、式(2)により求めた降下方向に、ステップサイズλだけ進めさせると、更新された点広がり関数hを求めることができる。
【0082】
【数3】

【0083】
なお、式(2)及び式(3)において、白丸(。)は相関演算子を表しており、バツ印(×)を白丸(○)で囲んだ記号は、畳み込み演算を表している。
【0084】
また、式(3)において、点広がり関数hk+1は、更新後の点広がり関数を表しており、点広がり関数hkは、現時点での点広がり関数h(更新前の点広がり関数)を表している。さらに、ストラクチャfkは、現時点でのストラクチャfを表している。
【0085】
しかし、点広がり関数hk+1は、ブレ画像を構成する複数のブロックそれぞれの点広がり関数hk+1(i)において、Σii=1h(i)=1となるように強制されるため、H生成部26乃至残差生成部29、corr部31、及びU生成部35等により形成されるループで正規化される。したがって、点広がり関数hkの更新分△hkが、点広がり関数hkと同じ符号になったとき、正規化の結果、点広がり関数hk+1は更新前の値hkに戻ってしまう。
【0086】
式(3)に、
【数4】

の拘束を加えて、Lagrange(ラグランジュ)の未定乗数法を適用すると、次式(4)が導出される。
【0087】
【数5】

【0088】
なお、式(4)において、mean(h)とは、hkの平均値を示している。mean(h)は、減算部33により減算される。
【0089】
また、丸め誤差により、点広がり関数hkを更新しているうちに、重心が画面中心から外れてしまうことがあるため、不正確な残差eが得られてしまい、ストラクチャfkの更新(復元)に悪影響を及ぼしてしまう。したがって、重心補正部25は、1画素(pix)以下のバイリニア補間で、更新後の点広がり関数hk+△hk(=hk+1)の重心が画面中心にくるように、平行移動を行っている。
【0090】
情報処理装置1は、上述したように、ブレ画像を構成するブロックから、ブレを除去したブロックを表すものとして、更新後のストラクチャUkを算出する。そして、情報処理装置1は、算出したストラクチャUkそれぞれを、1枚の画像となるように構成することにより、ブレが除去された原画像を取得する。
【0091】
[初期推定PSFの推定方法]
次に、図2を参照して、H_init生成部21が行う初期推定PSFの推定方法の概要を説明する。
【0092】
ブレ画像は、ブレが生じていない原画像(ブレ画像に対応する原画像)とPSFとの畳み込みによりモデル化することができる。
【0093】
直線PSFのスペクトラムが、ブレの長さを周期的に零点に落ち込む特徴を持ち、原画像とPSFの畳み込みにより、ブレ画像のスペクトルもブレの長さを周期に零点に落ち込む。
【0094】
その零点に落ち込む間隔と方向を求めることにより、PSFの直線ブレの長さと方向を近似することができる。そこで、ブレ画像をFFT(Fast Fourier Transform、高速フーリエ変換)してブレ画像のスペクトラムを算出し、算出したスペクトラムのLog(自然対数)をとることにより、原画像のスペクトラムと、PSFのスペクトラム(MTF)の和に変換する。
【0095】
ここで必要な情報はMTFのみなので、ブレ画像のスペクトラムに対して多くのパッチを足し合わせて平均化することにより、原画像のスペクトルの特徴が失われて、MTFの特徴のみを表すことが可能となる。
【0096】
次に、図3乃至図6を参照して、初期推定PSFの具体的な推定方法を説明する。
【0097】
図3は、ブレ画像についてケプストラムを生成する生成方法を示している。
【0098】
H_init生成部21は、入力されるブレ画像を、複数のブロックに分割し、分割した各ブロック毎に、FFT(Fast Fourier Transform、高速フーリエ変換)を行い、各ブロックそれぞれに対応するスペクトルを算出する。
【0099】
すなわち、例えば、H_init生成部21は、ブレ画像を分割して得られるブロックを構成する画素のY成分、R成分、G成分、B成分、及びR+G+B成分のうちのいずれかに、FFTを行い、対応するスペクトルを算出する。
【0100】
また、H_init生成部21は、各ブロックそれぞれに対応するスペクトルの2乗和について自然対数をとり、JPEG圧縮時に生じた歪みを除去するJPEG除去フィルタにより、歪みを除去する。これは、JPEG圧縮時に生じた歪みにより、スペクトル精度に影響を及ぼしてしまうことを防止することによる。
【0101】
さらに、H_init生成部21は、JPEG除去フィルタによる歪み除去後の、各ブロックgそれぞれに対応するスペクトルgsの2乗和の自然対数logΣ|gs|2に対して、ブレによる周期的な落ち込みを際立たせるために、HPF(high pass filter)によるフィルタリング処理を行い、ブレによるなだらかな変化を低減させる。
【0102】
H_init生成部21は、移動平均で差し引いた残差成分、すなわち、HPFによるフィルタリング処理が行われた後の、スペクトルの2乗和の自然対数logΣ|gs|2に対して、IFFT(Inverse Fast Fourier Transform、逆高速フーリエ変換)を行い、一種のケプストラムを生成する。
【0103】
より具体的には、H_init生成部21は、HPFによるフィルタリング処理が行われた後の、スペクトルの2乗和の自然対数logΣ|gs|2において、正負の符号を逆転させる。そして、H_init生成部21は、正負の符号が逆転されたlogΣ|gs|2のうち、負の符号を有する部分を破棄し、正の符号を有する部分のみに基づいて、一種のケプストラムを生成する。
【0104】
そして、H_init生成部21は、生成したケプストラムに対して、輝点の最大値を算出する。
【0105】
すなわち、H_init生成部21は、生成したケプストラムのうち、最大の値を有するケプストラムを、輝点の最大値として算出する。
【0106】
次に、図4は、生成したケプストラムに対して、輝点の最大値を算出する算出方法を示している。
【0107】
H_init生成部21は、図4Aに示すように、周りの画素と比較して、輝度が大きい複数の画素の塊に強く反応するスポットフィルタによるフィルタリング処理を、生成したケプストラムに対して行う。
【0108】
また、H_init生成部21は、図4Bに示すように、図4Aに示したスポットフィルタによるフィルタリング処理後のケプストラムから、最大値を含む一山を、スポットとして取り出す。
【0109】
さらに、H_init生成部21は、図4Cに示すように、スポット位置を決定する。なお、スポット位置とは、最大値を含む一山を構成する複数のケプストラムからなるスポットの重心位置を表す。
【0110】
次に、図5は、初期推定PSFの推定が成功したか否かを判定する判定方法を説明する。なお、初期推定PSFの推定方法については、後述する図6を参照して説明する。
【0111】
輝点は原点対称なので、原点対称位置にもうひとつの特徴点が存在する。すなわち、特徴点として、原点を対称とする2つのスポットが存在する。
【0112】
この2つのスポットに接する最小正方形範囲内で閾値を超えたものが存在する場合、すなわち、最小正方形範囲内で、閾値を超える値を有するケプストラムが存在する場合、H_init生成部21は、初期推定PSFの初期推定が失敗したと判定する。
【0113】
この場合、H_init生成部21は、初期推定した初期推定PSFを、ブレの分布がガウス分布(正規分布)に従うPSFに近似し、その結果得られるPSFを、初期値H_initに設定する。
【0114】
また、2つのスポットに接する最小正方形範囲内で閾値を超えたものが存在しない場合、すなわち、最小正方形範囲内で、閾値を超える値を有するケプストラムが存在しない場合、H_init生成部21は、初期推定PSFの初期推定が成功したと判定し、初期推定PSFを初期値H_initに設定する。
【0115】
次に、図6は、2つのスポットに基づいて、初期推定PSFを推定(生成)する推定方法を示している。
【0116】
2つのスポットに接する最小正方形範囲内で閾値を超えたものが存在しない場合、H_init生成部21は、図6に示すように、スポット位置を原点対称に結ぶ直線を、初期推定PSFとして生成し、初期値H_initに設定する。
【0117】
[ストラクチャUkの初期値U_initの生成方法]
次に、図7を参照して、U_init生成部34が行う、ストラクチャUkの初期値U_initの生成方法を説明する。
【0118】
U_init生成部34は、入力されるブレ画像を、初期推定PSFのサイズで縮小することにより縮小画像を生成し、生成した縮小画像を、初期推定PSFのサイズで拡大することにより拡大画像を生成する。そして、生成した拡大画像を、ストラクチャ成分とテクスチャ成分に分離し、分離により得られたストラクチャ成分を、ストラクチャUの初期値U_initとして、U生成部35に供給する。
【0119】
すなわち、例えば、U_init生成部34は、入力されるブレ画像を構成するブロックを、H_init生成部21から供給される、ブロックの初期推定PSFを1点に縮小する縮小サイズと同一の縮小サイズで縮小することにより、ブロックに生じているブレが除去(低減)された縮小ブロックを生成する。
【0120】
そして、U_init生成部34は、生成した縮小ブロックを、1点に縮小された初期推定PSFを、元の初期推定PSFに拡大する拡大サイズと同一の拡大サイズで拡大することにより、拡大によるボケが生じているが、ブレは生じていない拡大ブロックを生成する。
【0121】
U_init生成部34は、生成した拡大ブロックを、初期値U_init(ストラクチャU0)として、U生成部35に供給する。
【0122】
[点広がり関数の重心の補正方法]
次に、図8を参照して、重心補正部25が行う、重心を補正する補正方法を説明する。
【0123】
図8は、バイリニア補間による補間方法を示している。
【0124】
上述したように、H生成部26乃至残差生成部29、corr部31、及びU生成部35等が、点広がり関数Hkを更新しているうちに、丸め誤差により、重心が画面中心から外れてしまうことがあるため、重心補正部25は、図8に示すように、バイリニア補間により、点広がり関数Hk+△Hkの重心が画面中心にくるように平行移動を行う。
【0125】
[サポート制限処理]
次に、図9を参照して、サポート制限部22が行うサポート制限処理を説明する。
【0126】
H生成部26乃至残差生成部29、corr部31、及びU生成部35等が、点広がり関数Hkを更新するときに、更新分の△Hkの自由度が高く、図9Aに示すように、真のPSF(点広がり関数)から離れた場所に、更新後の点広がり関数Hk+△Hkが表すブレが正確に反映されていない偽画素が現れる。そこで、サポート制限部22は、図9Bに示すように、初期推定PSFの近傍だけ更新を許可し、初期推定PSFの近傍以外の領域では、更新分△Hkに画素が存在しても、マスクすることで、初期推定PSFの近傍だけを更新させるように、サポート(support)制限を加えることとしている。
【0127】
ところで、点広がり関数Hkの更新ループにおいて、ストラクチャUkの更新分△Ukは徐々に小さくなり、ある程度小さくなると、残差Ek=G-Hk*(Uk+△Uk)が飽和してしまい(残差Eが殆ど変化しなくなってしまい)、点広がり関数Hkの更新が停止する。したがって、トータルバリエーションフィルタ37に設定されたフィルタ閾値を調整することにより、意図的に残差Ekを下げて(小さくして)、それをトリガにして、点広がり関数Hkの更新も再開させる。
【0128】
また、トータルバリエーションフィルタ37において、最終出力がされた場合には、フィルタ閾値を低くする(逓減させる)ことで、ストラクチャ出力によるディテイル不足を克服することが可能となる。
【0129】
点広がり関数Hkの更新時に使用するストラクチャUkの情報は、輝度Y(R成分、G成分、及びB成分それぞれに対する重み付けによる乗算で得られる乗算結果の総和を表すY成分)の他に、R/G/B3チャンネルの和(R成分、G成分、及びB成分の総和)を使用することもできる。輝度Yだけで更新するときとの違いは、R/Bチャンネルだけブレが反映されるエッジが存在するようなブレ画像に対しても、Gチャンネルと同様に大きなフィードバックが得られることである。
【0130】
また、点広がり関数Hkの更新時に使用するストラクチャUkの情報は、R成分、G成分、及びB成分を使用することができる。
【0131】
[反復更新処理]
次に、図10のフローチャートを参照して、情報処理装置1が行う反復更新処理を説明する。
【0132】
なお、反復更新処理においては、点広がり関数HkとストラクチャUkとを別々に更新していくのではなく、点広がり関数Hk及びストラクチャUkを、互いの初期値に基づいて、交互に更新していくアルゴリズムである。
【0133】
ステップS31及びステップS32において、初期値H_init,初期値U_initの初期推定、及び、各パラメータ、グローバル変数等の初期化を行う。
【0134】
すなわち、例えば、ステップS31において、H_init生成部21は、入力されたブレ画像Gから、ケプストラム上で特徴点を検出し、PSFの直線推定を行い、その直線推定により得られた初期推定PSFを、点広がり関数Hの初期値H_initに設定して、サポート制限部22、及びH生成部26に供給する。
【0135】
ステップS32において、U_init生成部34は、H_init生成部21により設定された初期値H_init(=初期推定PSF)を用いて、入力されるブレ画像を、初期推定PSFサイズで縮小し、畳み込んだPSFを1点に戻すことにより、ブレ画像のブレが除去された画像であって、縮小された画像を生成する。
【0136】
また、U_init生成部34は、縮小された画像を、初期推定PSFサイズで拡大することにより、補間によりボケた画像であって、ブレが除去された画像を生成し、ストラクチャUkの初期値U_initに設定して、U生成部35に供給する。
【0137】
すなわち、例えば、U_init生成部34は、入力されるブレ画像を構成するブロックを、H_init生成部21から供給される、ブロックの初期推定PSFを1点に縮小する縮小サイズと同一の縮小サイズで縮小することにより、ブロックに生じているブレが除去(低減)された縮小ブロックを生成する。
【0138】
そして、U_init生成部34は、生成した縮小ブロックを、1点に縮小された初期推定PSFを、元の初期推定PSFに拡大する拡大サイズと同一の拡大サイズで拡大することにより、拡大によるボケが生じているが、ブレは生じていない拡大ブロックを生成する。
【0139】
U_init生成部34は、生成した拡大ブロックを、初期値U_init(ストラクチャU0)として、U生成部35に供給する。
【0140】
ストラクチャUk及び点広がり関数Hkの両方とも正確にわかっていない状況の中で、ステップS33において、ストラクチャUkは、最新の点広がり関数Hkの情報を用いて更新され、ステップS34において、点広がり関数Hkは、最新のストラクチャUkの情報を用いて更新される。
【0141】
この繰り返しにより、ストラクチャUkと点広がり関数Hkとを交互に更新していくと、ストラクチャUkは、より真のストラクチャUへ、点広がり関数Hkは、より真の点広がり関数Hへと収束していく。
【0142】
すなわち、ステップS33において、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、点広がり関数Hkの初期値H_init(=初期推定PSF)を用いて、従来のRichardson-Lucy法によるストラクチャU0の更新を行う。
【0143】
ステップS33において、conv部27は、H生成部26からの点広がり関数Hkの初期値H_initである点広がり関数H0と、U生成部35からのストラクチャU0との畳み込み演算を行い、その演算結果H0○U0を、処理部28に供給する。
【0144】
処理部28は、入力されるブレ画像Gから、conv部27からの演算結果H0○U0を減算し、その減算結果G-H0○U0を、残差生成部29に供給する。
【0145】
残差生成部29は、処理部28からの減算結果G-H0○U0を、corr部30及びcorr部31に供給する。
【0146】
corr部30は、残差生成部29からの減算結果G-H0○U0と、H生成部26からの点広がり関数H0との相関演算を行い、その演算結果H0o(G-H0○U0)を、乗算部36に供給する。
【0147】
乗算部36は、corr部30からの演算結果H0o(G-H0○U0)に、U生成部35からのストラクチャU0を乗算し、その乗算結果U0{H0o(G-H0○U0)}を、更新後のストラクチャとして、トータルバリエーションフィルタ37に供給する。
【0148】
トータルバリエーションフィルタ37は、乗算部36からの乗算結果U0{H0o(G-H0○U0)}に対して、増幅されたノイズや発生したリンギングを抑制する処理を行う。
【0149】
そして、トータルバリエーションフィルタ37は、その処理により得られた、乗算結果U0{H0o(G-H0○U0)}のストラクチャ成分及びテクスチャ成分のうち、ストラクチャ成分を、U生成部35に供給する。
【0150】
U生成部35は、トータルバリエーションフィルタ37から供給されるストラクチャ成分を、次のストラクチャの更新対象であるストラクチャU1として取得する。
【0151】
そして、U生成部35は、取得したストラクチャU1をさらに更新するために、ストラクチャU1を、conv部27、corr部31、及び乗算部36に供給する。
【0152】
ステップS34において、H生成部26乃至残差生成部29、corr部31、及びU生成部35等は、最急降下法により、ストラクチャUkの初期値U_initを用いて、点広がり関数H0の更新を行う。
【0153】
なお、上述したステップS33において、残差生成部29は、処理部28からの減算結果G-H0○U0を、corr部30の他、corr部31に供給している。
【0154】
ステップS34では、corr部31は、残差生成部29からの減算結果G-H0○U0と、U生成部35からのストラクチャU0との相関演算を行い、その演算結果U0o(G-H0○U0)を、減算部33に供給する。
【0155】
また、corr部31は、H生成部26から、conv部27、処理部28、及び残差生成部29を介して供給された点広がり関数H0を、平均化部32に供給する。
【0156】
平均化部32は、corr部31からの点広がり関数H0の平均値mean(H0)を算出し、減算部33に供給する。
【0157】
減算部33は、corr部31から供給される演算結果U0o(G-H0○U0)から、平均化部32からのmean(H0)を減算し、その結果得られる減算結果U0o(G-H0○U0)-mean(H0)を、乗算部23に供給する。
【0158】
乗算部23は、サポート制限部22からのサポート制限情報に基づいて、減算部33からの減算結果U0o(G-H0○U0)-mean(H0)のうち、初期推定PSFの周辺に存在する減算結果に対応するもののみを抽出し、加算部24に供給する。
【0159】
加算部24は、乗算部23からの値Uko(G-Hk○Uk)-mean(Hk)のうち、値Uko(G-Hk○Uk)に、未定乗数λを乗算する。そして、加算部24は、その結果得られる値λUko(G-Hk○Uk)-mean(Hk)に、H生成部26からの点広がり関数Hkを加算し、その結果得られる値Hk+λUko(G-Hk○Uk)-mean(Hk)に対して、Lagrangeの未定乗数法を適用し、未定乗数λの解として値aを算出する。
【0160】
加算部24は、Lagrangeの未定乗数法により算出された値aを、値Hk+λUko(G-Hk○Uk)-mean(Hk)に代入し、その結果得られる値Hk+aUko(G-Hk○Uk)-mean(Hk)を、重心補正部25に供給する。
【0161】
これにより、重心補正部25には、ブレ画像を構成する複数のブロック毎に得られたH0+aU0o(G-H0○U0)-mean(H0)=H0+ΔH0が供給される。
【0162】
重心補正部25は、点広がり関数H0+△H0の重心を、バイリニア補間により、画面の中心(点広がり関数の初期値H_initの重心)に移動させ、重心を移動させた点広がり関数H0+△H0を、H生成部26に供給する。
【0163】
H生成部26は、重心補正部25からの点広がり関数H0+△H0を、更新後の点広がり関数H1として取得する。
【0164】
そして、H生成部26は、取得した点広がり関数H1をさらに更新するために、点広がり関数H1を、加算部24、conv部27、及びcorr部30に供給する。
【0165】
ステップS35において、反復更新処理は終了するか否かを判定する。すなわち、例えば、更新後のストラクチャUk(又は点広がり関数Hkの少なくとも一方)は収束したか否かを判定する。そして、更新後のストラクチャUkが収束していないと判定された場合、処理はステップS33に戻る。
【0166】
なお、更新後のストラクチャUkが収束したか否かは、例えば、残差生成部29により、ブレ画像を構成する複数のブロックそれぞれに対応する値G-Hk○Uk(=Ek)の2乗和Σ|Ek|2が、所定の値未満であるか否かに基づいて判定される。
【0167】
また、トータルバリエーションフィルタ37が、乗算部36からのストラクチャUkを構成する画素のうち、隣接画素どうしの輝度の差分絶対値和を表すトータルバリエーションが、増加から減少に転じたか否かに基づいて判定するようにしてもよい。
【0168】
ステップS33では、前回のステップS34の処理による更新後の点広がり関数Hk(例えば、H1)を用いて、前回のステップS33の処理による更新後のストラクチャUk(例えば、U1)の更新を、従来のRichardson-Lucy法により行う。
【0169】
すなわち、ステップS33では、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、前回のステップS34の処理による更新後の点広がり関数Hk(例えば、H1)を用いて、従来のRichardson-Lucy法によるストラクチャUk(例えば、U1)の更新を行う。
【0170】
ステップS33の処理の終了後、ステップS34では、前回のステップS33の処理による更新後のストラクチャUk(例えば、U1)を用いて、前回のステップS34の処理による更新後の点広がり関数Hk(例えば、H1)の更新を、最急降下法により行う。
【0171】
すなわち、ステップS34では、H生成部26乃至残差生成部29、corr部31、及びU生成部35等は、最急降下法により、前回のステップS33の処理による更新後のストラクチャUk(例えば、U1)を用いて、点広がり関数Hk(例えば、H1)の更新を行う。
【0172】
処理は、ステップS34からステップS35に進み、以下、同様の処理が繰り返される。
【0173】
なお、ステップS35において、更新されたストラクチャUkが収束していると判定された場合、反復更新処理は終了される。
【0174】
以上説明したように、反復更新処理では、ストラクチャUkと点広がり関数Hkの更新を反復して行うことにより、ストラクチャUkを真のストラクチャUに収束させる(及び点広がり関数Hkを真の点広がり関数Hに収束させる)こととしたので、最終的に得られるストラクチャUkに発生するリンギングやノイズを抑制することが可能となる。
【0175】
また、初期値H_initとして得られるPSF(=点広がり関数H0)が不正確な状態からでも、正確なPSF、すなわち、真のPSF又は真のPSFに近いPSFを求めることが可能となる。
【0176】
さらに、PSFのサポート制限により、初期値H_init(=初期推定PSF)が初期推定の方向に沿って更新されるため、発散することなく、真のPSF又は真のPSFに近いPSFを求めることが可能となる。
【0177】
<2.変形例1>
[反復更新処理の変形例]
なお、反復更新処理では、例えば、ステップS31において、初期値H_init(=点広がり関数H0)の推定(生成)に成功した場合には、ステップS33において、初期値H_initでストラクチャU0の更新を行い、ステップS31において、初期値H_initの推定に失敗した場合、ステップS33において、PSFをガウシアン(ガウス分布)により近似し、近似したPSFを初期値H_initとして、ストラクチャU0の更新を行うようにすることが可能である。この場合、初期値H_init(=初期推定PSF)のズレによるストラクチャU0の劣化を防止することができる。
【0178】
また、ステップS33では、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等が、従来のRichardson-Lucy法によるストラクチャUkの更新を行うこととしたが、Richardson-Lucy法による処理を高速化した従来のR-L高速アルゴリズムを用いることとすれば、より迅速に、ストラクチャUkを、真のストラクチャに更新することが可能となる。
【0179】
さらに、図10の反復更新処理において、ステップS35では、更新後のストラクチャUkが収束したか否かに応じて、反復更新処理を終了するか否かを判定することとしたが、これに限定されない。
【0180】
すなわち、例えば、ステップS35では、ストラクチャUk及び点広がり関数Hkを所定の回数だけ更新したか否かを判定し、所定の回数だけ更新したと判定された場合に、反復更新処理を終了させるようにしてもよい。なお、所定の回数としては、例えば、精度が低いPSFでもリンギングが発生しない程度の回数か、トータルバリエーションフィルタ37により僅かに発生したリンギングを取り消すことが出来る程度の回数であることが望ましい。
【0181】
[residual deconvolutionの適用方法]
ところで、本発明の第1の実施の形態では、トータルバリエーションフィルタ37のフィルタ閾値を充分低くした状態で得られるストラクチャUkを最終出力としたが、ブレ画像と更新済みのストラクチャUkを用いて、従来のresidual deconvolutionによる方法を行うことも可能である。
【0182】
図11は、ブレ画像と更新済みのストラクチャUkを用いて、従来のresidual deconvolutionによる方法を行う情報処理装置61の構成例を示している。
【0183】
この情報処理装置61は、conv部91、減算部92、加算部93、R-Ldeconv部94、減算部95、加算部96、オフセット(offset)部97、及びゲインマップ(Gain Map)98により構成される。
【0184】
conv部91には、更新済みのHkと更新済みのUkとが供給される。Conv部91は、更新済みのHkと、更新済みのUkとの畳込み演算を行い、その結果得られる値Hk○Ukを、減算部92に供給する。
【0185】
減算部92には、ブレ画像Gが供給される。減算部92は、供給されるブレ画像Gから、conv部91からの値Hk○Ukを減算し、その減算結果G-Hk○Ukを、残差成分(residual)として、加算部93に供給する。
【0186】
加算部93は、減算部92からの残差成分G-Hk○Ukを正の値にするために、残差成分G-Hk○Ukに、オフセット部97からのオフセット値とを加算し、その加算結果を、R-Ldeconv部94に供給する。なお、加算部93において、残差成分G-Hk○Ukにオフセット値を加算して正の値にするのは、R-Ldeconv部94による処理において、正の値を対象としていることによる。
【0187】
R-Ldeconv部94は、ゲインマップ(Gain Map)部98に保持されているゲインマップ、及び更新済みのHkに基づいて、加算部93からの加算結果に対して、非特許文献1に記載されたresidual deconvolutionを行う。これにより、オフセット値が加算された残差成分のリンギングが抑制される。
【0188】
減算部95は、R-Ldeconv部94からの処理結果から、加算部93で加算したものと同一のオフセット値を減算し、リンギングが抑制された残差成分、すなわち、ブレ画像のテクスチャを復元した復元結果を取得する。そして、減算部95は、取得したテクスチャの復元結果を、加算部96に供給する。
【0189】
加算部96には、更新済みのストラクチャUkが供給される。加算部96は、減算部95からの、テクスチャの復元結果と、供給される更新済みのストラクチャUkとを加算し、その結果得られる、ブレ画像からブレを除去した復元画像を出力する。
【0190】
すなわち、例えば、加算部96は、ブレ画像を構成するブロックに対応する、テクスチャの復元結果と更新済みのストラクチャUkとを加算し、その加算結果として、ブレ画像を構成するブロックから、ブレを除去した復元ブロックを取得する。そして、加算部96は、ブレ画像を構成するブロックそれぞれに対応する復元ブロックを取得し、取得した復元ブロックそれぞれをつなぎ合わせることにより、復元画像を生成して出力する。
【0191】
オフセット部97は、残差成分G-Hk○Ukを正の数にするために加算されるオフセット値を予め保持している。オフセット部97は、予め保持しているオフセット値を、加算部93及び減算部95に供給する。
【0192】
ゲインマップ部98は、残差成分G-Hk○Ukのゲインを調整するために用いられるゲインマップを予め保持している。
【0193】
図11に示すように、更新済みの点広がり関数PSF(点広がり関数Hk)で更新済みのストラクチャUkにブレを生じさせ、ブレ画像Gとの残差成分(residual成分)G-Hk○Ukに対して、deconvolution(R-Ldeconv部94による処理)を行い、その結果得られるもの(ブレ画像のテクスチャを復元した復元結果)を、更新済みのストラクチャUkに加算することで、残差のディテイル情報が復元されて、きめ細かい復元結果が得られる。
【0194】
[RGB空間以外の色空間への適用方法]
なお、本発明の第1の実施の形態では、RGB空間(R成分、G成分、及びB成分により表される画素により構成されるブレ画像)について反復更新処理を行うこととしたが、YUV空間等のほかの色空間について、同様の反復更新処理を行うことが可能である。
【0195】
次に、図12は、YUV空間について反復更新処理を行うことを説明する図である。
【0196】
図12に示すように、YUV空間において、Yだけ反復更新処理(GSDM,Gradual Structure Deconvolution Method)を適用して正確なPSFを算出した後に、算出した正確なPSFを用いたRichardson-Lucy法等による処理を、リンギングが発生しない程度にU/V成分に対して行ったものを、Yに足し合わせるようにしてもよい。
【0197】
なお、上述した第1の実施の形態では、最急降下法を用いて、点広がり関数Hkを更新するとともに、Richardson-Lucy法を用いて、ストラクチャUkを更新するようにしたが、その他、例えば、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新するようにしてもよい。
【0198】
<3.第2の実施の形態>
[情報処理装置の構成]
次に、図13を参照して、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新する情報処理装置121について説明する。
【0199】
図13は、本発明の第2の実施の形態である情報処理装置121を示している。
【0200】
なお、この情報処理装置121において、図1に示された第1の実施の形態である情報処理装置1の構成要素のうち、共通するものについては同一の符号を付しているので、その説明は適宜省略する。
【0201】
すなわち、情報処理装置121において、加算部24に代えて乗算部151が、乗算部36に代えて加算部152が、乗算部23、平均化部32、及び減算部33に代えて乗算部153が、それぞれ設けられている他は、情報処理装置1と同様に構成されている。
【0202】
乗算部151には、乗算部153から、初期推定PSFの周辺の領域に対応する演算結果Uko(G-Hk○Uk)が、H生成部26から、点広がり関数Hkが、それぞれ供給される。
【0203】
乗算部151は、乗算部153からの演算結果Uko(G-Hk○Uk)と、H生成部26からの点広がり関数Hkとを乗算し、その結果得られる点広がり関数Hk+1=HkUko(G-Hk○Uk)を、重心補正部25に供給する。
【0204】
加算部152には、corr部30から、演算結果Hko(G-Hk○Uk)が、U生成部35からストラクチャUkが、それぞれ供給される。
【0205】
加算部152は、corr部30からの演算結果Hko(G-Hk○Uk)に、未定乗数λを乗算し、その結果得られる値λHko(G-Hk○Uk)に、U生成部35からのストラクチャUkとを加算する。そして、加算部152は、その結果得られる加算結果Uk+λHko(G-Hk○Uk)(=Uk+1)について、Lagrangeの未定乗数法により、未定乗数λを算出する。
【0206】
加算部152は、未定乗数λの解として算出された定数aを、加算結果Uk+λHko(G-Hk○Uk)に代入し、その結果得られるストラクチャUk+1=Uk+aHko(G-Hk○Uk)を、トータルバリエーションフィルタ37に供給する。
【0207】
乗算部153には、corr部31から、演算結果Uko(G-Hk○Uk)が、サポート制限部22から、サポート制限情報が、それぞれ供給される。
【0208】
乗算部153は、サポート制限部22からのサポート制限情報に基づいて、corr部31からの演算結果Uko(G-Hk○Uk)のうち、初期推定PSFの周辺の領域に対応する演算結果のみを抽出し、乗算部151に供給する。
【0209】
この情報処理装置121においても、第1の実施の形態である情報処理装置1と同様の作用効果を奏することが可能である。
【0210】
<4.変形例2>
第2の実施の形態では、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新するようにしたが、Richardson-Lucy法を用いて、点広がり関数Hk及びストラクチャUkを更新するようにしてもよいし、最急降下法を用いて、点広がり関数Hk及びストラクチャUkを更新するようにしてもよい。
【0211】
なお、第1及び第2の実施の形態では、ブレ画像を構成する複数のブロックに対して、反復更新処理を行うようにしたが、ブレ画像そのものを1個のブロックとして、反復更新処理を行うことも可能である。
【0212】
[糊代処理]
また、第1及び第2の実施の形態では、上述したように、ブレ画像に対して、反復更新処理を行うことも可能であるが、これに限定されない。すなわち、例えば、ブレ画像を複数のブロックに分割し、ブロック毎に、第1の実施の形態である情報処理装置1、又は第2の実施の形態である情報処理装置121を用いて反復更新処理を行い、図14及び図15に示すように、反復更新処理後の複数のブロックをつなぎ合わせることにより、復元後の1枚の復元画像を生成する糊代処理を行うようにしてもよい。
【0213】
具体的には、第1及び第2の実施の形態では、ブレ画像を複数のブロックに分割し、そのブロック毎に、反復更新処理を行うようにしたが、糊代処理では、分割されたブロックを拡大(拡張)した上で、反復更新処理を行い、反復更新処理後のブロックを、元のブロックのサイズに縮小して得られる複数の縮小ブロックをつなぎ合わせることにより、復元後の1枚の復元画像を生成する。
【0214】
図14及び図15は、反復更新処理後の複数のブロックをつなぎ合わせることにより、復元後の1枚の復元画像を生成する糊代処理の様子を示している。
【0215】
次に、図14を参照して、ブレ画像を構成する複数のブロックそれぞれに対応するストラクチャUkを生成する処理を説明する。
【0216】
図14に示されるように、ブレ画像を構成する複数のブロック(例えば、図14に示すG)は、それぞれ、隣接するブロックとの連続性を維持するために、隣接するブロックどうしが、一部分だけ重なり合うサイズとなるように、拡大(拡張)される。これにより、拡大ブロック(例えば、図14に示す、dummyが付加されたG')が生成される。
【0217】
また、ブレ画像を構成する複数のブロックそれぞれに対応するストラクチャU0(例えば、図14に示すU)についても、同一のサイズで拡大される。これにより、拡大ストラクチャ(例えば、図14に示す、dummyが付加されたU')が生成される。
【0218】
そして、拡大ブロック、拡大ストラクチャ、及び拡大ブロックに基づいて生成された点広がり関数H0(例えば、図14に示すPSF)に基づいて、Richardson-Lucy法により、拡大ストラクチャの更新を行う。
【0219】
Richardson-Lucy法による拡大ストラクチャの更新により得られた更新後の拡大ストラクチャ(例えば、図14に示す、dummyが付加されたupdated U)を、元のストラクチャU0のサイズに縮小する。
【0220】
これにより、ブレ画像を構成する複数のブロックそれぞれに対応するストラクチャとして、隣接するブロックとの連続性が維持されたストラクチャ(例えば、図14に示すupdated U)を取得し、図15に示されるように、取得したストラクチャを、それぞれつなぎ合わせることにより、ブレが低減(除去)された復元画像を取得することができる。
【0221】
また、1個の拡大ブロックにおいて、点広がり関数Hkの更新を行い、最終的に得られる点広がり関数を、他の拡大ブロックの点広がり関数として用いて、他の拡大ブロックに対応するストラクチャUkを更新するようにしてもよい。
【0222】
この場合、他の拡大ブロックでは、点広がり関数Hkの更新を行う必要がなく、ストラクチャUkの更新のみを行えばよいこととなる。
【0223】
したがって、拡大ブロック毎に、対応する点広がり関数Hkの更新を行う場合と比較して、拡大ブロックそれぞれの点広がり関数Hを算出するために用いられるメモリ(の記憶容量)を少なくすることができるととも、点広がり関数を更新(算出)するための計算量を少なくすることが可能となる。
【0224】
[他の変形例]
また、第1の実施の形態では、ブレ画像を複数のブロックに分割し、ブロック毎に、点広がり関数Hk及びストラクチャUkを反復して更新するようにしたが、ブレ画像を構成する複数のブロックのうちの所定のブロックについてのみ、点広がり関数Hkの更新を行い、最終的に得られる点広がり関数を、他のブロックの点広がり関数として用いるようにしても、ブロックそれぞれの点広がり関数Hkを算出するために用いられるメモリを少なくすることができるととも、点広がり関数を更新するための計算量を少なくすることが可能となる。
【0225】
ところで、反復更新処理では、ブレ画像を対象として処理を行うこととしたが、その他、合焦距離のズレによるピンボケ、面内一様のボケ、カメラレンズによる面内不均一な周辺ボケ等が生じたボケ画像に対しても処理を行うことが可能である。
【0226】
また、反復更新処理は、予め記録しておいた、ブレが生じた動画像に対して処理を行うこともできるし、動画像を撮像しているときに生じたブレを検出して、リアルタイムに除去するように処理を行うこともできる。
【0227】
図1における第1の実施の形態では、ストラクチャ成分とテクスチャ成分とを分離するために、トータルバリエーションフィルタ37を用いることとしたが、その他、例えばBilateralフィルタ、εフィルタ等を用いるようにしてもよい。
【0228】
第1及び第2の実施の形態では、処理部28が、ブレ画像Gから、conv部27からの演算結果Hk○Ukを減算し、その減算結果G-Hk○Ukを、残差生成部29に供給するようにしたが、その他、ブレ画像Gを、conv部27からの演算結果Hk○Ukで除算し、その除算結果(Hk○Uk)/Gを、残差生成部29に供給するよう構成しても、同様の結果を得ることができる。
【0229】
上述した反復更新処理では、ステップS33において、点広がり関数Hkを用いて、ストラクチャUkの更新を行うと同時に、ステップS34において、ストラクチャUkを用いて、点広がり関数Hkの更新を行うようにしたが、これに限定されない。
【0230】
すなわち、例えば、反復更新処理において、ストラクチャの更新、及び点広がり関数の更新を交互に行うようすることが可能である。
【0231】
具体的には、例えば、ステップS33において、点広がり関数Hkを用いて、ストラクチャUkの更新を行い、ステップS34において、その更新により得られたストラクチャUk+1を用いて、点広がり関数Hkを更新するようにしてもよい。さらに、次回のステップS33において、更新により得られた点広がり関数Hk+1を用いて、ストラクチャUk+1を更新し、次回のステップS34において、更新により得られたストラクチャUk+2を用いて、点広がり関数Hk+1を更新するというように、ストラクチャと点広がり関数との更新を、交互に行うようにすることが可能である。
【0232】
この場合、例えば、ストラクチャUkを用いて、点広がり関数Hkを更新する場合と比較して、より真のストラクチャに近いストラクチャUk+1を用いて、点広がり関数Hkを更新するため、点広がり関数Hkの更新結果として、より真の点広がり関数に近い点広がり関数Hk+1を取得することが可能となる。
【0233】
[反復更新処理の高速化方法]
また、上述した反復更新処理では、少しでも計算量を減らし、処理を高速化することが望まれる。ここで、図16乃至図19を参照して、ブレ画像のR(赤)成分、G(緑)成分、及びB(青)成分の各色成分毎に反復更新処理を行う場合に、画質の低下を抑制しつつ、より高速に画像のブレを補正する方法について説明する。
【0234】
図16は、ブレ画像のR成分、G成分、及びB成分の各色成分毎に反復更新処理を行う場合に、画質の低下を抑制しつつ、より高速に画像のブレを補正することが可能な画像処理装置201の構成例を示している。画像処理装置201は、情報処理装置1、ダウンサンプル部211、アップサンプル部212、HPF(ハイパスフィルタ)213、マスク生成部214、および、乗算部215を含むように構成される。
【0235】
ダウンサンプル部211には、ブレ画像のR成分からなる画像(以下、Rブレ画像と称する)、および、ブレ画像のB成分からなる画像(以下、Bブレ画像と称する)が入力される。ダウンサンプル部211は、Rブレ画像およびBブレ画像を所定の倍率で縮小し、縮小した画像(以下、縮小Rブレ画像および縮小Bブレ画像と称する)を情報処理装置1に供給する。
【0236】
情報処理装置1には、縮小Rブレ画像および縮小Bブレ画像の他、ブレ画像のG成分からなる画像(以下、Gブレ画像と称する)が入力される。情報処理装置1は、Gブレ画像、縮小Rブレ画像、および、縮小Bブレ画像に対して、図10を参照して上述した反復更新処理を行い、各画像のストラクチャ成分のブレを補正する。情報処理装置1は、Gブレ画像のストラクチャ成分のブレを補正した画像(以下、G補正画像と称する)をHPF213に供給するとともに、外部に出力する。また、情報処理装置1は、縮小Rブレ画像のストラクチャ成分のブレを補正した画像(以下、縮小R補正画像と称する)、および、縮小Bブレ画像のストラクチャ成分のブレを補正した画像(以下、縮小B補正画像と称する)をアップサンプル部212に供給する。
【0237】
アップサンプル部212は、縮小R補正画像および縮小B補正画像を縮小前の大きさに戻し、その結果得られた画像(以下、R補正画像およびB補正画像と称する)を乗算部215に供給する。
【0238】
HPF213は、G補正画像の所定の閾値より低い周波数成分を減衰させることにより、G補正画像のテクスチャ成分を抽出する。HPF213は、抽出したテクスチャ成分からなる画像(以下、Gテクスチャ画像と称する)を乗算部215に供給する。
【0239】
マスク生成部214には、Rブレ画像、Gブレ画像、および、Bブレ画像が入力される。マスク生成部214は、Rブレ画像の画素値の変動とGブレ画像の画素値の変動の相関に基づいて、乗算部215においてR補正画像とGテクスチャ画像とを合成するときに用いるマスク画像(以下、RGマスク画像と称する)を生成する。また、マスク生成部214は、Bブレ画像の画素値の変動とGブレ画像の画素値の変動の相関に基づいて、乗算部215においてB補正画像とGテクスチャ画像とを合成するときに用いるマスク画像(以下、BGマスク画像と称する)を生成する。マスク生成部214は、生成したRGマスク画像およびBGマスク画像を乗算部215に供給する。
【0240】
乗算部215は、RGマスク画像を用いて、R補正画像にGテクスチャ画像を合成する。また、乗算部215は、BGマスク画像を用いて、B補正画像にGテクスチャ画像を合成する。乗算部215は、R補正画像にGテクスチャ画像を合成することにより得られた画像(以下、Rテクスチャ合成画像と称する)、および、B補正画像にGテクスチャ画像を合成することにより得られた画像(以下、Bテクスチャ合成画像と称する)を外部に出力する。
【0241】
図17は、マスク生成部214の機能の構成の例を示している。マスク生成部214は、LPF(ローパスフィルタ)231−1,231−2、減算部232−1,232−2、相関検出部233、および、マスク画像生成部234を含むように構成される。
【0242】
LPF231−1には、Gブレ画像が入力される。LPF231−1は、Gブレ画像の所定の閾値より高い周波数成分を減衰させて、減算部232−1に供給する。
【0243】
減算部232−1には、LPF231−1により高周波成分が減衰されたGブレ画像の他、高周波成分が減衰される前のGブレ画像が入力される。減算部232−1は、高周波成分が減衰される前と後のGブレ画像の差分をとることにより、Gブレ画像の高周波成分を抽出する。減算部232−1は、抽出したGブレ画像の高周波成分からなる画像(以下、G高周波ブレ画像と称する)を相関検出部233に供給する。
【0244】
LPF231−2には、Rブレ画像およびBブレ画像が入力される。LPF231−1は、Rブレ画像およびBブレ画像の所定の閾値より高い周波数成分を減衰させて、減算部232−2に供給する。
【0245】
減算部232−2には、LPF231−2により高周波成分が減衰されたRブレ画像およびBブレ画像の他、高周波成分が減衰される前のRブレ画像およびBブレ画像が入力される。減算部232−2は、高周波成分が減衰される前と後のRブレ画像の差分をとることにより、Rブレ画像の高周波成分を抽出し、高周波成分が減衰される前と後のBブレ画像の差分をとることにより、Bブレ画像の高周波成分を抽出する。減算部232−2は、抽出したRブレ画像の高周波成分からなる画像(以下、R高周波ブレ画像と称する)、および、抽出したBブレ画像の高周波成分からなる画像(以下、B高周波ブレ画像と称する)を相関検出部233に供給する。
【0246】
相関検出部233は、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関、および、Bブレ画像の高周波成分とGブレ画像の高周波成分との相関を検出し、検出結果をマスク画像生成部234に供給する。
【0247】
マスク画像生成部234は、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関に基づいて、RGマスク画像を生成し、Bブレ画像の高周波成分とGブレ画像の高周波成分との相関に基づいて、BGマスク画像を生成する。マスク画像生成部234は、生成したRGマスク画像およびBGマスク画像を乗算部215に供給する。
【0248】
次に、図18のフローチャートを参照して、画像処理装置201により実行される画像補正処理について説明する。なお、この処理は、例えば、画像処理装置201に、補正の対象となるブレ画像が入力され、図示せぬ操作部を介して、画像補正処理の実行が指令されたとき開始される。なお、入力されたブレ画像のG成分からなるGブレ画像は、情報処理装置1、並びに、マスク生成部214のLPF231−1および減算部232−1に供給され、ブレ画像のR成分からなるRブレ画像、および、ブレ画像のB成分からなるBブレ画像は、ダウンサンプル部211、並びに、マスク生成部214のLPF231−2および減算部232−2に供給される。
【0249】
ステップS101において、情報処理装置1は、Gブレ画像に対して、図10を参照して上述した反復更新処理を行う。情報処理装置1は、反復更新処理の結果得られたG補正画像をHPF213に供給する。
【0250】
ステップS102において、HPF213は、補正したG画像のテクスチャ成分を抽出する。すなわち、HPF213は、G補正画像の所定の閾値より低い周波数成分を減衰させることにより、G補正画像のテクスチャ成分を抽出する。HPF213は、抽出したG補正画像のテクスチャ成分からなるGテクスチャ画像を乗算部215に供給する。
【0251】
ステップS103において、ダウンサンプル部211は、Rブレ画像およびBブレ画像を所定の倍率で縮小する。ダウンサンプル部211は、縮小した画像、すなわち、縮小Rブレ画像および縮小Bブレ画像を情報処理装置1に供給する。
【0252】
ステップS104において、情報処理装置1は、縮小したRブレ画像およびBブレ画像に対して、それぞれ反復更新処理を行う。すなわち、情報処理装置1は、縮小Rブレ画像および縮小Bブレ画像に対して、それぞれ個別に図10を参照して上述した反復更新処理を行う。情報処理装置1は、反復更新処理の結果得られた縮小R補正画像および縮小B補正画像をアップサンプル部212に供給する。
【0253】
ステップS105において、アップサンプル部212は、補正したR画像およびB画像を拡大する。すなわち、アップサンプル部212は、縮小R補正画像および縮小B補正画像を縮小前の大きさに戻す。アップサンプル部212は、拡大した画像、すなわち、R補正画像およびB補正画像を乗算部215に供給する。
【0254】
なお、R補正画像およびB補正画像は、元となるRブレ画像およびBブレ画像をいったん縮小した後、ブレを補正し、元の大きさに拡大した画像であり、縮小時に元の画像内のテクスチャ成分に関する情報の一部が失われている。従って、R補正画像およびB補正画像は、元のRブレ画像およびBブレ画像と比較して、ブレが補正される一方で、テクスチャ成分が不足した画像となる。
【0255】
ステップS106において、マスク生成部214は、マスク生成処理を実行する。ここで、図19のフローチャートを参照して、マスク生成処理の詳細について説明する。
【0256】
ステップS121において、マスク生成部214は、Rブレ画像、Gブレ画像、および、Bブレ画像の高周波成分を抽出する。具体的には、LPF231−1は、Gブレ画像の所定の閾値より高い周波数成分を減衰させて、減算部232−1に供給する。減算部232−1は、高周波成分が減衰される前のGブレ画像と、LPF231−1により高周波成分が減衰された後のGブレ画像との差分をとることにより、Gブレ画像の高周波成分を抽出する。減算部232−1は、抽出したGブレ画像の高周波成分からなるG高周波ブレ画像を相関検出部233に供給する。
【0257】
また、LPF231−2は、Rブレ画像の所定の閾値より高い周波数成分を減衰させて、減算部232−2に供給する。減算部232−2は、高周波成分が減衰される前のRブレ画像と、LPF231−2により高周波成分が減衰された後のRブレ画像との差分をとることにより、Rブレ画像の高周波成分を抽出する。減算部232−2は、抽出したRブレ画像の高周波成分からなるR高周波ブレ画像を相関検出部233に供給する。
【0258】
同様に、LPF231−2は、Bブレ画像の所定の閾値より高い周波数成分を減衰させて、減算部232−2に供給する。減算部232−2は、高周波成分が減衰される前のBブレ画像と、LPF231−2により高周波成分が減衰された後のBブレ画像との差分をとることにより、Bブレ画像の高周波成分を抽出する。減算部232−2は、抽出したBブレ画像の高周波成分からなるB高周波ブレ画像を相関検出部233に供給する。
【0259】
ステップS122において、相関検出部233は、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関、および、Bブレ画像の高周波成分とGブレ画像の高周波成分との相関を検出する。具体的には、相関検出部233は、R高周波ブレ画像とG高周波ブレ画像との差分をとることにより、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関を検出する。すなわち、相関検出部233は、R高周波ブレ画像とG高周波ブレ画像との差分をとることにより、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関を示す画像(以下、RG高周波差分画像と称する)を生成する。RG高周波差分画像では、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関が強い領域ほど、画素値が小さくなり、相関が弱い領域ほど、画素値が大きくなる。
【0260】
同様に、相関検出部233は、B高周波ブレ画像とG高周波ブレ画像との差分をとることにより、Bブレ画像の高周波成分とGブレ画像の高周波成分との相関を示す画像(以下、BG高周波差分画像と称する)を生成する。相関検出部233は、生成したRG高周波差分画像およびBG高周波差分画像をマスク画像生成部234に供給する。
【0261】
ステップS123において、マスク画像生成部234は、検出した高周波成分の相関に基づいて、マスク画像を生成する。具体的には、マスク画像生成部234は、RG高周波差分画像の画素値が大きい画素ほど画素値が小さくなり、RG高周波差分画像の画素値が小さい画素ほど画素値が大きくなるとともに、画素値が0から1の範囲内となるように正規化したRGマスク画像を生成する。すなわち、RGマスク画像の各画素の画素値は、0から1の範囲内で、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関が強い領域内の画素ほど大きくなり、相関が弱い領域内の画素ほど小さくなる。同様に、マスク画像生成部234は、BG高周波差分画像の画素値が大きい画素ほど画素値が小さくなり、BG高周波差分画像の画素値が小さい画素ほど画素値が大きくなるとともに、画素値が0から1の範囲内となるように正規化したBGマスク画像を生成する。マスク画像生成部234は、生成したRGマスク画像およびBGマスク画像を乗算部215に供給する。
【0262】
その後、マスク生成処理は終了する。
【0263】
図18に戻り、ステップS107において、乗算部215は、マスク画像を用いて、R補正画像およびB補正画像に、G補正画像のテクスチャ成分を合成する。すなわち、乗算部215は、RGマスク画像を用いて、R補正画像にGテクスチャ画像を掛け合わせることにより、縮小時に失われたR補正画像のテクスチャ成分を復元する。同様に、乗算部215は、BGマスク画像を用いて、B補正画像にGテクスチャ画像を掛け合わせることにより、縮小時に失われたB補正画像のテクスチャ成分を復元する。
【0264】
このとき、RGマスク画像を用いることにより、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関が弱い領域ほど、ブレ画像においてR成分の変動とG成分の変動との相関が弱いとみなされ、R補正画像にG補正画像のテクスチャ成分を合成する量が小さくなる。一方、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関が強い領域ほど、ブレ画像においてR成分の変動とG成分の変動との相関が強いとみなされ、R補正画像にG補正画像のテクスチャ成分を合成する量が大きくなる。同様に、BGマスク画像を用いることにより、Bブレ画像の高周波成分とGブレ画像の高周波成分との相関が弱い領域ほど、ブレ画像においてB成分の変動とG成分の変動との相関が弱いとみなされ、B補正画像にG補正画像のテクスチャ成分を合成する量が小さくなる。一方、Bブレ画像の高周波成分とGブレ画像の高周波成分との相関が強い領域ほど、ブレ画像においてB成分の変動とG成分の変動との相関が強いとみなされ、B補正画像にG補正画像のテクスチャ成分を合成する量が大きくなる。
【0265】
ステップS108において、画像処理装置201は、補正した画像を出力する。すなわち、情報処理装置1は、ステップS101の処理で得られたG補正画像を画像処理装置201の後段の装置に出力し、乗算部215は、ステップS107の処理で得られたRテクスチャ合成画像およびRテクスチャ合成画像を画像処理装置201の後段の装置に出力する。その後、画像補正処理は終了する。
【0266】
このように、Rブレ画像およびBブレ画像を縮小してから反復更新処理を行うことにより、計算量を削減し、処理を高速化することができる。
【0267】
また、人間の目が最も反応しやすいG成分からなるGブレ画像は縮小せずに処理するとともに、Rブレ画像およびBブレ画像を縮小することにより失われたテクスチャ成分を、G補正画像のテクスチャ成分を用いて復元することにより、処理の高速化に伴う画質の低下を抑制することができる。
【0268】
さらに、ブレ画像においてR成分の変動とG成分の変動との相関が弱い領域、および、B成分の変動とG成分の変動との相関が弱い領域において、G補正画像のテクスチャ成分を合成する量を小さくしたり、あるいは、合成しないようにしたりすることにより、合成後の画像において、元々の被写体にない色(偽色)が発生することを抑制することができる。
【0269】
ここで、偽色の発生の具体例について、図20および図21を参照して説明する。
【0270】
図20の上の図は、図18の画像補正処理を施す前の画像の一部を拡大し、モノクロームにした図である。実際の画像では、画像内の暗い部分が明るい赤色をしており、中央付近の明るい部分が反射光により明るく光っている。また、図20の下のグラフは、上の画像の中央付近の横方向のラインのR成分、G成分、B成分の変化を示しており、実線がR成分の変化を表し、細かい点線がG成分の変化を表し、粗い点線がB成分の変化を表している。このグラフから分かるように、R成分は他の成分との相関が弱く、大きな値であまり変化せず、G成分、B成分は、反射光により光っている部分で値が大きくなり、それ以外の部分では値が小さくなっている。
【0271】
一方、図21の上の図は、図20の上の図に対して、マスク画像を用いずに図18の画像補正処理を施した結果を示している。また、図21の下のグラフは、図20の下のグラフと同様のグラフであり、上の画像の図20の下のグラフと同じ横方向のラインのR成分、G成分、B成分の変化を示している。図20のグラフと図21のグラフとを比較すると、図21のグラフでは、反射光により光っている部分の境界付近のG成分の値が大きく変化する部分で、R成分の値が落ち込んでいる。そして、図20の上の図と図21の上の図とを比較すると、図21の上の図では、反射光により光っている部分の境界付近に偽色が発生し、黒い縁が現れている。これは、R成分とG成分の相関が弱い領域において、R補正画像にG補正画像のテクスチャ成分を合成することによる弊害である。
【0272】
そこで、上述したように、マスク画像を用いて、R補正画像およびB補正画像にG補正画像のテクスチャ成分を合成するようにすることにより、このような黒縁等の偽色の発生を抑制することができる。
【0273】
なお、画像処理装置201において、情報処理装置1の代わりに、図13の情報処理装置121を適用することも可能である。
【0274】
また、例えば、以上の説明では、R補正画像にG補正画像のテクスチャ成分を合成するときと、B補正画像にG補正画像のテクスチャ成分を合成するときとで、異なるマスク画像を用いるようにしたが、同じマスク画像を用いるようにすることも考えられる。この場合、例えば、Rブレ画像の高周波成分とGブレ画像の高周波成分との相関、および、Bブレ画像の高周波成分とGブレ画像の高周波成分との相関のうち少なくとも一方が弱い領域ほど画素値が小さくなり、両方の相関とも強い領域ほど画素値が大きくなるマスク画像を生成し、用いるようにすることが考えられる。換言すれば、例えば、ブレ画像のG成分の変動とR成分の変動との相関またはG成分の変動とB成分の変動との相関のうち少なくとも一方が弱い領域ほど、G補正画像のストラクチャ成分を合成する量を小さくし、両方の相関とも強い領域ほど、G補正画像のストラクチャ成分を合成する量を大きくするマスク画像を生成し、用いることが考えられる。
【0275】
さらに、以上の説明では、ブレ画像を補正する例を説明したが、本発明は、ピンボケなどによるボケが発生した画像、あるいは、ブレとボケが両方発生した画像を補正する場合にも適用できる。
【0276】
また、第1の実施の形態である情報処理装置1、及び第2の実施の形態である情報処理装置121としては、例えば、画像を再生したり録画したりすることが可能な録画再生装置等に適用できる。
【0277】
[コンピュータの構成例]
ところで、上述した一連の処理は、専用のハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、いわゆる組み込み型のコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
【0278】
図20は、上述した一連の処理をプログラムにより実行するコンピュータの構成例を示している。
【0279】
CPU(Central Processing Unit)301は、ROM(Read Only Memory)302、または記憶部308に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)303には、CPU301が実行するプログラムやデータなどが適宜記憶される。これらのCPU301、ROM302、及びRAM303は、バス304により相互に接続されている。
【0280】
CPU301にはまた、バス304を介して入出力インタフェース305が接続されている。入出力インタフェース305には、キーボード、マウス、マイクロホンなどよりなる入力部306、ディスプレイ、スピーカなどよりなる出力部307が接続されている。CPU301は、入力部306から入力される指令に対応して各種の処理を実行する。そして、CPU301は、処理の結果を出力部307に出力する。
【0281】
入出力インタフェース305に接続されている記憶部308は、例えばハードディスクからなり、CPU301が実行するプログラムや各種のデータを記憶する。通信部309は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
【0282】
また、通信部309を介してプログラムを取得し、記憶部308に記憶してもよい。
【0283】
入出力インタフェース305に接続されているドライブ310は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア311が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部308に転送され、記憶される。
【0284】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図20に示されるように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini-Disc)を含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア311、または、プログラムが一時的もしくは永続的に格納されるROM302や、記憶部308を構成するハードディスクなどにより構成される。プログラム格納媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部309を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【0285】
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0286】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【0287】
1 情報処理装置, 21 H_init生成部, 22 サポート制限部, 23 乗算部, 24 加算部, 25 重心補正部, 26 H生成部, 27 conv部, 28 処理部, 29 残差生成部, 30 corr部, 31 corr部, 32 平均化部, 33 減算部, 34 U_init生成部, 35 U生成部, 36 乗算部, 37 トータルバリエーションフィルタ, 61 情報処理装置, 91 conv部, 92 減算部, 93 加算部, 94 R-Ldeconv部, 95 減算部, 96 加算部, 97 オフセット部, 98 ゲインマップ, 121 情報処理装置, 151 乗算部, 152 加算部, 153 乗算部, 201 画像処理装置, 211 ダウンサンプル部, 212 アップサンプル部, 213 ハイパスフィルタ, 214 マスク生成部, 215 乗算部, 231−1,231−2 ローパスフィルタ, 232−1,232−2 減算部, 233 相関検出部, 234 マスク画像生成部

【特許請求の範囲】
【請求項1】
入力画像のG成分からなるG画像のストラクチャ成分のブレまたはボケを補正したG補正画像のテクスチャ成分を抽出するテクスチャ抽出手段と、
前記入力画像のR成分からなるR画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したR補正画像、および、前記入力画像のB成分からなるB画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したB補正画像に、前記G補正画像のテクスチャ成分を合成する量を、前記入力画像のG成分の変動とR成分の変動との相関または前記入力画像のG成分の変動とB成分の変動との相関のうち少なくとも一方が弱い領域ほど小さくするマスク画像を生成するマスク生成手段と、
前記マスク画像を用いて、前記R補正画像および前記B補正画像に前記G補正画像のテクスチャ成分を合成する合成手段と
を含む画像処理装置。
【請求項2】
前記マスク生成手段は、前記R画像の高周波成分と前記G画像の高周波成分との相関が弱い領域ほど、前記R補正画像に前記G補正画像のテクスチャ成分を合成する量を小さくする第1のマスク画像を生成し、前記B画像の高周波成分と前記G画像の高周波成分との相関が弱い領域ほど、前記B補正画像に前記G補正画像のテクスチャ成分を合成する量を小さくする第2のマスク画像を生成し、
前記合成手段は、前記第1のマスク画像を用いて、前記R補正画像に前記G補正画像のテクスチャ成分を合成し、前記第2のマスク画像を用いて、前記B補正画像に前記G補正画像のテクスチャ成分を合成する
請求項1に記載の画像処理装置。
【請求項3】
前記マスク生成手段は、
前記R画像、前記G画像、および、前記B画像の高周波成分を抽出する高周波抽出手段と、
前記R画像の高周波成分と前記G画像の高周波成分との差、および、前記B画像の高周波成分と前記G画像の高周波成分との差を検出する検出手段と、
前記R画像の高周波成分と前記G画像の高周波成分との差が大きい領域ほど、前記R補正画像に前記G補正画像のテクスチャ成分を合成する量を小さくする前記第1のマスク画像を生成し、前記B画像の高周波成分と前記G画像の高周波成分との差が大きい領域ほど、前記B補正画像に前記G補正画像のテクスチャ成分を合成する量を小さくする前記第2のマスク画像を生成する生成手段と
を含む請求項2に記載の画像処理装置。
【請求項4】
前記R画像および前記B画像を縮小する縮小手段と、
前記R画像を縮小したR縮小画像のストラクチャ成分、前記B画像を縮小したB縮小画像のストラクチャ成分、および、前記G画像のストラクチャ成分のブレまたはボケを補正する補正手段と、
ブレまたはボケを補正した後の前記R縮小画像および前記B縮小画像を元の大きさに戻す拡大手段と
をさらに含む請求項1乃至3のいずれかに記載の画像処理装置。
【請求項5】
画像処理装置が、
入力画像のG成分からなるG画像のストラクチャ成分のブレまたはボケを補正したG補正画像のテクスチャ成分を抽出し、
前記入力画像のR成分からなるR画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したR補正画像、および、前記入力画像のB成分からなるB画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したB補正画像に、前記G補正画像のテクスチャ成分を合成する量を、前記入力画像のG成分の変動とR成分の変動との相関または前記入力画像のG成分の変動とB成分の変動との相関のうち少なくとも一方が弱い領域ほど小さくするマスク画像を生成し、
前記マスク画像を用いて、前記R補正画像および前記B補正画像に前記G補正画像のテクスチャ成分を合成する
ステップを含む画像処理方法。
【請求項6】
入力画像のG成分からなるG画像のストラクチャ成分のブレまたはボケを補正したG補正画像のテクスチャ成分を抽出し、
前記入力画像のR成分からなるR画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したR補正画像、および、前記入力画像のB成分からなるB画像を縮小した画像のストラクチャ成分のブレまたはボケを補正した後、縮小前の大きさに戻したB補正画像に、前記G補正画像のテクスチャ成分を合成する量を、前記入力画像のG成分の変動とR成分の変動との相関または前記入力画像のG成分の変動とB成分の変動との相関のうち少なくとも一方が弱い領域ほど小さくするマスク画像を生成し、
前記マスク画像を用いて、前記R補正画像および前記B補正画像に前記G補正画像のテクスチャ成分を合成する
ステップを含む処理をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2011−134204(P2011−134204A)
【公開日】平成23年7月7日(2011.7.7)
【国際特許分類】
【出願番号】特願2009−294544(P2009−294544)
【出願日】平成21年12月25日(2009.12.25)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】