以下、図面を参照して本発明の実施の形態を説明する。
[実施形態1]
図1から図14は本発明の実施形態1を示したものであり、図1は撮像装置に生じる回転運動の種類を説明するための斜視図である。
まず、図1を参照して、撮像装置1に設定する座標系や回転方向について説明する。なお、撮像装置1は、撮像機能を備えた装置であればよく、デジタルカメラ、ビデオカメラ、カメラ機能付き携帯電話など各種の装置を広く含むが、以下では、代表して適宜カメラ1などということにする。
カメラ1は、被写体からの光を被写体像として結像する光学系2を備えており、この光学系2の光軸方向をZ方向とする。ここに、正のZ方向は、カメラ1から被写体に向く方向とする。
また、カメラ1の標準姿勢(いわゆる横位置)において、カメラ1の水平方向をX方向とする。ここに、正のX方向は、被写体側からカメラ1を見て右方向(つまり、撮影者からカメラ1を見て左方向)とする。
さらに、カメラ1の標準姿勢において、カメラ1の垂直方向をY方向とする。ここに、正のY方向は、標準姿勢における上方向とする。
また、図1(および後述する図2A〜図2C)においては、座標系がカメラ1と重複して見難くなるのを防ぐために座標系の原点位置をずらして記載しているが、座標系の原点は撮像素子4(図3参照)の撮像面の中心であり、一般的には、撮像面と光学系2の光軸とが交差する点である。この座標系は、カメラ1に固定した座標系であり、カメラ1が移動または回転すれば、座標系も地球に対して移動または回転することになる。また、この座標系において、X−Y平面は撮像面に一致する面である。
そして、このような座標系において、Z軸周りの回転運動がロール、X軸周りの回転運動がピッチ、Y軸周りの回転運動がヨーである。
さらに、以下では例えば、原点からZ軸正方向を見たときのZ軸周りの左回転がロールの正方向回転、原点からX軸正方向を見たときのX軸周りの左回転がピッチの正方向回転、原点からY軸正方向を見たときのY軸周りの右回転がヨーの正方向回転であるものとする。
なお、上述した座標軸の正負方向や回転方向の正負は、後述する角速度センサ8や加速度センサ9(図3等参照)の実装方向に依存する便宜上のものであり、理論的には上記に限定されるものではない。
次に、上述した座標系において、回転中心が原点(あるいは、回転中心が、原点を含むカメラ1内)にある場合は主に角度ブレをもたらし、回転中心がカメラ1の外部にある場合には角度ブレに加えて並進ブレをもたらす。従って、ブレ補正を行う必要があるような並進ブレが発生するのは、実質的に、回転中心がカメラ1の外部にあるときであると考えても差し支えない。
まず、角度ブレに関しては、原点周りの回転運動として記述すればよい。すなわち、ヨー方向の回転運動により光軸が左右に振られて撮像素子4上に結像される被写体範囲が左右に移動し、ピッチ方向の回転運動により光軸が上下に振られて撮像素子4上に結像される被写体範囲が上下に移動することはよく知られている通りである。また、ロール方向の回転運動は、画面の横位置や縦位置、およびその中間の斜め位置をもたらすこともよく知られている通りである。
一方、並進ブレに関しては、上述したように、カメラ1の外部に回転中心がある回転運動として記述することができる。図2Aはヨー回転により撮像装置にX方向の移動量が生じる様子を示す図、図2Bはピッチ回転により撮像装置にY方向の移動量が生じる様子を示す図、図2Cはロール回転により撮像装置にX方向およびY方向の移動量が生じる様子を示す図である。
図2Aに示すように、カメラ1の外部の、原点から距離(回転半径)Ryawの位置に回転中心Cyawをもつヨー方向の回転運動がカメラ1に発生すると、X方向の移動量が生じる。
また、図2Bに示すように、カメラ1の外部の、原点から距離(回転半径)Rpitchの位置に回転中心Cpitchをもつピッチ方向の回転運動がカメラ1に発生すると、Y方向の移動量が生じる。
さらに、図2Cに示すように、カメラ1の外部の、原点から距離(回転半径)Rrollの位置に回転中心Crollをもつロール方向の回転運動がカメラ1に発生すると、一般に、X方向への移動量成分、およびY方向への移動量成分を含む移動量が生じる。
そして、角度ブレと並進ブレとのうち、前者の角度ブレに関しては公知の技術を適宜用いることが可能であるために、本実施形態においては、後者の並進ブレについて主に説明する。
まず、図3は、撮像装置1の構成を示すブロック図である。
撮像装置であるカメラ1は、光学系2と、フォーカルプレーンシャッタ3と、撮像素子4と、駆動部5と、システムコントローラ6と、ブレ補正マイクロコンピュータ7と、角速度センサ8と、加速度センサ9と、レリーズスイッチ10と、EVF(電子ビューファインダ)11と、内部フラッシュメモリ13と、を備えている。また、図3にはメモリカード12も記載されているが、メモリカード12は例えばカメラ1に対して着脱自在に構成されたものであるために、カメラ1に固有の構成でなくても構わない。
光学系2は、被写体からの光を、被写体像として撮像素子4の撮像面に結像するものである。
フォーカルプレーンシャッタ3は、撮像素子4の前面(光学系2側)に配設されていて、開閉動作を行うことにより露光時間を制御するものである。すなわち、フォーカルプレーンシャッタ3は、開くことで撮像素子4を露光状態にし、閉じることで遮光状態にする。
撮像素子4は、システムコントローラ6の指示に基づいて、撮像面に結像された被写体像を電気信号に変換する。この変換された電気信号は、システムコントローラ6によって映像信号として読み出される。
駆動部5は、撮像面内に平行な2次元方向に移動可能となるように撮像素子4を支持しており、ブレ補正マイクロコンピュータ7からの指示に基づいて、図1等に示したX方向およびY方向に撮像素子4を駆動する。
システムコントローラ6は、前述した映像信号の読み出しを含む、カメラ1全体の機能に関わる各種の制御を統合的に行う制御部である。システムコントローラ6は、以下に説明するように、ブレ補正マイクロコンピュータ7にブレ検出を行わせ、ブレ検出結果に基づいてブレ補正を行わせる制御も行う。
角速度センサ8は、回転運動を検出する角速度検出部として構成されたセンサであり、単位時間当たりの角度変化を角速度として検出しブレ補正マイクロコンピュータ7へ出力する。角速度センサ8は、図2Aに示したようなY軸周りのヨー回転運動に係るヨー角速度を検出するヨー角速度検出部(第2角速度検出部)たるヨー角速度センサ8aと、図2Bに示したようなX軸周りのピッチ回転運動に係るピッチ角速度を検出するピッチ角速度検出部(第3角速度検出部)たるピッチ角速度センサ8bと、図2Cに示したようなZ軸周りのロール回転運動に係るロール角速度を検出するロール角速度検出部(第1角速度検出部)たるロール角速度センサ8cとを含み、回転方向の3自由度の角速度を検出するように構成されている。なお、ここではヨー角速度センサ8aが第2角速度検出部、ピッチ角速度センサ8bが第3角速度検出部であるとしたが、ヨー角速度センサ8a(ヨー角速度検出部)が第3角速度検出部、ピッチ角速度センサ8b(ピッチ角速度検出部)が第2角速度検出部であっても構わない。
また、ヨー角速度センサ8aと、ピッチ角速度センサ8bと、ロール角速度センサ8cは、例えば、同一機種のセンサを用いて、実装方向を異ならせることにより、各軸周りの回転運動を検出する。
加速度センサ9は、少なくともX軸方向の加速度(X加速度)とY軸方向の加速度(Y加速度)とを検出する加速度検出部であり、本実施形態においてはさらに、Z軸方向の加速度(Z加速度)も検出し得るセンサを採用している。そして、加速度センサ9は、検出した各方向への加速度を、ブレ補正マイクロコンピュータ7へ出力する。
なお、上述した角速度センサ8と加速度センサ9とは、検出時間を異ならせて時系列的に(つまり所定の時間間隔毎に)検出を行い、検出結果を逐次ブレ補正マイクロコンピュータ7へ出力するようになっている。
ブレ補正マイクロコンピュータ7は、システムコントローラ6の指示に基づいて、角速度センサ8の出力と加速度センサ9の出力とからカメラ1のブレ量を算出する。そして、ブレ補正マイクロコンピュータ7は、検出したブレ方向と反対方向に検出したブレ量だけ撮像素子4を駆動する指示を駆動部5に対して出力する。これにより駆動部5が、撮像面におけるブレを打ち消すように撮像素子4を駆動するために、撮影画像に発生するブレを防止することができる。なお、ここでは撮像素子4を駆動してブレ補正を行っているが、これに代えて、あるいはこれに加えて、光学系2を駆動してブレ補正を行うようにしても構わない。
そして、ブレ補正マイクロコンピュータ7、角速度センサ8、加速度センサ9を含んでブレ量検出装置が構成され、このブレ量検出装置と駆動部5とを含んでブレ補正装置が構成されている。
レリーズスイッチ10は、システムコントローラ6と接続された例えば2段式の押圧スイッチでなり、1段目の押圧(半押し、あるいは1stレリーズ)でAFやAEが行われ、2段目の押圧(全押し、あるいは2ndレリーズ)で露光が開始されるようになっている。
EVF11は、液晶パネル等を含んで構成された表示部であり、撮像素子4から読み出され、システムコントローラ6等において表示可能な形式に変換された映像信号を、ユーザが視認可能となるように表示する。
メモリカード12は、撮像素子4から読み出され、システムコントローラ6等において記録可能な形式に変換された映像信号を記録する不揮発性の記録媒体であり、上述したように、カメラ1に対して例えば着脱自在に構成されている。
内部フラッシュメモリ13は、システムコントローラ6が実行するカメラ1の制御プログラムや、制御に用いられる各種パラメータ等を記録する不揮発性の記録媒体である。
次に図4は、ブレ補正マイクロコンピュータ7の構成を示すブロック図である。
ブレ補正マイクロコンピュータ7は、CPU70と、ADC(アナログ・デジタル・コンバータ)71a〜71cと、SIO(Serial Input/Output:シリアル入出力)72a,72bと、ドライバ73と、を備えている。
ADC71a〜71cは、角速度センサ8a〜8cから入力されるアナログ信号を、それぞれデジタル信号に変換する。
SIO72a,72bは、CPU70が外部デバイスとシリアルインタフェースで通信を行う通信部であり、SIO72aは加速度センサ9が検出した加速度の値をCPU70が読み出すために用いられ、SIO72bはCPU70がシステムコントローラ6とコマンドのやり取りを行う通信に用いられる。
ドライバ73は、CPU70により算出された補正量に基づいて、駆動部5を駆動するための信号を出力する。
CPU70は、HPF(ハイ・パス・フィルタ)701a〜701eと、加速度取得部702と、角度ブレ補正部703と、並進ブレ補正部704と、通信部705と、加算部706とを、例えば内部プログラムであるファームウェアにより構成される機能として備えており(ただし、ハードウェアとして構成しても勿論構わない)、角速度センサ8および加速度センサ9の検出結果に基づき、角度ブレおよび並進ブレの補正量を算出する。
HPF701a〜701eは、デジタルデータとして入力される角速度および加速度の低周波成分を除去する。すなわち、HPF701aは入力されるヨー角速度から、HPF701bは入力されるピッチ角速度から、HPF701cは入力されるロール角速度から、HPF701dは入力されるX加速度から、HPF701eは入力されるY加速度から、低周波成分をそれぞれ除去する。ここで除去する低周波成分は、例えば1Hz以下の周波数成分が挙げられるが、この帯域に限定されるものではない。手ブレに基づく周波数は、1Hzから10Hz程度の間であることが実験で確認されており、これにより、手ブレ以外の要因によるセンサの動き(例えば、ドリフトなど)による経時変化の成分を除去することができる。
また、加速度取得部702は、SIO72aを経由して、加速度センサから独立した3軸方向の加速度を読み出して、図2等に示したX軸、Y軸、Z軸の各方向への加速度情報に分割する。そして、加速度取得部702は、X加速度を上述したHPF701dへ、Y加速度を上述したHPF701eへ、それぞれ出力する。
角度ブレ補正部703は、ヨー回転運動およびピッチ回転運動に基づいて、角度変化に伴うブレ量(角度ブレ)を算出するものであるが、この角度ブレについては公知の技術を適宜利用することができるために、詳細は記載しない。
並進ブレ補正部704は、加速度および角速度に基づいて、カメラ1の並進移動量を算出し、算出した移動量を撮像面における被写体像のブレ量に変換し、補正量として駆動部5へ伝達する。この並進ブレ補正部704は、X方向の並進ブレ量の算出を行うX方向並進ブレ補正部704xと、Y方向の並進ブレ量の算出を行うY方向並進ブレ補正部704yとを備えている。
通信部705は、SIO72bを経由して、システムコントローラ6と通信する。
加算部706は、角度ブレ補正部703により算出された角度ブレ量と、並進ブレ補正部704により算出された並進ブレ量とを加算して、トータルのブレ量をドライバ73へ出力する。
図5はX方向並進ブレ補正部の構成を示すブロック図である。
Y方向並進ブレ補正部704yはX方向並進ブレ補正部704xと構成が同一であって、入力がヨー角速度に代えてピッチ角速度、X加速度に代えてY加速度になるだけである。従って、ここでは、図5を参照してX方向並進ブレ補正部704xのみについて説明する。
X方向並進ブレ補正部704xは、平均化部761a〜761cと、角加速度算出部762a,762bと、記憶部763a,763b,763cと、半径算出部764a,764bと、ブレ量算出部775と、乗算部768と、を備えている。
平均化部761a〜761cは、時系列的に入力される角速度および加速度を平均化する。この平均化は、例えば、4サンプリング分のデータの平均値を算出し、1つのサンプリング値として出力することにより行う。この平均化は、後段の角加速度算出部762a,762bにおける微分演算により高周波成分か強調されるのを抑制する効果があるとともに、データ量が1/4に減るために、演算量を削減する効果もある。
角加速度算出部762a,762bは、平均化された角速度を微分して角加速度を算出する。
記憶部763a,763bは、角加速度算出部762a,762bにより算出された角加速度を、半径算出部764a,764bにおける半径算出に必要な過去データ分まで記憶する。
同様に、記憶部763cは、平均化部761cにより平均化された加速度を、半径算出部764a,764bにおける半径算出に必要な過去データ分まで記憶する。
これら記憶部763a,763b,763cに記憶されるデータが、図6に示すような時刻t1,t2,…のデータとなる。ここに、各時刻t1,t2,…は、例えば等時間間隔であるものとする。そして、図6は、半径を算出する時刻の例を説明するための線図である。
半径算出部764a,764bは、例えば加速度と角加速度に基づき回転半径Rを算出する回転半径算出部である(ただし、後述するように、速度と角速度に基づき回転半径Rを算出するようにしても構わない)。
まず、ヨー角加速度αω_yawと、ロール角加速度αω_rollと、ヨー半径Ryawと、XZロール半径Rrollxと、X加速度αv_xとの間には、以下の数式1に示すような関係式が成立すると仮定する。
[数1]
同様に、ピッチ角加速度αω_pitchと、ロール角加速度αω_rollと、ピッチ半径Rpitchと、YZロール半径Rrollyと、Y加速度αv_yとの間には、以下の数式2に示すような関係式が成立すると仮定する。
[数2]
数式1における測定可能量はヨー角加速度αω_yaw、ロール角加速度αω_roll、およびX加速度αv_xであり、求めたい量はヨー半径RyawおよびXZロール半径Rrollxである。
同様に、数式2における測定可能量はピッチ角加速度αω_pitch、ロール角加速度αω_roll、およびY加速度αy_xであり、求めたい量はピッチ半径RpitchおよびYZロール半径Rrollyである。
数式1および数式2の何れにおいても、未知数(求めたい量)が2つあるために、このままでは各半径を求めることはできない。そこで、第1の時刻T1における数式1と第2の時刻T2(なお、第1の時刻T1と第2の時刻T2の時間的前後は問わないが、例えば、第1の時刻T1が時間的に先、第2の時刻T2が時間的に後であるものとする)における数式1とを以下の数式3に示すように連立させ、同様に、第1の時刻T1における数式2と第2の時刻T2における数式2とを以下の数式4に示すように連立させる。
[数3]
[数4]
ここに、数式3および数式4においては、第1の時刻T1における各半径と、第2の時刻T2における各半径とは、変化量が小さく無視し得る(すなわち、Ryaw=Ryaw(T1)=Ryaw(T2)、Rpitch=Rpitch(T1)=Rpitch(T2)、Rrollx=Rrollx(T1)=Rrollx(T2)、Rrolly=Rrolly(T1)=Rrolly(T2)である)と仮定している。
そして、数式3の連立方程式の解は以下の数式5、数式4の連立方程式の解は以下の数式6に示すようになる。
[数5]
[数6]
そこで、半径算出部764aは、記憶部763aに記憶されている第1の時刻T1におけるヨー角加速度αω_yaw(T1)および第2の時刻T2におけるヨー角加速度αω_yaw(T2)と、記憶部763bに記憶されている第1の時刻T1におけるロール角加速度αω_roll(T1)および第2の時刻T2におけるロール角加速度αω_roll(T2)と、記憶部763cに記憶されている第1の時刻T1におけるX加速度αv_x(T1)および第2の時刻T2におけるX加速度αv_x(T2)とを用いて、数式5における第1式に基づいてヨー半径Ryawを算出する。
また、半径算出部764bは、半径算出部764aが用いるデータと同一のデータを用いて、数式5における第2式に基づいてXZロール半径Rrollxを算出する。
同様に、Y方向並進ブレ補正部704yの半径算出部764aは、記憶部763aに記憶されている第1の時刻T1におけるピッチ角加速度αω_pitch(T1)および第2の時刻T2におけるピッチ角加速度αω_pitch(T2)と、記憶部763bに記憶されている第1の時刻T1におけるロール角加速度αω_roll(T1)および第2の時刻T2におけるロール角加速度αω_roll(T2)と、記憶部763cに記憶されている第1の時刻T1におけるY加速度αv_y(T1)および第2の時刻T2におけるY加速度αv_y(T2)とを用いて、数式6における第1式に基づいてピッチ半径Rpitchを算出する。
また、Y方向並進ブレ補正部704yの半径算出部764bは、Y方向並進ブレ補正部704yの半径算出部764aが用いるデータと同一のデータを用いて、数式6における第2式に基づいてYZロール半径Rrollyを算出する。
ここに、半径算出部764a,764bが利用する各時刻における角加速度は、同時刻における角速度を少なくとも用いて得られる量である。
なお、本実施形態では、ヨー半径Ryaw、ピッチ半径Rpitch、XZロール半径Rrollx、YZロール半径Rrollyを算出する際に平均化されたX加速度αv_xおよび平均化されたY加速度αv_yを用いたが、平均化は必須要件ではなく好ましい要件であるために、平均化されていないX加速度および平均化されていないY加速度を用いても構わない。
ブレ量算出部775は、速度算出部765a,765bと、加算部766と、積分部767と、を備え、半径算出部764a,764bで算出された半径とHPF701a〜701cから入力される角速度とに基づいて、X方向並進ブレ補正部704xに設けられている場合にはX軸方向の移動量を、Y方向並進ブレ補正部704yに設けられている場合にはY軸方向の移動量を、算出する。
速度算出部765a,765bは、半径算出部764a,764bで算出された半径とHPF701a〜701cから入力される角速度とに基づいて、並進速度を算出する。
すなわち、X方向並進ブレ補正部704xの速度算出部765aは、半径算出部764aから入力されるヨー半径Ryawと、HPF701aから入力されるヨー角速度ωyawとを乗算することにより、ヨー回転運動に起因するX方向の並進速度(X軸方向へのX方向速度の第1成分)Ryaw×ωyawを算出する。
また、X方向並進ブレ補正部704xの速度算出部765bは、半径算出部764bから入力されるXZロール半径Rrollxと、HPF701cから入力されるロール角速度ωrollとを乗算することにより、ロール回転運動に起因するX方向の並進速度(X軸方向へのX方向速度の第2成分)Rrollx×ωrollを算出する。
X方向並進ブレ補正部704xの加算部766は、速度合成部であって、速度算出部765aの出力と速度算出部765bの出力とを加算することにより、ヨー回転運動とロール回転運動との両方に起因するX方向の並進速度(X方向速度)Vxを、以下の数式7に示すように算出する。
[数7]
Vx=Ryaw×ωyaw+Rrollx×ωroll
同様に、Y方向並進ブレ補正部704yの速度算出部765a,765bがY方向速度の第1成分Rpitch×ωpitchとY方向速度の第2成分Rrolly×ωrollとを各算出し、Y方向並進ブレ補正部704yの速度合成部である加算部766がこれらを加算することにより、ピッチ回転運動とロール回転運動との両方に起因するY方向の並進速度(Y方向速度)Vyを以下の数式8に示すように算出する。
[数8]
Vy=Rpitch×ωpitch+Rrolly×ωroll
X方向並進ブレ補正部704xの積分部767は、移動量算出部として機能し、算出されたX方向速度Vxを以下の数式9に示すように時間tに関して積分して、X軸方向への移動量ΔXを算出する。
[数9]
同様に、Y方向並進ブレ補正部704yの積分部767は、移動量算出部として機能し、算出されたY方向速度Vyを以下の数式10に示すように時間tに関して積分して、Y軸方向への移動量ΔYを算出する。
[数10]
こうして算出された移動量ΔX,ΔYは、角速度センサ8および加速度センサ9の移動量、つまりカメラ1自体の移動量である。これに対してブレ補正を行うためには、撮像素子4の撮像面上に結像される光学像の移動量を求める必要がある。そこで、乗算部768が、SIO72bおよび通信部705を介してシステムコントローラ6から入力されるパラメータである像倍率f(図13のステップS8参照)を、積分部767から入力される移動量ΔX,ΔYに乗算することにより、撮像面におけるブレ量に変換して補正量D(図13のステップS8参照)として出力する。
こうして算出された補正量D(並進ブレ量)は、上述したように、加算部706において、角度ブレ量と加算される。従って、ドライバ73は、加算後のトータルのブレ量に基づいて、駆動部5を駆動するための信号を出力することになる。
なお、数式5および数式6は、割り算によって各半径を求める式であるために、分母の絶対値が小さいと、算出される半径の誤差が拡大する可能性がある。この点について、図7〜図9を参照して説明する。まず、図7は角加速度および加速度の周期が半径を算出する時間間隔に比べて長いときの例を説明するための線図である。
角加速度および加速度の値が変化する周期が、半径を算出する時間t1,t2,…の間隔に比べて長いときには、例えば図7に示すようになる。ここに、図7の横軸(時間軸)は、図6に比べて圧縮されたものとなっている。
このような長い周期の角加速度および加速度に対して、第1の時刻T1=t1、第2の時刻T2=t2として各半径を算出し、引き続いて、第1の時刻T1=t2、第2の時刻T2=t3として各半径を算出し、さらに引き続いて、第1の時刻T1=t3、第2の時刻T2=t4として各半径を算出し、等を行うと、算出時間間隔における角加速度および加速度の変化量が小さいために、数式5および数式6における各式の分母の絶対値が小さくなる状態が発生することがある。
図8は、図7に示した角加速度および加速度の例において、ヨー半径Ryawを算出して得られる値の例を示す線図である。図示のように、実際のヨー半径Ryawを示す点線Realに対して、算出して得られるヨー半径Ryawを示す実線Calcは、算出式の分母の絶対値が小さくなる座標付近で誤差が拡大している。
また、図9は、図7に示した角加速度および加速度の例において、ロール半径Rroll(XZロール半径RrollxまたはYZロール半径Rrolly)を算出して得られる値の例を示す線図である。同様に、実際のロール半径Rrollを示す点線Realに対して、算出して得られるロール半径Rrollを示す実線Calcは、算出式の分母の絶対値が小さくなる座標付近で誤差が拡大している。
本実施形態では、このような、算出される半径の信頼性が低い場合に対応するための処理を行っており、これについては後で図14を参照して説明する。
続いて、半径算出部764a,764bで算出される半径の符号に関して、図10、図11、図12を参照して説明する。図10は回転運動の中心がカメラ1の撮影者側にある場合と被写体側にある場合とで半径算出部764a,764bで算出される半径の符号が異なることを説明するための図、図11は回転運動の中心がカメラ1の左側にある場合と右側にある場合とで半径算出部764a,764bで算出される半径の符号が異なることを説明するための図、図12は回転運動の中心がカメラ1の上側にある場合と下側にある場合とで半径算出部764a,764bで算出される半径の符号が異なることを説明するための図である。
半径算出部764a,764bは、数式5、数式6に示したように、半径Rを加速度と角加速度とから算出する。これら加速度と角加速度は、正の値と負の値の何れも取り得る。従って、算出される半径Rの符号は、加速度の符号と角加速度の符号との関係に応じて、正になる場合もあれば負になる場合もある。
こうして算出される半径Rをそのまま用いて、速度算出部765a,765bが並進速度成分を算出した場合に、半径Rの符号が正である場合と負である場合とでは、算出される速度の向きが反対になる。
例えば図10に示すように、回転運動の中心が、カメラ1よりも手前(撮影者側)にある場合と、被写体OBJ側にある場合とでは、算出される半径Rの符号が異なることになる。
図10を左側面方向から(X軸正側のカメラ1外部からX軸負方向へ向けて)カメラ1を見た図であるとすると、角速度センサ8が正の角速度(図1にピッチとして示すように、正は原点を見て右回りとなる)を検出した場合に、カメラ1の手前(撮影者側)に回転中心Crotがあるときに算出される速度は上方向の速度となるが、被写体OBJ側に回転中心Crevがあるときに算出される速度は下方向の速度となる。
また、図10を上側から下向きにカメラ1を見た図であるとすると、ヨー方向の回転運動についてもほぼ同様の説明が当てはまる(ただし、図1にヨーとして示したように、正は原点を見て左回りとなるために、上記とは正負逆となる)。
ここに、回転中心Crotがカメラ1よりも手前(撮影者側)にある場合というのは、主に、カメラ1を支持する軸の揺れによるもの、すなわち、カメラ1を把持する撮影者の手が揺れる、いわゆる手ブレであると考えられる。
また、回転中心Crevが被写体OBJ側にある場合というのは、主に、回転中心Crevが被写体OBJとなる場合、すなわち、狙いの被写体OBJがフレームの中心から外れたときに、フレームの中心に戻そうとする動きにより発生するものと考えられる。この種の動きは、連続的でない場合が多い。
次に、ロール回転運動について考えてみる。ロール回転運動は、X方向の移動量とY方向の移動量との両方に影響を与えるために、X方向の移動量に関わる係数としての半径と、Y方向の移動量に関わる係数としての半径と、の2つに分けて考えることにする。
Y方向の移動量に関わる半径Rの符号は、図11に示すように、回転中心がカメラ1の撮影者から見た右(Cright)にあるか左(Cleft)にあるかに応じて、正負が決まる。
また、X方向の移動量に関わる半径Rの符号は、図12に示すように、回転中心がカメラ1の上(Ctop)にあるか下(Cunder)にあるかに応じて、正負が決まる。
このロール回転運動に関する回転中心の位置は、主に、撮影姿勢に影響を受ける場合が多い。例えば、Y方向の移動量に関わる、回転中心がカメラ1の右(Cright)にあるか左(Cleft)にあるかは、撮影者がカメラ1を把持するグリップ位置の関係から右(Cright)になる場合が多い。また、X方向の移動量に関わる、回転中心がカメラ1の上(Ctop)にあるか下(Cunder)にあるかは、カメラ1を通常に構える場合には撮影者のひじがカメラ1よりも下になるために下(Cunder)にあるが、ローアングル撮影の場合は撮影者のひじがカメラ1よりも上になるために上(Ctop)になる。
以上述べたような半径の符号の取扱は、逆補正になる場合、つまりブレを補正するどころか拡大してしまうことになる場合もあるために、注意が必要である。
次に、並進ブレ補正部704におけるブレ量検出の制御の流れを説明する。まず図13は、並進ブレ量の検出のメイン制御を示すフローチャートである。この図13に示すメイン処理は、例えば1msの時間間隔で定期的に実行される処理となっている。
このメイン処理を開始すると、まず、平均化部761a,761bにより平均化された角速度の算出を行うとともに(ステップS1)と、平均化部761cにより平均化された加速度の算出を行う(ステップS2)。このステップS2で算出された平均化された加速度は、記憶部763cに記憶される。
次に、角加速度算出部762a,762bにより、ステップS1において算出された角速度を時間で微分して、角加速度を算出する(ステップS3)。ここで算出された角加速度は、記憶部763a,763bに記憶される。
続いて、半径算出部764a,764bにより、記憶部763a,763b,763cに記憶された加速度および角加速度を用いて、数式5、数式6に示したような演算を行うことにより、回転半径を算出する(ステップS4)。
その後、半径算出部764a,764bは、ステップS4において算出した回転半径が速度算出に使用可能であるか否かの信頼性判定をさらに行う(ステップS5)。
並進速度成分は、回転半径と角速度との乗算により算出されるために、回転半径の絶対値が大きい場合には、算出される並進速度成分の絶対値も大きくなり、つまり補正量も大きくなる。従って、もし回転半径に誤差が含まれている場合には、誤差に起因する補正量も大きくなり、誤補正に至る可能性がある。
このために、ステップS4において算出された回転半径を所定の閾値と比較して、回転半径が所定の閾値よりも大きい場合は、信頼性がないと判定して速度算出には用いないことにする(具体的な処理としては、半径算出部764a,764bから出力する回転半径を0とする:すなわち、回転半径を0クリアする)。
また、ステップS4において半径を算出するときに、数式5、数式6に示したように割り算を用いているために、分母が0近傍の値である場合には算出結果が極めて大きな値(場合によっては発散)となる。従って、絶対値が大きい回転半径を用いないようにすることで、このような0除算に起因する誤補正を防止することができる。
このステップS5における信頼性判定の方法は、上述に限るものではなく、その他の各種の方法を採用することが可能である。
例えば、回転半径の絶対値の大きさに基づき判定するのに代えて、もしくは加えて、数式5または数式6における、分母の絶対値が所定の値未満であることと、分子の絶対値が所定の値未満であることと、の少なくとも一方が成立する場合、つまり数式5または数式6の何れかの算出式における右辺の分母と分子の少なくとも一方の絶対値が予め定めた閾値よりも小さい場合には、半径算出部764a,764bは、その数式により算出された回転半径に信頼性がないと判定して、算出結果を用いることなく、回転半径0を出力するようにしても良い。
なお、回転半径を0クリアする場合としては、さらに、以下のような場合が挙げられる。
回転半径を0クリアする第1のケースは、静止状態が検出されている場合である。静止状態ではブレがないために、回転半径を0クリアすることにより、誤補正を防止することができる。この静止状態の検出方法としては、例えば、角速度センサ8の出力および加速度センサ9の出力が、ノイズ等と考えられる成分を除いて、所定時間以上、継続して実質的に0となることが挙げられる。また、静止状態であると検出される状態の他の一例は、三脚検出部等により三脚接続が検出されることである。この三脚接続の検出方法については、公知の種々の方法を利用可能であるために具体例は述べないこととする。
回転半径を0クリアする第2のケースは、パン操作が検出された場合である。パン操作は一般に手ブレには含まれず、しかも比較的大きな角度範囲で移動されるために駆動部5による補正レンジを超える場合が多い。加えて、パン操作が行われるとHPF(特にHPF701aやX軸方向の加速度に係るHPF)の影響が後に残るために、パン操作が行われた直後のしばらくの期間は正常な補正量の算出ができなくなる。従って、パン操作に係るヨー回転運動から算出される回転半径、つまり数式1により算出されるヨー半径Ryawを0クリアすることで、パン操作後のHPF701の影響による誤補正を防止することができる。なお、パン操作の検出は、角速度センサ8や加速度センサ9の検出値、つまり、HPF701a〜701e(特にHPF701aやHPF701d)からの出力(検出値)が所定の時間を超えて変化しないこと、または、検出値の符号が所定の時間を超えて変化しないことを検出することにより、判定することができる。
さらに、上述した以外にも、算出する補正量の信頼性が低いと判定された場合には、適宜、回転半径を0クリアすれば良い。
カメラ1には、角速度や加速度を検出して回転半径の算出は行うがブレ補正は行わない検出期間と、回転半径の算出と算出した回転半径を用いたブレ補正との両方を行う補正期間と、の2つの制御期間がある。この制御期間が検出期間であるか補正期間であるかは、例えばステートフラグに記録されるようになっている。
そして、ブレ補正マイクロコンピュータ7は、ステートフラグを参照することにより、制御期間が補正期間であるか否かを判定する(ステップS6)。
ここで補正期間中であると判定された場合には、速度算出部765a,765bおよび加算部766が、ステップS5において信頼性があると判定された半径Rと、角速度センサ8から出力される角速度ωとを数式7および数式8に示したように乗算して加算することにより、並進速度Vを算出する(ステップS7)。
さらに、積分部767が並進速度Vを時間で積分して、この積分結果に乗算部768が像倍率fを乗算することにより、撮像面に発生する並進移動量を算出する(ステップS8)。
このステップS8が終了するか、または上述したステップS6において補正期間でない(つまり検出期間である)と判定された場合には、このメイン処理を終了する。
図14は、図13のステップS4における回転半径算出の処理の詳細を示すフローチャートである。なお、この回転半径算出処理は、ヨー半径Ryaw、ピッチ半径Rpitch、XZロール半径Rrollx、YZロール半径Rrollyのそれぞれに対して行われる。
この回転半径算出処理は、図7〜図9を参照して上述したような算出される半径の信頼性が低い場合に対応する処理となっている。
すなわち、X方向並進ブレ補正部704xおよびY方向並進ブレ補正部704yの半径算出部764a,764bは、この処理を開始すると、第1の時刻T1と第2の時刻T2とが第1の時間間隔となるデータを用いて、数式5および数式6の各式における分母(本実施形態において、以下では、第1分母という)を算出する(ステップS11)。具体的には、図6や図7に示した各時刻t1,t2,…に対して、例えば、第1の時刻T1=t(i−1)、第2の時刻T2=tiとして第1分母を算出する。ここに、iは値が異なる場合に異なる時刻tを示す指標であり、例えば整数である。
次に、半径算出部764a,764bは、第1の時刻T1と第2の時刻T2とが第2の時間間隔となるデータを用いて、数式5および数式6の各式における分母(本実施形態において、以下では、第2分母という)を算出する(ステップS12)。具体的には、図6や図7に示した各時刻t1,t2,…に対して、例えば、第1の時刻T1=t(i−4)、第2の時刻T2=tiとして第2分母を算出する。なお、この例では、第2の時間間隔は第1の時間間隔の4倍であるが、これに限るものではなく、第1の時間間隔と第2の時間間隔とは適宜の比率で構わない。
続いて、半径算出部764a,764bは、第1分母の絶対値が第2分母の絶対値以上であるか否かを判定する(ステップS13)。この判定方法は、数式5および数式6の各式における分母の絶対値が大きい方が、算出される回転半径の信頼性が高いとする方法である。
ここで、第1分母の絶対値が第2分母の絶対値以上であると判定した場合には、半径算出部764a,764bは、第1時間間隔で回転半径を算出する(ステップS14)。
一方、第1分母の絶対値が第2分母の絶対値未満であると判定した場合には、半径算出部764a,764bは、第2時間間隔で回転半径を算出する(ステップS15)。
そして、ステップS14またはステップS15の処理を行ったところで、この回転半径算出処理から図13に示すメイン処理に復帰する。
なお、この図13に示す処理では第1の時間間隔のデータに基づき算出した分母と、第2の時間間隔のデータに基づき算出した分母と、の2種類の分母の信頼性判定を行ったが、さらに他の時間間隔のデータに基づくより多数種類の分母の信頼性判定を行っても勿論構わない。この場合には、例えば、最も絶対値が大きい分母を与えるデータに基づき算出される回転半径の信頼性が最も高いと判定すれば良い。
このような実施形態1によれば、ヨー方向の角速度から検出した横方向の移動速度とロール方向の角速度から検出した横方向の移動速度とを速度合成部で合成して横の移動速度を算出し、ピッチ方向の角速度から検出した縦方向の移動速度とロール方向の角速度から検出した縦方向の移動速度とを速度合成部で合成して縦の移動速度を算出するために、ヨー方向の角速度およびピッチ方向の角速度のみに基づいて算出した移動速度よりも正確に移動速度を検出することができる。
また、数式5および数式6に示したような加減乗除の演算により回転半径を算出することができるために、大きな演算負荷をかけることなく比較的簡単に半径を算出することができる。
このとき、複数の時間間隔のデータに基づき算出される回転半径の内の、数式5および数式6の各式における分母の絶対値が大きいものを信頼性が高いと判定するようにしたために、分母の絶対値が小さい場合の誤差拡大を防ぐことができる。
さらに、角速度センサおよび加速度センサによって検出された角速度および加速度を所定回数分のサンプリングデータで平均化しているために、後段の微分処理において強調される高周波成分の影響を抑制することができる。そして、平均化によって複数サンプル分のデータを1サンプルのデータとして扱うことができるために、処理対象のデータ量が圧縮されて、演算負荷を低減することができる。
そして、角速度を微分して角加速度を算出し、算出した角加速度と検出した加速度とに基づいて半径を算出するようにし、つまり半径算出における積分演算を不要としたために、積分演算を行う場合に累積する可能性がある誤差を回避することができ、累積誤差による誤算出が生じない利点がある。
加えて、算出される半径の信頼性が低い場合には半径として0を出力するようにしたために、半径の誤算出による誤補正を未然に防止することができる。
こうして、撮像装置であるカメラ1に発生する並進移動量を、ヨーおよびピッチの回転運動によるものに加えて、ロールの回転運動による影響も考慮するようにしたために、簡易な構成で、補正量を従来よりも精度良く算出することができる。そして、検出した移動量によるブレ量を打ち消すように撮像素子を駆動することにより、並進ブレ量を除去した画像をカメラ1で撮影することができる。
すなわち、比較的簡易な処理で、並進ブレ量をより正確に検出することができるブレ量検出装置、撮像装置、ブレ量検出方法となる。
[実施形態1の変形例]
ここで、上述した第1の実施形態の変形例を説明する。
第1の実施形態では、上述したように、角速度を微分して角加速度を算出し、算出した角加速度と検出した加速度とに基づいて半径を算出したが、この変形例は、加速度を積分して速度を算出し、算出した速度と角速度とに基づいて半径を算出するものである。
すなわち、回転半径は、角加速度と加速度とに基づいて算出するに限るものではなく、角速度と速度とに基づいて算出することも可能である。
この場合には、図5に示す構成において、角加速度算出部762a,762bを削除し(後述する図17において、平均化部761aと記憶部763dとの間、および平均化部761bと記憶部763eとの間に角加速度算出部がない例を参照)、平均化部761cと記憶部763cとの間に積分部を追加する(後述する図17において、平均化部761dの前段に設けられた、加速度を積分して速度を算出する積分部769参照)ことになる。この実施形態1の変形例においては、積分部は、図5の平均化部761cから出力される平均化された加速度を積分して、速度を算出する。具体的に、X方向並進ブレ補正部704xの積分部はX速度vxを算出し、Y方向並進ブレ補正部704yの積分部はY速度vyを算出する。
従って、本変形例においては、X方向並進ブレ補正部704xの半径算出部764a,764bに入力されるのは、ヨー角速度ωyaw、ロール角速度ωroll、およびX速度vxであり、Y方向並進ブレ補正部704yの半径算出部764a,764bに入力されるのは、ピッチ角速度ωpitch、ロール角速度ωroll、およびY速度vyである。
このとき、ヨー角速度ωyawと、ロール角速度ωrollと、ヨー半径Ryawと、XZロール半径Rrollxと、X速度vxとの間には、上述した数式7に示すような関係式が成立している。
同様に、ピッチ角速度ωpitchと、ロール角速度ωrollと、ピッチ半径Rpitchと、YZロール半径Rrollyと、Y速度vyとの間には、上述した数式8に示すような関係式が成立している。
そして、数式7における測定可能量はヨー角速度ωyaw、ロール角速度ωroll、およびX速度vxであり、求めたい量はヨー半径RyawおよびXZロール半径Rrollxである。
同様に、数式8における測定可能量はピッチ角速度ωpitch、ロール角速度ωroll、およびY速度vyであり、求めたい量はピッチ半径RpitchおよびYZロール半径Rrollyである。
数式7および数式8の何れにおいても、未知数(求めたい量)が2つあるために、上述と同様に、第1の時刻T1における数式7と第2の時刻T2における数式7とを以下の数式11に示すように連立させ、同様に、第1の時刻T1における数式8と第2の時刻T2における数式8とを以下の数式12に示すように連立させる。
[数11]
[数12]
ここに、数式11および数式12においても、第1の時刻T1における各半径と、第2の時刻T2における各半径とは、変化量が小さく無視し得ると仮定している。
そして、数式11の連立方程式の解は以下の数式13、数式12の連立方程式の解は以下の数式14に示すようになる。
[数13]
[数14]
そこで、X方向並進ブレ補正部704xの半径算出部764aは、記憶部763aに記憶されている第1の時刻T1におけるヨー角速度ωyaw(T1)および第2の時刻T2におけるヨー角速度ωyaw(T2)と、記憶部763bに記憶されている第1の時刻T1におけるロール角速度ωroll(T1)および第2の時刻T2におけるロール角速度ωroll(T2)と、記憶部763cに記憶されている第1の時刻T1におけるX速度vx(T1)および第2の時刻T2におけるX速度vx(T2)とを用いて、数式13における第1式に基づいてヨー半径Ryawを算出する。
また、X方向並進ブレ補正部704xの半径算出部764bは、X方向並進ブレ補正部704xの半径算出部764aが用いるデータと同一のデータを用いて、数式13における第2式に基づいてXZロール半径Rrollxを算出する。
同様に、Y方向並進ブレ補正部704yの半径算出部764aは、記憶部763aに記憶されている第1の時刻T1におけるピッチ角速度ωpitch(T1)および第2の時刻T2におけるピッチ角速度ωpitch(T2)と、記憶部763bに記憶されている第1の時刻T1におけるロール角速度ωroll(T1)および第2の時刻T2におけるロール角速度ωroll(T2)と、記憶部763cに記憶されている第1の時刻T1におけるY速度vy(T1)および第2の時刻T2におけるY速度vy(T2)とを用いて、数式14における第1式に基づいてピッチ半径Rpitchを算出する。
また、Y方向並進ブレ補正部704yの半径算出部764bは、Y方向並進ブレ補正部704yの半径算出部764aが用いるデータと同一のデータを用いて、数式14における第2式に基づいてYZロール半径Rrollyを算出する。
ここに、半径算出部764a,764bが利用する各時刻における速度は、同時刻における加速度を少なくとも用いて得られる量である。
その他の処理は、上述した実施形態1と同様である。
この変形例の処理によっても、各半径の算出を上述した実施形態1と同様に行うことができるが、本変形例では加速度センサ9により検出した加速度を積分して速度を算出する必要がある。この積分演算は、加速度センサ9のドリフトなどノイズの影響を強調して算出される半径の精度を低下させる可能性もあるために、本変形例の構成を採用する場合には、より厳しい基準を設けて信頼性判定を行うことが望ましい。
[実施形態2]
図15および図16は本発明の実施形態2を示したものであり、図15はブレ補正マイクロコンピュータの構成を示すブロック図、図16は図13のステップS4における回転半径算出の処理の詳細を示すフローチャートである。この実施形態2において、上述の実施形態1と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
図15に示すように、本実施形態におけるブレ補正マイクロコンピュータ7は、図4に示した実施形態1のブレ補正マイクロコンピュータ7の構成に、周波数検出部709を追加したものとなっている。
すなわち、周波数検出部709は、角速度センサ8により検出されるロール角速度とヨー角速度とピッチ角速度との内の少なくとも1つの周波数を検出するものである。ただし、本実施形態では、周波数検出部709は、ロール角速度、ヨー角速度、およびピッチ角速度の周波数をそれぞれ検出するものとする。
この周波数検出部709により検出された周波数は、X方向並進ブレ補正部704xの半径算出部764a,764bと、Y方向並進ブレ補正部704yの半径算出部764a,764bとへ出力される。
そして、X方向並進ブレ補正部704xおよびY方向並進ブレ補正部704yの半径算出部764a,764bは、上述した実施形態1の図14に示したような回転半径算出処理に代えて、図16に示すような回転半径算出処理を行う。
まず、半径算出部764a,764bは、周波数検出部709から周波数を入力する(ステップS21)。ここに、入力する周波数は、ロール角速度、ヨー角速度、およびピッチ角速度の各周波数の内の、カメラ1のブレ状態が最も適切に反映されていると考えられる代表的な1つの周波数であっても構わないし、各周波数の内の最も低い周波数(すなわち、最も波長が長い角速度に対応する周波数)であっても良い。あるいは、ロール角速度、ヨー角速度、およびピッチ角速度の全てを入力して平均値を計算し、その平均値を後段の処理に利用しても構わない。
さらにあるいは、どの半径算出部764a,764bであるかに応じて入力する周波数を異ならせても良い。例えば、X方向並進ブレ補正部704xの半径算出部764aが入力する周波数はヨー角速度ωyawの周波数、X方向並進ブレ補正部704xの半径算出部764bが入力する周波数はロール角速度ωrollの周波数、Y方向並進ブレ補正部704yの半径算出部764aが入力する周波数はピッチ角速度ωpitchの周波数、Y方向並進ブレ補正部704yの半径算出部764bが入力する周波数はロール角速度ωrollの周波数とする、などが考えられる。
次に、半径算出部764a,764bは、周波数検出部709により検出された周波数が低くなるほど、回転半径の算出時間間隔、つまり第1の時刻T1と第2の時刻T2との時間間隔が長くなるように設定する(ステップS22)。一例としては、時間間隔(T2−T1)が、検出された周波数に反比例するように設定することが考えられる。
ただし、角速度センサ8は上述したように所定の時間間隔毎に検出を行っており、平均化部761a,761b,761cから出力されるデータには一定の時間間隔がある。従って、実際に設定される時間間隔(T2−T1)は、例えば、(t2−t1),(t3−t1),(t4−t1),…等(図6や図7参照)の何れかに設定されることになる。
そして、半径算出部764a,764bは、第1の時刻T1と第2の時刻T2とが設定された時間間隔となるようにして、各半径の算出を行い(ステップS23)、その後、この回転半径算出処理から図13に示すメイン処理に復帰する。
このような実施形態2によれば、上述した実施形態1とほぼ同様の効果を奏するとともに、角速度が変化する周期を検出して、検出した周期に基づき回転半径を算出する時間間隔を設定するようにしたために、数式5および数式6の各式における分母の絶対値が小さい場合の誤差拡大を、適応的に抑制することが可能となる。
[実施形態3]
図17から図19は本発明の実施形態3を示したものであり、図17はX方向並進ブレ補正部704xの構成を示すブロック図、図18は図13のステップS4における回転半径算出の処理の詳細を示すフローチャート、図19は図13のステップS4における回転半径算出の処理の変形例の詳細を示すフローチャートである。
この実施形態3において、上述の実施形態1,2と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
上述した実施形態1は、複数の異なる時間間隔のデータに基づき算出される回転半径の内の信頼性が高いものを選択していた。また、上述した実施形態2は、角速度の変化周期に応じて回転半径を算出する時間間隔を異ならせていた。これに対して、この実施形態3は、角加速度および加速度に基づいて回転半径を算出するだけでなく、さらに、角速度および速度に基づいて回転半径を算出して、異なる算出方法で算出された回転半径の内の信頼性が高いものを選択するものとなっている。
まず、本実施形態のブレ補正マイクロコンピュータ7は、上述した実施形態2の図15に示した構成のもの、すなわち、周波数検出部709を備えたものとなっている。
また、図17に示す本実施形態のX方向並進ブレ補正部704x(および、図示はしないがY方向並進ブレ補正部704y)は、図5に示した実施形態1のX方向並進ブレ補正部704x(あるいは実施形態1のY方向並進ブレ補正部704y)の構成に、積分部769と、平均化部761dと、記憶部763d,763e,763fとを追加したものとなっている。
記憶部763dは、平均化部761aから出力される平均化された角速度(X方向並進ブレ補正部704xの場合にはヨー角速度ωyaw、Y方向並進ブレ補正部704yの場合にはピッチ角速度ωpitch)を、半径算出部764a,764bにおける半径算出に必要な過去データ分まで記憶する。
記憶部763eは、平均化部761bから出力される平均化されたロール角速度ωrollを、半径算出部764a,764bにおける半径算出に必要な過去データ分まで記憶する。
従って、図13のステップS1において平均化部761a,761bにより算出された平均化された角速度は、記憶部763d,763eにそれぞれ記憶されることになる。
積分部769は、X方向並進ブレ補正部704xの場合にはHPF701dから入力されるX加速度を積分してX速度を算出し、Y方向並進ブレ補正部704yの場合にはHPF701eから入力されるY加速度を積分してY速度を算出する。
平均化部761dは、積分部769から時系列的に入力される速度を平均化する。この平均化が、例えば、4サンプリング分のデータの平均値を算出し、1つのサンプリング値として出力することにより行われるのは上述と同様である。
記憶部763fは、平均化部761dにより平均化された速度(X速度VxまたはY速度Vy)を、半径算出部764a,764bにおける半径算出に必要な過去データ分まで記憶する。
そして、半径算出部764a,764bは、数式5および数式6を用いた回転半径の算出と、数式13および数式14を用いた回転半径の算出と、の両方を行う。
次に、図18を参照して、本実施形態における回転半径算出の処理について説明する。
この処理を開始すると、積分部769が加速度を積分することにより、速度を算出する(ステップS31)。
続いて、平均化部761dが平均化した速度を算出する(ステップS32)。このステップS32で算出された平均化された速度は、記憶部763fに記憶される。
そして、半径算出部764a,764bが、記憶部763a,763b,763cに記憶されている角加速度および加速度に基づいて、数式5および数式6の各式における分母(本実施形態において、以下では、第1分母という)を算出する(ステップS33)。
さらに、半径算出部764a,764bは、記憶部763d,763e,763fに記憶されている角速度および速度に基づいて、数式13および数式14の各式における分母(本実施形態において、以下では、第2分母という)を算出する(ステップS34)。
その後、半径算出部764a,764bは、ステップS33において算出した第1分母の絶対値が、ステップS34において算出した第2分母に周波数検出部709により検出された周波数を乗算したものの絶対値以上であるか否かを判定する(ステップS35)。この判定方法は、基本的に、数式5および数式6の分母の絶対値と、数式13および数式14の分母の絶対値との内の大きい方が、算出される回転半径の信頼性が高いとする方法である。ただし、数式5および数式6の分母と数式13および数式14の分母とは次元(ディメンジョン)が異なるので、次元を合わせるために第2分母には周波数を乗算している。
ここで、第1分母の絶対値が第2分母に周波数を乗算したものの絶対値以上であると判定した場合には、半径算出部764a,764bは、角加速度および加速度に基づいて回転半径を算出する(ステップS36)。
一方、第1分母の絶対値が第2分母に周波数を乗算したものの絶対値未満であると判定した場合には、半径算出部764a,764bは、角速度および速度に基づいて回転半径を算出する(ステップS37)。
そして、ステップS36またはステップS37の処理を行ったところで、この回転半径算出処理から図13に示すメイン処理に復帰する。
また、図19を参照して、本実施形態における回転半径算出の処理の変形例について説明する。
図18に示した回転半径算出処理は、角加速度および加速度に基づいて算出された回転半径と、角速度および速度に基づいて算出された回転半径と、の信頼性判定を、算出式の分母に基づいて行ったが、この図19に示す回転半径算出処理は、算出した回転半径自体に基づき行うものとなっている。
すなわち、この図19に示す処理に入ると、半径算出部764a,764bは、上述したステップS31およびステップS32の処理を行う。
そして、半径算出部764a,764bは、記憶部763a,763b,763cに記憶されている角加速度および加速度に基づいて、数式5および数式6の各式により回転半径(本実施形態において、以下では、第1回転半径という)を算出する(ステップS41)。
さらに、半径算出部764a,764bは、記憶部763d,763e,763fに記憶されている角速度および速度に基づいて、数式13および数式14の各式により回転半径(本実施形態において、以下では、第2回転半径という)を算出する(ステップS42)。
その後、半径算出部764a,764bは、ステップS41において算出した第1回転半径の絶対値が、ステップS42において算出した第2回転半径の絶対値以下であるか否かを判定する(ステップS43)。この判定方法は、数式5および数式6により算出された回転半径と、数式13および数式14により算出された回転半径との内の絶対値の小さい方が、信頼性が高いとする方法である。
ここで、第1回転半径の絶対値が第2回転半径の絶対値以下であると判定した場合には、半径算出部764a,764bは、第1回転半径を回転半径に設定して出力する(ステップS44)。
一方、第1回転半径の絶対値が第2回転半径の絶対値よりも大きいと判定した場合には、半径算出部764a,764bは、第2回転半径を回転半径に設定して出力する(ステップS45)。
そして、ステップS44またはステップS45の処理を行ったところで、この回転半径算出処理から図13に示すメイン処理に復帰する。
このような実施形態3によれば、上述した実施形態1,2とほぼ同様の効果を奏するとともに、次元の異なるデータに基づき算出された2つの回転半径の内の、信頼性が高いと判定される回転半径を選択するようにしたために、より確実に適切な回転半径を算出することが可能となる。特に、角加速度および加速度に基づいて算出された回転半径と、角速度および速度に基づいて算出された回転半径とが同時に信頼性が低くなる確率はかなり低いと考えられるために、適切な回転半径が算出される確実性が高い利点がある。
また、算出式の分母に基づき信頼性の判定を行う場合には、分母の絶対値が小さく回転半径が極端に大きくなるのを防止することができる。
一方、算出した回転半径自体に基づいて信頼性の判定を行う場合には、算出される回転半径が適切な範囲内であるか否かを確実に判定することができる。ブレの発生原因が例えばカメラ1を保持する撮影者の腕の揺れ等である場合には、回転半径は一定の範囲内にあると推定されるために、この判定方法はこのような場合に特に効果的である。
なお、この実施形態3における、次元の異なるデータに基づき2つの回転半径を算出する技術を、実施形態1における複数の異なる時間間隔のデータに基づき算出する技術、あるいは実施形態2における角速度の変化周期に応じて回転半径を算出する時間間隔を異ならせる技術と組み合わせても良いことは勿論である。
[実施形態4]
図20は本発明の実施形態4を示したものであり、X方向並進ブレ補正部704xの構成を示すブロック図である。
この実施形態4において、上述の実施形態1と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
なお、実施形態1と同様に、Y方向並進ブレ補正部704yは、X方向ブレ補正部704xと構成が同一であって、入力がヨー角速度に代えてピッチ角速度、X加速度に代えてY加速度になるだけである。従って、Y方向並進ブレ補正部704yについては、詳細な説明は適宜省略する。
まず、図20に示す本実施形態のX方向並進ブレ補正部704x(および、図示はしないがY方向並進ブレ補正部704y)は、図5に示した実施形態1のX方向並進ブレ補正部704x(あるいは実施形態1のY方向並進ブレ補正部704y)におけるブレ量算出部775とは異なる構成のブレ量算出部776を備えている。
本実施形態のブレ量算出部776は、速度算出部765a,765bと、移動量算出部として機能する積分部770a,770bと、移動量合成部として機能する加算部771と、を備えている。そして、加算部771による算出結果は、乗算部768へ出力されるようになっている。
X方向並進ブレ補正部704xの速度算出部765a,765bは、上述した実施形態1と同様に、ヨー回転運動に起因するX方向の並進速度(X方向速度の第1成分)Ryaw×ωyawと、ロール回転運動に起因するX方向の並進速度(X方向速度の第2成分)Rrollx×ωrollと、を算出する。
X方向並進ブレ補正部704xの積分部770a,770bは、速度算出部765a,765bで算出された並進速度を積分する。すなわち、積分部770aは、速度算出部765aで算出されたヨー回転運動に起因するX方向の並進速度(X方向速度の第1成分)を以下の数式15に示すように時間tに関して積分して、X方向並進移動量の第1成分ΔXyawを算出する。
[数15]
ΔXyaw=∫(Ryaw×ωyaw)dt
同様に、積分部770bは、速度算出部765bで算出されたロール回転運動に起因するX方向の並進速度(X方向速度の第2成分)を以下の数式16に示すように時間tに関して積分して、X方向並進移動量の第2成分ΔXrollを算出する。
[数16]
ΔXroll=∫(Rrollx×ωroll)dt
X方向並進ブレ補正部704xの加算部771は、算出されたX方向並進移動量の第1成分ΔXyawと、X方向並進移動量の第2成分ΔXrollとを以下の数式17に示すように加算して、X方向並進移動量ΔXを算出する。
[数17]
ΔX=ΔXyaw+ΔXroll
Y方向並進ブレ補正部704yは、上述したX方向並進ブレ補正部704xと同様に、Y方向並進移動量ΔYを算出する。
以下、Y方向並進ブレ補正部704yについて説明する。
Y方向並進ブレ補正部704yの速度算出部765a,765bが、Y方向速度の第1成分Rpitch×ωpitchとY方向速度の第2成分Rrolly×ωrollとを算出する。
Y方向並進ブレ補正部704yの積分部770aは、速度算出部765aで算出されたピッチ回転運動に起因するY方向の並進速度(Y方向速度の第1成分)を以下の数式18に示すように時間tに関して積分して、Y方向並進移動量の第1成分ΔYpitchを算出する。
[数18]
ΔYpitch=∫(Rpitch×ωpitch)dt
Y方向並進ブレ補正部704yの積分部770bは、速度算出部765bで算出されたロール回転運動に起因するY方向の並進速度(Y方向速度の第2成分)を以下の数式19に示すように時間tに関して積分して、Y方向並進移動量の第2成分ΔYrollを算出する。
[数19]
ΔYroll=∫(Rrolly×ωroll)dt
Y方向並進ブレ補正部704yの加算部771は、算出されたY方向並進移動量の第1成分ΔYpitchと、Y方向並進移動量の第2成分ΔYrollとを以下の数式20に示すように加算して、Y方向並進移動量ΔYを算出する。
[数20]
ΔY=ΔYpitch+ΔYroll
こうして算出された移動量ΔX,ΔYは、実施形態1と同様に、乗算部768で撮像面におけるブレ量に変換される。
このような実施形態4によれば、上述した実施形態1と同様の効果を奏する。
なお、この実施形態4における、ブレ補正量算出部776によるブレ補正量算出技術を、実施形態2における角速度の変化周期に応じて回転半径を算出する時間間隔を異ならせる技術、あるいは、実施形態3における次元の異なるデータに基づき2つの回転半径を算出する技術と組み合わせても良いことは勿論である。
[実施形態5]
図21は本発明の実施形態5を示したものであり、X方向並進ブレ補正部704xの構成を示すブロック図である。
この実施形態5において、上述の実施形態1と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
なお、実施形態1と同様に、Y方向並進ブレ補正部704yは、X方向ブレ補正部704xと構成が同一であって、入力がヨー角速度に代えてピッチ角速度、X加速度に代えてY加速度になるだけである。従って、Y方向並進ブレ補正部704yについては、詳細な説明は適宜省略する。
まず、図21に示す本実施形態のX方向並進ブレ補正部704x(および、図示はしないがY方向並進ブレ補正部704y)は、図5に示した実施形態1のX方向並進ブレ補正部704x(あるいは実施形態1のY方向並進ブレ補正部704y)におけるブレ量算出部775とは異なる構成のブレ量算出部777を備えている。
本実施形態のブレ量算出部777は、角度算出部として機能する積分部772a,772bと、移動量算出部として機能する乗算部773a,773bと、移動量合成部として機能する加算部774と、を備えている。そして、加算部774による算出結果は、乗算部768へ出力されるようになっている。
X方向並進ブレ補正部704xの積分部772aは、以下の数式21に示すように、入力されるヨー角速度ωyawを時間tに関して積分して、ヨー方向の回転角度(ヨー角度)θyawを算出する。
[数21]
θyaw=∫ωyawdt
X方向並進ブレ補正部704xの積分部772bは、以下の数式22に示すように、入力されるロール角速度ωrollを時間tに関して積分して、ロール方向の回転角度(ロール角度)θrollを算出する。
[数22]
θroll=∫ωrolldt
X方向並進ブレ補正部704xの乗算部773aは、以下の数式23に示すように、ヨー角度θyawと、半径算出部764aで算出されたヨー半径Ryawとを乗算して、X方向並進移動量の第1成分ΔXyawを算出する。
[数23]
ΔXyaw=θyaw×Ryaw
X方向並進ブレ補正部704xの乗算部773bは、以下の数式24に示すように、ロール角度θrollと、半径算出部764bで算出されたXZロール半径Rrollxとを乗算して、X方向並進移動量の第2成分ΔXrollを算出する。
[数24]
ΔXroll=θroll×Rrollx
X方向並進ブレ補正部704xの加算部774は、算出されたX方向並進移動量の第1成分ΔXyawと、X方向並進移動量の第2成分ΔXrollとを以下の数式25に示すように加算して、X方向並進移動量ΔXを算出する。
[数25]
ΔX=ΔXyaw+ΔXroll
Y方向並進ブレ補正部704yは、上述したX方向並進ブレ補正部704xと同様に、Y方向並進移動量ΔYを算出する。
以下、Y方向並進ブレ補正部704yについて説明する。
Y方向並進ブレ補正部704yの積分部772aは、以下の数式26に示すように、入力されるピッチ角速度ωpitchを時間tに関して積分して、ピッチ方向の回転角度(ピッチ角度)θpitchを算出する。
[数26]
θpitch=∫ωpitchdt
Y方向並進ブレ補正部704yの積分部772bは、以下の数式27に示すように、入力されるロール角速度ωrollを時間tに関して積分して、ロール方向の回転角度(ロール角度)θrollを算出する。
[数27]
θroll=∫ωrolldt
Y方向並進ブレ補正部704yの乗算部773aは、以下の数式28に示すように、ピッチ角度θpitchと、半径算出部764aで算出されたピッチ半径Rpitchを乗算して、Y方向並進移動量の第1成分ΔYpitchを算出する。
[数28]
ΔYpitch=θpitch×Rpitch
Y方向並進ブレ補正部704yの乗算部773bは、以下の数式29に示すように、ロール角度θrollと、半径算出部764bで算出されたYZロール半径Rrollyを乗算して、Y方向並進移動量の第2成分ΔYrollを算出する。
[数29]
ΔYroll=θroll×Rrolly
加算部774は、算出されたY方向並進移動量の第1成分ΔYpitchと、Y方向並進移動量の第2成分ΔYrollとを以下の数式30に示すように加算して、Y方向並進移動量ΔYを算出する。
[数30]
ΔY=ΔYpitch+ΔYroll
こうして算出された移動量ΔX,ΔYは、実施形態1と同様に、乗算部768で撮像面におけるブレ量に変換される。
このような実施形態5によれば、上述した実施形態1と同様の効果を奏するとともに、一般的に角度ブレ補正部703では角速度を積分して回転角度を算出するため、角度算出部である積分部772a,772bを角度ブレ補正部703と並進ブレ補正部704とで共有化することが可能となり、処理速度の向上やプログラムメモリの削減を図ることができる。
なお、上述では主としてブレ量検出装置やブレ量検出装置を備える撮像装置について説明したが、ブレ量検出を上述したように行うブレ量検出方法やブレ量検出装置等を上述したように制御する制御方法であっても良いし、ブレ量検出を上述したように行う処理プログラム、コンピュータにブレ量検出装置等を上述したように制御させるための制御プログラム、該処理プログラムや該制御プログラムを記録するコンピュータにより読み取り可能な記録媒体、などであっても構わない。
さらに、本発明は上述した実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。このように、発明の主旨を逸脱しない範囲内において種々の変形や応用が可能であることは勿論である。