以下、本発明に係る撮影装置の実施形態について図面を用いて詳しく説明する。
(第1の実施形態)
図1は、本発明に係る撮影装置の一例を示すデジタルカメラ100のブロック図である。尚、デジタルカメラ100を構成する各部は、必ずしも図1と同一の構成である必要はない。
図1において、デジタルカメラ100は、レンズ光学系101と、撮像素子102と、A/D変換部103と、バッファメモリ104と、システムバス105と、信号処理回路106と、CPU(中央演算ユニット)107と、操作パネル108と、ROM(リードオンリメモリ)109と、タッチパネル110と、液晶モニタ111と、表示回路112と、RAM(ランダムアクセスメモリ)113と、メモリカードIF(インターフェース)114と、メモリカード115と、I/Oコントローラ116と、機構部117とで構成される。ここで、機構部117は、アクチュエータ120と、モータ121と、駆動部122と、エンコーダ123とで構成される。
レンズ光学系101は、複数枚の光学レンズで構成され、撮影対象となる被写体像を撮像素子102の受光面に結像する役目を果たす。また、レンズ光学系101は焦点調節を行うフォーカスレンズやズームレンズを備え、モータ121によってフォーカスレンズやズームレンズの位置を移動し、アクチュエータ120によって絞りなどを駆動する。ここで、フォーカスレンズやズームレンズの位置は、エンコーダ123によって読み取られ、I/Oコントローラ116およびシステムバス105を介してCPU107に出力される。そして、CPU107は、フォーカスレンズやズームレンズの位置が所定の位置に移動するまでモータ121やアクチュエータ120を駆動するように、システムバス105およびI/Oコントローラ116を介して駆動部122に指令する。
撮像素子102は、エリアセンサとも呼ばれ、その受光面には二次元状に複数の光電変換部が配置されている。そして、レンズ光学系101によって受光面に結像された画像を各光電変換部で電気信号に変換し、アナログの画像信号を出力する。
A/D変換部103は、撮像素子102が出力するアナログの画像信号をデジタルの画像データに変換し、バッファメモリ104に一時的に記憶する。バッファメモリ104は、信号処理回路106やCPU107によって実行される画像処理や画像データのフロー制御などを行うために一時的に画像データを格納するための場所である。
CPU107は、デジタルカメラ100全体の動作を制御するマイクロプロセッサである。尚、CPU107は、ROM109に予め格納されたプログラムコードやプログラムコードが参照するデータに基づいて動作する。
操作パネル108は、撮影者がデジタルカメラ100を操作するために必要な操作ボタンやスイッチ類(電源ボタン108a、レリーズボタン108b、撮影モード切替スイッチ108cなど)が含まれる。これらの操作ボタンやスイッチ類の操作状態は、CPU107によって検出される。
タッチパネル110は、液晶モニタ111の画面上に配置される。CPU107は、操作パネル108とは別に、デジタルカメラ100の操作インターフェースを示すグラフィック画像を液晶モニタ111の画面に表示し、撮影者は液晶モニタ111の画面に表示されている操作インターフェースを指で操作する。この時の操作情報は、タッチパネル110から操作パネル108を介してCPU107に出力され、CPU107は得られた操作情報に応じてデジタルカメラ100を制御する。ここで、タッチパネル110が検知する操作情報は、撮影者の指が置かれている液晶モニタ111の画面上の位置と、撮影者の指がタッチパネル110を押している押圧力である。つまり、タッチパネル110は、撮影者が指で触れた位置の検出と、その位置での圧力の検出とを同時に行えるものである。例えば、タッチパネル110の検出方式として、抵抗膜による抵抗の変化を利用するものや静電容量の変化を利用するものがある。或いは、超音波表面弾性波を用いたもの、光線遮断位置を検出するもの、画像認識によって検出するもの、電磁誘導による磁界変化を利用するものなど、様々な方式が考えられるが、撮影者が指で触れた位置の検出と、その位置での圧力の検出とを同時に行えるものであれば、どの方式を用いても構わない。
液晶モニタ111は、ビデオコントローラとして機能する表示回路112によって駆動される表示装置であり、信号処理部106やCPU107がシステムバス105を介して表示回路112に出力する画像情報や操作インターフェースなどのグラフィック情報・文字情報などが表示される。例えば、図2に示すように、デジタルカメラ100の背面に取り付けられた液晶モニタ111の画面上には、操作インターフェース151や文字情報(露出値、設定感度など)152が表示される。
RAM113は、ランダムアクセスメモリで、CPU107,信号処理回路106および表示回路112の動作時に必要なデータの格納用として機能する。
メモリカード115は、不揮発性メモリで構成され、一旦記録されると電源が遮断されても内容を保持する。また、メモリカード115は、メモリカードIF114に含まれるコネクタに着脱可能な形状で、メモリカードIF114を介して画像データや付加情報の記録再生が行われる。
信号処理回路106は、画像処理を行うプロセッサで、画像処理に必要な各種演算を高速で行う機能を備え、システムバス105を介して接続されるCPU107の指令によって動作する。例えば、撮像素子102で撮影された画像がバッファメモリ104に取り込まれた時に、ホワイトバランス処理や色補間処理などを実行する。
I/0コントローラ116は、CPU107の指令によって機構部117の各部の動作を制御する。
エンコーダ123は、レンズ光学系101の状態を取得するためのセンサで、フォーカスレンズやズームレンズなどの位置を検出する。
モータ121は、レンズ光学系101のフォーカスレンズやズームレンズなどの位置を移動するための機構を駆動する。
駆動部122は、モータ121やアクチュエータ120のドライバで、I/Oコントローラ116からの制御信号をモータ121やアクチュエータ120が駆動されるのに必要な電力に変換して供給する。
アクチュエータ120は、レンズアクチェータで、レンズ光学系101に含まれる絞り機構などを駆動する。
電源が投入されるとCPU107は、ROM109からプログラムコードを読み込み、実行を始める。このプログラムコードは、最初にデジタルカメラ100の各部の状態を初期化し、撮影待機状態に設定する。初期設定が完了すると、レンズ光学系101を介して撮像素子102に結像された被写体画像がA/D変換部103を介してバッファメモリ104に一時的に記憶される。バッファメモリ104に一時的に記憶された画像データは、信号処理部106でホワイトバランス処理や色補間処理などの処理が行われて、再びバッファメモリ104に記憶される。そして、システムバス105および表示回路112を介して液晶モニタ111の画面に撮影画像が表示される。このような動作を繰り返して、時系列に連続して撮像素子103で撮影されるプレビュー画像が液晶モニタ111の画面に動画として表示され、撮影者は液晶モニタ111に表示される画面を見ながら撮影画像の構図を定めることができる。この時の様子を図3に示す。
図3は、図2で説明した液晶モニタ111の画面上にプレビュー表示される画像と操作インターフェース151と、露出値や設定感度を示す文字情報152とが表示されている。次に、撮影者が液晶モニタ111の画面上に表示されている操作インターフェース151を操作して、ズーム操作とフォーカス操作を行う場合の例について説明する。図3において、液晶モニタ111の画面上には、操作インターフェース151として、スライドレバー151aと、一次元軸状に描かれたスライドレール151bとが表示されている。ここで、撮影者は、撮影者の指153を透明な部材で構成されたタッチパネル110に押し当てたままスライドレール151bに沿ってスライドレバー151aを上下させるとズーム操作ができ、撮影者の指153をタッチパネル110に押し当てる圧力(押圧力)を増減させるとフォーカス操作ができるようになっている。例えば、ズーム操作を行う場合は、撮影者の指153をタッチパネル110に押し当てたままスライドレバー151aをスライドレール151bに沿って紙面上方向に移動させるとズームインされ、スライドレバー151aをスライドレール151bに沿って紙面下方向に移動させるとズームアウトされる。
ここで、ズームインした時の様子を図4に示す。図4に示したように、ズームインした時に撮影される被写体画像のフォーカスがずれている場合、撮影者は指153をスライドレバー151aに押し当てたままの状態でフォーカス操作を行うことができる。例えば、スライドレバー151aに押し当てている撮影者の指153の押圧力を増やすとレンズ光学系101のフォーカスレンズの位置を前側(撮像素子102から離れる方向)に移動し、撮影者の指153の押圧力を減らすとレンズ光学系101のフォーカスレンズの位置を後側(撮像素子102に近づく方向)に移動する。このようにして、撮影者は、図5に示すように、指153をスライドレバー151aに押し当てたままの状態でフォーカスを合わせることができる。つまり、撮影者は、スライドレバー151aから指153を離すことなく、ズーム操作とフォーカス操作とを同時に行うことができる。
尚、上記の説明では、撮影者がスライドレバー151aに押し当てる指153の押圧力を変えても、液晶モニタ111の画面に表示されるスライドレバー151aのグラフィック画像は変化しなかったが、撮影者がスライドレバー151aに押し当てる指153の押圧力を変えた場合に、液晶モニタ111の画面に表示されるスライドレバー151aのグラフィック画像を変化させても構わない。例えば、図6(a)は、図4と同じ状態を示し、スライドレバー151aに押し当てる撮影者の指153の押圧力を変える前のスライドレバー151aのグラフィック画像を描いてある。これに対して、図6(b)は、撮影者がスライドレバー151aに押し当てる指153の押圧力を図6(a)の状態よりも弱くした時のスライドレバー151aのグラフィック画像を描いてある。この時、図6(b)のスライドレバー151aの大きさは図6(a)のスライドレバー151aの大きさよりも小さくなっている。逆に、撮影者がスライドレバー151aに押し当てる指153の押圧力を図6(a)の状態よりも強くした時は、図6(c)に示すように、スライドレバー151aの大きさは図6(a)のスライドレバー151aの大きさよりも大きく表示される。つまり、押圧力を強くすればスライドレバー151aは大きく表示され、押圧力を弱くすればスライドレバー151aは小さく表示される。これは、人間の自然な感覚に合致した操作である。尚、図6に描かれたスライドレバー151aの大きさは3種類だけであるが、押圧力の変化に応じて無段階に近い形状の変化を表示するようにしても構わない。
或いは、図6に示したようにグラフィック画像の大きさを変化させるのではなく、グラフィック画像の輝度や色相を変化させるようにしても構わない。例えば、図7(a)は、図4と同じ状態を示し、スライドレバー151aに押し当てる撮影者の指153の押圧力を変える前のスライドレバー151aのグラフィック画像を描いてある。これに対して、図7(b)は、撮影者がスライドレバー151aに押し当てる指153の押圧力を図7(a)の状態よりも弱くした時のスライドレバー151aのグラフィック画像を描いてある。この時、図7(b)のスライドレバー151aの輝度は図7(a)のスライドレバー151aの輝度よりも暗くなっている。逆に、撮影者がスライドレバー151aに押し当てる指153の押圧力を図7(a)の状態よりも強くした時は、図7(c)に示すように、スライドレバー151aの輝度は図7(a)のスライドレバー151aの輝度よりも明るく表示される。つまり、押圧力を強くすればスライドレバー151aは明るく表示され、押圧力を弱くすればスライドレバー151aは暗く表示される。これも、図6と同様に、人間の自然な感覚に合致した操作である。尚、図7に描かれたスライドレバー151aの輝度は3種類だけであるが、押圧力の変化に応じて無段階に近い輝度変化を表示するようにしても構わない。
ここで、スライドレバー151aをスライドレール151bに沿って移動させる場合、CPU107はスライドレバー151aの移動方向も検知する。例えば、図8(a)に示すように、スライドレール151bがxy座標のy軸方向に描かれている場合、撮影者の指153の移動方向もy軸に沿った一次元軸方向でなければならない。尚、実際には、x軸方向の振れの許容範囲を予め設定しておき、許容範囲内の振れである場合は、撮影者の指153がy軸に沿った一次元軸方向に移動したと判断してもよい。
そして、図8(b)に示すように、スライドレバー151aの移動方向が、スライドレール151bの一次元軸方向でない場合は、誤って何かがタッチパネル110に触れたものと判断してデジタルカメラ100の制御に反映させない。例えば、図3でズーム制御を行う場合に、図8(b)のようにスライドレバー151aの移動方向がスライドレール151bの一次元軸方向にない場合は、CPU107はズーム操作に反映させない。
ここで、上記の例では、スライドレバー151bのように直線状の操作インターフェースが一次元軸方向に配置されて、撮影者は一次元軸方向に指153を移動させて操作する場合について説明した。次に、操作インターフェースが直線上ではない場合の例について説明する。例えば、図9に示すように、色相環154を液晶モニタ111の画面に表示させて、撮影画像の色相や明るさを調整する操作インターフェースの場合について説明する。この場合、撮影者は、指153を色相環154に当てて撮影画像の色合いを調整する。例えば、撮影者の指153を色相環154上を円形に移動させると色相が変化する。さらに、所定の色相上に指153を当てたままの状態で押圧力を変化させると、そのままの色相で明るさだけが変化する。例えば、押圧力を強くすると撮影画像は明るくなり、押圧力を弱くすると撮影画像は暗くなる。このようにして、撮影者は、自然な感覚で撮影画像の色相や明るさを調整することができる。尚、この場合、操作インターフェースは円形状になっているので、撮影者は円形の所定軸方向に指153を移動させて操作することになる。そして、図8で説明した場合と同様に、円形の軸近傍から指153が外れた場合は、誤って何かがタッチパネル110に触れたものと判断し、CPU107は色相の制御に反映させない。
尚、上記で説明したズーム操作やフォーカス操作或いは色相や明るさなどの調整操作だけでなく、画面上にレリーズボタンを表示させて、レリーズボタン上においた指153の押圧力が所定値未満の場合は半押しであると判断し、押圧力が所定値以上の場合は全押しであると判断するようにしても構わない。或いは、撮影モードの設定や露出制御、或いはAFエリアの設定や感度設定など様々な操作インターフェースに適用することができる。
このようにして、撮影者は、液晶モニタ111上のタッチパネル110に押し当てる指153の位置や押圧力によって、デジタルカメラ100の様々な操作を行うことができる。
次に、デジタルカメラ100の動作について、図10および図11のフローチャートを用いて説明する。先ず、図10は、先に説明した様々な操作インターフェースを使用する場合に共通する操作入力の初期処理に関するフローチャートである。尚、図10のフローチャートは、ROM109に予め記憶されたプログラムコードに基づいてCPU107が処理する内容を示している。
(ステップS101)CPU107は、操作入力の初期処理を開始する。ここで、操作入力の初期処理とは、撮影者が液晶モニタ111の画面に表示されている操作インターフェースに最初に指153を触れた時の処理である。
(ステップS102)CPU107は、操作情報を初期化する。ここで、操作情報とは、タッチパネル110で検知される撮影者の指153の位置と押圧力の情報を意味し、これらの操作情報はRAM113の所定の領域に記憶される。位置情報は、例えばタッチパネル110をx軸(7ビット:0から127)とy軸(7ビット:0から127)の二次元座標として、その座標値で記憶する。また、押圧力は、例えばタッチパネル110で検知可能な範囲を(7ビット:0から127)で量子化した時の値で記憶する。ここで、座標値の初期値は(0,0)で、押圧力の初期値は0とする。尚、押圧力が0とは、指153がタッチパネル110に置かれていない状態を示す。本処理ステップでは、RAM113の所定領域に記憶される座標値と押圧力を初期値に設定する。
(ステップS103)CPU107は、連続操作タイマを0に初期化する。ここで、連続操作タイマとは、撮影者の指153がタッチパネル110に触れている時間を確認するためのタイマで、連続操作タイマの値はRAM113の所定の領域に記憶される。連続操作タイマは、所定の時間毎にカウントされるタイマである。尚、本実施形態では、連続操作タイマ=0の時は、連続操作タイマが起動されていないことを示す。
(ステップS104)CPU107は、撮影者が液晶モニタ111の画面に表示されている操作インターフェースに指153を触れたか否かを判別する。つまり、タッチパネル110上のいずれかの位置で0以外の押圧力を検知した場合は操作入力が有ったと判別してステップS105に進み、タッチパネル110上のいずれかの位置でも0以外の押圧力を検知しない場合は操作入力が無かったと判別し、操作入力が有るまで待機する。
(ステップS105)CPU107は、液晶モニタ111の画面に表示されている操作インターフェースの操作情報を取得する。つまり、タッチパネル110で0以外の押圧力を検知した位置とその時の押圧力とをタッチパネル110から取得する。
(ステップS106)CPU107は、連続操作タイマ=0か否かを判別する。連続操作タイマ=0の場合はステップS107に進み、連続操作タイマ=0でない場合はステップS108に進む。例えば、ステップS103を通って、最初に操作入力が有った場合は,連続操作タイマ=0となっているのでステップS107に進む。
(ステップS107)CPU107は、連続操作タイマを起動する。例えば、連続操作タイマ=1にする。
(ステップS108)CPU107は、連続操作が行われたか否かを判別する。ここで、連続操作とは、撮影者の指153がタッチパネル110から離れずに行う操作を意味する。つまり、撮影者の指153がタッチパネル110から離れた場合は、連続操作ではなくなるので、ステップS103に戻る。また、撮影者の指153がタッチパネル110から離れていない場合は、連続操作中となりステップS109に進む。
(ステップS109)CPU107は、連続操作タイマをカウントアップする。尚、本実施形態では、連続操作タイマはステップS105からステップS110までの処理を繰り返す速さに応じてカウントアップされるようになっているが、CPU107に内蔵されるクロックに応じて所定間隔毎に割り込み処理を行うようにすれば、正確な時間で連続操作タイマをカウントアップすることができる。ここで、RAM113の連続操作タイマ用の記憶領域に記憶されている値はカウントアップされた連続操作タイマの値に更新される。
(ステップS110)CPU107は、RAM113の連続操作タイマ用の記憶領域を読み出して、連続操作タイマがタイムアウトしたか否かを判別する。つまり、ステップS109でカウントアップされた連続操作タイマが予め設定した所定値に達したか否かを判別する。連続操作タイマがタイムアウトした場合はステップS111に進み、連続操作タイマがタイムアウトしていない場合はステップS105に戻る。
(ステップS111)CPU107は、ステップS105で取得した操作情報(タッチパネル110で0以外の押圧力を検知した位置とその時の押圧力)をタッチパネル110から入力された操作情報として確定する。つまり、CPU107は、確定した操作情報を各処理に反映する。例えば、確定した操作情報を用いてズーム処理やフォーカス処理を行う。
(ステップS112)CPU107は、操作入力の初期処理を終了する。
以上、処理ステップS101から処理ステップS112までの一連の処理は、液晶モニタ111上に表示された操作インターフェースを用いてデジタルカメラ100を操作する場合に共通の入力処理である。ここで、図10に示した操作入力の初期処理は、撮影者が液晶モニタ111上に表示された操作インターフェースで操作入力を行おうとしている時に、撮影者の身体や鞄などの物体が誤ってタッチパネル110に触れた場合の誤動作を防止するための初期処理である。これらの初期処理によって、例えば、連続操作タイマの設定時間より短い時間でタッチパネル110に触れた場合は、操作入力がなかったものとして処理され、実際の制御処理(ズーム処理やフォーカス処理など)は行われない。
次に、図10で説明した初期入力処理を用いて、実際の制御処理を行う場合の一例について説明する。図11は、ズーム操作とフォーカス操作とを同時に行う操作インターフェースでの操作入力の流れを示したフローチャートである。尚、図11のフローチャートは、ROM109に予め記憶されたプログラムコードに基づいてCPU107が処理する内容を示している。
(ステップS201)CPU107は、ズーム制御とフォーカス制御の処理を開始する。ここで、CPU107は、図3の操作インターフェース151に示すようなスライドレバー151aとスライドレール151bとを液晶モニタ111の画面に表示する。また、この時、液晶モニタ111の画面には、時系列に連続して撮像素子103で撮影されるプレビュー画像が動画として表示され、撮影者は液晶モニタ111に表示される画面を見ながら撮影画像の構図を確認することができる。
(ステップS202)CPU107は、図10のフローチャートで説明した初期入力処理を実行する。つまり、初期入力処理で撮影者の指153が意図的にタッチパネル110に触れたことを検出する。そして、操作情報が確定したら初期入力処理が終了し、ステップS203に進む。
(ステップS203)CPU107は、液晶モニタ111の画面に表示されている操作インターフェースの操作情報(押圧力と押圧力を検知した位置)を取得し、RAM113の所定領域に記憶する。尚、この時、撮影者の指153がタッチパネル110から離れている場合は押圧力は0となる。また、押圧力を検知した位置は、押圧力が0なので特定できないため、押圧力を検知した位置の座標を初期値(0,0)として、RAM113の所定領域に記憶する。ここで、RAM113の所定領域には、最新の押圧力と押圧位置だけでなく、前回の押圧力と押圧位置も記憶される。
(ステップS204)CPU107は、ステップS203で入力した操作情報の押圧力をRAM113の所定領域から読み出して、押圧力が0(タッチパネル110に撮影者の指153が触れていない状態)であるか否かを判別する。押圧力が0の場合(撮影者の指153がタッチパネル110から離れた場合)はステップS215に進んでズーム制御およびフォーカス制御の処理を終了し、押圧力が0でない場合(撮影者の指153がタッチパネル110に置かれている場合)はステップS205に進む。
(ステップS205)CPU107は、ステップS203で入力した操作情報の押圧力が変化したか否かを判別する。つまり、RAM113の所定領域に記憶されている前回の押圧力と最新の押圧力とを比較し、押圧力が変化したか否かを判別する。尚、前回の押圧力と最新の押圧力との比較は単純に差分が0であるか否かで判断してもよいが、例えば、両者の差分の絶対値が予め設定した閾値以上である場合に変化したと判断し、予め設定した閾値未満である場合は変化していないと判断してもよい。
押圧力が変化した場合はステップS206に進み、押圧力が変化していない場合はステップS209に進む。
尚、この時、押圧力の変動幅が所定値以上ある場合は、押圧力が変化しなかったものと判断するようにしても構わない。これにより、撮影者がデジタルカメラ100を握り直すなどのイレギュラーな操作によって、一時的に強い圧力がタッチパネル110に掛かって誤動作することを防止できる。
(ステップS206)CPU107は、押圧力が変化した場合に、押圧力が大きくなったか小さくなったかを判別する。つまり、RAM113の所定領域に記憶されている前回の押圧力と最新の押圧力との差を計算し、どちらが大きいかを判別する。
(前回の押圧力)−(最新の押圧力)<0の場合は押圧力が大きくなったと判断してステップS207に進み、(前回の押圧力)−(最新の押圧力)>0の場合は押圧力が小さくなったと判断してステップS208に進む。
(ステップS207)CPU107は、フォーカスレンズの位置を後側(撮像素子102に近づく方向)に移動する。つまり、CPU107は、システムバス105およびI/Oコントローラ116を介して駆動部122に指令し、駆動部122はフォーカスレンズの位置が撮像素子102に近づく方向に移動するようモータ121を所定量だけ駆動する。処理後、ステップS209に進む。ここで、所定量だけ駆動するとは、予め設定された距離だけフォーカスレンズの位置を動かすことを意味し、本処理ステップを通る度に少しずつフォーカスレンズの位置が撮像素子102側に近づいて行く。尚、フォーカスを精度良く合わせるためには、所定量を駆動部122で駆動できる最小単位にするのが望ましい。
(ステップS208)CPU107は、フォーカスレンズの位置を前側(撮像素子102から離れる方向)に移動する。つまり、CPU107は、システムバス105およびI/Oコントローラ116を介して駆動部122に指令し、駆動部122はフォーカスレンズの位置が撮像素子102から離れる方向に移動するようモータ121を所定量だけ駆動する。処理後、ステップS209に進む。ここで、所定量の意味については、ステップS207で説明した通りである。
(ステップS209)CPU107は、ステップS203で入力した操作情報の押圧位置が変化したか否かを判別する。つまり、RAM113の所定領域に記憶されている前回の押圧位置と最新の押圧位置とを比較し、押圧位置が変化したか否かを判別する。尚、前回の押圧位置と最新の押圧位置との比較は単純に前回の位置と最新の位置との距離が0であるか否かで判断してもよいが、例えば、両者の距離が予め設定した閾値以上である場合に変化したと判断し、予め設定した閾値未満である場合は変化していないと判断してもよい。ここで、例えば、前回の座標A(x1,y1)から今回の座標B(x2,y2)に移動している場合、両者の距離をABで表すと、距離ABは(式1)で求められる。
AB=√((x2−x1)^2+(y2−y1)^2) …(式1)
上記の判別の結果、押圧位置が変化した場合はステップS210に進み、押圧位置が変化していない場合はステップS203に戻る。
(ステップS210)CPU107は、RAM113の所定領域に記憶されている前回の押圧位置と最新の押圧位置とを比較し、押圧位置が所定軸上にあるか否かを判別する。ここで、例えば図3に描いた操作インターフェースの場合、スライドレバー151aはスライドレール151bの一次元軸上を移動するので、所定軸はスライドレール151bの一次元軸に相当する。
また、図8(a)および図8(b)のように、x軸を水平方向、y軸を垂直方向(スライドレール151bの一次元軸方向)にxy座標を取ったとすると、例えば、前回の座標A(x1,y1)から今回の座標B(x2,y2)に移動した場合、スライドレール151bはy軸方向に配置されているので、x軸方向の動きは0または小さい範囲になるはずである。そこで、x軸の範囲を0から127およびy軸の範囲を0から127とした場合、CPU107は、例えば閾値をαとすると、x2がx1±αの範囲内にあるか否かを判別する。
(x1−α)<x2<(x1+α) …(式2)
例えば、閾値α=3の場合、(x1−3)<x2<(x1+3)を満たすか否かを判別する。
上記の判別の結果、x2が(式2)を満たす場合は所定軸上にあると判断してステップS211に進み、x2が(式2)を満たさない場合は所定軸上にないと判断してステップS203に戻る。
尚、所定軸が図8のように一次元軸上ではなく、図9に示すような円形の軸である場合は、例えば色相環154の外側円と内側円との間の座標上にある場合を所定軸上にあると判断し、色相環154の外側円より外側または内側円より内側の座標上にある場合を所定軸上にないと判断する。
また、ここでは、CPU107は、押圧位置の移動方向を判別するようにしたが、移動方向だけでなく単位時間当たりの移動距離を算出して、移動速度を判別条件に加えても構わない。この場合は、所定軸方向であって且つ所定速度以下で押圧位置が移動しているか否かを判別する。例えば、撮影者が意図せずにたまたま何かの物体が接触したような場合は、撮影者が意図して指153を動かす場合に比べて、移動方向が同じでも移動速度が速い場合が想定される。移動速度を判別条件に加えることで、このような誤動作を排除することができる。
(ステップS211)CPU107は、RAM113の所定領域に記憶されている前回の押圧位置と最新の押圧位置とを比較し、変化方向を判別する。例えば、図8の場合、スライドレバー151aが紙面上方向(y軸増加方向)に移動したか否かを判別する。
スライドレバー151aがy軸増加方向に移動した場合はステップS212に進み、それ以外の場合はステップS213に進む。
(ステップS212)CPU107は、ズームレンズの位置をテレ側に移動する(ズームインする)。つまり、CPU107は、システムバス105およびI/Oコントローラ116を介して駆動部122に指令し、駆動部122はズームレンズの位置がテレ側になる方向にモータ121を所定量だけ駆動する。処理後、ステップS203に戻る。ここで、所定量だけ駆動するとは、予め設定された距離だけズームレンズの位置を動かすことを意味し、本処理ステップを通る度に少しずつズームレンズの位置がテレ側に移動していく。尚、ズーム位置を精度良く合わせるためには、所定量を駆動部122が駆動できる最小単位にするのが望ましい。
(ステップS213)CPU107は、ステップS211と同様に、RAM113の所定領域に記憶されている前回の押圧位置と最新の押圧位置とを比較し、変化方向を判別する。但し、本処理では、図8において、スライドレバー151aが紙面下方向(y軸減少方向)に移動したか否かを判別する。
スライドレバー151aがy軸減少方向に移動した場合はステップS214に進み、それ以外の場合(y軸方向の移動がない場合)はステップS203に戻る。
(ステップS214)CPU107は、ズームレンズの位置をワイド側に移動する(ズームアウトする)。つまり、CPU107は、システムバス105およびI/Oコントローラ116を介して駆動部122に指令し、駆動部122はズームレンズの位置がワイド側になる方向にモータ121を所定量だけ駆動する。処理後、ステップS203に戻る。ここで、所定量の意味については、ステップS212で説明した通りである。
(ステップS215)CPU107は、ズーム制御とフォーカス制御の処理を終了する。
以上、処理ステップS201から処理ステップS215までの一連の処理は、ズーム操作とフォーカス操作とを同時に行う操作インターフェースでの操作入力の処理である。図11で説明したように、撮影者は、指153をタッチパネル110から離さずに、ズーム操作やフォーカス操作を行うことができる。
ここで、図11のフローチャートでは、少しでも撮影者は指153をタッチパネル110から離すと、ズーム制御やフォーカス制御が終了してしまうが、図12に示すフローチャートでは、撮影者が指153を離すタイミングについても、図10で説明したような連続操作タイマを用いて、予め設定された時間だけ指153が離れた場合のみ、撮影者が意図的に指153を離したものと判断し、操作を終了するようにしている。
次に、図12のフローチャートについて説明する。尚、図12のフローチャートは、ROM109に予め記憶されたプログラムコードに基づいてCPU107が処理する内容を示している。また、図12のフローチャートで図11のフローチャートと同じ符号の処理ステップは同じ処理を示すので、重複する説明は省略する。ここでは、図12で追加された処理についてのみ説明する。
先ず、ステップS202で初期入力処理が終了した後、ステップS203に進む前にステップS301の処理を行う。
(ステップS301)CPU107は、連続操作タイマを0に初期化する。尚、連続操作タイマとは、図10のステップS103と同様のタイマであるが、本処理ステップでは撮影者の指153がタッチパネル110から離れている時間を確認するためのタイマである。また、連続操作タイマの値はRAM113の所定の領域に記憶され、所定の時間毎にカウントされるタイマである。尚、図10のフローチャートと同様に、連続操作タイマ=0の時は、連続操作タイマが起動されていないことを示す。処理後、ステップS203に進む。
次に、ステップS204で押圧力=0と判定された場合に、図11のフローチャートでステップS215に進んで処理を終了したが、図12のフローチャートでは、ステップS215に進まずにステップS302の処理を行う。
(ステップS302)CPU107は、連続操作タイマ=0か否かを判別する。連続操作タイマ=0の場合はステップS303に進み、連続操作タイマ=0でない場合はステップS304に進む。例えば、ステップS301を通って、最初に押圧力=0になった場合は,連続操作タイマ=0となっているのでステップS303に進む。
(ステップS303)CPU107は、連続操作タイマを起動する。例えば、連続操作タイマ=1にする。
(ステップS304)CPU107は、連続操作タイマをカウントアップする。尚、本実施形態では、連続操作タイマはステップS203,ステップS204,ステップS302からステップS305までの処理を繰り返す速さに応じてカウントアップされるようになっているが、図10のステップS109の場合と同様に、CPU107に内蔵されるクロックに応じて所定間隔毎に割り込み処理を行うようにすれば、正確な時間で連続操作タイマをカウントアップすることができる。ここで、RAM113の連続操作タイマ用の記憶領域に記憶されている値はカウントアップされた連続操作タイマの値に更新される。
(ステップS305)CPU107は、RAM113の連続操作タイマ用の記憶領域を読み出して、連続操作タイマがタイムアウトしたか否かを判別する。つまり、ステップS304でカウントアップされた連続操作タイマが予め設定した所定値に達したか否かを判別する。連続操作タイマがタイムアウトしていない場合はステップS203に戻り、連続操作タイマがタイムアウトした場合はステップS215に進んで処理を終了する。
ここで、撮影者の指153がタッチパネル110から離れている間は、連続操作タイマがタイムアウトするまで、ステップS203,ステップS204,ステップS302からステップS305までの処理を繰り返すが、この繰り返し処理の途中で撮影者の指153がタッチパネル110に置かれた場合は、ステップS204から抜けてステップS306を実行し、ステップS205に移行する。
(ステップS306)CPU107は、連続操作タイマを0に初期化する。これによって、再び押圧力=0になった場合に、改めて、ステップS203,ステップS204,ステップS302からステップS305までの処理を連続操作タイマがタイムアウトするまで繰り返すことができる。尚、撮影者の指153が一時的にタッチパネル110から離れている状態から、再び撮影者の指153がタッチパネル110に置かれた直後は、図10のフローチャートと同じ入力初期処理を実行するようにしても構わない。
ここで、再び撮影者の指153がタッチパネル110に置かれた直後か否かの判別は、ステップS204で押圧力=0と判別してステップS302に移行する際に、一旦連続タイマ処理が行われたことを示すチェック用のフラグを立てておき、このフラグがたっているか否かで行うことができる。或いは、チェック用のフラグの代わりに、連続フラグタイマが0であるか否かを判別し、連続フラグタイマが0でない場合は、一旦、連続タイマ処理が行われたと見なすことができる。この場合は、CPU107は、この判断の後で連続操作タイマを0に初期化する。
このように、本実施形態に係るデジタルカメラ100の操作インターフェースは、所定軸方向の操作インターフェース上の押圧位置と押圧力(押圧具合い)の両方に基づいて操作情報を入力するので、撮影者が直感的且つ確実に操作可能な操作インターフェースを実現できる。
特に、撮影者がタッチパネル110に指153を押し当てて操作を開始する際に、連続操作タイマによって、所定時間だけ指153が連続して押し当てられているか否かを判別するので、撮影者の身体や鞄などの物体が誤ってタッチパネル110に触れた場合の誤動作を防止できる。
また、撮影者がタッチパネル110の指153を動かす方向が操作インターフェース上の所定軸方向にある場合のみ、操作情報を処理に反映するので、撮影者の操作ミスを防ぐことができる。さらに、押圧力の変動が所定範囲内の場合のみ、操作情報を処理に反映するので、より一層、撮影者の操作ミスを防ぐことができる。