以下、本発明の実施の形態について説明する。図1は、本実施形態の撮像装置の一例を示す機能ブロック図である。この撮像装置10は、静止画像や動画像を取得する撮影モードの他に、撮影により取得した画像データや、記録媒体28に記録される画像データに基づく画像をモニタ22に再生する再生モードを備えている。上述した撮影モードと再生モードとの切り替えは、操作部材24の操作によって実行される。本実施形態においては、レリーズボタンの操作が行われていない撮影待機状態で得られる画像及びレリーズボタンの半押し操作後に得られる画像をスルー画像と称し、レリーズボタンの全押し操作が実行された時に取得される画像を撮影画像と称して説明する。
撮像装置10は、撮像光学系15、撮像素子16、レンズ駆動回路17、撮像素子駆動回路18、信号処理回路19、データ処理回路20、表示制御回路21、モニタ22、圧縮伸長回路23、操作部材24、測光回路25、振れ検出センサ26、CPU27及び記録媒体28を備えている。ここで、記録媒体28は、メモリカードなどの不揮発性メモリの他、ハードディスク、DVD等の光学ディスクなどから構成される。この記録媒体28は、撮像装置10に内蔵されるものであってもよいし、撮像装置10に着脱自在に装着されるものであってもよい。
撮像光学系15は、複数枚のレンズ群で構成され、撮像素子16の撮像面に被写体像を結像させる。この撮像光学系15は、不図示のフォーカスレンズを含み、レンズ駆動回路17がフォーカスレンズを光軸方向に進退駆動させることにより、撮像光学系15におけるフォーカス調節が行われる。また、撮像光学系15は、不図示のズームレンズを含み、レンズ駆動回路17がズームレンズを光軸方向に進退駆動させることにより、撮像光学系15のズーム調節が行われる。レンズ駆動回路17は、CPU27から出力されるレンズ駆動指令に応じてレンズ駆動信号を発生し、発生したレンズ駆動信号で、不図示のレンズ駆動機構を駆動することにより、各レンズを移動させる。
また、撮像光学系15は、振れ検出センサ26の出力に基づいて、複数枚のレンズのうちの所定のレンズを、撮像光学系15の光軸に対して垂直方向に移動させることにより、撮像素子16上に結像される被写体の位置をシフトする。これにより、振れ補正が行われる。上述した所定のレンズの移動は、不図示の駆動機構を介して実行される。ここで、撮像光学系15を構成する複数枚のレンズのいずれかのレンズを、撮像光学系15の光軸に垂直な方向に移動させる構成ではなく、撮像素子16を撮像光学系15の光軸に垂直な方向に移動させる構成であってもよい。
撮像素子16は、静止画像の単写撮像とともに、静止画像の連続撮像、および動画像の撮像が可能である。この撮像素子16は、例えばCCDイメージセンサやCMOSイメージセンサなどから構成される。
撮像素子駆動回路18は、CPU27から出力される指令に応じて駆動信号を発生し、発生した駆動信号を撮像素子16に供給する。撮像素子16は、供給された駆動信号によって信号電荷の蓄積や蓄積された信号電荷の読み出しを行う。CPU27は、測光回路25による被写界の測光データを用いて被写界の明るさの情報を求め、求めた明るさの情報に基づいて、撮像素子16の電荷蓄積時間、撮像光学系15における絞り、撮像素子16により出力される画像信号の増幅度などを決定する。
信号処理回路19は、CPU27からの指令を受けて入力信号に対して、増幅処理、直流再生処理、A/D変換処理、ホワイトバランス処理及びガンマ処理を施し、信号処理後のデータを画像データとしてデータ処理回路20へ出力する。
データ処理回路20は、CPU27からの指令に応じて、信号処理回路19より出力された画像データを圧縮伸長回路23に出力するとともに、モニタ22に画像を表示するために必要な解像度変換処理(画素数変換)処理を画像データに施し、解像度変換処理後の画像データを表示制御回路21へ出力する。なお、データ処理回路20は、データズーム処理を行う場合には、入力される画像データに対して解像度変換処理を施して、圧縮伸長回路23および表示制御回路21にそれぞれ出力する。
また、この他に、データ処理回路20は、撮影が実行されていない撮影待機状態においてスルー画像を撮像している場合や動画像を撮像している場合に、後述する追尾処理を実行する。
表示制御回路21は、CPU27からの指令に応じて、データ処理回路20から入力される画像データに所定の信号処理を施してモニタ22に出力する。表示制御回路21は、画像データに撮影メニュー、カーソルの他、被写体の位置を示す追尾枠などのオーバーレイ画像データを重畳する処理を行う。これにより、オーバーレイ画像が重畳された画像がモニタ22に表示される。
圧縮伸長回路23は、CPU27からの指令に応じて、データ処理回路20から出力される画像データに、例えばJPEG形式などの所定の形式で圧縮処理を施し、圧縮処理後のデータを記録媒体28に書き込む。撮影時に記録媒体28へ画像データを記録する場合、記録する画像データに対応する画像がモニタ22に表示される。なお、操作部材24による操作により画像データの非圧縮での記録が指示された場合、圧縮伸長回路23は圧縮処理を行わずに、記録媒体28へ画像データを記録する。
また、記録媒体28に記録された画像データを再生する場合、圧縮伸長回路23は、CPU27からの指令に応じて記録媒体28に記録された画像データを読み出し、読み出した画像データに対して復号化処理を行う。この復号化処理が施された画像データはデータ処理回路20に出力される。データ処理回路20は、復号化処理された画像データに対して解像度変換処理を施し、表示制御回路21に出力する。これにより、モニタ22に記録媒体28から読み出された画像データに基づく画像が表示される。
操作部材24は、レリーズボタンを含み、操作内容に応じた操作信号をCPU27に出力する。CPU27は、レリーズボタンの押圧操作に基づくレリーズ操作信号が操作部材24から入力されると、撮像素子16から読み出される画像信号の中で、撮像画面内に予め設定されているフォーカス検出領域に対応する信号を用いて公知のコントラスト方式のAF(オートフォーカス)動作を行う。
具体的には、CPU20は、信号処理回路19によって信号処理された画像データのうち、フォーカス検出領域に対応するデータについての高周波成分の積算値(いわゆる焦点評価値)を最大にするように、レンズ駆動指令(フォーカス調節信号)をレンズ駆動回路17に出力する。焦点評価値を最大にするフォーカスレンズの位置は、撮像素子16によって撮像される被写体像のエッジのぼけをなくし、画像のコントラストを最大にする(尖鋭度を高める)合焦位置である。
なお、上記コントラスト方式のAF動作に加えて、公知の瞳分割方式による位相差AF動作を行うように構成してもよい。また、上記コントラスト方式のAF動作に変えて、撮像面に焦点検出用の画素が埋め込まれた撮像素子16を用いることで位相差AFを行うことも可能である。
また、操作部材24は、ズーム操作部材を含む。ズーム操作に基づくズーム操作信号が操作部材24から入力されると、CPU27は、データ処理回路20へ指令を出力し、画像データに対する解像度変換処理の変換比率を操作信号に基づいて変化させる。これにより、モニタ22に表示される画像が拡大もしくは縮小、つまり電気的なズーム調節が実行される。解像度変換比率は電子ズーム倍率に対応する。データ処理回路20が電子ズーム倍率を高める方向に変換比率を変える場合、再生する画像の一部が拡大されてモニタ22に表示される。この場合、拡大率が上がる反面、再生する画像の表示範囲は狭くなる。一方、データ処理回路20が電子ズーム倍率を低くする方向に変換比率を変える場合、モニタ22に表示される再生画像の拡大率が下がる反面、再生画像の表示範囲は広くなる。
振れ検出センサ26は、例えば角速度センサ、ジャイロセンサなどから構成される。この振れ検出センサ26は、撮像装置10の筐体内に設けられ、撮像装置10の振れを例えば撮像光学系15の光軸に直交する平面内の二方向について検出する。
筐体に振れが生じたときに、振れ検出センサ26は、これを検知し、上述した二方向の振れ量データをCPU27に出力する。CPU27は、筐体の振れに伴う撮像素子16の撮像面上に結像される被写体像の移動が打ち消されるように、撮像光学系15を構成する補正光学系を、レンズ駆動回路17を介して移動させる。これにより、振れ補正が実行される。
次に、データ処理回路20の構成について説明する。データ処理回路20は、被写体検出部31、被写体追尾部32、コアリング処理部33及びフィルタリング処理部34を有している。
被写体検出部31は、解像度変換処理が施された画像データを用いて、被写体追尾動作を開始する初期フレームにおいて、当該画像データに基づく画像に含まれる被写体を検出する。被写体を検出する方法としては、例えば主要な被写体(主要被写体)としての人物の特徴を示す特徴情報(例えば、顔の特徴情報)、又は、乗り物(自動車、電車、航空機等)の特徴を示す特徴情報等に基づいて、画像に含まれる被写体の領域を検出する。そして、検出した主要被写体の領域の画像(以下、被写体画像)データを生成する。また、被写体検出部31は、検出した被写体の画面内の位置(座標)と、主要被写体の大きさとを示す被写体情報を生成する。
ここで、被写体検出部31の被写体画像データの生成は、自動的な生成に限定されるものではなく、たとえば、操作部材24の操作により、撮影者がモニタ22に表示された被写体像を指示することにより、被写体検出部31が、指示された被写体の領域の検出、被写体画像データの生成、及び検出した被写体の画面内の位置(座標)と主要被写体の大きさとを示す被写体情報の生成を行う構成としてもよい。
被写体追尾部32は、初期フレームにおいて被写体検出部31により生成された被写体画像データと、解像度変換処理が施された画像データとを用いて、例えばテンプレートマッチング処理を実行する。このテンプレートマッチング処理については周知であることから、ここでは、その詳細を省略する。テンプレートマッチング処理を行うことで、初期フレームに続くフレームで被写体が検出されると、被写体追尾部32は、検出した被写体に基づいた被写体情報を生成する。なお、上記説明では、被写体追尾部32が、初期フレームに続くフレームでテンプレートマッチング処理により被写体を検出する例について説明したがこれに限定する必要はなく、パーティクルフィルタなどその他の手法を用いて初期フレームに続くフレームの被写体を検出する構成としてもよい。
コアリング処理部33は、時間的に前後するスルー画像のそれぞれから検出される被写体の位置情報と、モニタ22に表示された追尾枠の位置情報とを用いて、コアリング処理を行う。ここで、モニタ22に表示された追尾枠とは、時間的に前後するスルー画像のうち、時間的に前となるスルー画像に対して設定される追尾枠である。
コアリング処理は、以下の手順で実行される。まず、コアリング処理部33は、時間的に前となるスルー画像に対する追尾枠の位置と、時間的に後となるスルー画像から検出された被写体の位置との距離Dが予め定めた閾値D0を超過するか否かの判定(第1判定)を行う。なお、追尾枠の位置や被写体の位置とは、各々、追尾枠の中心の位置や被写体の中心の位置である。第1判定の結果、上述した距離Dが予め定めた閾値D0以下となる場合、コアリング処理部33は、時間的に前後するスルー画像のそれぞれから検出された被写体の位置が一致しているか否かの判定(第2判定)を行う。第2判定の結果、時間的に前後するスルー画像のそれぞれから検出された被写体の位置が一致しない場合、コアリング処理部33は、時間的に前に得られたスルー画像に対する追尾枠の位置(言い換えれば、モニタ22に表示されている追尾枠の位置)を、時間的に後に得られるスルー画像に対する追尾枠の位置として設定する。したがって、追尾枠の位置が固定される。
上述した第2判定において、時間的に前後するスルー画像のそれぞれから検出される被写体の位置が一致すると判定された場合、コアリング処理部33は、時間的に前後するスルー画像のそれぞれから検出される被写体の位置が一致すると判定された回数Sが予め設定された閾値S0以上であるか否かの判定(第3判定)を行う。この第3判定において、時間的に前後するスルー画像のそれぞれから検出される被写体の位置が一致すると判定された回数Sが予め設定された閾値S0未満となる場合に、コアリング処理部33は、時間的に前に得られたスルー画像に対する追尾枠の位置を、時間的に後に得られたスルー画像に対する追尾枠の位置として設定する。したがって、この場合も、追尾枠の位置が固定される。
上述した第1判定において、時間的に前に得られたスルー画像に対する追尾枠の位置と、時間的に後に得られたスルー画像から検出された被写体の位置との距離Dが予め定めた閾値D0を超過する場合、コアリング処理部33は、コアリング処理を終了させ、フィルタリング処理部34における処理を実行する。
また、第3判定において、時間的に前後するスルー画像のそれぞれから検出される被写体の位置が一致すると判定された回数Sが予め設定された閾値S0以上となる場合、コアリング処理部33は、コアリング処理を終了させる。この場合、時間的に後に得られたスルー画像から検出された被写体の位置が、このフレームにおける追尾枠の位置として設定される。つまり、追尾枠の位置の固定が解除される。
フィルタリング処理部34は、時間的に前に得られたスルー画像に重畳された追尾枠の位置情報と、時間的に後に得られたスルー画像から検出された被写体に基づく被写体情報とを用いて、追尾枠の表示位置(座標)演算に際して、時間軸方向のフィルタリング処理を行う。なお、フィルタリング処理は、例えば時間的に前に得られたスルー画像に重畳された追尾枠の位置と、時間的に後に得られたスルー画像から検出された被写体の位置との平均値を求める処理である。本実施形態では、追尾枠の位置の固定が解除されると、フィルタリング処理が実行される。
以下、撮影モードに設定された時の撮像装置10の処理の流れについて、図2のフローチャートに基づいて説明する。
ステップS101は、スルー画像を撮像する処理である。CPU27は、測光回路25から得られた測光データを用いて被写界の明るさを算出する。算出した被写界の明るさの情報に基づいて、CPU27は、撮像素子16の電荷蓄積時間、撮像光学系15における絞り、撮像素子16により出力される画像信号の増幅度などを決定する。そして、CPU27は、撮像素子16を駆動させるための駆動信号を撮像素子駆動回路18に出力する。この駆動信号を受けて、撮像素子駆動回路18は、撮像素子16を駆動する。したがって、撮像素子16から例えば30fpsのフレームレートで画像信号が出力される。
ステップS102は、画像処理である。信号処理回路19は、入力される画像信号に対して増幅処理、直流再生処理、A/D変換処理、ホワイトバランス処理及びガンマ処理を施し、信号処理後のデータをスルー画像データとしてデータ処理回路20へ出力する。データ処理回路20は、入力されたスルー画像データに対して、モニタ22に画像を表示するために必要な解像度変換処理(画素数変換)処理を施し、解像度変換処理後のスルー画像データを表示制御回路21へ出力する。
ステップS103は、スルー画像を表示する処理である。表示制御回路21は、データ処理回路20から入力されるスルー画像データに所定の信号処理を施してモニタ22に出力する。これにより、スルー画像がモニタ22に表示される。
ステップS104は、撮像処理の回数nがn≧2であるか否かを判定する処理である。CPU27は、撮像処理の回数nをカウントしている。このカウント値nがn≧2である場合には、CPU27は、ステップS104の判定処理の結果をYesとする。この場合、ステップS105に進む。一方、カウント値nがn≧2でない場合、言い換えれば、カウント値nがn=1である場合には、CPU27は、ステップS104の判定処理の結果をNoとする。この場合、ステップS106に進む。
ステップS105は、被写体の追尾処理である。このステップS105の処理については、後述する。
ステップS106は、被写体検出処理である。データ処理回路20は、解像度変換処理を施したスルー画像データを用いて被写体を検出する。そして、データ処理回路20は、検出された被写体の領域に基づく被写体画像データを生成する。また、データ処理回路20は、検出した被写体の位置および大きさからなる被写体情報を生成する。
ステップS107は、追尾枠を表示する処理である。データ処理回路20は、生成した被写体情報を表示制御回路21に出力する。表示制御回路21は、入力された被写体情報に基づく追尾枠をオーバーレイ画像データとして生成し、このオーバーレイ画像データを取得されたスルー画像データに重畳する。そして、表示制御回路21は、オーバーレイ画像データが重畳されたスルー画像データをモニタ22に表示する。したがって、追尾枠が重畳されたスルー画像がモニタ22に表示される。
ステップS108は、AF処理である。CPU27は、データ処理回路20において検出した被写体の領域をフォーカス検出領域としたコントラスト方式のAF(オートフォーカス)動作を行う。なお、フォーカス検出領域として検出した被写体の領域を用いるようにしているが、追尾枠の領域をフォーカス検出領域としてもよい。
ステップS109は、操作部材24の1つであるレリーズボタンの半押し操作があるか否かを判定する処理である。図示は省略するが、レリーズボタンには、その半押し操作を検知するスイッチ(第1スイッチ)と、全押し操作を検知するスイッチ(第2スイッチ)が設けられている。レリーズボタンの第1スイッチからの出力信号がCPU27に入力された場合、CPU27は、ステップS109の判定処理の結果をYesとする。この場合、ステップS110に進む。一方、レリーズボタンの第1スイッチからの出力信号がCPU27に入力されていない場合、CPU27は、ステップS109の判定処理の結果をNoとする。この場合、ステップS101に戻る。そして、ステップS109の判定処理の結果がYesとなるまで、ステップS101からステップS108の処理が繰り返し実行される。
以下、ステップS110からステップS115の処理は、ステップS101、ステップS102,ステップS103、ステップS105、ステップS107及びステップS108の処理と同様である。以下、これら処理については、その説明を省略する。なお、これら処理は、AE(Auto Exposure)を固定して実行される。ステップS110からステップS115の処理が実行されると、ステップS116に進む。
ステップS116は、レリーズボタンの全押し操作があるか否かを判定する処理である。上述した第2スイッチからの出力信号がCPU27に入力されると、CPU27は、ステップS116の判定処理の結果をYesとする。この場合、ステップS117に進む。一方、第2スイッチからの出力信号がCPU27に入力されない場合、CPU27は、ステップS116の判定処理の結果をNoとする。この場合、ステップS110に戻る。この場合、ステップS116の判定処理の結果がYesとなるまで、ステップS110からステップS115の処理が繰り返し実行される。
ステップS117は、撮影画像の撮像処理である。CPU27は、追尾枠に含まれる被写体の領域に焦点が合うように、撮像光学系15を構成するフォーカスレンズの位置を微調整する。そして、決定された撮像条件を用いて、撮像処理を実行する。この撮像処理を行うことで、撮像素子16から画像信号が信号処理回路19に入力される。
ステップS118は、画像処理である。信号処理回路19は、入力される画像信号に対して増幅処理、直流再生処理、A/D変換処理、ホワイトバランス処理及びガンマ処理を施し、信号処理後のデータを撮影画像データとしてデータ処理回路20へ出力する。
ステップS119は、撮影画像を表示する処理である。表示制御回路21は、データ処理回路20から入力される撮影画像データに所定の信号処理を施してモニタ22に出力する。これにより、撮像画像がモニタ22に表示される。
ステップS120は、撮影画像を記録する処理である。信号処理回路19は、画像処理した撮影画像データを圧縮伸長回路23に出力する。圧縮伸長回路23は、入力される画像データに所定の形式で圧縮処理を施し、圧縮処理後のデータを記録媒体28に記録する。なお、非圧縮で画像データを記録する場合には、圧縮伸長回路23は、上述した圧縮処理を行わずに、そのまま記録媒体28に記録する。
次に、上述したステップS105及びステップS113における追尾処理について、図3のフローチャートを用いて説明する。ここで、ステップS203、ステップS207からステップS209及びステップS211の処理がコアリング処理となる。
ステップS201は、テンプレートマッチングを行う処理である。データ処理回路20は、ステップS106の処理を行うことで得られた被写体画像データと解像度変換処理が施された画像データとを用いて、テンプレートマッチング処理を実行する。そして、テンプレートマッチング処理を行うことで被写体が検出された場合に、データ処理回路20は、検出された被写体に基づく被写体情報を生成する。
ステップS202は、時間的に前後するフレームのうち前のフレームで表示された追尾枠の位置と、時間的に前後するフレームのうち後のフレームで検出した被写体の位置の差分ΔX、ΔYを算出する処理である。データ処理回路20は、モニタ22に表示される追尾枠の位置情報と、ステップS201にて生成された被写体情報とを用いて、位置の差分ΔX、ΔYを算出する。例えば時間的に前後するフレームのうちの前のフレーム1で表示される追尾枠の位置を(x1,y1)、時間的に前後するフレームのうちの後のフレーム2においてステップS201の処理を行うことで検出された被写体の位置を(X2,Y2)とすると、モニタ22に表示される追尾枠の位置と、ステップS201の処理により検出された被写体の位置の差分ΔX、ΔYは、以下の(1)式、(2)式で算出される。
ΔX=|x1−X2| ・・・(1)
ΔY=|y1−Y2| ・・・(2)
ステップS203は、追尾枠から被写体までの距離Dが閾値D0を超過するか否かを判定する(第1判定)処理である。データ処理回路20は、上述した(1)式及び(2)式にて求めたΔX及びΔYを用いて、追尾枠から被写体までの距離Dを求める。距離Dは例えば(3)式で求められる。
D=[(ΔX)2+(ΔY)2]1/2 ・・・(3)
データ処理回路20は、上述した(3)式で求まる距離Dを予め定めた閾値D0と比較し、距離Dが閾値D0を超過するか否かを判定する。距離Dが閾値D0を超過する場合、データ処理回路20は、ステップS203の判定処理の結果をYesとし、ステップS204に進む。つまり、これ以前にコアリング処理が継続して行われていた場合にはコアリング処理が終了する。一方、距離Dが閾値D0以下となる場合、データ処理回路20は、ステップS203の判定処理の結果をNoとし、ステップS207に進む。
なお、上述した閾値D0は、用いるスルー画像における解像度や、スルー画像を取得するときのフレームレートに応じて設定される値である。つまり、フレームレートが小さいときには、時間的に前後するフレーム画像のうち、時間的に前となるスルー画像が取得されてから、時間的に後になるスルー画像が取得されるまでの経過時間が長くなる。つまり、時間的に前後するフレーム画像から検出される被写体の移動距離が長くなるので、閾値D0を大きく設定する。一方、フレームレートが大きいときには、時間的に前となるスルー画像が取得されてから、時間的に後になるスルー画像が取得されるまでの経過時間が短くなる。つまり、時間的に前後するフレーム画像から検出される被写体の移動距離が短くなるので、閾値D0を小さく設定する。
ここで、ステップS203の処理として、求めた距離Dが閾値D0を超過するか否かを判定しているが、これに限定されるものではなく、ΔX+ΔYのような距離に関連する値が閾値を超過するか否かを判定する処理とすることも可能である。
ステップS204は、フィルタリング処理である。データ処理回路20は、表示される追尾枠の位置(x1,y1)と、ステップS201により検出した被写体の位置(X2,Y2)とから、スルー画像に対する追尾枠の位置を求める。詳細には、以下の(4)式及び(5)式を用いて、時間的に前後するフレームのうち後のフレームにおける追尾枠の位置(x2,y2)を求める。つまり、ステップS204の処理を行うことで、追尾枠の位置の固定が解除される。
x2=(x1+X2)/2 ・・・(4)
y2=(y1+Y2)/2 ・・・(5)
ステップS205は、追尾枠の位置を設定する処理である。データ処理回路20は、ステップS204におけるフィルタリング処理を行うことで得られた値(位置)を、追尾枠の位置情報として設定する。そして、データ処理回路20は、設定した追尾枠の位置情報を表示制御回路21に出力する。
ステップS206は、フレームカウンタの値Sを0に設定する処理である。データ処理回路20は、不図示のフレームカウンタの値Sをリセットする(S=0)。ここで、フレームカウンタは、後述するコアリング処理において、時間的に前後する2つの画像間において、時間的に後に得られる画像の被写体の位置が、時間的に前に得られる画像の被写体の位置に一致する回数をカウントするものである。
ステップS203において、距離Dが閾値D0以下となる場合、ステップS207に進む。
ステップS207は、今回検出した被写体の位置が、前回検出した被写体の位置と一致するか否かを判定する(第2判定)処理である。ここで、今回検出した被写体の位置とは、時間的に前後する画像(フレーム)のうち、時間的に後に得られたスルー画像から検出した被写体の位置を示している。また、前回検出した被写体の位置とは、時間的に前後する画像(フレーム)のうち、時間的に前に得られたスルー画像から検出した被写体の位置を示している。今回検出した被写体の位置が、前回検出した被写体の位置と一致する場合、データ処理回路20は、ステップS207の判定処理の結果をYesとする。この場合、ステップS208に進む。一方、今回検出した被写体の位置が、前回検出した被写体の位置と一致しない場合、データ処理回路20は、ステップS207の判定処理の結果をNoとする。この場合、ステップS211に進む。このステップS207における処理は、X座標のみ、又はY座標のみで行ってもよいし、X座標およびY座標の双方を用いて行ってもよい。
ステップS208は、フレームカウンタの値Sに1を加算するインクリメント処理である。データ処理回路20は、不図示のフレームカウンタを有している。データ処理回路20は、フレームカウンタの値Sに+1を加算する。
ステップS209は、フレームカウンタの値Sが閾値S0以上であるか否かを判定する(第3判定)処理である。データ処理回路20は、フレームカウンタの値Sを参照して、フレームカウンタの値Sが閾値S0以上であるか否かを判定する。フレームカウンタの値Sが閾値S0以上である場合、データ処理回路20は、ステップS208の判定処理の結果をYesとする。この場合、ステップS210に進む。つまり、この場合、コアリング処理が終了する。一方、フレームカウンタの値Sが閾値S0未満となる場合には、データ処理回路20は、ステップS209の判定処理の結果をNoとする。この場合、ステップS211に進む。
ステップS210は、今回検出した被写体の位置を追尾枠の位置として設定する処理である。データ処理回路20は、検出された被写体の位置を表示させる追尾枠の位置として設定する。つまり、ステップS210の処理が実行されることで、追尾枠の位置の固定が解除される。このステップS210の処理が実行されると、ステップS206に進む。
ステップS207の判定処理の結果がNoとなる場合、ステップS211に進む。
ステップS211は、追尾枠の位置を固定する処理である。データ処理回路20は、前回表示した追尾枠の位置情報を、今回表示する追尾枠の位置情報として設定する。つまり、このステップS211の処理が実行されることで、追尾枠の位置が固定される。
以下、被写体が時間t2まで位置Aにいる被写体が、時間t2から時間t3の間でX方向に移動する場合のスルー画像、及びスルー画像に重畳される追尾枠の位置について、図4を用いて説明する。
時間t1において被写体が位置Aにあることから、追尾枠40はスルー画像P1から検出される被写体の位置に合わせて表示される。また、時間t2においても被写体は位置Aにある。つまり、時間t1における追尾枠40の位置と、スルー画像P2から検出される被写体の位置との距離Dは、D=0となる。したがって、時間t2における追尾枠40の位置は、時間t1のときと同一の位置となる。
上述したように、被写体は時間t2から時間t3まで経過する間に位置Aから位置Bに(X方向に)移動する。例えば、時間t2にて検出される被写体のX座標がXt2=90、時間t3にて検出される被写体のX座標がXt3=150である場合、時間t2における追尾枠40の位置から時間t3における被写体の位置までの距離Dは、D=60となる。ここで、閾値D0が20に設定されている場合には、距離D>閾値D0が満足される。このような場合には、コアリング処理が終了し、フィルタリング処理が実行される。ここで、時間t2における追尾枠40の位置xt2は、xt2=90であり、時間t3における被写体の位置Xt3は、Xt3=150である。よって、時間t3における追尾枠40の位置xt3は、xt3=(xt2+Xt3)/2=(90+150)/2=120となる。
時間t3以降は、被写体はX方向及びY方向に移動しない。例えば時間t4において被写体は位置Bにある。時間t3における追尾枠40の位置xt3は、xt3=120、時間t4にて検出される被写体のX座標がXt4=150であることから、時間t3における追尾枠40の位置から時間t4における被写体の位置までの距離Dは、D=30となる。この場合も、距離D>閾値D0を満足するのでコアリング処理が行われず、フィルタリング処理が実行される。ここで、時間t3における追尾枠40の位置xt3は、xt3=120であり、時間t4における被写体の位置Xt4は、Xt4=150である。よって、時間t4における追尾枠40の位置xt4は、xt4=(xt3+Xt4)/2=(120+150)/2=135となる。
時間t5における被写体は、時間t4と同様に位置Bにある。時間t4における追尾枠40の位置xt4=135、時間t5における被写体の位置Xt5は、Xt5=150である。よって、時間t4における追尾枠40の位置から時間t5における被写体の位置までの距離Dは、D=15となる。この場合、距離D>閾値D0を満足していない。また、時間t5における被写体の位置は、時間t4における被写体の位置から変化していない。したがって、フレームカウンタの値Sが、S=1となる。ここで、第3判定における閾値S0をS0=2とすると、S≧S0を満足していないので、この場合、時間t5における追尾枠40の位置は、時間t4における追尾枠40の位置と同一の位置に設定される。
時間t6における被写体は、時間t5と同様に位置Bにある。時間t5における追尾枠40の位置xt5=135、時間t6における被写体の位置Xt6は、Xt6=150である。したがって、時間t5における追尾枠40の位置から時間t6における被写体の位置までの距離Dは、D=15となる。時間t5と同様に、時間t6においても、距離D>閾値D0を満足していない。また、時間t6における被写体の位置は、時間t5における被写体の位置から変化していない。したがって、フレームカウンタの値Sが、S=2となる。上述したように、第3判定における閾値S0=2であることから、S≧S0を満足する。したがって、この場合には、時間t6における追尾枠40の位置は、時間t6における被写体の位置となる。
このように、スルー画像から検出される被写体の移動において、スルー画像間の移動距離が大きく、予め設定した閾値を超過する(第1判定がYesとなる)場合には、コアリング処理が行われていれば当該コアリング処理を終了し、フィルタリング処理を行う。このフィルタリング処理により、追尾枠の位置の固定が解除され、追尾枠の位置が新たに設定される。また、被写体の移動距離が小さく、予め設定した閾値以下となり(第1判定がNoとなり)、また、時間的に前後する画像から得られる被写体の位置が一致していない(第2判定がNoとなる)ときには、コアリング処理によって追尾枠の位置が固定される。
さらに、第1判定がNoとなり、時間的に前後する画像から得られる被写体の位置が一致する(第2判定がYesとなる)ときには、時間的に前後する画像から得られる被写体の位置が一致する回数が閾値以上となるか否かを判定する。時間的に前後する画像から得られる被写体の位置が一致する回数が閾値以上となる(第3判定がYesとなる)場合にはコアリング処理を終了する。したがって、追尾枠の位置の固定が解除され、検出した被写体の位置を追尾枠の位置に新たに設定する。一方、時間的に前後する画像から得られる被写体の位置が一致する回数が閾値未満となる(第3判定がNoとなる)場合はコアリング処理により追尾枠の位置が固定される。
つまり、被写体が微小移動している場合には、追尾枠の位置を基準としたときの被写体までの距離は小さい。したがって、被写体が微小移動している際に得られる画像に対して設定される追尾枠の位置は固定となる。また、被写体が移動した後、被写体が停止した場合には、追尾枠の位置は、徐々に被写体の位置に近づくように移動していくが、距離D>閾値D0を満足していないと判定される前に設定された位置に固定される。しかしながら、実際の被写体の位置が停止しているのであれば、停止する被写体の位置に追尾枠を設定することが望ましい。したがって、本発明においては、時間的に前後するスルー画像における被写体の位置が一致している回数をカウントし、そのカウントが閾値以上となる場合には被写体が一時的に移動したのではないと判断し、追尾枠の位置を、検出された被写体の位置に設定する。したがって、追尾枠の微小移動を防止しつつ、追尾枠を適切に表示させることが可能となる。
また、従来の被写体追尾処理では、被写体がスルー画像の端部から閾値D0以下の範囲にあり、また、その被写体が端部に向けて移動した場合、追尾枠は移動する前の位置に固定される。しかしながら、本発明の被写体追尾では、被写体がスルー画像の端部から閾値D0以下の範囲にあり、また、その被写体が端部に向けて移動した場合には、被写体の位置が一致している回数が所定回数であれば、被写体がその位置にあると判断し、追尾枠をその位置に移動させる。したがって、追尾枠を適切に表示させることが可能となる。
本実施形態では、撮影待機状態において得られるスルー画像に対して追尾枠を表示させる場合の実施形態としているが、これに限定される必要はなく、動画像を撮像している過程で追尾処理を行う場合にも適用することが可能となる。
(変形例)
本実施形態では、追尾枠から被写体までの距離Dが閾値D0以下となる場合で、かつ被写体の位置が変化しない回数が所定数連続した場合に、検出した被写体の位置を追尾枠の位置として設定している。しかしながら、これに限定する必要はなく、例えば、所定期間において得られるスルー画像において、被写体の位置が変化しない回数が所定回数以上となる場合に、検出した被写体の位置を追尾枠の位置として設定してもよい。
また、上記実施形態においては、ステップS207において、今回検出した被写体の位置と前回検出した被写体の位置が一致するか否かに基づいて、コアリング処理を継続するか否かを判定する構成について説明したが、これに代えて、ステップS207を、今回検出した被写体の位置と前回検出した被写体の位置の距離が所定値P未満か否かを判断し、当該判断が肯定されたらステップS208へ、当該判断が否定されたらステップS211へ進む構成としてもよい。ここで、所定値Pの値は、閾値D0の値より小さい。このように追尾枠表示の固定を、第1画像から検出される前記被写体の位置と、第2画像から検出される被写体の位置との間の距離に関連する値の所定値との比較結果の大小関係が一致する回数が予め設定された閾値を超過したときに解除する構成とすれば、画像データに含まれるノイズの影響などにより、今回検出した被写体の位置と前回検出した被写体の位置が正確に一致せず、その位置が若干ずれた場合であっても、コアリング処理を行うことができる。なお、今回検出した被写体の位置と前回検出した被写体の位置の距離が所定値P未満か否かを判断する処理は、ステップS207に代えて行うのではなく、ステップS207の判定と合わせて行うことも可能である。
本実施形態では、撮像装置を例に取り上げて説明しているが、図1に示すデータ処理回路の構成や、図3のフローチャートの処理を実行することが可能な被写体追尾装置であってもよい。また、この他に、図1に示すデータ処理回路の構成や、図3のフローチャートの処理をコンピュータに実行させることが可能な被写体追尾プログラムであってもよい。この被写体追尾プログラムは、例えばメモリカード、ハードディスクなどの光学ディスクや磁気ディスクなどの、コンピュータ読み取り可能な記録媒体に記録されていることが好ましい。