図1は本発明の実施例1に係る撮像装置を示す構成図である。101はデジタルカメラ等の撮像装置、102は撮像光学系である。103は撮像光学系102に含まれる補正レンズであり、手振れ等の振れによる像振れを補正するために光軸104に垂直な平面内で移動させられる。105はレンズ鏡筒、106は撮像光学系102により結像された被写体像を光電変換する撮像素子、107はメモリである。108は振れ検出部であり、詳細は後述する。109は補正レンズ103の駆動を制御する振れ補正用制御部、110は電源、111はレリーズ釦である。
撮像装置101は、撮像光学系102と不図示のピント調節部を用いて、被写体像を撮像素子106近傍に結像させる。そして、ユーザーによるレリーズ釦111の操作に同期させて、撮像素子106から画像信号を検出し、メモリ107に記録する。また、振れ補正モードの場合には、露光期間中に振れ検出部108からの信号に基づいて振れ補正用制御部109が補正レンズ103を光軸104に垂直な平面内で移動させることによって、手振れ等による像振れを補正する。なお、振れ補正モードのON/OFFは振れ補正スイッチ211によって設定される。
図2は、撮像装置101の電気的構成を示すブロック図である。撮像装置101は、例えば、撮像系、画像処理系、記録再生系、制御系で構成される。
撮像系は、撮像光学系102および撮像素子106を含む。画像処理系は、A/D変換器201、画像処理部202を含む。記録再生系は、記録処理部203、メモリ107を含む。制御系は、カメラシステム制御部205、AF(オートフォーカス)センサ206、AE(自動露出)センサ207、振れ検出部108、操作検出部210、レンズシステム制御部209、および、補正レンズ103の位置を検出する位置検出センサ204を含む。また、レンズシステム制御部209は、補正レンズ103を駆動する振れ補正用制御部109および後述の光量落ち補正量算出部306を含む。
撮像系は、物体からの光を撮像光学系102を介して撮像素子106の撮像面に結像する光学処理系であり、AEセンサ207の信号に基づいて、図示しない絞りなどを用いて、適切な光量の物体光を撮像素子106に導く。画像処理部202は、A/D変換器201を介して撮像素子106から受けた該撮像素子106の画素数に対応する画像信号を処理するものである。この画像処理部202は、ホワイトバランス(AWB)回路、ガンマ補正回路、補間演算による高解像度化を行う補間演算回路等を有し、さらに、後述の図3に示す光量落ち補正量算出部306からの出力を基に輝度値の補正を行う。
記録処理部203は、メモリ107への画像信号の出力を行うと共に、表示部215に出力する像を生成し、保存する。また、記録処理部203は、動きベクトル検出部310へ画像信号を出力する。さらに、記録処理部203は、公知の方法を用いて画像や動画の圧縮を行う。
213はレリーズ釦111の半押しでONするスイッチSW1であり、該スイッチSW1のONにより、AF処理、AE処理、AWB処理、EF(フラッシュプリ発光)処理等の撮影準備動作が開始される。214はレリーズ釦111の全押しでONするスイッチSW2であり、該スイッチSW2のONにより以下の一連の撮影動作が開始される。ここで、一連の撮影動作とは、撮像素子106から読み出された信号がA/D変換器201を介してメモリ107に画像データを書き込む露光処理、画像処理部202での演算を用いた現像処理を含む。さらには、メモリ107から画像データを読み出し、圧縮し、記録媒体に画像データを書き込む記録処理を含む。このスイッチSW1,SW2の状態は操作検出部210により検出される。
カメラシステム制御部205は、操作検出部210での検出信号に応答して各部を制御し、撮影の際のタイミング信号などを生成して出力する。AFセンサ206は撮像光学系102のピント状態を検出し、AEセンサ207は被写体の輝度を検出し、振れ検出部108は手振れ等の振れを検出するものである。
カメラシステム制御部205にはAFセンサ206とAEセンサ207が接続されている。これらからの信号を基に、カメラシステム制御部205がレンズシステム制御部209に対して、撮像光学系102のズーミング、フォーカシング、露光制御を行うことを指示する。
レンズシステム制御部209には振れ補正用制御部109が具備されており、該振れ補正用制御部109に振れ検出部108が接続されている。振れ補正用制御部109は、振れ補正スイッチ211によって振れ補正モードが設定されると、振れ検出部108からの信号に基づいて補正レンズ103の駆動目標位置を算出し、補正レンズ103を駆動する。また、振れ補正ゲイン調整スイッチ212によって振れ補正ゲインの調整を行うモードが設定されると、動きベクトル検出部310の振れ出力と振れ検出部108の振れ出力に基づいて振れ補正ゲインの調整を行う。なお、振れ補正スイッチ211および振れ補正ゲイン調整スイッチ212による設定状態は、カメラシステム制御部205を介して、レンズシステム制御部209に通知される。すると、レンズシステム制御部209から振れ補正開始信号が振れ補正用制御部109へ通知される。また、216はライブ画像表示スイッチであり、表示部215でライブ画像を表示するか否かを決定するものである。
次に、レンズシステム制御部209内の振れ補正用制御部109の構成について、図3を用いて説明する。
図2の振れ検出部108を構成する振れセンサ301として、本実施例ではジャイロを用いている。該振れセンサ301で検出された手振れ等の振れ出力(角速度信号)は、所定の周波数以上の信号を通過させるHPF(ハイパスフィルタ)302を通過した後、振れ補正用制御部109内のA/D変換部303に入力される。そして、該A/D変換部303にて画像更新周期よりも十分に短い周期でアナログ信号からデジタル信号へ変換され、増幅器304へ入力されるとともに、フィルタ部311にも入力される。
増幅器304ではデジタル信号として入力された振れ出力にあらかじめ決定された振れ補正ゲインとして設定された値を乗算し、駆動目標位置算出部305へ出力する。増幅器304で乗算される値、すなわち振れ補正ゲインは、一定の振れが撮像装置に加わった際に、増幅器304の出力が所定の値となるように予め決定されている値である。駆動目標位置算出部305では角速度として扱ってきた振れ出力を角度信号に変換し、手振れ等の振れをキャンセルするために必要な補正レンズ移動量、すなわち駆動目標位置を算出し、レンズ位置制御部306へ出力する。
レンズ位置制御部306では、駆動目標位置および位置検出センサ204にて検出された補正レンズ103の位置信号に基づいて、該補正レンズ103の位置が駆動目標位置と一致するような駆動信号をドライブ部307へ出力する。これにより、ドライブ部307にて補正レンズ103が駆動信号に基づいて手振れ等の振れをキャンセル方向に移動させることになる。
撮像部308は図2に示すように撮像素子106とA/D変換器201を含むものであり、撮像素子106からの信号を読み出し、A/D変換器201を介して画像処理部309に画像データを一定周期で出力する。画像処理部309では、動きベクトルの検出に必要となる画像データを動きベクトル検出部310へ出力する。動きベクトル検出部310では、1フレーム前の画像データを保持しており、現在のフレームの画像データと1フレーム前の画像データのずれを算出することにより動きベクトルを検出し、振れ補正ゲイン決定部312へ出力する。
振れ補正ゲイン決定部312では、動きベクトル検出部310にて算出された動きベクトルと、フィルタ部311にてデジタルフィルタリング処理(後述の図8の処理)された振れ出力との相関値を算出する。そして、前回の相関値と比較して振れ補正ゲインを決定し、増幅器304へ振れ補正ゲインを出力する。振れ補正ゲインの調整に関する詳細は、図9のフローチャートを用いて後述する。
上記の説明においては、補正レンズ103の移動(駆動)方向につき、1軸を対象に1系統分説明したが、実際には補正レンズ103は撮像光学系102の光軸104に対して垂直な面内で移動する。したがって、平面内の2軸で移動させるためには2系統分必要となり、本実施例においても2系統有するものとする。
次に、補正レンズ103および該補正レンズ103を駆動するドライブ部307を含む振れ補正ユニットについて、図4を用いて説明する。図4は、撮像光学系102の一部の光学系である補正レンズ103を光軸104と垂直な平面内で移動させる機構を概略的に示す図である。
図4(a)において、401は補正レンズ103を保持する可動枠、403は鏡筒に取り付けられた固定部材、404は可動枠401上の支持/案内部、405は支持/案内部404と同軸に取り付けられたバネである。また、406a,406bは固定部材403に取り付けられたコイル、407a,407bは可動枠401に取り付けられたマグネットである。
図4(b)は、図4(a)に示した振れ補正ユニットの右側面図である。図4(b)において、410,412は図4(a)には不図示のヨークである。411は、可動枠401の位置、詳しくは補正レンズ103の位置を検出するホール素子であり、図2および図3に示した位置検出センサ204に相当する。
図4(c)は、図4(a)の矢印402方向から見た図である。可動枠401は支持/案内部404によって固定部材403に対して平面運動可能に案内支持されている。図4(c)では、長円形の案内溝413の中に円形の支持/案内部404が挿入されている。3箇所とも同一の構造とすることによって、撮像光学系102の光軸104の方向には拘束され、上記したように光軸104と垂直な平面上で移動させることができる。
可動枠401上には、補正レンズ103および駆動用のマグネット407a,407bが取り付けられている。また、可動枠401は支持/案内部404と同軸に取り付けられたバネ405によって弾性支持されており、駆動力が発生していないときは補正レンズ103の可動中心が光軸104に略一致するように配置されている。ドライブ部307は、図4(b)に示すように、マグネット407aの両側をヨーク410,412で挟み込み、片側にコイル406aを備えた構成をしている。
次に、ドライブ部307の作用について、図5を用いて説明する。図5(a),(b)は、図4(a)に示す点線408を断面として示す図である。
駆動用マグネット407aは2極で厚み方向に着磁されている。更に、マグネット407aの着磁方向の両側にはヨーク410,412が設けられており、多くの磁束は外に漏れることなく、図5(a)に示すような矢印方向の磁界を発生させている。この状態でコイル406aに通電すると、コイル406a上の領域501と502には、それぞれ反対方向の電流が流れる。一方、磁界の方向も反対であるため、フレミング左手の法則によって同一方向の力が発生する。このとき、コイル406aが固定されているため、作用反作用の法則によって可動部(可動枠401や補正レンズ103等により成る)に取り付けられたマグネット407aが力を受けて駆動する。
駆動力はコイル406aの電流に比例し、コイル406aに流す電流の向きを反対方向にすることによって、マグネット407aが受ける駆動力も反対にすることができる。駆動力が発生すると、可動枠401がバネ405によって弾性支持されているので、バネ力と釣り合う点まで変位する。つまり、コイル406aの電流を適切に制御することによって、可動部の位置を制御することができる。
ヨーク410上にはホール素子411が取り付けられており、図5(b)に示すように、コイル406aに電流を印加することにより発生した駆動力によってマグネット407aが変位すると、ホール素子411上の磁気バランスも変化する。そのため、ホール素子411の信号を得ることによって、マグネット407aの位置、つまり可動部の位置、詳しくは補正レンズ103の位置を検出することが可能となる。
図4および図5では、可動枠401側にマグネット407aを配置し、固定部材403側にコイル406aを配置したムービングマグネット方式での実施例を示している。しかし、本実施例は、可動枠401側にコイル406aを配置し、固定部材403側にマグネット407aを配置したムービングコイル方式や、その他の駆動方式を用いた振れ補正ユニットを有する撮像装置についても適用可能である。
次に、上記構成における撮像装置の撮影動作について、図6のフローチャートを用いて説明する。なお、ユーザーの設定によって本実施例の動作の実行/不実行が選択可能となっているものとする。
まず、ステップS700にて、フレーム周期である33msecが経過しているか否かの判定を行い、経過していないならば直ちにステップS704へ進み、経過しているならばS702へ進む。33msecが経過しているとしてステップS702へ進むと、ライブ画像処理を実行する。このライブ画像処理の詳細については、図7のフローチャートを用いて後述する。ライブ画像を終了したならばステップS704へ進む。
ステップS704では、振れ補正スイッチ211がONかOFFかの判定を行い、OFFであれば直ちにステップS708へ進む。また、ONであればステップS706へ進み、像振れ補正処理を実行する。この像振れ補正処理の詳細については、図11のフローチャートを用いて後述する。像振れ補正処理にて、表示部215に被写体像を逐次表示させることによりユーザーに被写体像を確認させながら撮影前に構図を決めさせることができるが、このタイミングの間にも、逐次表示される被写体像に対して像振れ補正を行うことが可能である。像振れ補正処理の終了後はステップS708へ進む。
次のステップSS708では、スイッチSW1の状態を確認し、該スイッチSW1がOFFならばステップS700へ戻り、同様の動作を繰り返す。一方、スイッチSW1がONであればステップS710へ進み、測距・測光処理を実行する。この測距・測光処理の詳細については、図12のフローチャートを用いて後述する。
次のステップSS712では、スイッチSW2の状態を確認し、該スイッチSW2がOFFならばONするまでこのステップで待機する。その後、スイッチSW2がONするとステップS714へ進み、撮影処理を実行する。この撮影処理の詳細については、図13のフローチャートを用いて後述する。撮影処理を終えたならば、再びステップS700へ戻る。
次に、図6のステップS702にて実行されるライブ画像処理について、図7のフローチャートにしたがって説明する。
ステップS800では、振れ補正スイッチ211の状態を確認し、OFFであればステップS806へ進む。一方、振れ補正スイッチ211がONであればステップS801へ進み、振れ補正ゲイン調整スイッチ212の状態を確認し、ONであればステップS805へ進み、OFFであればステップS806へ進む。
振れ補正スイッチ211および振れ補正ゲイン調整スイッチ212がONであるとしてステップS805へ進むと、以下の露光処理Aを実行する。なお、この露光処理Aは、振れ補正用制御部109が実行する。
ここで、上記ステップS805にて実行される露光処理Aについて、図8のフローチャートにしたがって説明する。
まず、ステップS300では、撮像素子106への露光を開始し、次のステップS302にて、ディレイタイマ1をスタートし、続くステップ304にて、ディレイタイマ2をスタートする。
次のステップS306では、上記ステップS300にて露光が開始されたフレーム画像が、第何番目のフレーム画像であるかの判定を行う。その結果、露光が開始されたフレーム画像が2k番目のフレーム画像であったならばステップS310へ進む。そして、このステップS310では、メモリ番地Mに保持されている2k−2番目のフレーム期間、及び、2k−1番目のフレーム期間において取得した振れ信号の累積値をゼロクリアし、ステップS312へ進む。
次のステップS312では、メモリ番地Mへの振れ信号の加算が行われている期間であるか否かを示すフラグMの状態を確認し、フラグMがセットされていたならば、メモリ番地Mへの振れ信号の加算が行われている期間であると判定してステップS320へ直ちに進む。一方、フラグMが解除されていたならば、メモリ番地Mへの振れ信号の加算が行われている期間ではないと判定し、ステップS314へ進む。
次のステップS314では、ディレイタイマ1が第1の所定時間を経過したか否かを判定し、第1の所定時間が経過していないならばステップS320へ進み、第1の所定時間が経過していたならばステップS316へ進む。ステップS316へ進むと、メモリ番地Mへの振れ信号の加算を開始する。次のステップS318では、メモリ番地Mへの振れ信号の加算を行っている期間であることを示すフラグMをセットする。なお、フラグMがセットされている間は、撮像素子106に対して露光がなされている、露光がなされていないとに拘わらず、振れ信号は、A/D変換部303を介して画像更新周期よりも十分に短い周期でフィルタ部311に対して取り込まれる。そして、メモリ番地Mへの加算が継続されるものとする。
上記ステップS318を終了する、または、上記ステップS314でディレイタイマ1が第一の所定時間を経過していないと判定した場合、または、上記示テップS312でフラグMがセットされていたと判定した場合は、何れもステップS320へ進む。そして、ステップS320では、メモリ番地Nへの振れ信号の加算が行われている期間であるか否かを示すフラグNの状態を確認し、フラグNが解除されていたならば、メモリ番地Nへの振れ信号の加算が既に終了していると判定し、直ちにステップS330へ進む。また、フラグNがセットされていたならば、メモリ番地Nへの振れ信号の加算がまだ終了していないと判定し、ステップS322へ進む。
ステップS322へ進むと、ディレイタイマ2が第2の所定時間を経過したか確認し、第2の所定時間が経過していないならば直ちにステップS330へ進む。また、第2の所定時間が経過していたならばステップS324へ進み、メモリ番地Nへの振れ信号の加算を終了する。
次のステップS326では、メモリ番地Nの値、すなわち、第2k番目のフレーム画像の露光が開始された時刻より第1の所定時間を経過した時刻から、第2k+1番目のフレーム画像の露光が終了した時刻より第2の所定時間が経過した時刻までの時間に取得された振れ出力(振れ信号)の加算値より、その期間における振れ出力(振れ信号)の平均値ωaveを算出する。そして、次のステップS328にて、メモリ番地Nへの振れ信号の加算を行っている期間であることを示すフラグNを解除する。
上記ステップS328を終了する、または、ステップS322でディレイタイマ2が第2の所定時間を経過していないと判定した場合、または、ステップS320でフラグNが解除されていると判定した場合は、何れの場合もステップS330へ進む。
次のステップS330では、フラグMがセットされているか、または、フラグNが解除されているかを判定し、その結果に応じてステップS312もしくはステップS370へ進む。すなわち、メモリ番地Mへの振れ信号の加算が未だ開始されていないか、メモリ番地Nへの振れ信号の加算が未だ終了されていないか、のいずれかであったならば、ステップS312へ戻る。そして、上記ステップS312〜330の動作を繰り返す。一方、フラグMがセットされ、かつ、フラグNが解除されている、すなわち、メモリ番地Mへの振れ信号の加算が開始され、かつ、メモリ番地Nへの振れ信号の加算が終了されていたならば、後述するステップS370へ進む。
また、上記ステップS306にて、上記ステップS300で露光が開始されたフレーム画像が2k+1番目のフレーム画像であったならば、ステップS340へ進む。そして、このステップS340では、メモリ番地Nに保持されている2k−1番目のフレーム期間、及び、2k番目のフレーム期間において取得した手振れ信号の累積値をゼロクリアし、ステップS342へ進む。
次のステップS342では、メモリ番地Nへの振れ信号の加算が行われている期間であるか否かを示すフラグNの状態を確認し、フラグNがセットされていたならば、メモリ番地Nへの振れ信号の加算が行われている期間であると判定し、直ちにステップS350へ進む。また、フラグNが解除されていたならば、メモリ番地Nへの振れ信号の加算が行われている期間ではないと判定し、ステップS314へ進む。
次のステップS314では、ディレイタイマ1が第1の所定時間を経過したか確認する。その結果、第1の所定時間が経過していないならば直ちにステップS350へ進み、第1の所定時間が経過していたならばステップS346へ進む。
ステップS346へ進むと、メモリ番地Nへの振れ信号の加算を開始する。そして、次のステップS348にて、メモリ番地Mへの振れ信号の加算を行っている期間であることを示すフラグNをセットする。なお、フラグNがセットされている間は、撮像素子106に対して露光がなされている、露光がなされていないに拘わらず、振れ信号は、A/D変換部303を介して画像更新周期よりも十分に短い周期でフィルタ部311に対して取り込まれる。そして、メモリ番地Nへの加算が継続されるものとする。
上記ステップS348を終了する、または、ステップS344でディレイタイマ1が第1の所定時間を経過していないと判定した場合、または、上記ステップS342でフラグNがセットされていたと判定した場合、何れの場合もステップS350へ進む。
ステップS350では、メモリ番地Mへの振れ信号の加算が行われている期間であるか否かを示すフラグMの状態を確認し、フラグMが解除されていたならば、メモリ番地Mへの振れ信号の加算が既に終了していると判定し、直ちにステップS360へ進む。また、フラグMがセットされていたならば、メモリ番地Mへの振れ信号の加算が行われている期間であると判定し、ステップS352へ進む。
ステップS352では、ディレイタイマ2が第2の所定時間を経過したか確認し、第2の所定時間が経過していないならばステップS360へ進む。また、第2の所定時間が経過していたならばステップS354へ進み、メモリ番地Mへの振れ信号の加算を終了する。
次のステップS356では、メモリ番地Mの値、すなわち、第2k+1番目のフレーム画像の露光が開始された時刻より第1の所定時間を経過した時刻から、第2k+2番目のフレーム画像の露光が終了した時刻より第2の所定時間が経過した時刻までの時間に取得された振れ出力(振れ信号)の累積値より、その期間における振れ出力(振れ信号)の平均値ωaveを算出する。そして、次のステップS358にて、メモリ番地Mへの振れ信号の加算を行っている期間であることを示すフラグMを解除する。
上記ステップS358を終了する、または、ステップS352でディレイタイマ2が第二の所定時間を経過していないと判定した場合、または、上記ステップS350でフラグNが解除されていると判定した場合は、何れの場合もステップS360へ進む。
ステップS360では、フラグNが解除されているか、または、フラグMがセットされているか否か判定し、その結果に応じてステップS342もしくはステップS370へ進む。すなわち、メモリ番地Nへの振れ信号の加算が未だ開始されていないか、または、メモリ番地Mへの振れ信号の加算が未だ終了されていないかのいずれかであったならば、ステップS342へ進み、ステップS342〜S360の動作を繰り返す。一方、フラグMがセットされ、かつ、フラグNが解除されている、すなわちメモリ番地Mへの振れ信号の加算が開始され、かつ、すなわちメモリ番地Nへの振れ信号の加算が終了されていたならばステップS370へ進む。
上記ステップS330もしくはステップS360からステップS370へ進むと、所定の露光時間が経過したか否かを判定する。この結果、露光時間が経過していないならばこのステップS371へ進み、振れ検出周期(250μsec)が経過しているか否かを判定する。振れ検出周期が経過していなければ経過するまでこのステップで待機し、その後、振れ検出周期が経過するとステップS370へ戻り、所定の露光時間が経過するまで同様な処理を繰り返す。
上記ステップS370にて所定の露光期間が経過したことを判定するとステップS372へ進み、撮像素子106への露光を終了する。露光処理Aを終了すると、図7のステップS810へ進む。
上記の露光処理Aにより、フレーム画像毎に、第2k番目のフレーム画像の露光が開始された時刻より第1の所定時間が経過した時刻から第2k+1番目のフレーム画像の露光が開始された時刻より第2の所定時間が経過した時刻までの期間における振れ出力(振れ信号)の平均値と、第2k+1番目のフレーム画像の露光が開始された時刻より第1の所定時間が経過した時刻から第2k+2番目のフレーム画像の露光が開始された時刻より第2の所定時間が経過した時刻までの期間における振れ出力(振れ信号)の平均値を交互に出力することができる。
また、第1の所定時間をゼロ、及び、第2の所定時間を露光時間に一致した時間に設定することによって、請求項4で示すような、第2k番目のフレーム画像の露光が開始された時刻から第2k+1番目のフレーム画像の露光が終了した時刻までの期間における振れ出力(振れ信号)の平均値と、第2k+1番目のフレーム画像の露光が開始された時刻から第2k+2番目のフレーム画像の露光が終了した時刻までの期間における振れ出力(振れ信号)の平均値を、交互に出力することができる。
図7のフローチャートに戻り、次のステップS810では、ライブ画像表示スイッチ216の状態を確認し、ONであればステップS811へ進み、画像処理Aを行う。この画像処理Aでは、表示部215に表示するための画像と動きベクトル検出に用いるための画像の生成処理を行う。その後はステップS812へ進み、表示部215に画像を表示する。続くステップS813では、2k番目のフレーム画像と2k+1番目のフレーム画像の差分より、または、2k+1番目のフレーム画像と2k+2番目のフレーム画像の差分より動きベクトルMVの算出を行う。
上記ステップS811で抽出する画像情報としては、画像全体を抽出してもよいし、画像の一部を抽出してもよい。また、画像を幾つかのエリアに分割して、その分割された小エリアでそれぞれ画像情報を比較し、動きベクトルを算出し、その中から最適な動きベクトルを算出してもよい。動きベクトルの算出方法としては一つに限定されない。
上記ステップS813の後はステップS830へ進み、振れ補正ゲインの調整処理を実行する。この振れ補正ゲインの調整処理の詳細については、図9のフローチャートを用いて後述する。そして、このライブ画像処理を終了する。
また、上記ステップS810にてライブ画像表示スイッチ216の状態がOFFであると判定した場合は上記したようにステップS815へ進み、画像処理Bを実行する。この画像処理Bでは、表示部215に表示するための画像は生成せずに、動きベクトルの算出のみを行う。その後はステップS816へ進み、動きベクトルの算出を行う。そして、ステップS830へ進み、振れ補正ゲインの調整処理を実行する。
ここで、上記ステップS830にて実行される振れ補正ゲインの調整処理(振れ補正ゲイン決定部312の動作)について、図9のフローチャートにしたがって説明する。
まず、ステップS502では、図7のステップS805(図8のステップS310)にて取得した露光期間中における振れ出力の平均値ωaveと、上記ステップS813にて算出した動きベクトルMVより、振れ補正ゲインの調整値ΔGを算出する。この振れ補正ゲインの調整値ΔGは以下の(1)式
ΔG=MV/ωave ………(1)
より算出される。
なお、MV/ωaveが正の値であれば、動きベクトルの方向と、実際に発生している手振れの方向が一致していることを示す。また、MV/ωave が負の値であれば、動きベクトルの方向と実際に発生している手振れの方向が反対方向であることを意味する。振れ補正ゲインの調整値ΔG(MV/ωave)がa<0であるaの値よりも小さいということは、手振れの方向とは反対の方向に動きベクトルを発生している場合である。
次のステップS504では、振れ補正ゲインの調整値ΔGと所定の値a,b(a<0、a<b、0<b)とを比較する。この結果、振れ補正ゲインの調整値ΔGが所定の値bよりも大きいと判定した場合はステップS506へ進む。そして、ステップS506にて、振れ補正ゲイン候補値Gxを
Gx=G+α・ΔG ………(2)
の(2)式で示すように、現在の振れ補正ゲインGに対して振れ補正ゲインの調整値ΔGに対して所定の係数αを積算した値を加算した値とする。そして、ステップS512へ進む。
また、上記ステップS504にて、振れ補正ゲインの調整値ΔGが所定の値a以上、かつ、所定の値b以下であると判定した場合はステップS508へ進む。そして、ステップS508にて、振れ補正ゲイン候補値Gxを
Gx=G ………(3)
の(3)式で示すように、現在の振れ補正ゲインGとする。そして、ステップS512へ進む。
また、上記ステップS504にて、振れ補正ゲインの調整値ΔGが所定の値aよりも小さいと判定した場合はステップS510へ進む。そして、ステップS510にて、振れ補正ゲイン候補値Gxを
Gx=G−β・ΔG ………(4)
の(4)式で示すように、現在の振れ補正ゲインGから振れ補正ゲインの調整値ΔGに対して所定の係数βを積算した値を減算した値とする。なお、所定の係数βは振れ補正ゲインをコントロールするため第2ゲイン係数であり、上記第1ゲイン係数αと別の値を設定することで、振れ補正ゲインGxを上げるときと、下げるときとでゲインコントロールの効き具合を調整できる。
上記のようにして、振れ補正ゲイン候補値Gxを決定することにより、振れ補正ゲインの調整値ΔGが正の値であるならば、実際の手振れと動きベクトルの方向が一致していることになる。よって、補正不足として判定でき、振れ補正ゲインを上げる役目を果たす。逆に、振れ補正ゲインの調整値ΔGが負の値であるならば、実際の手振れと動きベクトルの方向が一致していないことになる。よって、過補正と判定でき、振れ補正ゲインを下げる役目を果たす。振れ補正ゲインの調整値ΔGが正の値でなおかつ所定の値b以下ならば、補正不足ではあるが許容範囲であると判定する。さらに、調整値ΔGが負の値でなおかつa以上(絶対値は小さい)ならば、振れ補正が方向が反対方向となっているものの許容範囲内であると判定する。そして、振れ補正ゲインの調整を行わないことにより、最適ゲインに収束していくことができる。
上記ステップS506,S508またはステップS510の後はステップS512へ進む。そして、ステップS512にて、リアルタイムに振れ補正ゲインを更新するか否かの設定であるブレ補正ゲイン調整スイッチ212の状態を確認し、OFFであれば、振れ補正ゲインの調整処理が終了したとして、図6のステップS704に戻る。一方、振れ補正ゲイン調整スイッチ212がONしていればステップS514へ進み、振れ補正ゲインGを振れ補正ゲイン候補値Gxとして算出された値で更新する。そして、振れ補正ゲインの調整処理が終了したとして、図6のステップS704に戻る。
上記処理により、振れ検出部108の振れ出力と動きベクトルにより得られる振れ出力の時間的なずれを抑制し、なおかつ、温度変化、経時変化によらず、振れ補正ゲインの決定時に用いられる振れ出力の平均値を得ることができる。これにより、適正かつリアルタイムに振れ補正ゲインを得ることができる。
なお、振れ検出部108の振れ出力と動きベクトルにより得られる振れ出力の時間的なずれを抑制できるのは、以下の理由による。つまり、動きベクトルは、あるフレーム画像の露光開始の時刻からその次のフレーム画像の露光終了の時刻までに発生した手振れ等の振れに起因した画像ずれを生じる。このため、ある動きベクトルに対応した振れ信号をある時刻における振れ信号のみで表現すると、動きベクトルに含まれる振れ情報と、振れ検出センサから得られる振れ信号にはずれを生じることになり、ゲイン調整を正ししく行えなくなる。ある動きベクトルに対応した振れ信号として、フレーム画像の露光開始の時刻からその次のフレーム画像の露光終了の時刻までの振れ信号の平均値を用いることで、この時間的なずれを解消できる。
詳しくは、従来は、動きベクトルにて得られる振れ出力と振れ検出部108にて得られる振れ出力には時間的な差があり、これらの振れ出力の間において時間的な対応が取れずに適正な振れ補正量を得ることができなかった。これに対し、本実施例では、1フレーム目の露光が開始される時間から2フレーム目の露光が終了するまでの時間に発生した振れ出力の平均値を得るようにしている。さらに、画像の更新周期(図6のステップS700のYES)、および、露光時間の長さ(図8のステップS370のYES)に応じて時間遅れを発生させ、振れ出力の平均値を算出している。さらに、露光時間よりも十分に短い周期で振れ出力の取得を繰り返し、上記平均値を算出している。よって、これらの振れ出力の間において時間的な対応を取ることができ、適正かつリアルタイムに振れ補正ゲインを得ることができる。換言すれば、振れ補正ゲインの調整をリアルタイムに行うことができ、結果的に適正な振れ補正量を得ることが可能となる。なお、画像更新の周期に所定の倍率を掛けた時間だけ時間遅れを発生させ、振れ出力の平均値を算出するようにしてもよい。
再び図7のフローチャートに戻り、上記ステップS800にて振れ補正スイッチ211がOFF、または、上記ステップS801にて振れ補正ゲイン調整スイッチ212がOFFされていた場合は上記したようにステップS806へ進む。そして、ステップS806にて、露光処理Bを実行する。
ここで、上記ステップS806にて実行される露光処理Bについて、図10のフローチャートにしたがって説明する。
まず、ステップS400にて、撮像素子106への露光を開始する。そして、次のステップS406にて、所定の露光時間が経過したか否かの判定を行い、露光期間が経過していなければ経過するまでこのステップで待機する。その後、所定の露光時間が経過するとステップS408へ進み、撮像素子106への露光を終了し、露光処理Bを終了する。
上記露光処理Bが終了すると、図7のステップS820へ進む。そして、ステップS820では、ライブ画像表示フラグの判定を行い、ライブ画像表示フラグがセットされていなければ、このライブ画像処理を終了する。
また、上記ステップS820にてライブ画像表示フラグがセットされていたならばステップS821へ進み、画像処理Cを実行する。画像処理Cでは、動きベクトル検出に用いるための画像の生成処理は行わず、表示部215に表示するための画像のみの生成処理を行う。その後はステップS821へ進み、表示部215に画像を表示し、このライブ画像処理を終了する。
次に、図6のステップS706にて実行される像振れ補正処理について、図11のフローチャートにしたがって説明する。
まず、ステップS851にて、振れ検出部108の出力を読み込む。そして、次のステップS852にて、上記ステップS851にて取得した振れ出力(振れ信号)に対して、図9のステップS514で決定される振れ補正ゲインGを掛けることによって算出される値を振れ補正量として算出する。続くステップS853では、上記ステップS852で算出された振れ補正量を積分することにより、補正レンズ103の駆動目標位置を算出する。
次のステップS854では、位置センサ204より補正レンズ103の現在位置を読み込む。そして、次のステップS855にて、補正レンズ103の駆動目標位置と現在位置の偏差をもとに補正レンズ103の位置制御を行うための制御量を決定し、ドライブ部307へ出力する。続くステップS856では、ステップS855で決定された制御量に基づいて補正レンズ103を駆動する。
次に、図6のステップS710にて実行される測距・測光処理について、図12のフローチャートを用いて説明する。
まず、ステップS201では、カメラシステム制御部205は、A/D変換部201を介して撮像素子106から電荷信号を読み出し、A/D変換部201を介して画像処理部202に撮影画像データを逐次読み込ませる。この逐次読み込まれた画像データを用いて、画像処理部202はTTL(スルー・ザ・レンズ)方式のAE(自動露出)処理、EF(フラッシュプリ発光)処理、AF(オートフォーカス)処理に用いる所定の演算を行っている。なお、ここでの各処理は、撮影した全画素数のうちの必要に応じた特定の部分を必要個所分切り取って抽出し、演算に用いている。これにより、TTL方式のAE,EF,AWB,AFの各処理において、中央重点モード、平均モード、評価モードの各モード等の異なるモード毎に最適な演算を行うことが可能となる。
次のステップS202では、カメラシステム制御回路205は、画像処理部202での演算結果を用いて露出(AE)が適正か否かを判定する。適正でない場合はステップSS203へ進み、AE制御を行う。そして、次のステップS204にて、AE制御で得られた測定データを用いてフラッシュ(ストロボ発光)が必要か否かを判定する。この結果、フラッシュが必要ならばフラッシュフラグをセットし、次のステップS205にて、フラッシュ充電(ストロボ発光に必要なメインコンデンサへの充電)を行い、ステップS201へ戻り、以下同様の動作を繰り返す。
その後、上記ステップS202にて露出(AE)が適正であることを判定すると、カメラシステム制御回路205は、測定データ及び或いは設定パラメータを内部メモリ或いはメモリ107に記憶する。そして、次のステップS206にて、画像処理部202での演算結果及びAE制御で得られた測定データを用いて、ホワイトバランス(AWB)が適正か否かを判定する。適正でない場合はステップS207へ進み、画像処理部202を用いて色処理のパラメータを調節してAWB制御を行う。そして、ステップS201へ戻り、以下同様の動作を繰り返す。
上記ステップS206にてホワイトバランス(AWB)が適正であることを判定すると、カメラシステム制御回路205は、測定データ及び或いは設定パラメータをカメラシステム制御回路205の内部メモリ或いはメモリ107に記憶する。そして、次のステップS208にて、AE制御及びAWB制御で得られた測定データを用いて、測距(AF)が合焦か否か判定する。合焦でなければステップS209へ進み、レンズシステム制御部209を用いてAF制御を行う。そして、ステップS201へ戻り、以下同様の動作を繰り返す。
その後、上記ステップS208にて合焦であることを判定したならば、カメラシステム制御回路205は、測定データ及び或いは設定パラメータを内部メモリ或いはメモリ107に記憶し、測距・測光処理ルーチンを終了する。
次に、図6のステップS714にて実行される撮影処理について、図13のフローチャートにしたがって説明する。
まず、ステップS900にて、カメラシステム制御部205により撮像素子106への被写体像の露光を開始する。そして、次のステップS902にて、露光時間を計測するタイマを起動するとともに、所定の露光時間が経過したかどうかを判定し、所定の露光時間が経過しなければこのステップで待機する。その後、所定の露光時間が経過するとステップS904へ進み、露光を終了する。
次のステップ906では、光電変換された画像信号を撮像素子106から読み出し、A/D変換器201でA/D変換されたデジタル信号を、画像処理部202により画像処理する。具体的には、公知のY補正、ホワイトバランス補正、圧縮処理等の画像処理を施し、画像ファイルを生成する。そして、次のステップS908にて、記録処理部203により、生成した画像ファイルをメモリ107に記録し、一連の撮影処理を終了する。