以下、この発明の実施例について図面を参照しながら説明する。ここでは、焦点検出装置を備える撮像装置であるレンズ一体型のカメラに本発明を適用した場合の一実施例について説明をする。本実施例のカメラは、焦点検出領域に存在する追尾対象の被写体(以下、追尾対象と呼ぶことがある)を検出できないとき、追尾対象を見失ったと判断する。そして、追尾対象を見失う前までの移動情報に基づいて追尾対象の位置(光軸方向における位置を含む)を予測し、予測した位置を含むように焦点検出領域を設定するとともに予測した位置に合焦するようにフォーカスレンズの位置を調整する。また、本実施例のカメラは、追尾対象を見失うと、焦点検出領域内における追尾対象よりも近くの被写体(近距離被写体と呼ぶことがある)の有無を判定する。そして、近距離被写体が有ると判定した場合は、追尾対象が一時的に近距離被写体の陰に隠れたものと判断し、追尾対象が近距離被写体の陰から再度現れる(復帰する)際の追尾対象の位置を予測し、その位置に合わせて焦点検出領域を設定する。これにより、追尾対象を一時的に見失った場合でも、追尾対象が復帰すれば再度追尾を開始することができる。また、カメラは距離情報を含む追尾対象の位置を予測するため、追尾対象の復帰前に追尾対象の予測位置に合わせて焦点を調整しておくこともできる。以下、より詳細に説明をする。
図1は、本発明の実施例である、焦点検出装置を含むカメラ(デジタルスチルカメラまたはビデオカメラ)の構成を示すブロック図である。本実施例のカメラCは、撮像光学系を有するレンズユニット100と、撮像光学系により結像された被写体像を光電変換、すなわち撮像する撮像素子101と、撮像素子101の出力を受けて、焦点検出用の画像信号を取得する分割像取得回路102を備える。さらに、カメラCは、分割像取得回路102により取得された焦点検出用の画像信号を用いて相関演算を行う位相差検出用アクセラレータ回路103と、撮像センサ101からの出力を受けて撮像信号を取得する撮像信号処理回路104を備える。また、取得した撮像信号を一時的に保持する画像メモリ107、所定の映像データフォーマットに変換する画像処理回路105、画像を記録媒体に記録する記録回路106を備える。また、カメラCが備えるCPU109は制御手段であり、上述の回路の動作を制御する各種処理、オートフォーカス機能による焦点位置の取得、レンズ駆動の制御などを行う。加えて、カメラCは、CPU109が扱うプログラムやデータを保持するメモリ108、レンズユニット100内のフォーカスや絞り等を駆動するレンズ駆動回路110を備える。カメラCはさらに、撮像信号処理回路104により取得された撮像信号を用いて被写体を検出する被写体抽出回路111を備える。この被写体抽出回路111により抽出された被写体の形状、位置などの被写体情報を保持し、異なるフレーム間で被写体情報を比較することで、画像中の追尾対象の移動方向などをCPU109によって算出する機能等を実現することができる。各構成について説明を行う。
レンズユニット100が有する撮像光学系は、フォーカスレンズ、ズームレンズ、絞り等を含む。
撮像素子101は、CCDセンサやCMOSセンサ等の光電変換素子により構成され、被写体像を複数の画素のそれぞれに設けられたフォトダイオードにより光電変換する。撮像センサ101の画素構成について図2を用いて説明する。
図2では、撮像素子101と撮像素子101の一部である画素ブロック201の拡大図とを示している。撮像素子101ベイヤー配列型の撮像素子となっている。画素ブロック201中の4画素において、Rは赤のカラーフィルタを備えた画素(以下、R画素という)を、Bは青のカラーフィルタを備えた画素(以下、B画素という)を、G1,G2は緑のカラーフィルタを備えた画素(以下、G1、G2画素という)示す。各画素は、1つのマイクロレンズを共有して2分割された光電変換部が形成された構成となっている。たとえばR画素は対をなす光電変換部202、203を有し、同様にG画素、B画素等も分割されており、それぞれ光電変換部204〜209のように構成されている。各画素では、入射する光をマイクロレンズで瞳分割することで、対の光電変換部上に視差を有する対の被写体像が形成される。光電変換部202〜209はそれぞれ、光電変換により電荷を蓄積する。このような構成のセンサを用いた撮像システムでは、光電変換部202により蓄積された電荷に基づく信号であるA像信号と、光電変換部203により蓄積された電荷に基づく信号であるB像信号を加算すると、R画素の撮像用信号となる。一方で、A像信号とB像信号とを別に扱うことで、左右の視差を有する分割された像となり、位相差方式により焦点を検出するための元信号となる。
撮像信号処理回路104は、撮像信号を取得する手段であり、撮像センサ101から各画素の対の光電変換部からの出力信号であるA像信号とB像信号が入力されると、最初にA像信号とB像信号を加算し、撮像用信号(A+B信号)を取得する。その後、取得した撮像用信号に対して光学補正や電気的な補正処理を行う。補正処理が行われた撮像用信号は、たとえば撮像画像として記録される場合には、画像処理回路105、画像メモリ107を介して所定のフォーマット(MPEG2やMP4、JPGなどの動画/静止画像形式)に変換される。そして、記録回路106によって記録メディアに記録される。分割像取得回路102は、焦点検出用信号を取得する手段であり、各画素の対の光電変換部のそれぞれの蓄積電荷に応じた電圧を有する出力信号であるA像信号及びB像信号を、焦点検出に用いられる焦点検出用信号として読み出す。分割像取得回路102において、あらかじめ設定されていた所定の設定によって指定の圧縮処理および光学的な歪みの補正等の補正処理が行われ、各種処理が施されたA像信号及びB像信号は位相差検出用アクセラレータ回路103へ出力される。
位相差検出用アクセラレータ回路103は、焦点検出手段であり、分割像取得回路102により取得されたA像信号及びB像信号を用いて相関演算を行い、A像信号およびB像信号の位相差を取得し、ファーカスレンズのデフォーカス量を検出する。
被写体抽出回路111は、撮像信号処理回路104により取得された撮像信号に基づいて被写体を検出することができる検出手段であり、撮像信号処理回路104からの撮像信号に画像伸長を施し、顔、色、形状などの被検体の特徴を用いて被写体を検出する。追尾対象の被写体がユーザの選択又は被写体抽出回路111による検出結果を用いた自動選択により選択されると、被写体抽出回路111は追尾対象の被写体を検出することができる。
CPU109はレンズ駆動制御手段として機能することができ、算出されたデフォーカス量に基づいて、レンズ駆動手段であるレンズ駆動回路110を通じてレンズユニット100のフォーカスレンズを駆動する。これにより、撮像光学系の合焦状態が得られる。以下の説明において、撮像面位相差検出方式による焦点検出およびフォーカスレンズの駆動の制御をまとめて、撮像面位相差AFという。本実施例においては、CPU109、及びレンズ駆動回路110により被写体の位置情報に基づいてフォーカスレンズの位置を調整する焦点調節手段を構成することができる。また、位相差検出用アクセラレータ回路103、CPU109、及びレンズ駆動回路110により撮像面位相差AFを行う焦点検出装置を構成することができる。
また、CPU109は、被写体抽出回路111により検出された被写体の位置情報を取得する、位置情報取得手段としても機能することができる。CPU109は、被写体抽出回路111により検出された被写体の位置情報を取得することにより、画角内における被写体のxy平面上における位置情報を取得する位置情報取得手段として機能することができる。但し、x方向及びy方向はそれぞれ、撮像画像の横方向及び縦方向を指す。尚、被写体の位置情報として、xy平面上における位置情報だけでなく、z軸方向(光軸方向)における位置情報も含む位置情報を取得してもよい。z軸方向における位置情報として、z軸方向における被写体までの距離のほか、被写体に対してのデフォーカス量及びデフォーカス量に対応する情報を用いることができる。被写体のz軸方向における位置情報を取得することにより、追尾対象の被写体が復帰した際、より高速に追尾対象の被写体に対してピントを合わせることができると考えられる。また、CPU109は、異なるフレームで取得された画像信号に基づく被写体の検出結果を比較することにより、被写体の移動結果に関する情報を取得する、移動結果取得手段として機能することもできる。移動結果に関する情報は、前フレームとの間に生じた被写体の移動よる次フレームにおける被写体の位置に関する情報であり、移動の前後による移動量がわかれば良い。例えば移動ベクトルを用いることができる。
さらに、CPU109は、画角内に焦点検出領域を設定する設定手段としても機能することができる。CPU109は、追尾対象の被写体が選択されている場合は追尾対象の被写体の少なくとも一部が焦点検出領域に含まれるように焦点検出領域を設定する。本実施例において、設定手段は焦点検出領域の位置及び大きさを決定することができるが、位置のみを決定してもよい。尚、設定手段は、追尾対象の被写体が選択されている場合であっても常に追尾対象の被写体の少なくとも一部が焦点検出領域に含まれるように焦点検出領域を設定しなくてもよい。詳しくは後述するが、被写体抽出回路111が追尾対象の被写体を検出できなかった場合は、追尾対象の被写体が現れる位置を予測し、その位置に焦点検出領域を設定することが好ましい。
図3は本実施例のカメラCの焦点検出領域(以下、AF枠と呼ぶことがある)を示したものである。本実施例では、撮像範囲300内に水平3枠×垂直3枠の計9つのAF枠301を設定しており、9枠同時にデフォーカス量を取得可能となっている。便宜上、9つのAF枠301を図示のようにそれぞれ、Window1〜Window9と称する。
次に図4((a)、および(b))は本実施例において人を撮像する際に設定される顔枠403とAF枠404を示したものである。図4には、撮像範囲(画角)400の中に、被写体として人の顔401(胴体部は不図示)と遠距離の背景(空白部分)、および柱402をとらえているシーンを示す。このシーンにおいて、被写体抽出回路111による顔検出結果によって顔枠403が設定される。さらに、設定された顔枠に基づいてAF枠404が設定される。顔枠403は検出した顔の外周を一つの枠としており、顔の大きさにもよるが、図4においては3×3に顔枠を9分割した枠をAF枠404として設定し、各9枠個別に測距、デフォーカス量を算出する。図示していないが、設定される顔枠403が小さくなれば、段階的に2×2の4枠でAF枠を構成したり、1×1の1枠でAF枠を構成し、測距する構成となっている。本実施例では、3×3の9枠でAF枠404を構成する場合を例にとり、以後の説明を行う。
図5(a)〜(f)には、人が移動しているときに顔枠403が顔401を追尾している様子を所定時間間隔でサンプリングした際の各フレームにおける画像500と顔枠403を示す。図5(a)に示した時刻t1では、追尾対象である顔401が画像500のx方向(紙面横方向)においてX1の位置にあり、顔検出により顔枠403が表示されている状態である。顔401は矢印で示した移動方向501で示される方向へ移動している。なお、この移動方向501はカメラへt近づく方向の移動でもあり、画角上の平面方向(X,Y方向)と、カメラの光軸方向(Z方向)へも等速で歩くまたは走る等の移動しているものとする。顔401は時刻t2でX2に(図5(b))、時刻t3でX3に(図5(c))、時刻t4でX4に(図5(d))移動している。時刻t3では顔401の一部が柱に隠れてしまっており、顔検出ができておらず、追尾対象を見失った(ロスト)状態となっている。時刻t4でも顔401は完全に柱402に隠れており、被写体抽出回路111は追尾対象を完全にロストした状態である。ただ、顔401が等速で移動しているとすると、顔401はX4の位置を中心に存在していることになる。
時刻t5では顔401はX5に位置しており(図5(e))、顔401の約半分が見えているが、この段階では被写体抽出回路111では顔と検出できない。時刻t6では顔401はX6に移動し、柱401から完全に顔401がでており(図5(f))、追尾対象の顔401を再び検出でき、顔枠403を再度設定できている。図5((a)〜(f))に示したこのようなシーンにおけるAF枠404の動きを、図6((a)〜(f))に示している。なお図5(a)〜図5(f)にそれぞれ図6(a)〜図6(f)が対応している。
時刻t1で顔401がX1の位置で顔検出されているとき、AF枠404は3×3の9枠が設定されている(図6(a))。顔401は時刻t2でX2に移動しているが、顔検出されており、図6(a)と同様に9枠のAF枠404が設定されている(図6(b))。尚、ここでは被写体抽出回路111において検出された顔401が同一であるか特徴量から判断を行っている。検出された顔401が同一であると判断されると、得られた各フレームの画像を比較することで追尾対象である顔401の移動方向に関する情報である動きベクトルを取得し、この取得結果を用いてXY平面上での追尾対象の動きを追尾(トラッキング)を行う。また、各フレームのAF枠404による焦点状態の検出結果を比較することで、Z方向の動きもトラッキングを行う。
時刻t3では顔401はX3に移動している(図6(c))。時刻t3におけるAF枠404の設定は、直前のフレームを取得した時刻t2までに取得した顔401の移動方向に関する情報に基づいて時刻t3における顔401の位置の予測した結果に基づいて行われる。移動方向に関する情報は、追尾対象が移動する方向だけでなく、速度(移動量)の情報も含むことが好ましい。また、xy平面上における方向だけでなく、z軸方向における移動の情報も含まれることが好ましい。
時刻t3では、顔401の一部が柱402に隠れてしまっていて、被写体抽出回路111は顔401を検出できていない。しかしながら、時刻t1、t2で得られた各フレームの画像から取得した移動方向に関する情報に基づいてAF枠404を設定することで、9枠のうち、Window3、6、9がおよそ追尾対象の被写体(顔401)の位置をとらえている。またそれ以外のWindowでは顔401よりも近距離にある柱402の位置をとらえており、柱402までの距離を測距することになる。時刻t4では顔401は完全に柱402に隠れており(図6(d))、さらに、前のフレーム(図6(c))ですでに顔検出できていない。また前のフレームの測距結果よって予測通りの測距結果(Window3、6、9)に加えて、Window1などで近距離側に被写体を捕捉できているので、このフレームでは、一旦ロストした顔401が再度現れる位置をサーチする動きを行う。具体的には、追尾対象(顔401)の移動方向501において、どこまで近距離被写体(柱402)が存在するのか、またどの位置で背景抜けして、追尾対象よりも遠距離側の測距結果が得られるか、をサーチする。それにより、顔401の移動方向501において、顔よりも近距離側に存在する被写体(柱402)と遠距離側に存在する被写体(背景)との境界の位置を取得し、この位置周辺に追尾対象が現れるものと予測してAF枠404を設定する。追尾対象が現れると予測される境界の位置を出現予測位置とし、出現予測位置を含む位置もしくは出現予測位置よりも移動方向側にAF枠404を設定するものとする。このような、被写体が再出現する位置を予測するために、追尾対象をロストした周辺から出現予測位置を捜索する動作を、周辺捜索動作とよぶ。周辺捜索動作においては、AF枠404の中心(Window5の中心)が、動きベクトルから予測した、t4における顔401の中心位置に配置されるようにAF枠が設定される。
これにより、時刻t4において、時刻t3でAF枠404の中心(Window5の中心)が位置した位置よりも移動方向501方向よりにAF枠404の中心が位置するようにAF枠404の位置が移動し、測距が行われる。本実施例では、近距離被写体である柱402が移動しないものとみなし、各フレーム間(ここではt3とt4)において、AF枠404同士の重複を大きくしない。t3ではWindow1、2、4、5、7、8が柱402を捉えており、t4においても柱402は同じ位置に存在すると考えられる。よって、Window3、6、9のそれぞれが、t3におけるWindow1、4、7のそれぞれと同じ位置もしくはそれぞれの位置よりも移動方向501側になるようにAF枠を設定する。これにより、フレーム間でAF枠404が、AF枠を分割した分割枠(各Window)の複数行及び複数列分重複しない。本実施例では、t4において、Window3、6、9のそれぞれが、t3におけるWindow1、4、7のそれぞれと同じ位置になるようにAF枠404を設定する。これにより、t4ではWindow1〜Window9のすべてで柱402を捉えており、柱までの距離を測距することになる。よって、時刻t3で検出された距離と同じような位置に近距離被写体が存在していることが検出できることになる。
続いて時刻t5(図6(e))でも、t4(図6(d))の時と同様にAF枠404を顔401の移動方向(時刻t2までに検出した移動方向から予測される、t4とt5の間の移動方向)に動かしている。これにより、時刻t5においてAF枠404は柱402(Window3など)、背景(Window1など)、および顔401(Window5など)を捕捉している。このように追尾対象の被写体が近距離被写体に一時的に隠れるような場面では、追尾対象の被写体の移動方向を予測し、予測される追尾対象の被写体よりも遠距離側に位置する遠距離被写体(背景を含む)、および近距離被写体の検出を行う(周辺捜索)。そして、追尾対象の被写体が現れる位置を予測してAF枠404を先行して配置する。これにより、図6(f)に示す時刻t6では、X6に追尾対象の被写体が来て、顔検出により顔401を検出できた瞬間にはAF枠404を構成する各分割枠(Window)においてAF用の測距結果を得ていることになる。そのため、すぐにフォーカス動作が可能となる。
上述したt1〜t6までの被写体追尾及び周辺捜索に伴うAF枠設定とAF枠内の測距結果を図7に示す。図7の上方のグラフは、時間と測距結果との関係を示すグラフであり、横軸を時間t、縦軸をAF枠内の測距結果(デフォーカス量を被写体距離換算したもの)としている。また、下方の表は、それぞれの時刻におけるAF枠設定方法を示す表である。その時刻におけるAF枠の位置の設定が、追尾対象の追尾結果又は追尾予測によるものである場合は、表の追尾予測の欄に四角を示す(t1、t2)。また、その時刻におけるAF枠の位置の設定が、追尾対象が再出現する位置の捜索を行うための周辺捜索を行うためのものである場合は、表の周辺捜索の欄に四角を示す(t3〜t5)。周辺捜索を行うためのAF枠の設定は、追尾対象をロストしている期間(図7上方に矢印で示す)内に取得されるフレームにおいて行われる。また、その時刻におけるAF枠の位置の設定が、周辺捜索により取得された再出現予測位置に基づくものである場合は、表の出現予測位置の欄に四角を示す(t6)。
t1〜t2の間は、分割枠9枠がほぼ追尾対象をとらえており、実際に取得したフレームの画像を用いて追尾対象の検出を行い、追尾対象が検出された位置にAF枠を設定しており、約5mから近付いている追尾対象の動作を捕捉している。時刻t3では追尾対象の移動方向情報に基づいて、周辺捜索を行うためのAF枠を設定している。設定されたAF枠内の測距によって、追尾対象の予測位置に近い距離(約4.5m)と、追尾対象の予測位置より手前(約2m)に障害物であろう近距離被写体が存在する結果が得られている。
時刻t4、t5でも、追尾対象の移動方向の情報に基づいて、周辺捜索を行うためのAF枠を設定している。時刻t4では、設定されたAF枠内の測距によって、近距離側の測距結果(近距離被写体に基づく測距結果)のみが得られている。時刻t5では、AF枠の大部分は近距離被写体を抜けており、AF枠内の測距によって、再出現予測位置よりも十分に遠距離側(背景)の測距結果(無限遠)と、追尾対象の予測距離に近い結果(約4m)が得られる。このように、AF枠内に近距離被写体(柱402)と遠距離被写体(背景)の両方がそれぞれ出現したことにより、追尾対象が再出現するであろう再出現予測位置が取得できる。これにより出現予測位置にAF枠404を設定することを時刻t5とt6の間に決定することで、時刻t6ではAF枠404を出現予測位置に配しておくことができる。よって、時刻t6でフレームを取得すると、追尾対象の検出とAF枠内の測距を同時並行で行うこともできる。また、移動結果として追尾対象の光軸方向を含む移動結果に関する情報を取得しておくと、追尾対象を見失う前までの移動結果に基づく情報から追尾対象までの距離を予測することが可能である。よって、AF枠の設定と追尾対象の予測位置へのピント調節を同時に行うことができる。こうすることによって、予測位置が正確であれば、追尾対象を再度検出するよりも先に追尾対象に対してピントを合わせることができる。つまり、追尾対象が柱402から半分だけ出ているような状況であっても、被写体追尾AFにより追尾対象にピントを合わせることができるため、追尾対象の被写体が復帰した際、より高速に追尾対象の被写体に対してピントを合わせることができると考えられる。
次に、カメラCによる被写体追尾の動作を図8から図12までのフローチャートを用いて説明する。尚、フローチャートにおいて符号の頭につくSはステップを示す。
図8は本実施例における被写体追尾のAF処理を示すフローチャートである。S801でAF動作を開始した後、S802において撮像素子101からの画像を取り込み、焦点検出用の画像生成および生成した画像の記憶を行う。次のS803では焦点検出用の画像を用いて像面の位相差測距による焦点検出を9枠分個別に行い、検出結果を記憶する。Window1〜9の測距結果をそれぞれf1〜f9としている。測距結果として像面のデフォーカス量を用い、デフォーカス量を記憶してもよいが、本実施例ではデフォーカス量を被写体距離に換算したものを測距結果として用いるものとして説明を行う。S804では現在、追尾対象の被写体が特定されているかを判定するために、追尾対象特定中フラグがONか否かを判定し、フラグがONの場合には、S805へ進み、フラグがONでない場合には、S806へ進む。S806では、被写体の検出・または抽出処理を行い、S807では、追尾対象を特定したか否かを判定する。S807で人の顔など特定の被写体が追尾対象とされていると判定された場合には、S808に進み、追尾状態であることを保持するフラグとして追尾対象特定中フラグをONとしてS802に戻り、次のフレームの処理を行う。また追尾対象の被写体が特定できなければ、このフラグをONとしないままS802に戻り、次のフレーム処理を行う。
一方で、S804において、追尾対象特定中フラグがONである場合は、S805へ進み、被写体トラッキング処理を行う。この被写体トラッキング処理のフローチャートを図9に示す。
被写体トラッキング処理が開始されると、S901では追尾対象の被写体が画像中に存在するかサーチを行う。S902では、S901でのサーチ結果に基づいて、追尾対象と思われる被写体が見つかった否かを判定する。追尾対象と思われる被写体が見つかった場合はS903へ進み、追尾対象と思われる被写体が見つからなかった場合(ロストした場合)はS909へ進み、ロスト時処理を行う。S903では、追尾対象をロストした後に復帰した場合であるかを判定する。一旦追尾対象の被写体をロストした後に再度追尾対象が見つかったロスト後の復帰である場合には、S910へ進み、ロスト後復帰処理が行われる。ロストしたわけでなく、直前のフレームでも追尾対象を検出している場合には、S904へ進み、撮像範囲(画角)における追尾対象の位置を記憶し、次のS905では追尾対象のサイズを記憶する。次にS906において、前回のフレームでの追尾対象の位置と今回のフレームでの追尾対象の位置とを比較することで、xy平面での移動量を取得し、次のS907ではS906で取得した移動量を用いてトラッキング枠設定処理を行う。尚、被写体トラッキング処理のフローを図6に当てはめると、t2はS901〜908を進み、t3〜t5はS902でS909へ進み、t6はS903でS901へ進む。
S907のトラッキング枠設定処理の詳細について図11を用いて説明を行う。
図11は、トラッキング枠設定処理のフローチャートである。トラッキング枠設定処理が開始されると、まずS1101において次のフレームまでの移動量を予測する予測処理を行う。この移動量は、xy平面における移動量であり、S906で取得した移動量をもとに取得する。次のS1102では、S803において保持されている被写体の距離(f1〜f9)の履歴を用いて、カメラの光軸方向(z方向)における移動量を予測し、追尾対象がカメラに近づいているかを判定する。追尾対象がカメラに近づいている場合には、S1107へ進み、次のフレームでの追尾対象の大きさを推定計算して、AF枠のサイズ(面積)を大きくする。追尾対象がカメラに近づいていない場合には、S1103に進み、追尾対象がカメラから遠ざかっているかを判定する。追尾対象がカメラに遠ざかっている場合にはS1108に進み、AF枠サイズを小さくするように設定する。追尾対象とカメラとの距離が変わらない場合にはAF枠サイズも変わらないようにする。次のS1104においては、S1104までに決定したAF枠サイズの大きさから、枠数の最適化がおこなわれる。本実施例では、AFの分割枠サイズに上限と下限を設けて、例えば特定されている追尾対象の大きさによってAF枠の分割数を決定する。例えば水平方向において、分割枠のサイズは40pixから80pixと設定し、AF枠サイズが108pixの場合、このAF枠を54pixの2枠に分割する。同様に垂直方向も分割枠サイズの最適化を行う。次のS1105において、S1104までに設定した分割枠数、AF枠サイズを次のフレーム(次回)のAF枠の分割数、AF枠サイズとする設定を行う。加えて、S904及びS906に基づいて次フレームの追尾対象の位置を予測し、予測位置に次回のAF枠の位置を設定する。次のS1106では、今回フレームでのAF枠の分割枠それぞれの測距結果(f1〜f9)のうち、前回フレームでの予測結果に最も近い結果を得られているデフォーカス検出結果を用いてフォーカス駆動量の設定を行う。以上がトラッキング枠設定処理となる。
トラッキング枠設定処理が終了すると、図9に戻って、S908に進む。S908では、S907のS1106で設定したフォーカス駆動量に基づいて、AF動作を行う。このとき、同時にAE動作を行ってもよい。複数のフレームにまたがって追尾対象の被写体を検出してトラッキングしている期間は、これまでに説明した動作を繰り返すことになる。
ここでS902において追尾対象の被写体を見失った場合、S909へ移行して、ロスト時処理が行われる。このロスト時処理を図10を用いて説明する。ロスト時処理が始まると、まずS1001において前のフレームまでは追尾対象の被写体が検出できており、このフレームがロスト直後であるかどうかの判定が行われる。ロスト直後の場合、S1002に進んでロスト位置(前のフレームにおける追尾対象の位置)のx、y、z方向における位置をf_lostとして記憶し、ロスト状態であることを保持するロストフラグをONとして、S1003へ進む。
S1003では、今回のフレームのAF枠の各分割枠の測距結果から、ロストした位置(距離)よりも近距離側に被写体が存在するかどうかを判定する。AF枠内に近距離被写体が存在しない場合、S1006に進み、次のフレームにおけるAF枠(次回枠と呼ぶことがある)の位置を変更しないものとし、次のステップS1005で、フォーカス駆動も行わないように駆動量をゼロに設定する。
またS1003においてAF枠内に近距離被写体が存在していると判定された場合、S1004では次回枠を設定する。本実施例では、S1004における次回枠の設定は、今回のフレームの測距により、近距離被写体が存在すると判定された分割枠(Window)の移動方向側の端が、次回フレームのAF枠内に含まれるように次回フレームのAF枠位置を設定することで行う。言い換えると、t3において近距離被写体が存在すると判定された分割枠Window1、4、7の左端が、t4においてAF枠内に含まれるようにt4におけるAF枠を設定する。このとき、分割枠の移動方向の端は、次回フレームのAF枠のうち、移動方向と反対側の端に位置する分割枠(Window3、6、9)に含まれることが好ましく、次回フレームのAF枠のうち移動方向と反対側の端と重なることがさらに好ましい。そのうえで次のステップS1005で、フォーカス駆動を行わないように駆動量をゼロに設定する。
また、S1001において、ロスト直後でないつまり今回のフレームがロスト後の2フレーム目以降のフレームであると判定された場合には、S1007へ進み、まずロスト回数をカウントする。ロストカウントが所定以上の場合には、完全にロストしたことによる初期化を行うためのタイムアウト機能を実行するためである。次のステップS1008において追尾対象の移動予測方向に、ロストした追尾対象よりも近距離側に被写体があるかどうかの判定を行う。近距離被写体がある場合には、S1009へ進み、さらに追尾対象の移動予測方向にロストした追尾対象よりも遠距離側に被写体があるかどうかを判定する。S1008、S1009ともにロスト直前の距離(f_lostのz方向の位置)と毎フレームごとに設定した各AF枠から得られた測距結果をもとに判断を行う。追尾対象のロスト位置よりも近距離側、および遠距離側に被写体の存在が検出できるとS1010に進み、遠距離側の被写体と近距離側の被写体の間に(境界を含むように)次回フレームのAF枠を設定し、S1005に進む。この次回枠の設定は、上述した出現予測位置におけるAF枠の設定であり、t5のフレームを取得した際のt6のフレーム(次回フレーム)のAF枠の設定である。
追尾対象のロスト位置よりも遠距離側、又は近距離側のどちらか一方でもAF枠検出結果から被写体の存在を検出できない場合には、S1011へ移行して、ロスト回数が所定以上かを判定する。ロスト回数が所定の回数以上である場合(例えば20回以上連続して被写体が見つからない場合)、S1013に進み、タイムアウト処理として、被写体トラッキング状態を保持する、追尾対象特定中フラグをOFFにし、トラッキングを終了する。その後次のステップS1014においてAF枠をデフォルトの位置に設定する。本実施例では、デフォルトの位置として画角中央に次回枠設定を行う。またステップS1011においてロスト回数が所定回数より少ないと判定された場合、S1012において次回フレームにおけるAF枠の設定を行う。この次回枠の設定は、上述した周辺捜索によるAF枠の設定であり、t3、t4フレームを取得した際の次回フレームのAF枠の設定である。S1012による次回枠の設定は、移動予測設定であり、追尾対象がロスト前の追尾対象の移動方向へ動いているものとして、次回フレームのAF枠を前フレームのAF枠よりも移動方向へ移動させた位置として設定するものである。このような次回枠の移動により、次のフレームでも再度追尾対象をロスト中であれば、被写体の移動方向に追尾対象のロスト位置よりも近距離側、遠距離側の両方に被写体が見つかるまで、AF枠サーチするような動作となる。S1006、S1004、S1010、S1012、S1014において次回枠が設定されると、S1005へ進む。S1005ではフォーカス駆動量をゼロに設定する。つまり、ロスト時はフォーカスレンズの駆動は行わない。ロスト時処理が終了すると、図9の被写体トラッキング処理のフローに戻り、S908へ進む。S1005でフォーカス駆動量をゼロに設定しているため、S909からS908に進む場合はS908にてフォーカス駆動は行われず、被写体トラッキング処理として次のAF検出枠設定が行われてS802に戻り、次回フレームの処理が行われる。
被写体トラッキング処理のS903において、ロスト後の復帰であると判定された場合、S910へ進み、ロスト後の再復帰処理が行われる。ロスト後の再復帰処理について図12を用いて説明をする。図12は、ロスト後の再復帰処理のフローチャートである。ロスト後の再復帰処理が始まると、最初のステップS1201では今回フレームでのAF検出結果および追尾対象のxy平面での位置がロスト位置及びロスト時からの時間に基づいて予測される、予測範囲内であるかどうかを判定する。復帰した追尾対象が、予測範囲内に存在する場合は、S1202においてロスト状態であることを保持するロストフラグをOFFとしてS1203に進み、再度トラッキング状態に入る。S1203〜S1206は、図9のS904〜907と同じステップであるため、説明を省略する。
一方で、ステップS1201において復帰した追尾対象が予測範囲外に位置する場合には、ステップS1207へ進み、移動量の再予測処理を行う。この処理は、予測処理のリセットとなり、今回のフレームでは正しい予測結果がえられないので追尾対象を最初に検出した時と同様の処理(S807、S808と同様の処理)となる。よって次のステップS1208では追尾対象の検出位置に次回枠を設定し、S1209では今回フレームでの測距結果に基づいてフォーカス駆動量を設定し、ロスト後再復帰処理の終了となる。
(変形例)
上述の実施例では、焦点検出装置を備える撮像装置であるレンズ一体型のカメラに本発明を適用した場合の一実施例について説明をした。しかしながら、本発明にかかる焦点検出装置は撮像センサの画像信号を用いて焦点検出を行う任意の電子機器に適用可能である。電子機器としては、レンズ交換式のデジタルカメラや、ビデオカメラの他、カメラを備えた携帯電話機、パーソナルコンピュータ、ゲーム機、家電機器などが例として挙げられる。
また、上述の実施例では、追尾対象が検出されている間も追尾予測を行い、追尾予測に基づいて次回枠の設定を行ったが、追尾対象が検出されている間は追尾予測を行わず、追尾対象の検出結果に基づいてAF枠を設定してもよい。予測ではなく実測で追尾対象に対してAF枠を設定するため、より正確に追尾対象に対してAF枠を設定することができる。一方、フレームの取得、及び追尾対象の検出を行ってからAF枠を設定するため、追尾予測でAF枠を設定するよりもAF枠の設定まで時間が必要である。
また、上述の実施例では、被写体までの距離を用いて近距離被写体と遠距離被写体の有無を判定したが、デフォーカス量を用いて近距離被写体と遠距離被写体をの有無を判定してもよい。また、図10に示したロスト時処理のフローにおいて、S1006では次のフレームにおけるAF枠の位置を変更しないものとしたが、AF枠の位置を変更してもよい。例えば、近距離被写体がないため、追尾対象がフレームアウトしたとみなし、AF枠を画角の境界を含む境界部に配してもよいし、撮影者が撮像装置の画角を移動させることを期待して画角の中央に移動してもよい。
また、上述の実施例では、被写体抽出等を回路により実行したが、ソフトウェアで実行してもよい。上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する部(例えば、ASIC)によっても実現可能である。
以上説明した各実施例は代表的な例にすぎず、本発明の実施に際しては、各実施例に対して種々の変形や変更が可能である。