(57)【要約】【課題】より正確に、撮像画像に生じた手振れ等によるぼけを補正する。【解決手段】分割部２２は、撮像の結果得られる撮像画像上に、ぼけを補正する対象となる対象領域を設定し、PSF推定部２３は、対象領域に基づいて、対象領域に生じているぼけを表すぼけ関数を推定し、復元部２４は、PSF推定部２３によるぼけ関数の推定が成功したか否かに応じて、対象領域のぼけを補正する。本発明は、例えば、被写体を撮像して得られる撮像画像のぼけを補正する画像処理装置に適用できる。【選択図】図１
2011128926.tif 000002
【特許請求の範囲】
【請求項１】
撮像の結果得られる撮像画像に生じているぼけを補正する画像処理装置において、
前記撮像画像上に、ぼけを補正する対象となる対象領域を設定する領域設定手段と、
前記対象領域に基づいて、前記対象領域に生じているぼけを表すぼけ関数を推定する推定手段と、
前記推定手段による前記ぼけ関数の推定が成功したか否かに応じて、前記対象領域のぼけを補正する補正手段と
を含む画像処理装置。
【請求項２】
前記ぼけ関数は、前記対象領域に生じているぼけの方向を表すものであり、
前記補正手段は、前記ぼけの方向の推定が成功した場合、前記対象領域に対して、前記ぼけの方向に基づいて生成されるフィルタを用いたフィルタリング処理により、前記対象領域のぼけを補正する
請求項１に記載の画像処理装置。
【請求項３】
前記ぼけ関数は、前記対象領域に生じているぼけの方向の他、前記ぼけの大きさを表すものであり、
前記補正手段は、
前記ぼけの方向の推定、及び前記ぼけの大きさの推定が成功した場合、前記対象領域に対して、前記ぼけの方向及び大きさに基づいて生成されるフィルタを用いたフィルタリング処理により、前記対象領域のぼけを補正し、
前記ぼけの方向の推定のみが成功した場合、前記対象領域に対して、前記ぼけの方向に基づいて生成されるフィルタを用いたフィルタリング処理により、前記対象領域のぼけを補正する
請求項２に記載の画像処理装置。
【請求項４】
前記補正手段は、前記ぼけの方向の推定が失敗した場合、前記対象領域に対して、予め用意されているフィルタを用いたフィルタリング処理により、前記対象領域のぼけを補正する
請求項３に記載の画像処理装置。
【請求項５】
前記撮像画像を、複数のブロックに区分けする区分け手段をさらに含み、
前記領域設定手段は、前記複数のブロックを、それぞれ、前記対象領域に設定する
請求項１に記載の画像処理装置。
【請求項６】
ぼけが補正された前記複数のブロックを再構成して、前記撮像画像のぼけが補正された補正画像を生成する補正画像生成手段をさらに含む
請求項５に記載の画像処理装置。
【請求項７】
前記区分け手段は、隣接する前記ブロックどうしの領域が一部分重複する前記複数のブロックに区分けし、
前記補正画像生成手段は、重複する領域の、対応する画素の画素値どうしを、所定の割合で混合するαブレンドを用いて、前記複数のブロックを再構成する
請求項６に記載の画像処理装置。
【請求項８】
前記対象領域に基づいて、前記ぼけ関数の推定に成功したか否かを判定する判定手段をさらに含み、
前記補正手段は、前記判定手段による判定結果に応じて、前記対象領域のぼけを補正する
請求項１に記載の画像処理装置。
【請求項９】
前記ぼけ関数は、前記対象領域に生じているぼけの方向を表すものであり、
前記推定手段は、
前記対象領域のうち、所定サイズからなるブロックをそれぞれ表す複数の小ブロックを対象として、前記小ブロックを構成する画素の画素値をフーリエ変換して得られる、前記複数の小ブロック毎のパワースペクトラムを加算し、
その加算結果に基づいて、前記ぼけの方向を推定し、
前記判定手段は、前記パワースペクトラムの前記加算結果に基づいて、前記ぼけの方向の推定に成功したか否かを判定する
請求項８に記載の画像処理装置。
【請求項１０】
前記ぼけ関数は、前記対象領域に生じているぼけの方向の他、前記ぼけの大きさを表すものであり、
前記推定手段は、
前記対象領域のうち、前記所定サイズよりも大きなサイズからなるブロックをそれぞれ表す複数の大ブロックを対象として、前記大ブロックにおける縦方向又は横方向の一方の方向に並ぶ画素の画素値の総和をフーリエ変換して得られる、前記複数の大ブロック毎のパワースペクトラムを加算し、
その加算結果に対して逆フーリエ変換して得られるケプストラムに基づいて、前記縦方向又は横方向の一方の方向のぼけの大きさを検出し、
前記ぼけの方向の推定結果と、前記一方の方向のぼけの大きさの検出結果とに基づいて、前記対象領域に生じている前記ぼけの大きさとして、前記縦方向及び前記横方向により表される任意方向のぼけの大きさを推定し、
前記判定手段は、さらに、前記ケプストラムに基づいて、前記対象領域に生じている前記ぼけの大きさの推定に成功したか否かを判定する
請求項９に記載の画像処理装置。
【請求項１１】
前記ぼけ関数は、PSF(point spread function)である
請求項１に記載の画像処理装置。
【請求項１２】
撮像の結果得られる撮像画像に生じているぼけを補正する画像処理装置の画像処理方法において、
前記画像処理装置は、
領域設定手段と、
推定手段と、
補正手段と
を含み、
前記領域設定手段が、前記撮像画像上に、ぼけを補正する対象となる対象領域を設定し、
前記推定手段が、前記対象領域に基づいて、前記対象領域に生じているぼけを表すぼけ関数を推定し、
前記補正手段が、前記推定手段による前記ぼけ関数の推定が成功したか否かに応じて、前記対象領域のぼけを補正する
ステップを含む画像処理方法。
【請求項１３】
撮像の結果得られる撮像画像に生じているぼけを補正する画像処理装置のコンピュータを、
前記撮像画像上に、ぼけを補正する対象となる対象領域を設定する領域設定手段と、
前記対象領域に基づいて、前記対象領域に生じているぼけを表すぼけ関数を推定する推定手段と、
前記推定手段による前記ぼけ関数の推定が成功したか否かに応じて、前記対象領域のぼけを補正する補正手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及びプログラムに関し、特に、例えば、撮像時の手振れ等により生じる画像ぼけをより正確に補正できるようにした画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【０００２】
例えば、ユーザが、カメラを手に持って被写体を撮像する場合には、被写体の撮像により得られる撮像画像に、ユーザの手振れ等によるぼけ（ぶれ）が生じ得る。手振れ等による撮像画像のぼけは、シャッタの露光時間が長くなる程に大きくなる傾向にあり、非常に問題となっている。このため、手振れ等による撮像画像のぼけを補正するための補正機能が必要となる。
【０００３】
そこで、カメラの撮像により得られる撮像画像に生じているぼけを補正するぼけ補正技術が存在する（例えば、特許文献１を参照）。
【０００４】
このぼけ補正技術では、撮像画像に生じているぼけを表すPSF(point spread function、点広がり関数)を推定し、その推定により得られたPSFに基づいて、ぼけを補正するためのフィルタを生成する。そして、撮像画像に対して、生成したフィルタを用いたフィルタリング処理を行なうことにより、撮像画像に生じているぼけを補正する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１１１５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のぼけ補正技術では、PSFの推定を正確に推定できたか否かに拘わらず、推定したPSFに基づいて、ぼけを補正するためのフィルタを生成し、生成したフィルタを用いたフィルタリング処理により、撮像画像のぼけを補正するようにしている。
【０００７】
このため、従来のぼけ補正技術では、誤って推定されたPSFに基づいて、フィルタを生成した場合には、ぼけを正確に補正するためのフィルタを生成することができないため、誤って推定されたPSFに基づき生成したフィルタを用いて撮像画像のぼけを補正した後、弊害が生じ得る。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、PSFの推定を正確に推定できたか否かに応じて、撮像画像のぼけを補正するためのフィルタを選択的に用いるようにして、より正確に撮像画像のぼけを補正するものである。
【課題を解決するための手段】
【０００９】
本発明の一側面の画像処理装置は、撮像の結果得られる撮像画像に生じているぼけを補正する画像処理装置であって、前記撮像画像上に、ぼけを補正する対象となる対象領域を設定する領域設定手段と、前記対象領域に基づいて、前記対象領域に生じているぼけを表すぼけ関数を推定する推定手段と、前記推定手段による前記ぼけ関数の推定が成功したか否かに応じて、前記対象領域のぼけを補正する補正手段とを含む画像処理装置である。
【００１０】
前記ぼけ関数は、前記対象領域に生じているぼけの方向を表すものであり、前記補正手段では、前記ぼけの方向の推定が成功した場合、前記対象領域に対して、前記ぼけの方向に基づいて生成されるフィルタを用いたフィルタリング処理により、前記対象領域のぼけを補正することができる。
【００１１】
前記ぼけ関数は、前記対象領域に生じているぼけの方向の他、前記ぼけの大きさを表すものであり、前記補正手段では、前記ぼけの方向の推定、及び前記ぼけの大きさの推定が成功した場合、前記対象領域に対して、前記ぼけの方向及び大きさに基づいて生成されるフィルタを用いたフィルタリング処理により、前記対象領域のぼけを補正し、前記ぼけの方向の推定のみが成功した場合、前記対象領域に対して、前記ぼけの方向に基づいて生成されるフィルタを用いたフィルタリング処理により、前記対象領域のぼけを補正することができる。
【００１２】
前記補正手段では、前記ぼけの方向の推定が失敗した場合、前記対象領域に対して、予め用意されているフィルタを用いたフィルタリング処理により、前記対象領域のぼけを補正することができる。
【００１３】
前記撮像画像を、複数のブロックに区分けする区分け手段をさらに設け、前記領域設定手段では、前記複数のブロックを、それぞれ、前記対象領域に設定することができる。
【００１４】
ぼけが補正された前記複数のブロックを再構成して、前記撮像画像のぼけが補正された補正画像を生成する補正画像生成手段をさらに設けることができる。
【００１５】
前記区分け手段では、隣接する前記ブロックどうしの領域が一部分重複する前記複数のブロックに区分けし、前記補正画像生成手段では、重複する領域の、対応する画素の画素値どうしを、所定の割合で混合するαブレンドを用いて、前記複数のブロックを再構成することができる。
【００１６】
前記対象領域に基づいて、前記ぼけ関数の推定に成功したか否かを判定する判定手段をさらに設け、前記補正手段では、前記判定手段による判定結果に応じて、前記対象領域のぼけを補正することができる。
【００１７】
前記ぼけ関数は、前記対象領域に生じているぼけの方向を表すものであり、前記推定手段では、前記対象領域のうち、所定サイズからなるブロックをそれぞれ表す複数の小ブロックを対象として、前記小ブロックを構成する画素の画素値をフーリエ変換して得られる、前記複数の小ブロック毎のパワースペクトラムを加算し、その加算結果に基づいて、前記ぼけの方向を推定し、前記判定手段では、前記パワースペクトラムの前記加算結果に基づいて、前記ぼけの方向の推定に成功したか否かを判定することができる。
【００１８】
前記ぼけ関数は、前記対象領域に生じているぼけの方向の他、前記ぼけの大きさを表すものであり、前記推定手段では、前記対象領域のうち、前記所定サイズよりも大きなサイズからなるブロックをそれぞれ表す複数の大ブロックを対象として、前記大ブロックにおける縦方向又は横方向の一方の方向に並ぶ画素の画素値の総和をフーリエ変換して得られる、前記複数の大ブロック毎のパワースペクトラムを加算し、その加算結果に対して逆フーリエ変換して得られるケプストラムに基づいて、前記縦方向又は横方向の一方の方向のぼけの大きさを検出し、前記ぼけの方向の推定結果と、前記一方の方向のぼけの大きさの検出結果とに基づいて、前記対象領域に生じている前記ぼけの大きさとして、前記縦方向及び前記横方向により表される任意方向のぼけの大きさを推定し、前記判定手段では、さらに、前記ケプストラムに基づいて、前記対象領域に生じている前記ぼけの大きさの推定に成功したか否かを判定することができる。
【００１９】
前記ぼけ関数は、PSF(point spread function)とすることができる。
【００２０】
本発明の一側面の画像処理方法は、撮像の結果得られる撮像画像に生じているぼけを補正する画像処理装置の画像処理方法であって、前記画像処理装置は、領域設定手段と、推定手段と、補正手段とを含み、前記領域設定手段が、前記撮像画像上に、ぼけを補正する対象となる対象領域を設定し、前記推定手段が、前記対象領域に基づいて、前記対象領域に生じているぼけを表すぼけ関数を推定し、前記補正手段が、前記推定手段による前記ぼけ関数の推定が成功したか否かに応じて、前記対象領域のぼけを補正するステップを含む画像処理方法である。
【００２１】
本発明の一側面のプログラムは、撮像の結果得られる撮像画像に生じているぼけを補正する画像処理装置のコンピュータを、前記撮像画像上に、ぼけを補正する対象となる対象領域を設定する領域設定手段と、前記対象領域に基づいて、前記対象領域に生じているぼけを表すぼけ関数を推定する推定手段と、前記推定手段による前記ぼけ関数の推定が成功したか否かに応じて、前記対象領域のぼけを補正する補正手段として機能させるためのプログラムである。
【００２２】
本発明によれば、前記撮像画像上に、ぼけを補正する対象となる対象領域が設定され、前記対象領域に基づいて、前記対象領域に生じているぼけを表すぼけ関数が推定され、前記ぼけ関数の推定が成功したか否かに応じて、前記対象領域のぼけが補正される。
【発明の効果】
【００２３】
本発明によれば、より正確に、撮像画像に生じた手振れ等によるぼけを補正することができる。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態である画像処理装置の構成例を示すブロック図である。
【図２】PSF推定部により推定されるPSFの一例を示す図である。
【図３】方向推定部の構成例を示すブロック図である。
【図４】注目ブロックから１６ラインにより構成される領域を抽出する場合の一例を示す図である。
【図５】θ検出部が行なうθ検出処理の概要を示す図である。
【図６】θ検出部６４が行なうラドン変換の一例を示す図である。
【図７】θ検出部が行なうθ判定処理を説明するための図である。
【図８】大きさ推定部の構成例を示すブロック図である。
【図９】注目ブロックを、６４×６４画素のブロックに分割する場合の一例を示す図である。
【図１０】６４×６４画素のブロックから、横ブレ成分Lxを検出するために用いる６４×１画素のブロックを生成する場合の一例を示す図である。
【図１１】横ブレ成分検出部が横ブレ成分Lxを検出する処理の一例を示す図である。
【図１２】ケプストラム変換処理により得られる変換結果の一例を示す図である。
【図１３】L検出部が行なうL判定処理の一例を示す図である。
【図１４】復元部が注目ブロックのぼけを補正するために用いるフィルタを決定する決定方法の一例を示す図である。
【図１５】復元部が、ぼけの方向θに並ぶ画素の高域成分を強調させて、ぼけを補正するθ方向エンハンサを生成する場合の一例を示している。
【図１６】画像処理装置が行うぼけ補正処理を説明するためのフローチャートである。
【図１７】方向推定部が行なう方向推定処理を説明するためのフローチャートである。
【図１８】パワースペクトラム変換処理を説明するためのフローチャートである。
【図１９】図８の大きさ推定部が行なう大きさ推定処理を説明するためのフローチャートである。
【図２０】横ブレ成分検出処理を説明するためのフローチャートである。
【図２１】ケプストラム変換処理を説明するためのフローチャートである。
【図２２】大きさ推定部の他の構成例を示すブロック図である。
【図２３】６４×６４画素のブロックから、縦ブレ成分Lyを検出するために用いる１×６４画素のブロックを生成する場合の一例を示す図である。
【図２４】縦ブレ成分検出部が縦ブレ成分Lyを検出する処理の一例を示す図である。
【図２５】図２２の大きさ推定部が行なう大きさ推定処理を説明するためのフローチャートである。
【図２６】縦ブレ成分検出処理を説明するためのフローチャートである。
【図２７】撮像画像を、隣接する短冊ブロックどうしの一部分の領域が重複するように、複数の短冊ブロックを区分けした場合の一例を示す図である。
【図２８】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００２５】
以下、発明を実施するための形態（以下、本実施の形態という）について説明する。なお、説明は以下の順序で行う。
１．本実施の形態（PSFの推定結果の成否に応じて、ぼけの補正に用いるフィルタを変更する場合の一例）
２．変形例
【００２６】
＜１．本実施の形態＞
[画像処理装置１の構成例]
図１は、本実施の形態である画像処理装置１の構成例を示している。
【００２７】
この画像処理装置１は、例えば、風景や人物などの被写体を撮像する撮像装置であり、ユーザ操作に応じて被写体を撮像する。そして、画像処理装置１は、撮像により得られる撮像画像に対して、手振れやフォーカスずれにより生じているぼけを補正するぼけ補正処理を施す。
【００２８】
画像処理装置１は、撮像部２１、分割部２２、PSF（point spread function、点広がり関数）推定部２３、及び復元部２４により構成される。
【００２９】
撮像部２１は、例えば、CMOS（complementary metal oxide semiconductor）イメージセンサ等の撮像素子により構成されており、被写体の撮像を行う。そして、撮像部２１は、被写体の撮像により得られる撮像画像を、分割部２２に供給する。
【００３０】
分割部２２は、撮像部２１からの撮像画像を、例えば、６４本の水平ラインにより構成される短冊状のブロック（以下、短冊ブロックという）に分割する。そして、分割部２２は、分割により得られる複数の短冊ブロックそれぞれに、順次注目し、注目している短冊ブロックを、注目ブロックとしてPSF推定部２３及び復元部２４に供給する。
【００３１】
PSF推定部２３は、分割部２２からの注目ブロックに基づいて、注目ブロックに生じているぼけの方向や大きさを表すPSFを推定する。
【００３２】
[PSFの一例]
次に、図２は、PSF推定部２３により推定されるPSFの一例を示している。
【００３３】
図２において、横軸（Ｘ軸）は、注目ブロックにおける水平方向の画素の位置ｘを表している。また、縦軸（Ｙ軸）は、注目ブロックにおける垂直方向の画素の位置ｙを表している。さらに、原点(0,0)は、注目ブロックを構成する複数の画素のうち、左下の画素が存在する位置を表している。
【００３４】
図２において、PSFは、ぼけの大きさL、及びぼけの方向を表す角度θにより表される。なお、角度θは、０度乃至１７９度までの値をとる。
【００３５】
ここで、ぼけの大きさLとは、注目ブロック上において被写体の輪郭がぼけて広がった距離、すなわち、被写体のぼけによる広がりの幅をいい、横方向（水平方向）のぼけの大きさを表す横ブレ成分Lxと、縦方向（垂直方向）のぼけの大きさを表す縦ブレ成分Lyとにより表される。
【００３６】
また、ぼけの方向を表す角度θとは、注目ブロック上において被写体の輪郭がぼけて広がった方向を表す角度をいい、図２の横軸とPSFとの成す角度により表される。
【００３７】
具体的には、例えば、直線状の手振れにより、注目ブロック上の被写体の輪郭が、ぼけがない状態のときにあるべき位置（例えば、図２の原点(0,0)）から５画素分だけ右上方向（横軸を０度とした場合の４５度の方向）に広がったとする。つまり、注目ブロックにおいて、本来あるべき被写体の輪郭の位置だけでなく、その位置から５画素だけ離れた位置にもその輪郭があったとする。このような場合、注目ブロックのぼけの大きさLは５画素分の距離となり、注目ブロックのぼけの方向を表す角度θは、右上方向を表す４５度となる。
【００３８】
また、PSF推定部２３は、注目ブロックのPSFを正確に推定することができたか否かを判定する。そして、PSF推定部２３は、その判定により得られる判定結果を、推定した注目ブロックのPSFとともに、復元部２４に供給する。
【００３９】
すなわち、PSF推定部２３は、方向推定部４１及び大きさ推定部４２により構成されている。方向推定部４１は、分割部２２からの注目ブロックに基づいて、注目ブロックのぼけの方向を表す角度θを推定するとともに、その角度θを正確に推定できたか否かを判定する。そして、方向推定部４１は、推定したぼけの方向を表す角度θを、大きさ推定部４２に供給するとともに、判定により得られる判定結果に対応付けて、復元部２４に供給する。
【００４０】
また、大きさ推定部２４は、分割部２２からの注目ブロック、及び方向推定部４１からのぼけの大きさを表す角度θに基づいて、注目ブロックのぼけの大きさLを推定する。さらに、大きさ推定部２４は、分割部２２からの注目ブロックに基づいて、ぼけの大きさLを正確に推定できたか否かを判定する。
【００４１】
そして、大きさ推定部２４は、推定したぼけの大きさLを、判定により得られる判定結果に対応付けて、復元部２４に供給する。
【００４２】
なお、方向推定部４１の詳細は、図３乃至図７を参照して後述する。また、大きさ推定部４２の詳細は、図８乃至図１３を参照して後述する。
【００４３】
復元部２４は、PSF推定部２３から、PSFを正確に推定できたか否かの判定結果が対応付けられた注目ブロックのPSFを取得する。
【００４４】
すなわち、復元部２４は、方向推定部４１から、ぼけの方向を表す角度θを正確に推定できたか否かの判定結果が対応付けられた注目ブロックのぼけの方向を表す角度θと、大きさ推定部４２から、ぼけの大きさLを正確に推定できたか否かの判定結果が対応付けられた注目ブロックのぼけの大きさLを取得する。
【００４５】
復元部２４は、取得したPSFに対応付けられている判定結果に応じて、注目ブロックに生じているぼけを補正するために適切なフィルタを決定し、決定したフィルタを用いたフィルタリング処理を、分割部２２からの注目ブロックに対して行ない、注目ブロックのぼけを補正する。
【００４６】
なお、復元部２４が行なう処理の詳細は、図１４及び図１５を参照して後述する。
【００４７】
復元部２４は、ぼけの補正により得られる、ぼけ補正後のブロックを再構成することにより、撮像画像のぼけを補正して得られる復元画像を生成し、図示せぬ後段に出力する。なお、復元部２４から出力された復元画像は、例えば、後段において、フラッシュメモリ等に記憶される。
【００４８】
[方向推定部４１の構成例]
図３は、方向推定部４１の構成例を示している。
【００４９】
この方向推定部４１は、ブロック化部６１、LPF(low pass filter)部６２、減算部６３、及びθ検出部６４により構成される。
【００５０】
ブロック化部６１には、分割部２２から注目ブロックが供給される。ブロック化部６１は、図４Aに示されるように、分割部２２からの、６４ラインにより構成される注目ブロックから、１６ラインにより構成される所定の領域（図４Aに示す斜線部分）を抽出する。そして、ブロック化部６１は、図４Bに示されるように、抽出した１６ラインにより構成される所定の領域を、１６×１６（横×縦）画素のブロック８１1乃至８１Nにブロック化（分割）し、LPF部６２及び減算部６３に供給する。
【００５１】
なお、以下の説明において、１６×１６画素のブロック８１1乃至８１Nを区別する必要がない場合、ブロック８１1乃至８１Nを、単に、ブロック８１nという。
【００５２】
LPF部６２及び減算部６３は、ブロック化部６１から供給される１６×１６画素のブロック８１nに対して、高域成分を強調するハイパスフィルタリング処理を行い、ハイパスフィルタリング処理後のブロックを、θ検出部６４に供給する。
【００５３】
すなわち、LPF部６２は、ブロック化部６１からの１６×１６画素のブロック８１nに対して、LPFを用いたローパスフィルタリング処理を施し、ローパスフィルタリング処理後の１６×１６画素のブロック８１nを、減算部６３に供給する。
【００５４】
なお、LPFのフィルタ係数としては、例えば、１行目のフィルタ係数が[0.0251, 0.1453, 0.0251]であり、２行目のフィルタ係数が[0.1453, 0.3183, 0.1453]であり、３行目のフィルタ係数が[0.0251, 0.1453, 0.0251]である３×３の行列からなるフィルタ係数が用いられる。
【００５５】
減算部６３は、ブロック化部６１から供給される１６×１６画素のブロック８１nを構成する画素の画素値から、その画素の画素値に対応する、LPF部６２からの、ハイパスフィルタリング処理後のブロック８１nを構成する画素の画素値を減算して得られるブロック８１n'を、θ検出部６４に供給する。
【００５６】
θ検出部６４は、減算部６３からのブロック８１n'を用いて、注目ブロックに生じているぼけの方向を表す角度θ（以下、ぼけの方向θともいう）を検出するθ検出処理を行なう。また、θ検出部６４は、減算部６３からのブロック８１n'を用いて、θ検出処理により、ぼけの方向θを正確に検出できたか否かを判定するθ判定処理を行なう。
【００５７】
そして、θ検出部６４は、θ検出処理により検出したぼけの方向θを、θ判定処理により得られる判定結果に対応づけて、復元部２４に供給する。
【００５８】
また、θ検出部６４は、θ検出処理により検出したぼけの方向θを、大きさ推定部４２に供給する。
【００５９】
[θ検出処理の一例]
次に、図５及び図６を参照して、θ検出部６４が、注目ブロックのぼけの方向θを検出する場合に行うθ検出処理について説明する。
【００６０】
図５は、θ検出部６４が、注目ブロックのぼけの方向θを検出する場合に行うθ検出処理の概要を示している。
【００６１】
θ検出部６４は、図５に示されるように、減算部６３から供給されるブロック８１n'を対象として、パワースペクトラム変換処理を行う。
【００６２】
すなわち、θ検出部６４は、ブロック８１n'に対して、窓関数（例えばブラックマン窓）を掛ける。また、θ検出部６４は、窓関数を掛けた後のブロック８１n'を構成する画素の画素値f(x,y)に対して、次式（１）を用いた２次元フーリエ変換を行う。
F(u,v) = ∬∞-∞f(x,y)e-2πi(ux+vy)dxdy      ・・・（１）
【００６３】
なお、画素値f(x,y)は、ブロック８１n'を構成する画素のうち、例えば、左下の画素の位置を原点（0,0）とし、水平方向の画素の位置ｘを表すＸ軸、及び垂直方向の画素の位置ｙを表すＹ軸により定義されるXY座標上の位置（x,y）に存在する画素の画素値を示している。いまの場合、ブロック８１n'は、１６×１６画素により構成されているため、ｘ及びｙはそれぞれ０から１５までの値をとることとなる。
【００６４】
θ検出部６４は、窓関数を掛けた後のブロック８１n'を構成する１６×１６画素の画素値f(x,y)に対して、式（１）を用いた２次元フーリエ変換を行ない、f(x,y)をスペクトラムF(u,v)に変換する。
【００６５】
そして、θ検出部６４は、変換後のスペクトラムF(u,v)のパワーをとり、すなわち、F(u,v)と、F(u,v)の複素共役であるconj(F(u,v))とを乗算し、その結果得られるパワースペクトラムF(u,v)*conj(F(u,v))=F(u,v)^2を算出する。
【００６６】
このようにして、θ検出部６４は、パワースペクトラム変換処理により、画素値f(x,y)を有するブロック８１n'を、画素値として、パワースペクトラムF(u,v)^2を有するブロック８２nに変換する。
【００６７】
θ検出部６４は、ブロック８２nそれぞれについて、対応する画素どうしのパワースペクトラムF(u,v)^2の総和f'(x,y)を算出する。
【００６８】
これにより、θ検出部６４は、パワースペクトラム変換処理後のブロック８２nそれぞれを構成する画素毎に算出されたパワースペクトラムF(u,v)^2の総和f'(x,y)を、画素の画素値f'(x,y)とするブロックとして、高域成分が強調されたブロック８３を取得する。
【００６９】
θ検出部６４は、取得したブロック８３を構成する画素の画素値f'(x,y)を、後述するg(s,θ)に変換するラドン変換を行い、ラドン変換により得られる変換結果に基づいて、注目ブロックのぼけの方向θを検出する。
【００７０】
次に、図６は、θ検出部６４が、ブロック８３に対してラドン変換を行なう様子の一例を示している。
【００７１】
図６Aには、ブロック８３が示されている。なお、図６Aにおいて、横軸は、ブロック８３を構成する画素の水平方向の位置xを表しており、縦軸は、ブロック８３を構成する画素の垂直方向の位置yを表している。また、図面に対して法線方向に延びる軸は、ブロック８３を構成する画素の画素値としての、パワースペクトラムの総和f'(x,y)を表している。
【００７２】
図６Bには、ブロック８３をラドン変換して得られた変換結果８４が示されている。図６Bにおいて、横軸はθを表しており、縦軸はsを表している。また、図面に対して法線方向に延びる軸は、g(s,θ)を表している。
【００７３】
θ検出部６４は、取得したブロック８３を構成する画素の画素値f'(x,y)に対して、次式（２）を適用してg(s,θ)に変換するラドン変換を行う。
g(s,θ) = ∬∞-∞f'(x,y)δ(xcosθ+ysinθ-s)dxdy        ・・・（２）
【００７４】
なお、式（２）において、θは、０度乃至１７９度までの値をとる。また、g（s,θ）において、極値（ピーク）が１つだけ存在し、その極値が最大値であるときのg（s,θ）の角度θは、ぼけの方向θと一致するものとなる。
【００７５】
θ検出部６４は、ラドン変換により得られた変換結果８４（図６B）において、g(s,θ)が最大値となるときの角度θを、ぼけの方向θとして検出する。
【００７６】
いまの場合、g(s,θ)が最大値となるときの角度θは、６０度である。したがって、θ検出部６４は、６０度を、ぼけの方向θとして検出する。
【００７７】
ところで、θ検出部６４が正確なぼけの方向θを検出するためには、g（s,θ）において、ピークが１つだけ存在する必要があり、ピークが複数存在したり、ピークが１つも存在しない場合には、θ検出部６４は、ぼけの方向θを正確に検出することができない。
【００７８】
[θ判定処理の一例]
そこで、図７を参照して、θ検出部６４が行う処理として、ラドン変換の変換結果８４に基づいて、正確なぼけの方向θを検出できたか否かを判定するθ判定処理について説明する。
【００７９】
図７Aは、所定のブロック８３をラドン変換して得られる変換結果８４の一例を示している。図７Aの変換結果８４では、０度付近と、１２０度付近とにg(s,θ)の極値（ピーク）が存在する。
【００８０】
なお、図７Aの変換結果８４において、横軸はθを表しており、縦軸はg(s,θ)を表している。また、sを表す軸は図面が煩雑になるのを避けるため、図示は省略している。このことは、図７Bについても同様である。
【００８１】
図７Bは、他のブロック８３をラドン変換して得られる変換結果８４の一例を示している。図７Bの変換結果８４では、いずれの角度θにおいても、極値が存在しない。
【００８２】
θ検出部６４は、ラドン変換により得られる変換結果８４に基づいて、θ検出処理において、正確なぼけの方向θを検出できたか否かを判定する。
【００８３】
すなわち、例えば、θ検出部６４は、ラドン変換により、図７Aに示されるような、g(s,θ)のピークが複数存在する変換結果８４を得た場合には、いずれのピークのg(s,θ)に対応する角度θが、ぼけの方向θを表しているか不明であるため、θ検出処理において、正確なぼけの方向θを検出できなかったと判定する。
【００８４】
また、例えば、θ検出部６４は、ラドン変換により、図７Bに示されるような、g(s,θ)のピークが存在しない変換結果８４を得た場合には、いずれの角度θが、ぼけの方向θを表しているか不明であるため、θ検出処理において、正確なぼけの方向θを検出できなかったと判定する。
【００８５】
さらに、例えば、θ検出部６４は、ラドン変換により、g(s,θ)のピークが１つのみ存在する変換結果８４を得た場合には、そのピークのg(s,θ)に対応する角度θが、ぼけの方向θを表しているため、θ検出処理において、正確なぼけの方向θを検出できたと判定する。この場合、g(s,θ)のピークは、g(s,θ)の最大値と一致する。
【００８６】
すなわち、θ検出部６４は、１つのピークが存在する場合のみ、正確なぼけの方向θを検出できたと判定する。
【００８７】
θ検出部６４は、その判定結果とともに、θ検出処理により検出したぼけの方向θを、復元部２４に供給する。また、θ検出部６４は、θ検出処理により検出したぼけの方向θを大きさ推定部４２に供給する。
【００８８】
[大きさ推定部４２の構成例]
図８は、大きさ推定部４２の構成例を示している。
【００８９】
この大きさ推定部４２は、ブロック化部１０１、横ブレ成分検出部１０２、及びL検出部１０３により構成される。
【００９０】
ブロック化部１０１には、分割部２２から注目ブロックが供給される。ブロック化部１０１は、図９に示されるように、分割部２２からの、６４ラインにより構成される注目ブロック（図９A）を、６４×６４（横×縦）画素のブロック１２１1乃至１２１N（図９B）にブロック化（分割）して横ブレ成分検出部１０２に供給する。
【００９１】
横ブレ成分検出部１０２は、ブロック化部１０１から供給される６４×６４画素のブロック１２１1乃至１２１Nに基づいて、注目ブロックのぼけの大きさLのうち、横方向（水平方向）のぼけの大きさを表す横ブレ成分Lxを検出する横ブレ成分検出処理を行なう。
【００９２】
なお、ぼけの大きさLは、図２に示されたように、横方向のぼけの大きさを表す横ブレ成分Lxと、縦方向（垂直方向）のぼけの大きさを表す縦ブレ成分Lyとにより表される。
【００９３】
[横ブレ成分の検出方法]
次に、図１０及び図１１を参照して、横ブレ成分検出部１０２が、横ブレ成分Lxを検出する横ブレ成分検出処理の一例を説明する。
【００９４】
図１０は、横ブレ成分検出部１０２が、６４×６４画素のブロック１２１nを用いて、横ブレ成分Lxを検出するために用いる６４×１画素のブロック１２２nを生成する場合の一例を示している。
【００９５】
横ブレ成分検出部１０２は、図１０Aに示されるように、ブロック化部１０１からの６４×６４画素のブロック１２１n(n=1,…,N)を構成する列毎に、その列に存在する６４画素それぞれの画素値の総和を算出する。そして、横ブレ成分検出部１０２は、図１０Bに示されるように、６４×６４画素のブロック１２１nを構成する列毎に算出した総和を画素値とする、６４×１画素のブロック１２２nを生成する。
【００９６】
横ブレ成分検出部１０２は、生成した６４×１画素のブロック１２２nに基づいて、横ブレ成分Lxを検出する。
【００９７】
次に、図１１は、横ブレ成分検出部１０２が、生成した６４×１画素のブロック１２２nに基づいて、横ブレ成分Lxを検出する処理の一例を示している。
【００９８】
図１１に示されるように、横ブレ成分検出部１０２は、生成した６４×１画素のブロック１２２nに対して、θ検出部６４が行ったパワースペクトラム変換処理と同様のパワースペクトラム変換処理を行う。
【００９９】
具体的には、例えば、横ブレ成分検出部１０２は、ブロック１２２nに対して、窓関数（例えばブラックマン窓）を掛ける。また、横ブレ成分検出部１０２は、窓関数を掛けた後のブロック１２２nを構成する画素の画素値f(x,y)に対して、上述した式（１）を用いた２次元フーリエ変換を行う。
【０１００】
この場合、画素値f(x,y)は、ブロック１２２nを構成する画素のうち、例えば、最も左の画素の位置を原点（0,0）とし、水平方向の画素の位置ｘを表すＸ軸、及び垂直方向の画素の位置ｙを表すＹ軸により定義されるXY座標上の位置（x,y）に存在する画素の画素値を示している。いまの場合、ブロック１２２nは、６４×１画素により構成されているため、ｘは０から６３までの値をとり、ｙは０の値をとることとなる。
【０１０１】
横ブレ成分検出部１０２は、窓関数を掛けた後のブロック１２２nを構成する６４×１画素の画素値f(x,y)に対して、式（１）を用いた２次元フーリエ変換を行ない、画素値f(x,y)をスペクトラムF(u,v)に変換する。
【０１０２】
そして、横ブレ成分検出部１０２は、変換後のスペクトラムF(u,v)のパワーをとり、すなわち、F(u,v)と、F(u,v)の複素共役であるconj(F(u,v))とを乗算し、その結果得られるパワースペクトラムF(u,v)*conj(F(u,v))=F(u,v)^2を算出する。
【０１０３】
このようにして、横ブレ成分検出部１０２は、パワースペクトラム変換処理により、画素値f(x,y)を有するブロック１２２nを、画素値として、パワースペクトラムF(u,v)^2を有するブロック１２３nに変換する。
【０１０４】
さらに、横ブレ成分検出部１０２は、ブロック１２３nを構成する画素の画素値F(u,v)^2に対してlogをとる。そして、横ブレ成分検出部１０２は、ブロック１２３nを構成する画素の、対応する位置に存在する画素どうしの画素値log{F(u,v)^2}の総和f''(x,y)を算出する。
【０１０５】
これにより、横ブレ成分検出部１０２は、算出された総和f''(x,y)を、画素の画素値f''(x,y)とするブロック１２４を取得する。
【０１０６】
横ブレ成分検出部１０２は、取得したブロック１２４に対して、ケプストラム変換処理を行う。
【０１０７】
ここで、ケプストラム変換処理とは、ブロック１２４を構成する画素の画素値f''(x,y)毎に、２次元逆フーリエ変換を行い、その結果得られる値のうち、実部の符号を反転させて得られる新たな値の負値を切り捨てる処理をいう。
【０１０８】
横ブレ成分検出部１０２は、ケプストラム変換処理により得られる変換結果に基づいて、横ブレ成分Lxを検出する。
【０１０９】
次に、図１２を参照して、横ブレ成分検出部１０２が、ケプストラム変換処理により得られる変換結果に基づいて、横ブレ成分Lxを検出する方法の一例について説明する。
【０１１０】
図１２は、ケプストラム変換処理により得られる変換結果の一例を示している。
【０１１１】
図１２において、横軸はF(u,v)を表している。また、縦軸は、ブロック１２４を構成する画素の画素値f''(x,y)をケプストラム変換処理により変換して得られた変換結果、すなわち、ブロック１２３nを構成する画素の、対応する位置に存在する画素どうしの画素値logF(u,v)^2の総和f''(x,y)をケプストラム変換処理により変換して得られるケプストラムを表している。
【０１１２】
さらに、図１２に示される、ケプストラム変換処理により得られる変換結果は、横軸の中心（F(u,v)=70）を表す点線に対して線対称な信号となる。これは、ケプストラム変換処理において、２次元逆フーリエ変換を行なっていることによる。
【０１１３】
横ブレ成分検出部１０２は、ケプストラム変換処理により得られる、図１２に示されるような信号に生じるピークのうち、最大のピーク１４１（又はピーク１４２）と、横軸の中心を表す点線との距離１４３を、横ブレ成分Lxとして検出する。
【０１１４】
横ブレ成分検出部１０２は、検出した横ブレ成分Lxと、ケプストラム変換処理により得られた変換結果を、L検出部１０３に供給する。
【０１１５】
L検出部１０３は、横ブレ成分検出部１０２からの横ブレ成分Lxと、方向推定部４１からのぼけの方向θとを用いて、注目ブロックのぼけの大きさLを検出するL検出処理を行なう。
【０１１６】
すなわち、例えば、L検出部１０３は、方向推定部４１からのぼけの方向θを用いて、cosθを算出する。そして、L検出部１０３は、横ブレ成分検出部１０２からの横ブレ成分Lxを、算出したcosθで除算した除算結果Lx/cosθを、ぼけの大きさLとして検出する。
【０１１７】
また、L検出部１０３は、横ブレ成分検出部１０２からの、ケプストラム変換処理による変換結果に基づいて、L検出処理により、ぼけの大きさLを正確に検出できたか否かを判定するL判定処理を行なう。
【０１１８】
そして、L検出部１０３は、L検出処理により検出したぼけの大きさLを、L判定処理により得られる判定結果に対応づけて、復元部２４に供給する。
【０１１９】
[L判定処理の一例]
次に、図１３は、L検出部１０３が、横ブレ成分検出部１０２からの、ケプストラム変換処理による変換結果に基づいて、L検出処理により、ぼけの大きさLを正確に検出できたか否かを判定するL判定処理の一例を示している。
【０１２０】
図１３A及び図１３Bは、図１２と同様に構成されている。
【０１２１】
L検出部１０３は、横ブレ成分検出部１０２からの、ケプストラム変換処理による変換結果が、図１３Aに示されるように、ピーク１４１とピーク１４２との間に、何も存在しないものである場合には、注目ブロックのぼけの大きさLを正確に検出できたと判定する。
【０１２２】
また、L検出部１０３は、横ブレ成分検出部１０２からの、ケプストラム変換処理による変換結果が、図１３Bに示されるように、ピーク１４１とピーク１４２との間に他のピークが存在するものである場合には、注目ブロックのぼけの大きさLを正確に検出できなかったと判定する。
【０１２３】
そして、L検出部１０３は、検出したぼけの大きさLを、判定により得られた判定結果に対応付けて、復元部２４に供給する。
【０１２４】
復元部２４には、方向推定部４１のθ検出部６４から、注目ブロックのぼけの方向θと、ぼけの方向θを正確に検出できたか否かを示す判定結果が供給される。また、復元部２４には、大きさ推定部４２のL検出部１０３から、注目ブロックのぼけの大きさLと、ぼけの大きさLを正確に検出できたか否かを示す判定結果が供給される。
【０１２５】
復元部２４は、方向推定部４１からの判定結果、及び大きさ推定部４２からの判定結果に基づいて、注目ブロックのぼけを補正するために用いるフィルタを決定する。
【０１２６】
[フィルタの決定方法]
次に、図１４は、復元部２４が、方向推定部４１からの判定結果、及び大きさ推定部４２からの判定結果に基づいて、注目ブロックのぼけを補正するために用いるフィルタを決定する決定方法の一例を示している。
【０１２７】
復元部２４は、図１４に示されるように、方向推定部４１からの判定結果が、ぼけの方向θを正確に検出することができた（θの推定に成功した）との判定結果であり、且つ、大きさ推定部４２からの判定結果が、ぼけの大きさLを正確に検出することができた（Lの推定に成功した）との判定結果である場合、注目ブロックのぼけの補正に用いるフィルタを、注目ブロックのぼけを除去することが可能な、例えばウィナーフィルタに決定する。
【０１２８】
すなわち、例えば、復元部２４は、方向推定部４１からのぼけの方向θ、及び大きさ推定部４２からのぼけの大きさLにより表されるPSFに基づいて、ウィナーフィルタを生成する。
【０１２９】
具体的には、例えば、復元部２４は、方向推定部４１からのぼけの方向θ、及び大きさ推定部４２からのぼけの大きさLにより表されるPSFに対して２次元フーリエ変換を施して伝達関数Ｈを得る。
【０１３０】
また、復元部２４は、得られた伝達関数Ｈの複素共役をとり、Ｈ’を得る。具体的には、伝達関数Ｈを構成する所定の数値の複素共役な数値が求められ、その求められた値が、その所定の数値に対応するＨ’の値とされる。
【０１３１】
そして、復元部２４は、得られた伝達関数Ｈ及びその複素共役Ｈ’を用いて、次式（３）を計算し、ぼけの逆特性を有するウィナーフィルタの伝達関数Ｗを生成する。
【０１３２】
Ｗ＝（Ｈ’）／（Ｈ×Ｈ’＋α）      ・・・（３）
【０１３３】
なお、式（３）において、αは、撮像画像における信号対ノイズ比（SN比）であり、例えば、αは「0.03」などとされる。また、より詳細には、式（３）における「Ｈ」及び「Ｈ’」には、伝達関数Ｈ及びその複素共役Ｈ’の対応する値が代入され、ぼけの逆特性を有するウィナーフィルタの伝達関数Ｗが得られる。
【０１３４】
そして、復元部２４は、分割部２２からの注目ブロックに対して、生成したウィナーフィルタの伝達関数Ｗを用いたフィルタリング処理を行ない、注目ブロックのぼけを除去する。
【０１３５】
具体的には、例えば、復元部２４は、分割部２２からの注目ブロックに対して、２次元フーリエ変換を行い、その結果得られるFFT画像の各画素（の画素値）に、その画素に対して求められているウィナーフィルタの伝達関数Ｗを乗算する。
【０１３６】
そして、復元部２４は、ウィナーフィルタの伝達関数Ｗが乗算された後のFFT画像に対して、２次元逆フーリエ変換を行なうことにより、ぼけが除去された注目ブロックを生成する。
【０１３７】
また、復元部２４は、図１４に示されるように、方向推定部４１からの判定結果が、ぼけの方向θを正確に検出することができた（θの推定に成功した）との判定結果であり、且つ、大きさ推定部４２からの判定結果が、ぼけの大きさLを正確に検出することができなかった（Lの推定に失敗した）との判定結果である場合、注目ブロックのぼけの補正に用いるフィルタを、例えば、ぼけの方向θに並ぶ画素の高域成分を強調させてぼけを補正するHPF(high pass filter)を表すθ方向エンハンサに決定する。
【０１３８】
すなわち、復元部２４は、方向推定部４１から供給される、推定に成功したぼけの方向θのみに基づいて、θ方向エンハンサを生成する。
【０１３９】
次に、図１５は、復元部２４が、θ方向エンハンサを生成する場合の一例を示している。
【０１４０】
なお、図１５A及び図１５Bにおいて、X軸は、フィルタ係数との畳み込み演算が行われる画素値を有する画素の水平方向の位置ｘを表しており、Y軸は、フィルタ係数との畳み込み演算が行われる画素値を有する画素の垂直方向の位置ｙを表している。
【０１４１】
また、Z軸は、位置（x,y）に存在する画素の画素値と畳み込み演算が行われるフィルタ係数を表している。
【０１４２】
図１５Aには、ぼけが水平方向（X軸方向）（角度θ=0）に存在する場合に、水平方向に並ぶ画素の高域成分を強調させてぼけを補正するHPFを表す水平方向エンハンサが示されている。
【０１４３】
また、図１５Bには、方向推定部４１からのぼけの方向を表す角度θの方向に、ぼけが存在する場合に、角度θの方向に並ぶ画素の高域成分を強調させて、ぼけを補正するθ方向エンハンサが示されている。
【０１４４】
復元部２４は、図１５Aに示される水平方向エンハンサに基づいて、図１５Bに示されるθ方向エンハンサを生成する。なお、図１５Aに示される水平方向エンハンサは、復元部２４により予め保持されているものとする。
【０１４５】
すなわち、例えば、復元部２４は、水平方向に並ぶ画素と畳み込み演算が行われる、水平方向エンハンサを構成するフィルタ係数が、ぼけの方向を表す角度θの方向に並ぶ画素の画素値と畳み込み演算されるように、フィルタ係数と畳み込み演算される画素の位置（x,y）を、アフィン変換等により、方向推定部４１からのぼけの方向を表す角度θだけ移動させた位置（x',y'）に変換して、水平方向エンハンサから、θ方向エンハンサを生成する。
【０１４６】
そして、復元部２４は、分割部２２からの注目ブロックに対して、生成したθ方向エンハンサを用いたフィルタリング処理を行ない、注目ブロックのぼけを補正する。
【０１４７】
具体的には、例えば、復元部２４は、生成したθ方向エンハンサを構成するフィルタ係数と、分割部２２からの注目ブロックを構成する画素の画素値との畳み込み演算を行い、ぼけの方向を表す角度θの方向に存在する画素の高域成分を抽出する。
【０１４８】
そして、復元部２４は、畳み込み演算により抽出された高域成分のゲインを調整し、ゲイン調整後の高域成分を、注目ブロックに加算することにより、ぼけが補正された注目ブロックを得る。
【０１４９】
さらに、例えば、復元部２４は、方向推定部４１からの判定結果が、ぼけの方向θを正確に検出することができなかった（θの推定に失敗した）との判定結果である場合、注目ブロックのぼけの補正に用いるフィルタを、予め用意されているHPF等に決定して、注目ブロックのぼけを補正する。
【０１５０】
なお、復元部２４は、方向推定部４１からの判定結果が、ぼけの方向θを正確に検出することができなかったとの判定結果である場合には、フィルタを用いたぼけの補正を行なわないようにしてもよい。
【０１５１】
図１４に示されるように、ぼけの方向θの推定に失敗した場合には、検出したぼけの方向θやぼけの大きさLを用いてフィルタを生成することは行なわない。したがって、この場合、大きさ推定部４２で行なわれる処理を省略することができる。
【０１５２】
具体的には、例えば、方向推定部４１のθ検出部６４では、検出したぼけの方向θの他、ぼけの方向θを正確に検出できたか否かの判定結果も、大きさ推定部４２のL検出部１０３に供給するようにして、大きさ推定部４２のL検出部１０３においては、θ検出部６４からの判定結果が、ぼけの方向θを正確に検出できなかったとの結果である場合には、ぼけの大きさLの検出等の処理を行わないようにすることができる。
【０１５３】
[画像処理装置１の動作説明]
次に、図１６のフローチャートを参照して、画像処理装置１が行うぼけ補正処理について説明する。
【０１５４】
このぼけ補正処理は、例えば、画像処理装置１の撮像部２１に、被写体の撮像を指示するユーザ操作が行われたときに開始される。
【０１５５】
ステップＳ１において、撮像部２１は、被写体の撮像を行い、その結果得られる撮像画像を、分割部２２に供給する。
【０１５６】
ステップＳ２において、分割部２２は、撮像部２１からの撮像画像を、例えば、６４本の水平ラインにより構成される短冊状のブロック（短冊ブロック）に分割する。そして、ステップＳ３において、分割部２２は、分割により得られる複数の短冊ブロックのうちのいずれかを、注目ブロックに設定する。分割部２２は、注目ブロックをPSF推定部２３及び復元部２４に供給する。
【０１５７】
ステップＳ４において、PSF推定部２３は、分割部２２からの注目ブロックに基づいて、注目ブロックに生じているぼけの方向θ及び大きさLを表すPSFを推定するとともに、正確なPSFを推定したか否かを判定するPSF推定処理を行なう。
【０１５８】
すなわち、PSF推定部２３は、方向推定部４１及び大きさ推定部４２により構成されている。したがって、ステップＳ４のPSF推定処理では、ステップＳ２１において、方向推定部４１が、分割部２２からの注目ブロックのぼけの方向θを検出するとともに、正確なぼけの方向θを検出できたか否かを判定する方向推定処理を行なう。
【０１５９】
そして、方向推定部４１は、検出したぼけの方向θを、正確なぼけの方向θを検出できたか否かを示す判定結果に対応付けて、復元部２４に供給する。また、方向推定部４１は、検出したぼけの方向θを、大きさ推定部４２に供給する。
【０１６０】
また、ステップＳ２２において、大きさ推定部４２が、分割部２２からの注目ブロックのぼけの大きさLを検出するとともに、正確なぼけの大きさLを検出できたか否かを判定する大きさ推定処理を行なう。
【０１６１】
そして、大きさ推定部４２は、検出したぼけの大きさLを、正確なぼけの大きさLを検出できたか否かを示す判定結果に対応付けて、復元部２４に供給する。
【０１６２】
なお、ステップＳ２１の方向推定処理の詳細は、図１７を参照して後述する。また、ステップＳ２２の大きさ推定処理の詳細は、図１９を参照して後述する。
【０１６３】
ステップＳ５において、復元部２４は、方向推定部４１からの判定結果、及び大きさ推定部４２からの判定結果に基づいて、図１４を参照して説明したように、注目ブロックのぼけを補正するために用いるフィルタを決定する。
【０１６４】
すなわち、例えば、復元部２４は、方向推定部４１からの判定結果が、ぼけの方向θの推定に成功したとの判定結果であり、且つ、大きさ推定部４２からの判定結果が、ぼけの大きさLの推定に成功したとの判定結果である場合、注目ブロックのぼけの補正に用いるフィルタを、注目ブロックのぼけを除去することが可能な、例えばウィナーフィルタに決定する。
【０１６５】
また、復元部２４は、方向推定部４１からの判定結果が、ぼけの方向θの推定に成功したとの判定結果であり、且つ、大きさ推定部４２からの判定結果が、ぼけの大きさLの推定に失敗したとの判定結果である場合、注目ブロックのぼけの補正に用いるフィルタを、例えば、ぼけの方向θに並ぶ画素の高域成分を強調させてぼけを補正するHPFを表すθ方向エンハンサに決定する。
【０１６６】
さらに、例えば、復元部２４は、方向推定部４１からの判定結果が、ぼけの方向θの推定に失敗したとの判定結果である場合、注目ブロックのぼけの補正に用いるフィルタを、予め用意されているHPF等に決定する。
【０１６７】
ステップＳ６において、復元部２４は、決定されたフィルタを用いて、撮像部２１からの注目ブロックに対してフィルタリング処理を行い、注目ブロックに生じているぼけを補正する。
【０１６８】
ステップＳ７において、分割部２２は、複数の短冊ブロックすべてを注目ブロックとしたか否かを判定する。そして、分割部２２は、複数の短冊ブロックすべてを、まだ注目ブロックとしていないと判定した場合、処理をステップＳ３に戻し、複数の短冊ブロックのうち、まだ注目ブロックとされていないものを、新たな注目ブロックに設定して、それ以降同様の処理を行なう。
【０１６９】
また、ステップＳ７において、分割部２２は、複数の短冊ブロックすべてを注目ブロックとしたと判定した場合、処理をステップＳ８に進める。
【０１７０】
ステップＳ８では、復元部２４は、ステップＳ６の処理で行なわれたフィルタリング処理後の複数の短冊ブロックを再構成して復元画像を生成し、図示せぬ後段に出力する。なお、復元部２４から出力された復元画像は、後段において、フラッシュメモリ等に記憶される。以上で、ぼけ補正処理は終了される。
【０１７１】
以上説明したように、ぼけ補正処理では、正確なPSF（ぼけの方向θ及び大きさL）を検出できたか否かを表す判定結果に応じて、注目ブロックに対するフィルタリング処理に用いられるフィルタを選択的に決定するようにした。
【０１７２】
したがって、例えば、ぼけ補正処理では、誤って推定されたPSFに基づいて生成されたフィルタにより、ぼけを補正した場合に生じるリンギング等を抑止することが可能となるとともに、画一的に同じフィルタを用いる場合と比較して、より正確にぼけを補正することが可能となる。
【０１７３】
また、ぼけ補正処理では、撮像画像を、ぼけが均一に生じているとみなすことができる程度に小さな短冊ブロックに分割し、分割して得られた短冊ブロック毎に、ぼけの補正を行なうようにした。
【０１７４】
したがって、例えば、長い露光時間で撮像画像を撮像したために、撮像画像上に生じているぼけが不均一である場合でも、分割して得られる短冊ブロックに生じているぼけを、均一なぼけを表すPSFを用いて表現することができるため、不均一なぼけが生じている撮像画像上のぼけを補正することが可能となる。
【０１７５】
また、ぼけ補正処理では、短冊ブロック毎に、ぼけの補正を行なうようにしたので、分割部２２において、短冊ブロックを一時的に保持するメモリとして、フレームメモリを用いる必要がなく、ラインメモリで足りるため、フレームメモリを用いる場合と比較して、画像処理装置１の製造コストを削減することが可能となる。
【０１７６】
[方向推定部４１の動作説明]
次に、図１７のフローチャートを参照して、方向推定部４１が行なう方向推定処理の一例について説明する。
【０１７７】
ステップＳ４１において、ブロック化部６１は、図４Aに示されるように、分割部２２からの、６４ラインにより構成される注目ブロックから、１６ラインにより構成される所定の領域（図４Aに示す斜線部分）を抽出する。そして、ブロック化部６１は、図４Bに示されるように、抽出した１６ラインにより構成される所定の領域を、１６×１６（横×縦）画素のブロック８１1乃至８１Nにブロック化（分割）し、LPF部６２及び減算部６３に供給する。
【０１７８】
ステップＳ４２において、LPF部６２及び減算部６３は、ブロック化部６１から供給される１６×１６画素のブロック８１nに対して、高域成分を強調するハイパスフィルタリング処理を行い、ハイパスフィルタリング処理後のブロックを、θ検出部６４に供給する。
【０１７９】
すなわち、LPF部６２は、ブロック化部６１からの１６×１６画素のブロック８１nに対して、LPFを用いたローパスフィルタリング処理を施し、ローパスフィルタリング処理後の１６×１６画素のブロック８１nを、減算部６３に供給する。
【０１８０】
減算部６３は、ブロック化部６１から供給される１６×１６画素のブロック８１nを構成する画素の画素値から、その画素の画素値に対応する、LPF部６２からの、ハイパスフィルタリング処理後のブロック８１nを構成する画素の画素値を減算して得られるブロック８１n'を、θ検出部６４に供給する。
【０１８１】
ステップＳ４３において、θ検出部６４は、図５に示されるように、減算部６３から供給されるブロック８１n'を対象として、パワースペクトラム変換処理を行う。なお、パワースペクトラム変換処理の詳細は、図１８のフローチャートを参照して後述する。
【０１８２】
θ検出部６４は、パワースペクトラム変換処理により、画素値f(x,y)を有するブロック８１n'を、画素値として、パワースペクトラムF(u,v)^2を有するブロック８２nに変換する。
【０１８３】
ステップＳ４４において、θ検出部６４は、ブロック８２nを構成する画素の、対応する画素どうしのパワースペクトラムF(u,v)^2の総和f'(x,y)を算出する。
【０１８４】
これにより、θ検出部６４は、パワースペクトラム変換処理後のブロック８２nそれぞれを構成する画素毎に算出されたパワースペクトラムF(u,v)^2の総和f'(x,y)を、画素の画素値f'(x,y)とするブロックとして、高域成分が強調されたブロック８３を取得する。
【０１８５】
ステップＳ４５において、θ検出部６４は、図６に示されたように、取得したブロック８３を構成する画素の画素値f'(x,y)を、g(s,θ)に変換するラドン変換を行う。
【０１８６】
そして、ステップＳ４６において、θ検出部６４は、ラドン変換により得られた変換結果に基づいて、注目ブロックのぼけの方向θを検出する。
【０１８７】
ステップＳ４７において、θ検出部６４は、ラドン変換により得られた変換結果に基づいて、正確なぼけの方向θを検出できたか否かを判定して、処理を、図１６のステップＳ２１にリターンする。
【０１８８】
図１６のステップＳ２１では、方向推定部４１のθ検出部６４は、ステップＳ４６の処理で検出したぼけの方向θを、ステップＳ４７の処理での判定結果に対応付けて、復元部２４に供給する。また、方向推定部４１のθ検出部６４は、ステップＳ４６の処理で検出したぼけの方向θを、大きさ推定部４２に供給する。
【０１８９】
[パワースペクトラム変換処理の詳細]
図１８のフローチャートを参照して、図１７のステップＳ４３におけるパワースペクトラム変換処理について説明する。
【０１９０】
ステップＳ６１において、θ検出部６４は、減算部６３からのブロック８１n'に対して、窓関数（例えばブラックマン窓）を掛ける。また、ステップＳ６２において、θ検出部６４は、窓関数を掛けた後のブロック８１n'を構成する画素の画素値f(x,y)に対して、式（１）を用いた２次元フーリエ変換を行う。
【０１９１】
ステップＳ６３において、θ検出部６４は、窓関数を掛けた後のブロック８１n'を構成する１６×１６画素の画素値f(x,y)に対して、式（１）を用いた２次元フーリエ変換を行ない、画素値f(x,y)をスペクトラムF(u,v)に変換する。
【０１９２】
そして、θ検出部６４は、変換後のスペクトラムF(u,v)のパワーをとり、すなわち、F(u,v)と、F(u,v)の複素共役であるconj(F(u,v))とを乗算し、その結果得られるパワースペクトラムF(u,v)*conj(F(u,v))=F(u,v)^2を算出する。
【０１９３】
このようにして、θ検出部６４は、パワースペクトラム変換処理により、画素値f(x,y)を有するブロック８１n'を、画素値として、パワースペクトラムF(u,v)^2を有するブロック８２nに変換して、処理を図１７のステップＳ４３にリターンする。
【０１９４】
[大きさ推定部４２の動作説明]
次に、図１９のフローチャートを参照して、大きさ推定部４２が行なう大きさ推定処理の一例について説明する。
【０１９５】
ステップＳ８１において、ブロック化部１０１は、分割部２２からの注目ブロックを、例えば図９に示されるように、６４×６４（横×縦）画素のブロック１２１1乃至１２１Nにブロック化（分割）して横ブレ成分検出部１０２に供給する。
【０１９６】
ステップＳ８２において、横ブレ成分検出部１０２は、ブロック化部１０１から供給される６４×６４画素のブロック１２１1乃至１２１Nを用いて、注目ブロックのぼけの大きさLのうち、横方向（水平方向）のぼけの大きさを表す横ブレ成分Lxを検出する横ブレ成分検出処理を行なう。
【０１９７】
この横ブレ成分検出処理により、横ブレ成分検出部１０２からL検出部１０３には、検出された横ブレ成分Lxとともに、横ブレ成分検出処理の過程において得られた、ケプストラム変換処理による変換結果が供給される。なお、横ブレ成分検出処理の詳細は、図２０を参照して後述する。
【０１９８】
ステップＳ８３において、L検出部１０３は、横ブレ成分検出部１０２からの横ブレ成分Lx、及び方向推定部４１からの角度θに基づいて、ぼけの大きさL（=|Lx/cosθ|）を検出（算出）する。
【０１９９】
また、ステップＳ８４において、L検出部１０３は、横ブレ成分検出部１０２からの、ケプストラム変換処理による変換結果に基づいて、正確なぼけの大きさLを検出できたか否かを判定し、処理を、図１６のステップＳ２２にリターンする。
【０２００】
図１６のステップＳ２２では、大きさ推定部４２のL検出部１０３は、検出したぼけの大きさLを、その判定結果に対応付けて、復元部２４に供給する。
【０２０１】
[横ブレ成分検出処理の詳細]
次に、図２０を参照して、図１９のステップＳ８２における横ブレ成分検出処理について説明する。
【０２０２】
ステップＳ１０１において、横ブレ成分検出部１０２は、図１０Aに示されるように、ブロック化部１０１からの６４×６４画素のブロック１２１n(n=1,…,N)を構成する列毎に、その列に存在する６４画素それぞれの画素値の総和を算出する。
【０２０３】
そして、横ブレ成分検出部１０２は、図１０Bに示されるように、６４×６４画素のブロック１２１nを構成する列毎に算出した総和を画素値とする、６４×１画素のブロック１２２nを生成する。
【０２０４】
ステップＳ１０２において、横ブレ成分検出部１０２は、生成した６４×１画素のブロック１２２nに対して、図１８において説明したパワースペクトラム変換処理を行う。これにより、６４×１画素のブロック１２２nが、６４×１画素のブロック１２３nに変換される。
【０２０５】
ステップＳ１０３において、横ブレ成分検出部１０２は、パワースペクトラム変換処理により得られたブロック１２３nを構成する画素の画素値F(u,v)^2に対してlogをとる。
【０２０６】
ステップＳ１０４において、横ブレ成分検出部１０２は、ステップＳ１０３の処理が行なわれたブロック１２３nを構成する画素の、対応する位置に存在する画素どうしの画素値log{F(u,v)^2}の総和f''(x,y)を算出する。これにより、横ブレ成分検出部１０２は、算出された総和f''(x,y)を、画素の画素値f''(x,y)とするブロック１２４を取得する。
【０２０７】
ステップＳ１０５において、横ブレ成分検出部１０２は、取得したブロック１２４に対して、ケプストラム変換処理を行う。なお、ケプストラム変換処理の詳細は、図２１を参照して後述する。
【０２０８】
ステップＳ１０６において、横ブレ成分検出部１０２は、図１２を参照して説明したように、ケプストラム変換処理により得られる変換結果に基づいて、横ブレ成分Lxを検出する。
【０２０９】
そして、横ブレ成分検出部１０２は、検出した横ブレ成分Lxとともに、ケプストラム変換処理により得られる変換結果を、L検出部１０３に供給して、処理を図１９のステップＳ８２にリターンする。
【０２１０】
[ケプストラム変換処理の詳細]
図２１は、図２０のステップＳ１０５において、横ブレ成分検出部１０２が行なうケプストラム変換処理の詳細を説明するためのフローチャートである。
【０２１１】
ステップＳ１２１において、横ブレ成分検出部１０２は、ブロック１２４を構成する画素の画素値f''(x,y)毎に、２次元逆フーリエ変換を行う。
【０２１２】
ステップＳ１２２において、横ブレ成分検出部１０２は、２次元逆フーリエ変換により得られる値のうち、実部の符号を反転させる。
【０２１３】
ステップＳ１２３において、横ブレ成分検出部１０２は、ステップＳ１２２の処理により得られる値のうち、負値を切り捨てて、その結果得られる変換結果（ケプストラム）を取得して、処理を、図２０のステップＳ１０５にリターンする。
【０２１４】
＜２．変形例＞
本実施の形態では、大きさ推定部４２のL検出部１０３は、方向推定部４１から供給されたぼけの方向θに拘わらず、ぼけの大きさLとして、|Lx/cosθ|を算出するようにしている。
【０２１５】
しかしながら、この場合、方向推定部４１から供給されるぼけの方向θが９０度であるときには、|Lx/０|となってしまい、ぼけの大きさLを算出できなくなってしまう。
【０２１６】
また、方向推定部４１から供給されるぼけの方向θが、４５度よりも大きく、且つ、１３５度よりも小さな角度θである場合には、|Lx/cosθ|を算出するときよりも、|Ly/sinθ|を算出して、ぼけの大きさLを求める方が、精度が良くなることが、本発明者が行なった実験等によりわかっている。
【０２１７】
[大きさ推定部４２の他の構成例]
図２２は、方向推定部４１からのぼけの方向θが、４５度よりも大きく、且つ、１３５度よりも小さな角度θである場合に、|Ly/sinθ|を、ぼけの大きさLとして算出し、方向推定部４１からのぼけの方向θが、４５度よりも大きく、且つ、１３５度よりも小さな角度θではない場合に、|Lx/cosθ|を、ぼけの大きさLとして算出する大きさ推定部４２の構成例を示している。
【０２１８】
なお、図２２の大きさ推定部４２は、図８の場合と同様に構成される部分については、同一の符号を付しているため、それらの説明は以下省略する。
【０２１９】
すなわち、図２２の大きさ推定部４２は、新たに縦ブレ成分検出部１６１が設けられているとともに、図８のL検出部１０３に代えて、大きさ検出部１６２が設けられている他は、図８の場合と同様に構成される。
【０２２０】
縦ブレ成分検出部１６１には、ブロック化部１０１から、６４×６４画素のブロック１２１1乃至１２１Nが供給される。
【０２２１】
縦ブレ成分検出部１６１は、ブロック化部１０１から供給される６４×６４画素のブロック１２１1乃至１２１Nを用いて、注目ブロックのぼけの大きさLのうち、縦方向（垂直方向）のぼけの大きさを表す縦ブレ成分Lyを検出する縦ブレ成分検出処理を行なう。
[縦ブレ成分検出処理の一例]
次に、図２３及び図２４を参照して、縦ブレ成分検出部１６１が、縦ブレ成分Lyを検出する縦ブレ成分検出処理の一例を説明する。
【０２２２】
図２３は、縦ブレ成分検出部１６１が、６４×６４画素のブロック１２１nを用いて、横ブレ成分Lxを検出するために用いる１×６４画素のブロック１８１nを生成する場合の一例を示している。
【０２２３】
縦ブレ成分検出部１６１は、図２３Aに示されるように、ブロック化部１０１からの６４×６４画素のブロック１２１n(n=1,…,N)を構成する行毎に、その行に存在する６４画素それぞれの画素値の総和を算出する。そして、縦ブレ成分検出部１６１は、図２３Bに示されるように、６４×６４画素のブロック１２１nを構成する行毎に算出した総和を画素値とする、１×６４画素のブロック１８１nを生成する。
【０２２４】
縦ブレ成分検出部１６１は、生成した１×６４画素のブロック１８１nに基づいて、縦ブレ成分Lyを検出する。
【０２２５】
次に、図２４は、縦ブレ成分検出部１６１が、生成した１×６４画素のブロック１８１nに基づいて、縦ブレ成分Lyを検出する処理の一例を示している。
【０２２６】
図２４に示されるように、縦ブレ成分検出部１６１は、生成した１×６４画素のブロック１８１nに対して、横ブレ成分検出部１０２が行った場合と同様にして、パワースペクトラム変換処理を行う。
【０２２７】
すなわち、例えば、縦ブレ成分検出部１６１は、ブロック１８１nに対して、窓関数（例えばブラックマン窓）を掛ける。また、縦ブレ成分検出部１６１は、窓関数を掛けた後のブロック１８１nを構成する画素の画素値f(x,y)に対して、上述した式（１）を用いた２次元フーリエ変換を行う。
【０２２８】
この場合、画素値f(x,y)は、ブロック１８１nを構成する画素のうち、例えば、左下の画素の位置を原点（0,0）とし、水平方向の画素の位置ｘを表すＸ軸、及び垂直方向の画素の位置ｙを表すＹ軸により定義されるXY座標上の位置（x,y）に存在する画素の画素値を示している。いまの場合、ブロック１８１nは、１×６４画素により構成されているため、ｘは０の値をとり、ｙは０から６３までの値をとることとなる。
【０２２９】
縦ブレ成分検出部１６１は、窓関数を掛けた後のブロック１８１nを構成する６４×１画素の画素値f(x,y)に対して、式（１）を用いた２次元フーリエ変換を行ない、f(x,y)をF(u,v)に変換する。
【０２３０】
そして、縦ブレ成分検出部１６１は、変換後のF(u,v)のパワーをとり、すなわち、F(u,v)と、F(u,v)の複素共役であるconj(F(u,v))とを乗算し、その結果得られるパワースペクトラムF(u,v)*conj(F(u,v))=F(u,v)^2を算出する。
【０２３１】
このようにして、縦ブレ成分検出部１６１は、パワースペクトラム変換処理により、画素値f(x,y)を有するブロック１８１nを、画素値として、パワースペクトラムF(u,v)^2を有するブロック１８２nに変換する。
【０２３２】
さらに、縦ブレ成分検出部１６１は、ブロック１８２nを構成画素の画素値F(u,v)^2に対してlogをとる。そして、縦ブレ成分検出部１６１は、ブロック１８２nを構成する画素の、対応する位置に存在する画素どうしの画素値log{F(u,v)^2}の総和f''(x,y)を算出する。
【０２３３】
これにより、縦ブレ成分検出部１６１は、算出された総和f''(x,y)を、画素の画素値f''(x,y)とするブロック１８３を取得する。
【０２３４】
縦ブレ成分検出部１６１は、取得したブロック１８３に対して、縦ブレ成分検出部１０２が行なった場合と同様にして、ケプストラム変換処理を行う。
【０２３５】
すなわち、縦ブレ成分検出部１６１は、取得したブロック１８３を構成する画素の画素値f''(x,y)毎に、２次元逆フーリエ変換を行い、その結果得られる値のうち、実部の符号を反転させて得られる新たな値の負値を切り捨てるケプストラム変換処理をいう。
【０２３６】
縦ブレ成分検出部１６１は、ケプストラム変換処理により得られる変換結果に基づいて、横ブレ成分検出部１０２と同様にして、ケプストラムのピークと中心との距離を縦ブレ成分Lyとして検出する。
【０２３７】
そして、縦ブレ成分検出部１６１は、検出した縦ブレ成分Lyと、ケプストラム変換処理により得られた変換結果を、L検出部１６２に供給する。
【０２３８】
L検出部１６２には、横ブレ成分検出部１０２から、検出された横ブレ成分Lx、及びケプストラム変換処理の変換結果が、縦ブレ成分検出部１６１から、検出された縦ブレ成分Ly、及びケプストラム変換処理の変換結果が供給される。
【０２３９】
また、L検出部１６２には、方向推定部４１から、注目ブロックのぼけの方向θが供給される。
【０２４０】
L検出部１６２は、方向推定部４１から供給されるぼけの方向θが、４５度より大きくて、且つ、１３５度よりも小さい角度θであるか否かを判定する。
【０２４１】
そして、L検出部１６２は、方向推定部４１から供給されるぼけの方向θが、４５度より大きくて、且つ、１３５度よりも小さい角度θであると判定した場合、ぼけの方向θに基づいて、sinθを算出し、縦ブレ成分検出部１６１からの縦ブレ成分Lyを、算出したsinθで除算した除算結果の絶対値|Ly/sinθ|を、注目ブロックのぼけの大きさLとして算出する。
【０２４２】
また、L検出部１６２は、縦ブレ成分検出部１６１からの、ケプストラム変換処理の変換結果に基づいて、正確なぼけの大きさLを検出できたか否かを判定する。そして、L検出部１６２は、算出したぼけの大きさLを、その判定結果に対応付けて、復元部２４に供給する。
【０２４３】
さらに、L検出部１６２は、方向推定部４１から供給されるぼけの方向θが、４５度より大きくて、且つ、１３５度よりも小さい角度θでないと判定した場合、ぼけの方向θに基づいて、cosθを算出し、横ブレ成分検出部１０２からの横ブレ成分Lxを、算出したcosθで除算した除算結果の絶対値|Lx/cosθ|を、注目ブロックのぼけの大きさLとして算出する。
【０２４４】
また、L検出部１６２は、横ブレ成分検出部１０２からの、ケプストラム変換処理の変換結果に基づいて、正確なぼけの大きさLを検出できたか否かを判定する。そして、L検出部１６２は、算出したぼけの大きさLを、その判定結果に対応付けて、復元部２４に供給する。
【０２４５】
[図２２の大きさ推定部４２の動作説明]
次に、図２５のフローチャートを参照して、図２２の大きさ推定部４２が行なう大きさ推定処理の詳細について説明する。
【０２４６】
ステップＳ１４１において、図１９のステップＳ８１と同様の処理が行なわれる。また、ステップＳ１４２において、図１９のステップＳ８２と同様の横ブレ成分検出処理が行なわれる。
【０２４７】
この横ブレ成分検出処理により、横ブレ成分検出部１０２からL検出部１６２には、検出された横ブレ成分Lxとともに、横ブレ成分検出処理の過程において得られた、ケプストラム変換処理による変換結果が供給される。
【０２４８】
ステップＳ１４３において、縦ブレ成分検出部１６１は、ブロック化部１０１から供給される６４×６４画素のブロック１２１1乃至１２１Nを用いて、注目ブロックのぼけの大きさLのうち、縦方向（垂直方向）のぼけの大きさを表す縦ブレ成分Lyを検出する縦ブレ成分検出処理を行なう。
【０２４９】
この縦ブレ成分検出処理により、縦ブレ成分検出部１６１からL検出部１６２には、検出された縦ブレ成分Lyとともに、縦ブレ成分検出処理の過程において得られた、ケプストラム変換処理による変換結果が供給される。なお、縦ブレ成分検出処理の詳細は、図２６を参照して後述する。
【０２５０】
ステップＳ１４４において、L検出部１６２は、方向推定部４１から供給されるぼけの方向θが、４５度より大きくて、且つ、１３５度よりも小さい角度θであるか否かを判定する。
【０２５１】
そして、L検出部１６２は、方向推定部４１から供給されたぼけの方向θが、４５度より大きくて、且つ、１３５度よりも小さい角度θであると判定した場合、処理をステップＳ１４５に進める。
【０２５２】
ステップＳ１４５において、L検出部１６２は、方向推定部４１から供給されたぼけの方向θに基づいて、sinθを算出し、縦ブレ成分検出部１６１からの縦ブレ成分Lyを、算出したsinθで除算した除算結果の絶対値|Ly/sinθ|を、注目ブロックのぼけの大きさLとして算出する。
【０２５３】
ステップＳ１４６において、L検出部１６２は、縦ブレ成分検出部１６１からの、ケプストラム変換処理の変換結果に基づいて、正確なぼけの大きさLを検出できたか否かを判定して、大きさ推定処理を終了する。そして、L検出部１６２は、処理を、図１６のステップＳ２２にリターンして、算出したぼけの大きさLを、その判定結果に対応付けて、復元部２４に供給する。
【０２５４】
また、ステップＳ１４４において、L検出部１６２は、方向推定部４１から供給されたぼけの方向θが、４５度より大きくて、且つ、１３５度よりも小さい角度θでないと判定した場合、処理をステップＳ１４７に進める。
【０２５５】
ステップＳ１４７において、L検出部１６２は、方向推定部４１から供給されたぼけの方向θに基づいて、cosθを算出し、横ブレ成分検出部１０２からの横ブレ成分Lxを、算出したcosθで除算した除算結果の絶対値|Lx/cosθ|を、注目ブロックのぼけの大きさLとして算出する。
【０２５６】
ステップＳ１４８において、L検出部１６２は、横ブレ成分検出部１０２からの、ケプストラム変換処理の変換結果に基づいて、正確なぼけの大きさLを検出できたか否かを判定して、大きさ推定処理を終了する。そして、L検出部１６２は、処理を、図１６のステップＳ２２にリターンして、算出したぼけの大きさLを、その判定結果に対応付けて、復元部２４に供給する。
【０２５７】
図２５の大きさ推定処理では、L検出部１６２は、ぼけの方向θが、４５度よりも大きく、且つ、１３５度よりも小さな角度θであると判定した場合には、|Ly/sinθ|を、ぼけの大きさLとして算出し、ぼけの方向θが、４５度よりも大きく、且つ、１３５度よりも小さな角度θではないと判定した場合には、|Lx/cosθ|を、ぼけの大きさLとして算出するようにした。
【０２５８】
したがって、例えば、ぼけの方向θに拘わらず、ぼけの大きさLとして、|Lx/cosθ|を算出する場合のように、ぼけの方向θが９０度であるときには、|Lx/０|となってしまい、ぼけの大きさLを算出できなくなってしまう事態を防止することが可能となる。
【０２５９】
また、ぼけの方向θが、４５度よりも大きく、且つ、１３５度よりも小さな角度θである場合には、|Lx/cosθ|を算出するときよりも、|Ly/sinθ|を算出して、ぼけの大きさLを求める方が、ぼけの大きさLを算出する精度が良くなることが、本発明者が行なった実験等によりわかっている。
【０２６０】
したがって、図２５の大きさ推定処理では、例えば、ぼけの方向θに拘わらず、ぼけの大きさLとして、|Lx/cosθ|を算出する場合と比較して、ぼけの大きさLを精度良く検出することが可能となる。
【０２６１】
[縦ブレ成分検出処理の詳細]
次に、図２６のフローチャートを参照して、図２５のステップＳ１４３において、縦ブレ成分検出部１６１が行なう縦ブレ成分検出処理について説明する。
【０２６２】
ステップＳ１６１において、縦ブレ成分検出部１６１は、図２３Aに示されるように、ブロック化部１０１からの６４×６４画素のブロック１２１n(n=1,…,N)を構成する行毎に、その行に存在する６４画素それぞれの画素値の総和を算出する。
【０２６３】
そして、縦ブレ成分検出部１６１は、図２３Bに示されるように、６４×６４画素のブロック１２１nを構成する行毎に算出した総和を画素値とする、１×６４画素のブロック１８１nを生成する。
【０２６４】
ステップＳ１６２において、縦ブレ成分検出部１６１は、生成した１×６４画素のブロック１８１nに対して、図２０のステップＳ１０２による処理と同様のパワースペクトラム変換処理を行う。これにより、１×６４画素のブロック１８１nが、１×６４画素のブロック１８２nに変換される。
【０２６５】
ステップＳ１６３において、縦ブレ成分検出部１６１は、パワースペクトラム変換処理により得られたブロック１８２nを構成する画素の画素値F(u,v)^2に対してlogをとる。
【０２６６】
ステップＳ１６４において、縦ブレ成分検出部１６１は、ステップＳ１６３の処理が行なわれたブロック１８２nを構成する画素の、対応する位置に存在する画素どうしの画素値log{F(u,v)^2}の総和f''(x,y)を算出する。これにより、縦ブレ成分検出部１６１は、算出された総和f''(x,y)を、画素の画素値f''(x,y)とするブロック１８３を取得する。
【０２６７】
ステップＳ１６５において、縦ブレ成分検出部１６１は、取得したブロック１８３に対して、図２０のステップＳ１０５による処理と同様のケプストラム変換処理を行う。
【０２６８】
ステップＳ１６６において、縦ブレ成分検出部１６１は、図２０のステップＳ１０６による処理と同様にして、ケプストラム変換処理により得られる変換結果に基づいて、縦ブレ成分Lyを検出する。そして、縦ブレ成分検出部１６１は、検出した縦ブレ成分Lyを、ケプストラム変換処理により得られる変換結果とともに、L検出部１６２に供給して、処理を図２５のステップＳ１４３にリターンする。
【０２６９】
本実施の形態では、θ検出部６４（図３）は、減算部６３から供給されるブロック８１nを対象として、パワースペクトラム変換処理を行い、パワースペクトラム変換処理後のブロック８２nそれぞれを構成する画素毎に算出されたパワースペクトラムF(u,v)^2の総和f'(x,y)を、画素の画素値f'(x,y)とするブロックとして、高域成分が強調されたブロック８３を取得した。
【０２７０】
そして、θ検出部６４は、取得したブロック８３を構成する画素の画素値f'(x,y)に対して、次式（２）を適用してg(s,θ)に変換するラドン変換を行い、その変換結果に基づいて、ぼけの方向θを検出するようにしているが、ぼけの方向θを検出する方法は、これに限定されない。
【０２７１】
すなわち、例えば、θ検出部６４は、取得したブロック８３を構成する画素の画素値f'(x,y)に対して、次式（４）を用いた離散的な２次元フーリエ変換を行ない、その変換結果に基づいて、ぼけの方向θを検出するようにしてもよい。
F(j,k) = ΣM-1x=0ΣN-1y=0f'(x,y)e-2πi(jx/M+ky/N)      ・・・（４）
【０２７２】
なお、取得したブロック８３は、１６×１６画素により構成されている。この場合、式（４）では、M=16,N=16となり、ｘ及びｙは、それぞれ、０から１５までの自然数とされる。また、iは虚数を表している。
【０２７３】
さらに、jは±ω0cosθとも表すことができ、kは±ω0sinθとも表すことができる。
【０２７４】
θ検出部６４は、次式（４）を用いた離散的な２次元フーリエ変換により得られるF(j,k)が最大値となるときの（j,k）=(±ω0cosθ,±ω0sinθ)のθを、ぼけの方向θとして検出することができる。
【０２７５】
また、この場合、θ検出部６４は、次式（４）を用いた離散的な２次元フーリエ変換による変換結果に基づいて、ラドン変換による変換結果において、正確なぼけの方向θを検出できたか否かを判定した場合と同様にして、正確なぼけの方向θを検出できたか否かを判定することとなる。
【０２７６】
ところで、本実施の形態では、分割部２２が、撮像部２１からの撮像画像を、複数の短冊ブロックに分割し、分割により得られた複数の短冊ブロック毎に、短冊ブロックに応じて決定されたフィルタを用いて、ぼけの補正を行なうようにしている。したがって、隣接する短冊ブロックにおいて、異なるフィルタを用いて、ぼけの補正が行なわれることが生じ得る。
【０２７７】
この場合、復元部２４において、ぼけの補正が行われた後の複数の短冊ブロックを再構成して復元画像を生成する場合、隣接する短冊ブロックにおいて、異なるフィルタを用いて、ぼけの補正が行なわれているときには、隣接する短冊ブロック間の境界が目立ってしまう。
【０２７８】
そこで、画像処理装置１において、図２７に示されるように、分割部２２は、隣接する短冊ブロックどうしの一部分の領域が重複するように、複数の短冊ブロックを区分けしてぼけの補正を行なうようにし、ぼけが補正された後の複数の短冊ブロックを、αブレンドにより再構成することが可能である。
【０２７９】
図２７は、撮像画像を、隣接する短冊ブロックどうしの一部分の領域が重複するように、複数の短冊ブロックを区分けした場合の一例を示している。
【０２８０】
図２７には、撮像部２１の撮像により得られる撮像画像が示されている。また、図２７には、撮像画像を区分けして得られた複数の短冊ブロックのうち、互いに隣接する、短冊ブロック１と短冊ブロック２とが示されている。
【０２８１】
なお、短冊ブロック１及び２以外の短冊ブロックについては、図面が煩雑になるのを避けるため、図示は省略している。
【０２８２】
例えば、分割部２２は、図２７に示されるように、隣接する、短冊ブロック１と短冊ブロック２との一部分の領域（図２７の斜線部分が示す重複領域）が重複するように、短冊ブロック１と短冊ブロック２とを区分けし、それぞれを、注目ブロックとして、PSF推定部２３及び復元部２４に供給する。
【０２８３】
復元部２４は、分割部２２からの注目ブロック（例えば、短冊ブロック１や短冊ブロック２）に対して、PSF推定部２３からの、正確なPSFを推定できたか否かの判定結果に応じて決定されたフィルタを用いたフィルタリング処理を行い、注目ブロックのぼけを補正する。
【０２８４】
そして、復元部２４は、注目ブロックとされてぼけが補正された短冊ブロック１と短冊ブロック２とを、αブレンドにより再構成する。
【０２８５】
すなわち、例えば、復元部２４は、図２７に示されるように、隣接する、短冊ブロック１と短冊ブロック２とが重複する重複領域のうち、短冊ブロック１よりの重複領域（図中、上側に存在する領域）においては、短冊ブロック１を構成する画素の画素値pに大きな重み付けα（<1）を乗算して、乗算結果αpを取得する。また、短冊ブロック２を構成する画素の画素値qに、重み付けαよりも小さな重み付け(1-α)を乗算して、乗算結果q(1-α)を取得する。
【０２８６】
そして、復元部２４は、取得した乗算結果αpと乗算結果q(1-α)との加算結果αp+（１−α）qを、復元画像上の対応する画素の画素値とする。
【０２８７】
また、例えば、復元部２４は、隣接する、短冊ブロック１と短冊ブロック２とが重複する重複領域のうち、短冊ブロック１よりの重複領域（図中、下側に存在する領域）においては、短冊ブロック１を構成する画素の画素値pに小さな重み付けα（<1）を乗算して、乗算結果αpを取得する。また、短冊ブロック２を構成する画素の画素値qに、重み付けαよりも大きな重み付け(1-α)を乗算して、乗算結果q(1-α)を取得する。
【０２８８】
そして、復元部２４は、取得した乗算結果αpと乗算結果q(1-α)との加算結果αp+（１−α）qを、復元画像上の対応する画素の画素値とする。
【０２８９】
このように、復元部２４では、隣接する短冊ブロックどうしが重複する重複領域に対して、αブレンドを施すことにより、隣接する短冊ブロック間の境界を目立たなくすることが可能となる。
【０２９０】
また、図８の大きさ推定部４２では、横ブレ成分検出部１０２が、横ブレ成分Lxを検出し、L検出部１０３が、方向推定部４１からのぼけの方向θに基づいて、cosθを算出し、横ブレ成分検出部１０２により検出された横ブレ成分Lxを、算出したcosθで除算した除算結果の絶対値|Lx/cosθ|を、ぼけの大きさLとして検出するようにしたが、これに限定されない。
【０２９１】
すなわち、例えば、図８の大きさ推定部４２において、横ブレ成分検出部１０２に代えて、縦ブレ成分Lyを検出する縦ブレ成分検出部（図２２の縦ブレ成分検出部１６１と同様の機能を有するブロック）を設けるようにして、L検出部１０３が、方向推定部４１からのぼけの方向θに基づいて、sinθを算出し、縦ブレ成分検出部が検出する縦ブレ成分Lyを、算出したsinθで除算した除算結果の絶対値|Ly/sinθ|を、ぼけの大きさLとして検出するようにしてもよい。
【０２９２】
また、本実施の形態では、復元部２４は、方向推定部４１からの判定結果が、ぼけの方向θの推定に成功したとの判定結果であり、且つ、大きさ推定部４２からの判定結果が、ぼけの大きさLの推定に成功したとの判定結果である場合、方向推定部４１からのぼけの方向θ、及び大きさ推定部４２からのぼけの大きさLに基づいて、例えばウィナーフィルタを生成し、生成したウィナーフィルタを用いて、注目ブロックのぼけを除去するようにしたが、これに限定されない。
【０２９３】
すなわち、復元部２４は、方向推定部４１からのぼけの方向θ、及び大きさ推定部４２からのぼけの大きさLに基づいて、注目ブロックのぼけを除去する逆フィルタ的な処理を行なうのであれば、どのような処理により、注目ブロックのぼけを除去するようにしてもよい。具体的には、復元部２４は、方向推定部４１からのぼけの方向θ、及び大きさ推定部４２からのぼけの大きさLに基づいて、Richardson-Lucy法やGSD等の代表的なdeconvolution法等を用いた、ぼけを除去する処理を行なうようにしてもよい。
【０２９４】
さらに、本実施の形態では、図１において、PSF推定部２３は、方向推定部４１及び大きさ推定部４２により構成されるようにしたが、方向推定部４１のみにより構成されるようにしてもよい。
【０２９５】
この場合、PSF推定部２３（方向推定部４１）は、注目ブロックのPSFとして、注目ブロックのぼけの方向θを検出するとともに、ぼけの方向θを正確に検出できたか否かの判定を行う。また、PSF推定部２３は、検出したぼけの方向θを、その判定により得られる判定結果とともに、復元部２４に供給することとなる。
【０２９６】
そして、復元部２４は、PSF推定部２３からの判定結果が、ぼけの方向θを正確に検出できたとの判定結果である場合には、PSF推定部２３からのぼけの方向θに基づいて、θ方向エンハンサを生成し、生成したθ方向エンハンサを用いたフィルタリング処理を行なう。
【０２９７】
また、復元部２４は、PSF推定部２３からの判定結果が、ぼけの方向θを正確に検出できなかったとの判定結果である場合には、予め用意しておいたHPF等を用いたフィルタリング処理を行なう。なお、復元部２４は、PSF推定部２３からの判定結果が、ぼけの方向θを正確に検出できなかったとの判定結果である場合には、フィルタを用いたぼけの補正を行なわないようにしてもよい。
【０２９８】
本発明は、YUV空間やRGB空間等のいずれの色空間において定義される画素値を有する画素により構成される撮像画像を対象として、ぼけ補正処理を行なうことができる。
【０２９９】
さらに、本実施の形態において、画像処理装置１は、ぼけ補正処理の処理対象として、６４ラインの水平ラインにより構成される短冊ブロックを、撮像部２１の撮像により得られる撮像画像から分割するようにしたが、短冊ブロックを構成する水平ラインの本数は６４ラインに限定されず、例えば、撮像画像そのものを、処理対象とされる短冊ブロックとするようにしてもよい。
【０３００】
また、ブロック化部６１（図３）は、分割部２２からの注目ブロックから所定の領域を抽出し、抽出した領域を、１６×１６画素のブロック８１nにブロック化し、ブロック化部１０１（図８及び図２２）は、分割部２２からの注目ブロックを、６４×６４画素のブロック１２１nにブロック化するようにしたが、これに限定されない。
【０３０１】
すなわち、例えば、ブロック化部６１及びブロック化部１０１は、例えば、撮像画像のぼけ等に応じて、ブロック化するブロックの大きさを変更することが可能である。
【０３０２】
さらに、本実施の形態において、画像処理装置１は、撮像部２１の撮像により得られた撮像画像に対して、ぼけ補正処理を行なうようにしたが、これに限定されない。
【０３０３】
すなわち、例えば、画像処理装置１は、内蔵された撮像部２１以外のもので撮像された撮像画像に対して、ぼけ補正処理を行なうようにしてもよい。また、画像処理装置１は、撮像部２１の撮像に合わせてリアルタイムに、ぼけ補正処理を行なうようにしてもよいし、撮像部２１の撮像により得られる撮像画像を、記憶しておき、所定のタイミングで、記憶しておいた撮像画像に対して、ぼけ補正処理を行なうようにしてもよい。
【０３０４】
ところで、上述した一連の処理は、専用のハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、いわゆる組み込み型のコンピュータ、又は、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等に、記録媒体からインストールされる。
【０３０５】
[コンピュータの構成例]
次に、図２８は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成例を示している。
【０３０６】
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２０２や、記憶部２０８を構成するハードディスク等により構成される。記録媒体へのプログラムの記録は、必要に応じてルータ、モデム等のインタフェースである通信部２０９を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線又は無線の通信媒体を利用して行われる。
【０３１２】
なお、本明細書において、上述した一連の処理を記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０３１３】
また、本発明の実施の形態は、上述した本実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０３１４】
１  画像処理装置，  ２１  撮像部，  ２２  分割部，  ２３  PSF推定部，  ２４  復元部，  ４１  方向推定部，  ４２  大きさ推定部，  ６１  ブロック化部，  ６２  LPF部，  ６３  減算部，  ６４  θ検出部，  １０１  ブロック化部，  １０２  横ブレ成分検出部１０２，  １０３  L検出部，  １６１  縦ブレ成分検出部，  １６２  L検出部
【図１】
2011128926.tif 000003
【図２】
2011128926.tif 000004
【図３】
2011128926.tif 000005
【図４】
2011128926.tif 000006
【図５】
2011128926.tif 000007
【図６】
2011128926.tif 000008
【図７】
2011128926.tif 000009
【図８】
2011128926.tif 000010
【図９】
2011128926.tif 000011
【図１０】
2011128926.tif 000012
【図１１】
2011128926.tif 000013
【図１２】
2011128926.tif 000014
【図１３】
2011128926.tif 000015
【図１４】
2011128926.tif 000016
【図１５】
2011128926.tif 000017
【図１６】
2011128926.tif 000018
【図１７】
2011128926.tif 000019
【図１８】
2011128926.tif 000020
【図１９】
2011128926.tif 000021
【図２０】
2011128926.tif 000022
【図２１】
2011128926.tif 000023
【図２２】
2011128926.tif 000024
【図２３】
2011128926.tif 000025
【図２４】
2011128926.tif 000026
【図２５】
2011128926.tif 000027
【図２６】
2011128926.tif 000028
【図２７】
2011128926.tif 000029
【図２８】
2011128926.tif 000030