(57)【要約】【課題】手振れや合焦距離のズレによるボケを補正する。【解決手段】H_init生成部２１は、入力画像からケプストラム上で検出した特徴点に基づいて、入力画像に生じているブレの程度を表す点広がり関数を生成し、U_init生成部３４は、点広がり関数に基づいて、入力画像を、点広がり関数に基づくサイズにより縮小し、サイズにより拡大して得られた画像を表すストラクチャを生成する。H生成部２６乃至corr部３１、及びU生成部３５等は、点広がり関数、及びテクスチャが、真の値に近づくように、点広がり関数、及びストラクチャの少なくとも一方を更新する更新処理を行う。そして、更新後のストラクチャを構成するストラクチャ成分及びテクスチャ成分のうち、ストラクチャ成分を、新たな更新対象のストラクチャとし、更新後の点広がり関数を、新たな更新対象とする更新処理を反復して行う。本発明は、例えば、記録再生装置等に適用できる。【選択図】図１
2010079875.tif 000002
【特許請求の範囲】
【請求項１】
入力画像からケプストラム上で検出した特徴点に基づいて、前記入力画像に生じているブレの程度を表す点広がり関数を生成する第１の生成手段と、
前記点広がり関数に基づいて、前記入力画像を、前記点広がり関数に基づくサイズにより縮小し、前記サイズにより拡大して得られた画像を表すストラクチャを生成する第２の生成手段と、
前記点広がり関数、及び前記テクスチャが、真の値に近づくように、前記点広がり関数、又は前記ストラクチャの少なくとも一方を更新する更新処理を行う更新手段と
を含み、
前記更新手段は、前記更新処理による更新後の前記ストラクチャを構成するストラクチャ成分及びテクスチャ成分のうち、前記ストラクチャ成分を、前記更新処理による新たな更新対象のストラクチャとし、前記更新処理による更新後の前記点広がり関数を、前記更新処理による新たな更新対象とする前記更新処理を反復して行う
情報処理装置。
【請求項２】
前記更新手段は、前記点広がり関数、及び前記ストラクチャを更新対象とする前記更新処理を反復して行う
請求項１に記載の情報処理装置。
【請求項３】
前記更新手段は、前記点広がり関数、及び前記ストラクチャを、交互に更新対象とする前記更新処理を反復して行う
請求項１に記載の情報処理装置。
【請求項４】
前記更新手段は、最急降下法、又はRichard-Lucy法により、前記点広がり関数、及び前記ストラクチャの少なくとも一方を更新する
請求項１に記載の情報処理装置。
【請求項５】
前記更新手段は、前記更新処理による更新後の前記ストラクチャを、前記ストラクチャ成分と前記テクスチャ成分とに分離するためのフィルタ閾値に基づいて、更新後の前記ストラクチャを、前記ストラクチャ成分と前記テクスチャ成分とに分離し、分離後の前記ストラクチャ成分を、前記更新処理による新たな更新対象のストラクチャとする
請求項１に記載の情報処理装置。
【請求項６】
前記更新手段は、前記ストラクチャが更新されるほどに、前記フィルタ閾値を小さく設定して、前記ストラクチャ成分と前記テクスチャ成分とを分離する
請求項１に記載の情報処理装置。
【請求項７】
前記更新手段は、トータルバリエーションが増加から減少に変換した場合、又は前記入力画像から、前記点広がり関数と前記テクスチャとの畳込み演算による演算結果を差し引いて得られる差分の絶対値が、所定の閾値以下となった場合に、前記更新処理を終了する
請求項１に記載の情報処理装置。
【請求項８】
前記第１の生成手段は、前記入力画像を複数のブロックに分割し、分割した複数のブロック毎の前記点広がり関数を生成し、
前記第２の生成手段は、前記ブロックを縮小した後に拡大して得られたブロックから、ストラクチャを生成する
請求項１に記載の情報処理装置。
【請求項９】
前記第１の生成手段は、前記入力画像を構成する複数のブロックのうちの所定のブロックに対応する前記点広がり関数を生成し、
前記更新手段は、前記第１の生成手段により生成された前記点広がり関数を反復して更新する
請求項８に記載の情報処理装置。
【請求項１０】
前記更新手段は、
前記点広がり関数を反復して更新することにより、最終的に得られた前記点広がり関数を、複数のブロックのうち、前記所定のブロックとは異なるブロックに対応する点広がり関数とし、
前記所定のブロックとは異なるブロックに対応する点広がり関数を用いて、前記所定のブロックとは異なるブロックそれぞれについての前記ストラクチャを反復して更新する
請求項９に記載の情報処理装置。
【請求項１１】
前記更新手段による前記更新処理により、最終的に得られた点広がり関数とストラクチャとの畳込み演算を行う畳込み演算手段と、
前記入力画像から、前記畳込み演算により得られる畳込み演算結果を減算する減算手段と、
前記減算手段による減算結果に基づいて、前記入力画像のテクスチャを復元する復元手段と、
前記更新処理により、最終的に得られたストラクチャと、復元された前記テクスチャとに基づいて、前記入力画像に生じているブレを除去した復元画像を生成する復元画像生成手段と
をさらに含む請求項１に記載の情報処理装置。
【請求項１２】
入力画像を補正する情報処理装置の情報処理方法において、
前記情報処理装置は、
第１の生成手段と、
第２の生成手段と、
更新手段と、
を含み、
前記第１の生成手段が、入力画像からケプストラム上で検出した特徴点に基づいて、前記入力画像に生じているブレの程度を表す点広がり関数を生成し、
前記第２の生成手段が、前記点広がり関数に基づいて、前記入力画像を、前記点広がり関数に基づくサイズにより縮小し、前記サイズにより拡大して得られた画像を表すストラクチャを生成し、
前記更新手段が、前記点広がり関数、及び前記テクスチャが、真の値に近づくように、前記点広がり関数、又は前記ストラクチャの少なくとも一方を更新する更新処理を行う
ステップを含み、
前記更新手段は、前記更新処理による更新後の前記ストラクチャを構成するストラクチャ成分及びテクスチャ成分のうち、前記ストラクチャ成分を、前記更新処理による新たな更新対象のストラクチャとし、前記更新処理による更新後の前記点広がり関数を、前記更新処理による新たな更新対象とする前記更新処理を反復して行う
情報処理方法。
【請求項１３】
コンピュータを、
入力画像からケプストラム上で検出した特徴点に基づいて、前記入力画像に生じているブレの程度を表す点広がり関数を生成する第１の生成手段と、
前記点広がり関数に基づいて、前記入力画像を、前記点広がり関数に基づくサイズにより縮小し、前記サイズにより拡大して得られた画像を表すストラクチャを生成する第２の生成手段と、
前記点広がり関数、及び前記テクスチャが、真の値に近づくように、前記点広がり関数、又は前記ストラクチャの少なくとも一方を更新する更新処理を行う更新手段と
して機能させるためのプログラムであって、
前記更新手段は、前記更新処理による更新後の前記ストラクチャを構成するストラクチャ成分及びテクスチャ成分のうち、前記ストラクチャ成分を、前記更新処理による新たな更新対象のストラクチャとし、前記更新処理による更新後の前記点広がり関数を、前記更新処理による新たな更新対象とする前記更新処理を反復して行う
プログラム。
【請求項１４】
入力画像のスペクトラムに基づいて、複数のケプストラムを生成する生成手段と、
生成された複数のケプストラムのうち、最大の値を有するケプストラムと、最大の値を有するケプストラムの周囲に存在するケプストラムを、スポットとして検出する検出手段と、
検出されたスポットに基づいて、前記入力画像の点広がり関数を推定する推定手段と、
検出されたスポットと接する範囲内に、所定の閾値以上の値を有するケプストラムが存在するか否かを判定する判定手段と
を含む情報処理装置。
【請求項１５】
前記推定手段は、前記判定手段により、検出されたスポットと接する範囲内に、所定の閾値以上の値を有するケプストラムが存在すると判定された場合、推定した前記点広がり関数を、ガウス分布に従った点広がり関数に近似する
請求項１４に記載の情報処理装置。
【請求項１６】
前記生成手段は、前記入力画像を構成する画素のR成分、G成分、及びB成分のいずれかに対応するスペクトラムか、前記R成分、前記G成分、及び前記B成分による重み付け和を表すY成分に対応するスペクトラムか、又は、前記R成分、前記G成分及び前記B成分それぞれを加算して得られるR+G+B成分に対応するスペクトラムのいずれかに基づいて、複数のケプストラムを生成する
請求項１４に記載の情報処理装置。
【請求項１７】
前記入力画像のストラクチャを用いて、前記推定手段により推定された前記点広がり関数を更新する更新手段
をさらに含む請求項１４に記載の情報処理装置。
【請求項１８】
前記推定手段により推定された前記点広がり関数に基づいて、前記更新手段により更新される前記点広がり関数の範囲を制限するサポート制限情報を生成する制限情報生成手段をさらに含み、
前記更新手段は、前記サポート制限情報に基づいて、前記推定手段により推定された前記点広がり関数を更新する
請求項１７に記載の情報処理装置。
【請求項１９】
前記更新手段は、前記ストラクチャを構成する画素のR成分、G成分、及びB成分のいずれかの成分か、前記R成分、前記G成分、及び前記B成分による重み付け和を表すY成分か、又は、R成分、G成分及びB成分それぞれを加算して得られるR+G+B成分のいずれかを用いて、前記推定手段により推定された前記点広がり関数を更新する
請求項１７に記載の情報処理装置。
【請求項２０】
入力画像から、前記入力画像に生じているブレを表す点広がり関数を推定する情報処理装置の情報処理方法において、
前記情報処理装置は、
検出手段と、
推定手段と、
判定手段と
を含み、
前記検出手段が、入力画像のスペクトラムに基づいて、複数のケプストラムを生成し、
前記推定手段が、生成された複数のケプストラムのうち、最大の値を有するケプストラムと、最大の値を有するケプストラムの周囲に存在するケプストラムを、スポットとして検出し、
前記推定手段が、検出されたスポットに基づいて、前記入力画像に生じているブレを表す点広がり関数を推定し、
前記判定手段が、検出されたスポットと接する範囲内に、所定の閾値以上の値を有するケプストラムが存在するか否かを判定する
ステップを含む情報処理方法。
【請求項２１】
コンピュータを、
入力画像のスペクトラムに基づいて、複数のケプストラムを生成する生成手段と、
生成された複数のケプストラムのうち、最大の値を有するケプストラムと、最大の値を有するケプストラムの周囲に存在するケプストラムを、スポットとして検出する検出手段と、
検出されたスポットに基づいて、前記入力画像の点広がり関数を推定する推定手段と、
検出されたスポットと接する範囲内に、所定の閾値以上の値を有するケプストラムが存在するか否かを判定する判定手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及びプログラムに関し、特に、撮像時の手振れによるボケや、合焦距離のズレによる、いわゆるピンボケ等を補正できるようにした情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、撮像した画像に生じた手振れボケやピンボケ（以下、単にボケともいう）を補正する補正技術が存在する。
【０００３】
例えば、L.B.LucyとWilliam Hardley Richardsonにより提唱されたRichardson-Lucy法は、点広がり関数（PSF（Point Spread Function)）の周波数軸上で零点に落ち込むスペクトラムを用いて逆問題を解く際に、零点において、ノイズの増幅やリンギングの発生等が見られる。
【０００４】
また、点広がり関数が正確に求まらなかった場合には、零点において、ノイズの増幅やリンギングの発生等が、より大きくなってしまう。
【０００５】
そこで、ゲインマップの導入により、点広がり関数が正確にわかる場合に、リンギングを抑制することが可能なresidual deconvolution技術が存在する（例えば、非特許文献１を参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Image Deblurring with Blurred/Noisy Image Pairs(Lu Yuan)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のresidual deconvolution技術では、点広がり関数に誤差が存在する場合には、画像のストラクチャ成分(structure)と残差(residual部分)の復元がうまくいかず、リンギングがより多く発生してしまう。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、リンギング等を抑制し、手振れや合焦距離のズレによるボケを補正できるようにするものである。
【課題を解決するための手段】
【０００９】
本発明の第１の側面の情報処理装置、又はプログラムは、入力画像からケプストラム上で検出した特徴点に基づいて、前記入力画像に生じているブレの程度を表す点広がり関数を生成する第１の生成手段と、前記点広がり関数に基づいて、前記入力画像を、前記点広がり関数に基づくサイズにより縮小し、前記サイズにより拡大して得られた画像を表すストラクチャを生成する第２の生成手段と、前記点広がり関数、及び前記テクスチャが、真の値に近づくように、前記点広がり関数、又は前記ストラクチャの少なくとも一方を更新する更新処理を行う更新手段とを含み、前記更新手段は、前記更新処理による更新後の前記ストラクチャを構成するストラクチャ成分及びテクスチャ成分のうち、前記ストラクチャ成分を、前記更新処理による新たな更新対象のストラクチャとし、前記更新処理による更新後の前記点広がり関数を、前記更新処理による新たな更新対象とする前記更新処理を反復して行う情報処理装置、又は情報処理装置としてコンピュータを機能させるためのプログラムである。
【００１０】
前記更新手段では、前記点広がり関数、及び前記ストラクチャを更新対象とする前記更新処理を反復して行うことができる。
【００１１】
前記更新手段では、前記点広がり関数、及び前記ストラクチャを、交互に更新対象とする前記更新処理を反復して行うことができる。
【００１２】
前記更新手段では、最急降下法、又はRichard-Lucy法により、前記点広がり関数、及び前記ストラクチャの少なくとも一方を更新することができる。
【００１３】
前記更新手段では、前記更新処理による更新後の前記ストラクチャを、前記ストラクチャ成分と前記テクスチャ成分とに分離するためのフィルタ閾値に基づいて、更新後の前記ストラクチャを、前記ストラクチャ成分と前記テクスチャ成分とに分離し、分離後の前記ストラクチャ成分を、前記更新処理による新たな更新対象のストラクチャとすることができる。
【００１４】
前記更新手段では、前記ストラクチャが更新されるほどに、前記フィルタ閾値を小さく設定して、前記ストラクチャ成分と前記テクスチャ成分とを分離することができる。
【００１５】
前記更新手段では、トータルバリエーションが増加から減少に変換した場合、又は前記入力画像から、前記点広がり関数と前記テクスチャとの畳込み演算による演算結果を差し引いて得られる差分の絶対値が、所定の閾値以下となった場合に、前記更新処理を終了することができる。
【００１６】
前記第１の生成手段では、前記入力画像を複数のブロックに分割し、分割した複数のブロック毎の前記点広がり関数を生成し、前記第２の生成手段では、前記ブロックを縮小した後に拡大して得られたブロックから、ストラクチャを生成することができる。
【００１７】
前記第１の生成手段では、前記入力画像を構成する複数のブロックのうちの所定のブロックに対応する前記点広がり関数を生成し、前記更新手段では、前記第１の生成手段により生成された前記点広がり関数を反復して更新することができる。
【００１８】
前記更新手段では、前記点広がり関数を反復して更新することにより、最終的に得られた前記点広がり関数を、複数のブロックのうち、前記所定のブロックとは異なるブロックに対応する点広がり関数とし、前記所定のブロックとは異なるブロックに対応する点広がり関数を用いて、前記所定のブロックとは異なるブロックそれぞれについての前記ストラクチャを反復して更新することができる。
【００１９】
前記更新手段による前記更新処理により、最終的に得られた点広がり関数とストラクチャとの畳込み演算を行う畳込み演算手段と、前記入力画像から、前記畳込み演算により得られる畳込み演算結果を減算する減算手段と、前記減算手段による減算結果に基づいて、前記入力画像のテクスチャを復元する復元手段と、前記更新処理により、最終的に得られたストラクチャと、復元された前記テクスチャとに基づいて、前記入力画像に生じているブレを除去した復元画像を生成する復元画像生成手段とをさらに設けることができる。
【００２０】
本発明の第１の側面の情報処理方法は、入力画像を補正する情報処理装置の情報処理方法であって、前記情報処理装置は、第１の生成手段と、第２の生成手段と、更新手段と、を含み、前記第１の生成手段が、入力画像からケプストラム上で検出した特徴点に基づいて、前記入力画像に生じているブレの程度を表す点広がり関数を生成し、前記第２の生成手段が、前記点広がり関数に基づいて、前記入力画像を、前記点広がり関数に基づくサイズにより縮小し、前記サイズにより拡大して得られた画像を表すストラクチャを生成し、前記更新手段が、前記点広がり関数、及び前記テクスチャが、真の値に近づくように、前記点広がり関数、又は前記ストラクチャの少なくとも一方を更新する更新処理を行うステップを含み、前記更新手段は、前記更新処理による更新後の前記ストラクチャを構成するストラクチャ成分及びテクスチャ成分のうち、前記ストラクチャ成分を、前記更新処理による新たな更新対象のストラクチャとし、前記更新処理による更新後の前記点広がり関数を、前記更新処理による新たな更新対象とする前記更新処理を反復して行う情報処理方法である。
【００２１】
本発明の第１の側面によれば、入力画像からケプストラム上で検出した特徴点に基づいて、前記入力画像に生じているブレの程度を表す点広がり関数が生成され、前記点広がり関数に基づいて、前記入力画像を、前記点広がり関数に基づくサイズにより縮小し、前記サイズにより拡大して得られた画像を表すストラクチャが生成され、前記点広がり関数、及び前記テクスチャが、真の値に近づくように、前記点広がり関数、又は前記ストラクチャの少なくとも一方が更新する更新処理が行われ、前記更新処理による更新後の前記ストラクチャを構成するストラクチャ成分及びテクスチャ成分のうち、前記ストラクチャ成分が、前記更新処理による新たな更新対象のストラクチャとされ、前記更新処理による更新後の前記点広がり関数が、前記更新処理による新たな更新対象とされて前記更新処理が反復して行われる。
【００２２】
本発明の第２の側面の情報処理装置、又はプログラムは、入力画像のスペクトラムに基づいて、複数のケプストラムを生成する生成手段と、生成された複数のケプストラムのうち、最大の値を有するケプストラムと、最大の値を有するケプストラムの周囲に存在するケプストラムを、スポットとして検出する検出手段と、検出されたスポットに基づいて、前記入力画像の点広がり関数を推定する推定手段と、検出されたスポットと接する範囲内に、所定の閾値以上の値を有するケプストラムが存在するか否かを判定する判定手段とを含む情報処理装置、又は情報処理装置として機能させるためのプログラムである。
【００２３】
前記推定手段では、前記判定手段により、検出されたスポットと接する範囲内に、所定の閾値以上の値を有するケプストラムが存在すると判定された場合、推定した前記点広がり関数を、ガウス分布に従った点広がり関数に近似することができる。
【００２４】
前記生成手段では、前記入力画像を構成する画素のR成分、G成分、及びB成分のいずれかに対応するスペクトラムか、前記R成分、前記G成分、及び前記B成分による重み付け和を表すY成分に対応するスペクトラムか、又は、前記R成分、前記G成分及び前記B成分それぞれを加算して得られるR+G+B成分に対応するスペクトラムのいずれかに基づいて、複数のケプストラムを生成することができる。
【００２５】
前記入力画像のストラクチャを用いて、前記推定手段により推定された前記点広がり関数を更新する更新手段をさらに設けることができる。
【００２６】
前記推定手段により推定された前記点広がり関数に基づいて、前記更新手段により更新される前記点広がり関数の範囲を制限するサポート制限情報を生成する制限情報生成手段をさらに設けることができ、前記更新手段では、前記サポート制限情報に基づいて、前記推定手段により推定された前記点広がり関数を更新することができる。
【００２７】
前記更新手段では、前記ストラクチャを構成する画素のR成分、G成分、及びB成分のいずれかの成分か、前記R成分、前記G成分、及び前記B成分による重み付け和を表すY成分か、又は、R成分、G成分及びB成分それぞれを加算して得られるR+G+B成分のいずれかを用いて、前記推定手段により推定された前記点広がり関数を更新することができる。
【００２８】
本発明の第２の側面の情報処理方法は、入力画像から、前記入力画像に生じているブレを表す点広がり関数を推定する情報処理装置の情報処理方法であって、前記情報処理装置は、検出手段と、推定手段と、判定手段とを含み、前記検出手段が、入力画像のスペクトラムに基づいて、複数のケプストラムを生成し、前記推定手段が、生成された複数のケプストラムのうち、最大の値を有するケプストラムと、最大の値を有するケプストラムの周囲に存在するケプストラムを、スポットとして検出し、前記推定手段が、検出されたスポットに基づいて、前記入力画像に生じているブレを表す点広がり関数を推定し、前記判定手段が、検出されたスポットと接する範囲内に、所定の閾値以上の値を有するケプストラムが存在するか否かを判定するステップを含む情報処理方法である。
【００２９】
本発明の第２の側面によれば、入力画像のスペクトラムに基づいて、複数のケプストラムが生成され、生成された複数のケプストラムのうち、最大の値を有するケプストラムと、最大の値を有するケプストラムの周囲に存在するケプストラムが、スポットとして検出され、検出されたスポットに基づいて、前記入力画像の点広がり関数が推定され、検出されたスポットと接する範囲内に、所定の閾値以上の値を有するケプストラムが存在するか否かが判定される。
【発明の効果】
【００３０】
本発明によれば、手振れや合焦距離のズレによるボケを補正できる。
【図面の簡単な説明】
【００３１】
【図１】本発明を適用した情報処理装置の第１の構成例を示すブロック図である。
【図２】初期推定PSFの推定方法の概要を説明する図である。
【図３】ブレ画像についてケプストラムを生成する生成方法を説明する図である。
【図４】ケプストラムに対して、輝点の最大値を算出する算出方法を説明する図である。
【図５】初期推定PSFの推定が成功したか否かを判定する判定方法を説明する図である。
【図６】初期推定PSFを生成する生成方法を説明する図である。
【図７】ストラクチャUの初期値U_initの生成方法を説明する図である。
【図８】バイリニア補間による補間方法を示す図である。
【図９】サポート制限部が行うサポート制限処理を説明する図である。
【図１０】反復更新処理を説明するフローチャートである。
【図１１】本発明を適用した情報処理装置の第２の構成例を示すブロック図である。
【図１２】YUV空間について反復更新処理を行うことを説明する図である。
【図１３】本発明を適用した情報処理装置の第３の構成例を示すブロック図である。
【図１４】糊代処理を説明する第１の図である。
【図１５】糊代処理を説明する第２の図である。
【図１６】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００３２】
以下、図面を参照して、本実施の形態について説明する。
【００３３】
図１は、本発明の第１の実施の形態である情報処理装置１の構成例を示している。
【００３４】
この情報処理装置１には、JPEG（Joint Photographic Experts Group）圧縮により圧縮された画像であって、撮像時の手振れによりブレが生じているブレ画像が入力される。
【００３５】
情報処理装置１は、入力されるブレ画像を、複数のブロックgに分割し、各ブロック毎に、ブロックgに生じているブレ（の方向や長さ）を表す点広がり関数h、及びブロックgの平坦部とエッジ等の大振幅の成分を表すストラクチャfを初期推定する。
【００３６】
そして、情報処理装置１は、各ブロック毎に初期推定した点広がり関数h及びストラクチャfを、それぞれ、真の点広がり関数、及び真のストラクチャに近づくように、反復して更新する。
【００３７】
なお、以下において、k回だけ更新したときの点広がり関数hを、点広がり関数hkというとともに、k回だけ更新したときのストラクチャfを、ストラクチャfkという。
【００３８】
また、各ブロック毎の点広がり関数hkを区別する必要がない場合、単に、点広がり関数Hkという。また、各ブロック毎のストラクチャfkを区別する必要がない場合、単に、ストラクチャUkという。さらに、各ブロックgを区別する必要がない場合、単に、ブレ画像Gという。
【００３９】
情報処理装置１は、H_init生成部２１、サポート制限部２２、乗算部２３、加算部２４、重心補正（Center of gravity revision）部２５、H生成部２６、conv部２７、処理部２８、残差生成部２９、corr部３０、corr部３１、平均化(average)部３２、減算部３３、U_init生成部３４、U生成部３５、乗算部３６、及びトータルバリエーション(Total Variation)フィルタ３７により構成される。
【００４０】
H_init生成部２１には、ブレ画像Gが入力される。H_init生成部２１は、入力されたブレ画像Gを構成する画素の輝度値(Y成分)から、ケプストラム上で特徴点を検出し、PSFの直線推定を行い、その直線推定により得られた初期推定PSFを、点広がり関数Hの初期値H_init(=H0)として、サポート制限部２２、及びH生成部２６に供給する。
【００４１】
なお、H_init生成部２１は、入力されたブレ画像Gを構成する画素のY成分の他、R成分、G成分、B成分、並びに、R成分、G成分及びB成分それぞれを加算して得られるR+G+B成分から、ケプストラム上で特徴点を検出し、PSFの直線推定を行うようにすることが可能である。
【００４２】
サポート制限部２２は、H_init生成部２１からの初期値H_init(=初期推定PSF)の近傍のみを更新対象領域として更新させるためのサポート制限情報を生成し、乗算部２３に供給する。
【００４３】
ここで、サポート制限情報とは、初期推定PSFの近傍のみを更新対象領域とし、更新対象領域以外の領域ではゼロ固定とするマスク情報をいう。
【００４４】
乗算部２３は、サポート制限部２２からのサポート制限情報に基づいて、減算部３３からの減算結果Uko(G-Hk○Uk)-mean(Hk)のうち、初期推定PSFの周辺に存在する減算結果に対応するもののみを抽出し、加算部２４に供給する。
【００４５】
すなわち、例えば、乗算部２３は、サポート制限部２２からのサポート制限情報と、対応する、減算部３３からの減算結果Uko(G-Hk○Uk)-mean(Hk)どうしを乗算して、PSFの周辺に存在する減算結果に対応するもののみを抽出し、加算部２４に供給する。
【００４６】
なお、oは相関演算を表し、○は畳込み演算を表している。また、mean(Hk)は、点広がり関数Hkの平均値を表している。
【００４７】
加算部２４は、乗算部２３からの値Uko(G-Hk○Uk)-mean(Hk)のうち、値Uko(G-Hk○Uk)に、未定乗数λを乗算する。そして、加算部２４は、その結果得られる値λUko(G-Hk○Uk)-mean(Hk)に、H生成部２６からの点広がり関数Hkを加算し、その結果得られる値Hk+λUko(G-Hk○Uk)-mean(Hk)に対して、Lagrangeの未定乗数法を適用し、未定乗数λの解として値aを算出する。
【００４８】
加算部２４は、Lagrangeの未定乗数法により算出された値aを、値Hk+λUko(G-Hk○Uk)-mean(Hk)に代入し、その結果得られる値Hk+aUko(G-Hk○Uk)-mean(Hk)を、重心補正部２５に供給する。
【００４９】
これにより、重心補正部２５には、ブレ画像を構成する複数のブロック毎に得られたHk+aUko(G-Hk○Uk)-mean(Hk)=Hk+ΔHkが供給される。
【００５０】
重心補正部２５は、点広がり関数Hk+△Hk（但し、△Hkは更新分）の重心を、バイリニア補間により、画面の中心（点広がり関数の初期値H_initの重心）に移動させ、重心を移動させた点広がり関数Hk+△Hkを、H生成部２６に供給する。なお、詳細は、図８を参照して後述する。
【００５１】
H生成部２６は、H_init生成部２１からの初期値H_initを、点広がり関数H0として、加算部２４、conv部２７、及びcorr部３０に供給する。
【００５２】
また、H生成部２６は、重心補正部２５からの点広がり関数Hk+△Hkを、更新後の点広がり関数Hk+1として、加算部２４、conv部２７、及びcorr部３０に供給する。
【００５３】
なお、H生成部２６は、重心補正部２５から、点広がり関数Hk-1を更新して得られる点広がり関数Hk-1+△Hk-1が供給された場合、同様にして、重心補正部２５からの点広がり関数Hk-1+△Hk-1を、更新後の点広がり関数Hkとして、加算部２４、conv部２７、及びcorr部３０に供給する。
【００５４】
conv部２７は、H生成部２６からの点広がり関数Hkと、U生成部３５からのストラクチャUkとの畳み込み演算を行い、その演算結果Hk○Ukを、処理部２８に供給する。
【００５５】
処理部２８は、入力されるブレ画像Gから、conv部２７からの演算結果Hk○Ukを減算し、その減算結果G-Hk○Ukを、残差生成部２９に供給する。
【００５６】
残差生成部２９は、処理部２８からの減算結果G-Hk○Ukを、残差Ekとして、corr部３０及びcorr部３１に供給する。
【００５７】
corr部３０は、残差生成部２９からの残差Ekと、H生成部２６からの点広がり関数Hkの相関演算を行い、その演算結果Hko(G-Hk○Uk)を、乗算部３６に供給する。
【００５８】
corr部３１は、残差生成部２９からの残差Ekと、U生成部３５からのストラクチャUkの相関演算を行い、その演算結果Uko(G-Hk○Uk)を、減算部３３に供給する。
【００５９】
平均化部３２には、H生成部２６から、conv部２７、処理部２８、残差生成部２９、及びcorr部３１を介して、点広がり関数Hkが供給される。
【００６０】
平均化部３２は、corr部３１からの点広がり関数Hkの平均値mean(Hk)を算出し、減算部３３に供給する。
【００６１】
減算部３３は、corr部３１から供給される演算結果Uko(G-Hk○Uk)から、平均化部３２からのmean(Hk)を減算し、その結果得られる減算結果Uko(G-Hk○Uk)-mean(Hk)を、乗算部２３に供給する。
【００６２】
U_init生成部３４は、H_init生成部２１により生成された初期値H_init(=初期推定PSF)を用いて、入力されるブレ画像G（ブロックg）を、初期推定PSFサイズで縮小し、畳み込んだPSFを１点に戻すことにより、ブレ画像Gのブレが除去（低減）された画像であって、縮小された画像を生成する。
【００６３】
また、U_init生成部３４は、縮小された画像を、初期推定PSFサイズで拡大することにより、拡大によりボケた画像であって、ブレが除去された画像を生成し、ストラクチャUの初期値U_initに設定して、U生成部３５に供給する。
【００６４】
なお、後述する図７を参照して、U_init生成部３４が、初期値U_initを設定する方法の詳細を説明する。
【００６５】
U生成部３５は、トータルバリエーションフィルタ３７からのストラクチャUk+1を、conv部２７、corr部３１及び乗算部３６に供給する。
【００６６】
また、U生成部３５には、トータルバリエーションフィルタ３７からストラクチャUkが供給される。U生成部３５は、トータルバリエーションフィルタ３７からのストラクチャUkを、conv部２７、corr部３１及び乗算部３６に供給する。
【００６７】
乗算部３６は、corr部３０からの演算結果Hk○(G-Hk○Uk)に、U生成部３５からのストラクチャUkを乗算し、その乗算結果Uk{Hk○(G-Hk○Uk)}を、更新後のストラクチャとして、トータルバリエーションフィルタ３７に供給する。
【００６８】
トータルバリエーションフィルタ３７は、乗算部３６からの乗算結果Uk{Hk○(G-Hk○Uk)}を、ストラクチャ成分とテクスチャ成分に分離し、分離により得られるストラクチャ成分を、次の更新対象であるストラクチャUk+1として、U生成部３５に供給する。
【００６９】
上述したように、conv部２７乃至corr部３１、U生成部３５、及びトータルバリエーションフィルタ３７等は、H_init生成部２１により生成された点広がり関数Hの初期値H_init(=H0)を用いて、Richardson-Lucy法によるストラクチャU0の更新を行う。
【００７０】
また、conv部２７乃至corr部３１、U生成部３５、及びトータルバリエーションフィルタ３７等は、点広がり関数Hk-1が更新された場合、更新により得られた最新の点広がり関数Hkを用いて、Richardson-Lucy法によるストラクチャUkの更新を行う。
【００７１】
Richardson-Lucy法では、ストラクチャUkの更新により得られたストラクチャUk+1について、増幅されたノイズや発生したリンギングを、トータルバリエーションフィルタ３７による、ストラクチャ成分（structure）とテクスチャ成分(texture)との分離により落とすので、ノイズとリンギングを大幅に抑制することができる。
【００７２】
ここで、ストラクチャ成分とは、画像の平坦部とエッジ等の大振幅の成分、すなわち、骨格となる成分を表している。また、テクスチャ成分とは、細かい模様等の小振幅の成分を表している。
【００７３】
さらに、トータルバリエーションフィルタ３７については、「Structure-Texture Image Decomposition Modeling,Algorithms, and Parameter Selection(Jean-Fran_cois Aujol)」に詳細に記載されている。
【００７４】
なお、トータルバリエーションフィルタ３７には、ストラクチャ成分とテクスチャ成分との境界を示すフィルタ閾値がパラメータのひとつとして設定され、そのパラメータを調整することにより、出力されるストラクチャ成分(structure)に、より多くのディテイル（detail）を含ませることが可能である。
【００７５】
しかし、ストラクチャUkと、後述する点広がり関数Hkとを、交互に反復的に更新する反復更新処理（図１０において後述）の初期段階では、点広がり関数Hkが充分に更新されていないため、点広がり関数Hkには多くの誤差を含むことがある。
【００７６】
したがって、誤差を多く含む点広がり関数Hkを用いてストラクチャUkの更新を行うと、更新により得られるストラクチャUk+1には、点広がり関数Hkに含まれる誤差に応じたリンギング等が発生してしまう。
【００７７】
同様に、ストラクチャUkについても、点広がり関数Hk-1に含まれる誤差に応じたリンギング等が発生している。
【００７８】
そして、リンギング等が発生したストラクチャUkを用いて更新される点広がり関数Hkについても同様に、悪影響を及ぼしてしまう。
【００７９】
そこで、点広がり関数Hkが充分に更新されていない間は、トータルバリエーションフィルタ３７に設定されるフィルタ閾値を高く設定しておき、より強力に、リンギングとノイズを落とし、更新されるストラクチャUが、リンギング等の発生により劣化しないようにすることが可能である。
【００８０】
そして、ある程度、点広がり関数Hkが更新されて、より真の点広がり関数に近づくと、トータルバリエーションフィルタ３７に設定されるフィルタ閾値を低く設定して、ディテイルの復元をより真の点広がり関数Hkで行うようにする。
【００８１】
すなわち、点広がり関数Hkが充分に更新されていない間は、トータルバリエーションフィルタ３７から出力されるストラクチャUkを構成する画素のうち、隣接する画素どうしの輝度の差分絶対値和を表すトータルバリエーション（total variation）が小さくなるようにフィルタ閾値を高く設定する。
【００８２】
また、ある程度、点広がり関数Hkが更新されて、より真の点広がり関数に近づくと、トータルバリエーションフィルタ３７から出力されるストラクチャUkのトータルバリエーションがこれ以上小さくならないようにフィルタ閾値を低く設定する。
【００８３】
これにより、トータルバリエーションフィルタ３７では、ストラクチャUkに含まれるエッジを残しつつ、ストラクチャUkを平滑化することにより、ストラクチャUに含まれるリンギングとノイズを落とすことが可能となる。
【００８４】
なお、第１の実施の形態では、点広がり関数Hkの更新の程度に拘わらず、トータルバリエーションフィルタ３７は、フィルタ閾値を充分低くした状態で、ストラクチャUkについて増幅されたノイズや発生したリンギングを、トータルバリエーションフィルタ３７による、ストラクチャ成分とテクスチャ成分との分離により落とすように構成されているものとする。
【００８５】
H生成部２６乃至残差生成部２９、corr部３１、及びU生成部３５等は、ストラクチャUkの初期値U_initを用いて、最急降下法（landweber法）による点広がり関数Hkの更新を行う。
【００８６】
また、H生成部２６乃至残差生成部２９、corr部３１、及びU生成部３５等は、ストラクチャUk-1が更新された場合、更新により得られた最新のストラクチャUkを用いて、最急降下法（landweber法）による点広がり関数Hkの更新を行う。
【００８７】
以下、ストラクチャUkとして、ブレ画像を構成する複数のブロックのうちの所定のブロックgのストラクチャfk（更新により得られた最新のストラクチャ）を用いて、最急降下法による点広がり関数Hkの更新として、所定のブロックgの点広がり関数hkを更新する処理を説明する。
【００８８】
ここで、現時点のストラクチャfkをfとし、現時点の点広がり関数hkをhとすると、コスト関数は、次式（１）により与えられる。
【００８９】
【数１】
2010079875.tif 000003
【００９０】
なお、式（１）において、||・||はノルムを表しており、*は乗算を表している。
【００９１】
現時点のストラクチャfを固定した場合、式（１）のe2を最小にすることを目的として、次式（２）のように、式（１）を変数h(点広がり関数h)により偏微分して、降下方向を求める。
【００９２】
【数２】
2010079875.tif 000004
【００９３】
現時点での点広がり関数hを、式（２）により求めた降下方向に沿って検索していくと、式（２）の最小値が存在する。現在の点広がり関数hに対して、次式（３）のように、式（２）により求めた降下方向に、ステップサイズλだけ進めさせると、更新された点広がり関数hを求めることができる。
【００９４】
【数３】
2010079875.tif 000005
【００９５】
なお、式（２）及び式（３）において、白丸（。）は相関演算子を表しており、バツ印（×）を白丸（○）で囲んだ記号は、畳み込み演算を表している。
【００９６】
また、式（３）において、点広がり関数hk+1は、更新後の点広がり関数を表しており、点広がり関数hkは、現時点での点広がり関数h（更新前の点広がり関数）を表している。さらに、ストラクチャfkは、現時点でのストラクチャfを表している。
【００９７】
しかし、点広がり関数hk+1は、ブレ画像を構成する複数のブロックそれぞれの点広がり関数hk+1(i)において、Σii=1h(i)=1となるように強制されるため、H生成部２６乃至残差生成部２９、corr部３１、及びU生成部３５等により形成されるループで正規化される。したがって、点広がり関数hkの更新分△hkが、点広がり関数hkと同じ符号になったとき、正規化の結果、点広がり関数hk+1は更新前の値hkに戻ってしまう。
【００９８】
式（３）に、Σii=1h(i)=1の拘束を加えて、Lagrange(ラグランジュ)の未定乗数法を適用すると、次式（４）が導出される。
【００９９】
【数４】
2010079875.tif 000006
【０１００】
なお、式（４）において、mean(h)とは、hkの平均値を示している。mean(h)は、減算部３３により減算される。
【０１０１】
また、丸め誤差により、点広がり関数hkを更新しているうちに、重心が画面中心から外れてしまうことがあるため、不正確な残差eが得られてしまい、ストラクチャfkの更新（復元)に悪影響を及ぼしてしまう。したがって、重心補正部２５は、１画素（pix）以下のバイリニア補間で、更新後の点広がり関数hk+△hk（=hk+1）の重心が画面中心にくるように、平行移動を行っている。
【０１０２】
情報処理装置１は、上述したように、ブレ画像を構成するブロックから、ブレを除去したブロックを表すものとして、更新後のストラクチャUkを算出する。そして、情報処理装置１は、算出したストラクチャUkそれぞれを、１枚の画像となるように構成することにより、ブレが除去された原画像を取得する。
【０１０３】
次に、図２を参照して、H_init生成部２１が行う初期推定PSFの推定方法の概要を説明する。
【０１０４】
ブレ画像は、ブレが生じていない原画像（ブレ画像に対応する原画像）とPSFとの畳み込みによりモデル化することができる。
【０１０５】
直線PSFのスペクトラムが、ブレの長さを周期的に零点に落ち込む特徴を持ち、原画像とPSFの畳み込みにより、ブレ画像のスペクトルもブレの長さを周期に零点に落ち込む。
【０１０６】
その零点に落ち込む間隔と方向を求めることにより、PSFの直線ブレの長さと方向を近似することができる。そこで、ブレ画像をFFT(Fast Fourier Transform、高速フーリエ変換)してブレ画像のスペクトラムを算出し、算出したスペクトラムのLog（自然対数）をとることにより、原画像のスペクトラムと、PSFのスペクトラム（MTF）の和に変換する。
【０１０７】
ここで必要な情報はMTFのみなので、ブレ画像のスペクトラムに対して多くのパッチを足し合わせて平均化することにより、原画像のスペクトルの特徴が失われて、MTFの特徴のみを表すことが可能となる。
【０１０８】
次に、図３乃至図６を参照して、初期推定PSFの具体的な推定方法を説明する。
【０１０９】
図３は、ブレ画像についてケプストラムを生成する生成方法を示している。
【０１１０】
H_init生成部２１は、入力されるブレ画像を、複数のブロックに分割し、分割した各ブロック毎に、FFT(Fast Fourier Transform、高速フーリエ変換)を行い、各ブロックそれぞれに対応するスペクトルを算出する。
【０１１１】
すなわち、例えば、H_init生成部２１は、ブレ画像を分割して得られるブロックを構成する画素のY成分、R成分、G成分、B成分、及びR+G+B成分のうちのいずれかに、FFTを行い、対応するスペクトルを算出する。
【０１１２】
また、H_init生成部２１は、各ブロックそれぞれに対応するスペクトルの２乗和について自然対数をとり、JPEG圧縮時に生じた歪みを除去するJPEG除去フィルタにより、歪みを除去する。これは、JPEG圧縮時に生じた歪みにより、スペクトル精度に影響を及ぼしてしまうことを防止することによる。
【０１１３】
さらに、H_init生成部２１は、JPEG除去フィルタによる歪み除去後の、各ブロックgそれぞれに対応するスペクトルgsの２乗和の自然対数logΣ|gs|2に対して、ブレによる周期的な落ち込みを際立たせるために、HPF（high pass filter）によるフィルタリング処理を行い、ブレによるなだらかな変化を低減させる。
【０１１４】
H_init生成部２１は、移動平均で差し引いた残差成分、すなわち、HPFによるフィルタリング処理が行われた後の、スペクトルの２乗和の自然対数logΣ|gs|2に対して、IFFT(Inverse Fast Fourier Transform、逆高速フーリエ変換)を行い、一種のケプストラムを生成する。
【０１１５】
より具体的には、H_init生成部２１は、HPFによるフィルタリング処理が行われた後の、スペクトルの２乗和の自然対数logΣ|gs|2において、正負の符号を逆転させる。そして、H_init生成部２１は、正負の符号が逆転されたlogΣ|gs|2のうち、負の符号を有する部分を破棄し、正の符号を有する部分のみに基づいて、一種のケプストラムを生成する。
【０１１６】
そして、H_init生成部２１は、生成したケプストラムに対して、輝点の最大値を算出する。
【０１１７】
すなわち、H_init生成部２１は、生成したケプストラムのうち、最大の値を有するケプストラムを、輝点の最大値として算出する。
【０１１８】
次に、図４は、生成したケプストラムに対して、輝点の最大値を算出する算出方法を示している。
【０１１９】
H_init生成部２１は、図４Aに示すように、周りの画素と比較して、輝度が大きい複数の画素の塊に強く反応するスポットフィルタによるフィルタリング処理を、生成したケプストラムに対して行う。
【０１２０】
また、H_init生成部２１は、図４Bに示すように、図４Aに示したスポットフィルタによるフィルタリング処理後のケプストラムから、最大値を含む一山を、スポットとして取り出す。
【０１２１】
さらに、H_init生成部２１は、図４Cに示すように、スポット位置を決定する。なお、スポット位置とは、最大値を含む一山を構成する複数のケプストラムからなるスポットの重心位置を表す。
【０１２２】
次に、図５は、初期推定PSFの推定が成功したか否かを判定する判定方法を説明する。なお、初期推定PSFの推定方法については、後述する図６を参照して説明する。
【０１２３】
輝点は原点対称なので、原点対称位置にもうひとつの特徴点が存在する。すなわち、特徴点として、原点を対称とする２つのスポットが存在する。
【０１２４】
この２つのスポットに接する最小正方形範囲内で閾値を超えたものが存在する場合、すなわち、最小正方形範囲内で、閾値を超える値を有するケプストラムが存在する場合、H_init生成部２１は、初期推定PSFの初期推定が失敗したと判定する。
【０１２５】
この場合、H_init生成部２１は、初期推定した初期推定PSFを、ブレの分布がガウス分布（正規分布）に従うPSFに近似し、その結果得られるPSFを、初期値H_initに設定する。
【０１２６】
また、２つのスポットに接する最小正方形範囲内で閾値を超えたものが存在しない場合、すなわち、最小正方形範囲内で、閾値を超える値を有するケプストラムが存在しない場合、H_init生成部２１は、初期推定PSFの初期推定が成功したと判定し、初期推定PSFを初期値H_initに設定する。
【０１２７】
次に、図６は、２つのスポットに基づいて、初期推定PSFを推定（生成）する推定方法を示している。
【０１２８】
２つのスポットに接する最小正方形範囲内で閾値を超えたものが存在しない場合、H_init生成部２１は、図６に示すように、スポット位置を原点対称に結ぶ直線を、初期推定PSFとして生成し、初期値H_initに設定する。
【０１２９】
次に、図７を参照して、U_init生成部３４が行う、ストラクチャUkの初期値U_initの生成方法を説明する。
【０１３０】
U_init生成部３４は、入力されるブレ画像を、初期推定PSFのサイズで縮小することにより縮小画像を生成し、生成した縮小画像を、初期推定PSFのサイズで拡大することにより拡大画像を生成する。そして、生成した拡大画像を、ストラクチャ成分とテクスチャ成分に分離し、分離により得られたストラクチャ成分を、ストラクチャUの初期値U_initとして、U生成部３５に供給する。
【０１３１】
すなわち、例えば、U_init生成部３４は、入力されるブレ画像を構成するブロックを、H_init生成部２１から供給される、ブロックの初期推定PSFを１点に縮小する縮小サイズと同一の縮小サイズで縮小することにより、ブロックに生じているブレが除去（低減）された縮小ブロックを生成する。
【０１３２】
そして、U_init生成部３４は、生成した縮小ブロックを、１点に縮小された初期推定PSFを、元の初期推定PSFに拡大する拡大サイズと同一の拡大サイズで拡大することにより、拡大によるボケが生じているが、ブレは生じていない拡大ブロックを生成する。
【０１３３】
U_init生成部３４は、生成した拡大ブロックを、初期値U_init（ストラクチャU0）として、U生成部３５に供給する。
【０１３４】
次に、図８を参照して、重心補正部２５が行う、重心を補正する補正方法を説明する。
【０１３５】
図８は、バイリニア補間による補間方法を示している。
【０１３６】
上述したように、H生成部２６乃至残差生成部２９、corr部３１、及びU生成部３５等が、点広がり関数Hkを更新しているうちに、丸め誤差により、重心が画面中心から外れてしまうことがあるため、重心補正部２５は、図８に示すように、バイリニア補間により、点広がり関数Hk+△Hkの重心が画面中心にくるように平行移動を行う。
【０１３７】
次に、図９を参照して、サポート制限部２２が行うサポート制限処理を説明する。
【０１３８】
H生成部２６乃至残差生成部２９、corr部３１、及びU生成部３５等が、点広がり関数Hkを更新するときに、更新分の△Hkの自由度が高く、図９Aに示すように、真のPSF(点広がり関数)から離れた場所に、更新後の点広がり関数Hk+△Hkが表すブレが正確に反映されていない偽画素が現れる。そこで、サポート制限部２２は、図９Bに示すように、初期推定PSFの近傍だけ更新を許可し、初期推定PSFの近傍以外の領域では、更新分△Hkに画素が存在しても、マスクすることで、初期推定PSFの近傍だけを更新させるように、サポート(support)制限を加えることとしている。
【０１３９】
ところで、点広がり関数Hkの更新ループにおいて、ストラクチャUkの更新分△Ukは徐々に小さくなり、ある程度小さくなると、残差Ek=G-Hk*(Uk+△Uk)が飽和してしまい（残差Eが殆ど変化しなくなってしまい）、点広がり関数Hkの更新が停止する。したがって、トータルバリエーションフィルタ３７に設定されたフィルタ閾値を調整することにより、意図的に残差Ekを下げて（小さくして）、それをトリガにして、点広がり関数Hkの更新も再開させる。
【０１４０】
また、トータルバリエーションフィルタ３７において、最終出力がされた場合には、フィルタ閾値を低くする（逓減させる）ことで、ストラクチャ出力によるディテイル不足を克服することが可能となる。
【０１４１】
点広がり関数Hkの更新時に使用するストラクチャUkの情報は、輝度Y（R成分、G成分、及びB成分それぞれに対する重み付けによる乗算で得られる乗算結果の総和を表すY成分）の他に、R/G/B３チャンネルの和（R成分、G成分、及びB成分の総和）を使用することもできる。輝度Yだけで更新するときとの違いは、R/Bチャンネルだけブレが反映されるエッジが存在するようなブレ画像に対しても、Gチャンネルと同様に大きなフィードバックが得られることである。
【０１４２】
また、点広がり関数Hkの更新時に使用するストラクチャUkの情報は、R成分、G成分、及びB成分を使用することができる。
【０１４３】
次に、図１０のフローチャートを参照して、情報処理装置１が行う反復更新処理を説明する。
【０１４４】
なお、反復更新処理においては、点広がり関数HkとストラクチャUkとを別々に更新していくのではなく、点広がり関数Hk及びストラクチャUkを、互いの初期値に基づいて、交互に更新していくアルゴリズムである。
【０１４５】
ステップＳ３１及びステップＳ３２において、初期値H_init，初期値U_initの初期推定、及び、各パラメータ、グローバル変数等の初期化を行う。
【０１４６】
すなわち、例えば、ステップＳ３１において、H_init生成部２１は、入力されたブレ画像Gから、ケプストラム上で特徴点を検出し、PSFの直線推定を行い、その直線推定により得られた初期推定PSFを、点広がり関数Hの初期値H_initに設定して、サポート制限部２２、及びH生成部２６に供給する。
【０１４７】
ステップＳ３２において、U_init生成部３４は、H_init生成部２１により設定された初期値H_init(=初期推定PSF)を用いて、入力されるブレ画像を、初期推定PSFサイズで縮小し、畳み込んだPSFを１点に戻すことにより、ブレ画像のブレが除去された画像であって、縮小された画像を生成する。
【０１４８】
また、U_init生成部３４は、縮小された画像を、初期推定PSFサイズで拡大することにより、補間によりボケた画像であって、ブレが除去された画像を生成し、ストラクチャUkの初期値U_initに設定して、U生成部３５に供給する。
【０１４９】
すなわち、例えば、U_init生成部３４は、入力されるブレ画像を構成するブロックを、H_init生成部２１から供給される、ブロックの初期推定PSFを１点に縮小する縮小サイズと同一の縮小サイズで縮小することにより、ブロックに生じているブレが除去（低減）された縮小ブロックを生成する。
【０１５０】
そして、U_init生成部３４は、生成した縮小ブロックを、１点に縮小された初期推定PSFを、元の初期推定PSFに拡大する拡大サイズと同一の拡大サイズで拡大することにより、拡大によるボケが生じているが、ブレは生じていない拡大ブロックを生成する。
【０１５１】
U_init生成部３４は、生成した拡大ブロックを、初期値U_init（ストラクチャU0）として、U生成部３５に供給する。
【０１５２】
ストラクチャUk及び点広がり関数Hkの両方とも正確にわかっていない状況の中で、ステップＳ３３において、ストラクチャUkは、最新の点広がり関数Hkの情報を用いて更新され、ステップＳ３４において、点広がり関数Hkは、最新のストラクチャUkの情報を用いて更新される。
【０１５３】
この繰り返しにより、ストラクチャUkと点広がり関数Hkとを交互に更新していくと、ストラクチャUkは、より真のストラクチャUへ、点広がり関数Hkは、より真の点広がり関数Hへと収束していく。
【０１５４】
すなわち、ステップＳ３３において、conv部２７乃至corr部３１、U生成部３５、及びトータルバリエーションフィルタ３７等は、点広がり関数Hkの初期値H_init（=初期推定PSF）を用いて、従来のRichardson-Lucy法によるストラクチャU0の更新を行う。
【０１５５】
ステップＳ３３において、conv部２７は、H生成部２６からの点広がり関数Hkの初期値H_initである点広がり関数H0と、U生成部３５からのストラクチャU0との畳み込み演算を行い、その演算結果H0○U0を、処理部２８に供給する。
【０１５６】
処理部２８は、入力されるブレ画像Gから、conv部２７からの演算結果H0○U0を減算し、その減算結果G-H0○U0を、残差生成部２９に供給する。
【０１５７】
残差生成部２９は、処理部２８からの減算結果G-H0○U0を、corr部３０及びcorr部３１に供給する。
【０１５８】
corr部３０は、残差生成部２９からの減算結果G-H0○U0と、H生成部２６からの点広がり関数H0との相関演算を行い、その演算結果H0o(G-H0○U0)を、乗算部３６に供給する。
【０１５９】
乗算部３６は、corr部３０からの演算結果H0o(G-H0○U0)に、U生成部３５からのストラクチャU0を乗算し、その乗算結果U0{H0o(G-H0○U0)}を、更新後のストラクチャとして、トータルバリエーションフィルタ３７に供給する。
【０１６０】
トータルバリエーションフィルタ３７は、乗算部３６からの乗算結果U0{H0o(G-H0○U0)}に対して、増幅されたノイズや発生したリンギングを抑制する処理を行う。
【０１６１】
そして、トータルバリエーションフィルタ３７は、その処理により得られた、乗算結果U0{H0o(G-H0○U0)}のストラクチャ成分及びテクスチャ成分のうち、ストラクチャ成分を、U生成部３５に供給する。
【０１６２】
U生成部３５は、トータルバリエーションフィルタ３７から供給されるストラクチャ成分を、次のストラクチャの更新対象であるストラクチャU1として取得する。
【０１６３】
そして、U生成部３５は、取得したストラクチャU1をさらに更新するために、ストラクチャU1を、conv部２７、corr部３１、及び乗算部３６に供給する。
【０１６４】
ステップＳ３４において、H生成部２６乃至残差生成部２９、corr部３１、及びU生成部３５等は、最急降下法により、ストラクチャUkの初期値U_initを用いて、点広がり関数H0の更新を行う。
【０１６５】
なお、上述したステップＳ３３において、残差生成部２９は、処理部２８からの減算結果G-H0○U0を、corr部３０の他、corr部３１に供給している。
【０１６６】
ステップＳ３４では、corr部３１は、残差生成部２９からの減算結果G-H0○U0と、U生成部３５からのストラクチャU0との相関演算を行い、その演算結果U0o(G-H0○U0)を、減算部３３に供給する。
【０１６７】
また、corr部３１は、H生成部２６から、conv部２７、処理部２８、及び残差生成部２９を介して供給された点広がり関数H0を、平均化部３２に供給する。
【０１６８】
平均化部３２は、corr部３１からの点広がり関数H0の平均値mean(H0)を算出し、減算部３３に供給する。
【０１６９】
減算部３３は、corr部３１から供給される演算結果U0o(G-H0○U0)から、平均化部３２からのmean(H0)を減算し、その結果得られる減算結果U0o(G-H0○U0)-mean(H0)を、乗算部２３に供給する。
【０１７０】
乗算部２３は、サポート制限部２２からのサポート制限情報に基づいて、減算部３３からの減算結果U0o(G-H0○U0)-mean(H0)のうち、初期推定PSFの周辺に存在する減算結果に対応するもののみを抽出し、加算部２４に供給する。
【０１７１】
加算部２４は、乗算部２３からの値Uko(G-Hk○Uk)-mean(Hk)のうち、値Uko(G-Hk○Uk)に、未定乗数λを乗算する。そして、加算部２４は、その結果得られる値λUko(G-Hk○Uk)-mean(Hk)に、H生成部２６からの点広がり関数Hkを加算し、その結果得られる値Hk+λUko(G-Hk○Uk)-mean(Hk)に対して、Lagrangeの未定乗数法を適用し、未定乗数λの解として値aを算出する。
【０１７２】
加算部２４は、Lagrangeの未定乗数法により算出された値aを、値Hk+λUko(G-Hk○Uk)-mean(Hk)に代入し、その結果得られる値Hk+aUko(G-Hk○Uk)-mean(Hk)を、重心補正部２５に供給する。
【０１７３】
これにより、重心補正部２５には、ブレ画像を構成する複数のブロック毎に得られたH0+aU0o(G-H0○U0)-mean(H0)=H0+ΔH0が供給される。
【０１７４】
重心補正部２５は、点広がり関数H0+△H0の重心を、バイリニア補間により、画面の中心（点広がり関数の初期値H_initの重心）に移動させ、重心を移動させた点広がり関数H0+△H0を、H生成部２６に供給する。
【０１７５】
H生成部２６は、重心補正部２５からの点広がり関数H0+△H0を、更新後の点広がり関数H1として取得する。
【０１７６】
そして、H生成部２６は、取得した点広がり関数H1をさらに更新するために、点広がり関数H1を、加算部２４、conv部２７、及びcorr部３０に供給する。
【０１７７】
ステップＳ３５において、反復更新処理は終了するか否かを判定する。すなわち、例えば、更新後のストラクチャUk（又は点広がり関数Hkの少なくとも一方）は収束したか否かを判定する。そして、更新後のストラクチャUkが収束していないと判定された場合、処理はステップＳ３３に戻る。
【０１７８】
なお、更新後のストラクチャUkが収束したか否かは、例えば、処理部２９により、ブレ画像を構成する複数のブロックそれぞれに対応する値G-Hk○Uk（=Ek）の２乗和Σ|Ek|2が、所定の値未満であるか否かに基づいて判定される。
【０１７９】
また、トータルバリエーションフィルタ３７が、乗算部３６からのストラクチャUkを構成する画素のうち、隣接画素どうしの輝度の差分絶対値和を表すトータルバリエーションが、増加から減少に転じたか否かに基づいて判定するようにしてもよい。
【０１８０】
ステップＳ３３では、前回のステップＳ３４の処理による更新後の点広がり関数Hk（例えば、H1）を用いて、前回のステップＳ３３の処理による更新後のストラクチャUk（例えば、U1）の更新を、従来のRichardson-Lucy法により行う。
【０１８１】
すなわち、ステップＳ３３では、conv部２７乃至corr部３１、U生成部３５、及びトータルバリエーションフィルタ３７等は、前回のステップＳ３４の処理による更新後の点広がり関数Hk（例えば、H1）を用いて、従来のRichardson-Lucy法によるストラクチャUk（例えば、U1）の更新を行う。
【０１８２】
ステップＳ３３の処理の終了後、ステップＳ３４では、前回のステップＳ３３の処理による更新後のストラクチャUk（例えば、U1）を用いて、前回のステップＳ３４の処理による更新後の点広がり関数Hk（例えば、H1）の更新を、最急降下法により行う。
【０１８３】
すなわち、ステップＳ３４では、H生成部２６乃至残差生成部２９、corr部３１、及びU生成部３５等は、最急降下法により、前回のステップＳ３３の処理による更新後のストラクチャUk（例えば、U1）を用いて、点広がり関数Hk（例えば、H1）の更新を行う。
【０１８４】
処理は、ステップＳ３４からステップＳ３５に進み、以下、同様の処理が繰り返される。
【０１８５】
なお、ステップＳ３５において、更新されたストラクチャUkが収束していると判定された場合、反復更新処理は終了される。
【０１８６】
以上説明したように、反復更新処理では、ストラクチャUkと点広がり関数Hkの更新を反復して行うことにより、ストラクチャUkを真のストラクチャUに収束させる（及び点広がり関数Hkを真の点広がり関数Hに収束させる）こととしたので、最終的に得られるストラクチャUkに発生するリンギングやノイズを抑制することが可能となる。
【０１８７】
また、初期値H_initとして得られるPSF（=点広がり関数H0）が不正確な状態からでも、正確なPSF、すなわち、真のPSF又は真のPSFに近いPSFを求めることが可能となる。
【０１８８】
さらに、PSFのサポート制限により、初期値H_init(=初期推定PSF)が初期推定の方向に沿って更新されるため、発散することなく、真のPSF又は真のPSFに近いPSFを求めることが可能となる。
【０１８９】
なお、反復更新処理では、例えば、ステップＳ３１において、初期値H_init（=点広がり関数H0）の推定（生成）に成功した場合には、ステップＳ３３において、初期値H_initでストラクチャU0の更新を行い、ステップＳ３１において、初期値H_initの推定に失敗した場合、ステップＳ３３において、PSFをガウシアン（ガウス分布）により近似し、近似したPSFを初期値H_initとして、ストラクチャU0の更新を行うようにすることが可能である。この場合、初期値H_init(=初期推定PSF)のズレによるストラクチャU0の劣化を防止することができる。
【０１９０】
また、ステップＳ３３では、conv部２７乃至corr部３１、U生成部３５、及びトータルバリエーションフィルタ３７等が、従来のRichardson-Lucy法によるストラクチャUkの更新を行うこととしたが、Richardson-Lucy法による処理を高速化した従来のR-L高速アルゴリズムを用いることとすれば、より迅速に、ストラクチャUkを、真のストラクチャに更新することが可能となる。
【０１９１】
さらに、図１０の反復更新処理において、ステップＳ３５では、更新後のストラクチャUkが収束したか否かに応じて、反復更新処理を終了するか否かを判定することとしたが、これに限定されない。
【０１９２】
すなわち、例えば、ステップＳ３５では、ストラクチャUk及び点広がり関数Hkを所定の回数だけ更新したか否かを判定し、所定の回数だけ更新したと判定された場合に、反復更新処理を終了させるようにしてもよい。なお、所定の回数としては、例えば、精度が低いPSFでもリンギングが発生しない程度の回数か、トータルバリエーションフィルタ３７により僅かに発生したリンギングを取り消すことが出来る程度の回数であることが望ましい。
【０１９３】
ところで、本発明の第１の実施の形態では、トータルバリエーションフィルタ３７のフィルタ閾値を充分低くした状態で得られるストラクチャUkを最終出力としたが、ブレ画像と更新済みのストラクチャUkを用いて、従来のresidual deconvolutionによる方法を行うことも可能である。
【０１９４】
図１１は、ブレ画像と更新済みのストラクチャUkを用いて、従来のresidual deconvolutionによる方法を行う情報処理装置６１の構成例を示している。
【０１９５】
この情報処理装置６１は、conv部９１、減算部９２、加算部９３、R-Ldeconv部９４、減算部９５、加算部９６、オフセット(offset)部９７、及びゲインマップ（Gain Map）９８により構成される。
【０１９６】
conv部９１には、更新済みのHkと更新済みのUkとが供給される。Conv部９１は、更新済みのHkと、更新済みのUkとの畳込み演算を行い、その結果得られる値Hk○Ukを、減算部９２に供給する。
【０１９７】
減算部９２には、ブレ画像Gが供給される。減算部９２は、供給されるブレ画像Gから、conv部９１からの値Hk○Ukを減算し、その減算結果G-Hk○Ukを、残差成分（residual）として、加算部９３に供給する。
【０１９８】
加算部９３は、減算部９２からの残差成分G-Hk○Ukを正の値にするために、残差成分G-Hk○Ukに、オフセット部９７からのオフセット値とを加算し、その加算結果を、R-Ldeconv部９４に供給する。なお、加算部９３において、残差成分G-Hk○Ukにオフセット値を加算して正の値にするのは、R-Ldeconv部９４による処理において、正の値を対象としていることによる。
【０１９９】
R-Ldeconv部９４は、ゲインマップ（Gain Map）部９８に保持されているゲインマップ、及び更新済みのHkに基づいて、加算部９３からの加算結果に対して、非特許文献１に記載されたresidual deconvolutionを行う。これにより、オフセット値が加算された残差成分のリンギングが抑制される。
【０２００】
減算部９５は、R-Ldeconv部９４からの処理結果から、加算部９３で加算したものと同一のオフセット値を減算し、リンギングが抑制された残差成分、すなわち、ブレ画像のテクスチャを復元した復元結果を取得する。そして、減算部９５は、取得したテクスチャの復元結果を、加算部９６に供給する。
【０２０１】
加算部９６には、更新済みのストラクチャUkが供給される。加算部９６は、減算部９５からの、テクスチャの復元結果と、供給される更新済みのストラクチャUkとを加算し、その結果得られる、ブレ画像からブレを除去した復元画像を出力する。
【０２０２】
すなわち、例えば、加算部９６は、ブレ画像を構成するブロックに対応する、テクスチャの復元結果と更新済みのストラクチャUkとを加算し、その加算結果として、ブレ画像を構成するブロックから、ブレを除去した復元ブロックを取得する。そして、加算部９６は、ブレ画像を構成するブロックそれぞれに対応する復元ブロックを取得し、取得した復元ブロックそれぞれをつなぎ合わせることにより、復元画像を生成して出力する。
【０２０３】
オフセット部９７は、残差成分G-Hk○Ukを正の数にするために加算されるオフセット値を予め保持している。オフセット部９７は、予め保持しているオフセット値を、加算部９３及び減算部９５に供給する。
【０２０４】
ゲインマップ部９８は、残差成分G-Hk○Ukのゲインを調整するために用いられるゲインマップを予め保持している。
【０２０５】
図１１に示すように、更新済みの点広がり関数PSF（点広がり関数Hk）で更新済みのストラクチャUkにブレを生じさせ、ブレ画像Gとの残差成分（residual成分）G-Hk○Ukに対して、deconvolution(R-Ldeconv部９４による処理)を行い、その結果得られるもの（ブレ画像のテクスチャを復元した復元結果）を、更新済みのストラクチャUkに加算することで、残差のディテイル情報が復元されて、きめ細かい復元結果が得られる。
【０２０６】
なお、本発明の第１の実施の形態では、RGB空間（R成分、G成分、及びB成分により表される画素により構成されるブレ画像）について反復更新処理を行うこととしたが、YUV空間等のほかの色空間について、同様の反復更新処理を行うことが可能である。
【０２０７】
次に、図１２は、YUV空間について反復更新処理を行うことを説明する図である。
【０２０８】
図１２に示すように、YUV空間において、Yだけ反復更新処理（GSDM,Gradual Structure Deconvolution Method）を適用して正確なPSFを算出した後に、算出した正確なPSFを用いたRichardson-Lucy法等による処理を、リンギングが発生しない程度にU/V成分に対して行ったものを、Yに足し合わせるようにしてもよい。
【０２０９】
なお、上述した第１の実施の形態では、最急降下法を用いて、点広がり関数Hkを更新するとともに、Richardson-Lucy法を用いて、ストラクチャUkを更新するようにしたが、その他、例えば、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新するようにしてもよい。
【０２１０】
次に、図１３を参照して、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新する情報処理装置１２１について説明する。
【０２１１】
図１３は、本発明の第２の実施の形態である情報処理装置１２１を示している。
【０２１２】
なお、この情報処理装置１２１において、図１に示された第１の実施の形態である情報処理装置１の構成要素のうち、共通するものについては同一の符号を付しているので、その説明は適宜省略する。
【０２１３】
すなわち、情報処理装置１２１において、加算部２４に代えて乗算部１５１が、乗算部３６に代えて加算部１５２が、乗算部２３、平均化部３２、及び減算部３３に代えて乗算部１５３が、それぞれ設けられている他は、情報処理装置１と同様に構成されている。
【０２１４】
乗算部１５１には、乗算部１５３から、初期推定PSFの周辺の領域に対応する演算結果Uko(G-Hk○Uk)が、H生成部２６から、点広がり関数Hkが、それぞれ供給される。
【０２１５】
乗算部１５１は、乗算部１５３からの演算結果Uko(G-Hk○Uk)と、H生成部２６からの点広がり関数Hkとを乗算し、その結果得られる点広がり関数Hk+1=HkUko(G-Hk○Uk)を、重心補正部２５に供給する。
【０２１６】
加算部１５２には、corr部３０から、演算結果Hko(G-Hk○Uk)が、U生成部３５からストラクチャUkが、それぞれ供給される。
【０２１７】
加算部１５２は、corr部３０からの演算結果Hko(G-Hk○Uk)に、未定乗数λを乗算し、その結果得られる値λHko(G-Hk○Uk)に、U生成部３５からのストラクチャUkとを加算する。そして、加算部１５２は、その結果得られる加算結果Uk+λHko(G-Hk○Uk)(=Uk+1)について、Lagrangeの未定乗数法により、未定乗数λを算出する。
【０２１８】
加算部１５２は、未定乗数λの解として算出された定数aを、加算結果Uk+λHko(G-Hk○Uk)に代入し、その結果得られるストラクチャUk+1=Uk+aHko(G-Hk○Uk)を、
トータルバリエーションフィルタ３７に供給する。
【０２１９】
乗算部１５３には、corr部３１から、演算結果Uko(G-Hk○Uk)が、サポート制限部２２から、サポート制限情報が、それぞれ供給される。
【０２２０】
乗算部１５３は、サポート制限部２２からのサポート制限情報に基づいて、corr部３１からの演算結果Uko(G-Hk○Uk)のうち、初期推定PSFの周辺の領域に対応する演算結果のみを抽出し、加算部１５１に供給する。
【０２２１】
この情報処理装置１２１においても、第１の実施の形態である情報処理装置１と同様の作用効果を奏することが可能である。
【０２２２】
第２の実施の形態では、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新するようにしたが、Richardson-Lucy法を用いて、点広がり関数Hk及びストラクチャUkを更新するようにしてもよいし、最急降下法を用いて、点広がり関数Hk及びストラクチャUkを更新するようにしてもよい。
【０２２３】
なお、第１及び第２の実施の形態では、ブレ画像を構成する複数のブロックに対して、反復更新処理を行うようにしたが、ブレ画像そのものを１個のブロックとして、反復更新処理を行うことも可能である。
【０２２４】
また、第１及び第２の実施の形態では、上述したように、ブレ画像に対して、反復更新処理を行うことも可能であるが、これに限定されない。すなわち、例えば、ブレ画像を複数のブロックに分割し、ブロック毎に、第１の実施の形態である情報処理装置１、又は第２の実施の形態である情報処理装置１２１を用いて反復更新処理を行い、図１４及び図１５に示すように、反復更新処理後の複数のブロックをつなぎ合わせることにより、復元後の１枚の復元画像を生成する糊代処理を行うようにしてもよい。
【０２２５】
具体的には、第１及び第２の実施の形態では、ブレ画像を複数のブロックに分割し、そのブロック毎に、反復更新処理を行うようにしたが、糊代処理では、分割されたブロックを拡大（拡張）した上で、反復更新処理を行い、反復更新処理後のブロックを、元のブロックのサイズに縮小して得られる複数の縮小ブロックをつなぎ合わせることにより、復元後の１枚の復元画像を生成する。
【０２２６】
図１４及び図１５は、反復更新処理後の複数のブロックをつなぎ合わせることにより、復元後の１枚の復元画像を生成する糊代処理の様子を示している。
【０２２７】
次に、図１４を参照して、ブレ画像を構成する複数のブロックそれぞれに対応するストラクチャUkを生成する処理を説明する。
【０２２８】
図１４に示されるように、ブレ画像を構成する複数のブロック（例えば、図１４に示すG）は、それぞれ、隣接するブロックとの連続性を維持するために、隣接するブロックどうしが、一部分だけ重なり合うサイズとなるように、拡大（拡張）される。これにより、拡大ブロック（例えば、図１４に示す、dummyが付加されたG'）が生成される。
【０２２９】
また、ブレ画像を構成する複数のブロックそれぞれに対応するストラクチャU0（例えば、図１４に示すU）についても、同一のサイズで拡大される。これにより、拡大ストラクチャ（例えば、図１４に示す、dummyが付加されたU'）が生成される。
【０２３０】
そして、拡大ブロック、拡大ストラクチャ、及び拡大ブロックに基づいて生成された点広がり関数H0（例えば、図１４に示すPSF）に基づいて、Richardson-Lucy法により、拡大ストラクチャの更新を行う。
【０２３１】
Richardson-Lucy法による拡大ストラクチャの更新により得られた更新後の拡大ストラクチャ（例えば、図１４に示す、dummyが付加されたupdated U）を、元のストラクチャU0のサイズに縮小する。
【０２３２】
これにより、ブレ画像を構成する複数のブロックそれぞれに対応するストラクチャとして、隣接するブロックとの連続性が維持されたストラクチャ（例えば、図１４に示すupdated U）を取得し、図１５に示されるように、取得したストラクチャを、それぞれつなぎ合わせることにより、ブレが低減（除去）された復元画像を取得することができる。
【０２３３】
また、１個の拡大ブロックにおいて、点広がり関数Hkの更新を行い、最終的に得られる点広がり関数を、他の拡大ブロックの点広がり関数として用いて、他の拡大ブロックに対応するストラクチャUkを更新するようにしてもよい。
【０２３４】
この場合、他の拡大ブロックでは、点広がり関数Hkの更新を行う必要がなく、ストラクチャUkの更新のみを行えばよいこととなる。
【０２３５】
したがって、拡大ブロック毎に、対応する点広がり関数Hkの更新を行う場合と比較して、拡大ブロックそれぞれの点広がり関数Hを算出するために用いられるメモリ（の記憶容量）を少なくすることができるととも、点広がり関数を更新（算出）するための計算量を少なくすることが可能となる。
【０２３６】
また、第１の実施の形態では、ブレ画像を複数のブロックに分割し、ブロック毎に、点広がり関数Hk及びストラクチャUkを反復して更新するようにしたが、ブレ画像を構成する複数のブロックのうちの所定のブロックについてのみ、点広がり関数Hkの更新を行い、最終的に得られる点広がり関数を、他のブロックの点広がり関数として用いるようにしても、ブロックそれぞれの点広がり関数Hkを算出するために用いられるメモリを少なくすることができるととも、点広がり関数を更新するための計算量を少なくすることが可能となる。
【０２３７】
ところで、反復更新処理では、ブレ画像を対象として処理を行うこととしたが、その他、合焦距離のズレによるピンボケ、面内一様のボケ、カメラレンズによる面内不均一な周辺ボケ等が生じたボケ画像に対しても処理を行うことが可能である。
【０２３８】
また、反復更新処理は、予め記録しておいた、ブレが生じた動画像に対して処理を行うこともできるし、動画像を撮像しているときに生じたブレを検出して、リアルタイムに除去するように処理を行うこともできる。
【０２３９】
図１における第１の実施の形態では、ストラクチャ成分とテクスチャ成分とを分離するために、トータルバリエーションフィルタ３７を用いることとしたが、その他、例えばBilateralフィルタ、εフィルタ等を用いるようにしてもよい。
【０２４０】
第１及び第２の実施の形態では、処理部２８が、ブレ画像Gから、conv部２７からの演算結果Hk○Ukを減算し、その減算結果G-Hk○Ukを、残差生成部２９に供給するようにしたが、その他、ブレ画像Gを、conv部２７からの演算結果Hk○Ukで除算し、その除算結果(Hk○Uk)/Gを、残差生成部２９に供給するよう構成しても、同様の結果を得ることができる。
【０２４１】
上述した反復更新処理では、ステップＳ３３において、点広がり関数Hkを用いて、ストラクチャUkの更新を行うと同時に、ステップＳ３４において、ストラクチャUkを用いて、点広がり関数Hkの更新を行うようにしたが、これに限定されない。
【０２４２】
すなわち、例えば、反復更新処理において、ストラクチャの更新、及び点広がり関数の更新を交互に行うようすることが可能である。
【０２４３】
具体的には、例えば、ステップＳ３３において、点広がり関数Hkを用いて、ストラクチャUkの更新を行い、ステップＳ３４において、その更新により得られたストラクチャUk+1を用いて、点広がり関数Hkを更新するようにしてもよい。さらに、次回のステップＳ３３において、更新により得られた点広がり関数Hk+1を用いて、ストラクチャUk+1を更新し、次回のステップＳ３４において、更新により得られたストラクチャUk+2を用いて、点広がり関数Hk+1を更新するというように、ストラクチャと点広がり関数との更新を、交互に行うようにすることが可能である。
【０２４４】
この場合、例えば、ストラクチャUkを用いて、点広がり関数Hkを更新する場合と比較して、より真のストラクチャに近いストラクチャUk+1を用いて、点広がり関数Hkを更新するため、点広がり関数Hkの更新結果として、より真の点広がり関数に近い点広がり関数Hk+1を取得することが可能となる。
【０２４５】
また、第１の実施の形態である情報処理装置１、及び第２の実施の形態である情報処理装置１２１としては、例えば、画像を再生したり録画したりすることが可能な録画再生装置等に適用できる。
【０２４６】
ところで、上述した一連の処理は、専用のハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、いわゆる組み込み型のコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
【０２４７】
図１６は、上述した一連の処理をプログラムにより実行するコンピュータの構成例を示している。
【０２４８】
CPU（Central Processing Unit）２０１は、ROM（Read Only Memory）２０２、または記憶部２０８に記憶されているプログラムに従って各種の処理を実行する。RAM（Random Access Memory）２０３には、CPU２０１が実行するプログラムやデータなどが適宜記憶される。これらのCPU２０１、ROM２０２、及びRAM２０３は、バス２０４により相互に接続されている。
【０２４９】
CPU２０１にはまた、バス２０４を介して入出力インタフェース２０５が接続されている。入出力インタフェース２０５には、キーボード、マウス、マイクロホンなどよりなる入力部２０６、ディスプレイ、スピーカなどよりなる出力部２０７が接続されている。CPU２０１は、入力部２０６から入力される指令に対応して各種の処理を実行する。そして、CPU２０１は、処理の結果を出力部２０７に出力する。
【０２５０】
入出力インタフェース２０５に接続されている記憶部２０８は、例えばハードディスクからなり、CPU２０１が実行するプログラムや各種のデータを記憶する。通信部２０９は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
【０２５１】
また、通信部２０９を介してプログラムを取得し、記憶部２０８に記憶してもよい。
【０２５２】
入出力インタフェース２０５に接続されているドライブ２１０は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア２１１が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部２０８に転送され、記憶される。
【０２５３】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図１６に示されるように、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む）、光磁気ディスク（ＭＤ（Mini-Disc）を含む）、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア２１１、または、プログラムが一時的もしくは永続的に格納されるROM２０２や、記憶部２０８を構成するハードディスクなどにより構成される。プログラム格納媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部２０９を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【０２５４】
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２５５】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０２５６】
１  情報処理装置，  ２１  H_init生成部，  ２２  サポート制限部，  ２３  乗算部，  ２４  加算部，  ２５  重心補正部，  ２６  H生成部，  ２７  conv部，  ２８  処理部，  ２９  残差生成部，  ３０  corr部，  ３１  corr部，  ３２  平均化部，  ３３  減算部，  ３４  U_init生成部，  ３５  U生成部，  ３６  乗算部，  ３７  トータルバリエーションフィルタ，  ６１  情報処理装置，  ９１  conv部，  ９２  減算部，  ９３  加算部，  ９４  R-Ldeconv部，  ９５  減算部，  ９６  加算部，  ９７  オフセット部，  ９８  ゲインマップ，  １２１  情報処理装置，  １５１  乗算部，  １５２  加算部，  １５３  乗算部
【図１】
2010079875.tif 000007
【図２】
2010079875.tif 000008
【図３】
2010079875.tif 000009
【図４】
2010079875.tif 000010
【図５】
2010079875.tif 000011
【図６】
2010079875.tif 000012
【図７】
2010079875.tif 000013
【図８】
2010079875.tif 000014
【図９】
2010079875.tif 000015
【図１０】
2010079875.tif 000016
【図１１】
2010079875.tif 000017
【図１２】
2010079875.tif 000018
【図１３】
2010079875.tif 000019
【図１４】
2010079875.tif 000020
【図１５】
2010079875.tif 000021
【図１６】
2010079875.tif 000022