(57)【要約】【課題】  撮影対象の照度レベルの周期変化を考慮した撮像データの振れ補正を提供する。【解決手段】  コード化露光処理により撮像データの振れを補正する際に、開閉パターン生成部429は、撮影対象の照度レベルの周期変化を検出し、周期変化に応じたシャッタの開閉パターンを出力する。露光条件生成部427は、開閉パターンに基づき撮影部による撮像を制御する。【選択図】  図3
2011004188.tif 000002
【特許請求の範囲】
【請求項１】
コード化露光処理により撮像データの振れを補正する画像処理装置であって、
撮影対象の照度レベルの周期変化を検出する検出手段と、
前記周期変化に応じたシャッタの開閉パターンを出力する生成手段と、
前記開閉パターンに基づき撮影手段による撮像を制御する制御手段とを有することを特徴とする画像処理装置。
【請求項２】
前記周期変化が検出されなかった場合、前記生成手段は、所定の開閉パターンを出力することを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記周期変化が検出された場合、前記生成手段は、前記照度レベルが所定の閾値以上と予測される微小露光期間は前記所定の開閉パターンに従うパターンを出力し、前記照度レベルが前記所定の閾値未満と予測される微小露光期間はシャッタ閉を示すパターンを出力することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項４】
前記生成手段は、前記照度レベルが高くなるに応じて、前記所定の開閉パターンを適用する確率が上がるランダム関数を用いて前記パターンを出力することを特徴とする請求項3に記載された画像処理装置。
【請求項５】
さらに、測光手段が決定した露光期間における総露光量を予測する予測手段と、
微小露光期間それぞれにおける露光量を予測し積算して積算露光量と計算する計算手段とを有し、
前記制御手段は、前記積算露光量と前記総露光量と所定の値の積を比較して、前記積算露光量が前記積以上になると前記撮像を終了することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項６】
前記周期変化が検出された場合、前記生成手段は、前記照度レベルの変動周期に応じた開閉パターンを選択し、前記選択した開閉パターンに従うパターンを出力することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項７】
前記制御手段は、測光手段が決定した露光期間の終了において前記撮像を終了することを特徴とする請求項6に記載された画像処理装置。
【請求項８】
コード化露光処理により撮像データの振れを補正する画像処理方法であって、
撮影対象の照度レベルの周期変化を検出し、
前記周期変化に応じたシャッタの開閉パターンを出力し、
前記開閉パターンに基づき撮影手段による撮像を制御することを特徴とする画像処理方法。
【請求項９】
コンピュータ装置を制御して、請求項1から請求項7の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【請求項１０】
請求項9に記載されたプログラムが記録されたことを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像データの振れ補正に関する。
【背景技術】
【０００２】
ディジタル画像は、パーソナルコンピュータを利用して簡単に100%超の拡大表示が可能であり、拡大画像においては僅かな手振れによる画像の暈けも目立つ。そのため、ディジタルカメラの撮像デバイスの高解像度化に伴い、撮影時の手振れを補正する処理が注目されている。
【０００３】
手振れの補正方法には、ハードウェアによる補正方法と、ソフトウェアによる補正方法がある。ハードウェアによる補正方法は、カメラにジャイロセンサを搭載し、露光中、ジャイロセンサの出力信号に基づき、カメラの振動を打ち消すようにレンズや撮像デバイスを駆動して手振れを低減する。レンズ光学系による手振れ補正は、特許文献1などに述べられている。
【０００４】
ハードウェアによる補正方法は、部品点数の増加、製造コストの増加という問題がある。安価なディジタルカメラで同様の機能を実現する場合、ソフトウェアによる補正方法が望まれる。
【０００５】
ソフトウェアによる補正方法には、短時間の露光によって得た画像（以下、短時間露光画像）を複数用意して合成する方法がある（例えば特許文献2）。特許文献2の発明は、手振れを許容可能な短時間の露光時間によって、連続的に撮影した複数の画像の相互の振れを補正し、合成することにより手振れ補正を実現する。
【０００６】
また、シャッタの開閉パターンをコード化し、コード化した開閉パターンを利用することで手振れを補正する技術も開発されている。例えば、ランダムにコード化された露出時間で画像を撮影し、露出時間コードの逆行列を利用して手振れを補正する。
【０００７】
また、撮像周期と異なる周期で明滅（フリッカ）する照明光（例えば、商用電源を使用した一般的な蛍光灯など）の下で被写体を撮像する場合のフリッカの影響を抑える撮像装置が提案されている（例えば特許文献3）。
【０００８】
特許文献3は、被写体の振れを抑えるために連続的に複数枚の画像を撮影して合成する電子スチルカメラにおいて、フリッカを有する照明光の下で撮影しても適切な露出の画像を得る発明を開示する。つまり、特許文献3の発明は、被写体の輝度に対して適正露出が得られる露光時間がフリッカ周期よりも長い場合は、フリッカ周期よりも短い露光時間で複数の画像を撮影する。そして、複数の画像を合成することで、一つの適正露光の画像を得る。また、適正露出が得られる露光時間がフリッカ周期より短い場合は、露光期間の中心がフリッカによる照度変化が極大を示すタイミングに一致するように調整する。
【０００９】
しかし、非特許文献1が記載するようなシャッタの開閉パターンをランダムにコード化する方法は、ソフトウェアによる手振れ補正を目的にする場合、次の課題がある。
【００１０】
つまり、連続的にシャッタを開閉する場合に比べて、シャッタ期間における実質的な露光時間が短くなり、露出不足になり易い問題がある。さらに、蛍光灯による照明下では、商用電源周波数の二倍の周期で放電電流が脈動するため、照明の照度が周期的に変動する。このため、シャッタの開閉のタイミングと照度の低下期が重なれば、照度低下による画質への影響が、より大きくなる問題がある。また、照度低下期は、照度だけではなく色調も変化し、画質劣化につながる問題もある。
【００１１】
特許文献3の発明は、照度変化が極大を示す期間を含むように露光時間を分割する方法を開示するが、周期的な照度変化に対して、ランダムにコード化した開閉パターンを生成することはできない。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開2002-214657公報
【特許文献２】特開2007-243774公報
【特許文献３】特開2006-222935公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明は、撮影対象の照度レベルの周期変化を考慮した撮像データの振れ補正を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１５】
本発明はコード化露光処理により撮像データの振れを補正する画像処理であって、撮影対象の照度レベルの周期変化を検出し、前記周期変化に応じたシャッタの開閉パターンを出力し、前記開閉パターンに基づき撮影手段による撮像を制御することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、撮影対象の照度レベルの周期変化を考慮した撮像データの振れ補正を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】ディジタルカメラの外観図、
【図２】ディジタルカメラの垂直断面図、
【図３】ディジタルカメラの制御、撮影および画像処理に関する構成例を示すブロック図、
【図４】コード化露光処理によって画像の暈けを補正する処理を説明するフローチャート、
【図５】画像の暈けの補正原理を概念的に表す図、
【図６】PSFの作成を説明するフローチャート、
【図７】一般的な回転運動におけるPSFの一例を示す図、
【図８】通常の露光条件である0≦t≦Tにおいてh(t)=1、それ以外はh(t)=0の場合のPSFの形状、および、PSFの周波数特性を示す図、
【図９】コード化露光を行った場合のPSFの形状、および、PSFの周波数特性を示す図、
【図１０】回転振れによって暈けた画像、および、回転振れによる暈けを補正した画像を示す図、
【図１１】周期的に照度が変化する照明下の撮影用に開閉パターンを生成する方法を説明する図、
【図１２Ａ】開閉パターン生成部による開閉パターンの決定を説明するフローチャート、
【図１２Ｂ】開閉パターン生成部による開閉パターンの決定を説明するフローチャート、
【図１３】開閉パターン生成部による開閉パターンの決定を説明する図、
【図１４】実施例2の開閉パターン生成部による開閉パターンの決定を説明するフローチャート、
【図１５】実施例3の微小露光期間が1/600秒の場合の開閉パターンの一例を示す図、
【図１６】開閉パターン生成部による開閉パターンの決定を説明するフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。なお、以下では、ディジタルカメラに手振れを補正する構成を組み込む例を説明する。
【実施例１】
【００１９】
［カメラの構成］
図1はディジタルカメラの外観図である。カメラボディ100の上部には、ビューファインダの接眼窓111、自動露出(AE)ロックボタン114、自動焦点(AF)の測距点を選択するボタン113、撮影操作をするためのレリーズボタン112がある。また、撮影モード選択ダイヤル117、外部表示部409、電子ダイヤル411などがある。
【００２０】
電子ダイヤル411は、他の操作ボタンと併用してカメラに数値を入力したり、撮影モードを切り換えたりするための多機能信号入力部である。また、LCDパネルの外部表示部409には、シャッタスピード、絞り、撮影モードなどの撮影条件や、その他の情報が表示される。
【００２１】
カメラボディ100の背面には、カメラが捉えた画像、撮影した画像、各種設定画面などを表示するLCDモニタ417、LCDモニタ417の表示をオンオフするためのスイッチ121、十字キー116、メニューボタン124などがある。なお、LCDモニタ417は透過型であるため、LCDモニタ417の駆動だけではユーザが画像を視認することはできない。そのため、LCDモニタ417の裏面には、後述するように、バックライトが必要である。
【００２２】
十字キー116は、上下左右にそれぞれ配置された四つのボタンと、中央部に配置された設定ボタンを有し、LCDモニタ417に表示されるメニュー項目などの選択や実行を指示するために用いられる。
【００２３】
メニューボタン124は、LCDモニタ417にメニュー画面を表示させるためのボタンである。例えば、撮影モードを選択、設定する場合、メニューボタン124を押した後、十字キー116の上下左右のボタンを操作して希望の撮影モードを選択し、希望の撮影モードが選択された状態で設定ボタンを押すことで、撮影モードの設定が完了する。なお、メニューボタン124と十字キー116は、後述するAFモードの設定にも使用される。
【００２４】
図2はディジタルカメラの垂直断面図である。撮像光学系の撮影レンズ200は、レンズマウント202を介して、カメラボディ100に着脱可能である。
【００２５】
撮影光軸201を中心とする撮影光路中に配置されたミラー203は、撮影レンズ200からの被写体光をファインダ光学系に導く位置（斜設位置）と、撮影光路外の退避位置の間でクイックリターンが可能である。
【００２６】
ミラー203によってファインダ光学系に導かれた被写体光は、ピント板204上に結像する。そして、ピント板204を通過した被写体光は、ビューファインダの視認性を向上させるコンデンサレンズ205、正立正像を復元するペンタゴナルダハプリズム206を通り、接眼レンズ208および測光センサ207に導かれる。
【００２７】
後幕209と先幕210は、フォーカルプレーンシャッタ（機械式シャッタ）を構成し、両幕209と210の開閉によって、その後方に配置された、CCDやCMOSセンサである撮像デバイス418を必要時間露光する。撮像デバイス418は、プリント板211に保持されている。プリント板211の後方には、さらにプリント板215が配置され、プリント板215の反対面にLCDモニタ417とバックライト416が配置されている。
【００２８】
さらに、カメラボディ100内には、画像データが記録される記録メディア419aと、携帯用電源である電池217がある。なお、記録メディア419aと電池217は、カメラボディ100に着脱可能である。
【００２９】
図3はディジタルカメラの制御、撮影および画像処理に関する構成例を示すブロック図である。マイクロコンピュータ(CPU)402は、撮像デバイス418が出力する画像データの処理や、LCDモニタ417の表示制御をはじめとし、カメラ全体の動作を制御する。
【００３０】
スイッチ(SW1)405は、レリーズボタン112を半分押した状態（半押し状態）で閉になる。スイッチ(SW1)405が閉になるとカメラは撮影準備状態になる。スイッチ(SW2)406は、レリーズボタン112を最後まで押込んだ状態（全押し状態）で閉になる。スイッチ(SW2)406が閉になるとカメラボディ100は撮影動作を開始する。
【００３１】
レンズ制御部407は、撮影レンズ200と通信し、AF時の撮影レンズ200の駆動制御や絞り羽根の駆動制御を行う。外部表示制御部408は、外部表示部409や、ファインダ内の表示部（不図示）を制御する。スイッチセンス部410は、上述した電子ダイヤル411を含む多数のスイッチやキーから出力される信号をCPU402に伝えるためのインタフェイスである。
【００３２】
ストロボ制御部412は、X接点412aを介して接地されており、外部ストロボの発光および調光制御を行う。記録メディアドライブ419には、例えばハードディスクやメモリカードなどの記録メディア419aが装着される。
【００３３】
測距部413は、AF用に被写体に対するデフォーカス量を検出する。測光部414は、被写体の輝度を測定し、絞りと露光時間を決定する。シャッタ制御部415は、撮像デバイス418に対して適正な露光が行われるように、機械式シャッタを制御する。LCDモニタ417とバックライト416は、上述したように表示装置を構成する。
【００３４】
画像処理部425は、ディジタル信号処理プロセッサ(DSP)などから構成される。動き情報検出部426は、ジャイロセンサによって手振れ等によるカメラの動きを検出する。動き情報検出部426の出力は、カメラの振動を打ち消すように撮影レンズ200や撮像デバイス418を駆動するために利用される。
【００３５】
露光条件生成部427は、詳細は後述するが、振れによる画像の暈けを補正するための露光条件を生成し、生成した露光条件に基づき電子シャッタを制御する。なお、電子シャッタの制御は、撮像デバイス418に供給する掃出パルスと読出パルスによって行う。
【００３６】
さらに、CPU402には、アナログ-ディジタル変換器(A/D)423、画像データをバッファするバッファメモリ424などが接続されている。
【００３７】
［画像データの取得］
A/D423および画像処理部425は、測光部414によって決められた時間に基づき露光条件生成部427および開閉パターン生成部429の制御によって露光された画像を処理し、被写体の複数の撮像データを取得する。
【００３８】
なお、撮像データは、撮像部である撮像デバイス418から出力された信号をA/D423によりディジタルデータに変換したデモザイキング（現像処理）前のデータ（以下、RAWデータと呼ぶ場合がある）である。なお、少なくとも撮像デバイス418は撮像部を構成するが、撮像デバイス418とA/D423を合わせて、さらに撮影レンズ200を合わせて、撮像部と呼ぶ場合がある。あるいは、カメラボディ100を撮像部と呼ぶ場合がある。
【００３９】
開閉パターン生成部429は、詳細は後述するが、スイッチ(SW2)406が閉になると、露光条件生成部427から得られる露光条件に応じて、シャッタの開閉パターンを生成する。振れ補正部428は、動き情報検出部426から得られる動き情報と、開閉パターン生成部429が生成したシャッタの開閉パターンを用いて撮影画像の手振れを補正する。
【００４０】
画像処理部425は、振れ補正部428によって補正された撮像データをデモザイキングして画像データを生成し、生成した画像データに各種の画像処理を施し、画像処理後の画像データを記録メディアに格納する。なお、デモザイキング前の撮像データを記録メディアに格納してもよい。
【００４１】
［コード化露光処理の概要」
振れ補正部428は、coded exposure（以下、コード化露光）と呼ばれる技術を用いて手振れなどによる画像の暈けを補正する。コード化露光は、指定された露光時間の間にシャッタを不規則に開閉し（以下、フラッタシャッタ(flutter shutter)）、得られた画像とシャッタの開閉パターンの相関を用いて画像の暈けを補正する技術である。
【００４２】
手振れによる画像の暈けは、畳込積分の形式で表現することができる。垂直方向への手振れを例にとると、暈け画像は下式のように表すことができる。
Iblur(x, y) = 1/T・∫0TI(x, y+νt)h(t)dt      …(1)
ここで、Iblur(x, y)は暈け画像、
Tは露光時間、
νは振れの速度、
I(x, y＋vt)は被写体像、
h(t)は開閉パターン。
【００４３】
式(1)をフーリエ変換すると下式が得られる。
Iblur(u, v) = 1/(νT)・I(u, v)H(u)      …(2)
【００４４】
式(2)を変換して下式が得られる。
I(u, v) = νT/H(u)・Iblur(u, v)      …(3)
【００４５】
式(3)を逆フーリエ変換すると下式が得られる。
I(x, y) = iFFT{νT/H(u)・Iblur(u, v)}      …(4)
【００４６】
式(4)の右辺はすべて既知のパラメータであるから、式(4)により、振れを補正した画像I(x, y)が得られたことになる。ただし、開閉パターンh(t)のフーリエ変換値H(u)=0では除算が行えないため補正不可能になる。そこで、開閉パターンのフーリエ変換値H(u)が非ゼロになるように、開閉パターンh(t)を制御するのがコード化露光処理である。
【００４７】
以下では、回転方向の振れ（回転振れ）による画像の暈けを補正する場合を例にして、コード化露光処理の基本的な流れを説明する。その後、本実施例におけるコード化露光処理を説明する。
【００４８】
図4はコード化露光処理によって画像の暈けを補正する処理を説明するフローチャートである。まず、フラッタシャッタにより撮影した撮影データを入力する(S401)。
【００４９】
撮像デバイス418の画素(x, y)に単位時間当りに入射する光の強度をI(x, y)、角速度をω(t)、露光時間をTとする。時刻tに、カメラにはI(x, y)を-θ(T-t)だけ回転させた情報が入射するので、撮像データIblur(x, y)は次式で表される。なお、座標系の原点は、後述する回転振れ情報が表す回転中心の位置座標に一致させる。
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-t)I{x・cosθ(t)+y・sinθ(t), -x・sinθ(t)+y・cosθ(t)}dt      …(5)
= 1/T・∫ωh(θ)/ω(θ)・I{x・cosθ+y・sinθ, -x・sinθ+y・cosθ}dθ      …(6)
= 1/T・∫ωh'(θ)・I{x・cosθ+y・sinθ, -x・sinθ+y・cosθ}dθ            …(7)
ここで、関数h(t)は開閉パターンを表し、シャッタ開は1、シャッタ閉は0、
積分範囲はt=0〜T、
積分範囲はω=0〜ω。
【００５０】
式(5)から式(6)の変形では、積分変数を変換した。ω(t)=dθ/dtである。また、ω(θ)は、tとθの関係を利用してθを変数に、h(t)を書き直した関数である。同様に、h(θ)は、tとθの関係を利用してθを変数に、h(t)を書き直した関数である。また、式(7)において、h'(θ)=h(θ)/ω(θ)である。
【００５１】
次に、シャッタの開閉パターンを示す露光情報を入力し(S402)、振れ角度θと時間の関係を示す回転振れ情報を入力する(S403)。そして、詳細は後述するが、回転振れ情報と露光情報に基づき、極座標上の点像分布関数(point spread function: PSF)であるh'(θ)を算出する(S404)。
【００５２】
次に、撮像データを極座標上の画像に変換する(S405)。前述したように、この変換における直交座標系の原点は、回転振れ情報が示す回転の中心座標に一致させる。極座標変換により式(7)は式(8)に変換される。
Iblur(r, Θ) = 1/T・∫ωh'(θ)I(r, Θ-θ)dθ
= 1/T・(h'＊I)(r, Θ)              …(8)
ここで、式(7)における(x, y)はr(cosΘ, sinΘ)である。
【００５３】
式(8)は、平行移動に対する振れと同じ式であり、PSFであるh'(θ)によるコンボリューションを行ったものと見做すことができる。ただし、式(8)は理論的な式であり、実際のデータはディジタル値であるから、実空間から極座標空間への変換には何らかの補間が必要になる。任意の補間方法を用いることができるが、ここではバイリニア法を用いるものとする。
【００５４】
次に、詳細は後述するが、PSFの算出結果を基に式(8)のコンボリューションを打ち消すデコンボリューションを行う(S406)。デコンボリューションのアルゴリズムは、既存の任意のアルゴリズムを用いればよい。例えば、周波数空間上での除算、Lucy-Richardsonのアルゴリズム、Wienerフィルタを用いたアルゴリズム、正則化フィルタを用いたアルゴリズムなどが挙げられる。本実施例では、詳細は後述するが、開閉パターンを制御することでh'(θ)の形状をコントロールし、周波数空間上で除算を行うものとする。
【００５５】
次に、デコンボリューションによってI(r, Θ)が得られるので、I(r, Θ)を実空間表示I(x, y)に逆変換する(S407)。この逆変換も、実空間から極座標空間への変換と同様、補間処理が必要になる。そして、I(x, y)を補正後の撮像データとして出力する(S408)。
【００５６】
図5は画像の暈けの補正原理を概念的に表す図である。つまり、極座標変換によって、回転振れを角度Θ軸方向の振れ（横振れ）に変換し、画像の横振れをデコンボリューションによって除去する。そして、横振れを除去した画像を実空間に戻し、回転振れを除去した画像を得る。
【００５７】
このように、フラッタシャッタによって得た画像について、フラッタシャッタの開閉パターン（露光情報）と回転振れ情報から、回転振れによる画像の暈けを補正することができる。なお、本実施例において、回転振れ情報は動き情報検出部426から、露光情報は露光条件生成部427からそれぞれ取得することができる。
【００５８】
上記では、回転振れによる画像の暈けを補正対象にするため、撮像データを極座標に変換して処理を行う例を説明した。撮像データを極座標に変換せずに処理することで、所謂シフト振れと呼ばれる水平方向の振れ（横振れ）と垂直方向の振れ（縦振れ）による暈けを補正することも可能である。例えば、極座標へ変換する前にシフト振れによる暈けを補正し、その後、回転振れによる暈けの補正を行えばよい。
【００５９】
●PSFの作成方法
図6はPSFの作成(S204)を説明するフローチャートである。まず、入力した回転振れ情報に基づき、角度θを時間で微分して角速度ω(t)を算出する(S401)。角速度ω(t)とθ(t)と組み合わせることにより、角速度をθの関数として表すことが可能になる。これをω(θ)とする。
【００６０】
次に、入力した露光情報と回転振れ情報に基づき、関数h(t)をθの関数として取得する(S402)。これをh(θ)とする。
【００６１】
次に、取得した情報に基づき、h'(θ)=h(θ)/ω(θ)をPSFとして算出する(S403)。式(7)に示すように、h'(θ)が極座標上のPSFである。
【００６２】
図7は一般的な回転運動におけるPSFの一例を示す図で、横軸は角度（ラジアン）、縦軸はPSFの値を示している。開閉パターンを0≦t≦Tにおいてh(t)=1、それ以外はh(t)=0とし、加速運動をしているとすると、ω(θ)が増大するのでPSFであるh'(θ)の値は減少する。
【００６３】
●デコンボリューション
式(8)を周波数空間上に変換すると次式が得られる。
Iblur(f, ρ) = 1/T・H'(f, ρ)I(f, ρ)      …(9)
ここで、fはrの周波数変換に対応する変数、
ρはΘの周波数変換に対応する変数。
【００６４】
H'(f, ρ)は既知であるから、周波数空間上でIblur(f, ρ)をH'(f, ρ)で除算すれば、I(f, ρ)は原理的には求まる。しかし、ここには問題点があり、等角速度運動による振れを考え、ω(θ)が一定であるとして説明する。
【００６５】
図8(a)は通常の露光条件である0≦t≦Tにおいてh(t)=1、それ以外はh(t)=0の場合（フラッタシャッタではなく、露光期間において連続的にシャッタが開）のPSFの形状を示す図である。図8(b)は図8(a)に示すPSFの周波数特性を示す図である。なお、図8(a)において、横軸は角度（ラジアン）、縦軸はPSFの値を表す。また、図8(b)において、横軸は角度（ラジアン）、縦軸はH'(f, ρ)の絶対値を表す。
【００６６】
図8(b)を参照すると、周期的に絶対値が0になる周波数が現れる。これは、その周波数に対応する情報の消失を表し、このような状態でデコンボリューションを行えば、情報が消失した周波数が存在することに対応する波形が現れる。そこで、情報の消失した周波数の発生を防ぐためにコード化露光を行う。言い換えれば、PSFの絶対値が0になる周波数の発生を防ぐために、露光期間において、開閉タイミングおよび開（または閉）の長さをランダムに制御して、フラッタシャッタを行う。
【００６７】
図9(a)はコード化露光を行った場合のPSFの形状を示す図、図9(b)は図9(a)に示すPSFの周波数特性を示す図である。コード化露光を行うと、図9(b)に示すように、情報が消失する周波数は存在しないので、Iblur(f, ρ)をH'(f, ρ)で除算すれば、理論的に、完全なデコンボリューションが可能になる。
【００６８】
図10(a)は回転振れによって暈けた画像（シミュレーション）を示し、図10(b)は回転振れによる暈けを補正した画像を示す。
【００６９】
このように、回転振れ情報およびフラッタシャッタの開閉パターン、実空間と極座標空間の相互変換、および、デコンボリューションを用いて、一枚の画像分の撮像データから回転振れによる暈けを補正した画像を得ることができる。また、回転振れによる暈けの補正処理に必要な情報は、開閉パターン、振れ情報、開閉パターンに従って加算合成して生成した振れによる暈け画像であることがわかる。
【００７０】
［開閉パターンの生成］
図11は周期的に照度が変化する照明下の撮影用に開閉パターンを生成する方法を説明する図である。図11(A)は、商用交流電源を使用する一般的な蛍光灯における、照度変化を表す模式図である。照明光の明るさ（照度レベル）は、基底レベル1102を極小として曲線1101を描く。期間1104は、商用交流電源の周期（以下、電源周期）に相当し、地域により1/50秒または1/60秒である。
【００７１】
照度レベルの閾値1103は、照度レベルがこれ以下になると、コード化露光処理により画像を補正する場合、照度レベルの低下が悪影響を与える可能性があると認められるレベルである。なお、図11(A)には、照度レベルの最大値の約1/2に閾値1103を設定する例を示すが、閾値1103は、撮像光学系と撮像デバイス418を含む撮像部の特性と、後述する微小露光期間に得られる露光量の関係によって定めるべきものである。
【００７２】
開閉パターン生成部429は、露光条件生成部427が決定した露光期間1105を所定の微小露光期間に分割し、分割した微小露光期間それぞれについて開閉か非開閉かを決定する。なお、図11には、露光期間1105が電源周期1104の二倍の例を示すが、露光期間1105は、電源周期1104に無関係であり、その開始も電源周期1104の任意の位相でよい。
【００７３】
仮に照度レベルが一定の場合、露光期間1105に得られる露光量は、開閉パターンの開閉率に比例する。つまり、露光期間1105に含まれる微小露光期間すべて開の場合の露光量を1とする場合、開閉率1/2の開閉パターン1106によって得られる実効露光量は1/2になる。
【００７４】
開閉パターン1106は、予め用意されていても、その都度生成してもよい。開閉パターンの‘1’はシャッタ開、‘0’はシャッタ閉を示し、開閉パターンは周期性をもたないように生成する。なお、周期性をもたない開閉パターンとは、図9に示したように、PSFの周波数特性がゼロにならないパターンを意味する。周期性をもたない開閉パターンを得るには、例えば、周期が非常に長いことで知られているメルセンヌ・ツイスタのような疑似乱数生成方法を用いることが考えられる。勿論、開閉パターンの生成は、必ずしも疑似乱数を用いる必要はなく、最終的に、生成した開閉パターンが周期性をもたなければ、任意の方法によって生成することができる。なお、周期性をもたないことの検証は、図9に示したように、PSFを周波数変換し、H'(f, ρ)の絶対値がゼロにならないことを確認すればよい。
【００７５】
図11(B)から図11(C)に示す照度レベル1107は、曲線1101に沿って変化する照度レベルの平均値を表す。曲線1101が正弦波を整流した脈流状であり、曲線1101上の最大照度レベルを1とすれば、照度レベル1107は√2≒0.71である。
【００７６】
図11(C)に示すように、照度レベルが曲線1101を示す照明下の撮影に開閉パターン1106を適用した場合、各微小露光期間に得られる露出量は一定ではない。そのため、図11(C)の例において得られる実効露出量は凡0.71/2≒0.35である。ただし、同じ開閉パターンを適用した場合でも、露光期間105の開始時の照度レベルによって実効露光量は変化する。例えば、図11(D)は曲線1101の極大と露光期間105の開始が一致した場合を示すが、この場合、同じ開閉パターン1106を用いても、得られる実効露出量は約0.63になる。
【００７７】
このように、照度レベルが変化する照明下の撮影において、コード化露光処理を単純に適用すると、実効露光量の低下、シャッタタイミングによる実効露光量の変化などが発生する。開閉パターン生成部429は、周期的な照度変化がある場合、所定水準以上の照度が得られる期間にシャッタを開にし、所定水準未満の照度しか得られない期間はシャッタを閉にする開閉パターンを生成する。そして、生成した開閉パターンを露光条件生成部427と振れ補正部428に出力する。
【００７８】
図12A、図12Bは開閉パターン生成部429による開閉パターンの決定を説明するフローチャートである。図3に示すスイッチ(SW1)405が閉（半押し状態）になると(S1301)、カメラは撮影準備状態になる。撮影準備状態において、測距部413によりデフォーカス量が検出され、レンズ制御部407により撮影レンズ200のフォーカスが駆動される(S1302)。続いて、測光部414により絞りと露光時間が決定され、レンズ制御部407により撮影レンズ200の絞り羽根が駆動される(S1303)。
【００７９】
この撮影準備期間に、開閉パターン生成部429は、想定される照度変化の周期の二周期分以上の測光期間において、図2に示す測光センサ207の情報などに基づき、微小露光期間ごとの撮影対象を照明する照度レベルを測定する(S1304)。そして、測定結果から照明レベルが有意な周期変化を示すか否かを判定する(S1305)。照明レベルが有意の周期変化を示さない場合は、例えば予め用意された開閉パターン1106を露光条件生成部427と振れ補正部428に送信する(S1306)。つまり、照度レベルが有意の周期変化を示さない場合は、スイッチ(SW2)406が閉（全押し状態）になると通常のコード化露光処理が実行される。
【００８０】
なお、照度レベルの測定は、半押し状態の期間に限られるわけではない。カメラが半押し状態以外でも露光量を検出が可能な測光機構を備える場合、スイッチ(SW)405が閉か否かにかかわらず、照度レベルの測定を行ってもよい。
【００８１】
一方、照度レベルが有意の周期変化を示す場合(S1305)、開閉パターン生成部429は、閾値1103を境に、照度レベルが閾値未満の期間にシャッタを開かない期間（以下、閉期間）1201を設定する。また、照度レベルが閾値以上の期間にシャッタを開くことが可能な期間（以下、開可能期間）1202を設定する(S1307)。そして、ステップS1302で決定された露光時間に基づき露光条件生成部427が設定した露光期間1105と、ステップ1304で検出した照度レベルの最大値から照度レベルの平均値1107を計算する。そして、露光期間1105の全期間においてシャッタを開にした場合の総露光量Eを計算する(S1308)。
【００８２】
図13は開閉パターン生成部429による開閉パターンの決定を説明する図である。次に、全押し状態になると(S1309)、開閉パターン生成部429は、全押し状態直前の測光センサ207の情報などに基づき、微小露光期間単位に、照度レベルの予測を開始する(S1310)。そして、微小露光期間に対応する照度レベルの予測値から、当該微小露光期間が閉期間1201に属すか開可能期間1202に属すかを判定する(S1311)。図13(B)に示すように、微小露光期間が閉期間1201に属す場合は、開閉パターンの値として‘0’を出力し(S1312)、処理をステップS1310に戻す。なお、符号1204は、開閉パターン生成部429が出力する開閉パターンの値を示す。
【００８３】
また、開可能期間1202に属す微小露光期間を判定すると(S1311)、開閉パターン生成部429は、図13(B)に示すように、開閉パターン1106の値（‘0’または‘1’）を出力する(S1313)。つまり、開閉パターン生成部429は、微小露光期間が開可能期間1202に属す場合は開閉パターン1106を適用し、微小露光期間が閉期間1201に属す場合は開閉パターン1106を適用しないという処理を繰り返す。露光条件生成部427は、開閉パターン生成部429が出力する露光パターン1204に応じて電子シャッタの開閉を制御し、コード化露光を実行する。
【００８４】
開閉パターンの値‘1’を出力した場合、開閉パターン生成部429は、当該微小露光期間の照度レベルの予測値から当該微小露光期間の露光量eを予測し(S1314)、露光期間1105の開始から現在までの積算露光量Σeを計算する(S1315)。そして、積算露光量ΣeとステップS1308で計算した総露光量Eの1/2を比較して、ΣeがE/2（総露光量Eと1/2の積）に達したか否かを判定する(S1316)。Σe＜E/2（積算露光量が積未満）であれば積算露光量Σeが不足として処理をステップS1311に戻す。また、Σe≧E/2（積算露光量が積以上）であれば開閉パターンの生成を終了し、その旨を露光条件生成部427と振れ補正部428に送信する(S1317)。この場合、処理はステップS1301に戻る。また、開閉パターンの生成終了を受信すると、露光条件生成部427は、撮影の終了をCPU402を含む各部に通知し、振れ補正部428は振れ補正を開始する。
【００８５】
露光期間1105に単に開閉パターン1106を適用すれば、前述したように、ステップS1308で計算した総露光量Eの1/2の実効露光量が得られる。従って、Σe≧E/2になれば、通常のコード化露光と少なくとも同じ露光量が得られたことになり、開閉パターン生成部429は、積算露光量Σeは充分として開閉パターンの生成を終了する。なお、開閉パターンの生成終了タイミング、言い換えれば露光を終了するタイミング1207は、露光期間1105の終了1206とは必ずしも一致しない。
【００８６】
勿論、開閉パターンの生成の終了を判断するための積算露光量Σeは、総露光量Eに相対的な値である。つまり、開閉パターン生成部429は、実際に露光量を積算する必要はない。例えば、Σe≧E/2を達成するのに必要な微小露光期間の数は予測可能であるし、開閉パターン1106を考慮してΣe≧E/2を達成する具体的な微小露光期間も予測可能である。従って、予測した微小露光期間に達した時点で開閉パターンの生成を終了しても構わない。
【００８７】
また、図13(C)は、図13(B)とは異なる照度レベルで露光期間1105が開始された場合を示している。図13(C)の場合も、開閉パターン生成部429は、各微小露光期間が閉期間1201に属すか、開可能期間1202に属すかの判定(S1311)に基づき、ステップS1312からS1316の処理を繰り返す。つまり、露光期間1105の開始1203は、照度レベルの変化1101の位相に同期する必要はない。
【００８８】
このように、照度レベルの周期的な変化に対して、所定水準以上の照度レベルが得られる期間のみ開閉パターンを適用することで、フリッカを有する照明下の撮影においても、照度の変化の影響による露出不足による画質劣化を防ぐことができる。
【実施例２】
【００８９】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００９０】
実施例1では、周期的な照度レベルの変化がある場合、所定水準に満たない照度レベルの期間は、常に閉期間1201にする開閉パターンの生成を説明した。実施例2では、開閉パターンを決定する別の方法として、照度レベルが高い微小露光期間ほど、開閉パターンを適用する確率が高くするようなランダム関数f(t)を用いて、開閉パターンを決定する方法を説明する。このようなランダム関数f(t)は、下式のような擬似コード式で表すことができる。
f(t) = Floor{Rnd(0, 1) + L(t) - Th + Ap}      …(10)
ここで、L(t)は時刻tにおける照度レベル（最大値は1に正規化されている）、
Thは閾値1103（最大値は1に正規化されている）、
Apは開閉パターンの開閉比率（0＜Ap＜1）、
Rnd(0, 1)は擬似ランダム関数（0≦Rnd(0, 1)≦1）、
Floor(x)は最も小さい整数を返す関数。
【００９１】
上式において、蛍光灯下における正規化照度レベルL(t)は|sin(t)|によって近似することができる。
【００９２】
図14は実施例2の開閉パターン生成部429による開閉パターンの決定を説明するフローチャートである。なお、ステップS1301からS1309の処理は図12Aに示す実施例1の処理と同じであり、説明を省略する。
【００９３】
全押し状態になると(S1309)、開閉パターン生成部429は、全押し状態直前の測光センサ207の情報などに基づき、微小露光期間単位に、照度レベルの予測を開始する(S1410)。そして、現在の微小露光期間の照度レベルL(t)に対するランダム関数f(t)の値を計算し(S1411)、f(t)の値を判定する(S1412)。f(t)の計算結果は0または1になり、f(t)=0の場合は、開閉パターンの値として‘0’を出力し(S1413)、処理をステップS1411に戻す。
【００９４】
また、f(t)=1の場合(S1412)、開閉パターン生成部429は、開閉パターン1106の値（‘0’または‘1’）を出力する(S1414)。つまり、開閉パターン生成部429は、f(t)=1の場合は開閉パターン1106を適用し、f(t)=0の場合は開閉パターン1106を適用しないという処理を繰り返す。
【００９５】
開閉パターンの値‘1’を出力した場合、開閉パターン生成部429は、当該微小露光期間の照度レベルの予測値から当該微小露光期間の露光量eを予測し(S1415)、露光期間1105の開始から現在までの積算露光量Σeを計算する(S1416)。そして、積算露光量ΣeがステップS1308で計算した総露光量Eに開閉比率APを乗じた値に達したか否かを判定する(S1417)。なお、E×APは、照度レベルが変化しない照度下において開閉比率Apの開閉パターンを適用してコード化露光を行った場合と同じ露光量を表す。
【００９６】
開閉パターン生成部429は、Σe＜E×APであれば積算露光量Σeが不足として処理をステップS1411に戻す。また、Σe≧E×APであれば開閉パターンの生成を終了し、その旨を露光条件生成部427と振れ補正部428に送信する(S1418)。この場合、処理はステップS1301に戻る。
【００９７】
前述したように、開閉パターンの生成の終了を判断するための積算露光量Σeは、総露光量Eに相対的な値である。つまり、開閉パターン生成部429は、実際に露光量を積算する必要はない。例えば、Σe≧E×APを達成するのに必要な微小露光期間の数は予測可能であるし、開閉パターン1106を考慮してΣe≧E×APを達成する具体的な微小露光期間も予測可能である。従って、予測した微小露光期間に達した時点で開閉パターンの生成を終了しても構わない。
【００９８】
このように、照度レベルが高い微小露光期間ほど開閉パターンを適用する確率が上べるようなランダム関数f(t)を用いて開閉パターンを生成する。従って、照度レベルの周期的な変化に対して、所定水準以上の照度レベルが得られる期間に高い確率で開閉パターンを適用することで、フリッカを有する照明下の撮影においても、照度の変化の影響による露出不足による画質劣化を効率よく防ぐことができる。
【実施例３】
【００９９】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例2において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１００】
上述した実施例では、所定の露光量に達した時点で開閉パターンの生成と露光を終了する。従って、露光期間は、測光部414が決定した露光期間1105より長くなる（シャッタ速度が遅くなる）場合がある。実施例3では、測光部414が決定した露光期間115を保ち、好適な振れ補正結果を得る方法を説明する。
【０１０１】
商用電源の周波数は50Hzまたは60Hzであり、照度レベルの変動周期は1/100秒または1/120秒である。また、商用電源の電圧変化は正弦波で近似することができ、蛍光灯の照度レベルの変化も|sin(t)|で近似することができる。
【０１０２】
一方、ディジタルカメラにおいては、撮像デバイス418をはじめとする各構成要素の制約により、微小露光期間が制限される。つまり、照度レベルの変動周期に含めることが可能な微小露光期間の数は、商用電源の周波数ごとに定まる。言い換えれば、照度レベルが閾値Thを下回る微小露光期間の開閉パターンの値が‘0’の開閉パターンを商用電源の周波数ごとに予め用意することができる。そのような開閉パターンを用意して利用すれば、露光期間115を保ち、好適な振れ補正結果を得ることができる。
【０１０３】
図15は微小露光期間が1/600秒の場合の開閉パターンの一例を示す図でる。なお、説明を簡単にするために1/600秒の微小露光期間を示すが、実際は、より柔軟なコード化露光を行うためにより短い微小露光期間にすることは言うまでもない。
【０１０４】
図15(A)は商用電源の周波数が50Hzの場合の蛍光灯の照度レベルの変化を示し、図15(C)は同60Hzの場合の蛍光灯の照度レベルの変化を示している。両図において、曲線1501は基底レベル1502を極小とする照明レベルの変化を示す。照度レベル1501が閾値1503を上回る期間が開可能期間1504、1511、閾値を下回る期間が閉期間1505、1512である。また、矢印1506はスイッチ(SW2)406が閉（全押し状態）になったタイミングを示し、矢印1506と矢印1508の間が測光部414が決定した露光期間1507である。
【０１０５】
図15(B)に示すように、50Hzの場合、各開可能期間1504に微小露光期間が四つあり、露光期間1507の全体で露光可能な微小露光期間は16である。同様に、図15(D)に示すように、60Hzの場合、各開可能期間1511に微小露光期間が三つあり、露光期間1507の全体で露光可能な微小露光期間は15である。
【０１０６】
露光期間1507の開可能期間1504に開閉率AP=0.5の開閉パターンを割り当てると、開閉パターン1509と1513になる。なお、両開閉パターンの開閉率はAP=0.5であるが、得られる総露出量Eはそれぞれ0.60、0.57になる。
【０１０７】
図16は実施例3の開閉パターン生成部429による開閉パターンの決定を説明するフローチャートである。なお、ステップS1301からS1306の処理は図12Aに示す実施例1の処理と同じであり、説明を省略する。照度レベルが有意の周期変化を示す場合(S1305)、開閉パターン生成部429は、照度レベルの変動周期を計算し(S1507)、変動周期に応じた開閉パターン（1509または1513）を選択する(S1508)。
【０１０８】
全押し状態になると(S1509)、開閉パターン生成部429は、全押し状態直前の測光センサ207の情報などに基づき、最初の微小露光期間に対応する開閉パターン1509（または1513）の要素を決定する。そして、決定した要素の値（‘0’または‘1’）を出力する(S1510)。例えば、図15(B)に示すように、照度レベル1501の極小点で露光期間1507が開始された場合は開閉パターン1509（または1513）の最初の要素‘0’が最初の微小露光期間に対応する開閉パターンの要素である。もし、照度レベル1501の最大点で露光期間1507が開始された場合は開閉パターン1509（または1513）の四つ目の要素‘0’が最初の微小露光期間に対応する開閉パターンの要素である。
【０１０９】
次に、開閉パターン生成部429は、微小露光期間の経過を判定し(S1511)、微小露光期間が経過すると続く開閉パターン1509（または1513）の要素の値（‘0’または‘1’）を出力する(S1512)。そして、次の微小露光期間は露光期間1507に含まれるか否かを判定し(S1513)、含まれれば処理をステップS1511に戻し、含まれなければ開閉パターンの生成を終了し、その旨を露光条件生成部427と振れ補正部428に送信する(S1514)。この場合、処理はステップS1301に戻る。
【０１１０】
開閉パターン1509、1513は、図15(B)(D)に示すように、閉期間1505、1512に対応する要素の値が‘0’、かつ、図9A、図9Bに示すように、PSFの周波数特性がゼロにならないようなパターンである。このような開閉パターンは、例えば、先述した疑似乱数生成方法を用いた上で、閉期間における値が‘0’になるような区間を選択するなどの方法が考えられる。
【０１１１】
このように、商用電源の周波数に応じて、閉期間1505、1512に対応する要素の値が‘0’の開閉パターンを用意する。こうすれば、要素の値が‘1’の微小露光期間の露光量の総和を計算する必要はないし、露光終了のタイミングが遅れて露光期間1507が変化することもない。
【０１１２】
以上では、微小露光期間が固有の長さをもつ場合を説明した。しかし、微小露光期間の長さが6：5の割合で変更可能な場合は、微小露光期間の長さを周波数が50Hzの場合は6、60Hzの場合は5に設定して、同一の開閉パターンを使用してコード化露光を行ってもよい。
【０１１３】
［他の実施例］
本発明の目的は、次のようにしても達成される。上記実施例の機能または先に説明したフローチャートの処理や制御を実現するプログラムを記録した記録媒体をシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（CPUやMPU）に前記プログラムを実行させる。この場合、記録媒体から読み出されたソフトウェア自体が上記実施例の機能を実現することになり、そのプログラムと、そのプログラムを記憶する、コンピュータが読み取り可能な記録媒体は本発明を構成する。
【図１】
2011004188.tif 000003
【図２】
2011004188.tif 000004
【図３】
2011004188.tif 000005
【図４】
2011004188.tif 000006
【図５】
2011004188.tif 000007
【図６】
2011004188.tif 000008
【図７】
2011004188.tif 000009
【図８】
2011004188.tif 000010
【図９】
2011004188.tif 000011
【図１１】
2011004188.tif 000012
【図１２Ａ】
2011004188.tif 000013
【図１２Ｂ】
2011004188.tif 000014
【図１３】
2011004188.tif 000015
【図１４】
2011004188.tif 000016
【図１５】
2011004188.tif 000017
【図１６】
2011004188.tif 000018
【図１０】
2011004188.tif 000019