JP2011128978A - 情報処理装置、情報処理方法、及びプログラム - Google Patents
情報処理装置、情報処理方法、及びプログラム Download PDFInfo
- Publication number
- JP2011128978A JP2011128978A JP2009288187A JP2009288187A JP2011128978A JP 2011128978 A JP2011128978 A JP 2011128978A JP 2009288187 A JP2009288187 A JP 2009288187A JP 2009288187 A JP2009288187 A JP 2009288187A JP 2011128978 A JP2011128978 A JP 2011128978A
- Authority
- JP
- Japan
- Prior art keywords
- image
- point spread
- spread function
- unit
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 230000010365 information processing Effects 0.000 title claims description 49
- 238000003672 processing method Methods 0.000 title claims description 5
- 238000000034 method Methods 0.000 claims abstract description 124
- 230000008569 process Effects 0.000 claims abstract description 68
- 238000012545 processing Methods 0.000 claims description 54
- 238000012937 correction Methods 0.000 claims description 40
- 238000000926 separation method Methods 0.000 claims description 5
- 230000015556 catabolic process Effects 0.000 abstract 1
- 238000006731 degradation reaction Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 164
- 230000005484 gravity Effects 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 18
- 238000001228 spectrum Methods 0.000 description 14
- 238000002945 steepest descent method Methods 0.000 description 11
- 238000012935 Averaging Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000003252 repetitive effect Effects 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 230000006866 deterioration Effects 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000005304 joining Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003595 spectral effect Effects 0.000 description 2
- 102100037387 Gasdermin-A Human genes 0.000 description 1
- 101001026276 Homo sapiens Gasdermin-A Proteins 0.000 description 1
- 239000000853 adhesive Substances 0.000 description 1
- 230000001070 adhesive effect Effects 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/73—Deblurring; Sharpening
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
【課題】画質の低下を抑制しながら、画像のボケを補正する。
【解決手段】H_init生成部21は、入力画像に生じているボケの程度を表す点広がり関数H0を生成する。U_init生成部34は、オリジナル画像を分割した複数のオリジナルブロックの周囲をそれぞれ拡張した拡張ブロック内の画像のストラクチャ成分のボケを点広がり関数H0に基づいてそれぞれ補正した複数のストラクチャU0を生成する。conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、点広がり関数Hkを用いて、残差Ekが小さくなるように、ストラクチャUkを更新し、更新したストラクチャUkのストラクチャ成分を新たなストラクチャUk+1とする更新処理を1回以上実行する。本発明は、例えば、記録再生装置等に適用できる。
【選択図】図1
【解決手段】H_init生成部21は、入力画像に生じているボケの程度を表す点広がり関数H0を生成する。U_init生成部34は、オリジナル画像を分割した複数のオリジナルブロックの周囲をそれぞれ拡張した拡張ブロック内の画像のストラクチャ成分のボケを点広がり関数H0に基づいてそれぞれ補正した複数のストラクチャU0を生成する。conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、点広がり関数Hkを用いて、残差Ekが小さくなるように、ストラクチャUkを更新し、更新したストラクチャUkのストラクチャ成分を新たなストラクチャUk+1とする更新処理を1回以上実行する。本発明は、例えば、記録再生装置等に適用できる。
【選択図】図1
Description
本発明は、情報処理装置、情報処理方法、及びプログラムに関し、特に、撮像時の手振れによるボケや、合焦距離のズレによる、いわゆるピンボケ等を補正できるようにした情報処理装置、情報処理方法、及びプログラムに関する。
従来、撮像した画像に生じた手振れボケやピンボケ(以下、単にボケともいう)を補正する補正技術が存在する。
例えば、L.B.LucyとWilliam Hardley Richardsonにより提唱されたRichardson-Lucy法がある。しかし、Richardson-Lucy法では、点広がり関数(PSF(Point Spread Function))の周波数軸上で零点に落ち込むスペクトラムを用いて逆問題を解く際に、零点において、ノイズの増幅やリンギングの発生等が見られる。また、点広がり関数が正確に求まらなかった場合には、零点において、ノイズの増幅やリンギングの発生等が、より大きくなってしまう。
そこで、ゲインマップの導入により、点広がり関数が正確にわかる場合に、リンギングを抑制することが可能なresidual deconvolution技術が存在する(例えば、非特許文献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
しかしながら、従来のresidual deconvolution技術では、点広がり関数に誤差が存在する場合には、画像のストラクチャ成分(structure)と残差(residual部分)の復元がうまくいかず、リンギングがより多く発生してしまう。
本発明は、このような状況に鑑みてなされたものであり、リンギング等を抑制し、手振れや合焦距離のズレによるボケを補正できるようにするものである。
本発明の一側面の情報処理装置は、入力画像に生じているボケの程度を表す点広がり関数を生成する第1の生成手段と、前記入力画像を分割した複数の第1のブロックの周囲をそれぞれ拡張した複数の第2のブロック内の画像である複数の入力ブロック画像のストラクチャ成分のボケを前記点広がり関数に基づいてそれぞれ補正した複数の補正ブロック画像を生成する第2の生成手段と、前記点広がり関数を用いて前記補正ブロック画像にボケを生じさせたボケ再現ブロック画像と対応する前記入力ブロック画像との間の残差が小さくなるように前記補正ブロック画像を更新し、更新した前記補正ブロック画像のストラクチャ成分を新たな前記補正ブロック画像とする更新処理を1回以上実行する更新手段とを含む。
前記第2の生成手段には、前記点広がり関数を生成する際に用いる高速フーリエ変換のタップ数に基づいて、前記第2のブロックのサイズを設定させることができる。
前記第2の生成手段には、前記補正ブロック画像のストラクチャ成分とテクスチャ成分を分離する分離フィルタの反復演算回数に基づいて、前記第2のブロックのサイズを設定させることができる。
前記第2の生成手段には、各前記第2のブロックの所定の辺の所定の方向の座標が所定の整数の倍数になるように、前記第2のブロックのサイズおよび位置を設定させることができる。
前記更新手段には、前記ボケ再現ブロック画像と対応する前記入力ブロック画像との間の残差が小さくなるように、さらに前記点広がり関数を更新させることができる。
前記更新処理が終了した後の前記補正ブロック画像をつなぎ合わせることにより前記入力画像のボケを補正した補正画像を生成する第3の生成手段をさらに設けることができる。
本発明の一側面の情報処理方法、または、本発明の一側面のプログラムを実行するコンピュータによる処理は、入力画像に生じているボケの程度を表す点広がり関数を生成し、前記入力画像を分割した複数の第1のブロックの周囲をそれぞれ拡張した複数の第2のブロック内の画像である複数の入力ブロック画像のストラクチャ成分のボケを前記点広がり関数に基づいてそれぞれ補正した複数の補正ブロック画像を生成し、前記点広がり関数を用いて前記補正ブロック画像にボケを生じさせたボケ再現ブロック画像と対応する前記入力ブロック画像との間の残差が小さくなるように前記補正ブロック画像を更新し、更新した前記補正ブロック画像のストラクチャ成分を新たな前記補正ブロック画像とする更新処理を1回以上実行するステップを含む。
本発明の一側面によれば、入力画像に生じているボケの程度を表す点広がり関数が生成され、前記入力画像を分割した複数の第1のブロックの周囲をそれぞれ拡張した複数の第2のブロック内の画像である複数の入力ブロック画像のストラクチャ成分のボケを前記点広がり関数に基づいてそれぞれ補正した複数の補正ブロック画像が生成され、前記点広がり関数を用いて前記補正ブロック画像にボケを生じさせたボケ再現ブロック画像と対応する前記入力ブロック画像との間の残差が小さくなるように前記補正ブロック画像が更新され、更新した前記補正ブロック画像のストラクチャ成分を新たな前記補正ブロック画像とする更新処理が1回以上実行される。
本発明の一側面によれば、手振れや合焦距離のズレによる画像のボケを補正することができる。特に、本発明の一側面によれば、画質の低下を抑制しながら、画像のボケを補正することができる。
以下、本発明を実施するための形態(以下、実施の形態という)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態
2.変形例1
3.第2の実施の形態
4.変形例2
1.第1の実施の形態
2.変形例1
3.第2の実施の形態
4.変形例2
<1.第1の実施の形態>
[情報処理装置の構成]
図1は、本発明の第1の実施の形態である情報処理装置1の構成例を示している。
[情報処理装置の構成]
図1は、本発明の第1の実施の形態である情報処理装置1の構成例を示している。
この情報処理装置1には、JPEG(Joint Photographic Experts Group)圧縮により圧縮された画像であって、撮像時の手振れによりブレが生じているブレ画像が入力される。
情報処理装置1は、入力されるブレ画像を、複数のブロックgに分割し、各ブロック毎に、ブロックgに生じているブレ(の方向や長さ)を表す点広がり関数h、及びブロックgの平坦部とエッジ等の大振幅の成分を表すストラクチャfを初期推定する。
そして、情報処理装置1は、各ブロック毎に初期推定した点広がり関数h及びストラクチャfを、それぞれ、真の点広がり関数、及び真のストラクチャに近づくように、反復して更新する。
なお、以下において、k回だけ更新したときの点広がり関数hを、点広がり関数hkというとともに、k回だけ更新したときのストラクチャfを、ストラクチャfkという。
また、各ブロック毎の点広がり関数hkを区別する必要がない場合、単に、点広がり関数Hkという。また、各ブロック毎のストラクチャfkを区別する必要がない場合、単に、ストラクチャUkという。さらに、各ブロックgを区別する必要がない場合、単に、ブレ画像Gという。
情報処理装置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により構成される。
H_init生成部21には、ブレ画像Gが入力される。H_init生成部21は、入力されたブレ画像Gを構成する画素の輝度値(Y成分)から、ケプストラム上で特徴点を検出し、PSFの直線推定を行い、その直線推定により得られた初期推定PSFを、点広がり関数Hの初期値H_init(=H0)として、サポート制限部22、及びH生成部26に供給する。
なお、H_init生成部21は、入力されたブレ画像Gを構成する画素のY成分の他、R成分、G成分、B成分、並びに、R成分、G成分及びB成分それぞれを加算して得られるR+G+B成分から、ケプストラム上で特徴点を検出し、PSFの直線推定を行うようにすることが可能である。
サポート制限部22は、H_init生成部21からの初期値H_init(=初期推定PSF)の近傍のみを更新対象領域として更新させるためのサポート制限情報を生成し、乗算部23に供給する。
ここで、サポート制限情報とは、初期推定PSFの近傍のみを更新対象領域とし、更新対象領域以外の領域ではゼロ固定とするマスク情報をいう。
乗算部23は、サポート制限部22からのサポート制限情報に基づいて、減算部33からの減算結果Uko(G-Hk○Uk)-mean(Hk)のうち、初期推定PSFの周辺に存在する減算結果に対応するもののみを抽出し、加算部24に供給する。
すなわち、例えば、乗算部23は、サポート制限部22からのサポート制限情報と、対応する、減算部33からの減算結果Uko(G-Hk○Uk)-mean(Hk)どうしを乗算して、PSFの周辺に存在する減算結果に対応するもののみを抽出し、加算部24に供給する。
なお、oは相関演算を表し、○は畳込み演算を表している。また、mean(Hk)は、点広がり関数Hkの平均値を表している。
加算部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を算出する。
加算部24は、Lagrangeの未定乗数法により算出された値aを、値Hk+λUko(G-Hk○Uk)-mean(Hk)に代入し、その結果得られる値Hk+aUko(G-Hk○Uk)-mean(Hk)を、重心補正部25に供給する。
これにより、重心補正部25には、ブレ画像を構成する複数のブロック毎に得られたHk+aUko(G-Hk○Uk)-mean(Hk)=Hk+ΔHkが供給される。
重心補正部25は、点広がり関数Hk+△Hk(但し、△Hkは更新分)の重心を、バイリニア補間により、画面の中心(点広がり関数の初期値H_initの重心)に移動させ、重心を移動させた点広がり関数Hk+△Hkを、H生成部26に供給する。なお、詳細は、図8を参照して後述する。
H生成部26は、H_init生成部21からの初期値H_initを、点広がり関数H0として、加算部24、conv部27、及びcorr部30に供給する。
また、H生成部26は、重心補正部25からの点広がり関数Hk+△Hkを、更新後の点広がり関数Hk+1として、加算部24、conv部27、及びcorr部30に供給する。
なお、H生成部26は、重心補正部25から、点広がり関数Hk-1を更新して得られる点広がり関数Hk-1+△Hk-1が供給された場合、同様にして、重心補正部25からの点広がり関数Hk-1+△Hk-1を、更新後の点広がり関数Hkとして、加算部24、conv部27、及びcorr部30に供給する。
conv部27は、H生成部26からの点広がり関数Hkと、U生成部35からのストラクチャUkとの畳み込み演算を行い、その演算結果Hk○Ukを、処理部28に供給する。なお、演算結果Hk○Ukは、点広がり関数Hkを用いてストラクチャUkにブレを生じさせた画像となる。
処理部28は、入力されるブレ画像Gから、conv部27からの演算結果Hk○Ukを減算し、その減算結果G-Hk○Ukを、残差生成部29に供給する。
残差生成部29は、処理部28からの減算結果G-Hk○Ukを、残差Ekとして、corr部30及びcorr部31に供給する。
corr部30は、残差生成部29からの残差Ekと、H生成部26からの点広がり関数Hkの相関演算を行い、その演算結果Hko(G-Hk○Uk)を、乗算部36に供給する。
corr部31は、残差生成部29からの残差Ekと、U生成部35からのストラクチャUkの相関演算を行い、その演算結果Uko(G-Hk○Uk)を、減算部33に供給する。
平均化部32には、H生成部26から、conv部27、処理部28、残差生成部29、及びcorr部31を介して、点広がり関数Hkが供給される。
平均化部32は、corr部31からの点広がり関数Hkの平均値mean(Hk)を算出し、減算部33に供給する。
減算部33は、corr部31から供給される演算結果Uko(G-Hk○Uk)から、平均化部32からのmean(Hk)を減算し、その結果得られる減算結果Uko(G-Hk○Uk)-mean(Hk)を、乗算部23に供給する。
U_init生成部34は、H_init生成部21により生成された初期値H_init(=初期推定PSF)を用いて、入力されるブレ画像G(ブロックg)を、初期推定PSFサイズで縮小し、畳み込んだPSFを1点に戻すことにより、ブレ画像Gのブレが除去(低減)された画像であって、縮小された画像を生成する。
また、U_init生成部34は、縮小された画像を、初期推定PSFサイズで拡大することにより、拡大によりボケた画像であって、ブレが除去された画像を生成し、ストラクチャUの初期値U_initに設定して、U生成部35に供給する。
なお、後述する図7を参照して、U_init生成部34が、初期値U_initを設定する方法の詳細を説明する。
U生成部35は、トータルバリエーションフィルタ37からのストラクチャUk+1を、conv部27、corr部31及び乗算部36に供給する。
また、U生成部35には、トータルバリエーションフィルタ37からストラクチャUkが供給される。U生成部35は、トータルバリエーションフィルタ37からのストラクチャUkを、conv部27、corr部31及び乗算部36に供給する。
乗算部36は、corr部30からの演算結果Hk○(G-Hk○Uk)に、U生成部35からのストラクチャUkを乗算し、その乗算結果Uk{Hk○(G-Hk○Uk)}を、更新後のストラクチャとして、トータルバリエーションフィルタ37に供給する。
トータルバリエーションフィルタ37は、乗算部36からの乗算結果Uk{Hk○(G-Hk○Uk)}を、ストラクチャ成分とテクスチャ成分に分離し、分離により得られるストラクチャ成分を、次の更新対象であるストラクチャUk+1として、U生成部35に供給する。
上述したように、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、H_init生成部21により生成された点広がり関数Hの初期値H_init(=H0)を用いて、Richardson-Lucy法によるストラクチャU0の更新を行う。
また、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、点広がり関数Hk-1が更新された場合、更新により得られた最新の点広がり関数Hkを用いて、Richardson-Lucy法によるストラクチャUkの更新を行う。
Richardson-Lucy法では、ストラクチャUkの更新により得られたストラクチャUk+1について、増幅されたノイズや発生したリンギングを、トータルバリエーションフィルタ37による、ストラクチャ成分(structure)とテクスチャ成分(texture)との分離により落とすので、ノイズとリンギングを大幅に抑制することができる。
ここで、ストラクチャ成分とは、画像がほとんど変化しない平坦部、画像が緩やかに変化する傾斜部、被写体の輪郭、エッジなど、画像の骨格を構成する成分を表す。また、被写体の細かな模様など画像のディテイル(detail)を構成する部分を表す。従って、ストラクチャ成分のほとんどが空間周波数の低い低周波成分に含まれ、テクスチャ成分のほとんどが空間周波数の高い高周波成分に含まれる。
さらに、トータルバリエーションフィルタ37については、「Structure-Texture Image Decomposition Modeling,Algorithms, and Parameter Selection(Jean-Fran_cois Aujol)」に詳細に記載されている。
なお、トータルバリエーションフィルタ37には、ストラクチャ成分とテクスチャ成分との境界を示すフィルタ閾値がパラメータのひとつとして設定され、そのパラメータを調整することにより、出力されるストラクチャ成分(structure)に、より多くのディテイル(detail)を含ませることが可能である。
しかし、ストラクチャUkと、後述する点広がり関数Hkとを、交互に反復的に更新する反復更新処理(図10において後述)の初期段階では、点広がり関数Hkが充分に更新されていないため、点広がり関数Hkには多くの誤差を含むことがある。
したがって、誤差を多く含む点広がり関数Hkを用いてストラクチャUkの更新を行うと、更新により得られるストラクチャUk+1には、点広がり関数Hkに含まれる誤差に応じたリンギング等が発生してしまう。
同様に、ストラクチャUkについても、点広がり関数Hk-1に含まれる誤差に応じたリンギング等が発生している。
そして、リンギング等が発生したストラクチャUkを用いて更新される点広がり関数Hkについても同様に、悪影響を及ぼしてしまう。
そこで、点広がり関数Hkが充分に更新されていない間は、トータルバリエーションフィルタ37に設定されるフィルタ閾値を高く設定しておき、より強力に、リンギングとノイズを落とし、更新されるストラクチャUが、リンギング等の発生により劣化しないようにすることが可能である。
そして、ある程度、点広がり関数Hkが更新されて、より真の点広がり関数に近づくと、トータルバリエーションフィルタ37に設定されるフィルタ閾値を低く設定して、ディテイルの復元をより真の点広がり関数Hkで行うようにする。
すなわち、点広がり関数Hkが充分に更新されていない間は、トータルバリエーションフィルタ37から出力されるストラクチャUkを構成する画素のうち、隣接する画素どうしの輝度の差分絶対値和を表すトータルバリエーション(total variation)が小さくなるようにフィルタ閾値を高く設定する。
また、ある程度、点広がり関数Hkが更新されて、より真の点広がり関数に近づくと、トータルバリエーションフィルタ37から出力されるストラクチャUkのトータルバリエーションがこれ以上小さくならないようにフィルタ閾値を低く設定する。
これにより、トータルバリエーションフィルタ37では、ストラクチャUkに含まれるエッジを残しつつ、ストラクチャUkを平滑化することにより、ストラクチャUに含まれるリンギングとノイズを落とすことが可能となる。
なお、第1の実施の形態では、点広がり関数Hkの更新の程度に拘わらず、トータルバリエーションフィルタ37は、フィルタ閾値を充分低くした状態で、ストラクチャUkについて増幅されたノイズや発生したリンギングを、トータルバリエーションフィルタ37による、ストラクチャ成分とテクスチャ成分との分離により落とすように構成されているものとする。
H生成部26乃至残差生成部29、corr部31、及びU生成部35等は、ストラクチャUkの初期値U_initを用いて、最急降下法(landweber法)による点広がり関数Hkの更新を行う。
また、H生成部26乃至残差生成部29、corr部31、及びU生成部35等は、ストラクチャUk-1が更新された場合、更新により得られた最新のストラクチャUkを用いて、最急降下法(landweber法)による点広がり関数Hkの更新を行う。
以下、ストラクチャUkとして、ブレ画像を構成する複数のブロックのうちの所定のブロックgのストラクチャfk(更新により得られた最新のストラクチャ)を用いて、最急降下法による点広がり関数Hkの更新として、所定のブロックgの点広がり関数hkを更新する処理を説明する。
ここで、現時点のストラクチャfkをfとし、現時点の点広がり関数hkをhとすると、コスト関数は、次式(1)により与えられる。
なお、式(1)において、||・||はノルムを表しており、*は乗算を表している。
現時点のストラクチャfを固定した場合、式(1)のe2を最小にすることを目的として、次式(2)のように、式(1)を変数h(点広がり関数h)により偏微分して、降下方向を求める。
現時点での点広がり関数hを、式(2)により求めた降下方向に沿って検索していくと、式(2)の最小値が存在する。現在の点広がり関数hに対して、次式(3)のように、式(2)により求めた降下方向に、ステップサイズλだけ進めさせると、更新された点広がり関数hを求めることができる。
なお、式(2)及び式(3)において、白丸(。)は相関演算子を表しており、バツ印(×)を白丸(○)で囲んだ記号は、畳み込み演算を表している。
また、式(3)において、点広がり関数hk+1は、更新後の点広がり関数を表しており、点広がり関数hkは、現時点での点広がり関数h(更新前の点広がり関数)を表している。さらに、ストラクチャfkは、現時点でのストラクチャfを表している。
しかし、点広がり関数hk+1は、ブレ画像を構成する複数のブロックそれぞれの点広がり関数hk+1(i)において、Σi i=1h(i)=1となるように強制されるため、H生成部26乃至残差生成部29、corr部31、及びU生成部35等により形成されるループで正規化される。したがって、点広がり関数hkの更新分△hkが、点広がり関数hkと同じ符号になったとき、正規化の結果、点広がり関数hk+1は更新前の値hkに戻ってしまう。
なお、式(4)において、mean(h)とは、hkの平均値を示している。mean(h)は、減算部33により減算される。
また、丸め誤差により、点広がり関数hkを更新しているうちに、重心が画面中心から外れてしまうことがあるため、不正確な残差eが得られてしまい、ストラクチャfkの更新(復元)に悪影響を及ぼしてしまう。したがって、重心補正部25は、1画素(pix)以下のバイリニア補間で、更新後の点広がり関数hk+△hk(=hk+1)の重心が画面中心にくるように、平行移動を行っている。
情報処理装置1は、上述したように、ブレ画像を構成するブロックから、ブレを除去したブロックを表すものとして、更新後のストラクチャUkを算出する。そして、情報処理装置1は、算出したストラクチャUkそれぞれを、1枚の画像となるように構成することにより、ブレが除去された原画像を取得する。
[初期推定PSFの推定方法]
次に、図2を参照して、H_init生成部21が行う初期推定PSFの推定方法の概要を説明する。
次に、図2を参照して、H_init生成部21が行う初期推定PSFの推定方法の概要を説明する。
ブレ画像は、ブレが生じていない原画像(ブレ画像に対応する原画像)とPSFとの畳み込みによりモデル化することができる。
直線PSFのスペクトラムが、ブレの長さを周期的に零点に落ち込む特徴を持ち、原画像とPSFの畳み込みにより、ブレ画像のスペクトルもブレの長さを周期に零点に落ち込む。
その零点に落ち込む間隔と方向を求めることにより、PSFの直線ブレの長さと方向を近似することができる。そこで、ブレ画像をFFT(Fast Fourier Transform、高速フーリエ変換)してブレ画像のスペクトラムを算出し、算出したスペクトラムのLog(自然対数)をとることにより、原画像のスペクトラムと、PSFのスペクトラム(MTF)の和に変換する。
ここで必要な情報はMTFのみなので、ブレ画像のスペクトラムに対して多くのパッチを足し合わせて平均化することにより、原画像のスペクトルの特徴が失われて、MTFの特徴のみを表すことが可能となる。
次に、図3乃至図6を参照して、初期推定PSFの具体的な推定方法を説明する。
図3は、ブレ画像についてケプストラムを生成する生成方法を示している。
H_init生成部21は、入力されるブレ画像を、複数のブロックに分割し、分割した各ブロック毎に、FFT(Fast Fourier Transform、高速フーリエ変換)を行い、各ブロックそれぞれに対応するスペクトルを算出する。
すなわち、例えば、H_init生成部21は、ブレ画像を分割して得られるブロックを構成する画素のY成分、R成分、G成分、B成分、及びR+G+B成分のうちのいずれかに、FFTを行い、対応するスペクトルを算出する。
また、H_init生成部21は、各ブロックそれぞれに対応するスペクトルの2乗和について自然対数をとり、JPEG圧縮時に生じた歪みを除去するJPEG除去フィルタにより、歪みを除去する。これは、JPEG圧縮時に生じた歪みにより、スペクトル精度に影響を及ぼしてしまうことを防止することによる。
さらに、H_init生成部21は、JPEG除去フィルタによる歪み除去後の、各ブロックgそれぞれに対応するスペクトルgsの2乗和の自然対数logΣ|gs|2に対して、ブレによる周期的な落ち込みを際立たせるために、HPF(high pass filter)によるフィルタリング処理を行い、ブレによるなだらかな変化を低減させる。
H_init生成部21は、移動平均で差し引いた残差成分、すなわち、HPFによるフィルタリング処理が行われた後の、スペクトルの2乗和の自然対数logΣ|gs|2に対して、IFFT(Inverse Fast Fourier Transform、逆高速フーリエ変換)を行い、一種のケプストラムを生成する。
より具体的には、H_init生成部21は、HPFによるフィルタリング処理が行われた後の、スペクトルの2乗和の自然対数logΣ|gs|2において、正負の符号を逆転させる。そして、H_init生成部21は、正負の符号が逆転されたlogΣ|gs|2のうち、負の符号を有する部分を破棄し、正の符号を有する部分のみに基づいて、一種のケプストラムを生成する。
そして、H_init生成部21は、生成したケプストラムに対して、輝点の最大値を算出する。
すなわち、H_init生成部21は、生成したケプストラムのうち、最大の値を有するケプストラムを、輝点の最大値として算出する。
次に、図4は、生成したケプストラムに対して、輝点の最大値を算出する算出方法を示している。
H_init生成部21は、図4Aに示すように、周りの画素と比較して、輝度が大きい複数の画素の塊に強く反応するスポットフィルタによるフィルタリング処理を、生成したケプストラムに対して行う。
また、H_init生成部21は、図4Bに示すように、図4Aに示したスポットフィルタによるフィルタリング処理後のケプストラムから、最大値を含む一山を、スポットとして取り出す。
さらに、H_init生成部21は、図4Cに示すように、スポット位置を決定する。なお、スポット位置とは、最大値を含む一山を構成する複数のケプストラムからなるスポットの重心位置を表す。
次に、図5は、初期推定PSFの推定が成功したか否かを判定する判定方法を説明する。なお、初期推定PSFの推定方法については、後述する図6を参照して説明する。
輝点は原点対称なので、原点対称位置にもうひとつの特徴点が存在する。すなわち、特徴点として、原点を対称とする2つのスポットが存在する。
この2つのスポットに接する最小正方形範囲内で閾値を超えたものが存在する場合、すなわち、最小正方形範囲内で、閾値を超える値を有するケプストラムが存在する場合、H_init生成部21は、初期推定PSFの初期推定が失敗したと判定する。
この場合、H_init生成部21は、初期推定した初期推定PSFを、ブレの分布がガウス分布(正規分布)に従うPSFに近似し、その結果得られるPSFを、初期値H_initに設定する。
また、2つのスポットに接する最小正方形範囲内で閾値を超えたものが存在しない場合、すなわち、最小正方形範囲内で、閾値を超える値を有するケプストラムが存在しない場合、H_init生成部21は、初期推定PSFの初期推定が成功したと判定し、初期推定PSFを初期値H_initに設定する。
次に、図6は、2つのスポットに基づいて、初期推定PSFを推定(生成)する推定方法を示している。
2つのスポットに接する最小正方形範囲内で閾値を超えたものが存在しない場合、H_init生成部21は、図6に示すように、スポット位置を原点対称に結ぶ直線を、初期推定PSFとして生成し、初期値H_initに設定する。
[ストラクチャUkの初期値U_initの生成方法]
次に、図7を参照して、U_init生成部34が行う、ストラクチャUkの初期値U_initの生成方法を説明する。
次に、図7を参照して、U_init生成部34が行う、ストラクチャUkの初期値U_initの生成方法を説明する。
U_init生成部34は、入力されるブレ画像を、初期推定PSFのサイズで縮小することにより縮小画像を生成し、生成した縮小画像を、初期推定PSFのサイズで拡大することにより拡大画像を生成する。そして、生成した拡大画像を、ストラクチャ成分とテクスチャ成分に分離し、分離により得られたストラクチャ成分を、ストラクチャUの初期値U_initとして、U生成部35に供給する。
すなわち、例えば、U_init生成部34は、入力されるブレ画像を構成するブロックを、H_init生成部21から供給される、ブロックの初期推定PSFを1点に縮小する縮小サイズと同一の縮小サイズで縮小することにより、ブロックに生じているブレが除去(低減)された縮小ブロックを生成する。
そして、U_init生成部34は、生成した縮小ブロックを、1点に縮小された初期推定PSFを、元の初期推定PSFに拡大する拡大サイズと同一の拡大サイズで拡大することにより、拡大によるボケが生じているが、ブレは生じていない拡大ブロックを生成する。
U_init生成部34は、生成した拡大ブロックを、初期値U_init(ストラクチャU0)として、U生成部35に供給する。
[点広がり関数の重心の補正方法]
次に、図8を参照して、重心補正部25が行う、重心を補正する補正方法を説明する。
次に、図8を参照して、重心補正部25が行う、重心を補正する補正方法を説明する。
図8は、バイリニア補間による補間方法を示している。
上述したように、H生成部26乃至残差生成部29、corr部31、及びU生成部35等が、点広がり関数Hkを更新しているうちに、丸め誤差により、重心が画面中心から外れてしまうことがあるため、重心補正部25は、図8に示すように、バイリニア補間により、点広がり関数Hk+△Hkの重心が画面中心にくるように平行移動を行う。
[サポート制限処理]
次に、図9を参照して、サポート制限部22が行うサポート制限処理を説明する。
次に、図9を参照して、サポート制限部22が行うサポート制限処理を説明する。
H生成部26乃至残差生成部29、corr部31、及びU生成部35等が、点広がり関数Hkを更新するときに、更新分の△Hkの自由度が高く、図9Aに示すように、真のPSF(点広がり関数)から離れた場所に、更新後の点広がり関数Hk+△Hkが表すブレが正確に反映されていない偽画素が現れる。そこで、サポート制限部22は、図9Bに示すように、初期推定PSFの近傍だけ更新を許可し、初期推定PSFの近傍以外の領域では、更新分△Hkに画素が存在しても、マスクすることで、初期推定PSFの近傍だけを更新させるように、サポート(support)制限を加えることとしている。
ところで、点広がり関数Hkの更新ループにおいて、ストラクチャUkの更新分△Ukは徐々に小さくなり、ある程度小さくなると、残差Ek=G-Hk*(Uk+△Uk)が飽和してしまい(残差Eが殆ど変化しなくなってしまい)、点広がり関数Hkの更新が停止する。したがって、トータルバリエーションフィルタ37に設定されたフィルタ閾値を調整することにより、意図的に残差Ekを下げて(小さくして)、それをトリガにして、点広がり関数Hkの更新も再開させる。
また、トータルバリエーションフィルタ37において、最終出力がされた場合には、フィルタ閾値を低くする(逓減させる)ことで、ストラクチャ出力によるディテイル不足を克服することが可能となる。
点広がり関数Hkの更新時に使用するストラクチャUkの情報は、輝度Y(R成分、G成分、及びB成分それぞれに対する重み付けによる乗算で得られる乗算結果の総和を表すY成分)の他に、R/G/B3チャンネルの和(R成分、G成分、及びB成分の総和)を使用することもできる。輝度Yだけで更新するときとの違いは、R/Bチャンネルだけブレが反映されるエッジが存在するようなブレ画像に対しても、Gチャンネルと同様に大きなフィードバックが得られることである。
また、点広がり関数Hkの更新時に使用するストラクチャUkの情報は、R成分、G成分、及びB成分を使用することができる。
[反復更新処理]
次に、図10のフローチャートを参照して、情報処理装置1が行う反復更新処理を説明する。
次に、図10のフローチャートを参照して、情報処理装置1が行う反復更新処理を説明する。
なお、反復更新処理においては、点広がり関数HkとストラクチャUkとを別々に更新していくのではなく、点広がり関数Hk及びストラクチャUkを、互いの初期値に基づいて、交互に更新していくアルゴリズムである。
ステップS31及びステップS32において、初期値H_init,初期値U_initの初期推定、及び、各パラメータ、グローバル変数等の初期化を行う。
すなわち、例えば、ステップS31において、H_init生成部21は、入力されたブレ画像Gから、ケプストラム上で特徴点を検出し、PSFの直線推定を行い、その直線推定により得られた初期推定PSFを、点広がり関数Hの初期値H_initに設定して、サポート制限部22、及びH生成部26に供給する。
ステップS32において、U_init生成部34は、H_init生成部21により設定された初期値H_init(=初期推定PSF)を用いて、入力されるブレ画像を、初期推定PSFサイズで縮小し、畳み込んだPSFを1点に戻すことにより、ブレ画像のブレが除去された画像であって、縮小された画像を生成する。
また、U_init生成部34は、縮小された画像を、初期推定PSFサイズで拡大することにより、補間によりボケた画像であって、ブレが除去された画像を生成し、ストラクチャUkの初期値U_initに設定して、U生成部35に供給する。
すなわち、例えば、U_init生成部34は、入力されるブレ画像を構成するブロックを、H_init生成部21から供給される、ブロックの初期推定PSFを1点に縮小する縮小サイズと同一の縮小サイズで縮小することにより、ブロックに生じているブレが除去(低減)された縮小ブロックを生成する。
そして、U_init生成部34は、生成した縮小ブロックを、1点に縮小された初期推定PSFを、元の初期推定PSFに拡大する拡大サイズと同一の拡大サイズで拡大することにより、拡大によるボケが生じているが、ブレは生じていない拡大ブロックを生成する。
U_init生成部34は、生成した拡大ブロックを、初期値U_init(ストラクチャU0)として、U生成部35に供給する。
ストラクチャUk及び点広がり関数Hkの両方とも正確にわかっていない状況の中で、ステップS33において、ストラクチャUkは、最新の点広がり関数Hkの情報を用いて更新され、ステップS34において、点広がり関数Hkは、最新のストラクチャUkの情報を用いて更新される。
この繰り返しにより、ストラクチャUkと点広がり関数Hkとを交互に更新していくと、ストラクチャUkは、より真のストラクチャUへ、点広がり関数Hkは、より真の点広がり関数Hへと収束していく。
すなわち、ステップS33において、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、点広がり関数Hkの初期値H_init(=初期推定PSF)を用いて、従来のRichardson-Lucy法によるストラクチャU0の更新を行う。
ステップS33において、conv部27は、H生成部26からの点広がり関数Hkの初期値H_initである点広がり関数H0と、U生成部35からのストラクチャU0との畳み込み演算を行い、その演算結果H0○U0を、処理部28に供給する。
処理部28は、入力されるブレ画像Gから、conv部27からの演算結果H0○U0を減算し、その減算結果G-H0○U0を、残差生成部29に供給する。
残差生成部29は、処理部28からの減算結果G-H0○U0を、corr部30及びcorr部31に供給する。
corr部30は、残差生成部29からの減算結果G-H0○U0と、H生成部26からの点広がり関数H0との相関演算を行い、その演算結果H0o(G-H0○U0)を、乗算部36に供給する。
乗算部36は、corr部30からの演算結果H0o(G-H0○U0)に、U生成部35からのストラクチャU0を乗算し、その乗算結果U0{H0o(G-H0○U0)}を、更新後のストラクチャとして、トータルバリエーションフィルタ37に供給する。
トータルバリエーションフィルタ37は、乗算部36からの乗算結果U0{H0o(G-H0○U0)}に対して、増幅されたノイズや発生したリンギングを抑制する処理を行う。
そして、トータルバリエーションフィルタ37は、その処理により得られた、乗算結果U0{H0o(G-H0○U0)}のストラクチャ成分及びテクスチャ成分のうち、ストラクチャ成分を、U生成部35に供給する。
U生成部35は、トータルバリエーションフィルタ37から供給されるストラクチャ成分を、次のストラクチャの更新対象であるストラクチャU1として取得する。
そして、U生成部35は、取得したストラクチャU1をさらに更新するために、ストラクチャU1を、conv部27、corr部31、及び乗算部36に供給する。
ステップS34において、H生成部26乃至残差生成部29、corr部31、及びU生成部35等は、最急降下法により、ストラクチャUkの初期値U_initを用いて、点広がり関数H0の更新を行う。
なお、上述したステップS33において、残差生成部29は、処理部28からの減算結果G-H0○U0を、corr部30の他、corr部31に供給している。
ステップS34では、corr部31は、残差生成部29からの減算結果G-H0○U0と、U生成部35からのストラクチャU0との相関演算を行い、その演算結果U0o(G-H0○U0)を、減算部33に供給する。
また、corr部31は、H生成部26から、conv部27、処理部28、及び残差生成部29を介して供給された点広がり関数H0を、平均化部32に供給する。
平均化部32は、corr部31からの点広がり関数H0の平均値mean(H0)を算出し、減算部33に供給する。
減算部33は、corr部31から供給される演算結果U0o(G-H0○U0)から、平均化部32からのmean(H0)を減算し、その結果得られる減算結果U0o(G-H0○U0)-mean(H0)を、乗算部23に供給する。
乗算部23は、サポート制限部22からのサポート制限情報に基づいて、減算部33からの減算結果U0o(G-H0○U0)-mean(H0)のうち、初期推定PSFの周辺に存在する減算結果に対応するもののみを抽出し、加算部24に供給する。
加算部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を算出する。
加算部24は、Lagrangeの未定乗数法により算出された値aを、値Hk+λUko(G-Hk○Uk)-mean(Hk)に代入し、その結果得られる値Hk+aUko(G-Hk○Uk)-mean(Hk)を、重心補正部25に供給する。
これにより、重心補正部25には、ブレ画像を構成する複数のブロック毎に得られたH0+aU0o(G-H0○U0)-mean(H0)=H0+ΔH0が供給される。
重心補正部25は、点広がり関数H0+△H0の重心を、バイリニア補間により、画面の中心(点広がり関数の初期値H_initの重心)に移動させ、重心を移動させた点広がり関数H0+△H0を、H生成部26に供給する。
H生成部26は、重心補正部25からの点広がり関数H0+△H0を、更新後の点広がり関数H1として取得する。
そして、H生成部26は、取得した点広がり関数H1をさらに更新するために、点広がり関数H1を、加算部24、conv部27、及びcorr部30に供給する。
ステップS35において、反復更新処理は終了するか否かを判定する。すなわち、例えば、更新後のストラクチャUk(又は点広がり関数Hkの少なくとも一方)は収束したか否かを判定する。そして、更新後のストラクチャUkが収束していないと判定された場合、処理はステップS33に戻る。
なお、更新後のストラクチャUkが収束したか否かは、例えば、残差生成部29により、ブレ画像を構成する複数のブロックそれぞれに対応する値G-Hk○Uk(=Ek)の2乗和Σ|Ek|2が、所定の値未満であるか否かに基づいて判定される。
また、トータルバリエーションフィルタ37が、乗算部36からのストラクチャUkを構成する画素のうち、隣接画素どうしの輝度の差分絶対値和を表すトータルバリエーションが、増加から減少に転じたか否かに基づいて判定するようにしてもよい。
ステップS33では、前回のステップS34の処理による更新後の点広がり関数Hk(例えば、H1)を用いて、前回のステップS33の処理による更新後のストラクチャUk(例えば、U1)の更新を、従来のRichardson-Lucy法により行う。
すなわち、ステップS33では、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等は、前回のステップS34の処理による更新後の点広がり関数Hk(例えば、H1)を用いて、従来のRichardson-Lucy法によるストラクチャUk(例えば、U1)の更新を行う。
ステップS33の処理の終了後、ステップS34では、前回のステップS33の処理による更新後のストラクチャUk(例えば、U1)を用いて、前回のステップS34の処理による更新後の点広がり関数Hk(例えば、H1)の更新を、最急降下法により行う。
すなわち、ステップS34では、H生成部26乃至残差生成部29、corr部31、及びU生成部35等は、最急降下法により、前回のステップS33の処理による更新後のストラクチャUk(例えば、U1)を用いて、点広がり関数Hk(例えば、H1)の更新を行う。
処理は、ステップS34からステップS35に進み、以下、同様の処理が繰り返される。
なお、ステップS35において、更新されたストラクチャUkが収束していると判定された場合、反復更新処理は終了される。
以上説明したように、反復更新処理では、残差Ekが小さくなるように、ストラクチャUkと点広がり関数Hkの更新を反復して行うことにより、ストラクチャUkを真のストラクチャUに収束させる(及び点広がり関数Hkを真の点広がり関数Hに収束させる)こととしたので、最終的に得られるストラクチャUkに発生するリンギングやノイズを抑制することが可能となる。
また、初期値H_initとして得られるPSF(=点広がり関数H0)が不正確な状態からでも、正確なPSF、すなわち、真のPSF又は真のPSFに近いPSFを求めることが可能となる。
さらに、PSFのサポート制限により、初期値H_init(=初期推定PSF)が初期推定の方向に沿って更新されるため、発散することなく、真のPSF又は真のPSFに近いPSFを求めることが可能となる。
<2.変形例1>
[反復更新処理の変形例]
なお、反復更新処理では、例えば、ステップS31において、初期値H_init(=点広がり関数H0)の推定(生成)に成功した場合には、ステップS33において、初期値H_initでストラクチャU0の更新を行い、ステップS31において、初期値H_initの推定に失敗した場合、ステップS33において、PSFをガウシアン(ガウス分布)により近似し、近似したPSFを初期値H_initとして、ストラクチャU0の更新を行うようにすることが可能である。この場合、初期値H_init(=初期推定PSF)のズレによるストラクチャU0の劣化を防止することができる。
[反復更新処理の変形例]
なお、反復更新処理では、例えば、ステップS31において、初期値H_init(=点広がり関数H0)の推定(生成)に成功した場合には、ステップS33において、初期値H_initでストラクチャU0の更新を行い、ステップS31において、初期値H_initの推定に失敗した場合、ステップS33において、PSFをガウシアン(ガウス分布)により近似し、近似したPSFを初期値H_initとして、ストラクチャU0の更新を行うようにすることが可能である。この場合、初期値H_init(=初期推定PSF)のズレによるストラクチャU0の劣化を防止することができる。
また、ステップS33では、conv部27乃至corr部31、U生成部35、及びトータルバリエーションフィルタ37等が、従来のRichardson-Lucy法によるストラクチャUkの更新を行うこととしたが、Richardson-Lucy法による処理を高速化した従来のR-L高速アルゴリズムを用いることとすれば、より迅速に、ストラクチャUkを、真のストラクチャに更新することが可能となる。
さらに、図10の反復更新処理において、ステップS35では、更新後のストラクチャUkが収束したか否かに応じて、反復更新処理を終了するか否かを判定することとしたが、これに限定されない。
すなわち、例えば、ステップS35では、ストラクチャUk及び点広がり関数Hkを所定の回数だけ更新したか否かを判定し、所定の回数だけ更新したと判定された場合に、反復更新処理を終了させるようにしてもよい。なお、所定の回数としては、例えば、精度が低いPSFでもリンギングが発生しない程度の回数か、トータルバリエーションフィルタ37により僅かに発生したリンギングを取り消すことが出来る程度の回数であることが望ましい。
[residual deconvolutionの適用方法]
ところで、本発明の第1の実施の形態では、トータルバリエーションフィルタ37のフィルタ閾値を充分低くした状態で得られるストラクチャUkを最終出力としたが、ブレ画像と更新済みのストラクチャUkを用いて、従来のresidual deconvolutionによる方法を行うことも可能である。
ところで、本発明の第1の実施の形態では、トータルバリエーションフィルタ37のフィルタ閾値を充分低くした状態で得られるストラクチャUkを最終出力としたが、ブレ画像と更新済みのストラクチャUkを用いて、従来のresidual deconvolutionによる方法を行うことも可能である。
図11は、ブレ画像と更新済みのストラクチャUkを用いて、従来のresidual deconvolutionによる方法を行う情報処理装置61の構成例を示している。
この情報処理装置61は、conv部91、減算部92、加算部93、R-Ldeconv部94、減算部95、加算部96、オフセット(offset)部97、及びゲインマップ(Gain Map)98により構成される。
conv部91には、更新済みのHkと更新済みのUkとが供給される。Conv部91は、更新済みのHkと、更新済みのUkとの畳込み演算を行い、その結果得られる値Hk○Ukを、減算部92に供給する。
減算部92には、ブレ画像Gが供給される。減算部92は、供給されるブレ画像Gから、conv部91からの値Hk○Ukを減算し、その減算結果G-Hk○Ukを、残差成分(residual)として、加算部93に供給する。
加算部93は、減算部92からの残差成分G-Hk○Ukを正の値にするために、残差成分G-Hk○Ukに、オフセット部97からのオフセット値とを加算し、その加算結果を、R-Ldeconv部94に供給する。なお、加算部93において、残差成分G-Hk○Ukにオフセット値を加算して正の値にするのは、R-Ldeconv部94による処理において、正の値を対象としていることによる。
R-Ldeconv部94は、ゲインマップ(Gain Map)部98に保持されているゲインマップ、及び更新済みのHkに基づいて、加算部93からの加算結果に対して、非特許文献1に記載されたresidual deconvolutionを行う。これにより、オフセット値が加算された残差成分のリンギングが抑制される。
減算部95は、R-Ldeconv部94からの処理結果から、加算部93で加算したものと同一のオフセット値を減算し、リンギングが抑制された残差成分、すなわち、ブレ画像のテクスチャを復元した復元結果を取得する。そして、減算部95は、取得したテクスチャの復元結果を、加算部96に供給する。
加算部96には、更新済みのストラクチャUkが供給される。加算部96は、減算部95からの、テクスチャの復元結果と、供給される更新済みのストラクチャUkとを加算し、その結果得られる、ブレ画像からブレを除去した復元画像を出力する。
すなわち、例えば、加算部96は、ブレ画像を構成するブロックに対応する、テクスチャの復元結果と更新済みのストラクチャUkとを加算し、その加算結果として、ブレ画像を構成するブロックから、ブレを除去した復元ブロックを取得する。そして、加算部96は、ブレ画像を構成するブロックそれぞれに対応する復元ブロックを取得し、取得した復元ブロックそれぞれをつなぎ合わせることにより、復元画像を生成して出力する。
オフセット部97は、残差成分G-Hk○Ukを正の数にするために加算されるオフセット値を予め保持している。オフセット部97は、予め保持しているオフセット値を、加算部93及び減算部95に供給する。
ゲインマップ部98は、残差成分G-Hk○Ukのゲインを調整するために用いられるゲインマップを予め保持している。
図11に示すように、更新済みの点広がり関数PSF(点広がり関数Hk)で更新済みのストラクチャUkにブレを生じさせ、ブレ画像Gとの残差成分(residual成分)G-Hk○Ukに対して、deconvolution(R-Ldeconv部94による処理)を行い、その結果得られるもの(ブレ画像のテクスチャを復元した復元結果)を、更新済みのストラクチャUkに加算することで、残差のディテイル情報が復元されて、きめ細かい復元結果が得られる。
[RGB空間以外の色空間への適用方法]
なお、本発明の第1の実施の形態では、RGB空間(R成分、G成分、及びB成分により表される画素により構成されるブレ画像)について反復更新処理を行うこととしたが、YUV空間等のほかの色空間について、同様の反復更新処理を行うことが可能である。
なお、本発明の第1の実施の形態では、RGB空間(R成分、G成分、及びB成分により表される画素により構成されるブレ画像)について反復更新処理を行うこととしたが、YUV空間等のほかの色空間について、同様の反復更新処理を行うことが可能である。
次に、図12は、YUV空間について反復更新処理を行うことを説明する図である。
図12に示すように、YUV空間において、Yだけ反復更新処理(GSDM,Gradual Structure Deconvolution Method)を適用して正確なPSFを算出した後に、算出した正確なPSFを用いたRichardson-Lucy法等による処理を、リンギングが発生しない程度にU/V成分に対して行ったものを、Yに足し合わせるようにしてもよい。
なお、上述した第1の実施の形態では、最急降下法を用いて、点広がり関数Hkを更新するとともに、Richardson-Lucy法を用いて、ストラクチャUkを更新するようにしたが、その他、例えば、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新するようにしてもよい。
<3.第2の実施の形態>
[情報処理装置の構成]
次に、図13を参照して、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新する情報処理装置121について説明する。
[情報処理装置の構成]
次に、図13を参照して、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新する情報処理装置121について説明する。
図13は、本発明の第2の実施の形態である情報処理装置121を示している。
なお、この情報処理装置121において、図1に示された第1の実施の形態である情報処理装置1の構成要素のうち、共通するものについては同一の符号を付しているので、その説明は適宜省略する。
すなわち、情報処理装置121において、加算部24に代えて乗算部151が、乗算部36に代えて加算部152が、乗算部23、平均化部32、及び減算部33に代えて乗算部153が、それぞれ設けられている他は、情報処理装置1と同様に構成されている。
乗算部151には、乗算部153から、初期推定PSFの周辺の領域に対応する演算結果Uko(G-Hk○Uk)が、H生成部26から、点広がり関数Hkが、それぞれ供給される。
乗算部151は、乗算部153からの演算結果Uko(G-Hk○Uk)と、H生成部26からの点広がり関数Hkとを乗算し、その結果得られる点広がり関数Hk+1=HkUko(G-Hk○Uk)を、重心補正部25に供給する。
加算部152には、corr部30から、演算結果Hko(G-Hk○Uk)が、U生成部35からストラクチャUkが、それぞれ供給される。
加算部152は、corr部30からの演算結果Hko(G-Hk○Uk)に、未定乗数λを乗算し、その結果得られる値λHko(G-Hk○Uk)に、U生成部35からのストラクチャUkとを加算する。そして、加算部152は、その結果得られる加算結果Uk+λHko(G-Hk○Uk)(=Uk+1)について、Lagrangeの未定乗数法により、未定乗数λを算出する。
加算部152は、未定乗数λの解として算出された定数aを、加算結果Uk+λHko(G-Hk○Uk)に代入し、その結果得られるストラクチャUk+1=Uk+aHko(G-Hk○Uk)を、トータルバリエーションフィルタ37に供給する。
乗算部153には、corr部31から、演算結果Uko(G-Hk○Uk)が、サポート制限部22から、サポート制限情報が、それぞれ供給される。
乗算部153は、サポート制限部22からのサポート制限情報に基づいて、corr部31からの演算結果Uko(G-Hk○Uk)のうち、初期推定PSFの周辺の領域に対応する演算結果のみを抽出し、乗算部151に供給する。
この情報処理装置121においても、第1の実施の形態である情報処理装置1と同様の作用効果を奏することが可能である。
<4.変形例2>
第2の実施の形態では、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新するようにしたが、Richardson-Lucy法を用いて、点広がり関数Hk及びストラクチャUkを更新するようにしてもよいし、最急降下法を用いて、点広がり関数Hk及びストラクチャUkを更新するようにしてもよい。
第2の実施の形態では、Richardson-Lucy法を用いて、点広がり関数Hkを更新するとともに、最急降下法を用いて、ストラクチャUkを更新するようにしたが、Richardson-Lucy法を用いて、点広がり関数Hk及びストラクチャUkを更新するようにしてもよいし、最急降下法を用いて、点広がり関数Hk及びストラクチャUkを更新するようにしてもよい。
なお、第1及び第2の実施の形態では、ブレ画像を構成する複数のブロックに対して、反復更新処理を行うようにしたが、ブレ画像そのものを1個のブロックとして、反復更新処理を行うことも可能である。
[糊代処理]
また、第1及び第2の実施の形態では、例えば、図14及び図15に示すように、ブレ画像を複数のブロックに分割し、分割したブロックの範囲を拡張した上で、拡張したブロック毎に、第1の実施の形態である情報処理装置1、又は第2の実施の形態である情報処理装置121を用いて反復更新処理を行い、反復更新処理後の複数のブロックをつなぎ合わせることにより、1枚の復元画像を生成する糊代処理を行うようにしてもよい。
また、第1及び第2の実施の形態では、例えば、図14及び図15に示すように、ブレ画像を複数のブロックに分割し、分割したブロックの範囲を拡張した上で、拡張したブロック毎に、第1の実施の形態である情報処理装置1、又は第2の実施の形態である情報処理装置121を用いて反復更新処理を行い、反復更新処理後の複数のブロックをつなぎ合わせることにより、1枚の復元画像を生成する糊代処理を行うようにしてもよい。
次に、図14を参照して、ブレ画像を構成する複数のブロックそれぞれに対応するストラクチャUkを生成する処理を説明する。
図14に示されるように、ブレ画像を構成する複数のブロック(例えば、図14に示すG)は、それぞれ、隣接するブロックとの連続性を維持するために、隣接するブロックどうしが、一部分だけ重なり合うサイズとなるように、その範囲が拡張される。これにより、拡張ブロック(例えば、図14に示す、dummyが付加されたG')が生成される。
また、ブレ画像を構成する複数のブロックそれぞれに対応するストラクチャU0(例えば、図14に示すU)についても、同一のサイズに拡張される。これにより、拡張ストラクチャ(例えば、図14に示す、dummyが付加されたU')が生成される。
次に、拡張ブロック、拡張ストラクチャ、及び拡張ブロックに基づいて生成された点広がり関数H0(例えば、図14に示すPSF)に基づいて、Richardson-Lucy法により、拡張ストラクチャの更新を行う。
そして、Richardson-Lucy法による拡張ストラクチャの更新により得られた更新後の拡張ストラクチャ(例えば、図14に示す、dummyが付加されたupdated U)の拡張した範囲を除去し、元のストラクチャU0のサイズに戻す。
これにより、ブレ画像を構成する複数のブロックそれぞれに対応するストラクチャとして、隣接するブロックとの連続性が維持されたストラクチャ(例えば、図14に示すupdated U)を取得し、図15に示されるように、取得したストラクチャを、それぞれつなぎ合わせることにより、ブレが低減(除去)された復元画像を取得することができる。
ここで、さらに図16乃至図24を参照して、糊代処理の処理方法の例について詳しく説明する。
なお、以下、復元対象となるブレ画像をオリジナル画像とも称する。また、以下、拡張ブロックを生成するために各ブロックに付加される領域をダミー領域と称する。
また、以下、図16の白い領域で示されるオリジナル画像の幅をOrgWidthとし、高さをOrgHeightとする。また、以下、図16のグレーの領域で示されるダミー領域の幅をOffsetXとし、高さをOffsetYとする。なお、ダミー領域の幅OffsetXおよび高さOffsetYの設定方法の例については後述する。
さらに、以下、オリジナル画像にダミー領域を付加した画像(以下、拡張画像と称する)の幅をFullWidthとし、高さをFullHeightとする。また、以下、拡張画像の縦方向および横方向の分割数をそれぞれ同じDivNumとする。すなわち、縦DivNum×横DivNum個の拡張ブロックに、拡張画像が分割されるものとする。
また、以下、拡張画像の座標系について、左上隅の画素を原点(0,0)とし、水平方向をx軸方向、垂直方向をy軸方向とするとともに、右方向をx軸の正の方向、下方向をy軸の正の方向とする。
さらに、以下、反復更新処理を行う情報処理装置1または情報処理装置121のプロセッサが、SIMD(Single Instruction Multiple Data)の実行が可能で、SIMD実行時に1つの命令で最大16バイトのデータを1度に処理できるものとする。また、以下、各画像の1画素当たりのデータ量が4バイトであるものとする。
最初に、図17を参照して、拡張ブロックの幅ROIWidthの設定方法について説明する。
まず、次式(5)により、オリジナル画像を分割数DivNumで単純に分割した場合のブロック(以下、オリジナルブロックと称する)の幅DivWidthが求められる。
DivWidth=OrgWidth/DivNum ・・・(5)
なお、幅DivWidthは小数点以下を切り捨てた値とする。従って、例えば、図17に示されるように、オリジナル画像を左端から幅DivWtdthで分割していった場合、オリジナル画像の幅OrgWidthが分割数DivNumで割り切れないとき、右端のオリジナルブロックの幅は、他のオリジナルブロックの幅DivWidthより広くなる。このときの右端のオリジナルブロックの幅MaxDivWidthは、次式(6)により求められる。
MaxDivWidth=OrgWidth−(DivWidth×(DivNum−1)) ・・・(6)
そして、拡張ブロックの幅ROIWidthは、この幅MaxDivWidthを用いて、次式(7)により求められる。
ROIWidth=MaxDivWidth+2×OffsetX+MaxAlign ・・・(7)
ここで、MaxAlignとは、拡張画像の各画素のデータをラスタ順にメモリに配置した場合に、情報処理装置1または情報処理装置121のプロセッサのデータの処理単位に合わせて、各拡張ブロックの左端(左辺)の画素のデータのメモリアライメントを行うときのアライメント量の最大値を示している。
例えば、分割数DivNum=4である場合について考える。
上述したように、情報処理装置1または情報処理装置121のプロセッサは、16バイト単位でSIMDを実行し、拡張画像の各画素のデータ量は4バイトである。従って、拡張画像の左上隅の画素のデータの格納アドレスが16の倍数になるようにメモリアライメントされるものとすると、各拡張ブロックの左端の画素のデータのメモリアライメントを行うためには、各拡張ブロックの左端の画素のx座標を4の倍数に設定すればよい。
例えば、左から2番目乃至4番目の拡張ブロックのアライメント量をA2乃至A4とすると、アライメント量A2乃至A4は、次式(8)乃至(10)により求められる。
A2={(OffsetX+DivWidth×1)−OffsetX}&0x03 ・・・(8)
A3={(OffsetX+DivWidth×2)−OffsetX}&0x03 ・・・(9)
A4={(OffsetX+DivWidth×3)−OffsetX}&0x03 ・・・(10)
A3={(OffsetX+DivWidth×2)−OffsetX}&0x03 ・・・(9)
A4={(OffsetX+DivWidth×3)−OffsetX}&0x03 ・・・(10)
そして、MaxAlignは、次式(11)により求められる。
MaxAlign=max(A2,A3,A4) ・・・(11)
次に、図18を参照して、拡張ブロックの高さROIHeightの設定方法について説明する。
まず、次式(12)により、オリジナル画像を分割数DivNumで単純に分割した場合のオリジナルブロックの高さDivHeightが求められる。
DivHeight=OrgWidth/DivNum ・・・(12)
なお、高さDivHeightは小数点以下を切り捨てた値とする。従って、例えば、図18に示されるように、オリジナル画像を上端から高さDivHeightで分割していった場合、オリジナル画像の高さOrgHeightが分割数DivNumで割り切れないとき、下端のオリジナルブロックの高さが、他のオリジナルブロックの高さDivHeightより高くなる。このときの下端のオリジナルブロックの高さMaxDivHeightは、次式(13)により求められる。
MaxDivHeight=OrgHeight−(DivHeight×(DivNum−1)) ・・・(13)
拡張ブロックの高さROIHeightは、この高さMaxDivHeightを用いて、次式(14)により求められる。
ROIHeight=MaxDivHeight+2×OffsetY ・・・(14)
このように、拡張ブロックの幅ROIWidthは、図17の右端の幅MaxDivWidthの拡張ブロックのアライメント量が最大になった場合の、右端の拡張ブロックの幅と等しくなる。すなわち、各拡張ブロックの幅ROIWidthは、想定される拡張ブロックの幅の最大値に合わせられる。同様に、各拡張ブロックの高さROIHeightは、想定される拡張ブロックの高さの最大値に合わせられる。従って、各拡張ブロックのサイズを統一し、処理の効率化および高速化を実現することが可能になる。
なお、処理の効率化および高速化を特に考慮する必要がなければ、DivWidthとMaxDivWidthの違い、DivHeightとMaxDivHeightの違い、アライメント量の違いに応じて、拡張ブロック毎に異なるサイズに設定するようにしてもよい。
次に、図19を参照して、各拡張ブロックの位置の設定方法について説明する。なお、以下、拡張ブロックのブロック単位の座標を(blkX, blkY)で表し、左上隅の拡張ブロックの座標(blkX, blkY)=(0,0)とする。
各拡張ブロックの左上隅の画素の座標(x,y)は、次式(15)および(16)により求められる。
x=(DivWidth×blkX)&^0x03 ・・・(15)
y=DivHeight×blkY ・・・(16)
y=DivHeight×blkY ・・・(16)
ここで、^0x03は、2進数で表すと11111100である。従って、各拡張ブロックの左上隅の画素のx座標は、基本的に幅DivWidthの間隔で設定されるが、x座標の値が4の倍数にならない場合には、4の倍数になるようにメモリアライメントが行われる。また、各拡張ブロックの左上隅の画素のy座標は、高さDivHeightの間隔で設定される。
なお、ここでは、拡張画像の各画素のデータがラスタ順にメモリに配置されることを前提としているため、各拡張ブロックの左辺のx軸方向の座標が4の倍数になるようにメモリアライメントを行う例を示した。しかし、拡張画像の各画素のデータがラスタ順以外の順序でメモリに配置される場合、この限りではなく、拡張ブロックの他の辺のx軸またはy軸方向の座標が4の倍数になるようにメモリアライメントが行われるときもある。また、メモリアライメントを行う際の座標の値は、上述した4の倍数に限定されるものではなく、情報処理装置1または情報処理装置121のプロセッサのSIMDの処理単位(バイト)、および、拡張画像の各画素のデータ量(バイト)に応じて変化する。
以上のようにして、縦ROIHeight×幅ROIWidthの拡張ブロックが、縦DivNum×横DivNum個設定された後、拡張ブロック毎に上述した反復更新処理が行われ、各拡張ブロックに対応するストラクチャUk(すなわち、拡張ストラクチャ)が生成される。そして、生成された拡張ストラクチャがつなぎ合わされて、復元画像が生成される。
ここで、図20乃至図24を参照して、各拡張ストラクチャをつなぎ合わせて復元画像を生成する処理の詳細について説明する。
図20に示されるように、拡張ストラクチャは、その位置によりパターン1乃至4に分類される。具体的には、拡張画像の左上隅の拡張ブロックに対応する拡張ストラクチャがパターン1に分類される。また、拡張画像の上端の拡張ブロックのうち左上隅の拡張ブロックを除く拡張ブロックに対応する拡張ストラクチャがパターン2に分類される。さらに、拡張画像の左端の拡張ブロックのうち左上隅の拡張ブロックを除く拡張ブロックに対応する拡張ストラクチャがパターン3に分類される。そして、パターン1乃至3以外の拡張ストラクチャがパターン4に分類される。
パターン1の拡張ストラクチャについては、図21に示されるように、右端から幅OffsetXおよび下端から高さOffsetYの黒く塗り潰された領域が除去される。そして、残りの領域が、左上隅の画素の座標(x,y)が拡張画像の座標系において座標(0,0)となるように配置される。
パターン2の拡張ストラクチャについては、図22に示されるように、左端から幅OffsetXおよび下端から高さOffsetYの黒く塗り潰された領域が除去される。そして、残りの領域が、左上隅の画素の座標(x,y)が拡張画像の座標系において次式(17)および(18)で求められる座標となるように配置される。
x=(DivWidth×blkX)&^0x03+offsetX ・・・(17)
y=0 ・・・(18)
y=0 ・・・(18)
パターン3の拡張ストラクチャについては、図23に示されるように、右端から幅OffsetXおよび上端から高さOffsetYの黒く塗り潰された領域が除去される。そして、残りの領域が、左上隅の画素の座標(x,y)が拡張画像の座標系において次式(19)および(20)で求められる座標となるように配置される。
x=0 ・・・(19)
y=DivHeight×blkY+offsetY ・・・(20)
y=DivHeight×blkY+offsetY ・・・(20)
パターン4の拡張ストラクチャについては、図24に示されるように、左端から幅OffsetXおよび上端から高さOffsetYの黒く塗り潰された領域が除去される。そして、残りの領域が、左上隅の画素の座標(x,y)が拡張画像の座標系において次式(21)および(22)で求められる座標となるように配置される。
x=(DivWidth×blkX)&^0x03+offsetX ・・・(21)
y=DivHeight×blkY+offsetY ・・・(22)
y=DivHeight×blkY+offsetY ・・・(22)
このように、拡張ストラクチャをつなぎ合わせるときに、つなぎ合わせる前に除去する領域、および、配置する座標をパターン毎に変更し、同じ大きさのブロック単位で処理を行うことにより、処理の効率化および高速化を実現することができる。
そして、各拡張ストラクチャを配置することにより生成された画像の周囲の幅offsetXおよび高さoffsetYの領域を除去することにより、復元画像を得ることができる。
以上のように、糊代処理を実行することにより、ブロック間の連続性を確保することができ、ブロックに分割して処理することによる画質の低下を抑制することができる。
また、反復更新処理を高速化したり、あるいは、反復更新処理で必要となる中間バッファのサイズを小さくしたりすることができる。
例えば、図25に示されるように、スレッド203a乃至203dの4つのスレッドにより反復更新処理を並列して実行可能な場合について考える。この場合、例えば、拡張画像201を拡張ブロック201a乃至201dに4分割し、4組の中間バッファ202a乃至202dおよびスレッド203a乃至203dを用いて、各拡張ブロックに対して並列に反復更新処理を実行することにより、拡張ストラクチャ204a乃至204dを高速に生成することができる。
また、図26に示されるように、1つのスレッド212のみにより反復更新処理を実行する場合について考える。この場合、例えば、拡張画像201を拡張ブロック201a乃至201dに4分割し、1組の中間バッファ211およびスレッド212を用いて、1つずつ拡張ブロックの反復更新処理を実行し、1つずつ拡張ストラクチャ213を生成することにより、必要な中間バッファのサイズを小さくすることができる。
ここで、ダミー領域の幅OffsetXおよび高さOffsetY、並びに、分割数DivNumの設定方法の例について説明する。
例えば、ダミー領域の幅OffsetXおよび高さOffsetYは、H_init生成部21がPSFの推定を行い、点広がり関数Hの初期値H_initを生成する際に用いるFFT(高速フーリエ変換)のタップ数Nt、および、トータルバリエーションフィルタ37がストラクチャ成分とテクスチャ成分を分離するために実行する反復演算回数Nrに基づいて設定される。より具体的には、ダミー領域の幅OffsetXおよび高さOffsetYは、FFTのタップ数Ntとトータルバリエーションフィルタ37の反復演算回数Nrの合計以上の値に設定される。
これは、データが存在しない領域や不連続領域に対してFFTを実行すると、信号の不連続性による歪みが生じ、画像処理におけるノイズとなる。そこで、FFTによるノイズの影響が、オリジナルブロック内の画像に及ぶのを防止するために、ダミー領域の幅OffsetXおよび高さOffsetYが、FFTのタップ数Nt以上に設定される。
また、トータルバリエーションフィルタ37は、1回演算を繰り返す度に、演算対象とする画像の範囲を1画素ずつ外側に広げていくのを特徴とする。そこで、FFTによるノイズが発生している領域の影響が、トータルバリエーションフィルタ37の演算により、オリジナルブロック内の画像に及ぶのを防止するために、ダミー領域の幅OffsetXおよび高さOffsetYが、FFTのタップ数Nt+トータルバリエーションフィルタ37の反復演算回数Nr以上に設定される。
このように、ダミー領域の幅OffsetXおよび高さOffsetYを、FFTのタップ数Ntとトータルバリエーションフィルタ37の反復演算回数Nrの合計以上の値に設定することにより、不連続領域で発生するノイズの影響を抑え、ブロックに分割して処理することによる画質の低下をより確実に抑制することができる。
また、分割数DivNumは、例えば、拡張ブロックのデータサイズが、使用可能なメモリのサイズを超えないように設定される。この場合、さらに、使用可能なメモリのサイズの増減に合わせて、分割数DivNumを動的に変化させるようにしてもよい。
また、分割数DivNumは、例えば、CPUなどのプロセッサの数やコア数など、拡張ブロックの反復更新処理を並列して実行できる数に基づいて設定される。この場合、さらに、他の処理によりプロセッサの使用率が変化し、並列処理を実行できる数が増減する場合、それに合わせて、分割数DivNumを動的に変化させるようにしてもよい。
また、分割数DivNumは、例えば、処理速度が極端に遅くなるのを防止するために、拡張ブロックからオリジナルブロックを引いた枠のサイズが、オリジナルブロックのサイズより大きくならないように設定される。
なお、以上の説明では、縦方向および横方向の分割数をそれぞれ同じDivNumとする例を示したが、縦方向と横方向とで異なる分割数に設定するようにしてもよい。
また、1個の拡張ブロックにおいて、点広がり関数Hkの更新を行い、最終的に得られる点広がり関数を、他の拡張ブロックの点広がり関数として用いて、他の拡張ブロックに対応するストラクチャUkを更新するようにしてもよい。
この場合、他の拡張ブロックでは、点広がり関数Hkの更新を行う必要がなく、ストラクチャUkの更新のみを行えばよいこととなる。
したがって、拡張ブロック毎に、対応する点広がり関数Hkの更新を行う場合と比較して、拡張ブロックそれぞれの点広がり関数Hを算出するために用いられるメモリ(の記憶容量)を少なくすることができるととも、点広がり関数を更新(算出)するための計算量を少なくすることが可能となる。
[他の変形例]
また、第1の実施の形態では、ブレ画像を複数のブロックに分割し、ブロック毎に、点広がり関数Hk及びストラクチャUkを反復して更新するようにしたが、ブレ画像を構成する複数のブロックのうちの所定のブロックについてのみ、点広がり関数Hkの更新を行い、最終的に得られる点広がり関数を、他のブロックの点広がり関数として用いるようにしても、ブロックそれぞれの点広がり関数Hkを算出するために用いられるメモリを少なくすることができるととも、点広がり関数を更新するための計算量を少なくすることが可能となる。
また、第1の実施の形態では、ブレ画像を複数のブロックに分割し、ブロック毎に、点広がり関数Hk及びストラクチャUkを反復して更新するようにしたが、ブレ画像を構成する複数のブロックのうちの所定のブロックについてのみ、点広がり関数Hkの更新を行い、最終的に得られる点広がり関数を、他のブロックの点広がり関数として用いるようにしても、ブロックそれぞれの点広がり関数Hkを算出するために用いられるメモリを少なくすることができるととも、点広がり関数を更新するための計算量を少なくすることが可能となる。
ところで、反復更新処理では、ブレ画像を対象として処理を行うこととしたが、その他、合焦距離のズレによるピンボケ、面内一様のボケ、カメラレンズによる面内不均一な周辺ボケ等が生じたボケ画像に対しても処理を行うことが可能である。
また、反復更新処理は、予め記録しておいた、ブレが生じた動画像に対して処理を行うこともできるし、動画像を撮像しているときに生じたブレを検出して、リアルタイムに除去するように処理を行うこともできる。
図1における第1の実施の形態では、ストラクチャ成分とテクスチャ成分とを分離するために、トータルバリエーションフィルタ37を用いることとしたが、その他、例えばBilateralフィルタ、εフィルタ等を用いるようにしてもよい。
第1及び第2の実施の形態では、処理部28が、ブレ画像Gから、conv部27からの演算結果Hk○Ukを減算し、その減算結果G-Hk○Ukを、残差生成部29に供給するようにしたが、その他、ブレ画像Gを、conv部27からの演算結果Hk○Ukで除算し、その除算結果(Hk○Uk)/Gを、残差生成部29に供給するよう構成しても、同様の結果を得ることができる。
上述した反復更新処理では、ステップS33において、点広がり関数Hkを用いて、ストラクチャUkの更新を行うと同時に、ステップS34において、ストラクチャUkを用いて、点広がり関数Hkの更新を行うようにしたが、これに限定されない。
すなわち、例えば、反復更新処理において、ストラクチャの更新、及び点広がり関数の更新を交互に行うようすることが可能である。
具体的には、例えば、ステップS33において、点広がり関数Hkを用いて、ストラクチャUkの更新を行い、ステップS34において、その更新により得られたストラクチャUk+1を用いて、点広がり関数Hkを更新するようにしてもよい。さらに、次回のステップS33において、更新により得られた点広がり関数Hk+1を用いて、ストラクチャUk+1を更新し、次回のステップS34において、更新により得られたストラクチャUk+2を用いて、点広がり関数Hk+1を更新するというように、ストラクチャと点広がり関数との更新を、交互に行うようにすることが可能である。
この場合、例えば、ストラクチャUkを用いて、点広がり関数Hkを更新する場合と比較して、より真のストラクチャに近いストラクチャUk+1を用いて、点広がり関数Hkを更新するため、点広がり関数Hkの更新結果として、より真の点広がり関数に近い点広がり関数Hk+1を取得することが可能となる。
また、第1の実施の形態である情報処理装置1、及び第2の実施の形態である情報処理装置121としては、例えば、画像を再生したり録画したりすることが可能な録画再生装置等に適用できる。
[コンピュータの構成例]
ところで、上述した一連の処理は、専用のハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、いわゆる組み込み型のコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
ところで、上述した一連の処理は、専用のハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、いわゆる組み込み型のコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
図27は、上述した一連の処理をプログラムにより実行するコンピュータの構成例を示している。
CPU(Central Processing Unit)301は、ROM(Read Only Memory)302、または記憶部308に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)303には、CPU301が実行するプログラムやデータなどが適宜記憶される。これらのCPU301、ROM302、及びRAM303は、バス304により相互に接続されている。
CPU301にはまた、バス304を介して入出力インタフェース305が接続されている。入出力インタフェース305には、キーボード、マウス、マイクロホンなどよりなる入力部306、ディスプレイ、スピーカなどよりなる出力部307が接続されている。CPU301は、入力部306から入力される指令に対応して各種の処理を実行する。そして、CPU301は、処理の結果を出力部307に出力する。
入出力インタフェース305に接続されている記憶部308は、例えばハードディスクからなり、CPU301が実行するプログラムや各種のデータを記憶する。通信部309は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
また、通信部309を介してプログラムを取得し、記憶部308に記憶してもよい。
入出力インタフェース305に接続されているドライブ310は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア311が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部308に転送され、記憶される。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図27に示されるように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini-Disc)を含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア311、または、プログラムが一時的もしくは永続的に格納されるROM302や、記憶部308を構成するハードディスクなどにより構成される。プログラム格納媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部309を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
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 乗算部
Claims (8)
- 入力画像に生じているボケの程度を表す点広がり関数を生成する第1の生成手段と、
前記入力画像を分割した複数の第1のブロックの周囲をそれぞれ拡張した複数の第2のブロック内の画像である複数の入力ブロック画像のストラクチャ成分のボケを前記点広がり関数に基づいてそれぞれ補正した複数の補正ブロック画像を生成する第2の生成手段と、
前記点広がり関数を用いて前記補正ブロック画像にボケを生じさせたボケ再現ブロック画像と対応する前記入力ブロック画像との間の残差が小さくなるように前記補正ブロック画像を更新し、更新した前記補正ブロック画像のストラクチャ成分を新たな前記補正ブロック画像とする更新処理を1回以上実行する更新手段と
を含む情報処理装置。 - 前記第2の生成手段は、前記点広がり関数を生成する際に用いる高速フーリエ変換のタップ数に基づいて、前記第2のブロックのサイズを設定する
請求項1に記載の情報処理装置。 - 前記第2の生成手段は、前記補正ブロック画像のストラクチャ成分とテクスチャ成分を分離する分離フィルタの反復演算回数に基づいて、前記第2のブロックのサイズを設定する
請求項1に記載の情報処理装置。 - 前記第2の生成手段は、各前記第2のブロックの所定の辺の所定の方向の座標が所定の整数の倍数になるように、前記第2のブロックのサイズおよび位置を設定する
請求項1に記載の情報処理装置。 - 前記更新手段は、前記ボケ再現ブロック画像と対応する前記入力ブロック画像との間の残差が小さくなるように、さらに前記点広がり関数を更新する
請求項1に記載の情報処理装置。 - 前記更新処理が終了した後の前記補正ブロック画像をつなぎ合わせることにより前記入力画像のボケを補正した補正画像を生成する第3の生成手段を
さらに含む請求項1に記載の情報処理装置。 - 画像に生じているボケを補正する情報処理装置が、
入力画像に生じているボケの程度を表す点広がり関数を生成し、
前記入力画像を分割した複数の第1のブロックの周囲をそれぞれ拡張した複数の第2のブロック内の画像である複数の入力ブロック画像のストラクチャ成分のボケを前記点広がり関数に基づいてそれぞれ補正した複数の補正ブロック画像を生成し、
前記点広がり関数を用いて前記補正ブロック画像にボケを生じさせたボケ再現ブロック画像と対応する前記入力ブロック画像との間の残差が小さくなるように前記補正ブロック画像を更新し、更新した前記補正ブロック画像のストラクチャ成分を新たな前記補正ブロック画像とする更新処理を1回以上実行する
ステップを含む情報処理方法。 - 入力画像に生じているボケの程度を表す点広がり関数を生成し、
前記入力画像を分割した複数の第1のブロックの周囲をそれぞれ拡張した複数の第2のブロック内の画像である複数の入力ブロック画像のストラクチャ成分のボケを前記点広がり関数に基づいてそれぞれ補正した複数の補正ブロック画像を生成し、
前記点広がり関数を用いて前記補正ブロック画像にボケを生じさせたボケ再現ブロック画像と対応する前記入力ブロック画像との間の残差が小さくなるように前記補正ブロック画像を更新し、更新した前記補正ブロック画像のストラクチャ成分を新たな前記補正ブロック画像とする更新処理を1回以上実行する
ステップを含む処理をコンピュータに実行させるためのプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009288187A JP2011128978A (ja) | 2009-12-18 | 2009-12-18 | 情報処理装置、情報処理方法、及びプログラム |
US12/911,290 US8433152B2 (en) | 2009-12-18 | 2010-10-25 | Information processing apparatus, information processing method, and program |
CN2010105988508A CN102104730A (zh) | 2009-12-18 | 2010-12-10 | 信息处理设备、信息处理方法及程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009288187A JP2011128978A (ja) | 2009-12-18 | 2009-12-18 | 情報処理装置、情報処理方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011128978A true JP2011128978A (ja) | 2011-06-30 |
Family
ID=44151217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009288187A Withdrawn JP2011128978A (ja) | 2009-12-18 | 2009-12-18 | 情報処理装置、情報処理方法、及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US8433152B2 (ja) |
JP (1) | JP2011128978A (ja) |
CN (1) | CN102104730A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101433920B1 (ko) * | 2012-05-21 | 2014-08-29 | 서울대학교산학협력단 | 기브스 현상 및 공명 인공산물 제거를 위한 신호 복원 방법 및 그 장치 |
JP2015520544A (ja) * | 2012-04-10 | 2015-07-16 | グーグル インコーポレイテッド | 画像シーケンス用のノイズリダクション |
WO2015115018A1 (ja) * | 2014-02-03 | 2015-08-06 | 満男 江口 | Simd型超並列演算処理装置向け超解像処理方法、装置、プログラム及び記憶媒体 |
KR20150145167A (ko) * | 2014-06-18 | 2015-12-29 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 |
CN114207895A (zh) * | 2019-08-07 | 2022-03-18 | Tdk株式会社 | 固体电解质、固体电解质层以及固体电解质电池 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010079875A (ja) * | 2008-08-27 | 2010-04-08 | Sony Corp | 情報処理装置、情報処理方法、及びプログラム |
KR20140097528A (ko) | 2011-11-29 | 2014-08-06 | 톰슨 라이센싱 | 비디오 품질 측정을 위한 텍스처 마스킹 |
US8989447B2 (en) * | 2012-08-13 | 2015-03-24 | Texas Instruments Incorporated | Dynamic focus for computational imaging |
WO2015186511A1 (ja) * | 2014-06-03 | 2015-12-10 | ソニー株式会社 | 画像処理装置および画像処理方法 |
JP6071974B2 (ja) * | 2014-10-21 | 2017-02-01 | キヤノン株式会社 | 画像処理方法、画像処理装置、撮像装置および画像処理プログラム |
CN110475068B (zh) * | 2019-08-30 | 2021-10-29 | 北京迈格威科技有限公司 | 图像处理方法及装置 |
CN111311562B (zh) * | 2020-02-10 | 2023-10-10 | 浙江华创视讯科技有限公司 | 虚焦图像的模糊度检测方法及装置 |
US11721001B2 (en) * | 2021-02-16 | 2023-08-08 | Samsung Electronics Co., Ltd. | Multiple point spread function based image reconstruction for a camera behind a display |
US11722796B2 (en) | 2021-02-26 | 2023-08-08 | Samsung Electronics Co., Ltd. | Self-regularizing inverse filter for image deblurring |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3189870B2 (ja) * | 1996-12-24 | 2001-07-16 | シャープ株式会社 | 画像処理装置 |
JP3711022B2 (ja) | 2000-12-28 | 2005-10-26 | 株式会社東芝 | 動画像内の特定物体認識方法及び装置 |
JP2005309560A (ja) * | 2004-04-19 | 2005-11-04 | Fuji Photo Film Co Ltd | 画像処理方法および装置並びにプログラム |
CN100389601C (zh) * | 2005-10-09 | 2008-05-21 | 北京中星微电子有限公司 | 一种视频电子防抖的装置 |
JP5079284B2 (ja) * | 2005-12-26 | 2012-11-21 | 京セラ株式会社 | 手ぶれ量検出装置、手ぶれ補正装置、撮像装置及び手ぶれ量検出方法 |
JP4655957B2 (ja) * | 2006-02-20 | 2011-03-23 | ソニー株式会社 | 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置 |
-
2009
- 2009-12-18 JP JP2009288187A patent/JP2011128978A/ja not_active Withdrawn
-
2010
- 2010-10-25 US US12/911,290 patent/US8433152B2/en not_active Expired - Fee Related
- 2010-12-10 CN CN2010105988508A patent/CN102104730A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015520544A (ja) * | 2012-04-10 | 2015-07-16 | グーグル インコーポレイテッド | 画像シーケンス用のノイズリダクション |
US9326008B2 (en) | 2012-04-10 | 2016-04-26 | Google Inc. | Noise reduction for image sequences |
US10277919B2 (en) | 2012-04-10 | 2019-04-30 | Google Llc | Noise reduction for image sequences |
KR101433920B1 (ko) * | 2012-05-21 | 2014-08-29 | 서울대학교산학협력단 | 기브스 현상 및 공명 인공산물 제거를 위한 신호 복원 방법 및 그 장치 |
WO2015115018A1 (ja) * | 2014-02-03 | 2015-08-06 | 満男 江口 | Simd型超並列演算処理装置向け超解像処理方法、装置、プログラム及び記憶媒体 |
JP2015146121A (ja) * | 2014-02-03 | 2015-08-13 | 満男 江口 | Simd型超並列演算処理装置向け超解像処理方法、装置、プログラム及び記憶媒体 |
US10032257B2 (en) | 2014-02-03 | 2018-07-24 | Lightron International Co. Ltd. | Super resolution processing method, device, and program for single interaction multiple data-type super parallel computation processing device, and storage medium |
KR20150145167A (ko) * | 2014-06-18 | 2015-12-29 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 |
JP2016004572A (ja) * | 2014-06-18 | 2016-01-12 | バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド | シングルチャネル畳み込み層のための処理方法及び処理装置、並びにマルチチャネル畳み込み層のための処理方法及び処理装置 |
KR101687081B1 (ko) * | 2014-06-18 | 2016-12-28 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 |
CN114207895A (zh) * | 2019-08-07 | 2022-03-18 | Tdk株式会社 | 固体电解质、固体电解质层以及固体电解质电池 |
Also Published As
Publication number | Publication date |
---|---|
US20110150353A1 (en) | 2011-06-23 |
CN102104730A (zh) | 2011-06-22 |
US8433152B2 (en) | 2013-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011128978A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP2010079875A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP2011134204A (ja) | 画像処理装置、画像処理方法、及びプログラム | |
JP6218402B2 (ja) | タイル単位に基づいて大きい入力映像の不均一モーションブラーを除去する方法及び装置 | |
JP2008146643A (ja) | 動きでぶれた画像における動きのぶれを低減する方法、動きでぶれた画像における動きのぶれを低減するための装置、および動きでぶれた画像における動きのぶれを低減するコンピュータ・プログラムを具現するコンピュータ読み取り可能な媒体 | |
WO2015119207A1 (ja) | 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体 | |
JP5367667B2 (ja) | 画像処理装置 | |
JP2013192224A (ja) | ブラー映像及びノイズ映像で構成されたマルチフレームを用いて非均一モーションブラーを除去する方法及び装置 | |
JP2007188493A (ja) | 動きボケ画像中の動きボケを減らす方法、それぞれが各自のボケ・パラメータを持つ複数の動きボケ画像を用いて動きボケの減らされた画像を生成する方法、動きボケ画像中の動きボケを減らす装置、およびそれぞれが各自のボケ・パラメータを持つ複数の動きボケ画像を用いて動きボケの減らされた画像を生成する装置 | |
JPWO2009107197A1 (ja) | 画像処理装置、画像処理方法および画像処理プログラム | |
JP5105286B2 (ja) | 画像復元装置、画像復元方法及び画像復元プログラム | |
JPWO2013027723A1 (ja) | ノイズ除去装置、ノイズ除去方法及びプログラム | |
US20110091129A1 (en) | Image processing apparatus and method, and program | |
JP2013246460A (ja) | 画像処理装置、画像処理方法、およびプログラム | |
JP2012073703A (ja) | 画像ボケ量計算装置およびそのプログラム | |
JP4927005B2 (ja) | 変化要因情報のデータの生成法および信号処理装置 | |
JP5495500B2 (ja) | 変化要因情報のデータの生成法および信号処理装置 | |
JP4930638B2 (ja) | 画像補正装置および画像補正方法 | |
JP5659126B2 (ja) | 画像処理装置、画像処理プログラム及び画像処理方法 | |
JP2016220074A (ja) | 画像処理装置、画像処理方法及びプログラム | |
JP5014514B2 (ja) | 画像処理装置 | |
JP5065099B2 (ja) | 変化要因情報のデータの生成法および信号処理装置 | |
JP5750349B2 (ja) | 画像復元装置、画像復元方法およびプログラム | |
JP5701816B2 (ja) | 画像処理装置、画像処理プログラム及び画像処理方法 | |
JP2015043530A (ja) | 画像処理装置及び画像処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130305 |