以下、添付図面に従って本発明に係る像振れ補正装置及びその補正方法の好ましい実施の形態について説明する。
図1は本発明が適用された撮像装置(デジタルカメラ)10の内部構成の実施の形態を示すブロック図である。
同図に示すように、本実施の形態のデジタルカメラ10は、撮影光学系12、CCD等の固体撮像素子からなるメージセンサ14(以下「CCD」という)、タイミングジェネレータ(TG)16、アナログ信号処理部18、A/D変換器20、画像入力コントローラ22、デジタル信号処理部24、エンコーダ28、画像表示部30、圧縮・伸張処理部32、メディアコントローラ34、記憶メディア36、オートエクスポージャ(AE)検出部38、オートフォーカス(AF)検出部40、中央処理装置(CPU)42、ROM44、RAM46、フラッシュROM48、操作部50、フラッシュ装置52、及び角速度センサー70等から構成されている。
尚、操作部50は、シャッタボタン、電源スイッチ、撮影/再生モード選択スイッチ、バックスイッチ、メニュー/OKスイッチ、及びマルチファンクションの十字キー等を含んで構成されており、シャッタボタンは、2段ストロークのボタンで、半押し時にONしてAF、AE等の撮影準備を行わせるスイッチS1と、全押し時にONして画像の取り込みを行わせるスイッチS2とを有している。
デジタルカメラ10の全体の動作は、CPU42によって統括制御されており、CPU42は操作部50からの入力に基づき所定のプログラムに従ってデジタルカメラ10の各部を制御する。
ROM44には、このCPU42が実行するプログラムの他、プログラム線図等の各種制御に必要なデータが格納されている。CPU42は、このROM44に格納されたプログラムをRAM46に展開し、RAM46を作業メモリとして使用しながら各種処理を実行する。また、フラッシュROM48には、ユーザ設定情報等のデジタルカメラ10の動作に関する各種設定情報等が格納されている。
撮影光学系12は、ズームレンズ12z、フォーカスレンズ12f、絞り(例えば、虹彩絞り)12iを含み、それぞれズームモータ60z、フォーカスモータ60f、アイリスモータ60iに駆動されて作動する。即ち、ズームレンズ12zは、ズームモータ60zに駆動されて撮影光軸上を前後移動し、これにより、焦点距離を変化させる。また、フォーカスレンズ12fは、フォーカスモータ60fに駆動されて撮影光軸上を前後移動し、これにより結像位置を変化させる。また、絞り12iは、アイリスモータ60iに駆動されて開口量が連続的、又は段階的に変化し、これにより絞り値を変化させる。CPU42は、ズームモータドライバ62z、フォーカスモータドライバ62f、アイリスモータドライバ62iを介してズームモータ60z、フォーカスモータ60f、アイリスモータ60iの駆動を制御し、ズームレンズ12z、フォーカスレンズ12f、絞り12iの動作を制御する。
CCD14は、所定のカラーフィルタ配列(例えば、ハニカム配列)のカラーCCDで構成されている。撮影光学系12を介してCCD14の受光面に入射した光は、その受光面に配列された各フォトダイオードによって入射光量に応じた量の信号電荷に変換される。そして、各フォトダイオードに蓄積された信号電荷は、タイミングジェネレータ(TG)16から加えられるタイミング信号に従って読み出され、電圧信号(画像信号)としてCCD14から順次出力される。
尚、このCCD14は、シャッタゲートとシャッタドレインを備えており、シャッタゲートにシャッタゲートパルスを印加することで各フォトダイオードに蓄積された信号電荷をシャッタドレインに掃き出すことができるようにされている。CPU42は、TG16を介してシャッタゲートへのシャッタゲートパルスの印加を制御することにより、各フォトダイオードに蓄積される信号電荷の電荷蓄積時間(いわゆる電子シャッタによるシャッタ速度)を制御する。
アナログ信号処理部18は、CDS回路及びアナログアンプを含み、CDS回路は、TG16から加えられるCDSパルスに基づいてCCD出力信号を相関二重サンプリング処理し、アナログアンプは、CPU42から加えられる撮影感度に応じて設定されたゲインによってCDS回路から出力される画像信号を増幅する。A/D変換器20は、このアナログ信号処理部18から出力されたアナログの画像信号をデジタルの画像信号(画像データ)に変換する。
画像入力コントローラ22は、所定容量のバッファメモリを内蔵しており、A/D変換器20から出力された画像データを1コマ分蓄積して、RAM46に格納する。
デジタル信号処理部24は、ホワイトバランス補正回路、ガンマ補正回路、同時化回路、輪郭補正回路、輝度・色差信号生成回路等を含み、CPU42からの指令に従ってRAM46に格納された画像データを処理し、輝度信号と色差信号とからなるYUV信号を生成する。
画像表示部30にスルー画像を表示させる場合は、CCD14で画像を連続的に撮像し、得られた画像データを連続的に処理してYUV信号を生成する。生成されたYUV信号は、RAM46を介してエンコーダ28に加えられ、表示用の信号形式に変換されて画像表示部30に出力される。これにより、画像表示部30にスルー画像が表示される。
画像を記録する場合は、シャッタボタンからの撮影指令に応じてCCD14で画像を撮像し、得られた画像データを処理してYUV信号を生成する。生成されたYUV信号は、圧縮・伸張処理部32に加えられ、所定の圧縮画像データ(例えば、JPEG)とされたのち、メディアコントローラ34を介して記憶メディア36に格納される。
尚、詳細を後述するように、画像を記録する場合において、像振れ補正機能がオンされている場合には、像振れ補正の処理が行われるようになっており、この場合、シャッタボタンからの撮影指令によって複数コマ分の画像が連続してCCD14で撮像され、それらの複数コマ分の画像データがRAM46に一時的に格納される。そして、それらの画像データがCPU42に読み込まれ後述の像振れ補正処理が施される。このとき、取得した複数コマの画像データの合成により1コマ分の画像データが生成され、RAM46に格納される。そして、RAM46に格納された画像データが上記のようにデジタル信号処理部24で処理されることによってYUV信号が生成され、圧縮・伸張処理部32によって所定の圧縮画像データとされたのち、メディアコントローラ34を介して記憶メディア36に格納されるようになっている。
記憶メディア36に格納された圧縮画像データは、再生指令に応じて記憶メディア36から読み出され、圧縮・伸張処理部32で非圧縮のYUV信号とされたのち、エンコーダ28を介して画像表示部30に出力される。これにより、記憶メディア36に記録された画像が画像表示部30に再生表示される。
AE検出部38は、シャッタボタンの半押し時においてCPU42から与えられる指令に従い、そのときCCD14により撮像されてRAM46に取り込まれた画像データからAE制御に必要な物理量を算出する。たとえば、AE制御に必要な物理量として、1画面を複数のエリア(例えば、8×8)に分割し、分割したエリアごとにR、G、Bの画像データの積算値を算出する。CPU42は、このAE検出部38から得た積算値、及び画像データ取得時の絞り値、シャッタ速度に基づいて被写体の明るさを検出して最適な露出が得られるEV値を求め、求めたEV値とプログラム線図等に基づいて、シャッタボタンが全押しされて画像を記録する際の適正な絞り値とシャッタ速度(CCD14における適正な露光時間)を決定する。
AF検出部40は、シャッタボタンの半押し時においてCPU42から与えられる指令に従い、そのときCCD14により撮像されたRAM46に取り込まれた画像データからAF制御に必要な物理量を算出する。本実施の形態のデジタルカメラ10では、画像のコントラストによりAF制御を行うものとし、AF検出部40は、画像データから画像の鮮鋭度を示すAF評価値を算出する。CPU42は、このAF検出部40で算出されるAF評価値が極大となるように、フォーカスモータドライバ62fを介してフォーカスモータ60fを駆動し、フォーカスレンズ12fの移動を制御する。
フラッシュ装置52は、キセノン管を含むフラッシュ発光部54と、CPU42からの発光指令及び発光停止指令によってフラッシュ発光部54から発光させるフラッシュの発光量(発光時間)の制御や、図示しないメインコンデンサの充電制御を行うフラッシュ制御部56とを有している。
このフラッシュ装置52は、低輝度時に自動的に発光させるオートフラッシュ、強制発光フラッシュ、赤目軽減フラッシュ、フラッシュ発光禁止、スローシンクロ等のフラッシュモードのうちの選択されたフラッシュモードに応じて動作する。
以下、上記デジタルカメラ10で適用される像振れ補正に関する処理について説明する。図2は、像振れ補正を行うための像振れ補正装置としての構成を機能ブロックで示した概略構成図であり、図1と共に適宜参照して以下説明を行う。
本デジタルカメラ10では像振れ補正機能を所定のスイッチ操作によって有効(オン)/無効(オフ)にすることができるようになっている。像振れ補正機能がオンされている場合において、シャッタボタンが全押しされて撮影指令を受けると、CPU42は、AE検出部38により決定されたシャッタ速度(露光時間)となるように、TG16を介してCCD14における各フォトダイオードの電荷蓄積時間(露光時間)を制御して画像を撮像すると共に、同一の露光時間で複数コマ分の画像を連続して撮像する。
ここで、連続して撮像する画像のコマ数及び各画像の撮像時における露光時間は、特定の場合に限らない。例えば、上記のようにAE検出部38で決定された適正な露光時間での撮像処理を予め決められた回数分連続して繰り返すことによって、予め決められたコマ数分の画像を撮像する態様が考えられる。本実施の形態ではこの態様により1コマ分の画像の記録時において3コマ分の画像を撮像するものとして以下の説明を行う。但し、1コマ分の画像の記録時において3コマ分ではなく2コマ分又は4コマ分以上の画像を撮像するようにしてもよい。
また、他の実施の形態として、AE検出部38において得られた最適な露光時間(T)に対して、撮像する画像のコマ数(N)で露光時間Tを割ったときの値(T/N)を、各コマの画像の撮像時における露光時間としてもよい。撮像する画像のコマ数(N)は、例えば、最適な露光時間(T)を、所定のコマ数(自然数n)で等分割したときの露光時間の値(T/n)が、予め決められた最小露光時間(Tmin)よりも大きくなるという条件を満たすようなコマ数(n)のうち最大となる値(N)として決めることも可能である。
本実施の形態において、CCD14により順次撮像された3コマ分の画像データは、上記のようにアナログ信号処理部18、A/D変換器20、及び、画像入力コントローラ22を介してRAM46に一時的に格納される。本処理は、図2に示した構成図において撮影光学系12及びCCD14により撮像された3コマ分の画像の画像データが1次記憶手段100に記憶されることに相当し、1次記憶手段100は、図1のRAM46により具体化される手段である。
一方、CPU42は、上記のようにCCD14での撮像処理が行われている撮像期間中における手振れ等による像振れ量の検出を以下のようにして行っている。本デジタルカメラ10には角速度センサー70が設置されている。その角速度センサー70から出力された角速度信号はCPU42に読み込まれ、CPU42において、その角速度信号に対して積分等の処理が施される。これによってカメラの振れ量を示す振れ信号が生成される。尚、角速度センサー70は、左右方向の角速度と上下方向の角速度を検出する2つの角速度センサーからなり、それらの角速度信号によって、左右方向と上下方向の振れ信号が生成される。
また、本デジタルカメラ10においてズームレンズ12zにはその位置を検出するポテンショメータ(図示せず)が連結されている。そのポテンショメータから出力されたズーム位置信号はCPU42に読み込まれ、CPU42において、そのズーム位置信号と上記振れ信号とに基づいてCCD14の撮像面上における像振れ量(上下方向と左右方向の像振れの大きさ)が算出される。即ち、CCD14の撮像面上における像振れ量は、カメラの振れ量と、撮影光学系12の焦点距離とによって決まるため、撮影光学系12の焦点距離の情報としてズームレンズ12zの位置を示すズーム位置信号が取得され、そのズーム位置信号と振れ信号とから像振れ量が算出される。
図2の構成図において、ズーム位置の検出は、レンズ情報検出手段102によって行われる。像振れ量検出手段104には、そのレンズ情報検出手段102によって検出されたズーム位置信号と、角速度センサー70からの角速度信号とが与えられ、それらの情報に基づいて像振れ量検出手段104により像振れ量が検出(算出)される。像振れ量検出手段104は、図1のCPU42の演算処理によって具体化される手段である。
尚、像振れ量の算出は角速度信号の読込みと同時に撮像期間中に逐次行っても良いが、撮像期間中に得られる角速度信号やズーム位置信号を記憶しておくことによって、角速度信号から振れ信号を生成する処理や、ズーム位置信号及び振れ信号から像振れ量を算出する処理を撮像期間後に行うようにしてもよい。また、角速度信号から振れ信号を生成する処理だけ、角速度信号の読込みと同時に撮像期間中に行うようにしてもよい。
また、像振れ量の検出は、角速度センサーを用いる場合に限らず、例えば画像撮影用と異なる別系統の撮像系を用いて撮像した画像から検出してもよいし、その他の手段を用いて検出してもよい。
CCD14による撮像処理が終了して、図1におけるRAM46に3コマ分の画像データが蓄積されると、それらの画像データがCPU42に読み込まれる。CPU42は、読み込んだ3コマ分の画像データに対して以下の像振れ補正処理を施す。図2の構成図において、像振れ補正演算手段106は、図1におけるCPU42により具体化される手段であり、その像振れ補正演算手段106が、1次記憶手段100に記憶されている3コマ分の画像データを読み込むと共に、像振れ量検出手段104により検出された像振れ量を読み込むことによって像振れ補正処理が行われる。
像振れ補正処理は、3コマ分の各画像データに対する重み付け変換処理と画素ずらし合成処理とからなり、最初に各コマの画像データに対して重み付け変換処理が施され、その後、重み付け変換処理が施された各コマの画像データを用いて画素ずらし合成処理が施されるようになっている。
まず、重み付け変換処理について図3、図4を用いて説明する。図3において、RAM46から読み込まれた1コマ分(例えば1コマ目)の画像が元画像150として例示されており、その元画像150において、今、着目している画素(着目画素)とその周辺部の8つの画素からなる3×3の画素群152が抽出して示されている。3×3の画素群152において、中央の画素が着目画素152Aである。
重み付け変換処理では、その3×3の画素群152に対して3×3のフィルタ(重み付けテーブル154)が用意され、その重み付けテーブル154を用いた重み付け平均が求められる。例えば、画素群152の各画素値(輝度値)を同図に示すようにa1、a2、a3、b1、b2、b3、c1、c2、c3(着目画素の画素値はb2)とし、重み付けテーブル154の各要素の値をA1、A2、A3、B1、B2、B3、C1、C2、C3(An、Bn、Cn:n=1〜3)とすると、次式により重み付け平均Tが求められる。
そして、これにより求められた重み付け平均Tが着目画素152Aの重み付け変換後の画素値b2′(=T)となる。
一方、重み付けテーブル154の各要素の値は、CCD14において元画像150を撮像した際の撮像期間(露光期間)中の像振れ量(像振れ量の変化)に基づいて設定される。即ち、元画像150の撮像開始時(露光開始時)において着目画素152Aに結像していた像点が撮像終了時(露光終了時)までに移動した軌跡及び各画素に存在していた時間の長さに基づいて設定される。例えば、その像点が各画素に存在している時間の割合いに比例して大きな値となるように各画素に掛け合わされる重み付けテーブル154の各要素の値が決定される。露光期間中の像振れ量は上記のように角速度センサー70からの角速度信号とズーム位置信号(撮影光学系12の焦点距離)とに基づいて算出される。
元画像150の露光期間中における像振れ量に基づいて着目画素152Aの像点が例えば図4(A)に示す軌跡のように移動した場合に、その像点が各画素に存在する時間の割合いに応じて重み付けテーブル154の各要素の値が同図(B)のような値に設定される。
CPU42では、元画像150の周縁部1画素分以外の全ての画素を順に着目画素として上記の重み付け変換処理が順次行われ、元画像150の画像データが重み付け変換画像の画像データとして変換される。そして、同様の重み付け変換処理がRAM46に格納されている3コマ分の画像データの全てに対して行われる。このとき、重み付けテーブルの各要素の値は、各画像データの露光期間中に検出された像振れ量に基づいて各コマの画像データごとに設定される。
続いて、画素ずらし合成処理について図5、図6を用いて説明する。上記のようにCCD14により撮像された3コマ分の画像データの重み付け変換処理が終了すると、CPU42は図5に示すようにそれらの3コマ分の重み付け変換画像150A〜150Cの画像データから画素ずらし合成処理により、記録用の1コマ分の合成画像160Aを生成する。
そこで、CPU42は、図6(A)に示すように1コマ目の重み付け変換画像150Aに対して原点を設定する。原点は画像上の任意の点に設定することが可能であるが、本実施の形態では画像の中央位置を原点として設定する。
そして、1コマ目の重み付け変換画像150Aに対して2コマ目の重み付け変換画像150B及び3コマ目の重み付け変換画像150Cの像振れによる横方向及び縦方向のずれ量(変位量)を検出する。このずれ量は、上記のように角速度センサー70からの角速度信号(及び撮影光学系12の焦点距離)により検出される像振れ量から得られる。例えば、1コマ目の画像の撮像(露光)開始時において検出された像振れ量を0とした場合に、それに対して、2コマ目の画像の撮像開始時において検出された像振れ量が2コマ目の重み付け変換画像150Bのずれ量となる。3コマ目の重み付け変換画像150Cのずれ量も同様である。このようにして1コマ目の重み付け変換画像150Aに対する2コマ目の重み付け変換画像150B及び3コマ目の重み付け変換画像150Cのずれ量が得られると、それらのずれ量分だけ画像を反対方向にずらして1コマ目から3コマ目までの重み付け変換画像150A〜150Cを合成する。
具体的には次のような処理を行う。図6(A)において、まず、1コマ目の重み付け変換画像150Aに対して、画像の中心位置を原点とする2次元座標(横方向をX、縦方向をY)を想定し、各画素に2次元座標を割り当てるものとする。一方、同図(B)の2コマ目の重み付け変換画像150B及び同図(C)の3コマ目の重み付け変換画像150Cに対しては、上記のように得られたずれ量(像振れ量)に従って原点の位置を画像の中心位置から変位させる。例えば、1コマ目の重み付け変換画像150Aに対して2コマ目の重み付け変換画像150Bが、X方向にΔX、Y方向にΔY分だけずれたとすると、原点の位置も同じように画像の中心位置からX方向にΔX、Y方向にΔYだけ変位させる。そして、その新たな原点の位置での座標系によって各画素に2次元座標を割り当てる。図6(B)、(C)において、2コマ目の重み付け変換画像150Bと3コマ目の重み付け変換画像150Cに対して破線で示した枠Fは、各画像のずれ量(像振れ量)に応じて変更された新たな原点での2次元座標において、1コマ目の重み付け変換画像150Aの各画素と同一座標値が割り当てられる画素の範囲を示し、1コマ目の画像と同一画角の画像が得られる範囲を示している。
これによって、1コマ目から3コマ目までの重み付け変換画像150A〜150Cにおいて、同一物点に対する像点の位置(画素)は、同じ座標値となる。そこで、それらの1コマ目から3コマ目までの重み付け変換画像150A〜150Cにおいて、同一座標値の画素の画素値を加算平均する。これによって、同図(D)のように同一物点の像点が重なるようにして各コマの重み付け変換画像が重ね合わせられ、記憶メディア36に記録するための1コマ分の合成画像が生成される。
ここで、同図(D)の太枠(補正可能範囲160)で示すように3コマ分の重み付け変換画像150A〜150Cが重なり合う画素範囲と、2コマ分又は他と画像と全く重ならない画素範囲とが生じる。本実施の形態では、例えば、3コマ分の重み付け変換画像が重なり合う補正可能範囲160の画像のみを像振れ補正された合成画像160Aとして扱うものとし、その補正可能範囲160の中から実際に記憶メディア36に記録する画像サイズの画像を切り出す。尚、この画像の切出しの処理については詳細を後述する。
また、本実施の形態では、各コマの画像は、各々が適正な明るさとなる露光時間で撮像されたものであるため、重み付け変換画像150A〜150Cの各画素の画素値を加算平均(加算して3分の1)することによって適正露光の1コマ分の合成画像を得るようにしている。ただし、複数コマの画像から1コマ分の合成画像を生成する場合にどのような合成処理を行うかはこれに限らない。例えば、適正な明るさとなる露光時間を分割して複数コマの画像を撮像した場合には、各コマの画像の各画素の画素値を単に加算することによって合成画像が生成される。また、各コマの画像に信号増幅等の処理が施された場合には、各画素の画素値を加算平均又は加算して得られた合成画像に輝度調整の処理が施される。即ち、各コマの画像の合成は、各画素の画素値を加算する処理と、これによって得られた合成画像の輝度を適切にする処理とによって行われるが、輝度を適切にする処理は各コマの画像を取得する条件や各コマの画像に施された処理内容に応じて異なる。
図7は、上記の画素ずらし合成処理の処理手順を示したフローチャートである。まず、CPU42は、1コマ目の重み付け変換画像(以下、単に画像という)の原点を設定する(ステップS10)。例えば上記のように1コマ目の画像の中心位置を原点とする。次に、2コマ目及び3コマ目の画像の露光開始時における像振れ量を角速度センサー70からの角速度信号(及び撮影光学系12の焦点距離)に基づいて算出する(ステップS12)。続いて、その像振れ量により2コマ目及び3コマ目の画像の原点を上記のように決定し、1コマ目から3コマ目までの画像の原点の位置合せを行う(ステップS14)。そして、1コマ目から3コマ目までの画像の加算平均を求めることによって1コマ分の合成画像を生成する(ステップS16)。
以上のようにして像振れ補正処理が施されて得られた1コマ分の合成画像の画像データは、CPU42からRAM46に出力される。そして、像振れ補正を行わない場合と同様に、その画像データがデジタル信号処理部24でYUV信号に変換され、続いて、圧縮・伸張処理部32によって所定の圧縮画像データとされたのち、メディアコントローラ34を介して記憶メディア36に格納される。図2においては像振れ補正演算手段106によって像振れ補正処理が施されて得られた1コマ分の合成画像の画像データは、記憶手段108に記録されるようになっており、記憶手段108は記憶メディア36によって具体化される手段を示している。
次に、上記像振れ補正処理についてより詳細な実施の形態及び他の実施の形態について説明する。
まず、像振れ補正処理における重み付け変換処理の実施の形態に関して説明する。上記実施の形態では、像振れ補正処理における重み付け変換処理は、図3のように3×3の画素群152に対して3×3の重み付けテーブル154を用いて着目画素の画素値を重み付け変換するようにしたが、任意の要素数n×m(n,mは自然数)の画素群と重み付けテーブルとで重み付け変換処理を行うことができる。
また、各コマの画像の撮像時におけるシャッタ速度が遅くなる程、即ち、露光時間が長くなる程、露光期間内での像振れ量が増大することを考慮して、重み付け変換処理に使用する画素群の範囲を大きくし、その画素群と重み付けテーブルの要素数を多くすると好適である。例えば、露光時間が所定のしきい値以上の場合には、5×5の画素群と重み付けテーブルとで重み付け変換処理を行い、露光時間がそのしきい値未満の場合には、上記実施の形態のように3×3の画素群と重み付けテーブルとで重み付け変換処理を行うことが考えられる。この場合の重み付け変換処理の例を図8に示すと、例えば、露光時間が1/60秒よりも短い場合には、同図(A)に示すように上記実施の形態で示したのと同様に3×3の画素群152及び重み付けテーブル154により重み付け平均を求めることによって、着目画素152Aの重み付け変換後の画素値b2′を算出する。
一方、露光時間が1/60秒以上の場合には、同図(B)に示すように5×5の画素群152及び重み付けテーブル154により重み付け平均を求めることによって、着目画素152Aの重み付け変換後の画素値b2′を算出する。同図のように5×5の画素群152の各画素値をa1〜a5、b1〜b5、c1〜c5、d1〜d5、e1〜e5(着目画素の画素値はc3)とし、重み付けテーブル154の各要素の値をA1〜A5、B1〜B5、C1〜C5、D1〜D5、E1〜E5(An、Bn、Cn、Dn、En:n=1〜5)とすると、次式により重み付け平均Tが求められる。
そして、これにより求められた重み付け平均Tが着目画素152Aの重み付け変換後の画素値C3′となる。
5×5の重み付けテーブル154においても各要素の値は、上記実施の形態で説明した3×3の重み付けテーブルの各要素の値と同様に設定される。即ち、着目画素152Aに結像していた像点が撮像終了時(露光終了時)までに各画素に存在している時間の割合いに比例して大きな値となるように、各画素に掛け合わされる重み付けテーブル154の各要素の値が決定される。
尚、露光時間が極めて短い場合、例えば、露光時間が1/250秒未満の場合には、各コマの画像の露光期間中での像振れ量が極めて小さいため重み付け変換処理を行わずに画素ずらし合成を行うようにすると好適である。
図9は、各コマの画像の露光時間に対して重み付け変換処理での画素群及び重み付けテーブルの要素数の選択手順を示したフローチャートである。CPU42は、AE検出部38の情報により各コマの画像を撮像するときの適正なシャッタ速度(露光時間)を設定すると(ステップS30)、その露光時間が1/60秒以上か否かを判定する(ステップS32)。YESと判定した場合には、重み付け変換処理における画素群及び重み付けテーブルの要素数を5×5とする(ステップS34)。一方、ステップS32においてNOと判定した場合には、続いて露光時間が1/250秒以上か否か判定する(ステップS36)。YESと判定した場合には、重み付け変換処理における画素群及び重み付けテーブルの要素数を3×3とする(ステップS38)。ステップS36においてNOと判定した場合には、重み付け変換処理を行わないものとする。
次に、像振れ補正処理における画素ずらし合成処理に関する実施の形態について説明する。
図6で示したように、画素ずらし合成の際に3コマ分の重み付け変換画像150A〜150Cをずらした場合に、それらの3コマ分の重み付け変換画像150A〜150Cが重なり合う画素範囲は、像振れが生じた分、各コマの重み付け変換画像の全画素範囲の一部(太線で示した補正可能範囲160)に縮小される。一方、各コマの重み付け変換画像150A〜150Cは、CCD14の撮像面全体によって撮像される画像と同サイズであり、記憶メディア36に実際に記録される画像(記録画像)よりも大きな画像サイズ(画素数)となっている。これによって、補正可能範囲160の合成画像160Aの画像サイズは、通常、記録画像の画像サイズよりも大きく、補正可能範囲160の合成画像160Aから記録画像が切り出される。
尚、像振れ補正処理において、CCD14により連続して撮像された各コマの画像を重み付け変換することなく、画素ずらし合成する場合であっても像振れ補正として有効である。従って、本明細書における画素ずらし合成処理も、画素ずらし合成する各コマの画像が重み付け変換した重み付け変換画像であっても重み付け変換していない画像であっても適用可能であるものとし、以下において、画素ずらし合成する各コマの画像が重み付け変換画像であっても単に画像という。
記録画像の切出し範囲は、図10(A)に示すように1コマ目の画像150Aの中心位置を中心として四角形状の範囲170に設定される。即ち、CCD14の撮像面(受光面)全体から得られる1コマ目の画像150A全体に対して中央に記録画像の切出し範囲が設定される。尚、この切出し範囲170を記録予定範囲170というものとする。図6に示したように3コマ分の画像150A〜150Cを画素ずらし合成した場合に、図6(D)及び図10(B)のように3コマ分の画像150A〜150Cが重なり合う補正可能範囲160の合成画像160Aが生成される。このとき、図10(B)のように1コマ目の画像150Aに設定された記録予定範囲170がその補正可能範囲160に内包されている場合には、その記録予定範囲170の画像が記録画像として切り出される。
一方、各コマの画像の撮像時間(露光時間)が長くなると、コマ間での像振れ量が大きくなるため、補正可能範囲160が1コマ目の画像150Aの中心に対して大きく上下左右に変位し、又は、サイズが小さくなり、1コマ目の画像150Aの中心に設定された記録予定範囲170が補正可能範囲160に内包されなくなる場合がある。
図11はCCD14の撮像面180の全範囲を示しており、画素ずらし合成の際に、1コマ目の画像150Aの中央位置に設定された記録予定範囲170に対応する各コマの画素範囲をCCD14の撮像面180上で示したものである。1コマ目の画像150Aの記録予定範囲170に対応する画素範囲は、CCD14の撮像面180上においても中央位置の画素範囲170Aに設定される。尚、CCD14の撮像面180においても1コマ目の画像と同様に中心位置を原点とし、横方向をX、縦方向をYとする2次元座標を想定している。
一方、2コマ目と3コマ目の画像150B、150Cの記録予定範囲170に対応する画素範囲は、それらの画像のずれ量(像振れ量)に対応して上下左右に変位し、CCD14の撮像面180上において中心位置からずれてそれぞれ画素範囲170B、170Cとなる。尚、画素範囲170B、170Cは、画素範囲170Aと一致する画角範囲の画像を撮像する範囲を示す。このとき、同図の画素範囲170Bに示すように像振れ量が大きくなると、記録予定範囲170に対応する2コマ目又は3コマ目の画素範囲がCCD14の撮像面180の範囲からはみ出す場合が生じる。この場合に、上記のように記録予定範囲170が補正可能範囲160に内包されなくなる。また、記録予定範囲170に対応する2コマ目又は3コマ目の画素範囲がCCD14の撮像面180の範囲から大きくずれると、補正可能範囲160の大きさが記録予定範囲170よりも小さくなるという場合が生じる。
このような場合には、主として1コマ目の画像150Aにおいて中央に設定される記録予定範囲170の位置を変更する方法、記録予定範囲170の大きさを変更する方法、記録予定範囲170を3コマ分(全コマ分)の画像150A〜150Cが重ね合わせられる補正可能範囲160内に制限しない方法が考えられる。
まず、記録予定範囲170の位置を変更する方法について説明する。図12(A)に示すように画素ずらし合成によって3コマ分の画像が重ね合わせられる補正可能範囲160に対して、1コマ目の画像150Aの中央に設定された初期の記録予定範囲170が内包されていない場合において、同図(B)に示すように記録予定範囲170を補正可能範囲160に内包される位置に変更する。このとき例えば、X方向及びY方向に最小の変化量となるような位置に変位すると好適であり、同図の場合、補正可能範囲160の右下の角に記録予定範囲170の右下の角の位置が合わせられている。
図13は、記録予定範囲170の位置を変更するCPU42での手順を示したフローチャートである。図7のフローチャートで説明したように、像振れ量(画像のずれ量)に基づいて2コマ目と3コマ目の画像の原点位置を中心位置からずらし、1コマ目から3コマ目の原点位置が一致するようにして画素ずらし合成を行うと、続いて、CPU42は、3コマ分の画像が重ね合わされた補正可能範囲160の4隅の座標値を算定する(ステップS20)。図14(A)に示すように1コマ目の画像150Aに対して中心位置を原点とするX−Y座標を想定した場合に、補正可能範囲160の左上隅、右上隅、右下隅、左下隅の各々の座標値(XC0,YC0)、(XC1,YC0)、(XC1,YC1)、(XC0,YC1)を算定する。
続いてCPU42は、1コマ目の画像150Aの中央に設定された標準の記録予定範囲170の4隅の位置が補正可能範囲160内か否かを判定する(ステップS22)。即ち、図14(A)に示すように初期の記録予定範囲170の左上隅、右上隅、右下隅、左下隅の各々の座標値を(X0,Y0)、(X1,Y0)、(X1,Y1)、(X0,Y1)とすると、X0≧XC0、Y0≧YC0、X1≦XC1、Y1≦YC1の全ての条件を満たすか否かを判定する。ここで、YESと判定した場合には記録予定範囲170が補正可能範囲160に内包されているため、記録予定範囲170の位置を変更することなく、その記録予定範囲170の画像を記録画像として切り出す(ステップS26)。
一方、ステップS22においてNOと判定した場合には、記録予定範囲170の4隅の位置が補正可能範囲160内となるように記録予定範囲170の位置を移動させる(ストップS24)。例えば、X0≧XC0、Y0≧YC0、X1≦XC1、Y1≦YC1の全ての条件を満たすようになる方向に記録予定範囲170を徐々に移動させていった場合にそれらの全ての条件を満たすようになった位置に記録予定範囲170を移動させる。これによって図14(B)のように記録予定範囲170が補正可能範囲160に内包される。そして、CPU42は、その変更した記録予定範囲170の画像を記録画像として切り出す(ステップS26)。
次に、記録予定範囲170の大きさを変更する方法について説明する。図15(A)に示すように画素ずらし合成によって3コマ分の画像が重ね合わせられる補正可能範囲160に対して、1コマ目の画像150Aの中央に設定された初期の記録予定範囲170が内包されていない場合において、同図(B)に示すように記録予定範囲170を補正可能範囲160に内包される大きさに縮小する。例えば、記録予定範囲170から切り出す記録画像の画像サイズは1600×1200画素、1280×960画素のように予め複数のサイズのものが規定され、それらの画像サイズのうちからユーザが所望の画像サイズを選択できるようになっている。そして、ユーザが選択した画像サイズにおいて、その画像サイズの記録画像を切り出す記録予定範囲170の大きさも変更されるようになっている。ユーザが選択した画像サイズに対応した大きさの記録予定範囲170を初期の記録予定範囲とすると、その初期の記録予定範囲170が補正可能範囲160に内包されない場合には、それよりも画素サイズに対応した記録予定範囲であって、且つ、記録予定範囲の中心を1コマ目の画像150Aの中心位置を変えることなく補正可能範囲160に内包される大きさの記録予定範囲のうち最大のものを新たな記録予定範囲170として変更する。
図16は、記録予定範囲170の大きさを変更するCPU42での手順を示したフローチャートである。図7のフローチャートで説明したように、像振れ量(画像のずれ量)に基づいて2コマ目と3コマ目の画像の原点位置を中心位置からずらし、1コマ目から3コマ目の原点位置が一致するようにして画素ずらし合成を行うと、続いて、CPU42は、3コマ分の画像が重ね合わされた補正可能範囲160の4隅の座標値を算定する(ステップS30)。図17(A)に示すように1コマ目の画像150Aに対して中心位置を原点とするX−Y座標を想定した場合に、補正可能範囲160の左上隅、右上隅、右下隅、左下隅の各々の座標値(XC0,YC0)、(XC1,YC0)、(XC1,YC1)、(XC0,YC1)を算定する。
続いてCPU42は、1コマ目の画像150Aの中央に設定された標準の記録予定範囲170の4隅の位置が補正可能範囲160内か否かを判定する(ステップS32)。即ち、図17(A)に示すように初期の記録予定範囲170の左上隅、右上隅、右下隅、左下隅の各々の座標値を(X0,Y0)、(X1,Y0)、(X1,Y1)、(X0,Y1)とすると、X0≧XC0、Y0≧YC0、X1≦XC1、Y1≦YC1の全ての条件を満たすか否かを判定する。ここで、YESと判定した場合には記録予定範囲170が補正可能範囲160に内包されているため、記録予定範囲170の大きさを変更することなく、その記録予定範囲170の画像を記録画像として切り出す(ステップS36)。
一方、ステップS32においてNOと判定した場合には、記録予定範囲170の4隅の位置が補正可能範囲160内となるように記録予定範囲170を規定の大きさに縮小する(ストップS34)。例えば、記録画像として記録可能な規定の画像サイズ1600×1200(画素)、1280×960(画素)、…が予め決まっており、それらの画像サイズを記録したテーブルが用意されている。CPU42はそのテーブルのデータを参照し、記録予定範囲170を規定の画像サイズに対応する大きさに変更する。そして、記録予定範囲170の大きさを中心位置を変えずに変更した場合に、X0≧XC0、Y0≧YC0、X1≦XC1、Y1≦YC1の全ての条件を満たす大きさのうち最も大きくなるものに記録予定範囲170を変更(縮小)する。これによって図17(B)のように記録予定範囲170が補正可能範囲160に内包される。そして、CPU42は、その変更した記録予定範囲170の画像を記録画像として切り出す(ステップS36)。
尚、記録予定範囲170が補正可能範囲160に内包されない場合に、上記のように記録予定範囲170の位置と大きさの両方を変更するものとし、変更された記録予定範囲170の大きさが補正可能範囲160に内包されるもののうち最も大きいものとなるように記録予定範囲170の位置及び大きさの両方を変更してもよい。
また、記録予定範囲170の大きさを上記のように初期に予定していた画像サイズに対応した大きさから変更(縮小)した場合、その縮小した記録予定範囲170から切り出した画像が初期に予定していた画像サイズと一致するように、切り出した画像を画素補間によって拡大するようにしてもよい。
次に、記録予定範囲170を3コマ分の画像150A〜150Cが重ね合わせられる補正可能範囲160内に制限しない方法について説明する。図18に示すように画素ずらし合成によって3コマ分の画像が重ね合わせられる補正可能範囲160に対して、1コマ目の画像150Aの中央に設定された記録予定範囲170が内包されていない場合において、補正可能範囲160内に制限されることなく記録予定範囲170の合成画像を生成する。
同図に示すように記録予定範囲170は、3コマ分の画像150A〜150Cが重なり合う範囲(即ち、補正可能範囲160)と、1コマ目と2コマ目又は1コマ目と3コマ目の2コマ分の画像が重なり合う範囲162、164と、1コマ目の画像150Aのみの範囲166とに分けられる。
各コマの画像150A〜150Cを画素ずらし合成する場合に、上記実施の形態で説明したように各コマの重なり合う画素(同一座標値の画素)の画素値の加算平均を求めて合成画像を生成する。このとき、3コマ分の画像が重なり合う補正可能範囲160に限らず、記録予定範囲170内の全ての画素について、各コマの重なり合う画素同士で画素値を加算する。そして、その加算した値を3で割って各画素の画素値の加算平均を求める。もし、記録予定範囲170が補正可能範囲160に内包される場合には、求めた画素値がそのまま合成画像(記録画像)の各画素の画素値となる。一方、図18のように2コマ分の画像が重なり合う範囲162、164や、1コマ分の画像のみの範囲166が生じる場合、範囲162、164内の画素の画素値は、上記のようにして求めた画素値を3/2倍した値とし、範囲166内の画素の画素値は、上記のようにしても求めた画像値を3倍にした値とする。これによって、記録予定範囲170内の合成画像の画素値が、重なり合うコマ数に応じた各コマの画素値の加算平均値となる。そして、その記録予定範囲170の画像を記録画像として使用する。
次に、フラッシュモードがスローシンクロモードに設定されている場合の像振れ補正処理(画素ずらし合成処理)について説明する。スローシンクロモードでは、フラッシュ装置52が点灯すると共に低速シャッタ(長時間露光)で撮影が行われる。この場合に1コマ分の画像を複数コマ分の画像に分けて撮像すると、フラッシュ点灯時に得られる画像と、フラッシュ消灯時に得られる画像とに分けられる。
また、撮像される画像(被写体)の中で、フラッシュの影響を受ける部分と受けない部分とがある。
たとえば、図19に示すように手前の人物Aと背景の夜景Bとをスローシンクロモードで撮影する場合、手前の人物Aは、フラッシュ消灯時に暗い画像として撮像されるのに対して、フラッシュ点灯時に明るい画像として撮影され、その輝度変化が大きいことからフラッシュ点灯の影響を受ける部分となる。一方、夜景Bは、フラッシュ点灯時とフラッシュ消灯時とで輝度変化が小さいためフラッシュ点灯の影響を受けない部分となる。
スローシンクロモードでの撮影を実行する際に(1コマの画像を記録する際に)、図20のように3コマの画像を連続して撮像するものとすると、フラッシュ装置52が点灯しているとき(フラッシュ点灯時)に撮像されたコマの画像(例えば1コマ目の画像150A)と、フラッシュ装置52が点灯していないとき(フラッシュ消灯時)に撮像されたコマの画像(例えば、2コマ目と3コマ目の画像150B、150C)とに分けられる。フラッシュ点灯の影響を受ける部分(人物Aの部分)は、フラッシュ点灯時に撮像されたコマの画像150Aにおいて明るい領域となり、フラッシュ消灯時に撮像されたコマの画像150B、150Cにおいて暗い領域となる。
フラッシュの影響を受ける領域において全てのコマの画像150A〜150Cを用いた画素ずらし合成を行った場合、フラッシュ消灯時における暗い画像の影響によってその領域が不要に暗くなるという不具合が生じる。
そこで、フラッシュ点灯時に撮像されたコマの画像と、フラッシュ消灯時に撮像されたコマの画像と比較し、所定値以上の輝度変化が生じている領域を検出することによって、フラッシュの影響を受ける領域を検出する。そして、そのフラッシュの影響を受ける領域については、フラッシュ点灯時に撮像されたコマの画像(1コマ目の画像)のみを使用し、フラッシュ発光の影響を受けない領域については、全てのコマの画像を使用して画素ずらし合成を行うものとする。
即ち、像振れ補正処理において、フラッシュの影響を受けない領域については、上記実施の形態と同様に重み付け変換処理及び画素ずらし合成処理を行う。一方、フラッシュの影響を受ける領域については像振れ補正処理を行わず、フラッシュ点灯時に撮像されたコマの画像(1コマ目の画像)からその領域の画像を抽出する。そして、各々の領域の画像を合成して合成画像を生成し、その合成画像から記録予定範囲の画像を切り出して記録画像とする。
図21は、スローシンクロモードでの撮影処理を示したフローチャートである。スローシンクロモードに設定されている場合に、シャッタボタンが全押しされて撮影指令を受けると、必要露光量により撮影コマ数を決定する(ステップS40)。そして、フラッシュ装置52を発光し、複数コマ分の画像を連続して撮影する(ステップS42)。続いて、各コマの画像のうち、フラッシュ点灯時に撮像された画像と、フラッシュ消灯時に撮像された画像の各々の輝度分布を検出し、それらを比較して所定値以上の輝度変化(輝度差)が生じている画素範囲をマスキング範囲として決定する(ステップS44)。即ち、フラッシュ点灯時とフラッシュ消灯時とで所定値以上の輝度差が生じている領域は、上記のようにフラッシュによって影響を受ける領域であり、その領域をマスキング範囲とする。
続いて、CPU42は、マスキング範囲以外の画像範囲に関して像振れ補正処理を行う(ステップS46)。像振れ補正処理は上述のように重み付け変換処理と画素ずらし合成処理とによって行う。尚、画素ずらし合成処理において各コマの画像の重なり合う画素の画素値を加算平均した値を合成画像の画素値とするのではなく、単に加算した値(総和値)を合成画像の画素値とすることが望ましい。
そして、CPU42は、マスキング範囲の画像をフラッシュ点灯時に撮影されたコマの画像から抽出すると共に、その抽出したマスキング範囲の画像と、ステップS46により像振れ補正処理されたマスキング範囲以外の画像とを合成(加算)して1コマ分の合成画像を生成すると共に、最適な輝度となるように輝度調整を行う(ステップS48)。このようして生成された合成画像から記録予定範囲の画像を記録画像として切り出し、記憶メディア36に記録する(ステップS50)。
尚、スローシンクロモードでの撮影時における本実施の形態の像振れ補正処理は、重み付け変換を行わずに画素ずらし合成処理のみを行う場合であっても有効である。
10…撮像装置(デジタルカメラ)、12…撮影光学系、12f…フォーカスレンズ、12z…ズームレンズ、14…CCD、16…タイミングジェネレータ(TG)、18…アナログ信号処理部、20…A/D変換器、22…画像入力コントローラ、24…デジタル信号処理部、28…エンコーダ、30…画像表示部、32…圧縮・伸張処理部、34…メディアコントローラ、36…記憶メディア、38…AE検出部、40…AF検出部、42…中央処理装置(CPU)、44…ROM、46…RAM、48…フラッシュROM、50…操作部、52…フラッシュ装置、70…角速度センサー、100…1次記憶手段、102…レンズ情報検出手段、104…像振れ量検出手段、106…像振れ補正演算手段、108…記憶手段、150…元画像、152…画素群、160…補正可能範囲、170…記録予定範囲