(57)【特許請求の範囲】
【請求項１】
コード化露光によって撮像装置が撮像した複数の画像データ、前記コード化露光における露光条件を示す情報、および、前記コード化露光における前記撮像装置の振れを示す情報を入力する入力手段と、
前記複数の画像データのそれぞれが表す画像において、前記撮像装置の振れを示す情報が示す動きとは異なる動きを示す画像領域を特定し、前記画像領域に対応する画像データを抽出する抽出手段と、
前記複数の画像データのそれぞれについて、前記特定された画像領域の画素の値を、当該画像領域の外側かつ近傍の画素の値に基づき置換する置換手段と、
前記特定された画像領域の画素の値が置換された複数の画像データ、前記露光条件、および、前記撮像装置の振れを示す情報を用いて、前記画素の値が置換された複数の画像データの合成を含む処理により、前記撮像装置の振れに起因する画像の暈けを補正した第一の画像データを生成する第一の生成手段と、
前記抽出された複数の画像データに所定の処理を施した第二の画像データを生成する第二の生成手段と、
前記第一の画像データの、前記特定された画像領域に対応し、前記特定された各画像領域よりも大きい画像領域に前記第二の画像データを上書き合成する合成手段とを有することを特徴とする画像処理装置。
【請求項２】
前記第二の生成手段は、前記抽出された複数の画像データを加算合成した画像データを前記第二の画像データにすることを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記第二の生成手段は、前記特定された各画像領域に含まれる被写体の位置を合わせるように前記抽出された各画像データが表す画像をシフトし、前記シフト後の各画像データを加算合成した画像データを前記第二の画像データにすることを特徴とする請求項1に記載された画像処理装置。
【請求項４】
前記抽出手段は前記画像領域の特定に使用した前記画像領域の動きベクトルを出力し、前記第二の生成手段は、前記抽出された複数の画像データ、前記露光条件を示す情報、および、前記特定された各画像領域の動きベクトルの平均値を用いて、前記動きベクトルに関連する暈けを補正した画像データを生成することを特徴とする請求項1に記載された画像処理装置。
【請求項５】
前記第二の生成手段は、前記動きベクトルの平均値と前記撮像装置の振れを示す情報が示す動きから前記特定された画像領域に含まれる被写体の動きを計算し、前記被写体の動きを示す画像データを前記動きベクトルに関連する暈けを補正した画像データに付加することを特徴とする請求項4に記載された画像処理装置。
【請求項６】
コード化露光によって撮像装置が撮像した複数の画像データ、前記コード化露光における露光条件を示す情報、および、前記コード化露光における前記撮像装置の振れを示す情報を入力し、
前記複数の画像データのそれぞれが表す画像において、前記撮像装置の振れを示す情報が示す動きとは異なる動きを示す画像領域を特定し、前記画像領域に対応する画像データを抽出し、
前記複数の画像データのそれぞれについて、前記特定された画像領域の画素の値を、当該画像領域の外側かつ近傍の画素の値に基づき置換し、
前記特定された画像領域の画素の値が置換された複数の画像データ、前記露光条件、および、前記撮像装置の振れを示す情報を用いて、前記画素の値が置換された複数の画像データの合成を含む処理により、前記撮像装置の振れに起因する画像の暈けを補正した第一の画像データを生成し、
前記抽出された複数の画像データに所定の処理を施した第二の画像データを生成し、
前記第一の画像データの、前記特定された画像領域に対応し、前記特定された各画像領域よりも大きい画像領域に前記第二の画像データを上書き合成することを特徴とする画像処理方法。
【請求項７】
コンピュータを請求項1から請求項5の何れか一項に記載された画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮影画像の暈けを補正する画像処理に関する。
【背景技術】
【０００２】
ディジタル画像は、パーソナルコンピュータを利用して簡単に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の作成を説明するフローチャート。
【発明を実施するための形態】
【００１４】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。なお、以下では、本発明をディジタルカメラの画像処理に適用する例を説明するが、本発明はディジタルビデオカメラの画像処理にも適用することができる。
【実施例１】
【００１５】
［装置の構成］
図2のブロック図により実施例の撮像装置の構成例を説明する。
【００１６】
撮像部101は、撮像レンズ群、CMOSセンサやCCDなどの半導体撮像デバイスから構成される。露光制御部102は、シャッタの開閉を制御し、絞りを駆動する。振れ検出部103は、撮像装置の姿勢変化を検出し、手振れなどに関する振れ情報を出力する。A/D変換部104は、撮像部101から出力されるアナログ画像信号をディジタル画像信号に変換して画像処理部105に入力する。
【００１７】
画像処理部105は、A/D変換部104から入力されたディジタル画像信号をメモリ106に格納し、ディジタル画像信号から輝度信号や色信号を形成するデモザイキング処理などを行い、撮影画像の画像データを生成する。生成された画像データは、撮像装置が備える液晶モニタである表示部115に表示されたり、画像記録部114により撮像装置が内蔵するメモリや撮像装置に装着されたメモリに記録される。
【００１８】
その他の構成については、以下の説明において詳細に説明する。
【００１９】
［暈け補正処理］
図3のフローチャートにより撮像装置における暈け補正処理を説明する。
【００２０】
撮像に先立ち、開閉パターン生成部108は、コード化露光におけるシャッタの開閉パターンを決定し、露光制御部102に出力する(S101)。コード化露光は、指定された露光期間にシャッタを不規則に開閉し（フラッタシャッタ）、開閉パターンに従い撮像された画像と開閉パターンの相関から手振れに起因する暈けを修復する。露光制御部102は、開閉パターンに従い、撮像部101のシャッタの開閉を制御してコード化露光を行う(S102)。
【００２１】
図4により開閉パターンの一例を示す。図4の例では、h(t)=‘1’のシャッタ開期間が15回あるので、15回の短時間露光による撮像が行われる。各シャッタ開期間は、通常必要になる露光時間に比較して充分短く、各シャッタ開期間における振れの影響は無視することができる。各シャッタ開期間に撮像された複数の画像（以下、短時間露光画像）は、A/D変換部104によりディジタル化され、メモリ106に撮像順に蓄積される。
【００２２】
除外領域抽出部107は、振れ検出部103が出力する振れ情報から撮影画像全体の動きベクトルを検出する。さらに、メモリ106に蓄積された複数の短時間露光画像から一枚を読み出し、撮影画像全体の動きベクトルとは異なる動きベクトルをもつ画像領域（以下、除外領域）を抽出する(S103)。図5の模式図により除外領域の抽出を説明する。図5は、一枚の短時間露光画像から、撮影画像全体の動きと異なる動きを示す車両を含む領域（破線で囲んだ領域1101）を除外領域として抽出した例である。
【００２３】
画素補完部110は、詳細は後述するが、除外領域が抽出された短時間露光画像の除外領域の画素を補完する(S104)。図6の模式図により除外領域1101が補完された状態を説明する。振れ補正部111は、除外領域の画素が補完された短時間露光画像を、順次、加算合成する(S105)。ステップS106の判定により、開閉パターンに基づきすべての短時間露光画像（除外領域1101の画素が補完済みの画像）が加算合成されるまでステップS103からS105の処理は繰り返される。図7の模式図によりすべての短時間露光画像が加算合成された画像を説明する。図7の領域1301は、抽出されたすべての除外領域が重畳された領域を示す。
【００２４】
関数作成部109は、振れ検出部103から振れ情報、開閉パターン生成部108から開閉パターン、露光制御部102から露光条件を入力して、暈け補正用の関数を作成する(S107)。振れ補正部111は、関数作成部109が作成した関数を用いて、短時間露光画像を加算合成した画像の暈けを補正する処理を行う(S108)。図8の模式図により暈けを補正した画像を説明する。図8に示すように、第一の生成部である振れ補正部111により、図7に示す撮影画像全体の振れに起因する暈けが補正され、暈けが除去または低減された第一の画像データが得られる。
【００２５】
一方、第二の生成部である局所処理部113は、詳細は後述するが、除外領域抽出部107が抽出した除外領域の画像を入力し、それら画像を処理した画像（以下、局所処理画像）の第二の画像データを生成する(S109)。画像合成部112は、振れ補正部111が出力する画像（以下、暈け補正画像）に、局所処理部113が出力する局所処理画像を上書きする重畳合成を行い、画像処理部105の出力画像とする(S110)。図9の模式図により暈け補正画像に局所処理画像を重畳合成した画像を説明する。図9の領域1501には、一例として、除外領域の各画像が加算合成された局所処理画像が重畳されている。
【００２６】
なお、除外領域が検出されなかった場合、画像処理部105の出力画像は振れ補正部111が出力する暈け補正画像そのものである。
【００２７】
［暈け補正］
図10のフローチャートにより振れ補正部111の暈け補正処理(S105)を説明する。以下では、説明を簡単にするために、例えば画面の縦方向（y方向）のシフト振れに起因する暈けを補正する例を説明する。
【００２８】
振れ補正部111は、順次、画素補完部110から短時間露光画像を入力し、それら画像を加算合成した画像データを生成する(S201)。ここで、撮像部101の画素(x, y)に単位時間当りに入射する光の強度をI(x,y)、振れの速度をv(t)、露光時間をTとする。時刻tに、撮像装置にはI(x, y)をy方向にvtだけ移動した情報が入射するので、撮影画像データIblur(x, y)は次式で表される。
Iblur(x, y) = 1/T・∫th(t)I{x, y+vt}h(t)dt      …(1)
ここで、関数h(t)はシャッタの開閉を表し、シャッタ開は1、シャッタ閉は0、
積分範囲はt=0〜T。
【００２９】
関数作成部109は、露光条件として、開閉パターン生成部108から開閉パターンを示すh(t)を、露光制御部102から露光時間Tを入力し(S302)、さらに、振れ検出部103から振れの速度v(t)を含む振れ情報を入力する(S303)。詳細は後述するが、関数作成部109が、露光条件、振れの速度v(t)から撮影画像の暈けを表す点像分布関数(point spread function: PSF)を算出する(S304)。なお、振れ速度v(t)は、除外領域抽出部107の処理によって得られる撮影画像全体の動きベクトルから取得してもよい。
【００３０】
次に、振れ補正部111は、詳細は後述するが、PSFの算出結果を基にデコンボリューションによって撮影画像の暈けを補正する(S305)。デコンボリューションのアルゴリズムは、既存の任意のアルゴリズムを用いればよい。例えば、周波数空間上での除算、Lucy-Richardsonのアルゴリズム、Wienerフィルタを用いたアルゴリズム、正則化フィルタを用いたアルゴリズムなどが挙げられる。本実施例では、詳細は後述するが、開閉パターンを制御することでPSFの形状をコントロールし、周波数空間上で除算を行うものとする。
【００３１】
●関数作成部
関数作成部109はデコンボリューションに使用するPSFを算出する。実空間におけるコンボリューションは、周波数空間上で積の形式で記述することができる。従って、撮影画像データを表現する式(1)の両辺をフーリエ変換すると次式が得られる。
Iblur(u, v) = 1/(vT)・I(u, v)H(u)dt      …(2)
ここで、Iblur(u, v)、I(u, v)、H(u)はそれぞれIblur(x, y)、I(x, y)、h(t)のフーリエ変換。
【００３２】
従って、振れのない画像I(u, v)は次式で表される。
I(u, v) = vT/H(u)・Iblur(u, v)      …(3)
【００３３】
つまり、式(3)のvT/H(u)が関数作成部109で算出する関数である。式(3)において、振れ速度vと露光時間Tは振れ検出部103と露光制御部102から取得可能である。また、Iblur(u, v)とH(u)は、撮影画像の画像データIblur(x, y)と開閉パターンh(t)をフーリエ変換することによって得られる。従って、vT/H(u)は算出可能であり、振れ補正部111が周波数空間上で式(3)に示す演算を実行することで、撮影画像のフーリエ変換I(u, v)が得られる。しかし、開閉パターンh(t)によっては、h(t)のフーリエ変換H(u)がゼロになる周波数が存在し、式(3)の右辺の計算においてゼロによる除算が生じる。その場合、I(u, v)を正しく計算することができない。
【００３４】
図11によりPSFの形状および周波数特性を説明する。図11(a)は通常の露光条件（シャッタ開の条件）である0≦t≦Tにおいてh(t)=1、それ以外はh(t)=0の場合（シャッタの開期間において連続的にシャッタ開）のPSFの形状を示す図である。図11(b)は図11(a)に示すPSFを周波数特性を示す図である。なお、図11(a)において、横軸は時間t、縦軸はh(t)の値を表す。また、図11(b)において、横軸は空間周波数、縦軸はH(u)の絶対値を表す。
【００３５】
図11(b)を参照すると、周期的に絶対値が0になる周波数が現れる。これは、その周波数に対応する情報の消失を表し、このような状態でデコンボリューションを行えば、情報が消失した周波数が存在することに対応する波形が現れる。そこで、情報の消失した周波数の発生を防ぐ、言い換えれば、PSFの絶対値が0になる周波数の発生を防ぐために、シャッタの開期間において、開閉パターンに従いシャッタの開閉を小刻みかつランダムに制御するコード化露光を行う。
【００３６】
図12によりコード化露光を行った場合のPSFの形状および周波数特性を説明する。図12(a)はコード化露光を行った場合のPSFの形状を示す図、図12(b)は図12(a)に示すPSFの周波数特性を示す図である。コード化露光を行うと、図12(b)に示すように、情報が消失する周波数は存在せず、情報も失われることはないので、Iblur(u, v)をPSFで除算すれば、理論的に、完全なデコンボリューションが可能になる。
【００３７】
上記では、縦方向の振れを含む撮影画像を暈け補正処理する例を説明したが、デコンボリューション可能な振れは縦方向の振れに限られるわけではない。横方向の振れ、斜め方向の振れを含む撮影画像についてもデコンボリューションによって暈け補正が可能である。
【００３８】
［除外領域抽出部］
上述するように、暈け補正処理に用いるデコンボリューションは、画像全体に対する動きベクトルを用いる演算を行う。そのため、画像全体とは異なる動きベクトルをもつ領域が存在する場合、その領域と、その周辺領域は正しい暈け補正を行うことができない。そこで、撮影画像から画像全体とは異なる動きベクトルをもつ領域を検出して、デコンボリューションを用いる暈け補正処理を行わないと領域（除外領域）にする。
【００３９】
図13のフローチャートにより除外領域の抽出処理を説明する。
【００４０】
除外領域抽出部107は、メモリ106から露光期間において一番目に撮像された短時間露光画像を読み出し(S1601)、読み出した短時間露光画像を所定画素サイズのブロックに分割する(S1602)。そして、ブロック化した短時間露光画像を動きベクトルを演算する際の参照画像として例えばメモリ106の所定領域に格納する(S1603)。
【００４１】
次に、除外領域抽出部107は、メモリ106から露光期間において二番目以降に撮像された短時間露光画像を比較画像として読み出し(S1604)、比較画像を参照画像と同様に所定画素サイズのブロックに分割する(S1605)。また、参照画像の撮像タイミングから比較画像の撮像タイミングに至る期間の撮影画像全体の動きベクトル（以下、全体動きベクトル）を算出する(S1606)。
【００４２】
次に、除外領域抽出部107は、比較画像のブロックごとに参照画像の各ブロックと比較して動きベクトルを検出する(S1607)。動きベクトルの算出は周知のブロックマッチングにより行う。ブロックマッチングは、評価値としてブロック内の画素間の差分二乗和または差分絶対値和を用いる。例えば、比較画像の比較対象ブロックに対して、参照画像のブロックを順次移動して評価値を求め、得られた評価値の中から最小の評価値をもつブロックを、比較対象ブロックと最も相関が高い参照画像のブロックと判定する。そして、参照画像の当該ブロックから比較画像の対象ブロックを結ぶベクトルが動きベクトル（以下、局所動きベクトル）である。
【００４３】
次に、除外領域抽出部107は、全体動きベクトルと局所動きベクトルと比較して、両ベクトルに有意な差があるか否かを判定する(S1608)。そして、全体動きベクトルと局所動きベクトルに有意な差がないと判定したブロックは暈け補正処理の対象ブロックにする(S1609)。また、全体動きベクトルと局所動きベクトルに有意な差があると判定したブロックは除外ブロックにする(S1610)。
【００４４】
次に、除外領域抽出部107は、比較画像が露光期間において二番目に撮像された短時間露光画像の場合は(S1611)、参照画像の除外領域を導出する(S1612)。参照画像は、除外領域が抽出されていないため、二番目の短時間露光画像（比較画像）の除外領域から一番目の短時間露光画像（参照画像）の除外領域を導出する。つまり、比較画像の除外ブロックの動きベクトルの起点に対応する参照画像のブロックが参照画像の除外ブロックである。
【００４５】
次に、除外領域抽出部107は、比較画像の全ブロックについて動きベクトルを検出し、暈け補正処理の対象ブロックと除外ブロックに区分したか否かを判定する(S1613)。そして、未処理のブロックがあれば処理をステップS1607に戻し、ステップS1607からS1612の処理を繰り返す。このようにして比較画像から抽出された除外ブロックの集合が除外領域である。
【００４６】
比較画像の除外領域の抽出が終了すると、除外領域抽出部107は、比較画像によって参照画像を更新する(S1614)。そして、露光期間に撮像された全短時間露光画像から除外領域を抽出したか否かを判定し(S1615)、未了の短時間露光画像があれば処理をステップS1604に戻して、ステップS1604からS1614の処理を繰り返す。
【００４７】
なお、除外領域抽出部107は、各短時間露光画像から切り出した除外領域の画像を局所処理部113に供給するとともに、各短時間露光画像と、その除外領域を示す情報を画素補完部110に供給する。なお、除外領域と判定されるブロックが複数ある場合がある。隣接するブロックの場合、除外領域抽出部107は、それらブロックの集合を除外領域とする。また、互いに離間したブロックの場合、除外領域抽出部107は、それらブロック一つ一つを除外領域とする。
【００４８】
［画素補完部］
以下では、説明を簡単にするために、除外領域が矩形の場合を説明する。勿論、除外領域抽出部107は、抽出した除外ブロックの集合の外接矩形を除外領域としてもよい。
【００４９】
図14により画素補完部110の処理例を説明する。図14は、除外領域1701の画素を、除外領域1701の境界の外側の外縁部の画素の値（A、B、C、…、a、b、c、…）を用いて補完する例を示す。つまり、画素補完部110は、除外領域1701の上側外縁部の画素を下方向にコピーし、除外領域1701の左側外縁部の画素を右方向にコピーする。ただし、図14においては、除外領域1701の左上隅から右下隅の対角線上の画素α、β、γ、…には、上側外縁部の画素の値と左側外縁部の画素の値の平均値（例えばα=(A+a)/2）を与える。言い替えれば、除外領域1701を、その外縁部の画素で埋めることになる。
【００５０】
図15により画素補完部110の第二の処理例を説明する。図15は、除外領域1801の境界に対して鏡像を形成するように、除外領域1801の画素を補完する例を示す。例えば、除外領域の左から四列目において、境界の外側に上に向かってD、G、I、J、…の値をもつ画素が並んでいる場合、境界の内側に下に向かってD、G、Iをコピーし、対角線上の四番目の画素には平均値（δ=(I+i)/2）を与える。言い替えれば、除外領域1801を、その外側の鏡像で埋めることになる。
【００５１】
デコンボリューションの影響を受けるのは動きベクトル1902が向く方向である。そこで、撮影画像全体の動きベクトルを考慮して補完を行うことも効果的である。図16により画素補完部110の第三の処理例を説明する。図16(a)は、撮影画像全体の動きベクトル1902が下方向を向いている場合を示し、動きベクトル1902の始点側の外縁部の画素を下に向かって除外領域1901にコピーする。また、図16(b)は、撮影画像全体の動きベクトル1903が右下方向を向いている場合を示し、動きベクトル1903の始点側の外縁部の画素を右下に向かって除外領域1901にコピーする。
【００５２】
また、除外領域を撮影画像全体の動きベクトルの向きに対応する鏡像で埋めてもよい。図17により画素補完部110の第四の処理例を説明する。図17(a)は、撮影画像全体の動きベクトル2002が下方向を向いている場合を示し、動きベクトル2002の始点側の境界に対して鏡像を形成するように、除外領域2001の画素を補完する例を示す。また、図17(b)は、撮影画像全体の動きベクトル2003が右下方向を向いている場合を示し、動きベクトル1903の始点側の境界に対して鏡像を形成するように、除外領域2001の画素を補完する例を示す。
【００５３】
このように、画素補完部110は、除外領域ごとに、その外側かつ近傍の画素の値を利用して、除外領域を補完する。なお、除外領域の近傍とは、除外領域の大きさ、例えば縦、横の大きさ以内であることは上記の説明から明らかである。
【００５４】
［局所処理部］
図18により局所処理部113の処理例を説明する。局所処理部113は、除外領域ごとに、除外領域抽出部107が切り出した除外領域の画像を入力し、除外領域が含む主要な被写体の位置を合わせるように除外領域の画像をシフトし、シフト後の画像を加算合成して局所処理画像にする。つまり、除外領域の主要な被写体は、被写体自身の動き（図18(a)に示すベクトル2104）と、撮影画像全体の振れによる動き（同ベクトル2102）を合成したベクトル2103で示される動きを示す。被写体の位置を合わせた画像の加算合成によりベクトル2103が示す動きは除去または低減される。このようにして得られた局所処理画像を暈け補正画像に重畳合成すれば、図18(b)に示すような、除外領域外の暈けが除去または低減され、除外領域の被写体については、その動きと撮影画像全体の振れが除去または低減された撮影画像が得られる。
【００５５】
また、局所処理部113は、除外領域ごとに、除外領域抽出部107が切り出した除外領域の画像を入力し、それら画像を単純に加算合成して局所処理画像を生成してもよい。このようにして得られた局所処理画像を暈け補正画像に重畳合成すれば、図9に示すような、除外領域外の暈けが除去または低減され、除外領域の被写体の動き（ベクトル2103が示す動き）が維持された撮影画像が得られる。
【００５６】
このように、撮影画像の一部に、撮影画像全体の振れとは異なる局所的な動きを示す被写体が存在する場合、当該被写体を包含する領域にデコンボリューション演算を使用する暈け補正処理とは異なる処理を施す。従って、デコンボリューション演算を使用する暈け補正処理によって生じる、局所的な動きを示す被写体と、その周辺領域の画質劣化を抑制することができる。
【実施例２】
【００５７】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００５８】
実施例1では、局所処理部113が除外領域の主要な被写体の位置を合せるように除外領域の画像をシフトして、シフト後の画像を加算合成した局所処理画像、または、除外領域の画像を単純に加算合成した局所処理画像を生成する例を説明した。しかし、除外領域の画像にデコンボリューションを使用する暈け補正処理を施すこともできる。
【００５９】
局所処理部113は、除外領域抽出部107が切り抜いた除外領域の画像を加算合成した、図18(a)に示す画像に相当する画像データを生成する。そして、除外領域を構成するブロックの局所動きベクトルの平均値であるベクトル2103を振れ情報とし、開閉パターン生成部108から開閉パターンを入力してPSFを算出する。そして、加算合成した画像にデコンボリューションを使用する暈け補正を施した結果を局所処理画像としてもよい。つまり、除外領域の動きベクトルに関連する暈けを補正した画像を局所処理画像にする。なお、関数作成部109にベクトル2103の情報を供給して、関数作成部109からPSFを受け取ってもよい。
【００６０】
図19の模式図により暈け補正処理後の画像に被写体の動き付加する例を説明する。局所処理部113は、除外領域の動きベクトルに関連する暈けを補正した後、振れ検出部103の振れ情報からベクトル2102を算出し、ベクトル2103からベクトル2102を減算してベクトル2104を算出する。そして、局所処理画像にベクトル2104が示す被写体の動きを示す画像を付加する。なお、被写体の動きを付加する処理には、既知の任意の手法を用いることができ、例えば、ベクトル2104に応じた画素分、画像をシフトし、シフト前後の画像を加算合成する手法などを用いればよい。
【００６１】
このように、被写体自体に動きがある領域を分離して、当該領域に撮影画像全体の振れに起因する暈けおよび被写体の動きに起因する暈けを除去または低減することができる。さらに、暈け補正処理後の画像に、被写体の動きを示す画像を付加することもできる。
【実施例３】
【００６２】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６３】
図10においては、コード化露光処理によって垂直方向のシフト振れによる画像の暈けを補正する処理を説明した。以下では、例えばレンズの光軸を中心とする振れ（回転振れ）に起因する画像の暈けを補正する処理を説明する。
【００６４】
図20のフローチャートにより振れ補正部111による回転振れに起因する暈けを補正する処理を説明する。
【００６５】
振れ補正部111は、順次、画素補完部110から短時間露光画像を入力し、それら画像を加算合成した画像データを生成する(S2301)。ここで、撮像部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      …(4)
= 1/T・∫ωh(θ)/ω(θ)・I{x・cosθ+y・sinθ, -x・sinθ+y・cosθ}dθ      …(5)
= 1/T・∫ωh'(θ)I{x・cosθ+y・sinθ, -x・sinθ+y・cosθ}dθ            …(6)
ここで、関数h(t)はシャッタの開閉を表し、シャッタ開は1、シャッタ閉は0、
積分範囲はt=0〜T、
積分範囲はω=0〜ω。
【００６６】
式(4)から式(5)の変形では、積分変数を変換した。ω(t)=dθ/dtである。また、ω(θ)は、tとθの関係を利用してθを変数に、h(t)を書き直した関数である。同様に、h(θ)は、tとθの関係を利用してθを変数に、h(t)を書き直した関数である。また、式(6)において、h'(θ)=h(θ)/ω(θ)である。
【００６７】
次に、関数作成部109は、開閉パターンを含む露光条件を取得し(S2302)、振れ角度θと時間の関係を示す振れ情報を取得する(S2303)。そして、詳細は後述するが、振れ角度情報と開閉パターンに基づき、極座標上のPSFであるh'(θ)を算出する(S2304)。
【００６８】
次に、振れ補正部111は、画像データを極座標上の画像に変換する(S2305)。前述したように、この変換における直交座標系の原点は、振れ情報が示す回転の中心座標に一致させる。極座標変換により式(6)は式(7)に変換される。
Iblur(r, Θ) = 1/T・∫ωh'(θ)I(r, Θ-θ)dθ
= 1/T・(h' * I)(r, Θ)              …(7)
ここで、式(6)における(x, y)はr(cosΘ, sinΘ)である。
【００６９】
式(7)は、平行移動に対する振れと同じ式であり、PSFであるh'(θ)によるコンボリューションを行ったものと見做すことができる。ただし、式(7)は理論的な式であり、実際のデータはディジタル値であるから、実空間から極座標空間への変換には何らかの補間が必要になる。任意の補間方法を用いることができるが、ここではバイキュービック法やバイリニア法を用いるものとする。
【００７０】
次に、振れ補正部111は、詳細は後述するが、PSFの算出結果を基に式(7)のコンボリューションを打ち消すデコンボリューションを行う(S2306)。デコンボリューションのアルゴリズムは、既存の任意のアルゴリズムを用いればよい。例えば、周波数空間上での除算、Lucy-Richardsonのアルゴリズム、Wienerフィルタを用いたアルゴリズム、正則化フィルタを用いたアルゴリズムなどが挙げられる。本実施例では、前述したように、開閉パターンを制御することでh'(θ)の形状をコントロールし、周波数空間上で除算を行うものとする。
【００７１】
次に、振れ補正部111は、デコンボリューションによってI(r, Θ)が得られるので、I(r, Θ)を実空間表示I(x, y)に逆変換する(S2307)。この逆変換も、実空間から極座標空間への変換と同様、補間処理が必要になる。そして、振れ補正部111は、実空間に変換した画像I(x, y)を暈け補正後の画像データとする。
【００７２】
●PSFの作成方法
図21のフローチャートによりPSFの作成(S2304)を説明する。
【００７３】
関数作成部109は、振れ検出部103から振れ角度θと時間を示す回転振れ情報を入力し、角度θを時間で微分して角速度ω(t)を算出する(S2401)。角速度ω(t)とθ(t)と組み合わせることにより、角速度をθの関数として表すことが可能になる。これをω(θ)とする。
【００７４】
次に、関数作成部109は、開閉パターンと、回転振れ情報に基づき、関数h(t)をθの関数として取得する(S2402)。これをh(θ)とする。振れ補正部111は、取得した情報に基づき、h'(θ)=h(θ)/ω(θ)を算出する(S2403)。式(6)に示すように、h'(θ)が極座標上のPSFである。
【００７５】
●デコンボリューション
式(7)を周波数空間上に変換すると次式が得られる。
Iblur(f, ρ) = 1/T・H'(f, ρ)I(f, ρ)      …(8)
ここで、fはrの周波数変換に対応する変数、
ρはΘの周波数変換に対応する変数。
【００７６】
H'(f, ρ)は既知であるから、周波数空間上でIblur(f, ρ)をH'(f, ρ)で除算すれば、I(f, ρ)は原理的には求まる。ここで、コード化露光を行えば、前述したように、情報が消失する周波数は存在せず、情報も失われることはないので、Iblur(f, ρ)をH'(f, ρ)で除算すれば、理論的に、完全なデコンボリューションが可能になる。
【００７７】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図２】
0005528028.tif 000002
【図３】
0005528028.tif 000003
【図４】
0005528028.tif 000004
【図１０】
0005528028.tif 000005
【図１１】
0005528028.tif 000006
【図１２】
0005528028.tif 000007
【図１３】
0005528028.tif 000008
【図１４】
0005528028.tif 000009
【図１５】
0005528028.tif 000010
【図１６】
0005528028.tif 000011
【図１７】
0005528028.tif 000012
【図２０】
0005528028.tif 000013
【図２１】
0005528028.tif 000014
【図１】
0005528028.tif 000015
【図５】
0005528028.tif 000016
【図６】
0005528028.tif 000017
【図７】
0005528028.tif 000018
【図８】
0005528028.tif 000019
【図９】
0005528028.tif 000020
【図１８】
0005528028.tif 000021
【図１９】
0005528028.tif 000022