(57)【要約】【課題】  撮像データの振れを効果的に補正する。【解決手段】  撮像部によって時分割露光された複数の撮像データを入力する(S1201)。第一および第二の処理により、複数の撮像データを合成用画像または動き検出用画像に分配し(S1202、S1203)、動き検出用画像の撮像データから時分割露光の際の撮像部の動き量を検出し(S1205)、合成用画像を合成した合成撮像データを生成し(S1204)、分配を示す分配パターンおよび動き量に基づき、合成撮像データの振れを補正する(S1207)。そして、第一および第二の処理によって得られる補正後の撮像データを統合して、振れ補正後の撮像データとする(S1208)。【選択図】  図12
2010273142.tif 000002
【特許請求の範囲】
【請求項１】
撮像部によって時分割露光された複数の撮像データを入力する入力手段と、
分配パターンに従い、前記複数の撮像データを合成用画像または動き検出用画像に分配する分配手段、前記動き検出用画像の撮像データから前記時分割露光の際の前記撮像部の動き量を検出する検出手段、前記合成用画像を合成した合成撮像データを生成する合成手段、並びに、前記分配パターンおよび前記動き量に基づき、前記合成撮像データの振れを補正する補正手段をそれぞれ備える第一および第二の処理手段と、
前記第一および第二の処理手段がそれぞれ出力する補正後の撮像データを合成して、振れ補正後の撮像データにする統合手段とを有することを特徴とする画像処理装置。
【請求項２】
前記第一の処理手段の分配パターンと、前記第二の処理手段の分配パターンは互いに反転パターンであることを特徴とする請求項1に記載された画像処理装置。
【請求項３】
撮像部によって時分割露光された複数の撮像データを入力する入力手段と、
分配パターンに従い、前記複数の撮像データを合成用画像または動き検出用画像に分配する分配手段、前記動き検出用画像の撮像データから前記時分割露光の際の前記撮像部の動き量を検出する検出手段、前記合成用画像を合成した合成撮像データを生成する合成手段、並びに、前記分配パターンおよび前記動き量に基づき、前記合成撮像データの振れを補正する補正手段をそれぞれ備える複数の処理手段と、
前記複数の処理手段がそれぞれ出力する補正後の撮像データを合成して、振れ補正後の撮像データにする統合手段とを有することを特徴とする画像処理装置。
【請求項４】
前記統合手段は、前記合成した撮像データの各画素値を、前記複数の処理手段それぞれの分配パターンが合成画像の分配を示す割合の総和で除算することを特徴とする請求項3に記載された画像処理装置。
【請求項５】
前記分配手段は、前記分配パターンに従い、前記複数の撮像データをランダムに合成用画像または動き検出用画像に分配することを特徴とする請求項1から請求項4の何れか一項に記載された画像処理装置。
【請求項６】
前記補正手段は、前記分配パターンと前記動き量に基づき、点像分布関数を作成する作成手段、および、前記点像分布関数を用いて、前記合成撮像データをデコンボリューションする手段を有することを特徴とする請求項1から請求項5の何れか一項に記載された画像処理装置。
【請求項７】
撮像部によって時分割露光された複数の撮像データを入力する入力ステップと、
分配パターンに従い、前記複数の撮像データを合成用画像または動き検出用画像に分配する分配処理、前記動き検出用画像の撮像データから前記時分割露光の際の前記撮像部の動き量を検出する検出処理、前記合成用画像を合成した合成撮像データを生成する合成処理、並びに、前記分配パターンおよび前記動き量に基づき、前記合成撮像データの振れを補正する補正処理をそれぞれ行う第一および第二の処理ステップと、
前記第一および第二の処理ステップで得られる補正後の撮像データを合成して、振れ補正後の撮像データにする統合ステップとを有することを特徴とする画像処理方法。
【請求項８】
撮像部によって時分割露光された複数の撮像データを入力する入力ステップと、
分配パターンに従い、前記複数の撮像データを合成用画像または動き検出用画像に分配する分配処理、前記動き検出用画像の撮像データから前記時分割露光の際の前記撮像部の動き量を検出する検出処理、前記合成用画像を合成した合成撮像データを生成する合成処理、並びに、前記分配パターンおよび前記動き量に基づき、前記合成撮像データの振れを補正する補正処理をそれぞれ行う複数の処理ステップと、
前記複数の処理ステップがそれぞれ出力する補正後の撮像データを合成して、振れ補正後の撮像データにする統合ステップとを有することを特徴とする画像処理方法。
【請求項９】
コンピュータ装置を制御して、請求項1から請求項6の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像データの振れ補正に関する。
【背景技術】
【０００２】
ディジタル画像は、パーソナルコンピュータを利用して簡単に100%超の拡大表示が可能であり、拡大画像においては僅かな手振れによる画像の暈けも目立つ。そのため、ディジタルカメラの撮像デバイスの高解像度化に伴い、撮影時の手振れを補正する処理が注目されている。
【０００３】
手振れの補正方法には、ハードウェアによる補正方法と、ソフトウェアによる補正方法がある。ハードウェアによる補正方法は、カメラにジャイロセンサを搭載し、露光中、ジャイロセンサの出力信号に基づき、カメラの振動を打ち消すようにレンズや撮像デバイスを駆動して手振れを低減する。レンズ光学系による手振れ補正は、特許文献1などに述べられている。
【０００４】
ハードウェアによる補正方法は、部品点数の増加、製造コストの増加という問題がある。安価なディジタルカメラで同様の機能を実現する場合、ソフトウェアによる補正方法が望まれる。
【０００５】
ソフトウェアによる補正方法には、短時間露光によって得た画像（以下、短時間露光画像）と、長時間露光によって得た画像（以下、長時間露光画像）を合成する方法が提案されている（例えば特許文献2）。また、短時間露光画像を複数取得して、それら画像を合成する方法が提案されている（例えば特許文献3や4）。
【０００６】
特許文献2の方法は、短時間露光画像を用いて長時間露光画像の高周波成分を補正して、画像の暈けを修復する。特許文献3の方法は、、シャッタの開閉を時分割に制御する露光（以下、時分割露光）によって得た複数の短時間露光画像の間の差を小さくするように画像の位置合わせを行って、それら画像を合成し、画像の暈けを修復する。同様に、特許文献4の方法は、暈けを補正した後の複数枚の画像を、画像の位置を合わせながら合成して、画像の暈けを修復する。
【０００７】
しかし、特許文献3や4の方法には次の課題がある。画像の暈けを適切に修復するには、複数の短時間露光画像を、それらの振れ量に応じて、適切に合成する。言い換えれば、適切な画像の暈けの修復には、高精度な振れ量の取得が必要である。従って、短時間露光画像について、その直前または直後に撮影された短時間露光画像との間の振れ量を算出する必要がある。しかし、振れ量を高精度に算出する処理や、振れ量に合わせて画像を変形し合成する処理は、計算コストが非常に高く、連写速度の低下や、バッファリングが可能な撮影数の低下を招く。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開2002-214657公報
【特許文献２】特開2002-258351公報
【特許文献３】特開2006-074693公報
【特許文献４】特開2006-086762公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、撮像データの振れを効果的に補正することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１１】
本発明にかかる画像処理は、撮像部によって時分割露光された複数の撮像データを入力する入力ステップと、分配パターンに従い、前記複数の撮像データを合成用画像または動き検出用画像に分配する分配処理、前記動き検出用画像の撮像データから前記時分割露光の際の前記撮像部の動き量を検出する検出処理、前記合成用画像を合成した合成撮像データを生成する合成処理、並びに、前記分配パターンおよび前記動き量に基づき、前記合成撮像データの振れを補正する補正処理をそれぞれ行う第一および第二の処理ステップと、前記第一および第二の処理ステップで得られる補正後の撮像データを合成して、振れ補正後の撮像データにする統合ステップとを有することを特徴とする。
【００１２】
また、撮像部によって時分割露光された複数の撮像データを入力する入力ステップと、分配パターンに従い、前記複数の撮像データを合成用画像または動き検出用画像に分配する分配処理、前記動き検出用画像の撮像データから前記時分割露光の際の前記撮像部の動き量を検出する検出処理、前記合成用画像を合成した合成撮像データを生成する合成処理、並びに、前記分配パターンおよび前記動き量に基づき、前記合成撮像データの振れを補正する補正処理をそれぞれ行う複数の処理ステップと、前記複数の処理ステップがそれぞれ出力する補正後の撮像データを合成して、振れ補正後の撮像データにする統合ステップとを有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、撮像データの振れを効果的に補正することができる。
【図面の簡単な説明】
【００１４】
【図１】ディジタルカメラの外観図と垂直断面図。
【図２】ディジタルカメラの制御、撮影および画像処理に関する構成例を示すブロック図。
【図３】コード化露光処理によって画像の暈けを補正する処理を説明するフローチャート。
【図４】画像の暈けの補正原理を概念的に表す図。
【図５】PSFの作成(S204)を説明するフローチャート。
【図６】一般的な回転運動におけるPSFの一例を示す図。
【図７】通常の露光条件である0≦t≦Tにおいてh(t)=1、それ以外はh(t)=0の場合のPSFの形状と周波数特性を示す図。
【図８】コード化露光を行った場合のPSFの形状と周波数特性を示す図。
【図９】回転振れによって暈けた画像と回転振れによる暈けを補正した画像を示す図。
【図１０】本実施例のコード化処理の概要を説明する図。
【図１１】振れ補正部の処理の概要を説明する図。
【図１２】振れ補正部の処理を説明するフローチャート。
【図１３】振り分けパターンの作成を説明するフローチャート。
【図１４】動き情報の生成を説明するフローチャート。
【図１５】実施例2の振れ補正部の処理の概要を説明する図。
【図１６】実施例3の振れ補正部の処理の概要を説明する図。
【図１７】実施例4の振れ補正部の処理の概要を説明する図。
【発明を実施するための形態】
【００１５】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。なお、以下では、ディジタルカメラに手振れを補正する構成を組み込む例を説明する。
【実施例１】
【００１６】
［カメラの構成］
図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モードの設定にも使用される。
【００２２】
撮像光学系の撮影レンズ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に着脱可能である。
【００２７】
図2はディジタルカメラの制御、撮影および画像処理に関する構成例を示すブロック図である。
【００２８】
マイクロコンピュータ(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の制御によって時分割露光された画像を処理し、被写体の複数の撮像データを取得する。
【００３７】
なお、撮像データは、撮像部である撮像デバイス418から出力された信号をA/D423によりディジタルデータに変換したデモザイキング（現像処理）前のデータ（以下、RAWデータと呼ぶ場合がある）である。なお、少なくとも撮像デバイス418は撮像部を構成するが、撮像デバイス418とA/D423を合わせて、さらに撮影レンズ200を合わせて、撮像部と呼ぶ場合がある。あるいは、カメラボディ100を撮像部と呼ぶ場合がある。
【００３８】
振れ補正部428は、後述する振り分けパターンに応じて選択した撮像データを加算合成する。そして、振り分けパターン、動き情報検出部426が出力する動き情報などに基づき、合成撮像データに振れ補正処理を適用し、振れによる暈けを補正した撮像データを生成する。
【００３９】
画像処理部425は、振れ補正部428によって補正された撮像データをデモザイキングして画像データを生成し、生成した画像データに各種の画像処理を施し、画像処理後の画像データを記録メディアに格納する。なお、デモザイキング前の撮像データを記録メディアに格納してもよい。
【００４０】
［コード化露光処理の概要」
振れ補正部428は、coded exposure（以下、コード化露光）と呼ばれる技術を用いて手振れなどによる画像の暈けを補正する。コード化露光は、指定された露光時間の間にシャッタを不規則に開閉し（以下、フラッタシャッタ(flutter shutter)）、得られた画像とシャッタの開閉パターンの相関を用いて画像の暈けを補正する技術である。
【００４１】
以下では、回転方向の振れ（回転振れ）による画像の暈けを補正する場合を例にして、コード化露光処理の基本的な流れを説明する。その後、本実施例におけるコード化露光処理を説明する。
【００４２】
図3はコード化露光処理によって画像の暈けを補正する処理を説明するフローチャートである。
【００４３】
まず、フラッタシャッタにより撮影した撮影データを入力する(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      …(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(θ)/ω(θ)である。
【００４６】
次に、シャッタの開閉パターンを示す露光情報を入力し(S402)、振れ角度θと時間の関係を示す回転振れ情報を入力する(S403)。そして、詳細は後述するが、回転振れ情報と露光情報に基づき、極座標上の点像分布関数(point spread function: PSF)であるh'(θ)を算出する(S404)。
【００４７】
次に、撮像データを極座標上の画像に変換する(S405)。前述したように、この変換における直交座標系の原点は、回転振れ情報が示す回転の中心座標に一致させる。極座標変換により式(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)は理論的な式であり、実際のデータはディジタル値であるから、実空間から極座標空間への変換には何らかの補間が必要になる。任意の補間方法を用いることができるが、ここではバイリニア法を用いるものとする。
【００４９】
次に、詳細は後述するが、PSFの算出結果を基に式(4)のコンボリューションを打ち消すデコンボリューションを行う(S406)。デコンボリューションのアルゴリズムは、既存の任意のアルゴリズムを用いればよい。例えば、周波数空間上での除算、Lucy-Richardsonのアルゴリズム、Wienerフィルタを用いたアルゴリズム、正則化フィルタを用いたアルゴリズムなどが挙げられる。本実施例では、詳細は後述するが、開閉パターンを制御することでh'(θ)の形状をコントロールし、周波数空間上で除算を行うものとする。
【００５０】
次に、デコンボリューションによってI(r, Θ)が得られるので、I(r, Θ)を実空間表示I(x, y)に逆変換する(S407)。この逆変換も、実空間から極座標空間への変換と同様、補間処理が必要になる。そして、I(x, y)を補正後の撮像データとして出力する(S408)。
【００５１】
図4は画像の暈けの補正原理を概念的に表す図である。つまり、極座標変換によって、回転振れを角度Θ軸方向の振れ（横振れ）に変換し、画像の横振れをデコンボリューションによって除去する。そして、横振れを除去した画像を実空間に戻し、回転振れを除去した画像を得る。
【００５２】
このように、フラッタシャッタによって得た画像について、フラッタシャッタの開閉パターン（露光情報）と回転振れ情報から、回転振れによる画像の暈けを補正することができる。なお、本実施例において、回転振れ情報は動き情報検出部426から、露光情報は露光条件生成部427からそれぞれ取得することができる。
【００５３】
上記では、回転振れによる画像の暈けを補正対象にするため、撮像データを極座標に変換して処理を行う例を説明した。撮像データを極座標に変換せずに処理することで、所謂シフト振れと呼ばれる水平方向の振れ（横振れ）と垂直方向の振れ（縦振れ）による暈けを補正することも可能である。例えば、極座標へ変換する前にシフト振れによる暈けを補正し、その後、回転振れによる暈けの補正を行えばよい。
【００５４】
●PSFの作成方法
図5はPSFの作成(S204)を説明するフローチャートである。
【００５５】
まず、入力した回転振れ情報に基づき、角度θを時間で微分して角速度ω(t)を算出する(S401)。角速度ω(t)とθ(t)と組み合わせることにより、角速度をθの関数として表すことが可能になる。これをω(θ)とする。
【００５６】
次に、入力した露光情報と回転振れ情報に基づき、関数h(t)をθの関数として取得する(S402)。これをh(θ)とする。
【００５７】
次に、取得した情報に基づき、h'(θ)=h(θ)/ω(θ)をPSFとして算出する(S403)。式(3)に示すように、h'(θ)が極座標上のPSFである。
【００５８】
図6は一般的な回転運動における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, ρ)は原理的には求まる。しかし、ここには問題点があり、等角速度運動による振れを考え、ω(θ)が一定であるとして説明する。
【００６１】
図7(a)は通常の露光条件である0≦t≦Tにおいてh(t)=1、それ以外はh(t)=0の場合（フラッタシャッタではなく、シャッタ開期間において連続的にシャッタが開）のPSFの形状を示す図である。図7(b)は図7(a)に示すPSFの周波数特性を示す図である。なお、図7(a)において、横軸は角度（ラジアン）、縦軸はPSFの値を表す。また、図7(b)において、横軸は角度（ラジアン）、縦軸はH'(f, ρ)の絶対値を表す。
【００６２】
図7(b)を参照すると、周期的に絶対値が0になる周波数が現れる。これは、その周波数に対応する情報の消失を表し、このような状態でデコンボリューションを行えば、情報が消失した周波数が存在することに対応する波形（文様）が現れる。そこで、情報の消失した周波数の発生を防ぐためにコード化露光を行う。言い換えれば、PSFの絶対値が0になる周波数の発生を防ぐために、シャッタの開期間において、開閉タイミングおよび開（または閉）の長さをランダムに制御して、フラッタシャッタを行う。
【００６３】
図8(a)はコード化露光を行った場合のPSFの形状を示す図、図8(b)は図8(a)に示すPSFの周波数特性を示す図である。
【００６４】
コード化露光を行うと、図8(b)に示すように、情報が消失する周波数は存在しないので、Iblur(f, ρ)をH'(f, ρ)で除算すれば、理論的に、完全なデコンボリューションが可能になる。
【００６５】
図9(a)は回転振れによって暈けた画像（シミュレーション）を示し、図9(b)は回転振れによる暈けを補正した画像を示す。
【００６６】
このように、回転振れ情報およびフラッタシャッタの開閉パターン、実空間と極座標空間の相互変換、および、デコンボリューションを用いて、一枚の画像分の撮像データから回転振れによる暈けを補正した画像を得ることができる。また、回転振れによる暈けの補正処理に必要な情報は、開閉パターン、振れ情報、開閉パターンに従って加算合成して生成した振れによる暈け画像であることがわかる。
【００６７】
［振れ補正部］
本実施例は、フラッタシャッタを採用せず、時分割露光によって得た画像を撮影画像として採用するか否かの振り分けによって、コード化露光処理と同等の処理を実現する。
【００６８】
図10は本実施例のコード化処理の概要を説明する図である。
【００６９】
時分割露光によって撮影された多数の画像に開閉パターンに相当する振り分けパターン（分配パターン）を適用して、撮影画像として採用する画像（図の上段）と採用しない画像（図の下段）を分配する分配処理を行う。なお、撮影画像として採用する画像を「合成用画像」、採用しない画像を「動き検出用画像」と呼ぶ。
【００７０】
次に、撮影時間が隣接する動き検出用画像の差分を動き情報として検出する検出処理を行うとともに、合成用画像を合成して合成画像を生成する合成処理を行う。そして、合成画像、振り分けパターン、動き情報に基づき補正処理を行って、振れによる暈けを補正した補正画像を生成する。
【００７１】
なお、動き検出用画像から動き情報を検出せずに、動き情報検出部426から動き情報を取得してもよい。動き情報検出部426から動き情報を取得すれば、振れ量の演算が不要になり、高速かつ高精度な動き情報を得ることができる。
【００７２】
しかし、適正な露出になるように撮影条件を設定し、フラッタシャッタや時分割露光によって得た一部の画像（合成用画像）を合成する場合、露出が不足し、ノイズが増加するなど画質低下を引き起こす問題がある。そこで、振れ補正部428は、二つのコード化露光処理を並行に実行する。
【００７３】
図11は振れ補正部428の処理の概要を説明する図である。
【００７４】
図11の上側に示すコード化露光処理（第一の処理）は、図10と同様の処理である。他方、図11の下側に示すコード化露光処理（第二の処理）は、第一の処理が使用する振り分けパターンを反転した振り分けパターンを使用してコード化露光処理を行う。このようにすれば、時分割露光されたすべての撮像データを用いた画像合成が可能になる。なお、第一の処理と第二の処理を時間的に並列に実行すれば、処理の高速化が図れるが、時間的に並列に実行する必要はなく、バッファメモリを利用して第一の処理と第二の処理を交互に行い、実質的に第一の処理と第二の処理を並行に行ってもよい。
【００７５】
図12は振れ補正部428の処理を説明するフローチャートである。なお、二つのコード化露光処理は、振り分けパターンが反転しているだけで、処理は同じである。従って、一つのコード化露光処理を中心に説明する。
【００７６】
振れ補正部428は、測光部414によって決められた露光時間内において、露光条件生成部427の制御によって時分割露光された多数の撮像データを取得する(S1201)。そして、詳細は後述するが、合成用画像に対応する状態を‘1’、動き検出用画像に対応する状態を‘0’とする振り分けパターンを作成する(S1202)。
【００７７】
次に、振れ補正部428は、振り分けパターンに従い、取得した撮像データそれぞれについて、合成用画像か動き検出用画像かを判定する(S1203)。そして、合成用画像は、順次、合成して合成画像を生成する(S1204)。この合成処理は、撮像データの同座標の画素データ同士を単純加算する処理でよい。このような合成処理を行うことで、フラッタシャッタによって得られる撮像データと同等の撮像データを得ることができる。また、振れ量の検出(S1205)は、詳細は後述するが、注目する動き検出用画像と、その直前の動き検出用画像の間で被写体の変位を算出し、算出した変位を二つの動き検出用画像間の振れ量とする。
【００７８】
次に、振れ補正部428は、時分割露光された撮像データすべてについて合成処理または振れ量の検出を行ったか否かを判定し(S1206)、未処理の撮像データがある場合は、ステップS1203からS1205の処理を繰り返す。
【００７９】
時分割露光された撮像データすべてに対する合成処理および振れ量の検出が終了すると、振れ補正部428は、振れ補正処理を行う(S1207)。つまり、ステップS1202で作成した振り分けパターン、および、ステップS1205で検出した振れ量をまとめた動き情報を用いて、ステップS1204で作成した合成画像に振れ補正処理を適用して、振れによる暈けを補正した撮像データを生成する。
【００８０】
次に、振れ補正部428は、第一および第二の処理（二つのコード化露光処理）によって得られる補正後の撮像データを統合して(S1208)、振れ補正後の撮像データとして出力する。この統合処理は、撮像データの同座標の画素データ同士を単純加算する処理でよい。
【００８１】
なお、露光時間Tの期間において時分割露光した画像を、一旦、バッファメモリ424にバッファリングした後、ステップ1201以降の処理を行えばよい。しかし、時分割露光を行いながら、振り分けパターンの生成、振り分け、振り分け後の合成処理、振れ量の検出を行ってもよい。
【００８２】
このように、時分割露光した画像を振り分けパターンに基づき振り分けることで、撮影画像と動き情報を同時に取得し、コード化露光と同等の振れ補正処理を実現する。さらに、二つのコード化露光処理を並行して行い、露出の不足を補い、画質低下を防ぐことができる。とくに、動き情報検出部426がない、あるいは、動き情報検出部426はあってもその出力を利用できない場合でも、手振れ等による画像の暈けを補正することができる。
【００８３】
また、画像の変位が少ない場合、つまり振れが小さい場合は、時分割露光した各画像を合成用画像に選択し易い振り分けパターンを作成することで、画質を向上させることができる。
【００８４】
●振り分けバターンの作成
振り分けパターンは、予め用意した何種類かのパターンを保持しておいてもよいし、また、被写体や撮影モードに応じて撮影ごとに作成してもよい。ただし、振り分けパターンは、周波数特性が0にならないよう周期性をもたないことが必須である。また、周期が撮影時間に比べ充分に長いことが望ましい。このような振り分けパターンの作成には、例えば、周期の非常に長いことで知られているメルセンヌ・ツイスタのような疑似乱数生成方法を用いることが考えられる。
【００８５】
上述するように、上記の振れ補正処理おいて正しく補正を行うには、振り分けパターンは周期性をもたないことが必須である。例えば、撮像サイズと同じサイズの畳み込みを行う場合、当該サイズに相当する数値列において、周期的なパターンが生じないようにする必要がある。従って、振れ補正部428は、ランダムな振り分けパターンを作成する。
【００８６】
ただし、ランダムな振り分けパターンの場合、低周波成分を多く含む画像について、擬似輪郭が発生する場合がある。そのため、全押し状態（スイッチ(SW2)406が閉）になった後、最初に取得した画像を解析し、当該画像が含む低周波成分に応じて振り分けパターンを決定してもよい。
【００８７】
例えば、図10に示すように、時分割露光された六枚の画像があり、二、三、五枚目を合成用画像、一、四、六枚目を動き検出用画像にする場合、振り分けパターンh(t)={0, 1, 1, 0, 1, 0}になる。上述したように、このh(t)を動き情報で除算すればPSFであるh'(θ)を得ることができる。
【００８８】
図13は振り分けパターンの作成を説明するフローチャートである。
【００８９】
振れ補正部428は、露光条件生成部427から時分割露光される画像の数nを取得する(S1301)。そして、一枚目の画像は動き検出用画像として振り分けパターンに‘0’を設定し(S1302)、画像数nをデクリメントする(S1303)。
【００９０】
次に、振れ補正部428は、画像数nが1か否かを判定し(S1304)、n=1の場合は、最後の画像は動き検出用画像として振り分けパターンに‘0’を設定し(S1305)、振り分けパターンの作成を終了する。
【００９１】
一方、n＞1の場合、振れ補正部428は、乱数Rを発生し(S1306)、乱数Rと振り分けパターンの値が‘1’になる確率をPを比較する(S1307)。そして、R≧Pの場合は合成用画像として振り分けパターンに‘1’を設定し(S1308)、R＜Pの場合は動き検出用画像として振り分けパターンに‘0’を設定し(S1309)、処理をステップ1303に戻す。なお、確率Pは例えば50%に設定するが、上述したように、画像の変位が少ない場合は、時分割露光した各画像を合成用画像に選択し易い振り分けパターン、つまり確率Pを高く設定して振り分けパターンを作成してもよい。
【００９２】
このように、時分割露光の開始時と終了時の画像は動き検出用画像に、その他の画像は確率Pに応じて合成用画像にそれぞれ振り分けることで、周期性がない振り分けパターンを作成することができる。
【００９３】
なお、上記の処理によって作成した振り分けパターンを第一の処理に適応し、反転した振り分けパターンを第二の処理に適用することは言うまでもない。
【００９４】
●動き情報の生成
振れ補正部428が動き検出用画像から検出する動き情報は、水平方向の変位（以下、水平振れ）、垂直方向の変位（以下、垂直振れ）、回転方向の変位（以下、回転振れ）を示す。振れ補正部428は、まず、水平振れと垂直振れを検出し、次に、回転振れを検出する。これは、手振れの特性から回転振れよりも、水平振れと垂直振れの方が大きいと予想されるためである。なお、動き情報検出部426の出力を利用して、カメラの振動を打ち消すように撮影レンズ200や撮像デバイス418を駆動して水平振れと垂直振れを補正する場合は、水平振れと垂直振れの検出は不要である。
【００９５】
図14は動き情報の生成を説明するフローチャートである。
【００９６】
振れ補正部428は、注目する動き検出用画像（以下、注目画像）をm×n画素のブロックに分割する(S1401)。そして、ブロックごとに直前の動き検出用画像（以下、前画像）に対する動きベクトルを算出する(S1402)。注目ブロックに対応する前画像のブロック（以下、前ブロック）を、その中心から±S画素の範囲で移動して、注目ブロックと前ブロックの類似度を計算する。そして、最も類似度が高い移動後の前ブロックの中心と、注目ブロックの中心を結ぶベクトルを動きベクトルとする。類似度は、例えば、注目ブロックの各画素の画素値と、前ブロックの各画素の画素値の平均二乗誤差の逆数とする。
【００９７】
そして、例えば、各ブロックの動きベクトルの水平成分の平均値を水平振れ、各ブロックの動きベクトルの垂直成分の平均値を垂直振れとして算出する(S1403)。続いて、算出した水平振れと垂直振れ分、注目画像を移動して、水平方向と垂直方向の位置を前画像に一致させ(S1404)、回転振れを算出する(S1405)。つまり、注目画像を回転して、注目画像の画素と、対応する前画像の画素の間の差分を計算し、複数の画素の差分の平均値が最小になる角度を回転振れとして算出する。
【００９８】
このように、時分割露光によって撮影した画像群から、周期性をもたない振り分けパターンに基づき合成用画像と動き検出用画像を選択し、合成用画像を単純に合成処理して合成画像を生成する。また、動き検出用画像から動き情報を生成する。そして、振り分けパターンおよび動き情報を用いて、合成画像に好適な振れ補正を施すことができる。
【００９９】
さらに、振れ補正における画像合成においては、画像の位置合わせや画像の変形などの処理が不要であり、処理負荷を低減することができる。また、動き検出用画像から動き情報を検出することができ、ジャイロセンサなどのハードウェアを追加することなく振れ補正を行うことができる。
【０１００】
●振れ補正画像の統合
二つのコード化露光処理によって得られる二つの補正した撮像データを合成する統合処理は、撮像データの同座標の画素データ同士を単純加算する処理でよい。これは、二つの振り分けパターンが互いに反転パターンであるからである。
【０１０１】
このように、時分割露光によって撮影した画像群から、周期性をもたない振り分けパターンに基づき合成用画像と動き検出用画像を選択し、合成用画像を単純に合成処理して合成画像を生成する。また、動き検出用画像から動き情報を生成する。そして、振り分けパターンおよび動き情報を用いて、合成画像に好適な振れ補正を施すことができる。
【０１０２】
また、振れ補正における画像合成においては、画像の位置合わせや画像の変形などの処理が不要であり、処理負荷を低減することができる。また、動き検出用画像から動き情報を検出することができ、ジャイロセンサなどのハードウェアを追加することなく振れ補正を行うことができる。
【０１０３】
さらに、互いに反転パターンである振り分けパターンを用いる二つのコード化露光処理を行って得られる補正後の撮像データを合成することで、露出の不足を補い、ノイズ増加などの画質低下を防ぐことができる。
【実施例２】
【０１０４】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１０５】
実施例1では、互いに反転パターンである振り分けパターンを用いる二つのコード化露光処理によって振れを補正し、かつ、露出不足を補った撮像データを得る方法を説明した。しかし、反転パターンに限らず、複数の異なる振り分けパターンを用いるコード化露光処理によって、より振れの補正精度が高い撮像データを得ることが可能である。
【０１０６】
図15は実施例2の振れ補正部428の処理の概要を説明する図である。
【０１０７】
図15には三つの振り分けパターンを用いる例を示すが、振り分けパターンは三つに限らず、二つの異なるパターンを用いてもよいし、四つ以上のパターンを用いてもよい。また、振り分けパターンの中には、他の振り分けパターンの反転パターンを含んでもよい。
【０１０８】
各コード化露光処理は実施例1と同様であるが、振り分けパターンによる時分割露光した画像の振り分けと、補正後の撮像データ（補正画像）の合成方法が異なる。
【０１０９】
三つの振り分けパターンが‘1’を示す割合がそれぞれ50%の場合、三つの補正画像を単純に加算する統合処理を行うと、露光量は1.5倍相当になり、露光過多になる。そこで、振り分けパターンに応じて、各画素値を補正する必要がある。つまり、三つの補正画像の各画素を加算し、加算後の画素値を1/1.5(=2/3)倍する統合処理を行う。一般化すれば、加算後の画素値を、各振り分けパターンが‘1’を示す割合の和（各割合の総和）で除算する統合処理を行えばよい。これにより、補正画像を合成した後の露光量を適正にすることができる。なお、振り分けパターンの‘1’は、前述したように、合成用画像への分配を示す。
【実施例３】
【０１１０】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１１１】
上記の実施例においては、時分割露光した画像のうち合成画像として採用しない画像（動き検出用画像）から動き情報を取得する例を説明した。しかし、動き情報は、時分割露光された画像のすべてから検出してもよい。
【０１１２】
図16は実施例3の振れ補正部428の処理の概要を説明する図である。このように、合成用画像は振り分けパターンに従い選択するが、動き検出用画像は選択せずに、時分割露光した画像のすべてを動き検出用画像にする。
【０１１３】
図16には、実施例1と同様に互いに反転パターンである振り分けパターンを用いる例を示すが、実施例2と同様に、複数の異なる振り分けパターンを利用してもよい。
【実施例４】
【０１１４】
以下、本発明にかかる実施例4の画像処理を説明する。なお、実施例4において、実施例1〜3と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１１５】
上記の実施例においては、時分割露光した画像の一部または全部を動き検出用画像として、動き情報を取得する例を説明した。しかし、動き情報の取得は、画像から取得する方法に限られるわけではない。例えば、動き情報検出部426に三次元ジャイロや三次元加速度センサなどを備えて、撮影中のカメラボディ100の移動量を検出して動き情報にしてもよい。
【０１１６】
図17は実施例4の振れ補正部428の処理の概要を説明する図である。このように、合成用画像は振り分けパターンに従い選択し、動き情報は動き情報検出部426から取得する。このようにすれば、動き検出用画像からの動き情報を生成する処理が不要になり、高速かつ高精度に動き情報を得ることができる。
【０１１７】
図17には、実施例1と同様に互いに反転パターンである振り分けパターンを用いる例を示すが、実施例2と同様に、複数の異なる振り分けパターンを利用してもよい。
【０１１８】
本発明の目的は、次のようにしても達成される。上記実施例の機能または先に説明したフローチャートを実現するコンピュータプログラムを記録した記録媒体または記憶媒体をシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（CPUやMPU）に前記コンピュータプログラムを実行させる。この場合、記録媒体から読み出されたソフトウェア自体が上記実施例の機能を実現することになり、そのコンピュータプログラムと、そのコンピュータプログラムを記憶する、コンピュータが読み取り可能な記録媒体は本発明を構成する。
【図１】
2010273142.tif 000003
【図２】
2010273142.tif 000004
【図３】
2010273142.tif 000005
【図４】
2010273142.tif 000006
【図５】
2010273142.tif 000007
【図６】
2010273142.tif 000008
【図７】
2010273142.tif 000009
【図８】
2010273142.tif 000010
【図１０】
2010273142.tif 000011
【図１１】
2010273142.tif 000012
【図１２】
2010273142.tif 000013
【図１３】
2010273142.tif 000014
【図１４】
2010273142.tif 000015
【図１５】
2010273142.tif 000016
【図１６】
2010273142.tif 000017
【図１７】
2010273142.tif 000018
【図９】
2010273142.tif 000019