(57)【要約】【課題】カメラの振れを検出する角速度センサの出力値（入力データ）を取り込み、所定の平均値算出期間での入力データの平均値を算出すると共に、該平均値を開始時刻を順次遅らせた重複する複数の平均値算出期間で算出し、各平均値算出期間での平均値が算出されるごとに角速度センサのヌル電圧（基準値）として順次で更新し、パンニング等の判断を行うようにすることで、角速度センサの出力の基準値を正確に検出してパンニング等の判断を的確に行うことができるようにする像振れ補正装置を提供する。【解決手段】  角速度センサ１０からＨＰＦ１２に入力する前の角速度信号からパンニング検出用の角速度信号が分岐され、アンプ３０を介してＣＰＵ３６に入力される。ＣＰＵ３６は、入力された角速度信号のヌル電圧（基準値）を算出し、その基準値に対する角速度信号の変化量に基づいてパンニングが行われているか否かを判断する。【選択図】      図１
2006011252.tif 000002
【特許請求の範囲】
【請求項１】
像を結像する光学系と、前記光学系に加わった振動に応じた振れ信号を出力する振れ検出手段と、前記像を変位させる像変位手段と、前記振れ検出手段により出力された振れ信号に基づいて前記光学系に加わった振動に起因する像振れを打ち消すように前記像変位手段により像を変位させて像振れ補正を行う像振れ補正手段と、前記振れ検出手段により出力された振れ信号の所定の基準値からの変化量に基づいてパンニング又はチルティング等の撮影構図変更動作が行われているか否かを判定する撮影構図変更動作判定手段と、前記撮影構図変更動作判定手段により撮影構図変更動作が行われていると判定された場合に、前記像振れ補正手段による像振れ補正を停止、又は、像振れ補正の効果を低減する撮影構図変更動作時処理手段と、を備えた像振れ補正装置において、
前記振れ検出手段から出力される振れ信号の値を入力データとして順次取り込むデータ取込手段と、
前記データ取込手段により所定の平均値算出期間に取り込まれた入力データの平均値を算出すると共に、前記平均値算出期間を周期的に繰り返すことによって前記平均値を繰り返し算出する１つの平均系列の演算処理を、複数の平均系列の演算処理で並行して行うと共に、前記平均値算出期間の開始時刻を前記各平均系列の演算処理ごとに所定時間ずつ順次遅らせて前記平均値を算出する平均値算出手段と、
前記平均値算出手段における各平均系列の演算処理によって算出された平均値を前記撮影構図変更動作判定手段における基準値として更新する基準値更新手段と、
を備えたことを特徴とする像振れ補正装置。
【請求項２】
前記平均値算出手段は、前記各平均系列の演算処理によって前記平均値が均等な時間間隔で算出されるように、前記平均値算出期間の開始時刻を前記各平均系列の演算処理ごとに所定時間ずつ順次遅らせることを特徴とする請求項１の像振れ補正装置。
【請求項３】
前記平均値算出手段は、前記各平均系列の演算処理において、前記データ取込手段により所定の平均値算出期間内の入力データが取り込まれ、該入力データを、前記所定の平均値算出期間内においてそれまでに取り込まれた入力データの総和値に加算し、該加算して得た値を総和値として次の入力データが加算されるまで記憶することを特徴とする請求項１又は２の像振れ補正装置。
【請求項４】
前記平均値算出手段において各時点で行われている前記各平均系列の演算処理の平均値算出期間のうち、前記各時点までに取り込まれた入力データの数が最大となる平均値算出期間の入力データの平均値を算出し、該算出した平均値を前記各平均系列の演算処理において想定する前記振れ信号の仮想の基準値とする仮想基準値設定手段を備えたことを特徴とする請求項１、２又は３の像振れ補正装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は像振れ補正装置に係り、特に振動によるカメラの像振れを補正（防止）する像振れ補正装置に関する。
【背景技術】
【０００２】
テレビカメラの像振れ補正装置として、撮影光学系に防振レンズを光軸と直交する面内で移動自在に配置し、カメラ（カメラの撮影光学系）に振動が加わると、その振動による像振れを打ち消すように防振レンズをアクチュエータで駆動して像振れを補正するようにしたものが知られている（例えば、特許文献１、２等参照）。このような像振れ補正装置では、カメラに加わった振動を検出する振れ検出センサとして例えば角速度センサが用いられており、その角速度センサから得られた角速度信号を積分処理することによって像振れを打ち消すための防振レンズの変位量が求められてそれに従って防振レンズが駆動されるようになっている。
【０００３】
ところで、角速度センサの出力には、無振動時であっても直流のヌル電圧が生じている。ヌル電圧は、温度や時間経過などによっても変動する。そのため、角速度センサから出力された角速度信号をそのまま積分処理し、防振レンズの変位量を算出すると、ヌル電圧の影響で防振レンズの変位量に誤差が生じてしまうという問題がある。これに対して、従来、センサ出力の平均をとることによってヌル電圧を検出し、そのヌル電圧をセンサ出力の基準値とする方法や、特許文献３のように角速度センサから出力された角速度信号をローパスフィルタに通してヌル電圧（基準値）の検出を行うと共に、所定の方法で基準値を予測することによって真の基準値に収束するのを早めるようにした方法等が提案されている。
【０００４】
また、角速度センサの出力は、カメラマンによるパンニングやチルティングなどの撮影構図変更動作の検出にも使用されている。パンニングが行われている間は、例えば、像振れ補正を停止させるような処理が行われるが、パンニングの始まりと終了を正確に検出しなければ、一般に「揺れ戻し」と呼ばれる現象が生じてしまう不具合がある。このパンニングの検出では、角速度センサのヌル電圧を基準とするため、ヌル電圧を正確に把握している必要がある。
【特許文献１】特開２００１−１４２１０３号公報
【特許文献２】特開２００３−１０７５５４号公報
【特許文献３】特開２００２−９９０１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、角速度センサのヌル電圧は無振動時にしか測定できないので振動の多い環境では測定間隔が長くなり、その間に温度ドリフト等があれば誤動作する場合があった。また、従来のように単に角速度センサの出力の平均をヌル電圧（基準値）とする方法も、真の基準値自体が変化し、また、基準値を更新する際に値に段差が生じるため問題があった。
【０００６】
本発明はこのような事情に鑑みてなされたもので、振れ検出センサの出力のヌル電圧（基準値）を正確に検出し、パンニングやチルティング等の撮影構図変更動作の検出を的確に行うことができる像振れ補正装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
前記目的を達成するために、請求項１に記載の像振れ補正装置は、像を結像する光学系と、前記光学系に加わった振動に応じた振れ信号を出力する振れ検出手段と、前記像を変位させる像変位手段と、前記振れ検出手段により出力された振れ信号に基づいて前記光学系に加わった振動に起因する像振れを打ち消すように前記像変位手段により像を変位させて像振れ補正を行う像振れ補正手段と、前記振れ検出手段により出力された振れ信号の所定の基準値からの変化量に基づいてパンニング又はチルティング等の撮影構図変更動作が行われているか否かを判定する撮影構図変更動作判定手段と、前記撮影構図変更動作判定手段により撮影構図変更動作が行われていると判定された場合に、前記像振れ補正手段による像振れ補正を停止、又は、像振れ補正の効果を低減する撮影構図変更動作時処理手段と、を備えた像振れ補正装置において、前記振れ検出手段から出力される振れ信号の値を入力データとして順次取り込むデータ取込手段と、前記データ取込手段により所定の平均値算出期間に取り込まれた入力データの平均値を算出すると共に、前記平均値算出期間を周期的に繰り返すことによって前記平均値を繰り返し算出する１つの平均系列の演算処理を、複数の平均系列の演算処理で並行して行うと共に、前記平均値算出期間の開始時刻を前記各平均系列の演算処理ごとに所定時間ずつ順次遅らせて前記平均値を算出する平均値算出手段と、前記平均値算出手段における各平均系列の演算処理によって算出された平均値を前記撮影構図変更動作判定手段における基準値として更新する基準値更新手段と、を備えたことを特徴としている。
【０００８】
本発明によれば、平均値算出期間で取り込まれた振れ信号の値（入力データ）の平均値を、重複する複数の平均値算出期間で算出し、それらの各平均値算出期間の入力データの平均値を、パンニングなどの撮影構図変更動作を判定（検出）するための振れ信号の基準値として更新するようにしたため、振れ検出センサの出力（振れ信号）の基準値（ヌル電圧）を正確に検出することができ、また、基準値を更新する際の基準値の大きな変化を軽減することができる。
【０００９】
請求項２に記載の像振れ補正装置は、請求項１に記載の発明において、前記平均値算出手段は、前記各平均系列の演算処理によって前記平均値が均等な時間間隔で算出されるように、前記平均値算出期間の開始時刻を前記各平均系列の演算処理ごとに所定時間ずつ順次遅らせることを特徴としている。これによれば、振れ信号の基準値の更新が一定時間間隔で行われるため、基準値を更新する際の基準値の大きな変化をより軽減することができる。
【００１０】
請求項３に記載の像振れ補正装置は、請求項１又は請求項２に記載の発明において、前記平均値算出手段は、前記各平均系列の演算処理において、前記データ取込手段により所定の平均値算出期間内の入力データが取り込まれ、該入力データを、前記所定の平均値算出期間内においてそれまでに取り込まれた入力データの総和値に加算し、該加算して得た値を総和値として次の入力データが加算されるまで記憶することを特徴としている。これによれば、複数の平均系列の演算処理において入力データが取り込まれるごとに入力データの総和値のみを記憶していればよく、平均値算出期間の平均値を算出するために多量の入力データを記憶しておくことが不要となる。
【００１１】
請求項４に記載の像振れ補正装置は、請求項１、請求項２又は請求項３に記載の発明において、前記平均値算出手段において各時点で行われている前記各平均系列の演算処理の平均値算出期間のうち、前記各時点までに取り込まれた入力データの数が最大となる平均値算出期間の入力データの平均値を算出し、該算出した平均値を前記各平均系列の演算処理において想定する前記振れ信号の仮想の基準値とする仮想基準値設定手段を備えたことを特徴としている。本発明によれば、各平均系列の演算処理において入力データ（振れ信号）の基準値を必要とする場合に、その基準値が仮想基準値として適正に得られる。
【発明の効果】
【００１２】
本発明に係る像振れ補正装置によれば、振れ検出センサの出力のヌル電圧（基準値）が正確に検出され、パンニングやチルティング等の撮影構図変更動作の検出が的確に行われるようになる。
【発明を実施するための最良の形態】
【００１３】
以下添付図面に従って本発明に係る像振れ補正装置の好ましい実施の形態について詳述する。
【００１４】
図１は、本発明に係る像振れ補正装置の構成を示した構成図である。像振れ補正装置は、例えば、テレビカメラ用のレンズ装置（撮影レンズ）、ムービカメラ、又は、スチルカメラ等に搭載され、同図に示す防振レンズ２６は、本装置が搭載されるレンズ装置又はカメラ等の光学系において、光軸に対して垂直な面内で上下（鉛直方向）、左右（水平方向）に移動可能に配置される。また、防振レンズ２６は、モータ２４により上下、又は、左右に駆動されるようになっており、カメラ（光学系）に振動が生じた場合には、このモータ２４により像振れを補正する位置（振動による像振れを打ち消す位置）に移動するようになっている。尚、防振レンズ２６は上下方向と左右方向のいずれの方向についても各方向に生じた振動に基づいて同様に駆動されるため、同図には左右方向に対する像振れ補正を行う構成についてのみ示し、上下方向に対して同様に構成されるものとする。
【００１５】
同図に示す角速度センサ１０は、光学系に加わった振動を検出する振れ検出センサであり、例えばジャイロセンサである。角速度センサ１０は例えばレンズ鏡胴の上面等に設置され、レンズ鏡胴の左右方向に生じた振動の角速度に応じた電圧の電気信号を角速度信号として出力する。尚、振れ検出センサとして、角速度センサ以外に加速度センサ、変位センサ等が用いられる場合も考えられ、その場合であっても本発明を適用することができる。
【００１６】
角速度センサ１０から出力された角速度信号は、ハイパスフィルタ（ＨＰＦ）１２に入力し、ＨＰＦ１２によって所定のカットオフ周波数よりも低域側の信号成分が遮断され、カットオフ周波数よりも高域側の信号成分が抽出されてＨＰＦ１２を通過する。これによって角速度センサ１０の出力からヌル電圧（ＤＣオフセット電圧）等の低周波領域の信号成分が除去されると共に、そのヌル電圧に温度ドリフト等による変動が生じる場合にその信号成分が除去される。
【００１７】
ＨＰＦ１２を通過した角速度信号は続いてアンプ１４によって増幅された後、ＣＰＵ３６に入力される。尚、アンプ１４からＣＰＵ３６に入力される角速度信号を第１角速度信号という。
【００１８】
ＣＰＵ３６は、各種処理機能を備えており、ＣＰＵ３６の処理機能を機能ブロックで表すと同図のＣＰＵ３６のブロック内に示すようにＡ／Ｄ変換部１６、３２、積分処理部１８、Ｄ／Ａ変換部２０、パンニング判断部３４等に分けられる。
【００１９】
上記アンプ１４からＣＰＵ３６に入力した第１角速度信号は、Ａ／Ｄ変換部１６によってデジタル信号に変換された後、積分処理部１８によって積分処理され、角度信号に変換される。これにより、光学系の振動によって生じる像振れに対してそれを打ち消す方向及び大きさで像を変位させるための防振レンズ２６の変位量（基準位置からの変位量）が角度信号として得られる。
【００２０】
積分処理部１８によって求められた角度信号の値は防振レンズ２６の移動目標位置を示す値としてＤ／Ａ変換部２０によりアナログ信号に変換された後、ＣＰＵ３６から出力される。
【００２１】
ＣＰＵ３６から出力された角度信号はモータ駆動回路２２に入力し、モータ駆動回路２２によって、防振レンズ２６を左右方向に移動させるモータ２４が駆動される。これによって、ＣＰＵ３６から出力された角度信号の値に対応した位置に防振レンズ２６が移動し、光学系に加わった振動による像振れが補正される。
【００２２】
一方、角速度センサ１０から出力されてＨＰＦ１２に入力する前の角速度信号から、パンニング動作検出用の角速度信号が分岐されてアンプ３０に入力される。アンプ３０に入力した角速度信号は、アンプ３０によって増幅処理された後、ＣＰＵ３６に入力される。尚、アンプ３０からＣＰＵ３６に入力される角速度信号を第２角速度信号という。そして、ＣＰＵ３６に入力した第２角速度信号は、ＣＰＵ３６のＡ／Ｄ変換部３２によってデジタル信号に変換された後、パンニング判断部３４に読み取られる。
【００２３】
パンニング判断部３４は、Ａ／Ｄ変換部３２から第２角速度信号を所定時間間隔でサンプリングし、カメラ（光学系）のパンニングが行われているか否かを判定する。ここで、図２を用いて第２角速度信号に基づくパンニング判断の処理の一例について説明すると、光学系（角速度センサ１０）が無振動状態のときの値に相当する第２角速度信号のヌル電圧を第２角速度信号の基準値というものとし、その基準値が同図に示すように予め決められた一定値Ｘ０をとるものとする。このとき、図２に示すように光学系に振動が加わると、その振動方向に応じて第２角速度信号の値が一定の基準値Ｘ０に対して正負方向に振動する。そして例えば、第２角速度信号の値Ｘの一定の基準値Ｘ０からの変化量ΔＸ（＝Ｘ−Ｘ０）が正又は負のいずれかの方向に所定のしきい値（Ａｓ（＞０）及び−Ａｓ）を超えた値（ΔＸ＞Ａｓ、又は、ΔＸ＜―Ａｓ）を所定時間以上継続して示した場合にパンニングが行われたと判定する。
【００２４】
一方、パンニングが行われたと判定した後、例えば、上記第２角速度信号の変化量（ΔＸ）が所定のしきい値（Ｂｓ（＞０）及び−Ｂｓ）を超えない値（Ｘ＜Ｂｓ、又は、Ｘ＞−Ｂｓ）を所定時間以上継続して示した場合にパンニングが終了したと判定する。尚、しきい値Ｂｓはしきい値Ａｓよりも小さい値に設定される。また、パンニングの開始又は終了の判定方法はこれに限らない。
【００２５】
ＣＰＵ３６はこのようにパンニング判断部３４におけるパンニングの開始又は終了の判定処理によって、パンニングが行われていない状態と、パンニングが行われている状態とを判別し、各状態でのＨＰＦ１２の特性や、積分処理部１８での積分処理の特性を変更して像振れ補正の特性（防振特性）を変更する。例えば、パンニングが行われていない状態では、角速度センサ１０によって検出された振動の角速度信号に対して像振れ補正が有効に行われる防振特性となるような値にＨＰＦ１２のカットオフ周波数と、積分処理部の特性を決定する積分定数とを設定する。
【００２６】
一方、パンニングが行われている状態では、角速度センサ１０によって検出された振動の角速度信号に対して、即ち、パンニングに起因する角速度信号に対して像振れ補正を無効にし（又は、像振れ補正の効果を低減し）、また、防振レンズ２６を基準位置（可動中心）に迅速に戻す防振特性となるような値にＨＰＦ１２のカットオフ周波数と、積分処理部１８の積分定数とを設定する。例えばＨＰＦ１２のカットオフ周波数は、パンニングが行われていない状態に比べて少なくとも高い値に設定され、角速度センサ１０から出力される角速度信号の周波数成分のうち、パンニングに起因して生じると考えられる低周波領域の信号成分が略完全に遮断され、又は、角速度センサ１０から出力される角速度信号が実質的に完全に遮断される。積分処理部１８の積分定数は、防振レンズ２６を迅速に基準位置に戻す角度信号を出力するような値に設定される。
【００２７】
尚、パンニングが行われている状態とパンニングが行われていない状態とで必ずしもＨＰＦ１２の特性と積分処理部１８の積分定数の両方を変更するようにしなくてもよく、いずれか一方のみを変更するようにしてもよい。
【００２８】
また、パンニング判断部３４は、第２角速度信号の基準値（ヌル電圧）を検出し、その基準値を上記基準値Ｘ０として適宜更新すると共に、上述のようにその基準値Ｘ０に対する第２角速度信号の値Ｘの変化量ΔＸに基づいてパンニングが行われている状態か否かを判断している。尚、このパンニングが行われている状態か否かの判断に使用する基準値Ｘ０をパンニング判断に使用する基準値Ｘ０等という。
【００２９】
以下、パンニング判断部３４における、第２角速度信号の基準値の検出及び更新のための演算処理について図３の説明図と、図４〜図８のフローチャートを用いて説明する。パンニング判断部３４での本演算処理の概要を説明すると、原則として、第２角速度信号の値を入力データとしてＡ／Ｄ変換部３２から一定周期（例えば１ｍｓ）でサンプリングすると共に、その入力データの値（入力データ値）を所定データ数分（本実施の形態では９００個）加算（積算）して平均値を求めることによって基準値を検出する。このように基準値を検出すると、その基準値を上記パンニング判断に使用する基準値Ｘ０として設定する。
【００３０】
９００個分の入力データから基準値を検出すると、新たに入力データ値の加算を開始し、上記と同様に９００個分の入力データ値の平均値を求めることによって新たな基準値を検出する。そして、その新たな基準値を上記パンニング判断に使用する基準値Ｘ０として更新する。これを繰り返すことによって、基準値Ｘ０が一定期間ごとに更新される。
【００３１】
また、このように入力データ値を９００個分加算して平均値を求めることによって基準値を検出し、上記基準値Ｘ０を更新する演算処理は、３つの系列で並行して行われるようになっている。各系列を平均系列１、２、３と呼ぶことにすると、図３には、各平均系列１、２、３の演算処理において、順次取り込まれた入力データ値を加算して平均値を算出する期間（平均値算出期間）がそれぞれ１回目から３回目まで回数ごとに分けて示されている。尚、平均値算出期間Ｔ１１、Ｔ１２、Ｔ１３は、それぞれ平均系列１の演算処理における１回目〜３回目までの期間を示し、平均値算出期間Ｔ２１、Ｔ２２、Ｔ２３は、それぞれ平均系列２の演算処理における１回目〜３回目までの期間を示し、平均値算出期間Ｔ３１、Ｔ３２、Ｔ３３は、それぞれ平均系列３の演算処理における１回目〜３回目までの期間を示す。また、各平均値算出期間の目盛値１、３００、６００、９００は、各期間内において取り込まれる入力データの番号を取り込まれる順序で付した場合に、番号１、３００、６００、９００の入力データが各期間において取り込まれるタイミングを示している。
【００３２】
同図から分かるように、各平均系列１、２、３の演算処理は、同一回数目の各平均値算出期間において最初の入力データ値を取り込む（入力データの加算を開始する）タイミングが順に入力データ数にして３００ずつ遅らせて開始されている。これによって、１系列で基準値を検出する場合に比べて１／３の期間（３００個分の入力データがサンプリングされる期間）ごとに基準値が検出され、上記パンニング判断に使用される基準値Ｘ０が更新される。尚、平均系列の１回目の平均値算出期間Ｔ１１での演算処理は、上記パンニング判断に使用する初期の基準値Ｘ０を求めるまでの初期化の処理期間である。
【００３３】
更に、上記パンニング判断に使用する基準値Ｘ０を更新するタイミング以外でも、入力データ値の平均値が仮想的な基準値（仮想基準値）として逐次更新されてその仮想基準値が本演算処理内で使用されるが、各平均系列１、２、３の各平均値算出期間Ｔ１１〜Ｔ３３においてその仮想基準値の算出が行われる期間が斜線で示されている。これによれば、平均系列１の演算処理における初期化の処理期間（平均値算出期間Ｔ１１）を除いて、各平均系列１、２、３の演算処理の各平均値算出期間において入力データの番号が６０１となった時点から仮想基準値の算出が行われている。平均系列１の平均値算出期間Ｔ１１では全期間で仮想基準値の算出が行われている。また、このようにして算出された仮想基準値は、平均系列１、２、３の全てに対して１つの値が用いられるようになっている。
【００３４】
続いて、パンニング判断部３４での具体的な演算処理の手順について説明する。まず、本演算処理で使用する変数は次のように定義されている。
【００３５】
ctr…仮想基準値  
ｎ…カウンタの値（カウンタ値）
bc_data…入力データ値（第２角速度信号のサンプリング値）
ctr_sum[1]…平均系列１の演算処理で使用される入力データ値の総和値
ctr_sum[2]…平均系列２の演算処理で使用される入力データ値の総和値
ctr_sum[3]…平均系列３の演算処理で使用される入力データ値の総和値
loop…ループカウンタの値（ループカウンタ値）
そして、図４のメインルーチンの処理において、平均系列１の１回目の平均値算出期間Ｔ１１において初期化の処理を行う際のステップＳ１０〜ステップＳ４６までの処理を実行する。この初期化時の処理では、まず、平均系列１の総和値ctr_sum[1]を０、カウンタ値ｎを１に初期化する（ステップＳ１０、Ｓ１２）。
【００３６】
続いて、次のステップＳ１４とステップＳ１６の処理をカウンタ値ｎが１から３００までの間で３００回繰り返す。尚、本フローチャートの処理において、カウンタ値ｎはステップＳ１８、ステップＳ３０、及び、ステップＳ４４において所定周期（角速度信号のサンプリング周期）で１ずつ加算され、カウンタ値ｎが１加算されると共に１つの入力データbc_dataが取り込まれるものとする。
【００３７】
ステップＳ１４では、取り込んだ入力データ値bc_dataを平均系列１の総和値ctr_sum[1]に加算し、これによって得られた値を再度、平均系列１の総和値ctr_sum[1]に代入する。即ち、次式、
ctr_sum[1]＝ctr_sum[1]＋bc_data
の演算を実行する。
【００３８】
ステップＳ１６では、平均系列１の総和値ctr_sum[1]を、それに加算されたデータ数（カウンタ値）ｎで割ることによってそれまでに加算した入力データ値の平均値を求め、その平均値を仮想基準値ctrとする。即ち、次式、
ctr＝ctr_sum[1]／ｎ
の演算を実行する。
【００３９】
ステップＳ１４及びステップＳ１６の処理を実行した後、カウンタ値ｎに１を加算する（ステップＳ１８）。即ち、次式、
ｎ＝ｎ＋１
の演算を実行する。
【００４０】
そして、カウンタ値ｎが３００以下か否か、即ち、ｎ≦３００の条件を満たすか否かを判定する（ステップＳ２０）。ＹＥＳと判定した場合にはステップＳ１４に戻ることによってステップＳ１４とステップＳ１６の処理が、カウンタ値ｎが１から３００までの３００回繰り返される。
【００４１】
ステップＳ２０においてＮＯと判定された場合、即ち、カウンタ値ｎが３０１となった場合、次に、平均系列１の１回目の平均値算出期間Ｔ１１（図３参照）における初期化の処理を継続して行うと共に、平均系列２の１回目の平均値算出期間Ｔ２１（図３参照）の演算処理（入力データの加算）を開始する。まず、平均系列２の総和値ctr_sum[2]を０に初期化する（ステップＳ２２）。そして、カウンタ値ｎが３０１から６００までの間でステップＳ２４からステップＳ２８の処理を３００回繰り返す。
【００４２】
ステップＳ２４では、取り込んだ入力データ値bc_dataを引数として関数ctr_prcs1に渡し、関数ctr_prcs1の処理を実行する。
【００４３】
図５は、関数ctr_prcs1の処理手順を示したフローチャートである。このサブルーチンでは、メインルーチンにおいて引数として渡された入力データ値bc_dataをdataという変数により参照する。尚、dataを入力データ値dataと記す。まず、入力データ値dataが（３００＋ctr）より大きいか否かを判定する。即ち、次の条件、
data＞（３００＋ctr）
を満たすか否かを判定する（ステップＳ１００）。この判定処理においてＹＥＳと判定した場合には後述するステップＳ１０６に移行する。一方、ＮＯと判定した場合には、入力データ値dataが（ctr−３００）より小さいか否かを判定する。即ち、次の条件、
data＞（ctr−３００）
を満たすか否かを判定する（ステップＳ１０２）。この判定処理においてＹＥＳと判定した場合には後述するステップＳ１０６に移行する。一方、ＮＯと判定した場合には、後述するステップＳ１０４に移行する。
【００４４】
ステップＳ１０４は、上記ステップＳ１００、及び、ステップＳ１０２の処理において入力データ値dataの仮想基準値ctrに対する変化量の絶対値が一定量（３００）以下であると判定された場合に行われる処理であり、入力データ値dataを平均系列１の総和値ctr_sum[1]に加算し、これによって得られた値を再度、平均系列１の総和値ctr_sum[1]に代入する。即ち、次式、
ctr_sum[1]＝ctr_sum[1]＋data
の演算を実行する。
【００４５】
一方、ステップＳ１０４は、上記ステップＳ１００、又は、ステップＳ１０２の処理において入力データ値dataの仮想基準値ctrに対する変化量の絶対値が一定量（３００）を超えると判定された場合に行われる処理であり、入力データ値dataは無振動時の値でないおそれがあるため、入力データ値dataの代わりに仮想基準値ctrを平均系列１の総和値ctr_sum[1]に加算し、これによって得られた値を再度、平均系列１の総和値ctr_sum[1]に代入する。即ち、次式、
ctr_sum[1]＝ctr_sum[1]＋ctr
の演算を実行する。
【００４６】
ステップＳ１０４及びステップＳ１０６の演算処理が終了すると、本サブルーチンの処理を終了し、図４のメインルーチンに戻る。
【００４７】
以上のようにしてステップＳ２４の関数ctr_prcs1の処理が終了すると、次に、ステップＳ２６では、平均系列１の総和値ctr_sum[1]を、それに加算されたデータ数（カウンタ値）ｎで割ることによってそれまでに加算した入力データ値の平均値を求め、その平均値を仮想基準値ctrとする。即ち、次式、
ctr＝ctr_sum[1]／ｎ
の演算を実行する。
【００４８】
ステップＳ２８では、入力データ値bc_dataを引数として関数ctr_prcs2に渡し、関数ctr_prcs1と同様の平均系列２の演算処理に関する関数ctr_prcs2の処理を実行する。
【００４９】
図６は、関数ctr_prcs2のフローチャートである。このサブルーチンでは、メインルーチンにおいて引数として渡された入力データ値bc_dataをdataという変数により参照するものとし、dataを入力データ値dataと記す。まず、入力データ値dataが（３００＋ctr）より大きいか否かを判定する。即ち、次の条件、
data＞（３００＋ctr）
を満たすか否かを判定する（ステップＳ２００）。この判定処理においてＹＥＳと判定した場合には後述するステップＳ２０６に移行する。一方、ＮＯと判定した場合には、入力データ値dataが（ctr−３００）より小さいか否かを判定する。即ち、次の条件、
data＞（ctr−３００）
を満たすか否かを判定する（ステップＳ２０２）。この判定処理においてＹＥＳと判定した場合には後述するステップＳ２０６に移行する。一方、ＮＯと判定した場合には、後述するステップＳ２０４に移行する。
【００５０】
ステップＳ２０４は、上記ステップＳ２００、及び、ステップＳ２０２の処理において入力データ値dataの仮想基準値ctrに対する変化量の絶対値が一定量（３００）以下であると判定された場合に行われる処理であり、入力データ値dataを平均系列２の総和値ctr_sum[2]に加算し、これによって得られた値を再度、平均系列２の総和値ctr_sum[2]に代入する。即ち、次式、
ctr_sum[2]＝ctr_sum[2]＋data
の演算を実行する。
【００５１】
一方、ステップＳ２０４は、上記ステップＳ２００、又は、ステップＳ２０２の処理において入力データ値dataの仮想基準値ctrに対する変化量の絶対値が一定量（３００）を超えると判定された場合に行われる処理であり、入力データ値dataは無振動時の値でないおそれがあるため、入力データ値dataの代わりに仮想基準値ctrを平均系列２の総和値ctr_sum[2]に加算し、これによって得られた値を再度、平均系列２の総和値ctr_sum[2]に代入する。即ち、次式、
ctr_sum[2]＝ctr_sum[2]＋ctr
の演算を実行する。
【００５２】
ステップＳ２０４及びステップＳ２０６の演算処理が終了すると、本サブルーチンの処理を終了し、図４のメインルーチンに戻る。
【００５３】
以上のようにしてステップＳ２８の関数ctr_prcs2の処理が終了すると、次に、カウンタ値ｎに１を加算する（ステップＳ３０）。即ち、次式、
ｎ＝ｎ＋１
の演算を実行する。
【００５４】
そして、カウンタ値ｎが６００以下か否か、即ち、ｎ≦６００の条件を満たすか否かを判定する（ステップＳ３２）。ＹＥＳと判定した場合にはステップＳ２４に戻ることによってステップＳ２４〜ステップＳ２８の処理が、カウンタ値ｎが３０１から６００のまでの３００回繰り返される。
【００５５】
ステップＳ３２においてＮＯと判定された場合、即ち、カウンタ値ｎが６０１となった場合、次に、平均系列１の１回目の平均値算出期間Ｔ１１における初期化の処理と、平均系列２の１回目の平均値算出期間Ｔ２１の演算処理とを継続して行うと共に、平均系列３の１回目の平均値算出期間Ｔ３１の演算処理を開始する。まず、平均系列３の総和値ctr_sum[3]を０に初期化する（ステップＳ３４）。そして、カウンタ値ｎが６０１から９００までの間でステップＳ３６〜ステップＳ４２の処理を３００回繰り返す。
【００５６】
ステップＳ３６では、取り込んだ入力データ値bc_dataを引数として関数ctr_prcs1に渡し、関数ctr_prcs1の処理を実行する。関数ctr_prcs1の処理に関しては図５で説明した通りであるので省略する。
【００５７】
ステップＳ３８では、平均系列１の総和値ctr_sum[1]を、それに加算されたデータ数ｎで割ることによってそれまでに加算した入力データ値の平均値を求め、その平均値を仮想基準値ctrとする。即ち、次式、
ctr＝ctr_sum[1]／ｎ
の演算を実行する。
【００５８】
ステップＳ４０では、入力データ値bd_dataを引数として関数ctr_prcs2に渡し、関数ctr_prcs1と同様の平均系列２の演算処理に関する関数ctr_prcs2の処理を実行する。関数ctr_prcs2の処理に関しては図６で説明した通りであるので省略する。
【００５９】
ステップＳ４２では、入力データ値bc_dataを引数として関数ctr_prcs3に渡し、関数ctr_prcs1や関数ctr_prcs2と同様の平均系列３の演算処理に関する関数ctr_prcs3の処理を実行する。
【００６０】
図７は、関数ctr_prcs3のフローチャートである。このサブルーチンでは、メインルーチンにおいて引数として渡された入力データ値bc_dataをdataという変数により参照するものとし、dataを入力データ値dataと記す。まず、入力データ値dataが（３００＋ctr）より大きいか否かを判定する。即ち、次の条件、
data＞（３００＋ctr）
を満たすか否かを判定する（ステップＳ３００）。この判定処理においてＹＥＳと判定した場合には後述するステップＳ３０６に移行する。一方、ＮＯと判定した場合には、入力データ値dataが（ctr−３００）より小さいか否かを判定する。即ち、次の条件、
data＞（ctr−３００）
を満たすか否かを判定する（ステップＳ３０２）。この判定処理においてＹＥＳと判定した場合には後述するステップＳ３０６に移行する。一方、ＮＯと判定した場合には、後述するステップＳ３０４に移行する。
【００６１】
ステップＳ３０４は、上記ステップＳ３００、及び、ステップＳ３０２の処理において入力データ値dataの仮想基準値ctrに対する変化量の絶対値が一定量（３００）以下であると判定された場合に行われる処理であり、入力データ値dataを平均系列３の総和値ctr_sum[3]に加算し、これによって得られた値を再度、平均系列３の総和値ctr_sum[3]に代入する。即ち、次式、
ctr_sum[3]＝ctr_sum[3]＋data
の演算を実行する。
【００６２】
一方、ステップＳ３０４は、上記ステップＳ３００、又は、ステップＳ３０２の処理において入力データ値dataの仮想基準値ctrに対する変化量の絶対値が一定量（３００）を超えると判定された場合に行われる処理であり、入力データ値dataは無振動時の値でないおそれがあるため、入力データ値dataの代わりに仮想基準値ctrを平均系列３の総和値ctr_sum[3]に加算し、これによって得られた値を再度、平均系列３の総和値ctr_sum[3]に代入する。即ち、次式、
ctr_sum[3]＝ctr_sum[3]＋ctr
の演算を実行する。
【００６３】
ステップＳ３０４及びステップＳ３０６の演算処理が終了すると、本サブルーチンの処理を終了し、図４のメインルーチンに戻る。
【００６４】
以上のようにしてステップＳ４２の関数ctr_prcs3の処理が終了すると、次に、カウンタ値ｎに１を加算する（ステップＳ４４）。即ち、次式、
ｎ＝ｎ＋１
の演算を実行する。
【００６５】
そして、カウンタ値ｎが９００以下か否か、即ち、ｎ≦９００の条件を満たすか否かを判定する（ステップＳ４６）。ＹＥＳと判定した場合にはステップＳ３６に戻ることによってステップＳ３６〜ステップＳ４２の処理が、カウンタ値ｎが６０１から９００のまでの３００回繰り返される。カウンタ値ｎが９００となった場合に、ステップＳ３８において仮想基準値ctrが算出されると、その仮想基準値ctrは、上記パンニング判断に使用される基準値Ｘ０の初期値として設定される。
【００６６】
ステップＳ４６においてＮＯと判定された場合、即ち、カウンタ値ｎが９０１となった場合、平均系列１の１回目の平均値算出期間Ｔ１１における初期化の処理を終了し、続いて、平均系列２の１回目の平均値算出期間Ｔ２１の演算処理と平均系列３の１回目の平均値算出期間Ｔ３１の演算処理とを継続して行うと共に、平均系列１の２回目の平均値算出期間Ｔ３１の演算処理を開始する。これ以降の各平均系列１、２、３の演算処理は、ステップＳ５０において像振れ補正を完了する指示（電源がオフされた場合や、所定のオン／オフスイッチによって像振れ補正がオフされた場合等）があるまで、ステップＳ４８における関数ctr_callの処理を繰り返すことによって行われる。
【００６７】
図８は、関数ctr_callの処理手順を示したフローチャートである。まず、ループカウンタ値loop（以下、単にカウンタ値loopという）の初期値を１として、カウンタ値loopが１か否か、即ち、loop＝１の条件を満たすか否かを判定する（ステップＳ４００）。尚、カウンタ値loopは、この関数ctr_callを一度行うごとにステップＳ４４２の処理によって１ずつ加算され、９００に達すると、ステップＳ４４４の処理によって１に初期化されるようになっている。また、カウンタ値loopは所定周期（角速度信号のサンプリング周期）で１ずつ加算され、カウンタ値loopが１加算されると共に１つの入力データbc_dataが取り込まれるものとする。従って、カウンタ値loopは、平均系列１の総和値ctr_sum[1]に加算したデータ数（入力データの番号）と一致しており、カウンタ値loopが１に初期化されるごとに平均系列１での新たな平均値算出期間の演算処理が開始される。
【００６８】
ステップＳ４００においてＹＥＳと判定した場合には平均系列１の総和値ctr_sum[1]を０に初期化する（ステップＳ４０２）。そして、ステップＳ４１２に移行する。
【００６９】
ステップＳ４００においてＮＯと判定した場合には、カウンタ値loopが３０１か否か、即ち、loop＝３０１の条件を満たすか否かを判定する（ステップＳ４０４）。ＹＥＳと判定した場合には平均系列２の総和値ctr_sum[2]を０に初期化する（ステップＳ４０６）。そして、ステップＳ４１２に移行する。
【００７０】
ステップＳ４０４においてＮＯと判定した場合には、カウンタ値loopが６０１か否か、即ち、loop＝６０１の条件を満たすか否かを判定する（ステップＳ４０８）。ＹＥＳと判定した場合には平均系列３の総和値ctr_sum[3]を０に初期化する（ステップＳ４１０）。そして、ステップＳ４１２に移行する。一方、ＮＯと判定した場合には、何もせずにステップＳ４１２に移行する。
【００７１】
ステップＳ４１２に移行すると、カウンタ値loopが３００以下か否か、即ち、loop≦３００の条件を満たすか否かを判定する。この判定処理によってＹＥＳと判定した場合、後述するステップＳ４１６〜ステップＳ４２２の処理によって平均系列１、２、３の演算処理を実行すると共に、仮想基準値ctrを平均系列２の総和値ctr_sum[2]から求める。そして、ステップＳ４４０に移行する。
【００７２】
ステップＳ４１２においてＮＯと判定した場合には、次にカウンタ値loopが６００以下か否か、即ち、loop≦６００の条件を満たすか否かを判定する（ステップＳ４１４）。この判定処理によってＹＥＳと判定した場合、後述するステップＳ４２４〜ステップＳ４３０の処理によって平均系列１、２、３の演算処理を実行すると共に、仮想基準値ctrを平均系列３の総和値ctr_sum[3]から求める。そして、ステップＳ４４０に移行する。
【００７３】
ステップＳ４１４においてＮＯと判定した場合、即ち、カウンタ値loopが６００を超えている場合には、後述するステップＳ４３２〜ステップＳ４３８の処理によって平均系列１、２、３の演算処理を実行すると共に、仮想基準値ctrを平均系列１の総和値ctr_sum[1]から求める。そして、ステップＳ４４０に移行する。
【００７４】
まず、ステップＳ４１２でＹＥＳと判定した場合のステップＳ４１６〜ステップＳ４２２の処理について説明すると、ステップＳ４１６では  取り込んだ入力データ値bc_dataを引数として関数ctr_prcs2に渡し、関数ctr_prcs2の処理を実行する。関数ctr_prcs2の処理に関しては図６で説明した通りであるので省略する。
【００７５】
ステップＳ４１８では、平均系列２の総和値ctr_sum[2]を、それに加算されたデータ数（loop＋６００）で割ることによってそれまでに加算した入力データ値の平均値を求め、その平均値を仮想基準値ctrとする。即ち、次式、
ctr＝ctr_sum[2]／（loop＋６００）
の演算を実行する。尚、カウンタ値loopが３００で平均系列２の総和値ctr_sum[2]に加算されたデータ数が９００となった場合には、そのとき本処理で求めた仮想基準値ctrを上記パンニング判断に使用する基準値Ｘ０として更新する。
【００７６】
ステップＳ４２０では、入力データ値bd_dataを引数として関数ctr_prcs1に渡し、関数ctr_prcs1の処理を実行する。関数ctr_prcs1の処理に関しては図５で説明した通りであるので省略する。
【００７７】
ステップＳ４２２では、入力データ値bc_dataを引数として関数ctr_prcs3に渡し、関数ctr_prcs3の処理を実行する。関数ctr_prcs3の処理に関しては図７で説明した通りであるので省略する。
【００７８】
次に、ステップＳ４１４でＹＥＳと判定した場合のステップＳ４２４〜ステップＳ４３０の処理について説明すると、ステップＳ４２４では  取り込んだ入力データ値bc_dataを引数として関数ctr_prcs3に渡し、関数ctr_prcs3の処理を実行する。関数ctr_prcs3の処理に関しては図７で説明した通りであるので省略する。
【００７９】
ステップＳ４２６では、平均系列３の総和値ctr_sum[3]を、それに加算されたデータ数（loop＋３００）で割ることによってそれまでに加算した入力データ値の平均値を求め、その平均値を仮想基準値ctrとする。即ち、次式、
ctr＝ctr_sum[3]／（loop＋３００）
の演算を実行する。尚、カウンタ値loopが６００で平均系列３の総和値ctr_sum[3]に加算されたデータ数が９００となった場合には、そのとき本処理で求めた仮想基準値ctrを上記パンニング判断に使用する基準値Ｘ０として更新する。
【００８０】
ステップＳ４２８では、入力データ値bd_dataを引数として関数ctr_prcs1に渡し、関数ctr_prcs1の処理を実行する。関数ctr_prcs1の処理に関しては図５で説明した通りであるので省略する。
【００８１】
ステップＳ４３０では、入力データ値bc_dataを引数として関数ctr_prcs2に渡し、関数ctr_prcs2の処理を実行する。関数ctr_prcs2の処理に関しては図６で説明した通りであるので省略する。
【００８２】
次に、ステップＳ４１４でＮＯと判定した場合のステップＳ４３２〜ステップＳ４３８の処理について説明すると、ステップＳ４３２では  取り込んだ入力データ値bc_dataを引数として関数ctr_prcs1に渡し、関数ctr_prcs1の処理を実行する。関数ctr_prcs1の処理に関しては図５で説明した通りであるので省略する。
【００８３】
ステップＳ４３４では、平均系列１の総和値ctr_sum[1]を、それに加算されたデータ数（loop）で割ることによってそれまでに加算した入力データ値の平均値を求め、その平均値を仮想基準値ctrとする。即ち、次式、
ctr＝ctr_sum[1]／loop
の演算を実行する。尚、カウンタ値loopが９００で平均系列１の総和値ctr_sum[1]に加算されたデータ数が９００となった場合には、そのとき本処理で求めた仮想基準値ctrを上記パンニング判断に使用する基準値Ｘ０として更新する。
【００８４】
ステップＳ４３６では、入力データ値bd_dataを引数として関数ctr_prcs2に渡し、関数ctr_prcs2の処理を実行する。関数ctr_prcs2の処理に関しては図６で説明した通りであるので省略する。
【００８５】
ステップＳ４３８では、入力データ値bc_dataを引数として関数ctr_prcs3に渡し、関数ctr_prcs3の処理を実行する。関数ctr_prcs3の処理に関しては図７で説明した通りであるので省略する。
【００８６】
以上の処理が終了し、ステップＳ４４０に移行すると、カウンタ値loopが９００より小さいか否か、即ち、loop＜９００の条件を満たすか否かを判定する。ＹＥＳであればカウンタ値loopに１を加算し（ステップＳ４４２）、この関数ctr_callの処理を終了して図４のメインルーチンに戻る。
【００８７】
一方、ステップＳ４４０においてＮＯと判定した場合、即ち、カウンタ値loopが９００となった場合には、カウンタ値loopを１に初期化し（ステップＳ８４４）、この関数ctr_callを終了する。
【００８８】
図４のメインルーチンにおいて、上述のようにステップＳ５０で完了と判定されるまでの間、ステップＳ４８での上記関数ctr_callの処理を繰り返すことによって仮想基準値ctrが更新されると共に、３００個の入力データを取得するごとに上記パンニングの判断に使用する基準値Ｘ０がそのときの仮想基準値ctrとなるように更新される。
【００８９】
図９は、第２角速度信号に対して上記演算処理によって求められる仮想基準値ctrの軌跡を示した図である。同図において、横軸は時間を表し、縦軸は第２角速度信号の値を示しており、第２角速度信号がグラフＣ１のように振動しているとすると、仮想基準値ctrはグラフＣ２のように更新される。そのうち、ポイントＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５では、上記パンニングの判断に使用する基準値Ｘ０が仮想基準値ctrによって更新されるタイミング、即ち、仮想基準値ctrを求める平均系列が異なる平均系列に移行するタイミングを示しており、同図から分かるように、仮想基準値ctrは殆ど連続的とみなせるように変化し、真の基準値（ヌル電圧）を的確に表していると考えられる。
【００９０】
以上、上記実施の形態では、３つの平均系列１、２、３の演算処理を並行して行う場合について説明したが、３つに限らず、２つ、又は、４つ以上の平均系列の演算処理を並行して行うようにしてよい。その場合に、各平均系列での各平均値算出期間の開始時刻を各平均系列ごとに所定時間ずつ順次遅らせるようにすれば良い。また、均等な時間間隔で基準値Ｘ０が更新されるように各平均値算出期間の開始時刻を遅らせると好適である。
【００９１】
また、上記実施の形態において、仮想基準値ctrを求めた際にその仮想基準値ctrを上記パンニング判断に使用する基準値Ｘ０として更新するようにしてもよい。
【００９２】
また、上記実施の形態では、左右方向の像振れ補正に関して説明したが上下方向の像振れ補正についても同様に実施することができ、パンニングに関する処理と同様にチルティングに関する処理を行うことができる。
【００９３】
また、上記実施の形態では、防振レンズ２６を変位させることにより光学系の像を意図的に変位させる像変位手段によって振動による像振れを打ち消すようにしたが、この場合の他に、カメラの撮像素子を変位させて像を意図的に変位させる像変位手段によって、振動による像振れを打ち消すようにしたものや、光学的な像変位手段によって像振れを補正するのではなく、カメラの撮像素子によって撮像される撮影画像の範囲内から記録又は再生用の映像信号として切り出す範囲を変位させて像を意図的に変位させる電子的な像変位手段によって振動による像振れを打ち消すようにしたもの等であっても本発明を適用することができる。
【図面の簡単な説明】
【００９４】
【図１】図１は、本発明に係る像振れ補正装置の構成を示した構成図である。
【図２】図２は、パンニング判断の処理の説明に使用した説明図である。
【図３】図３は、第２角速度信号の基準値の検出及び更新のための演算処理の説明に使用した説明図である。
【図４】図４は、第２角速度信号の基準値の検出を行う際のパンニング判断部３４（ＣＰＵ３６）でのメインルーチンの処理を示したフローチャートである。
【図５】図５は、関数ctr_prcs1の処理手順を示したフローチャートである。
【図６】図６は、関数ctr_prcs2の処理手順を示したフローチャートである。
【図７】図７は、関数ctr_prcs3の処理手順を示したフローチャートである。
【図８】図８は、関数ctr_callの処理手順を示したフローチャートである。
【図９】図９は、第２角速度信号に対してパンニング判断部によって求められる仮想基準値の軌跡を示した図である。
【符号の説明】
【００９５】
１０…角速度センサ、１２…ハイパスフィルタ（ＨＰＦ）、１４、３０…アンプ、１６、３２…Ａ／Ｄ変換部、１８…積分処理部、２０…Ｄ／Ａ変換部、２２…モータ駆動回路、２４…モータ、２６…防振レンズ、３４…パンニング判断部、３６…ＣＰＵ、４０…Ｄ／Ａ変換器
【図１】
2006011252.tif 000003
【図２】
2006011252.tif 000004
【図３】
2006011252.tif 000005
【図４】
2006011252.tif 000006
【図５】
2006011252.tif 000007
【図６】
2006011252.tif 000008
【図７】
2006011252.tif 000009
【図８】
2006011252.tif 000010
【図９】
2006011252.tif 000011