(57)【要約】【課題】  デコンボリューション演算を使用する暈け補正処理によって生じる画質劣化を除去する。【解決手段】  画像処理部105は、コード化露光によって撮像装置が撮像した複数の画像データ、コード化露光における撮像装置のシャッタの開閉パターンを示す情報、および、コード化露光における撮像装置の振れを示す情報を入力する。手振れ補正部108は、複数の画像データを加算合成した画像データ、開閉パターンを示す情報、および、撮像装置の振れを示す情報を用いて、撮像装置の振れに起因する画像の暈けを補正した画像データを生成する。被写体振れ検出部110は、複数の画像データの一つと手振れ補正部108が生成した画像データの相関から、被写体自体が振れを有する被写体を含む画像領域を検出する。被写体補正部111は、複数の画像データから画像領域に組み込むべき画像データを生成する。画像合成部112は、手振れ補正部108が生成した画像データの画像領域に被写体補正部111が生成した画像データを上書き合成する。【選択図】  図2
2011044892.tif 000002
【特許請求の範囲】
【請求項１】
コード化露光によって撮像装置が撮像した複数の画像データ、前記コード化露光における前記撮像装置のシャッタの開閉パターンを示す情報、および、前記コード化露光における前記撮像装置の振れを示す情報を入力する入力手段と、
前記複数の画像データを加算合成した画像データ、前記開閉パターンを示す情報、および、前記撮像装置の振れを示す情報を用いて、前記撮像装置の振れに起因する画像の暈けを補正した画像データを生成する第一の生成手段と、
前記複数の画像データの一つと前記第一の生成手段が生成した画像データの相関から、被写体自体が振れを有する被写体を含む画像領域を検出する検出手段と、
前記複数の画像データから前記画像領域に組み込むべき画像データを生成する第二の生成手段と、
前記第一の生成手段が生成した画像データの前記画像領域に前記第二の生成手段が生成した画像データを上書き合成する合成手段とを有することを特徴とする画像処理装置。
【請求項２】
前記第二の生成手段は、前記複数の画像データそれぞれから前記画像領域の画像データを切り出す手段と、
前記画像領域に含まれる被写体の位置を合せるように、前記切り出した複数の画像データを加算合成して、前記画像領域に組み込むべき画像データを生成する手段とを有することを特徴とする請求項1に記載された画像処理装置。
【請求項３】
さらに、前記切り出した画像データそれぞれにランダムノイズを加える手段を有することを特徴とする請求項2に記載された画像処理装置。
【請求項４】
前記第二の生成手段は、前記複数の画像データそれぞれから前記画像領域の画像データを切り出す手段と、
前記切り出した、一つの画像データと他の画像データそれぞれの間の動きベクトルを算出する手段と、
前記一つの画像データを、前記他の画像データそれぞれに対応する動きベクトル分、シフトした複数の画像データを生成するシフト手段と、
前記一つの画像データおよび前記生成した複数の画像データを加算合成して、前記画像領域に組み込むべき画像データを生成する手段とを有することを特徴とする請求項1に記載された画像処理装置。
【請求項５】
前記シフト手段は、前記一つの画像データにランダムノイズを加えた後、前記シフトを行うことを特徴とする請求項4に記載された画像処理装置。
【請求項６】
前記第二の生成手段は、前記複数の画像データを加算合成する手段と、
前記加算合成した画像データから前記画像領域の画像データを切り出して、前記画像領域に組み込むべき画像データを生成する手段とを有することを特徴とする請求項1に記載された画像処理装置。
【請求項７】
コード化露光によって撮像装置が撮像した複数の画像データ、前記コード化露光における前記撮像装置のシャッタの開閉パターンを示す情報、および、前記コード化露光における前記撮像装置の振れを示す情報を入力する入力ステップと、
前記複数の画像データを加算合成した画像データ、前記開閉パターンを示す情報、および、前記撮像装置の振れを示す情報を用いて、前記撮像装置の振れに起因する画像の暈けを補正した画像データを生成する第一の生成ステップと、
前記複数の画像データの一つと前記第一の生成ステップで生成した画像データの相関から、被写体自体が振れを有する被写体を含む画像領域を検出する検出ステップと、
前記複数の画像データから前記画像領域に組み込むべき画像データを生成する第二の生成ステップと、
前記第一の生成ステップで生成した画像データの前記画像領域に前記第二の生成ステップで生成した画像データを上書き合成する合成ステップとを有することを特徴とする画像処理方法。
【請求項８】
コンピュータ装置を、請求項1から請求項7の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮影画像の暈けを補正する画像処理に関する。
【背景技術】
【０００２】
ディジタル画像は、パーソナルコンピュータを利用して簡単に100%超の拡大表示が可能であり、拡大画像においては僅かな手振れによる画像の暈けも目立つ。そのため、ディジタルカメラの撮像デバイスの高解像度化に伴い、撮影時の手振れを補正する処理が注目されている。
【０００３】
手振れの補正方法には、ハードウェアによる補正方法と、ソフトウェアによる補正方法がある。ハードウェアによる補正方法は、カメラにジャイロセンサを搭載し、露光中、ジャイロセンサの出力信号に基づき、カメラの振動を打ち消すようにレンズや撮像デバイスを駆動して手振れを低減する。レンズ光学系による手振れ補正は、特許文献1などに述べられている。しかし、ハードウェアによる補正方法は、部品点数の増加、製造コストの増加という問題がある。安価なディジタルカメラで同様の機能を実現する場合、ソフトウェアによる補正方法が望まれる。
【０００４】
ソフトウェアによる補正方法には、手振れの影響が小さい短時間露光によって連続撮影した画像（以下、短時間露光画像）を複数用意し、それら画像間の位置を合わせ、それら画像を加算合成する方法がある（例えば特許文献2）。また、露光パターンを用いた撮影を行い、デコンボリューション演算によって手振れまたは被写体振れに起因する暈けを補正するコード化露光(coded exposure)と呼ばれる技術が提案されている（例えば、特許文献3）。特許文献3の技術は、演算によって暈け補正を行うため、特許文献2で必要とされる複数の画像間の位置合わせが不要になる。
【０００５】
特許文献2の技術は、各画像が振れを含まないことを前提とする。もし、短時間露光によっても手振れが影響した画像が存在すると、各画像間の位置合わせが良好に実現されず、暈けを補正した画像が得られない。例えば、夜景などの撮影は、撮影画像にノイズが加わり易く、ノイズを低減するために所定時間以上の露光が必要になる。露光時間が長くなれば、手振れが影響し易くなり、各画像間の位置合わせが難しくなる。つまり、特許文献2の技術は、複数の短時間露光画像を加算合成しても、手振れに起因する暈けを充分に除去できない場合がある。
【０００６】
特許文献3の技術は、ある方向に発生する手振れ、被写体振れに起因する暈けは補正可能である。しかし、人物の移動のような複雑な振れ（以下、被写体振れ）に起因する暈けは補正することができない。つまり、コード化露光による暈け補正は、画像全体に対して均一な振れがある場合に機能するが、局所的な動きを示す振れには機能せず、返って、動きがある被写体の周辺に画質劣化を生じさせることがある。
【０００７】
図1によりコード化露光による暈け補正の問題を説明する。図1(a)は、コード化露光した画像全体に対して回転方向の手振れ（以下、回転振れ）が発生し、同時に、一部の被写体（図1の例では車両）が左方向へ移動して被写体振れが発生している状態を示す模式図である。図1(a)の撮影画像にデコンボリューション演算を使用する暈け補正処理を施すと、図1(b)に示すように、回転振れなど画像全体の振れに起因する暈けは補正される。しかし、被写体自体が動いているような一部の被写体（図1の例では車両）の周囲に画質劣化が発生する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開2002-214657公報
【特許文献２】特開2007-243774公報
【特許文献３】米国特許出願公開第2007/0258706号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、デコンボリューション演算を使用する暈け補正処理によって生じる画質劣化を除去することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１１】
本発明は、コード化露光によって撮像装置が撮像した複数の画像データ、前記コード化露光における前記撮像装置のシャッタの開閉パターンを示す情報、および、前記コード化露光における前記撮像装置の振れを示す情報を入力し、前記複数の画像データを加算合成した画像データ、前記開閉パターンを示す情報、および、前記撮像装置の振れを示す情報を用いて、前記撮像装置の振れに起因する画像の暈けを補正した画像データを生成（第一の生成）し、前記複数の画像データの一つと前記第一の生成ステップで生成した画像データの相関から、被写体自体が振れを有する被写体を含む画像領域を検出し、前記複数の画像データから前記画像領域に組み込むべき画像データを生成（第二の生成）し、前記第一の生成で生成した画像データの前記画像領域に前記第二の生成で生成した画像データを上書き合成することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、デコンボリューション演算を使用する暈け補正処理によって生じる画質劣化を除去することができる。
【図面の簡単な説明】
【００１３】
【図１】コード化露光による暈け補正の問題を説明する図。
【図２】実施例の撮像装置の構成例を説明するブロック図。
【図３】撮像装置における暈け補正処理を説明するフローチャート。
【図４】開閉パターンの一例を示す図。
【図５】手振れ補正部の暈け補正処理を説明するフローチャート。
【図６】手振れ補正部の動作原理を説明する概念図。
【図７】PSFの作成を説明するフローチャート。
【図８】一般的な回転運動におけるPSFの一例を示す図。
【図９】PSFの形状および周波数特性を説明する図。
【図１０】コード化露光を行った場合のPSFの形状および周波数特性を説明する図。
【図１１】暈けた画像と暈け補正処理の結果を説明する図。
【図１２】被写体振れ検出部の処理を説明するフローチャート。
【図１３】被写体補正部の処理を説明するフローチャート。
【図１４】実施例1の暈け補正処理の結果を説明する模式図。
【図１５】実施例2の被写体補正部の処理を説明するフローチャート。
【図１６】実施例2の暈け補正処理の結果を説明する模式図。
【図１７】実施例3の被写体補正部の処理を説明するフローチャート。
【図１８】実施例3の暈け補正処理の結果を説明する模式図。
【図１９】実施例4の手振れ補正部の暈け補正処理を説明するフローチャート。
【図２０】PSFの作成を説明するフローチャート。
【発明を実施するための形態】
【００１４】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。なお、以下では、本発明をディジタルカメラの画像処理に適用する例を説明するが、本発明はディジタルビデオカメラの画像処理にも適用することができる。
【実施例１】
【００１５】
［装置の構成］
図2のブロック図により実施例の撮像装置の構成例を説明する。
【００１６】
撮像部101は、撮像レンズ群、CMOSセンサやCCDなどの半導体撮像デバイスから構成される。露光制御部102は、シャッタの開閉を制御し、絞りを駆動する。振れ検出部103は、撮像装置の姿勢変化を検出し、手振れなどに関する振れ情報を出力する。A/D変換部104は、撮像部101から出力されるアナログ画像信号をディジタル画像信号に変換して画像処理部105に入力する。
【００１７】
画像処理部105は、A/D変換部104から入力されたディジタル画像信号をメモリ106に格納し、ディジタル画像信号から輝度信号や色信号を形成するデモザイキング処理などを行い、撮影画像の画像データを生成する。生成された画像データは、撮像装置が備える液晶モニタである表示部114に表示されたり、画像記録部113により撮像装置が内蔵するメモリや撮像装置に装着されたメモリに記録される。
【００１８】
詳細は後述するが、第一の生成手段である手振れ補正部108は、コード化露光およびデコンボリューション演算に基づく暈け補正処理により、撮像装置の振れに起因する画像の暈けを補正した画像データを生成する。一方、被写体振れ検出部110は、被写体自体が振れ（動き）を有する被写体を含む画像領域（以下、被写体振れ領域）を検出する。第二の生成手段である被写体補正部111は、被写体振れ領域に組み込むべき画像データを生成する。つまり、被写体振れ領域に組み込むべき画像データとは、手振れ補正部108の暈け補正処理によって生じる画質劣化を除去するための画像データである。
【００１９】
［暈け補正処理］
図3のフローチャートにより撮像装置における暈け補正処理を説明する。
【００２０】
撮像に先立ち、開閉パターン生成部107は、コード化露光におけるシャッタの開閉パターンを決定し、露光制御部102に出力する(S101)。コード化露光は、指定された露光期間にシャッタを不規則に開閉し（フラッタシャッタ）、開閉パターンに従い撮像された画像と開閉パターンの相関から手振れに起因する暈けを修復する。露光制御部102は、開閉パターンに従い、撮像部101のシャッタの開閉を制御してコード化露光を行う(S102)。
【００２１】
図4により開閉パターンの一例を示す。図4の例では、h(t)=‘1’のシャッタ開期間が15回あるので、15回の短時間露光による撮像が行われる。各シャッタ開期間は、通常必要になる露光時間に比較して充分短く、各シャッタ開期間における振れの影響は無視することができる。各シャッタ開期間に撮像された画像（以下、短時間露光画像）は、A/D変換部104によりディジタル化され、メモリ106に撮像順に蓄積される。
【００２２】
次に、手振れ補正部108は、開閉パターンに従い、メモリ106に蓄積された短時間露光画像を加算合成した画像を生成し、メモリ106に格納する(S103)。上記短時間露光画像の撮像(S102)とその合成(S103)は、ステップS104の判定により、開閉パターン生成部107が決定した開閉パターンが終了するまで繰り返し行われる。
【００２３】
次に、手振れ補正部108は、振れ検出部103が出力する振れ情報および開閉パターン生成部107が出力する開閉パターンに基づき、全短時間露光画像を加算合成した画像に暈け補正処理を施す(S105)。
【００２４】
一方、フレーム画像取得部109は、メモリ106に蓄積された短時間露光画像から所定のフレーム、例えば最初に撮像された短時間露光画像を取得し、取得した画像に適度のゲインアップを施す。被写体振れ検出部110は、フレーム画像取得部109によりゲインアップされた画像と、手振れ補正部108により暈け補正処理された画像（以下、手振れ補正画像）の相関度を算出する。そして、相関度が低い領域を被写体振れが存在する被写体振れ領域として検出する(S106)。
【００２５】
次に、第二の補正手段である被写体補正部111は、被写体振れ領域に対して、手振れ補正部108とは異なる補正処理を施す(S107)。例えば、メモリ106に蓄積された複数の短時間露光画像それぞれから被写体振れ領域を切り出す。そして、切り出した画像それぞれが含む被写体の位置を合わせるように、切り出した複数の画像を加算合成する暈け補正処理を行う。次に、画像合成部112は、被写体振れ領域に対応する手振れ補正画像の領域に、被写体補正部111が出力する画像（以下、被写体補正画像）を上書きする重畳合成を行い、画像処理部105の出力画像とする(S108)。
【００２６】
なお、被写体振れ領域が検出されなかった場合、画像処理部105の出力画像は手振れ補正部108が出力する手振れ補正画像そのものである。
【００２７】
［手振れ補正部］
図5のフローチャートにより手振れ補正部108の暈け補正処理(S105)を説明する。以下では、例えばレンズの光軸を中心とする画像の回転方向の振れ（以下、回転振れ）に起因する暈けを補正する例を説明する。
【００２８】
手振れ補正部108は、メモリ106から全短時間露光画像を加算合成した画像データを入力する(S201)。ここで、撮像部101の画素(x, y)に単位時間当りに入射する光の強度をI(x,y)、回転振れの角速度をω(t)、露光時間をTとする。時刻tに、撮像装置にはI(x, y)を-θ(T-t)だけ回転させた情報が入射するので、撮像データIblur(x, y)は次式で表される。なお、座標系の原点は、振れ検出部103が出力する回転振れ情報が表す回転中心の位置座標に一致させる。
Iblur(x, y) = 1/T・∫th(t)I{x・cosθ(T-t)+y・sinθ(T-t), -x・sinθ(T-t)+y・cosθ(T-t)}dt
= 1/T・∫th(t)I{x・cosθ(t)+y・sinθ(t), -x・sinθ(t)+y・cosθ(t)}dt      …(1)
= 1/T・∫ωh(θ)/ω(θ)・I{x・cosθ+y・sinθ, -x・sinθ+y・cosθ}dθ      …(2)
= 1/T・∫ωh'(θ)・I{x・cosθ+y・sinθ, -x・sinθ+y・cosθ}dθ            …(3)
ここで、関数h(t)はシャッタの開閉を表し、シャッタ開は1、シャッタ閉は0、
積分範囲はt=0〜T、
積分範囲はω=0〜ω。
【００２９】
式(1)から式(2)の変形では、積分変数を変換した。ω(t)=dθ/dtである。また、ω(θ)は、tとθの関係を利用してθを変数に、h(t)を書き直した関数である。同様に、h(θ)は、tとθの関係を利用してθを変数に、h(t)を書き直した関数である。また、式(3)において、h'(θ)=h(θ)/ω(θ)である。
【００３０】
次に、手振れ補正部108は、開閉パターンを取得し(S202)、振れ角度θと時間の関係を示す回転振れ情報を取得する(S203)。そして、詳細は後述するが、振れ角度情報と開閉パターンに基づき、極座標上の点像分布関数(point spread function: PSF)であるh'(θ)を算出する(S204)。
【００３１】
次に、手振れ補正部108は、画像データを極座標上の画像に変換する(S205)。前述したように、この変換における直交座標系の原点は、回転振れ情報が示す回転の中心座標に一致させる。極座標変換により式(3)は式(4)に変換される。
Iblur(r, Θ) = 1/T・∫ωh'(θ)I(r, Θ-θ)dθ
= 1/T・(h' * I)(r, Θ)              …(4)
ここで、式(3)における(x, y)はr(cosΘ, sinΘ)である。
【００３２】
式(4)は、平行移動に対する振れと同じ式であり、PSFであるh'(θ)によるコンボリューションを行ったものと見做すことができる。ただし、式(4)は理論的な式であり、実際のデータはディジタル値であるから、実空間から極座標空間への変換には何らかの補間が必要になる。任意の補間方法を用いることができるが、ここではバイキュービック法やバイリニア法を用いるものとする。
【００３３】
次に、手振れ補正部108は、詳細は後述するが、PSFの算出結果を基に式(4)のコンボリューションを打ち消すデコンボリューションを行う(S206)。デコンボリューションのアルゴリズムは、既存の任意のアルゴリズムを用いればよい。例えば、周波数空間上での除算、Lucy-Richardsonのアルゴリズム、Wienerフィルタを用いたアルゴリズム、正則化フィルタを用いたアルゴリズムなどが挙げられる。本実施例では、詳細は後述するが、開閉パターンを制御することでh'(θ)の形状をコントロールし、周波数空間上で除算を行うものとする。
【００３４】
次に、手振れ補正部108は、デコンボリューションによってI(r, Θ)が得られるので、I(r, Θ)を実空間表示I(x, y)に逆変換する(S207)。この逆変換も、実空間から極座標空間への変換と同様、補間処理が必要になる。そして、手振れ補正部108は、I(x, y)を手振れ補正画像の画像データとして出力する(S208)。
【００３５】
図6の概念図により手振れ補正部108の動作原理を説明する。つまり、極座標変換によって、回転振れを角度Θ軸方向の振れ（横振れ）に変換し、画像の横振れをデコンボリューションによって除去する。そして、横振れを除去した画像を実空間に戻し、回転振れを除去した画像を得る。なお、上記では、回転振れを補正対象にするために画像を極座標に変換してでコンボリューションを行った。極座標に変換せずにでコンボリューションを行えば、画像の水平・垂直方向への振れ（以下、シフト振れ）の補正も可能である。例えば、画像のシフト振れを修正した後、画像を極座標に変換して回転振れを補正すればよい。
【００３６】
●PSFの作成方法
図7のフローチャートによりPSFの作成(S204)を説明する。
【００３７】
手振れ補正部108は、振れ検出部103から振れ角度θと時間を示す回転振れ情報を入力し、角度θを時間で微分して角速度ω(t)を算出する(S401)。角速度ω(t)とθ(t)と組み合わせることにより、角速度をθの関数として表すことが可能になる。これをω(θ)とする。
【００３８】
次に、手振れ補正部108は、開閉パターンと、回転振れ情報に基づき、関数h(t)をθの関数として取得する(S402)。これをh(θ)とする。振れ補正部108は、取得した情報に基づき、h'(θ)=h(θ)/ω(θ)を算出する(S403)。式(3)に示すように、h'(θ)が極座標上のPSFである。
【００３９】
図8により一般的な回転運動におけるPSFの一例を示す。横軸は角度（ラジアン）、縦軸はPSFの値を示している。シャッタ開の条件を0≦t≦Tにおいてh(t)=1、それ以外はh(t)=0とし、加速運動をしているとすると、ω(θ)が増大するのでPSFであるh'(θ)の値は減少する。
【００４０】
●デコンボリューション
式(4)を周波数空間上に変換すると次式が得られる。
Iblur(f, ρ) = 1/T・H'(f, ρ)I(f, ρ)      …(5)
ここで、fはrの周波数変換に対応する変数、
ρはΘの周波数変換に対応する変数。
【００４１】
H'(f, ρ)は既知であるから、周波数空間上でIblur(f, ρ)をH'(f, ρ)で除算すれば、I(f, ρ)は原理的には求まる。しかし、ここには問題点があり、等角速度運動による振れを考え、ω(θ)が一定であるとして説明する。
【００４２】
図9によりPSFの形状および周波数特性を説明する。図9(a)は通常の露光条件（シャッタ開の条件）である0≦t≦Tにおいてh(t)=1、それ以外はh(t)=0の場合（シャッタの開期間において連続的にシャッタ開）のPSFの形状を示す図である。図9(b)は図9(a)に示すPSFを周波数特性を示す図である。なお、図9(a)において、横軸は角度（ラジアン）、縦軸はPSFの値を表す。また、図9(b)において、横軸は角度（ラジアン）、縦軸はH'(f, ρ)の絶対値を表す。
【００４３】
図9(b)を参照すると、周期的に絶対値が0になる周波数が現れる。これは、その周波数に対応する情報の消失を表し、このような状態でデコンボリューションを行えば、情報が消失した周波数が存在することに対応する波形が現れる。そこで、情報の消失した周波数の発生を防ぐ、言い換えれば、PSFの絶対値が0になる周波数の発生を防ぐために、シャッタの開期間において、開閉パターンに従いシャッタの開閉を小刻みかつランダムに制御するコード化露光を行う。
【００４４】
図10によりコード化露光を行った場合のPSFの形状および周波数特性を説明する。図10(a)はコード化露光を行った場合のPSFの形状を示す図、図10(b)は図10(a)に示すPSFの周波数特性を示す図である。コード化露光を行うと、図10(b)に示すように、情報が消失する周波数は存在せず、情報も失われることはないので、Iblur(f, ρ)をH'(f, ρ)で除算すれば、理論的に、完全なデコンボリューションが可能になる。
【００４５】
図11により暈けた画像と暈け補正処理の結果を説明する。図11(a)は回転振れによって暈けた画像（シミュレーション）を示し、図11(b)は回転振れによる暈けを補正した画像を示す。このように、回転振れ情報および開閉パターン、実空間と極座標空間の相互変換、および、デコンボリューションを用いて、全短時間露光画像を加算合成した画像データから回転振れによる暈けを補正した画像を得ることができる。また、暈けの補正処理に必要な情報は、開閉パターン、振れ情報、開閉パターンに従って加算合成して生成した振れによる暈け画像であることがわかる。
【００４６】
しかし、暈け補正処理に用いるデコンボリューションは、画像全体に対する動きベクトルを用いる演算を行う。そのため、画像全体とは異なる動きベクトルをもつ領域が存在する場合、その領域と、その周辺領域は正しい暈け補正を行うことができない。そこで、デコンボリューションを用いる暈け補正処理を行った画像から画像全体とは異なる動きベクトルをもつ被写体振れ領域を検出し、被写体振れ領域に対して、デコンボリューションを用いる暈け補正処理とは異なる補正処理を施す。
【００４７】
［被写体振れ検出部］
被写体振れ検出部110は、画像全体の振れとは異なるベクトルをもつ振れ領域を検出する。図12のフローチャートにより被写体振れ検出部110の処理(S106)を説明する。
【００４８】
被写体振れ検出部110は、手振れ補正画像を入力し(S1101）、手振れ補正画像を所定画素サイズのブロックに分割する(S1102)。さらに、フレーム画像取得部109がメモリ106から取得し、ゲインアップを行ったフレームの画像を入力し(S1103)、フレームの画像を前記所定画素サイズのブロックに分割する(S1104)。なお、メモリ106から取得されるフレームは短時間露光によって撮像されているため、露光時間が不足した暗い画像であり、ゲインアップによって明るさを上げる必要がある。
【００４９】
次に、被写体振れ検出部110は、手振れ補正画像と、フレームの画像の同一位置のブロック同士の相関を演算する(S1105)。相関の評価値Veは、例えば、比較対象のブロックにおいて、同位置の画素の値の差分絶対値を累積加算することによって求める。そして、相関の評価値Veが、所定の閾値Th以上か否かを判定し(S1106)、Ve≧Thであれば、当該ブロックを被写体振れ領域に設定する(S1107)。そして、ステップS1108の判定により、すべてのブロックについて被写体振れ領域か否かの判定が終了するまで、ステップS1105からS1107の処理を繰り返す。
【００５０】
なお、被写体振れ領域と判定されるブロックが複数ある場合がある。隣接するブロックの場合、被写体振れ検出部110は、それらブロックの集合を被写体振れ領域とする。また、互いに離間したブロックの場合、被写体振れ検出部110は、それらブロック一つ一つを被写体振れ領域とする。
【００５１】
［被写体補正部］
被写体補正部111は、被写体振れ領域の補正処理を行う。図13のフローチャートにより被写体補正部111の処理(S207)を説明する。
【００５２】
被写体補正部111は、被写体振れ検出部110から被写体振れ領域を示す情報を入力し(S1301)、メモリ106から一番目のフレーム（最初に撮像された短時間露光画像）を入力する(S1302)。そして、入力したフレームから被写体振れ領域の画像を切り出し(S1303)、切り出した画像にランダムノイズを加える(S1304)。そして、ランダムノイズを加えた画像を例えばメモリ106の所定領域に格納する(S1305)。なお、ランダムノイズの重畳は、画像を加算合成する際に同じ位置にノイズがあると、ノイズが強調される現象を防ぐ措置である。
【００５３】
次に、被写体補正部111は、ステップS1306の判定により、開閉パターンに従い撮像された全短時間露光画像についてステップS1302からS1305の処理が終了するまで、処理をステップS1302に戻し、次のフレームの処理を行う。
【００５４】
全フレームについてステップS1302からS1305の処理が終了すると、被写体補正部111は、例えばメモリ106に格納した被写体振れ領域の複数の画像を周知の方法によって位置合せする(S1307)。そして、位置合せ後の複数の画像を加算合成して(S1307)、被写体補正画像とする。なお、位置合せの基準にするフレームは、被写体振れ領域の検出に使用したフレームである。
【００５５】
なお、被写体振れ領域が複数ある場合、被写体補正部111は、それら領域それぞれについて被写体補正画像を生成する。
【００５６】
［補正例］
図14の模式図により本実施例の暈け補正処理の結果を説明する。図14(a)は、手振れのほかに被写体振れを含む画像に手振れ補正部108による暈け補正処理を施した画像を示している。当該画像に破線で示す被写体振れ領域には、移動するオブジェクト（車両）が写っている。手振れ補正部108による暈け補正処理後の画像には、当該オブジェクトの周辺に画質劣化が目立つ。図14(b)は、図14(a)の被写体振れ領域に被写体補正画像を重ねた画像を示している。移動するオブジェクト（車両）の周辺の画質劣化が除去され、被写体振れに起因する暈けも軽減されている。
【００５７】
このように、画像全体に対して均一な振れだけではなく、局所的な動きを示す振れが存在する場合も、コード化露光とデコンボリューション演算による暈け補正処理によって生じる、被写体振れ領域の画質劣化を除去することができる。
【実施例２】
【００５８】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００５９】
実施例1では、被写体振れ領域の画像に、画像全体の暈け補正処理とは異なる暈け補正処理を行い、手振れと被写体振れに起因する暈けを補正する方法を説明した。しかし、被写体の動きを取り入れた撮影が行われることも多く、被写体振れとして補正するよりも、被写体振れを残した方がよい場合がある。実施例2においては、手振れに起因する暈けのみを補正し、被写体振れを意図的に残した画像を生成する方法を説明する。
【００６０】
図15のフローチャートにより実施例2の被写体補正部111の処理(S207)を説明する。なお、ステップS1301からS1303の処理は実施例2と同様なので詳細説明を省略する。
【００６１】
被写体補正部111は、切り出した画像を所定画素サイズのブロックに分割し(S1311)、ブロック化した画像が一番目のフレームから切り出した画像か否かを判定する(S1312)。一番目のフレームから切り出した画像であれば、ブロック化した画像を動きベクトルを演算する際の参照画像として例えばメモリ106の所定領域に格納する(S1313)。さらに、ブロック化前の画像を基準画像および合成画像として例えばメモリ106の所定領域にそれぞれ格納し(S1314)、処理をステップS1302に戻す。なお、任意のフレームを参照画像および基準画像にすることができるが、この例では、説明を簡単にするために一番目のフレームを参照画像および基準画像にする。一番目のフレーム以外を参照画像および基準画像にする方法は、当業者であれば極めて容易に想到される。
【００６２】
また、一番目以外のフレームから切り出した画像（以下、比較画像）である場合(S1312)は、メモリ106に格納した参照画像を読み込み(S1315)、ブロック単位に参照画像と比較画像を比較してブロック単位の動きベクトルを求める(S1316)。動きベクトルの算出は周知のブロックマッチングにより行う。ブロックマッチングは、評価値としてブロック内の画素間の差分二乗和または差分絶対値和を用いる。例えば、比較画像の比較対象ブロックに対して、参照画像のブロックを順次移動して評価値を求め、得られた評価値の中から最小の評価値をもつブロックを、比較対象ブロックと最も相関が高い参照画像のブロックと判定する。そして、参照画像の当該ブロックから比較画像の比較対象ブロックを結ぶベクトルが動きベクトルである。
【００６３】
次に、被写体補正部111は、メモリ106に格納した基準画像と合成画像を読み込み(S1317)、基準画像にランダムノイズを加え(S1318)、ランダムノイズを加えた基準画像を、動きベクトル分、シフトする(S1319)。そして、シフトした基準画像と合成画像を加算合成した画像によってメモリ106に格納した合成画像を置き換える(S1320)。なお、ランダムノイズの重畳は、同位置にノイズがある画像の一方をシフトして加算合成すると、ノイズが軌跡のようなパターンとして現れる現象を防ぐ措置である。なお、シフトは、動きベクトルの最大値、平均値、中央値、または、ブロックごとに重み付けした動きベクトルの平均値によって行えばよい。
【００６４】
次に、被写体補正部111は、ステップS1321の判定により、開閉パターンに従い撮像された全短時間露光画像についてステップS1302からS1320の処理が終了するまで、処理をステップS1302に戻し、次のフレームの処理を行う。全フレームについてステップS1302からS1320の処理が終了すると、被写体補正部111は、メモリ106に格納した合成画像を被写体補正画像とする。
【００６５】
図16の模式図により本実施例の暈け補正処理の結果を説明する。図16(a)は、手振れのほかに被写体振れを含む画像に手振れ補正部108による暈け補正処理を施した画像を示している。当該画像に破線で示す被写体振れ領域には、移動するオブジェクト（車両）が写っている。手振れ補正部108による暈け補正処理後の画像には、当該オブジェクトの周辺に画質劣化が目立つ。図16(b)は、図16(a)の被写体振れ領域に被写体補正画像を重ねた画像を示し、オブジェクト（車両）の移動が再現され、当該オブジェクトの周辺の画質劣化は除去されている。
【実施例３】
【００６６】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６７】
実施例1では、被写体振れ領域の画像に、画像全体の暈け補正処理とは異なる暈け補正処理を行い、手振れと被写体振れに起因する暈けを補正する方法を説明した。しかし、被写体振れ領域の暈け補正処理を行わずに、被写体振れ領域の画質劣化を防ぐこともできる。このような構成によれば、撮像装置への実装コストを低減を図ることができ、実用的な構成と言える。実施例3では、被写体振れ領域の画質劣化を防ぐ実施例を説明する。
【００６８】
図17のフローチャートにより実施例3の被写体補正部111の処理(S207)を説明する。
【００６９】
被写体補正部111は、被写体振れ検出部110から被写体振れ領域を示す情報を入力し(S1801)、メモリ106から任意のフレーム（通常、第一のフレームである最初に撮像された短時間露光画像）を入力する(S1802)。そして、入力フレームを合成画像として例えばメモリ106の所定領域にそれぞれ格納する(S1803)。
【００７０】
次に、被写体補正部111は、（通常、フレーム順に）未入力のフレームを入力し(S1804)、入力フレームとメモリ106に格納した合成画像を加算合成した画像によって、メモリ106に格納した合成画像を置き換える(S1805)。
【００７１】
次に、被写体補正部111は、全フレームを処理したか否かを判定し(S1806)、未処理のフレームがあれば処理をステップS1804に戻して、全フレームの処理が終了するまでステップS1804、S1805の処理を繰り返す。
【００７２】
全フレームの処理が終了すると、被写体補正部111は、メモリ106に格納した合成画像を読み出し(S1807)、合成画像から被写体振れ領域の画像を切り出して(S1808)、被写体補正画像とする。
【００７３】
図18の模式図により本実施例の暈け補正処理の結果を説明する。図18(a)は、手振れのほかに被写体振れを含む画像に手振れ補正部108による暈け補正処理を施した画像を示している。当該画像に破線で示す被写体振れ領域には、移動するオブジェクト（車両）が写っている。手振れ補正部108による暈け補正処理後の画像には、当該オブジェクトの周辺に画質劣化が目立つ。図18(b)は、図18(a)の被写体振れ領域に被写体補正画像を重ねた画像を示し、被写体振れ領域の暈けは残るが、オブジェクト（車両）の周辺の画質劣化は除去されている。
【実施例４】
【００７４】
以下、本発明にかかる実施例4の画像処理を説明する。なお、実施例4において、実施例1〜3と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００７５】
図3においては、コード化露光処理によって回転振れによる画像の暈けを補正する処理を説明した。以下では、回転振れに加えて、水平振れと垂直振れによる画像の暈けを補正する処理を説明する。
【００７６】
図19のフローチャートにより実施例4の手振れ補正部108の暈け補正処理(S105)を説明する。ステップS201、S202の処理は、図5と同じ処理である。続いて、水平振れ情報を入力し(S1703)、水平振れ情報と開閉パターンに基づき、水平方向のPSFを算出して(S1704)、PSFの算出結果を基にデコンボリューションを行う(S1705)。次に、垂直振れ情報を入力し(S1706)、垂直振れ情報と開閉パターンに基づき、垂直方向のPSFを算出して(S1707)、PSFの算出結果を基にデコンボリューションを行う(S1708)。以降の処理（S203〜S208）は、図5と同じ、回転振れによる画像の暈けを補正する処理である。
【００７７】
つまり、水平振れと垂直振れによる画像の暈けを補正する処理は、画像データを極座標上の画像に変換する処理と、その逆変換処理を行わない以外は、回転振れによる画像の暈けを補正する処理と同様の処理である。
【００７８】
図20のフローチャートによりPSFの作成（S1704、S1707）を説明する。まず、入力した水平または垂直振れ情報に基づき、水平または垂直方向の移動速度v(t)を算出する(S1901)。次に、露光情報h(t)を移動速度v(t)で除算し(S1902)、除算結果h'(t)=h(t)/v(t)をPSFとして出力する(S1903)。
【００７９】
［変形例］
上記では、撮像装置に組み込まれた画像処理部105における暈け補正処理を説明した。しかし、暈け補正処理を含む様々な画像処理機能を実現するソフトウェアをインストールしたコンピュータ機器によって上記の暈け補正処理を含む画像処理を実現することができる。その際、当該コンピュータ機器には、コード化露光によって得られた複数の短時間露光画像、コード化露光時のシャッタの開閉パターンを示す情報、コード化露光時の撮像装置の振れを示す情報を供給すればよい。その場合、暈け補正処理を含む様々な画像処理機能を実現するソフトウェアを実行するコンピュータ機器などが本発明の画像処理装置に相当する。
【００８０】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図２】
2011044892.tif 000003
【図３】
2011044892.tif 000004
【図４】
2011044892.tif 000005
【図５】
2011044892.tif 000006
【図６】
2011044892.tif 000007
【図７】
2011044892.tif 000008
【図８】
2011044892.tif 000009
【図９】
2011044892.tif 000010
【図１０】
2011044892.tif 000011
【図１２】
2011044892.tif 000012
【図１３】
2011044892.tif 000013
【図１５】
2011044892.tif 000014
【図１７】
2011044892.tif 000015
【図１９】
2011044892.tif 000016
【図２０】
2011044892.tif 000017
【図１】
2011044892.tif 000018
【図１１】
2011044892.tif 000019
【図１４】
2011044892.tif 000020
【図１６】
2011044892.tif 000021
【図１８】
2011044892.tif 000022