図3は、本発明の実施例1にかかる撮像装置としてのレンズ一体型のカメラの構成を示すブロック図である。カメラ100は、被写体からの光を結像させる撮影光学系である撮影レンズユニット101を備えている。撮影レンズユニット101は、主レンズ102、焦点距離を変更可能なズームレンズ103、焦点調節を行う不図示のフォーカスレンズを含む。さらに、撮影レンズユニット101は、光軸と直交する方向に移動することにより被写体像のブレを光学的に補正するシフトレンズ104を含む。シフトレンズ104は、ユーザがカメラ100をパンニングにより向きを変化させながら動く被写体を撮影する流し撮り撮影時に、被写体像のブレを低減する流し撮りアシストのために光軸に対して直交する方向に移動(シフト)可能である。撮影レンズユニット101に含まれる主レンズ、ズームレンズ、フォーカスレンズ、シフトレンズは、それぞれ少なくとも1つ以上のレンズで構成されている。また、カメラ100は、ズームレンズ103の位置を検出するズームエンコーダ105、シフトレンズ104の位置を検出する位置センサ106、撮像装置の動きを検出するジャイロセンサなどの角速度センサ107を備えている。さらにカメラ100は、角速度センサ107の出力を増幅するアンプ108、カメラ制御用マイクロコンピュータ(以下マイコン)130、シフトレンズ104を駆動するドライバ109、位置センサ106の出力を増幅するアンプ110を備える。
さらにカメラ100は、シャッター111、撮像素子112、アナログ信号処理回路113、カメラ信号処理回路114、タイミングジェネレータ115、操作スイッチ116、シャッター駆動用モータ117、ドライバ118を備える。
撮像素子112は、CMOSセンサやCCDセンサ等の光電変換素子により構成され、撮影レンズユニット101により形成された被写体像を光電変換してアナログ電気信号を出力する。シャッター111は、撮像素子112の露光時間を制御する。
アナログ信号処理回路(AFE)113は、撮像素子112から出力されたアナログ信号を増幅し、さらに増幅後のアナログ信号をデジタル信号としての撮像信号に変換してカメラ信号処理回路114に出力する。
カメラ信号処理回路114は、撮像信号に対して各種画像処理を行うことで映像信号(撮影映像)を生成する。撮影映像(またはこれから取り出された静止画像)は、カメラ100に対して着脱が可能なメモリカード119に記録されたり、液晶パネル等の表示素子により構成されるモニタ(以下、LCDという)120に表示されたりする。また、カメラ信号処理回路114は、映像信号を構成するフレーム画像間で動きベクトルを検出する動きベクトル検出部135を含む。
タイミングジェネレータ115は、撮像素子112やアナログ信号処理回路113の動作タイミングを設定する。操作スイッチ116は、電源スイッチ、レリーズスイッチ、モード選択スイッチ等の各種スイッチやダイヤルを含む。本実施例のカメラ100では、モード選択スイッチの操作を通じて、流し撮りアシストモードと通常撮影モードとの切り替えが可能である。シャッター駆動用モータ117は、ドライバ118により駆動され、シャッター111をチャージさせる。
また、マイコン130は、防振制御部131、流し撮り制御部132、シャッター制御部133、被写体角速度算出部134を含む。
防振制御部131は、カメラ振れに起因する被写体像のブレを補正(低減)するためにシフトレンズ104の駆動を制御する手振れ補正制御(防振制御)を行う。
流し撮り制御部132は、流し撮りアシストのためにシフトレンズ104のシフト駆動の制御を行う。
シャッター制御部133は、ドライバ118を通じて不図示のレリーズ電磁マグネットへの通電を解除してチャージ状態のシャッター111を開動作させ、またシャッター駆動用モータ117を制御してシャッター111のチャージ動作を行わせる。
被写体角速度算出部134は、撮影対象である被写体のカメラ100に対する相対被写体角速度を算出する。マイコン130は、その他、フォーカスレンズ制御や絞り制御等も行う。
なお、手振れ補正のためには、例えば横方向と縦方向といった直交する2軸に関して検出および補正を行うが、同様の構成であるため本実施例では1軸分のみ記載している。
操作スイッチ116の電源スイッチが操作されてカメラ100の電源がONされると、その状態変化をマイコン130が検出し、カメラ100の各回路への電源供給および初期設定が行われる。
流し撮りアシストモード設定が行われていない通常撮影モード時、角速度センサ107が手振れ等によるカメラ100の振れを検出し、その検出結果を用いることで防振制御部131により、シフトレンズ104を駆動して手振れ補正動作が行われる。
ここで手振れ補正機能に関して説明する。図4は、本実施例における防振システムの構成を示す図である。図3と共通の構成については同じ符号を付し、説明を省略する。図4において符号401〜407は防振制御部131の詳細な構成を示している。A/D変換器401は、角速度センサ107(アンプ108)から出力された角速度信号としてのアナログ信号を角速度データとしてのデジタル信号に変換する。角速度センサ107の出力データサンプリングは1〜10kHz程度で行われている。
フィルタ演算部402はハイパスフィルタ(HPF)等により構成され、角速度データに含まれているオフセット成分を低減したり、HPFのカットオフ周波数を変更したりする。第1の積分器403は、シフトレンズ104の駆動目標データを生成するために角速度データを角変位データに変換する。A/D変換器406は、位置センサ106の位置信号としてのアナログ信号を位置データとしてのデジタル信号に変換する。第1の加算器404は、シフトレンズ104の駆動目標値から現在のシフトレンズ位置を減算してシフトレンズ104の駆動データを算出する。PWM出力部405は、算出された駆動量データをシフトレンズ駆動用のドライバ109に出力する。
パンニング制御部407は、角速度データからカメラ100がパンニングされたかどうかを判定する。また、パンニング制御部407は、パンニングと判定された場合に、フィルタ演算部402のカットオフ周波数変更制御、および第1の積分器403の出力の調整を行う。
図5はパンニング制御部407により行われるパンニング制御のフローチャートの一例を示した図である。
ステップS501において、パンニング制御部407は、A/D変換器401から取り込んだ角速度データの平均値(所定サンプリング回数分の平均値、以下角速度平均値とする)が所定値αよりも大きいか否かを判定する。パンニング制御部407は、角速度平均値が所定値α以下の場合はパンニングが行われていないと判定し、ステップS507へ進む。一方、所定値αよりも大きい場合、パンニング制御部407は、ステップS502へ進み、角速度平均値が所定値βより大きいか否かを判定する。そして、パンニング制御部407は、角速度平均値が所定値β以下の場合は、ゆっくりとした(低速の)パンニングが行われていると判定してステップS506へ進む。所定値βよりも大きい場合は急激な(高速の)パンニングが行われていると判定し、ステップS503へ進む。
パンニング制御部407は、ステップS503においてでフィルタ演算部402のHPFのカットオフ周波数を最大値に設定し、ステップS504において手ブレ補正制御を強制的にOFF(非実行状態)とする。高速パンニング時に防振制御をOFFにするのは、高速パンニングを大きな手振れとして扱ってシフトレンズ104をシフトさせると、シフトレンズ104がそのシフト端に到達した時点で撮影映像が大きく動いて撮影者に違和感を与えるためである。また、高速パンニングが行われている場合にはパンニングによる撮影映像の動きが大きく、手振れによる像ブレが現れても撮影者にほとんど違和感を与えることはないためである。そして、HPFのカットオフ周波数を最大値に設定した上で次のステップにてシフトレンズ104を徐々に停止させることで、防振制御OFFに伴い急に手振れによる像ブレが現れて撮影者に違和感を与えることを回避することができる。
その後、ステップS505において、パンニング制御部407は、第1の積分器403の出力を現在のデータから徐々に初期位置のデータに変更する。これにより、シフトレンズ104が徐々に初期位置に戻るが、これは次に手振れ補正動作を再開する場合に、シフトレンズ104の位置が駆動範囲の初期位置にあることが望ましいためである。
ステップS506において、パンニング制御部407は、角速度データの大きさに応じてHPFのカットオフ周波数を設定する。低速パンニング時には手振れによる像ブレが目立ちやすいので、これを補正する必要があるためである。カットオフ周波数は、パンニングに対する撮影映像の追従性を不自然にならない程度に保ちながら、手振れによる像ブレを補正することができるように設定される。
ステップS507において、パンニング制御部407は、HPFのカットオフ周波数を通常時の値に設定する。
ステップS508において、パンニング制御部407は、防振制御の強制OFF設定を解除(防振制御をONに)する。
図7は、パンニング時の横方向の角速度データと、所定値α、βの関係を示した図であり、図中の701がサンプリングされた角速度データである。この例では、カメラ100が右方向にパンニングされた場合に+方向の角速度データ、左方向にパンニングされた場合に−方向の角速度データが得られる。図7の例では、右方向の急激な(高速の)パンニングと、左右方向のゆっくりとした(低速の)パンニングが検出されている。
図7からわかるように、パンニング中は角速度データが初期値(ここでは0)から大きく外れる。そのため、この角速度データを積分してシフトレンズ104の目標位置データを算出した場合、DC的なオフセット成分により、第1の積分器403の出力が非常に大きな値となり、制御不能状態になってしまう。そのため、パンニングが検出された場合はHPFのカットオフ周波数を高く変更することにより、DC成分をカットすることが必要となる。急激なパンニングの場合は特に顕著になるために、よりカットオフ周波数を上げることで、第1の積分器403の出力が増大しないようにしている。なお、急激なパンニングの場合は、パンニングによる画の動きが手振れに対して非常に大きくなるため、パンニング方向に関して手振れ補正機能をOFFとしても特に違和感は発生しない。
以上のようにパンニング制御が行われることで、パンニング中も違和感のない画像を得ることが可能となる。
図3において、操作スイッチ116により流し撮りアシストモードが設定されると、撮像した画像からカメラ信号処理回路114の動きベクトル検出部135により被写体の動きベクトルを検出する。検出された動きベクトルは、流し撮り制御部132に入力される。また、これと同時に、流し撮り制御部132は、角速度センサ107(アンプ108)からの角速度データを受信する。
撮影者が流し撮りを行なっているとき、動きベクトル検出部135から出力される被写体の動きベクトルは、撮影者が撮影しようとしている主被写体に対応したベクトルと、流れている背景に対応したベクトルの2種類となる。この際、流し撮りが目的であるため、検出された2種類の動きベクトルのうち、動き量の小さいデータが主被写体の動きベクトルとなり、この動きベクトルの値が主被写体の像面上の移動量を表す。
一方、角速度データは、カメラ100のパンニング速度(流し撮り速度)に対応しているため、角速度データと、主被写体の像面上の移動量とレンズの現在の焦点距離から算出される角速度の差分を算出すると、カメラ100に対する主被写体の角速度となる。被写体角速度算出部134は、モニタ用の画像を処理するタイミングごとにカメラ100に対する主被写体の角速度(相対被写体角速度ともいう)を算出している。また、被写体角速度算出部134は、算出した相対被写体角速度と算出した算出時刻(取得時刻)の組情報を流し撮り制御部132へ送る。
図6は、流し撮りアシストモード時のシフトレンズ104の駆動制御システムの構成を示す図であり、図3、図4と共通の構成に対して同じ符号を付している。カメラ情報取得部601は、操作スイッチ116のモード選択スイッチの操作によって流し撮りアシストモードが設定されたことを示す流し撮り設定情報と、レリーズスイッチの操作によって撮影が指示されたことを示すレリーズ情報とを取得する。角速度データ出力部602は、所定タイミングで角速度データをサンプリングして被写体角速度算出部134に出力する。
被写体角速度決定部603は、記録用撮影前(静止画記録のための撮像素子112の露光前)に被写体角速度算出部134が算出した相対被写体角速度とその算出時刻の組情報を取得し、これを角速度履歴として保持(蓄積)する。なお、以下の説明では、露光とは記録用撮影を意味する。そして、被写体角速度決定部603は、その露光前(露光期間前)の角速度履歴を用いて、露光期間中(撮影中)のカメラ100に対する被写体の予測された角速度(予測情報)である相対被写体角速度を算出等により決定する。こうして被写体角速度決定部603は、取得した露光期間中の相対被写体角速度を、流し撮りアシストにおける露光期間中のシフトレンズ104のシフト駆動の制御に用いる相対被写体角速度として決定する。
第2の加算器604は、角速度センサ107からの角速度データと被写体角速度決定部603にて決定された露光期間中の相対被写体角速度との差分を算出する。第2の積分器605は、露光期間中のみ積分動作を行う。設定変更部606は、カメラ情報取得部601からの流し撮りアシストモードの設定情報の通知に応じてパンニング制御部407の設定を変更する。
操作スイッチ116の操作により流し撮りアシストモードが設定されると、カメラ情報取得部601は、流し撮り設定情報を設定変更部606に通知する。設定変更部606は、通知された流し撮り設定情報に応じてパンニング制御部407の設定変更を行う。ここで行われる設定変更は、急激なパンニング状態に移行しやすくする変更であり、具体的には、前述のパンニング判定用の所定値βおよびαを変更する。
また、第2の加算器604は、角速度センサ107からの角速度データと、被写体角速度決定部603からの相対被写体角速度との差を計算し、計算結果を第2の積分器605へと送る。
第2の積分器605は、カメラ情報取得部601からのレリーズ情報に応じて、露光期間中の前述した差の積分動作を開始する。第2の積分器605は、露光期間以外の期間においては、シフトレンズ104の位置が初期位置(中央)となる値を出力する。ここで、露光期間以外はシフトレンズ104を中央位置に配置しようとした場合、露光期間終了時は現在の位置から中央位置までシフトレンズ104が急峻に移動することになる。しかし、露光期間終了直後は撮像素子112からの画像信号の読み出し期間のため、LCD120上で撮影映像の表示は行われない期間であり、シフトレンズ104の急峻な移動による撮影映像の動きは問題とはならない。
また、第2の積分器605の出力は、第1の加算器404で第1の積分器403の出力に加算され、その加算値に対して位置センサ106(シフト位置A/D変換器406)からのシフトレンズ104のシフト位置データが減算される。これにより、シフトレンズ104の駆動量データが算出される。
流し撮りアシストモード設定中に実際に撮影者により高速パンニングによる流し撮り動作が行われると、パンニング制御部407は、すぐにパンニング制御を開始するとともに、図5のステップS504で説明したように防振制御をOFFとする。パンニング制御により、シフトレンズ104が移動することで、カメラ100のパンニングによる角速度とカメラ100に対する主被写体(以下、単に被写体という)の角速度である相対被写体角速度との差分に対応する被写体像の像面上での変位量を補正する。このため、流し撮り失敗の原因となる露光期間中のカメラ100のパンニング速度と被写体の動き速度との差分がシフトレンズ104のシフト駆動により相殺され、その結果、流し撮りが成功する。
ここで、被写体角速度決定部603は、露光前において被写体角速度算出部134から取得して蓄積した角速度履歴を用いて露光期間中の相対被写体角速度を決定するが、その際にレリーズタイムラグの時間と露光期間を考慮する。例えば、等速直線運動をしている被写体をその進行方向に直交する方向に位置するカメラ100で流し撮りする場合には、カメラ100から測定する被写体の角速度は連続的に変化する。このため、被写体の角速度は、その検出時と露光期間中とでは同じにならない。したがって、この角速度の変化(つまりは加速度)を考慮しないと、シフトレンズ104のシフト駆動による上記補正を良好に行うことができない。
図8は、被写体の相対角速度と角加速度の関係を示す図であり、図9に示すように等速直線運動をしている被写体(電車)の角速度を該被写体の進行方向に直交する方向に位置するカメラ100から測定したときの角速度の変化を示している。図9において、被写体は左から右に向かって速度vで等速直線運動をしている。点Aは被写体の等速直線運動による移動軌跡上においてカメラ100からの距離が最短となる位置(以下、原点という)であり、Lはカメラ100から原点Aまでの距離(移動軌跡までの最短距離)である。θはカメラ100から原点Aに向かう方向、すなわち被写体の進行方向に直交する方向に対してカメラ100から被写体への方向がなす角度(つまりはカメラ100の向き:以下、パンニング角度という)であり、原点Aより右側がプラスで左側がマイナスとする。
図8中の横軸は、図9中の被写体が原点Aに位置するときを0度としたパンニング角度θを示し、中央の縦軸は被写体の角速度を示している。実線のグラフが角速度の変化を示す。また、右側の縦軸は角加速度を示し、破線のグラフが角加速度の変化を示す。ここにいう角加速度の変化は、カメラの位置を基準とした被写体の位置に対応する被写体の角加速度の変化である。図8は、カメラ100から原点Aまでの最短距離が20mで、被写体が速度60km/hで等速直線運動をしている場合の角速度と角加速度を示している。
図8において、被写体が原点Aを通過する際(θ=0度)に角速度が最大で、角加速度が0になる。また、θ=+30度で角加速度が最大となり、θ=−30度で角加速度が最小になる。なお、このパンニング角度θと角加速度および角加速度との関係は、上述した最短距離や被写体の速度に依存しない。
図2は、流し撮りアシストモード時の撮影処理のフローチャートを示す図である。この処理は、マイコン130がコンピュータプログラムである流し撮りアシスト制御プログラムに従って実行する。
ステップS201において、マイコン130は、レリーズスイッチが半押し操作された(SW1ONである)か否かを判定する。半押し操作された(SW1ONである)場合はステップS202へと進み、時間計測カウンタをインクリメントする。半押し操作されていない(SW1ONでない)場合はステップS203へ進み、時間計測カウンタをリセットしたのち、ステップS201へ戻る。
ステップS204において、マイコン130は、被写体角速度算出部134により相対被写体角速度(図では単に被写体角速度と記す)がすでに算出されているか否かを確認する。算出されている場合は、マイコン130は、ステップS205へ進み、時間計測カウンタが所定時間Tに達したか否かを確認する。相対被写体角速度がまだ算出されていない場合および相対被写体角速度がすでに算出されていても時間計測カウンタが所定時間Tに達している(露光期間が所定時間Tより長い)場合は、マイコン130はステップS206へ進む。
ステップS206において、マイコン130は、被写体角速度算出部134に相対被写体角速度を算出させる。これにより、後述するレリーズスイッチの全押し操作に応じて開始される露光の前に被写体角速度算出部134に相対被写体角速度を算出させ、被写体角速度決定部603に角速度履歴を取得させる。時間計測カウンタが所定時間Tに達している場合に相対被写体角速度を算出し直させるのは、所定時間T内で被写体の速度が変化する可能性を考慮するためである。被写体角速度算出部134が算出した相対被写体角速度は、算出するごとに、被写体角速度決定部603に送られる。ステップS205にて時間計測カウンタがまだ所定時間Tに達していない場合は、マイコン130はステップS208へ進む。
ステップS206の後のステップS207において、マイコン130は、被写体角速度決定部603に、露光期間中の相対被写体角速度を決定させる。ここでの処理の詳細については後述する。そして、ステップS208へ進む。
ステップS208において、マイコン130は、レリーズスイッチが全押し操作(SW2ON)されたか否かを判定する。全押し操作されていない(SW2ONでない)場合は、マイコン130はステップS201に戻る。一方、全押し操作された(SW2ONである)場合は、マイコン130はステップS209へ進み、シャッター制御部133を通じてシャッター111を開動作させて露光を開始させる。
さらに、マイコン130は、ステップS210において、流し撮り制御部132に、ステップS207で決定された相対被写体角速度に応じたシフトレンズ104の駆動制御を行わせる。これにより、被写体像の像面上での変位量を補正する流し撮りアシストを行う。この際、図5のステップS502でパンニングが高速パンニングと判定された場合は、マイコン130は、防振制御部131を通じてシフトレンズ104を手振れによる像ブレを補正するために駆動する。
続いてステップS211において、マイコン130は、露光が完了したか否かを判定し、完了した場合はステップS212へ進み、未完了であればステップS210へ戻る。ステップS212において、マイコン130は、再びレリーズスイッチが全押し操作(SW2ON)されたか否かを判定し、全押し操作されている(SW2ONである)場合はステップS209に戻って次の露光(連写の次のコマの撮影)を行う。一方、全押し操作されていない(SW2ONでない)場合はステップS201に戻る。
図1は、被写体角速度決定部603が図2のステップS207にて行う露光時被写体角速度決定処理のフローチャートを示す図である。この処理は、被写体角速度決定部603がコンピュータプログラムである流し撮りアシスト制御プログラムに従って実行し、ステップS206で被写体角速度の通知を受けると本処理が開始される。
ステップS101において、被写体角速度決定部603は、最新の角速度データを取得し、ステップS102へ進む。ステップS102において、被写体角速度決定部603は、保持している最新の角速度データのX軸方向(第1の方向)に対する閾値判定を行う。本実施例において、X軸方向は重力方向と直交する方向を表し、図7と同様にカメラ100が右方向にパンニングされた場合に+方向の角速度データ、左方向にパンニングされた場合に−方向の角速度データが得られるものとする。また、後述するY軸方向は重力方向と平行な方向を表し、カメラ100が上方向にパンニングされた場合に+方向の角速度データ、下方向にパンニングされた場合に−方向の角速度データが得られるものとする。X軸方向に対する角速度データの絶対値が第1の閾値(例えば、6dps)より大きい場合はステップS103へ進み、第1の閾値以下の場合はステップS106へ進む。
ステップS103において、被写体角速度決定部603は、最新の角速度データのY軸方向(第1の方向と直交する第2の方向)に対する閾値判定を行う。Y軸方向に対する角速度データの絶対値が第1の閾値(例えば、6dps)より大きい場合はステップS104へ進み、第1の閾値以下の場合はステップS105へ進む。
ステップS104において、被写体角速度決定部603は、X軸方向及びY軸方向それぞれについて保持している複数の過去の相対被写体角速度に基づいて露光時の被写体角加速度を算出する。そして、レリーズタイムラグと算出した被写体角加速度から露光時の角速度差分を求め、角速度差分をステップS206で算出した相対被写体角速度に加算して露光時の相対被写体角速度を予測する。予測結果を露光時の相対被写体角速度に決定して角速度決定処理を終了する。
ステップS105において、被写体角速度決定部603は、Y軸方向についてはステップS206で算出した相対被写体角速度を露光時の相対被写体角速度として決定する。一方、X軸方向については保持している複数の過去の相対被写体角速度に基づいて露光時の被写体角加速度を算出する。そして、レリーズタイムラグと算出した被写体角加速度から露光時の角速度差分を求め、角速度差分をステップS206で算出した相対被写体角速度に加算して露光時の相対被写体角速度を予測する。予測結果を露光時の相対被写体角速度に決定して角速度決定処理を終了する。
ステップS106において、被写体角速度決定部603は、最新の角速度データのY軸方向に対する閾値判定を行う。Y軸方向に対する角速度データの絶対値が第1の閾値(例えば、6dps)より大きい場合はステップS107へ進み、第1の閾値以下の場合はステップS108へ進む。
ステップS107において、被写体角速度決定部603は、X軸方向についてはステップS206で算出した相対被写体角速度を露光時の相対被写体角速度として決定する。一方、Y軸方向については保持している複数の過去の相対被写体角速度に基づいて露光時の被写体角加速度を算出する。そして、レリーズタイムラグと算出した被写体角加速度から露光時の角速度差分を求め、角速度差分をステップS206で算出した相対被写体角速度に加算して露光時の相対被写体角速度を予測する。予測結果を露光時の相対被写体角速度に決定して角速度決定処理を終了する。
ステップS108において、被写体角速度決定部603は、X軸方向及びY軸方向それぞれステップS206で算出した相対被写体角速度を露光時の相対被写体角速度として決定する。
以上のように、カメラ100の角速度データの絶対値が閾値よりも大きければ、それまでの相対被写体角速度に基づいて角加速度を算出し、角加速度の算出結果を用いて露光時までの相対被写体角速度の変化を予測する。すなわち、それまでの相対被写体角速度に基づいて露光時までの相対被写体角速度の変化を予測することで、露光時の相対被写体角速度を予測する。一方、カメラ100の角速度データの絶対値が閾値以下であれば、それまでの相対被写体角速度に基づいて露光時までの相対被写体角速度の変化を予測しない。すなわち、それまでの相対被写体角速度に基づいて角加速度を算出しないことで、算出結果を反映させず露光時の相対被写体角速度を決定する。カメラ100の角速度データの絶対値が閾値以下である場合に相対被写体角速度の変化を予測すると、時間的に連続した画像から検出した被写体の像面上の移動量の誤差により精度よく相対被写体角速度の変化を予測できない場合があるためである。
そのため、以上のような制御により、時間的に連続した画像から検出した被写体の像面上の移動量の誤差の影響を抑えてブレ補正を行うことができる。
なお、本実施例では第1の閾値の例として6dpsを挙げているが、閾値の値は時間的に連続した画像から検出した被写体の像面上の移動量の誤差の影響を鑑みて適宜設定すればよい。
実施例1では、カメラ100の角速度データの絶対値が閾値よりも大きければ露光時までの相対被写体角速度の変化を角加速度に基づいて予測し、大きくなければ露光時までの相対被写体角速度の変化を予測しないようにした。それに対して、実施例2では、カメラ100の角速度データの絶対値に応じて相対被写体角速度の変化の予測方法を段階的に切り替えるようにした。そうすることで、カメラ100の動きに応じたより良好な像ブレ補正を行うことができる。具体的には、実施例1における、それまでの相対被写体角速度に基づいて露光時までの相対被写体角速度の変化を予測しない場合(図1のステップS105、S107、S108)に、更なる閾値と加速度データとの比較(図10に示す処理)を行う。
図10は、図1のステップS105、S107、S108で行われる被写体角加速度補正処理のフローチャートを示す図であり、本実施例にかかわる撮像装置の構成及び図10に示す処理以外の処理は実施例1と同様であるため、詳細な説明は省略する。
図1のフローチャートにしたがってステップS105、S107、S108に移行した場合、被写体角速度決定部603は、X軸方向及びY軸方向のうち角速度データの絶対値が第1の閾値より大きくないものを対象にしてステップS109の処理を実行する。
ステップS109において、被写体角速度決定部603は、対象となる角速度データの絶対値が第2の閾値(第1の閾値よりも小さい、例えば3dps)より大きいか否かを判定する。第2の閾値よりも大きくない場合はステップS110へ進み、第2の閾値よりも大きい場合はステップS111へ進む。なお、角速度データが対象とならない方向については、保持している複数の過去の相対被写体角速度に基づいて露光時の被写体角加速度を算出する。そして、レリーズタイムラグと算出した被写体角加速度から露光時の角速度差分を求め、角速度差分をステップS206で算出した相対被写体角速度に加算して露光時の相対被写体角速度を予測し、予測結果を露光時の相対被写体角速度に決定する。
ステップS110において、被写体角速度決定部603は、角速度データが対象となる方向について、ステップS206で算出した相対被写体角速度を露光時の相対被写体角速度として決定する。具体的には、露光時までの被写体角加速度を0として角加速度の算出結果を反映させず露光時の相対被写体角速度を決定する。
ステップS111において、被写体角速度決定部603は、角速度データが対象となる方向について、保持している複数の過去の相対被写体角速度に基づいて露光時の被写体角加速度を算出する。そして、レリーズタイムラグと算出した被写体角加速度を1/2にした被写体角加速度から露光時の角速度差分を求め、角速度差分をステップS206で算出した相対被写体角速度に加算露光時の相対被写体角速度を予測する。予測結果を露光時の相対被写体角速度に決定する。
以上のように、本実施例では、角速度データが小さくなるにつれて露光時の相対被写体角速度を決定する際に反映させる露光時までの被写体角加速度の度合いを段階的に小さくする。それにより、角速度データが閾値の上になった場合と下になった場合の露光時の相対被写体角速度の差異を低減することができ、実施例1に比べてカメラ100の動きに応じたより良好な像ブレ補正を行うことができる。
なお、本実施例では、本実施例では第1の閾値の例として6dps、第2の閾値の例として3dpsを挙げているが、第1の閾値よりも第2の閾値が小さい値であればよい。また、第1の閾値を実施例1と同様の値にしているが、段階的な制御を行うために第1の閾値を実施例1の値よりも大きい値(例えば、12dps)などにしてもよい。
また、角速度データが第1の閾値と第2の閾値の間となる場合に、過去の相対被写体角速度に基づいて算出した被写体角加速度を1/2にした被写体角加速度を用いているが、反映させる被写体角加速度の割合は1/2に限定されず、1より小さければよい。
また、本実施例では、加速度データを2つの閾値と比較して段階的な制御を行うようにしているが、3つ以上の閾値と比較して段階的に制御するようにしてもよい。あるいは、加速度データと露光時の相対被写体角速度を決定する際に反映させる露光時までの被写体角加速度の割合とを対応づけたテーブルをマイコン130内のメモリに記憶しておき、当該テーブルに基づいて段階的な制御を行うようにしてもよい。
また、実施例1及び2では、角加速度を算出せずに0とすることで角加速度の算出結果を反映させずに露光時の相対被写体角速度を決定するが、角加速度を算出したうえで角加速度の算出結果をまったく反映させずに露光時の相対被写体角速度を決定してもよい。
また、実施例1及び2では、加速度データと閾値との比較を行い露光時の相対被写体角速度を決定する方法を変更しているが、加速度データを用いて算出される被写体角加速度と閾値との比較を行い露光時の相対被写体角速度を決定する方法を変更してもよい。
また、実施例1及び2では、レンズ一体型のカメラの例を説明したが、レンズ交換型のカメラでもよく、交換レンズに設けられた角速度センサを用いてよい。
また、実施例1及び2では、ユーザの操作に応じて流し撮りアシストモードが設定される場合の例を説明したが、カメラがカメラの動きを判定して自動的に流し撮りアシストモードに移行するようにしてもよい。
また、実施例1及び2では、被写体の移動速度とパンニング速度の差を補正するための補正素子にシフトレンズを用いた例を説明したが、撮像素子を補正素子として利用し、撮像素子を移動させて被写体の移動速度とパンニング速度の差を補正してもよい。