図1は本発明に係る撮像装置としてのデジタルスチルカメラ(以下、カメラともいう)の外観を示しており、(a)はその正面図、(b)は背面図、(c)は上面図である。また、図2はそのデジタルカメラの内部のシステム構成の概要を示すブロック回路図である。
図1において、カメラ本体の上面には、レリーズスイッチ(レリーズシャッタ)SW1、モードダイアルSW2、及びサブ液晶ディスプレイ(サブLCDともいう)1が配設されている。
カメラ本体の正面には、撮影レンズを含む鏡胴ユニット7、光学ファインダ4、ストロボ発光部3、測距ユニット5、リモートコントロール受光部6が設けられている。
カメラの背面には、電源スイッチSW13、LCDモニタ10、AFLED8、ストロボLED9、光学ファインダ4、広角方向ズームスイッチSW3、望遠方向ズームスイッチSW4、セルフタイマの設定・削除スイッチSW5、メニュースイッチSW6、上移動・ストロボセットスイッチSW7、右移動スイッチSW8、ディスプレイスイッチSW9、下移動・マクロスイッチSW10、左移動・画像確認スイッチSW11、OKスイッチSW12、手ぶれ補正スイッチSW14が設けられている。カメラ本体の側面にはメモリカード/電池装填室の蓋2が設けられている。
これらの各部材の機能及び作用は公知であるので、その説明は省略することにし、次にカメラの内部のシステム構成を説明する。
その図2において、104はデジタルスチルカメラプロセッサ(以下、プロセッサともいう)である。
プロセッサ104は、A/D変換器10411、CCD1信号処理ブロック1041、CCD2信号処理ブロック1042、CPUブロック1043、ローカルSRAM1044、USBブロック1045、シリアルブロック1046、JPEG・CODECブロック(JPEG圧縮・伸長を行うブロック)1047、RESIZEブロック(画像データのサイズを補間処理により拡大・縮小するブロック)1048、TV信号表示ブロック(画像データを液晶モニタ・TVなどの外部表示機器に表示させるためのビデオ信号に変換するブロック)1049、メモリカードコントローラブロック(撮影画像データを記録するメモリカードの制御を行うブロック)10410を有している。これらの各ブロックは相互にバスラインで接続されている。
プロセッサ104の外部にはRAW−RGB画像データ(ホワイトバランス設定、γ設定が行われた状態の画像データ)、YUV画像データ(輝度データ、色差データ変換が行われた状態の画像データ)、JPEG画像データ(JPEG圧縮された状態の画像データ)を保存するSDRAM103が配置され、このSDRAM103はプロセッサ104にメモリコントローラ(図示を略す)、バスラインを介して接続されている。
プロセッサ104の外部には、更に、RAM107、内蔵メモリ(メモリカードスロットルにメモリカードが装着されていない場合でも撮影画像データを記憶するためのメモリ)120、制御プログラム、パラメータなどが格納されたROM108が設けられ、これらもバスラインによってプロセッサ104に接続されている。
その制御プログラムは、カメラの電源スイッチSW13をオンすると、プロセッサ104のメインメモリ(図示を略す)にロードされ、プロセッサ104はその制御プログラムに従って各部の動作制御を行うと共に、制御データ、パラメータ等をRAM107等に一時的に保存させる。
鏡胴ユニット7は、ズームレンズ71aを有するズーム光学系71、フォーカスレンズ72aを有するフォーカス光学系72、絞り73aを有する絞りユニット73、メカニカルシャッタ74aを有するメカニカルシャッタユニット74からなるレンズ鏡筒を備えている。なお、ズームレンズ71a、フォーカスレンズ72a及び絞り73aは撮影光学系を構成している。また、撮影光学系の光軸をZ軸とするとともに、このZ軸に直交する平面をX-Y平面とする。
ズーム光学系71、フォーカス光学系72、絞りユニット73、メカニカルシャッタユニット74は、ズームモータ71b、フォーカスモータ72b、絞りモータ73b、メカニカルシャッタモータ74bによってそれぞれ駆動されるようになっている。
これらの各モータはモータドライバ75によって駆動され、このモータドライバ75はプロセッサ104のCPUブロック1043によって制御される。
鏡胴ユニット7の各レンズ系によりCCD101に被写体像が結像され、CCD101は被写体像を画像信号に変換してF/E−IC102に画像信号を出力する。F/E−IC102は画像ノイズ除去用のため相関二重サンプリングを行うCDS1021、利得調整用のAGC1022、アナログデジタル変換を行うA/D変換部1023から構成されている。すなわち、F/E−IC102はその画像信号に所定の処理を施し、アナログ画像信号をデジタル信号に変換してプロセッサ104のCCD1信号処理ブロック1041に向けてこのデジタル信号を出力する。
これらの信号制御処理は、プロセッサ104のCCD1信号処理ブロック1041から出力される垂直同期信号VD・水平同期信号HDによりTG1024を介して行われる。そのTG1024はその垂直同期信号VD・水平同期信号HDに基づき駆動タイミング信号を生成する。
プロセッサ104のCPUブロック1043は、音声記録回路1151による音声記録動作を制御するようになっている。音声記録回路1151はマイクロフォンで1153で変換された音声記録信号のマイクロフォンアンプリファイア1152による増幅信号を指令に応じて記録する。CPUブロック1043は、音声再生回路1161の動作も制御する。音声再生回路1161は、指令により適宜メモリに記憶されている音声信号を再生してオーディオアンプリファイア1162に出力し、スピーカ1163から音声を出力させるように構成されている。
CPUブロック1043は、更に、ストロボ回路114を制御することによってストロボ発光部3から照明光を発光させる。これに加えて、CPUブロック1043は、測距ユニット5も制御する。
CPUブロック1043は、プロセッサ104のサブCPU109に接続され、サブCPU109はCCDドライバ111を介してサブLCD1による表示制御を行う。サブCPU109は、更に、AFLED8、ストロボLED9、リモートコントロール受光部6、操作スイッチSW1〜SW14からなる操作キーユニット、ブザー113に接続されている。
USBブロック1045はUSBコネクタ122に接続され、シリアルブロック1046はシリアルドライバ回路1231を介してRS−232Cコネクタ1232に接続されている。TV表示ブロック1049は、LCDドライバ117を介してLCDモニタ10に接続されると共に、ビデオアンプリファイア(TV信号表示ブロック1049から出力されたビデオ信号を75Ωインピーダンスに変換するためのアンプリファイア)118を介してビデオジャック(カメラをTVなどの外部表示機器に接続するためのジャック)119に接続されている。メモリカードコントローラブロック10410はメモリカードスロット121のカード接点との接点に接続されている。
LCDドライバ117はLCDモニタ10を駆動すると共に、TV信号表示ブロック1049から出力されたビデオ信号をLCDモニタ10に表示させる信号に変換する役割を果たす。LCDモニタ10は撮影前の被写体の状態監視するため、撮影画像を確認するため、メモリカード又は内蔵メモリ120に記録された画像データを表示するために用いられる。
デジタルカメラの本体には、鏡胴ユニット7の一部を構成する固定筒(後述する)が設けられている。この固定筒にはCCDステージ1251がX-Y方向に移動可能に設けられている。CCD101は手ぶれ補正機構の一部を構成するCCDステージ1251に搭載され、そのCCDステージ1251の詳細なメカニカルな構造については後述する。
そのCCDステージ1251はアクチュエータ1255によって駆動され、アクチュエータ1255はドライバー1254によって駆動制御される。そのドライバー1254はコイルドライブMD1とコイルドライブMD2とから構成されている。そのドライバー1254はアナログデジタル変換器IC1に接続され、そのアナログデジタル変換器IC1はROM108に接続され、このアナログデジタル変換器IC1にはROM108から制御データが入力される。
固定筒には手ぶれ補正スイッチSW14がオフ、電源スイッチSW13がオフのときにCCDステージ1251を中央位置に保持する原点位置強制保持機構1263が設けられている。この原点位置強制保持機構1263はアクチュエータとしてのステッピングモータSTM1により制御され、そのステッピングモータSTM1はドライバー1261によって駆動される。このドライバー1261にはROM108から制御データが入力される。
CCDステージ1251には位置検出素子1252が取り付けられている。この位置検出素子1252の検出出力はアンプリファイア1253に入力され、増幅されてA/D変換器10411に入力される。カメラ本体にはジャイロセンサ1241がピッチ方向とヨー方向との回転を検出可能に設けられ、ジャイロセンサ1241の検出出力はローパスフィルタ兼用のアンプリファイア1242を介してA/D変換器10411に入力される。
このデジタルカメラは、図3に示すように、「モニタリング処理」ブロックと「再生」ブロックの少なくとも二つのモードを有し、これら二つのモード間を遷移する。「モニタリング処理」ブロックの内部ではメニュー呼び出しを行うことができ、各種設定を変更することができる。また、「再生」ブロックの内部では、撮影画像をLCDモニタ10に表示させることができる。
すなわち、図3において、モードダイヤルが撮影モードに設定されたか否か判断され(ステップS1)、撮影モードに設定された場合は、モニタリング処理が実行される(ステップS2)。モニタリング処理実行後、撮影命令が入力されたか否か判断され(ステップS3)、入力された場合は撮影が実行され(ステップS4)、その後、ステップS2に戻る。撮影命令が入力されない場合は後述するステップS8に進む。
また、ステップS1において、モードダイヤルが撮影モードに設定されていない場合は、さらにモードダイヤルが再生モードに設定されたか否か判断される(ステップS5)。そして、再生モードに設定された場合は撮影画像をLCDモニタ10に表示させる再生処理が実行され(ステップS6)、再生モードに設定されない場合は撮影・再生以外の処理が実行される(ステップS7)。
ステップS3,S6,S7の処理の後、電源ボタンが押下されたか否か判断され(ステップS8)、押下された場合は処理を終了し、押下されていない場合はステップS1に戻り、処理が継続される。
図2に示したプロセッサ104は、二種類のタイマー機能を有する。図4は、その二種類のタイマー機能である、カウントダウンタイマー(同図(a))とフリーランタイマー(同図(b))を示したものである。二種類のタイマーとも、セットした秒数がカウントダウンされ秒数がゼロになることを契機に割り込みを発生させる。カウントダウン中の秒数はレジスタで参照することができる。カウントダウンタイマーは一回のカウントダウンで処理を終了する。動作させるためには再度スタートさせる必要がある。一方、フリーランタイマーはリセットを実行しない限りX秒間隔の割り込みを実行し続ける。
図5は、CCDをスライドさせて手ぶれ補正を行う原理を示している。撮像面(CCD面)がP1の位置にあるとき、被写体の像はOに投影される。しかし、手ぶれにより、カメラがθx,θyだけ回転した場合、撮像面はP2の位置に移動して、被写体が写る場所がO’に移動する。そこで、撮像面がP1になるようにdx,dyだけ平行移動してやることにより、被写体の撮像面上での投影位置は元に戻すことができる。
次に、手ぶれ補正機構の構成について説明する。
図6〜図8は複数のレンズが収納される固定筒を示しており、図6はその正面図、図7は縦断面図、図8は背面図である。その図6〜図8において、10は固定筒である。固定筒10は箱形形状を呈し、その内側がレンズ鏡筒受入用の収納空間とされている。固定筒10の背面には全体的に略矩形状を呈する板状のベース部材11が取り付けられている。その固定筒10の内周壁には、ここではレンズ鏡筒を繰り出し・繰り入れるためのヘリコイド12が形成されている。固定筒10は少なくとも2つの角部が切り欠かれ、一方の角部10aは後述するステッピングモータSTMの取り付け部とされ、他方の角部10bは後述するフレキシブルプリント基板20の折り曲げ箇所とされている。
CCDステージ1251はそのベース部材11に設けられている。このCCDステージ1251は図10に分解して示すように環枠形状のX方向ステージ13と、矩形状のY方向ステージ14と、載置ステージ15とから大略構成されている。
X方向ステージ13はベース部材11に固定されている。このX方向ステージ13にはX方向に延びる一対のガイド軸13a,13bがY方向に間隔を開けて設けられている。X方向ステージ13には直方体形状の4個の永久磁石16a〜16dが配置されている。この4個の永久磁石16a〜16dは二個一対とされ、一対の永久磁石16a,16bはX-Y平面内でY方向に間隔を開けて平行に配置されている。この実施例では、一対のガイド軸13a,13bが一対の永久磁石16a,16bを貫通する構成とされているが、これに限るものではなく一対のガイド軸13a,13bに併設して設けられていても良い。一対の永久磁石16c,16dはX-Y平面内でX方向に間隔を開けて配置されている。
Y方向ステージ14はY方向に延びる一対のガイド軸14a,14bがX方向に間隔を開けて設けられている。そのY方向ステージ14にはX方向に間隔を開けて対向する二個一対の被支承部17a,17a’,17b,17b’がY方向に間隔を開けて形成されている。各一対の被支承部(17a,17a’),(17b,17b’)はX方向ステージ13の一対のガイド軸13a,13bにそれぞれ可動可能に支承され、これによりY方向ステージ14がX方向に可動可能とされている。
CCD101は載置ステージ15に固定されている。載置ステージ15はX方向に張り出した一対のコイル取り付け板部15a,15bとY方向に張り出した一対のコイル取付板部15c,15dとを有する。CCD101はその載置ステージ15の中央に固定されている。載置ステージ15にはCCD101の撮像面と同じ側にY方向に間隔を開けて対向する二個一対の被支承部(符号を略す)がX方向に間隔を開けて形成され、各一対の被支承部はY方向ステージ14の一対のガイド軸14a,14bに可動可能に支承され、これにより載置ステージ15は全体としてX-Y方向に可動可能とされている。
CCD101には撮像面と反対側の面に保護板19が貼り付けられている。保護板19にはその中央にテーパ形状の凹所19aが形成されている。この凹所19aの機能については後述する。
一対のコイル取り付け板部15a,15bにはそれぞれ偏平かつ渦巻き状のコイル体COL1,COL1’が貼り付けられている。コイル体COL1,COL1’は直列接続されている。一対の取付板部15c,15dにはそれぞれ偏平かつ渦巻き状のコイル体COLに、COL2’が貼り付けられている。コイル体COLに、COL2’も同様に直列接続されている。
各コイル体COL1,COL1’はそれぞれ各永久磁石16c,16dに臨まされている。各コイル体COLに、COL2’はそれぞれ永久磁石16a,16bに臨まされている。一対のコイル体COL1,COL1’は、Y方向にCCD101を可動させるするのに用いられ、一対のコイル体COLに、COL2’はY方向にCCD101を可動させるのに用いられる。
コイル体COL1,COL1’には、図8に示すように、各コイル体COL1,COL1’をX方向に横断する方向に磁性材料からなる吸着棒35が設けられている。
ここでは、位置検出素子1252にはホール素子が用いられ、一対のコイル取付板部15a,15bの一方のコイル取付板部15bには位置検出素子1252としてのホール素子1252aが設けられ、同様に一対のコイル取付板部15c,15dの一方のコイル取付板部15dにはホール素子1252bが設けられている。
そのCCD101はフレキシブルプリント基板20を介してF/EIC102に電気的に接続され(図10参照)、そのホール素子1252a,1252bはフレキシブルプリント基板20を介してオペレーションアンプリファイア21に電気的に接続され、各コイル体COL1,COL1’,COLに、COL2’はコイルドライバ1254に電気的に接続されている。
原点位置強制保持機構1263は、図10、図11に拡大して示すように、ステッピングモータSTM1を有する。このステッピングモータSTM1の駆動制御については後述することにし、原点位置強制保持機構1263のメカニカルな構成を先に詳細に説明する。
ステッピングモータSTM1は図6に示すように固定筒10の角部10aに設けられている。そのステッピングモータSTM1の出力軸20には出力ギヤ21が設けられている。固定筒10の角部10aには回転運動を直線運動に変換する変換機構22が設けられている。
この変換機構22は回転伝達ギヤ23と往復動シャフト24と付勢コイルスプリング25と強制押さえ板26とバネ受け部材27とから大略構成されている。固定筒10の角部10aにはZ軸方向に間隔を開けて一対の支承部28,29が形成されている。支承部28はモータ取付板から構成されている。往復動シャフト24はその支承部29とモータ取付板28との間に掛け渡されて支承されている。その回転伝達ギヤ23は一対の支承部28,29の間に位置して、往復動シャフト24に回転可能に支承されると共に、出力ギヤ21に噛合されている。
その往復動シャフト24の一端側の部分は支承部29を貫通してベース部材11の背面側に臨んでいる。付勢コイルスプリング25はバネ受け部材27と支承部29との間に設けられ、往復動シャフト24はその付勢コイルスプリング25により支承部28に向けて付勢されている。往復動シャフト24には回転伝達ギヤ23の軸穴端面と係合する段差部24aを有する。
その回転伝達ギヤ23にはその一方の端面部に図12(a)〜図12(e)に示すようにカム溝31が形成されている。このカム溝31は回転伝達ギヤ23の周回り方向に延び、谷底平坦部31aと頂上平坦部31bとその谷底平坦部31aから頂上平坦部31bに向かって連続的に傾斜する傾斜面部31cとから構成されている。その谷底平坦部31aと頂上平坦部31bとの間は後述するカムピンが回転方向から衝合する衝合壁としての絶壁31dとなっている。
その支承部28にはカムピン32が固定され、そのカムピン32の先端はカム溝31に摺接されている。その絶壁31dから傾斜面部31cの傾斜開始位置31eまでの谷底平坦部31aの回転方向の長さはステッピングモータSTM1の回転制御信号に換算して2パルス分に相当する。
その傾斜面部の傾斜開始位置31eから頂上平坦部31bに通じる傾斜終端位置31fまでの傾斜面部31cの回転方向長さはステッピングモータSTM1の回転制御信号に換算して30パルス分に相当する。
その傾斜終端位置31fから絶壁31dまでの間の頂上平坦部31bの回転方向長さはステッピングモータSTM1の回転制御信号に換算して3パルス分に相当し、ステッピングモータSTM1の35パルス分が回転伝達ギヤ23の1回転に対応し、回転伝達ギヤ23の一回転により往復動シャフト24がZ軸方向に一往復される。
強制押さえ板26はベース部材11の背面側に設けられている。その強制押さえ板26は図8に示すようにCCD101の中心に向かって長く延びる構成とされ、その強制押さえ板26の基端部26aは往復動シャフト24の一端部に固定されている。その強制押さえ板26の自由端部26bにはテーパ形状の押さえピン33が固定されている。その強制押さえ板26の延びる方向途中にはガイド軸26cが突出形成されている。
ベース部材11には位置決め突起11a,11bとコイル取り付け突起11cと係合突起11dとが形成されている。コイル取り付け突起11cにはネジリコイルバネ34の巻回部34aが取り付けられ、ネジリコイルバネ34の一端部34bは係合突起11dに係合され、ネジリコイルバネ34の他端部34cはガイド軸26cに係合されている。ベース部材11にはガイド軸26cをガイドするガイド穴(図示を略す)が形成されている。
強制押さえ板26はそのネジリコイルバネ34によって位置決め突起11aに当接されつつ往復動シャフト24の往復動に伴ってベース部材11に対して離反接近する方向(Z軸方向)に往復動される。そのガイド軸26cはその強制押さえ板26の往復動を安定した姿勢で行わせる役割を果たす。
押さえピン(嵌合突起)33は凹所(嵌合穴)19aと嵌合することにより載置ステージ15を機械的に原点位置に保持させる役割を果たし、図13(a)に拡大して示すように押さえピン33の周壁33aと保護板19の凹所周壁19bとが密接に嵌合した状態がカムピン32のホールド待機位置に相当し、図13(b)に拡大して示すように押さえピン33の周壁33aと保護板19の凹所周壁19bとが最大離間した状態がカムピン33のリリース待機位置に対応し、カムピン32のホールド待機位置は載置ステージ15の強制原点位置でもある。
CCDの移動目標地点はジャイロセンサ1241からの入力を基に決定される。ジャイロセンサ1241はカメラのPitch(ピッチ)方向の回転とYaw(ヨー)方向の回転を捉えるように配置されている。A/D変換器10411は、ジャイロセンサ1241からの出力をT[s]間隔で取り込んでAD変換する。
ここで、
ωyaw(t) ・・・Yaw方向の瞬間角速度
ωpitch(t) ・・・Pitch方向の瞬間角速度
θyaw(t) ・・・Yaw方向の変化角度
θpitch(t) ・・・Pitch方向の変化角度
Dyaw(t) ・・・Yaw方向の回転に対応して移動する像移動量
Dpitch(t) ・・・Pitch方向の回転に対応して移動する像移動量
とすると、
θyaw(t) = Σωyaw(i)・T (iは0からtまで) ・・・i
θpitch(t) = Σωpitch(i)・T (iは0からtまで) ・・・ii
で求められる。
一方、ズームポイントzp、フォーカスポイントfpから焦点距離fが決定される。
Dyaw(t) = f*tan(θyaw(t)) ・・・iii
Dpitch(t) = f*tan(θpitch(t)) ・・・iv
これがCCDの移動すべき量になる。図14は焦点距離によるCCD移動量を示し、また、図15及び表1はぶれ角とCCD補正移動量との関係を示している。
図16は、CCDを動かすためのサーボ制御の制御周期を示している。本実施例では、周期T=0.00025s毎に図17のフローが実行される。その結果、CCDは目標位置に対して図18のように動くことになる。
図17において、先ず、フラグが1であるか否か判断され(ステップS10)、フラグが1である場合はステップS11へ、フラグが1でない場合はステップS20へそれぞれ進む。ここで、図17のフローを処理するのにかかる時間は、フラグが1の場合は0.0001sであり(図16(a))、フラグが1でない場合は0.000005sである(図16(b))。
ステップS10において、フラグが1であると判断された場合、全てのカウントダウンタイマーの値が周期Tの2倍を超えているか、つまり「全てのカウントダウンタイマーの値 > 2*T」であるか否か判断される(ステップS11)。そして、ステップS10での判断がYesの場合はそのままステップS13へ進み、Noの場合はフラグを0にセット(ステップS12)してから、ステップS13へ進む。
次に、カウンタが4の倍数+3であるか否か判断され(ステップS13)、Yesの場合はサーボ制御を行ってCCDを動かし(ステップS19)、その後、ステップS20へ進む。ステップS13での判断がNoの場合は、ステップS14へ進む。
さらに、カウンタが4の倍数+2であるか否か判断され(ステップS14)、Yesの場合は、Pitch方向の角速度検出・角度算出を行って目標値をセットするとともに、サーボ制御を行ってCCDを動かし(ステップS18)、その後、ステップS20へ進む。ステップS14での判断がNoの場合は、ステップS15へ進む。
さらに、カウンタが4の倍数+1であるか否か判断され(ステップS15)、Yesの場合はサーボ制御を行ってCCDを動かし(ステップS17)、その後、ステップS20へ進む。
ステップS15での判断がNoの場合は、Yaw方向の角速度検出・角度算出を行って目標値をセットするとともに、サーボ制御を行ってCCDを動かし(ステップS16)、その後、ステップS20へ進む。
そして最後に、ステップS20において、カウンタに1を足す処理を実行後、全体の処理を終了する。
サーボ制御においては、周期T[s]が短い程、制御値をよりよく目標値近傍へ収束させることができるという特徴がある。ところが、例えばT=0.0001sとすると手ぶれ補正処理の間隔が最短にはなるが、この場合、手ぶれ補正以外の処理にもCPUを使うので、手ぶれ補正のCPU占有率を100%にはできない。一方、占有率が高すぎると、手ぶれ補正以外の割り込み処理に阻害され、手ぶれ補正の割り込みがずれたり、手ぶれ補正の割り込み処理が抜け落ちたりして、実装されている手ぶれ補正以外の機能に影響を及ぼす。これらの課題を回避するため、本実施例ではCPU占有率を40%の周期T=0.00025[s]に設定する。サーボ制御によってCCDを中央に居つづけさせるセンタリング、及び露光時の手ぶれ補正も共に周期T=0.00025[s]とする。
図19は、静止画撮影時の処理を示している。
レリーズ1押下後にCCDを固定している保持機構を解除し、同時にセンタリングを行う。レリーズ2押下後にCCDの追随を始め、露光を行う。露光の終了とともに追随を終了し、再びセンタリングを行う。センタリングが完了すると、CCDステージの固定を行う。レリーズ1、レリーズ2処理はSUB−CPU109を経由してCPUブロック1043が制御する。
図19において、先ず、手ぶれ補正ボタンをオンすると(ステップS30)、ジャイロセンサ電源がオンされる(ステップS31)。そして、レリーズ1を押下して、レリーズ1処理が終了したとき(ステップS32)、制御周期が決定されて(ステップS33)、CCDステージが解放されるとともに、CCDの中央保持制御が開始される(ステップS34)。
次に、レリーズ1の押下が継続しているか否か判断され(ステップS35)、継続していなければCCDステージを固定し(ステップS35)、その後、ステップS32に戻る。ステップS35において、レリーズ1の押下が継続している場合は、さらに、レリーズ2が押下されているか否か判断され(ステップS37)、押下されていなければステップS35に戻る。
ステップS37において、レリーズ2が押下されている場合、再び制御周期が決定され(ステップS38)、その決定された制御周期に変更されてから(ステップS39)、CCD追随が開始される(ステップS40)。このとき、露光が実行され(ステップS41)、この露光が終了すると(ステップS42)、CCD追随が終了するとともに、CCDの中央保持制御が開始される(ステップS43)。
そして最後に、CCDの中央保持制御が終了したか否か判断され(ステップS44)、終了したときはCCDステージを固定して(ステップS45)、全体の処理が終了する。
図20及び図21は特に露光中に焦点を当てたものであり、露光中のタイミングチャートを示している。ここで、図21は図20の要部を詳細に示したものである。また、図22は二種類のタイマーの使用方法を示している。
図20及び図21の手ぶれ補正処理Aは、図17におけるステップS10の判断ブロック「フラグは1?」がYesであった場合の処理を示している。この処理は、角度の再算出・目標地点の再設定・サーボ制御による目標地点への追随を繰り返す処理である。このように処理を繰り返すと、その分、CPUを占有する期間が長くなる。
一方、手ぶれ補正処理Bは、図17におけるステップS10の判断ブロック「フラグは1?」がNoであった場合の処理を示している。この処理は、角度の再算出・目標地点の再設定・サーボ制御による目標地点への追随を行わない処理である。追随を行わないため、CPUを占有する期間が手ぶれ補正処理Aと比較して極めて短い。
本実施例では、露光に関する処理(シャッタを閉じる処理、フラッシュ発光開始処理、またはフラッシュ発光開始処理)を開始する際に、その開始時間が所定時間以内になったら、手ぶれ補正の処理を停止(手ぶれ補正処理Aを手ぶれ補正処理Bに)している。すなわち、シャッタを閉じる処理、フラッシュ発光開始処理、またはフラッシュ発光開始処理を、手ぶれ補正の処理よりも優先して実行するようにしている。
ここで、露光前から図20及び図21を左から時間順に見ていくことにする。モニタリング画像の明るさ度合いを利用して露光時間C=0.5秒、発光開始時間B=0.067秒、発光終了時間A=0.068秒と決定する。また、露光前にフリーランタイマーをスタートさせる。フラグの初期値は1である。T[s]周期で図17のフローが実行されつづける。
露光開始と同時に、図22のカウントダウンタイマー1,2,3の3つをスタートさせる(図21参照)。
フラッシュ発光開始処理が実行される直前では、図17におけるステップS11の判断ブロック「全てのカウントダウンタイマーの値 > 2*T」での判断がYesからNoに変わり、フラグが0になる。次の割り込みからは図17の判断ブロック「フラグは1?」での判断がNoとなるので、図17のフローはほぼ何も実行せずに抜ける。
カウントダウンタイマー1が0になり、フラッシュ発光開始処理の割り込みが入る。フラッシュ発光開始処理がたまたま手ぶれ補正の処理とタイミングが重なったとしても、このとき手ぶれ補正の処理は0.000005sなので、フラッシュ発光タイミングのずれは無視できる。
フラッシュ発光開始処理の最後でフラグを1にする。この後からの手ぶれ補正の割り込みでは再び、判断ブロック「全てのカウントダウンタイマーの値 > 2*T」での判断がYesになり、手ぶれ補正処理を実行しつづける。
フラッシュ発光終了処理直前になると、図17における判断ブロック「全てのカウントダウンタイマーの値 > 2*T」での判断がYesからNoに変わり、フラグが0になる。次の割り込みからは図17のステップS10における判断ブロック「フラグは1?」でNoとなるので、図17のフローはほぼ何も実行せずに抜ける。
カウントダウンタイマー2が0になり、フラッシュ発光終了処理の割り込みが入る。フラッシュ発光終了処理がたまたま手ぶれ補正の処理とタイミングが重なったとしても、このとき手ぶれ補正の処理はほぼ何もしていないので、フラッシュ発光終了タイミングのずれは事実上ないといえる。
フラッシュ発光終了処理の最後でフラグを1にする。この後からの手ぶれ補正の割り込みでは再び、判断ブロック「全てのカウントダウンタイマーの値 > 2*T」での判断がYesになり、手ぶれ補正処理を実行しつづける。
メカシャッタ閉じ処理直前になると、図17における判断ブロック「全てのカウントダウンタイマーの値 > 2*T」での判断がYesからNoに変わり、フラグが0になる。次の割り込みからは図17の判断ブロック「フラグは1?」での判断がNoとなるので、図17のフローはほぼ何も実行せずに抜ける。
カウントダウンタイマー3が0になり、メカシャッタ閉じ処理の割り込みが入る。メカシャッタ閉じ処理がたまたま手ぶれ補正の処理とタイミングが重なったとしても、このとき手ぶれ補正の処理はほぼ何もしていないので、メカシャッタ閉じタイミングのずれは事実上ないといえる。
メカシャッタ閉じ処理の最後でフラグを1にする。この後からの手ぶれ補正の割り込みでは再び、判断ブロック「全てのカウントダウンタイマーの値 > 2*T」での判断がYesになり、手ぶれ補正処理を実行しつづける。
手ぶれ補正処理Bでは制御を行わないので、手ぶれ補正処理Aに戻るまではコイルに流す電流は最近の電流値設定のままであり、最近の進行方向にCCDが進みつづける。目標地点から離れて露光されるが、制御を停止する期間は微小であるので、目標地点から離れる距離・露光量も微小であり、画像に対して影響を及ぼさない。
フラッシュ発光開始処理の終わりとフラッシュ発光終了処理の開始の間が2*Tより短い場合には、フラッシュ発光終了処理が手ぶれ補正処理(0.0001秒)と重なる場合があり得るので、露光タイミングチャートは、図20に代わりに、図23のようになる。また、カウントダウンタイマーの使用方法は、図22の代わりに、図24のようになる。
フラッシュ発光開始処理の最後にフラグを1に戻さない。フラッシュ発光終了処理の最後にフラグを1に戻す。この結果、フラッシュ発光中は常に、図17の判断ブロック「フラグは1?」がNoで0.000005sになる。
判断ブロック「全てのカウントダウンタイマーの値 > 2*T」が2*Tを基準とする根拠を図25に示す。最も遅く「全てのカウントダウンタイマーの値 > 2*T」がNoとなる場合がケース1であり、最も早く「全てのカウントダウンタイマーの値 > 2*T」がNoとなる場合がケース2である。いずれの場合もフラッシュ開始処理実行には図17のフローが0.000005sになっている。Tの乗数「2」は、フラッシュ開始処理実行に図17のフローが0.000005sであるための最小の乗数である。
なお、判断ブロックの「全てのカウントダウンタイマー」とは、前述したようにカウントダウンタイマーは3つあるが、そのうちの少なくとも1つのカウントダウンタイマーが稼動中であることを指している。
また、本実施例ではCCD101をX-Y方向に移動させる例を示したが、撮影光学系(つまりズームレンズ71a、フォーカスレンズ72a及び絞り73a)をX-Y方向に移動させてもよく、また、CCD101及び撮影光学系を相対的にX-Y方向に移動させてもよい。