以下、添付図面を参照して、本発明の例示的な実施形態を詳細に説明する。各実施形態の撮像装置は、撮像面位相差検出方式の焦点検出が可能な構成を有し、画像データに関連する距離情報と後述の光軸ベクトル情報(位置変化ベクトルの光軸成分の情報)を用いて被写体追跡の演算を行う。なお、以下の各実施形態に説明する構成は単なる例示であり、本発明は実施形態に記載された構成に限定されない。
[第1実施形態]
図1および図2を参照して、本実施形態における撮像装置について説明する。図1は撮像装置101の外観を示す斜視図である。撮像装置101の光軸方向は、撮像装置101内の撮像面102に対して法線方向となる奥行き方向103である。図2は、撮像装置200の構成例を示すブロック図である。撮像装置200は、撮像光学系を介して撮像素子により撮像された被写体の画像データ(動画像や静止画像のデータ)を記録媒体に記録する機能を有する。記録媒体はテープや固体メモリ、光ディスクや磁気ディスク等の各種メディアである。撮像装置200はデジタルスチルカメラやビデオカメラ等であるが、これらに限定されるものではない。
撮影レンズ201は、固定レンズ202、絞り203、フォーカスレンズ204を備えるレンズユニットである。絞り制御部211は、絞り203を駆動することにより、絞り203の開口径を調整して撮影時の光量調節を行う。フォーカス制御部212は、撮影レンズ201の焦点ずれ量に基づいてフォーカスレンズ204の駆動量を決定する。焦点調節用レンズであるフォーカスレンズ204を移動させることにより、焦点調節状態が制御される。レンズ制御部213は、フォーカス制御部212を介してフォーカスレンズ204の移動を制御し、自動焦点調節制御が実現される。図2にはフォーカスレンズ204を単レンズで簡略的に示しているが、通常複数のレンズで構成される。絞り制御部211やフォーカス制御部212はレンズ制御部213によって制御される。詳しくは後述するが、フォーカスレンズ204は主被写体に対して常に焦点を合わせ続けるように駆動制御される。
撮影レンズ201を構成する光学部材を介して入射した被写界光は、撮像素子221の受光面上に結像する。撮像素子221は、被写体像(光学像)を信号電荷に光電変換する光電変換素子であり、CCD(電荷結合素子)イメージセンサやCMOS(相補型金属酸化膜半導体)イメージセンサにより構成される。撮像素子221の各光電変換部に蓄積された信号電荷は、タイミングジェネレータ222が出力する駆動パルスにより、信号電荷に応じた電圧信号として順次読み出される。
撮像素子221は、1つのマイクロレンズを共有する複数の光電変換部を備え、複数の視差画像を生成することで、撮像面位相差検出方式の焦点検出が可能な構成となっている。複数の光電変換部は、例えば第1の光電変換部および第2の光電変換部であり、一対の視差画像データを取得可能である。撮像素子221については図3を参照して後述する。
撮像信号処理部223は、撮像素子221の出力信号を取得して処理し、バス231を介してSDRAM(Synchronous Dynamic Random Access Memory)261に画像信号を記憶する。焦点検出用信号処理部224は、撮像素子221から出力された焦点検出用の信号を取得して処理する。焦点検出用信号処理部224が行う、撮像面位相差検出方式の焦点検出方法については後述する。
SDRAM261に格納された画像信号は、バス231を介して表示制御部241によって読み出され、表示部242は画像信号にしたがって画像表示を行う。また、画像信号の記録を行う動作モードにおいて記録媒体制御部251は、SDRAM261から画像信号を読み出して記録媒体252に記録する制御を行う。
カメラ制御部225はメインCPU(中央演算処理装置)を備え、カメラシステムの各部の制御を統括する。ROM(リード・オンリ・メモリ)262にはカメラ制御部225が実行する制御プログラムおよび制御に必要な各種データ等が格納されている。フラッシュROM263には、ユーザ設定情報等のカメラ動作に関する各種設定情報等が格納されている。
カメラ制御部225は、焦点検出用信号処理部224から出力されるデフォーカス量をフォーカスレンズ駆動量に変換してレンズ制御部213に伝達する。レンズ制御部213はサブCPUを備え、フォーカス制御部212に指示してフォーカスレンズ204の移動を制御する。またカメラ制御部225は、ユーザが操作部を用いて行った操作指示を受け付けて各部の動作を制御する。例えば、カメラ制御部225は操作指示や画素信号の大きさに基づき、撮像素子221の蓄積時間、撮像素子221から撮像信号処理部223へ出力を行う際のゲインの設定値、タイミングジェネレータ222の設定値を決定する。画素信号は、一時的にSDRAM261に蓄積された画像データに係る画素信号である。
被写体追跡部271は、主被写体の追跡処理を実行する。被写体追跡部271は被写体追跡において視差画像から算出可能な、距離情報と、位置変化ベクトルの光軸成分(以下、光軸ベクトルと呼ぶ)を用いた演算を行う。本実施形態では追跡精度を高めるために距離情報を使用するが、より精度を高めるために、撮像面位相差検出方式の焦点検出方法を用いる。つまり、被写体追跡部271は毎フレームの被写体の追跡結果を出力可能であるため、同様に毎フレームの距離情報を算出することができように、同じ撮像面から視差画像を取得する処理が行われる。被写体追跡部271の追跡結果は、バス231を介して各モジュールへ伝えられる。被写体追跡部271の追跡結果はカメラ制御部225、レンズ制御部213を介してフォーカス制御部212に伝達され、撮像画像内の主被写体領域に対する自動焦点検出および焦点調節制御が実現される。主被写体領域とは、追跡対象となる主被写体の画像領域である。また、絞り制御部211は、特定の被写体領域の輝度値を用いた露出制御を行う。被写体追跡部271が追跡している主被写体の表示については、主被写体の画像領域を矩形枠等で表示部242が画面に表示する。なお、被写体追跡部271には、SDRAM261に蓄積された撮像画像のデータがバス231を介して送られる。被写体追跡部271は撮影時刻の異なる複数の画像を用いて主被写体を追跡し、追跡結果として主被写体を示す部分領域を抽出する。
次に図3を参照して、撮像光学系の瞳と撮像素子の光電変換部との関係を説明する。図3に例示する撮像素子は、2次元的に配列されたm×n個のセンサ部で構成される。図3の断面部301は、撮像素子221の一部を示している。各センサ部302には、マイクロレンズ303と2つの光電変換部(304,305)が配置されている。第1の光電変換部304および第2の光電変換部305の各出力信号を取得して、撮像面位相差検出方式による自動焦点調節に用いる像信号を生成可能である。
図3は、撮像光学系の瞳306の異なる領域(307,308)と各光電変換部との対応関係を示している。第1の瞳部分領域307と第2の瞳部分領域308は、光軸を挟んで位置している。各領域を通過した光束は、奥行き方向103の軸、つまり光軸を中心に各センサ部302に配置されたマイクロレンズ303を介して、2つの光電変換部(304、305)によりそれぞれ受光される。第1の瞳部分領域307を通過した光束は、マイクロレンズ303を介して第1の光電変換部304が受光する。また第2の瞳部分領域308を通過した光束は、マイクロレンズ303を介して第2の光電変換部305が受光する。各センサ部に設けられた2つの光電変換部により、撮像用の信号と焦点検出用の信号を取得できる。すなわち、2つの光電変換部(304,305)の出力を加算することで、撮像画像のデータが取得される。図2の撮像信号処理部223は撮像信号を画像信号(画像データ)として整える。また、2つの光電変換部(304,305)の出力を各々扱うことにより、視点の異なる2つの画像(視差画像)を取得できる。第1の光電変換部304の出力から第1の視差画像が得られ、第2の光電変換部305の出力から第2の視差画像が得られる。図2の焦点検出用信号処理部224は、一対の視差画像の信号を用いて焦点検出の演算を行う。
本実施形態では、2つの光電変換部の出力を加算して取得される画像信号の画像をA+B像と呼称する。2つの光電変換部の出力から各々取得される画像信号の画像をA像、B像と呼称する。なお、位相差信号の生成方法については本実施形態の方法に限定されず、他の方法を用いてもよい。例えば、2つの光電変換部の加算出力により取得されるA+B像の信号から、一方の光電変換部の出力により取得されるA像またはB像の信号を減算し、他方のB像またはA像の信号を生成することができる。
ここで、焦点検出用信号処理部224が行う、撮像面位相差検出方式の焦点検出方法について説明する。撮像面位相差検出では、設定した焦点検出領域に対して撮像素子221から焦点検出用の一対の像信号、例えばA像の信号とB像の信号が取得される。次に焦点検出用信号処理部224は、取得された像信号間の相関量を算出する。相関量を求める演算は、焦点検出領域内の各走査ラインにおいてそれぞれ行われる。焦点検出用信号処理部224は相関量から相関変化量を算出し、相関変化量に基づいて2像のずれ量を算出する。この2像のずれ量に、所定の換算係数を乗算することでデフォーカス量に変換することができる。このとき、カメラ制御部225は自動焦点検出に使用する撮影パラメータ情報を取得する。撮影パラメータはカメラ本体部またはレンズ部のメモリに記憶されている。撮影パラメータとは、撮影レンズ201内の絞り203の絞り情報や、カメラ本体部内の撮像素子221のセンサゲイン等の情報である。本実施形態の構成に依らず、カメラの構成に応じて必要な情報を適宜取得してもよい。撮影パラメータに基づいて、焦点検出用の信号生成に係る処理や、焦点検出を行う領域が設定できるように、カメラ制御部225は必要な情報を提供する。本実施形態における焦点検出領域は、画面全体を2次元的に等分割して設定されている。
次に、図4から図14を用いて、撮像装置の動作について説明する。まず、図4を参照し、被写体追跡処理を含む全体の処理の流れを説明する。以下の処理は、カメラ制御部225のCPUが実行するプログラムにしたがって実現される。
撮像装置は露光を行い、撮像素子221は光像を電気信号に変換する(S401)。処理S402およびS403と、処理S404およびS405は並列処理として実行される。撮像信号処理部223は、撮像素子221から読み出した撮像画像(A+B像)の信号を画像信号に変換する(S402)。取得されたA+B像の画像信号はSDRAM261に格納される(S403)。一方、撮像素子221により取得された視差画像(A像、B像)の各信号は焦点検出用信号処理部224に入力される(S404)。焦点検出用信号処理部224はA像とB像のずれ量を検出してデフォーカス量を算出する(S405)。
処理S403、S405の後、判定処理S406へ進む。カメラ制御部225はモードを判定する。ユーザが追跡モードを選択している場合(S406でYES)、処理S407へ進み、追跡モードが選択されていない場合(S406でNO)には判定処理S408へ移行する。追跡モードは、撮像装置が主被写体の追跡処理を行うモードである。撮像画像とデフォーカス情報に基づいて被写体追跡部271は被写体追跡処理を行う(S407)。判定処理S408にてカメラ制御部225は、電源のON/OFFを判定する。ユーザが電源をOFF操作するとシステムの動作が終了する(S408でYES)。また電源のOFF操作が行われない場合(S408でNO)、再び処理S401に戻り露光が行われる。
続いて図5を参照し、被写体追跡処理について説明する。図5は本実施形態の被写体追跡を説明するブロック図である。被写体追跡部271は、撮像された画像(A+B像)を処理する第1の処理部と、デフォーカス情報を処理する第2の処理部を備える。第1の処理部は、被写体検出部501、マッチング部502、被写体領域決定部503を備える。SDRAM261から逐次供給される撮像画像(A+B像)に基づいて、被写体検出部501、マッチング部502は第1の被写体候補領域を抽出する。また、第2の処理部は、光軸ベクトル算出部504、距離・ベクトル比較部505を備える。第2の処理部は、被写体追跡性能を向上させるために、視差画像(A像、B像)に基づいて焦点検出用信号処理部224が算出したデフォーカス情報を使って第2の被写体候補領域を抽出する。第1および第2つの被写体候補領域に基づいて被写体領域決定部503は主被写体を追跡する。追跡の結果として、画像中の特定被写体を示す部分領域が抽出される。
本実施形態では、焦点検出用信号処理部224が算出したデフォーカス情報を用いる被写体追跡処理を例示して説明するが、本発明は、画像における被写体の深さに対応する情報としてさまざまな実施形態での適用が可能である。つまり、被写体の深さに対応するデータが示す情報(深さ情報)は、画像内における撮像装置から被写体までの被写体距離を直接的に表すか、または画像内の被写体の被写体距離や深さの相対関係を表す情報であればよい。以下、各処理部の詳細を説明する。
図5の被写体検出部501は、撮像画像(A+B像)を取得して目的とする被写体を検出し、被写体追跡の追跡対象とする。撮像画像のデータは、撮像信号処理部223が出力してSDRAM261に記憶されている。被写体検出部501は、例えば顔検出を行い、画像内の被写体領域として人物の顔領域を特定する。検出方法としては、公知の顔検出方法を用いる。顔に関する知識(肌色情報、目・鼻・口等のパーツ)を利用する方法と、ニューラルネットに代表される学習アルゴリズムにより顔検出のための識別器を構成する方法等がある。また顔検出では、認識率向上のためにこれらを組み合わせて顔認識を行うのが一般的である。具体的には特許文献3に記載のウェーブレット変換と画像特徴量を利用して顔検出する方法がある。これに限らず、タッチパネルやボタン等を含む入力インターフェイス部を用いて、ユーザ(操作者)が、画像に含まれる任意の被写体画像を追跡対象に指定する構成としてもよい。その場合、被写体検出部501はユーザの操作により指定された位置情報に基づき、撮像画像内の被写体領域を検出して検出情報をマッチング部502に出力する。検出により特定された被写体領域は主被写体の画像領域として設定される。
マッチング部502は、被写体検出部501の検出情報を取得して、検出された被写体領域をテンプレートとして登録する。マッチング部502は、テンプレートと、SDRAM261から逐次供給される画像の部分領域とのマッチング処理を行い、複数の評価値と領域情報を第1の被写体候補領域の情報として出力する。マッチング方式は多種多様に存在するが、本実施形態では、画素パターンの相違度に基づくテンプレートマッチング法を適用する。テンプレートマッチング法の詳細に関して図6を用いて説明する。
図6(A)は、テンプレートマッチングにおける被写体モデル(テンプレート)の例を示す。マッチング部502は、目的とする主被写体の領域を示す画像601の画素パターンを特徴量として扱う。図6(A)は画像601の特徴量602をマトリクスで表現した例を示し、画素データの輝度信号を特徴量とする。特徴量をT(i,j)と表記し、テンプレート領域内の座標を(i,j)、水平画素数をW、垂直画素数をHと表記する。特徴量T(i,j)は下記式で表現される。
図6(B)は、主被写体を探索する場合の画像情報を例示し、マッチング処理を行う範囲の画像603を示す。探索画像における座標は、(x,y)で表現する。マッチングの評価値を取得するための部分領域604を矩形枠で示す。部分領域604の特徴量605については、図6(A)のテンプレートと同様に画像データの輝度信号を特徴量とする。特徴量をS(i,j)と表記し、部分領域604内の座標を(i,j)、水平画素数をW、垂直画素数をHと表記する。特徴量S(i,j)は、下記式で表現される。
テンプレート領域と部分領域604との類似性を評価する演算方法として、差分絶対和、いわゆるSAD(Sum of Absolute Difference)値を用いる方法がある。SAD値(V(x,y)と記す)は、下記式により算出される。
マッチング部502は、部分領域604を探索範囲の画像603の左上から順に1画素ずつずらしながら、SAD値V(x,y)を演算する。算出されたSAD値V(x,y)が最小値を示す座標(x,y)はテンプレートと最も類似した位置を示す。つまり、SAD値V(x,y)が最小値を示す位置は、探索画像において主被写体が存在する可能性の高い位置である。
特徴量として輝度信号の1次元の情報を用いる例を説明したが、明度・色相・彩度の信号等の3次元の情報を特徴量として扱ってもよい。また、マッチングの評価値の演算方法としてSAD値に関して説明したが、正規化相互相関いわゆるNCC(Normalized Cross-Correlation)等の、異なる演算方法を用いてもよい。本発明の適用上、テンプレートマッチングに限定されず、ヒストグラムの類似性に基づくヒストグラムマッチング等の他のマッチング方式であってもよい。
図5の被写体領域決定部503は、マッチング部502より複数の評価値と領域情報を取得し、主被写体の候補領域から最も評価値が小さい領域を被写体領域として決定する。しかし、主被写体と画素パターンや色ヒストグラムが似ている類似被写体が主被写体の近くにいる場面では類似被写体領域の評価値が小さくなってしまうことがある。その対策として、焦点検出用信号処理部224から出力されるデフォーカス量を利用して主被写体と類似被写体を区別する方法がある。しかし、この方法では主被写体と類似被写体が光軸方向にて近くにいる場面や、主被写体が類似被写体とすれ違って一時的に撮像面上からいなくなった間に光軸方向に移動する場面にて、主被写体と類似被写体とを区別することが難しい。つまりデフォーカス情報のみでは主被写体と類似被写体の判別に限界がある。そこで本実施形態では、デフォーカス情報に加えて、被写体の光軸ベクトルを参照することにより、追跡性能をさらに向上させることができる。
図7を参照して、光軸ベクトル算出部504について説明する。光軸ベクトルとは、撮像面上の各焦点検出領域内に存在する被写体像の位置変化ベクトルの光軸成分を指す。図7は任意の焦点検出領域における被写体にピントが合う像面位置とフォーカスレンズ位置を、像面値に変換した値の時間変化を例示する。横軸は時間軸であり、縦軸は像面値を表わす。各時刻t1,t2において、フォーカスレンズ位置を黒塗りの円形記号で表わし、被写体にピントが合う位置を黒塗りの四角形記号で表わしている。
任意の焦点検出領域を、x方向にc番目であってy方向にr番目の焦点検出領域としてその位置を(c,r)により表記する。任意の焦点検出領域での過去(時刻t1)のデフォーカス量をDpre(c,r)と表記し、当該焦点検出領域での現在(時刻t2)のデフォーカス量をDcur(c,r)と表記する。光軸ベクトルをv(c,r)と表記し、フォーカスレンズ204の駆動量を像面値に変換した値をLと表記する。図7より、光軸ベクトルv(c,r)は下記式で算出される。
なお、フォーカスレンズ204の駆動量については、当該駆動量をデフォーカス量に変換する換算係数と、フォーカスレンズ204の駆動量1パルスあたりの繰り出し量を乗算することで像面値Lに変換することができる。フォーカスレンズ駆動量からデフォーカス量への換算係数や1パルスあたりの繰り出し量の情報はROM262に格納されているので、カメラ制御部225は必要に応じてバス231を介して取得できる。また、焦点検出用信号処理部224が算出したデフォーカス量はフォーカスレンズ204の駆動量へ変換することができる。
図8を参照して、フォーカスレンズ204の駆動量の決定方法を説明する。図8は被写体801の追跡を説明する画像例を示す。画像内の被写体領域802は、1フレーム前に被写体領域決定部503が決定した被写体領域であり、その重心点を点803で示す。矩形領域は重心点803を内包する焦点検出領域804である。被写体801を追跡する際の、フォーカスレンズ204の駆動量については、被写体領域802の重心点803を内包する焦点検出領域804において算出されたデフォーカス量を反映してカメラ制御部225が決定する。この時、主被写体に対するデフォーカス量はSDRAM261に貯蓄し続けるので、一定時間のデフォーカス量の時間傾向に基づいて近似曲線を算出することにより、次の被写体位置を予測することができる。予測位置に基づいてフォーカスレンズ204の駆動量を決定することができる。
ところで、動画撮影モード等の場合、単位時間における焦点検出用の視差画像サンプリング数が多い。このようなモードに関しては、光軸ベクトルの絶対量が小さいため、焦点検出誤差によるノイズの影響を受ける可能性がある。そこで本実施形態では、光軸ベクトル算出部504により算出された光軸ベクトルはSDRAM261に記憶され、数フレームに亘る移動平均値として更新していく処理が行われる。これにより、ノイズを低減させた光軸ベクトルを算出することができる。なお、ノイズの低減方法は移動平均法に限定されず、数フレームの間にSDRAM261へ記憶されたデフォーカス量に対し、ローパスフィルタ処理を行う方法がある。このようにデフォーカス量の変化を平滑化してから光軸ベクトルを算出する各種の方法を用いてもよい。
図5の距離・ベクトル比較部505は、SDRAM261に記憶された被写体のデフォーカス量および光軸ベクトルと、各焦点検出領域におけるデフォーカス量および光軸ベクトルとが一致しているか否かを判定する。以下、判定用の閾値について説明する。デフォーカス量と光軸ベクトルの閾値は、マッチング部502から出力される複数の評価値と、各領域の中心点座標の分散値に基づいて決定され、追跡信頼性に応じて動的に設定される。具体的には、マッチング部502から出力されるN個の評価値のうち、座標に対応するi番目の評価値をViと表記し、N個の評価値のうちで最小の評価値をVminと表記する。対象領域の中心座標(Ciと記す)に基づいて、下記式から評価値重心座標(Gと記す)が算出される。
評価値Viは、最小の評価値Vminで除算することで正規化される。また、先述したように評価値Viはテンプレートとの差分を意味するため、値が小さいほどテンプレートとの類似度が高い。そこで、評価値Viで重みづけした評価値重心座標Gを算出するために、中心座標Ciを、正規化した評価値Vi/Vminで除算し、その総和をNで除算して平均化する演算が行われる。下記式のように、評価値重心座標Gと各領域の中心座標Ciとのユークリッド距離を、各評価値Viで重みづけした合計値を求める演算が行われ、追跡信頼性評価値(Rと記す)が算出される。
追跡信頼性評価値Rは分散値であるので、値が小さいほど第1の被写体候補領域座標のばらつきが小さく追跡の信頼性が高くなる。したがって、追跡信頼性評価値Rが小さいときには、高い評価値をもつ領域が密集しており、類似被写体を主被写体と間違える可能性が低い。そのため距離・ベクトル比較部505は判定用の閾値を変更し、デフォーカス量と光軸ベクトルの一致度を判定するための許容範囲を広げて、デフォーカス量と光軸ベクトルの影響を小さくする。こうすることで、誤測距による影響を軽減させることができる。反対に、追跡信頼性評価値Rが大きいときには、高い評価値をもつ領域がばらついており、類似被写体を誤追跡する可能性が高くなる。そのため距離・ベクトル比較部505は判定用の閾値を変更し、デフォーカス量と光軸ベクトル量の一致度を判定するための許容範囲を狭めて、デフォーカス量と光軸ベクトルの影響を大きくする。なお、評価値重心座標Gと追跡信頼性評価値Rについて評価値Viで重みづけを行う方法を説明したが、この方法に限定されない。重みづけを行わない方法や他の方法を用いてもよい。
次に、図9、図10のフローチャートを参照して、図5の被写体追跡部271が行う被写体追跡処理を詳細に説明する。まず図9を用いて被写体追跡の概要を説明する。判定処理S901で被写体追跡部271は、テンプレート画像の有無を判定する。ユーザが追跡モードを選択した時点から初期フレームであればテンプレート画像が無いので、この場合(S901でNO)、処理S902へ進む。テンプレート画像が既に存在する場合には、処理S906以降および処理S909以降の並行処理が実行される。
テンプレート画像を登録する必要があると判定された場合、SDRAM261の撮像画像(A+B像)のデータは被写体追跡部271に入力される(S902)。被写体検出部501は、入力された撮像画像に基づいて画像上の特徴量から被写体検出を行う(S903)。検出された被写体領域はテンプレートとして登録される(S904)。初期フレームにおける被写体追跡処理では、テンプレートの登録のみが行われる。判定処理S905に進み、追跡モードの終了判定が行われる。ここで、追跡モードを終了すると(S905でYES)、被写体追跡モードが終了する。追跡モードの終了が判定されない場合には、判定処理S901に戻る。
被写体追跡を開始してから2フレーム以降にはテンプレート画像が存在するので、処理S906および処理S909に進む。処理S906で入力される撮像画像(A+B像)に対して、テンプレートに基づいてマッチング部502はマッチング処理を実行し(S907)、第1の被写体候補領域を検出する(S908)。
一方、処理S909では、焦点検出用信号処理部224から被写体追跡部271にデフォーカス情報が入力される。光軸ベクトル算出部504は光軸ベクトルを算出し、距離・ベクトル比較部505は第2の被写体候補領域を検出する(S910)。第2の被写体候補領域の検出方法の詳細については後述する。
処理S908、S910の後、処理S911へ進み、第2の被写体候補領域から第1の被写体候補領域の絞り込みが行われる。被写体追跡に距離情報を付加するために、テンプレートマッチングに基づく第1の被写体候補領域(S908の出力)の中心点のうち、距離・ベクトル比較部505が検出した第2の被写体候補領域(S910の出力)内に存在する点が抽出される。第1の被写体候補領域は、評価値が小さいほどテンプレートとの類似度が高い。そのため処理S912では、絞り込みにより残った第1の被写体候補領域の中で最も評価値が小さい被写体候補領域を被写体領域決定部503が被写体領域として決定する。
ところで、被写体領域決定部503は常に被写体領域を決定できるとは限らない。例えば、被写体の形状や色分布が大きく変化してマッチング部502から出力される評価値が所定値よりも小さい場合には、被写体領域を決定できない。また、処理S911において第1の被写体候補領域と第2の被写体候補領域との間で一致する領域が無いために第1の被写体候補領域が無くなった場合には、被写体領域を決定できない。このように、被写体領域を決定できない状態をLOST状態と定義する。被写体領域決定部503において被写体領域を決定できる状態をFIND状態と定義する。判定処理S913ではFIND/LOST状態の判定が行われ、処理がS914、S917にそれぞれ分岐する。
FIND状態のときに処理S914へ進み、被写体のテンプレート画像が最新の被写体画像に更新される。その後、被写体に焦点を合わせ続けるためにフォーカスレンズ204の駆動量を決定する必要がある。フォーカスレンズ204の駆動量は、被写体領域決定部503が決定した主被写体領域における重心位置のデフォーカス量に基づいて決定される(S915)。この時、フォーカスレンズ204の駆動量を像面値に換算した値は、被写体の光軸ベクトルの大きさと同じである。このため、フォーカスレンズ204の駆動量は被写体の光軸ベクトルとしてSDRAM261に記憶される(S916)。そして判定処理S905へ進む。一方、判定処理S913にて判定結果がLOST状態のときには、主被写体領域が決まらず主被写体に対するデフォーカス量が不明である。このため、フォーカスレンズ204の駆動が停止される(S917)。LOST状態が所定時間(判定用の閾値時間)以上続いたか否かが判定される(S918)。LOST状態が所定時間以上続いた場合(S918でYES)、被写体のテンプレートが削除される(S919)。テンプレートの削除後に判定処理S901に戻り、判定結果(NO)により、再びテンプレートの登録が行われる(S904)。また、LOST状態が所定時間未満である場合(S918でNO)、テンプレートを保持したままで、判定処理S905へ移行する。なお、本実施形態では判定処理S918で所定時間以上のLOST状態を判定条件として採用しているが、その他の条件に変更してもよい。
続いて、図10のフローチャートを参照し、距離・ベクトル比較部505における第2の被写体候補領域の決定方法を説明する。距離・ベクトル比較部505は、設定した複数の焦点検出領域に対して1つずつ演算処理を実行し、各焦点検出領域が主被写体領域であるか、またはその他の領域であるかを判別する。まず、光軸ベクトル算出部504は入力されたデフォーカス量に基づいて光軸ベクトルを算出する(S1001)。この後、1フレーム前の状態がFIND状態であったかLOST状態であったかが判定される(S1002)。1フレーム前の状態がFIND状態であった場合(S1002でYES)、判定処理S1003に進み、1フレーム前の状態がLOST状態であった場合(S1002でNO)、判定処理S1006に進む。判定処理S1003では、算出されたデフォーカス量が所定範囲以内であるかどうかが判定される。デフォーカス量が所定範囲以内である場合(S1003でYES)、判定処理S1004に進み、デフォーカス量が所定範囲以内でない場合(S1003でNO)、処理S1008に移行する。
判定処理S1004では、処理S1001で算出された光軸ベクトルと、図9の処理S916でSDRAM261に記憶された主被写体の光軸ベクトルとが比較される。これらの光軸ベクトル同士の方向および大きさが一致していると判定された場合、処理S1005に進み、方向または大きさが一致していないと判定された場合には処理S1008へ移行する。ここで光軸ベクトルが一致するとは、光軸ベクトルの方向が同じであり、かつ処理S1001で算出された光軸ベクトルとSDRAM261に記憶された主被写体の光軸ベクトルとの大きさの差が所定の閾値以下であることとする。つまり、判定処理S1004での光軸ベクトルは、焦点検出領域に対応する被写体の光軸方向の速度を意味するので、同じ被写体の追尾が継続している間、光軸ベクトルの方向が一致しており、光軸ベクトルの大きさの差は小さい。
処理S1005にて距離・ベクトル比較部505は、判定対象である焦点検出領域を主被写体領域と見なし、第2の被写体候補領域とする。また、判定処理S1003、S1004にてどちらかの一方でも条件を満たさない場合、距離・ベクトル比較部505は判定対象の焦点検出領域を主被写体以外の被写体領域であると見なす(S1008)。先述したように、撮像装置は常に主被写体に焦点を合わせ続けているため、判定処理S1003でデフォーカス量が所定範囲外であると判定された場合には主被写体を捉えていないと見なされる。また判定処理S1004で光軸ベクトルの方向または大きさが一致していないと判定された場合にも主被写体を捉えていないと見なされる。
一方、判定処理S1002の判定結果がLOST状態である場合、判定処理S1006、S1007が実行される。判定処理S1006、S1007の処理内容はそれぞれ、判定処理S1003、S1004と同様である。判定処理S1006にて、算出されたデフォーカス量が小さく、所定範囲以内である場合、処理S1005に進む。デフォーカス量が所定範囲外である場合には判定処理S1007に進み、判定対象の焦点検出領域における光軸ベクトルとSDRAM261に記憶された主被写体の光軸ベクトルとの方向および大きさが比較される。これらの光軸ベクトルの方向および大きさが一致した場合、処理S1005へ進み、光軸ベクトルの方向または大きさが一致していない場合には処理S1008へ進む。処理S1005、S1008の後、判定処理S1009に進み、設定した全ての焦点検出領域について処理が終了したか否かについて判定が行われる。全ての焦点検出領域について終了した場合には、一連の処理を終えるが、未終了の場合には処理S1001に戻って処理を続行する。
次に図11から図14を参照して具体例を説明する。図11、図12は1フレーム前の状態がFIND状態である場合(図10の判定処理S1002でYES)の第2の被写体候補領域の決定方法に関する説明図である。図11は2匹の類似する犬(被写体)がいる場面を例示する。右側の犬を主被写体1101とし、左側の犬を類似被写体1102とする。
図11(A)は、画面奥から手前に移動する主被写体1101に対して、その左側で同じ場所に停留する類似被写体1102を撮影するシーンを例示する。主被写体1101に対する焦点検出領域1103と類似被写体に対する焦点検出領域1104をそれぞれ矩形枠で示す。図11(B)は、マッチング部502から出力される第1の被写体候補領域の中心点1105を黒塗りの三角形記号で示す。
図12(A)は主被写体1101、類似被写体1102の位置に対するそれぞれの焦点検出領域1103、1104におけるデフォーカス量の時間変化を例示する。横軸は時間軸であり、縦軸はデフォーカス量を表す。図12(B)は、焦点検出領域1103、1104におけるそれぞれの光軸ベクトルの時間変化を例示する。横軸は時間軸であり、縦軸は光軸ベクトルを表す。光軸の向きとしては、撮像装置から見た場合に奥方向を正方向とし、手前方向を負方向とする。主被写体1101については円形の記号で示し、類似被写体1102については四角形の記号で示している。
図12(A)では、同じ場所に停留している類似被写体1102に関するデフォーカス量が時間的に変化している。その理由は、フォーカスレンズ204が主被写体1101に合わせて移動しているためである。図12(A)の2本の一点鎖線はデフォーカス量の閾値1201を示している。デフォーカス量が2本の一点鎖線の間の範囲内にある場合に主被写体と見なすことができるが、類似被写体に関するデフォーカス量が当該範囲内に入る期間をT1に示す。期間T1では、主被写体および類似被写体に関するデフォーカス領域が閾値1201内に収まっているので、両者を区別することができない。そこで、図12(B)に示す光軸ベクトルの時間傾向、つまり期間T1での主被写体および類似被写体に関する光軸ベクトルの相違から両者を区別することができる。図12(B)のように光軸方向において動かない類似被写体1102では、その光軸ベクトル量がゼロ近辺を維持する。これに対して、光軸手前方向に移動する主被写体1101では、その光軸ベクトル量がゼロでない値V1を維持する。そのため、類似被写体と主被写体とを判別することができる。図11(B)には、光軸ベクトル量がV1を維持する焦点検出領域を抽出することで得られる第2の被写体候補領域1106を長方形枠で示している。
以上の処理では、複数の被写体に関するデフォーカス量の時間変化と光軸ベクトルの時間変化に基づき、第1の被写体候補領域と第2の被写体候補領域をすり合わせることで主被写体と類似被写体を正確に区別できる。すなわち、デフォーカス量の時間変化だけでは区別が困難な主被写体と類似被写体を、光軸ベクトルの時間変化に基づいて判別することによって、主被写体の正確な追跡を実現できる。
続いて図13、図14の具体例を用いて、1フレーム前の状態がLOST状態である場合(図10の判定処理S1002でNO)の被写体領域判定について説明する。図13は、奥から手前に主被写体1301が進んできており、類似被写体1302が画面の右側から左側へ横切っているシーンを例示する。撮影開始時刻t1を起点として図13(A)は時刻t2で撮影された画像を示し、図13(B)は時刻t3で撮影された画像を示す。図13(C)は時刻t4で撮影された画像を示す。「t1<t2<t3<t4」とする。
図13(A)では主被写体1301の領域1303が決定され、FIND状態である。主被写体に対する焦点検出領域1304と類似被写体1302に対する焦点検出領域1305をそれぞれ示す。図13(B)では類似被写体1302が主被写体1301に重なっており、主被写体1301が隠れるので、撮影画面上で見えなくなる。このため、LOST状態となる。図13(C)では再び主被写体1301が出現する。
図14(A)は各被写体に対する焦点検出領域1304、1305におけるデフォーカス量の時間変化を例示する。図14(B)は、焦点検出領域1304、1305におけるそれぞれの光軸ベクトルの時間変化を例示する。各軸の設定は図12と同じである。期間T2、T3、T4については、図13(A)から(C)の各シーンに対応している。つまり、図13(A)の撮影時刻t2は期間T2内の時刻であり、図13(B)の撮影時刻t3は期間T3内の時刻である。図13(C)の撮影時刻t4は期間T4内の時刻である。
期間T2においてデフォーカス量の変化と光軸ベクトルの変化は図11に示したFIND状態のシーンと同様である。しかし、期間T3では、手前を横切る類似被写体1302によって主被写体1301が隠れる。このため、主被写体1301についてはデフォーカス量と光軸ベクトル量を共に算出できなくなる。また、LOST状態ではフォーカスレンズ204の駆動が停止するので、光軸方向に移動していない類似被写体1302に関するデフォーカス量は一定値になる。
期間T4では、主被写体1301が再び撮影画面に出現し、デフォーカス量1401、光軸ベクトル量1402が取得される。つまり図13(C)の焦点検出領域1306におけるデフォーカス量と光軸ベクトル量が取得され、これらは一度見失った主被写体が再び出現した時に正確に追跡できた場合に存在すると想定される結果である。期間T4ではフォーカスレンズ204が停止していて、主被写体1301が手前に進んでくるため、デフォーカス量は絶対量が大きくなっていく。このためデフォーカス量1401だけでは、焦点検出領域1306を主被写体の領域と見なすことは困難である。一方、図14(B)に示す光軸ベクトル量は、期間T2と期間T4とで主被写体の光軸ベクトルが向きおよび大きさ(V2)ともに一致していることがわかる。このように期間T3、T4でのLOST状態において、すべての焦点検出領域に対して光軸ベクトル量がV2となる領域を探し続けることで、再び第2の被写体候補領域を決定できる。すなわち、主被写体が類似被写体によって隠れてしまうシーンの場合にデフォーカス量の時間変化だけでは特定が困難な主被写体を、光軸ベクトルの時間変化に基づいて識別することができる。第2の被写体候補領域が決定された後の処理については、図11、図12で示したFIND状態の場合の処理と同様であるため、その詳細な説明を省略する。なお図12(B)、図14(B)のグラフは、主被写体が等速運動を行っている状況を示す。これに限らず、光軸ベクトルの時間変化の傾向から近似式を生成して予測することで主被写体の加速度運動への対応も可能である。
本実施形態によれば、撮像面全体の距離情報と位置変化ベクトルの光軸成分(光軸ベクトル情報)を追跡のための情報に利用することで、追跡精度の向上を実現できる。主被写体と画素パターンや色ヒストグラムが類似している類似被写体に対して主被写体が光軸方向に近づいて来る場合や、光軸方向に移動している主被写体に対して類似被写体が手前を横切る場合でも主被写体の追跡処理を正確に行える。
[第2実施形態]
以下、本発明の第2実施形態について説明する。まず、本実施形態と第1実施形態との相違について説明する。第2実施形態では、第1実施形態に対して演算量を削減し、処理効率を上げることを目的とする。第1実施形態では撮像面全体を複数の小領域に分割して焦点検出を行ったが、本実施形態ではマッチング部502から出力される第1の被写体候補領域の座標に基づいて焦点検出領域を決定する。この方法を用いることで、第1の被写体候補領域が一か所または狭い範囲に集中しているときには焦点検出領域の数が減り、演算処理量を低減できる。なお、本実施形態における撮像装置の構成は図2の構成と同様であるため、既に使用した符号を用いることで、それらの詳細な説明を省略する。
図15は、本実施形態の被写体追跡部271の構成例を示すブロック図である。第1実施形態ではマッチング部502から出力される複数の評価値と領域情報が被写体領域決定部503にのみ入力されていた。本実施形態では複数の評価値と領域情報がカメラ制御部225にも入力される。焦点検出用信号処理部224は、これらの情報に基づいて焦点検出領域を設定し、算出したデフォーカス情報を光軸ベクトル算出部504に出力する。光軸ベクトル算出部504以降の処理については第1実施形態と同様であるため、その説明を省略する。
図16を参照して、マッチング部502の出力に基づく焦点検出領域の設定方法を説明する。図16は2つの被写体を撮影するシーンの画像例を示す。焦点検出用信号処理部224は、マッチング部502から出力される複数の領域情報に基づき、各領域の中心座標をそれぞれ示す中心点群1601、1604を算出する。中心点群1601は、第1の被写体の画像に対応する複数の領域の中心座標をそれぞれ示し、中心点群1604は、第2の被写体の画像に対応する複数の領域の中心座標をそれぞれ示す。中心点群に基づいて焦点検出領域が設定される。具体的には、図16に示すように予め画面全体に小領域が配置され、それぞれの小領域に対して中心点群1601を内包する領域が仮焦点検出領域1602(実線の太線枠参照)として設定される。この段階で仮焦点検出領域1602とする理由は、被写体の大きさが考慮されていないためである。そこで被写体のそれぞれの中心点が持つ領域情報を考慮して、小領域を含む焦点検出領域1603が設定される。例えば、中心点群1604の1つは、領域1605の領域情報を持っているため、仮焦点検出領域(実線の太線枠参照)の上に位置する2つの小領域1606、1607の一部が領域1605に含まれる。よって、2つの小領域1606、1607は焦点検出領域1603に追加される。このように、より広く設定される焦点検出領域1603内に存在する小領域に対して、焦点検出用信号処理部224は相関演算を行い、デフォーカス量を算出する。
本実施形態では、図16のように中心点群が密集している場合に、中心点がそれぞれ有する領域情報から焦点検出領域を設定することで、焦点検出領域1603の数を必要最小限に抑えることができる。これにより、焦点検出領域1603以外の領域については相関演算を行う必要が無いので、演算負荷を低減できる。本実施形態によれば、焦点検出の処理効率を向上させることができる。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。