本発明の特徴は、主被写体に対する自動焦点調節に際して、1つの被写体の検出時と複数の被写体の検出時とで主被写体の距離変化の有無の判別方法を切り替え、距離変化無し有りの判別に基づき主被写体への追従駆動動作を行ったり制限したりすることにある。この考え方に基づき、本発明の焦点調節装置及び方法は、それぞれ、課題を解決するための手段のところで述べた様な基本的な構成を有する。典型的には、人物の顔または体の部位などである主被写体の像の大きさの変化に基づいて主被写体の光軸方向の距離変化の有無が判別される。
以下、本発明の実施例を説明する。図1は、本発明の実施例である自動焦点調節装置を含むビデオカメラ(撮像装置)の構成を示す。以下の実施例では、ビデオカメラについて説明するが、本発明はデジタルスチルカメラ等の他の撮像装置にも適用できる。
<第1の実施例>
図1において、101は第1固定レンズ、102は光軸方向に移動して変倍を行う変倍レンズ、103は絞りである。また、104は第2固定レンズ、105は変倍に伴う焦点面の移動を補正する機能とフォーカシングの機能とを兼ね備えたフォーカスコンペンセータレンズ(本明細書では、フォーカスレンズともいう)である。第1固定レンズ101、変倍レンズ102、絞り103、第2固定レンズ104、及びフォーカスレンズ105により被写体からの光を結像するための撮像光学系が構成される。106は、CCDセンサやCMOSセンサにより構成される光電変換素子としての撮像素子である。撮像素子106は、結像された光を光電変換して電気信号に変換する。107は、撮像素子106の出力をサンプリングし、ゲイン調整するCDS/AGC回路である。108はカメラ信号処理回路であり、CDS/AGC回路107からの出力信号に対して各種の画像処理を施し、映像信号を生成する。109はLCD等により構成されるモニタであり、カメラ信号処理回路108からの映像信号を表示する。115は記録部であり、カメラ信号処理回路108からの映像信号を磁気テープ、光ディスク、半導体メモリ等の記録媒体に記録する。
110は、変倍レンズ102を移動させるためのズーム駆動源である。111は、フォーカスレンズ105を移動させるためのフォーカシング駆動源である。ズーム駆動源110及びフォーカシング駆動源111は、夫々、ステッピングモータ、DCモータ、振動型モータ、及びボイスコイルモータ等のアクチュエータにより構成される。112は、CDS/AGC回路107からの全画素の出力信号のうち焦点検出に用いられる領域(焦点検出領域)の信号のみを通すAFゲートである。AF信号処理回路113は、AFゲート112を通過した信号から高周波成分を抽出してAF評価値を生成する。つまり、AF信号処理回路113は、電気信号の映像信号に対して設定された焦点検出領域からAF評価値を生成する生成手段を構成する。AF評価値は、制御手段であるカメラ/AFマイコン114に出力される。AF評価値は、撮像素子106からの出力信号に基づいて生成される映像の鮮鋭度(コントラスト状態)を表すものであるが、鮮鋭度は撮像光学系の焦点状態(合焦の程度)によって変化するので、結果的に撮像光学系の焦点状態を表す信号となる。制御手段としてのカメラ/AFマイコン114は、ビデオカメラ全体の動作の制御を司るとともに、AF評価値に基づいて、フォーカシング駆動源111を制御してフォーカスレンズ105を移動させ焦点調節を行うAF制御をも行う。
本実施例の顔検出部116は、画像信号に対して公知の顔検出処理を施し、撮影画面内の人物の顔領域を検出する。すなわち、顔検出部116は、電気信号から予め定められた被写体(ここでは顔)を検出する検出手段を構成する。その検出結果はカメラ/AFマイコン114に送信される。カメラ/AFマイコン114は、上記検出結果に基づき、撮影画面内の顔領域を含む位置に焦点検出領域を設定するようにAFゲート112へ情報を送信する。顔検出処理としては、画像データで表される各画素の階調色から肌色領域を抽出し、予め用意する顔の輪郭プレートとのマッチング度で顔を検出する方法や、周知のパターン認識技術を用いて、目、鼻、口等の顔の特徴点を抽出することで顔検出を行う方法等がある。
さらに、顔検出部116では、顔の信頼度と、横顔の信頼度の算出を行っている。顔の信頼度の算出は、例えば、顔の輪郭プレートとのマッチング度に基づいて算出され、マッチング度が高い順に5段階で表現される。また、横顔らしさを表す信頼度の算出は、図13に示すように、検出されている顔の両目の中心位置(図中の点線)を基準に顔検出枠を左右に分割するように領域を抽出する。そして、左右領域に含まれる肌色領域を抽出し、肌色領域の画素数をカウントすることで面積を算出する。横顔らしさを表す信頼度は、左右の画面に含まれる肌色領域の比を用いて算出される。左右の肌色の領域が同じ比率であった場合は、横顔の可能性が低いとして、横顔らしさを表す信頼度を低く設定し、比率が大きく異なる場合は、横顔の可能性が高いとして、信頼度を高く設定する。本実施例では、この比率に応じで信頼度を5段階に設定する。
117は絞り駆動源であり、絞り103を駆動させるためのアクチュエータ及びそのドライバを含む。CDS/AGC回路107によって読み出された信号からは、画面内の測光枠の輝度値を取得するため、輝度情報検波・演算回路118により測光値が取得され、測光した測光値が演算により正規化される。そして、カメラ/AFマイコン114で、測光値と適正な露出が得られるように設定された目標値との差分が算出される。その後、算出した差分から絞りの補正駆動量を算出し、カメラ/AFマイコン114により絞り駆動源117の駆動が制御される。
次に、カメラ/AFマイコン114で行われるAF制御について、図2を用いて説明する。このAF制御は、カメラ/AFマイコン114内に格納されたコンピュータプログラムに従って実行される。Step201は処理の開始を示している。Step202で微小駆動動作を行い、合焦か、合焦でないならどちらの方向に合焦点があるかを判別する。細かい動作の説明は後述する。Step203においては、Step202で合焦と判定された場合はStep209へ行き合焦処理を行い、Step202で合焦と判定されなかった場合はStep204へ行く。Step204においては、Step202で方向判別ができている場合はStep205へ行き山登り駆動動作を行い、Step202で方向判別ができていない場合はStep202へ戻り微小駆動動作を継続する。Step205では、AF評価値が大きくなる方向へ高速でレンズを駆動させる山登り駆動をする。細かい動作の説明は後述する。
Step206においては、Step205でAF評価値のピークを越えたと判定された場合はStep207へ行き、Step206でAF評価値のピークを越えたと判定されない場合はStep205へ戻り山登り駆動を継続する。Step207では、山登り駆動中のAF評価値がピークとなるレンズ位置にレンズを戻す。Step208においては、Step207でピークのレンズ位置に戻った場合はStep202へ戻り再び微小駆動動作を行い、Step207でピークのレンズ位置に戻っていない場合はStep207へ戻りピークのレンズ位置に戻す動作を継続する。
次に、Step209からの合焦動作について説明する。Step209ではAF評価値を保持する。Step210では、最新のAF評価値を取得する。Step211では、Step209で保持したAF評価値とStep210で新たに取得したAF評価値とを比較し、所定レベル以上差があれば再起動と判定し、Step202へ行き微小駆動動作を再開する。Step211で再起動と判定されていなければStep212へ行く。Step212では、レンズを停止しStep210へ戻り再起動判定を継続する。
次に、微小駆動動作について図3で説明する。Step301は処理の開始を示している。Step302では、最新の顔検出位置/大きさを取得すると共に、それらの情報に基づいて焦点検出領域であるAF枠を設定し、AF評価値を取得する。Step303では、取得された顔サイズから被写体の移動を判定する処理を行う。この処理については図7を用いて説明する。Step304では、被写体の至近または無限側の方向への移動があったかを判定し、被写体の移動があった場合はStep305へ進み、そうでなければStep306へ進む。本実施例では、変化量を監視する被写体像の大きさは、検出手段である顔検出部116により得られる人物の顔(体の他の部位などであってもよい)の像の大きさである。よって、後述する様に、顔サイズの変化量が所定量以内である場合には被写体の距離変化がないと判断され、前記変化量が所定量より大きい場合には被写体の距離変化があると判断される。そして、カメラ/AFマイコン114は、被写体の距離変化がないと判断されたときは、追従制御手段による追従制御を制限して焦点調節を行い、被写体の距離変化があると判断されたときは、追従制御手段による追従制御を許可して焦点調節を行う。こうした切り替えが上記Step304で行われる。
Step305では、移動判定の結果が近づきか遠ざかりかを判定する。近づきの場合は、Step314へ進み至近方向への山登りを決定し、Step313へ進み処理を終了する。そうでなければStep315へ進み無限方向への山登りを決定し、Step313へ進み処理を終了する。被写体の移動方向に応じて山登りの方向を切り替える駆動が、被写体の追従駆動制御であり、追従駆動を行うことにより、AFの応答性と精度が向上する。この機能を実行するために、制御手段のカメラ/AFマイコン114は、検出手段である顔検出部116による検出結果に基づき被写体の距離変化の有無を判別する判別手段と、判別結果に応じてフォーカスレンズを被写体の距離変化に追従させる追従制御手段を含む。この様に、判別手段は、被写体像の大きさの変化量に所定量より大きい増加があった場合に被写体の近づきがあると判別し、制御手段は、フォーカスレンズを至近側に駆動させ被写体を追従する。他方、判別手段は、被写体像の大きさの変化量に所定量より大きい減少があった場合に被写体の遠ざかりがあると判別し、制御手段は、フォーカスレンズを無限側に駆動させ被写体を追従する。本実施例では、制御手段は、検出手段が検出した被写体像の大きさの変化量が所定量より大きい場合には被写体像の光軸方向の距離変化に対応させてフォーカスレンズの山登り駆動動作を行う。検出手段が検出した被写体像の大きさの変化量が所定量より小さい場合にはフォーカスレンズの微小駆動動作を行う。
続いて、Step306においては、Step302で取り込んだAF評価値が前回のAF評価値より大きければStep307へ進み、Step302で取り込んだAF評価値が前回のAF評価値より小さければStep308へ進む。Step307では、前回の順方向に所定量フォーカスレンズを駆動する。一方、Step308では前回の逆方向に所定量フォーカスレンズを駆動する。上記レンズ動作の時間経過を示したのが図4である。ここで、Aの間にCCD(撮像素子)に蓄積された電荷に対するAF評価値AがTAで取り込まれ、Bの間にCCDに蓄積された電荷に対するAF評価値BがTBで取り込まれる。TBでは、AF評価値A、Bを比較し、A<Bであればそのまま順方向に移動し、一方、A>Bであれば逆方向にする。Step309においては、所定回数連続して合焦方向と判断される方向が同一であればStep310へ進み、所定回数連続して同一方向に進んでいなければStep311へ進む。Step311においては、所定回数フォーカスレンズが所定範囲で往復を繰り返していればStep312へ進み、所定時間フォーカスレンズが所定範囲にいなければStep313へ進み処理を終了する。この結果、図2のStep202の微小駆動動作に戻ることになる。Step310では、方向判別できたとして、Step313へ進み、処理を終了し図2のStep205の山登り駆動へ移行する。Step312では、合焦判別できたとして処理を終了し図2のStep210以降の再起動判定ルーチンへ移行する。
次に、山登り駆動動作について図5を用いて説明する。Step501は処理の開始を示している。Step502では、最新の顔検出位置/大きさを取得し、その情報に基づいてAF枠(焦点検出領域)を設定し、AF評価値を取得する。Step503においては、Step502で取り込んだAF評価値が前回のAF評価値より大きければStep504へ進み、Step502で取り込んだAF評価値が前回のAF評価値より小さければStep505へ進む。Step504では前回の順方向に所定の速度でフォーカスレンズを駆動し、Step508へ進み処理を終了する。一方、Step505においては、AF評価値がピークを越えて減っていればStep506へ進みピークを越えたとして、Step508へ進み処理を終了し、図2のStep206などを経てStep202の微小駆動へ移行する。Step505で、AF評価値がピークを越えて減っていなければStep507へ進み、前回と逆方向に所定の速度でフォーカスレンズを駆動し、Step508へ進む。
上記レンズ動作を説明したのが図6である。ここで、Aの場合は、AF評価値がピークを越えて減少しているので、合焦点があるとして山登り駆動動作を終了し、微小駆動動作に移行する。一方、Bの場合は、AF評価値がピーク無しで減少しているので、方向を間違えたものとして反転し、山登り駆動動作を続ける。一定時間あたりの移動量、つまりは駆動速度は前記の微小駆動の駆動速度よりも大きな値となる。顔検出の大きさが連続的に増加している場合には、山登り駆動時の駆動速度を大きく設定することで、AFの応答性を向上させることができる。以上説明したように、カメラ/AFマイコン114は、再起動判定→微小駆動→山登り駆動→微小駆動→再起動判定を繰り返しながらフォーカスレンズを移動させAF評価値を大きくするように、制御を行っている。
次に、被写体の至近または無限方向の移動判定処理について、図7〜図13を用いて説明する。まず、図3のStep303の移動判定処理を図7を用いて説明する。Step701は移動判定処理の開始を示している。Step702では、検出された顔サイズの平均を算出する処理を行う。検出された顔サイズはカメラ/AFマイコン内のメモリに蓄積され、移動平均法を用いて蓄積個数が10ずつの平均が算出される。平均された顔サイズは、FaceAveSizeに格納することとする。このFaceAveSizeは20個の配列を持ち、平均値が算出される毎にFaceAveSize[0]〜[19]に履歴が保存される。ここでは、FaceAveSize[0]に最新の平均値を格納することとする。
Step703では、移動判定フラグの有無を判定する。後述の処理で決定される移動判定フラグがSETされている場合は、Step704に遷移する。そうでない場合は、Step707に遷移する。Step707では、Step702において算出した平均顔サイズFaceAveSizeが安定している値か否かを判断する。この処理の詳細は図8を用いて後述する。Step708では、Step707で決定される安定フラグを判定し、安定フラグがSETの場合はStep709に遷移し、そうでない場合はStep720に遷移し、処理を終了する。
ここで、安定フラグがCLEARの場合は、被写体の状態が安定していないため、移動判定を行えないことを意味している。この場合、図3のStep304を経てStep306以降に進むことになる。Step709では、顔基準サイズが設定されているかの判定を行う。顔基準サイズFaceBaseSizeとは、移動判定を行う際の基準となる顔のサイズのことである。顔基準サイズFaceBaseSizeが0の場合は、値が設定されていないため、Step719に遷移し、Step719において、FaceBaseSizeにFaceAveSize[0]を代入する。この場合も、図3のStep304を経てStep306以降に進むことになる。
顔基準サイズFaceBaseSizeが0でない場合は、Step710に遷移する。Step710では、移動判定閾値設定処理を行う。この処理は、撮影パラメータと被写体の状態に応じて、移動判定に用いる顔のサイズ変化の閾値を設定する処理である。この処理の詳細については、図9を用いて後述する。続いて、Step711では、顔基準サイズFaseBaceSizeと現在の顔サイズFaceAveSize[0]との大きさの比較を行う。現在の顔サイズが小さい場合は、遠ざかりの可能性があるため、Step712に遷移する。そうでない場合は、近づきの可能性があるので、Step713に遷移する。Step712では、遠ざかりの判定を行う。顔基準サイズFaseBaceSizeと現在の顔サイズFaceAveSize[0]との差がTHfar以上であれば、被写体が遠ざかったと判定し、Step717に遷移する。Step712でTHfarを越えなかった場合は、Step714に遷移する。Step717では、被写体が遠ざかった事を意味する移動判定フラグの遠ざかりフラグをSETした後、Step720に遷移し処理を終了する。この場合、図3のStep304を経てStep305以降に進むことになる。Step713は、近づきの判定を行う。顔基準サイズFaseBaceSizeと現在の顔サイズFaceAveSize[0]との差がTHnear以上であれば、被写体が近づいたと判定し、Step718に遷移する。Step713でTHnearを越えなかった場合は、Step714に遷移する。Step718では、被写体が近づいた事を意味する移動判定フラグの近づきフラグをSETした後、Step720に遷移し処理を終了する。この場合も、図3のStep304を経てStep305以降に進むことになる。
Step714では、顔基準サイズが設定され且つ安定状態の時に、移動判定を何回繰り返しているかのタイマーFaceJudgeTimerをインクリメントし、Step715に遷移する。Step715では、FaceJudgeTimerがTimerTH以下かの判定を行う。この処理は、移動判定を約2秒間継続した状態が続いたにも関わらず、被写体の移動が無かった場合は判定処理を初期化する目的の処理である。よって、TimerTHには、2秒間に相当する値である120を設定し、この値を越えたかの判定を行う。本実施例では、1秒間に60回の処理を行うシステムを想定しているので、2秒間に相当する値は120である。FaceJudgeTimerがTimerTHを越えている場合は、Step716に遷移し初期化処理を行う、そうでない場合は、Step720に遷移し処理を終了する。この場合、Step702に戻って移動判定を継続する。Step716ではFaceJudgeTimerを0に初期化し、Step705に遷移する。Step705では、FaseBaceSizeを0に初期化し、Step706に遷移する。Step706では、移動判定フラグをクリアし初期化を行う。上記の初期化処理の終了後、Step720に遷移し、処理を終了する。この場合、図3のStep304を経てStep306以降に進むことになる。
Step703で移動判定フラグがSETされている場合は、被写体の移動が終了したか否かを判定するために、Step704に遷移する。Step704では、移動の終了判定の為に、FaseAveSizeの比較を行う。現在のFaseAveSize[0]と一つ前の履歴であるFaseAveSize[1]との差を求めるため、FaseAveSizeDiff=FaseAveSize[0]-FaseAveSize[1]の計算を行い、Step704’に遷移する。Step704’では、被写体が近づきの場合は、顔サイズが小さくなる(FaseAveSizeDiffが負の値)場合に移動が終了したと判定する。被写体が遠ざかりの場合は、顔サイズが大きくなる(FaseAveSizeDiffが正の値)場合に移動が終了したと判定する。被写体の移動が終了した場合は、Step705に移動し、初期化処理を行う。そうでない場合は、Step720に遷移し、処理を終了する。この場合、Step702に戻って移動判定を継続する。
続いて、図7のStep707の被写体安定判定処理を図8を用いて説明する。図8のStep801は処理の開始を示している。次にStep802において、カメラ/AFマイコン114は平均顔サイズの2次微分値を算出する。以下に2次微分値の具体的な算出方法を示す。まず、カメラ/AFマイコン114は、図7のStep702で算出した平均顔サイズと所定時間前に算出した平均顔サイズとの差を計算することで、1次微分値を算出し、カメラ/AFマイコン114内のメモリに記録する。次に、カメラ/AFマイコン114は、メモリに記録されている該1次微分値と所定時間前に算出してメモリに記録した1次微分値との間の変化量を計算することで2次微分値を算出する。算出した2次微分値は、所定時間前の平均顔サイズの1次微分値に対して今回算出した平均顔サイズの1次微分値がどれだけ変化しているかを示す値である。次にStep803において、カメラ/AFマイコン114はStep802で算出した2次微分値が閾値以下であるか否かを判断する。算出した2次微分値が閾値以下である場合は、所定時間前の平均顔サイズの1次微分値に対して今回算出した平均顔サイズの1次微分値の変化量が小さいため、被写体は安定していると判断してStep804へ進む。一方、算出した2次微分値が閾値より大きい場合は、所定時間前の平均顔サイズの1次微分値に対して今回算出した平均顔サイズの1次微分値の変化量が大きいため、被写体は安定していないと判断してStep807へ進む。
本実施例において、上記閾値は経験的に平均顔サイズの10%の値とする。また、上記所定時間前とは、2次微分値が安定しているか否かを前記閾値によって判断できる値として15フレーム前とする。ただし、本実施例において、設定した閾値と所定時間は、システムによって自由に変更することができる値である。次にStep804において、カメラ/AFマイコン114はStableTimerをカウントアップしStep805へ進む。ただし、StableTimerは、算出された平均顔サイズが連続して安定している期間をカウントする変数である。従って、StableTimerが所定期間(以降、StableTHとする)を超えた以降の平均顔サイズは安定している平均顔サイズであると判断することができる。ここで、StableTHは本実施例においては15フレームとする。また、StableTHは、平均顔サイズが連続して安定している期間をカウントする変数であるため、2次微分値を算出するときに用いられる所定時間(本実施例においては15フレーム)以下の期間である必要がある。Step807では、平均顔サイズの2次微分値が閾値より大きい値であるので、カメラ/AFマイコン114はStableTimerをクリア(本実施例では0)する。
次に、Step805において、カメラ/AFマイコン114はStableTimerがStableTH未満であるか否かを判断し、StableTH未満である場合はStep806に進み、StableTH以上である場合はStep808に進む。Step806においては、カメラ/AFマイコン114は、Step702において算出した平均顔サイズは、StableTimerがStableTHを越えるまでは連続して安定していないと判断し、安定フラグをOFFにして図8の処理を終了する。一方、Step808においては、カメラ/AFマイコン114は、Step702において算出した平均顔サイズは、StableTimerがStableTH以上の期間連続して安定している値であると判断し、安定フラグをONにして図8の処理を終了する。
以上の図8の処理においては、平均顔サイズによって被写体が安定しているか否かを判断しているが、顔や人体などの位置に関して2次微分値を算出して、安定しているか否かを判断する方法でも良い。また、目や口が検出できるシステムである場合は、両目(又は目と口)の間隔に関して2次微分値を算出して、安定しているか否かを判断する方法でも良い。さらには、両目の間隔に対する目と口の間隔の比率を算出し、算出した比率に関して2次微分値を算出して安定しているか否かを判断する方法でも良い。要は、予め定めた被写体の動きの安定度を判断できる情報であれば、所定部位のサイズ、複数の部位間の距離、複数のサイズや距離の間の比率についての相対的情報など、被写体のどの様な形状的情報であってもよい。
続いて、図7のStep710の移動判定閾値設定処理を図9を用いて説明する。図9のStep901は処理の開始を示している。Step902においては、変倍レンズ(ズームレンズ)102のレンズ位置を取得する処理である。変倍レンズの駆動源がステップモーターであるとした場合は、そのステップ数であり、レンズがテレ側、ワイド側のどの位置にいるかを判断するために用いる。続いて、Step903においては、図10に示すズームレンズ位置と基準移動判定閾値Thの関係グラフから、現在のズーム位置に応じた基準移動判定閾値Thを取得する。図10は、縦軸を顔サイズの変化の割合(%)、横軸をズームレンズ位置としている。このズームレンズ位置と基準移動判定閾値Thとの関係は、絞り値Fbaseを一定にした状態で、各ズームレンズ位置においての被写界深度の前端と顔サイズの変化量の関係から算出したグラフである。
予め定めた被写体にピントが合っている状態で被写体が移動した場合、被写界深度を超えた時点から画面上にボケが認識され始めるため、基準移動判定閾値は被写界深度よりも小さい値を設定する。これにより、被写体がボケ始める前に、移動の有無を判定し、フォーカスレンズを駆動することが可能になり、被写体への追従性能が向上する。実際の基準移動判定閾値Thの算出の際は、各ズームレンズ位置に応じた基準移動判定閾値Thのテーブルをカメラ/AFマイコン114内に持ち、ズームレンズ位置に対応する閾値Thを決定する。
被写界深度の算出は、以下の式1を用いて算出する。被写体の距離をs、被写界深度の前端・後端をそれぞれDnとDfすると以下の通りとなる。
Dn=s(H-f)/(H+s-2f)・・・式1a
Df=s(H-f)/(H-s)・・・式1b
過焦点距離Hは、レンズの焦点距離をf、レンズの絞り値をN、許容錯乱円の直径をcとすると式2のようになる。
H=f*f/N*c・・・式2
続いてStep904において、現在の絞り値Fnoの取得を行う。絞り値は絞り103の駆動量からF値を取得する。Step905では、基準移動判定閾値に対して絞りに応じた補正を行う。被写界深度は、絞り値に応じて変化するため、取得した現在の絞り値Fnoと図10の基準移動判定閾値を算出した際の絞り値Fbaseを比較する。式3に基づいて補正後の移動判定閾値Th2を算出する。
Th2=(現在の絞り値Fno/基準絞り値Fbase)*基準移動判定閾値Th・・・式3
この様に、前記閾値ないし所定量は、被写界深度により決定され、被写体が被写界深度の分を移動した場合の被写体像の大きさの変化量よりも小さい量に設定されることを特徴としている。
続いて、Step906において、基準顔サイズFaceBaseSizeの取得を行う。Step907では、基準顔サイズFaceBaseSizeに応じて基準移動判定閾値の補正を行う。図11は基準顔サイズと補正係数Kの関係グラフであり、縦軸を顔サイズの変化の割合(%)、横軸を基準顔サイズとしている。基準顔サイズFaceBaseSizeが大きくなると、検出される顔サイズのバラツキが大きくなるため、補正を行う必要がある。取得した基準顔サイズと補正係数Kのグラフより、式4に基づいて補正後の移動判定閾値Th3を算出する。
Th3=補正係数K*移動判定閾値Th2・・・式4
この様に、被写体状況とは、上記検出手段により検出された被写体像の大きさであり、前記閾値ないし所定量は、被写体像の大きさに応じて変更され、被写体像の大きさの基準値との差に応じて変更される。
続いてStep908において、顔検出部116の信号から顔信頼度の取得を行う。前述の通り、顔の信頼度は1〜5の5段階で評価され、評価5が信頼度が一番高く、評価1が信頼度が一番低い。Step909では、顔信頼度を用いて、移動判定閾値の補正を行う。信頼度が低い場合は、検出された顔サイズのバラツキが大きくなることや、少ないとしても誤検出している可能性があるため、閾値補正を行い閾値を高く設定する必要がある。本実施例では、顔信頼度が3以下の場合には、補正係数K’に1.5を設定し、取得した顔信頼度を用いて式5に基づいて補正後の移動判定閾値Th4を算出する。
Th4=補正係数K’*移動判定閾値Th3・・・式5
この様に、被写体状況とは、上記検出手段により検出された顔の確からしさを表す信頼度であり、前記閾値ないし所定量は、顔の確からしさを表す信頼度に応じて変更され、信頼度が低い場合は、大きい量に変更される。
次にStep910において、顔検出部116の信号から横顔らしさの信頼度の取得を行う。図13を用いて前述した通り、横顔らしさの信頼度は1〜5の5段階で評価され、評価5が横顔の可能性が一番高く、評価1が横顔の可能性が一番低い。Step911では、横顔らしさの信頼度を用いて、移動判定閾値の補正を行う。横顔の信頼度が高い場合は、検出された顔サイズのバラツキが大きくなることや、少ないとしても誤検出している可能性があるため、閾値の補正を行い閾値を高く設定する必要がある。本実施例では、横顔らしさの信頼度が3以上の場合には、補正係数K’’に1.5を設定し、取得した横顔らしさの信頼度を用いて式6に基づいて補正後の移動判定閾値Th5を算出する。
Th5=補正係数K’’*移動判定閾値Th4・・・式6
この様に、被写体状況とは、上記検出手段により検出された顔が横を向いているかを表す信頼度であり、前記閾値ないし所定量は、顔が横を向いているかを表す信頼度に応じて変更され、信頼度が高い場合は、大きい量に変更される。
続いてStep912において、カメラ/AFマイコン114内の情報から撮影モードの取得を行う。一般的な撮像装置は撮影シーンに最適な撮影パラメータを設定するために、図12に示すような撮影モードを複数持っている。Step913では、撮影モードに応じて移動判定閾値の補正を行う。図12は撮影モードと補正係数K’’’の関係を示した表である。被写体の動きが多いと想定される撮影モードでは、閾値を低く設定するように係数K’’’を1以下の値にし、オートフォーカスの応答性を高くしている。また、被写体の動きが少ないと想定される撮影モードでは、移動判定の閾値を高くするように、係数K’’’の値を高く設定し、オートフォーカスの安定性を重視する。取得した撮影モードと、図12から決定される補正係数K’’’より、式7に基づいて補正後の移動判定閾値Th6を算出する。
Th6=補正係数K’’’*移動判定閾値Th5・・・式7
この様に、撮影パラメータとは、撮影モードであり、前記閾値ないし所定量は、撮影モードに応じて変更され、撮影モードが動きの多い被写体を撮影するモードに設定されている場合は、大きい量に変更され、撮影モードが動きの少ない被写体を撮影するモードに設定されている場合は、小さい量に変更される。
続いてStep914では、合焦度合の取得を行う。合焦度合の算出方法は、評価枠内のAF評価値のピークホールドした値を、各ラインの輝度レベルの最大値と最小値の差で割った値である。この合焦度合は0〜1で表され、合焦している被写体の場合、AF評価値のピークホールドと輝度レベルの差が同じ値になる傾向があるため、合焦度合は1に近づく。合焦度合が低い被写体は、ボケが発生している可能性が高く、顔サイズの信頼性が低くなることがあるため、移動判定の閾値を高くなるように設定する。例えば、取得した合焦度合を用いて、合焦度合が0.5以下である場合に、補正係数K’’’’を1.5と設定し、式8に基づいて補正後の移動判定閾値Th7を算出する。
Th7=補正係数K’’’’*移動判定閾値Th6・・・式8
この様に、撮影パラメータとは、AF評価値のレベルの状態とフォーカスレンズの駆動状態から推定される合焦度合であり、前記閾値ないし所定量は、合焦度合に応じて変更され、合焦度合が低い場合は、大きい量に変更される。なお、これらの補正係数K’、K’’、K’’’、K’’’’はカメラに応じて十分な測定を行ったうえで決定するものであり、この値に限定されるものではない。
続いてStep916では、Step915で算出された移動判定閾値Th7にリミットを設定する。上記補正方法の場合、補正の積み重ねにより、移動判定閾値が基準移動判定閾値の数倍になってしまい、移動判定の閾値としては適当でない場合がある。よって、閾値の上限を設定する。移動判定閾値Th7が、基準移動判定閾値Thの2倍以上である場合は、Step918へ遷移し、そうでない場合はStep917に遷移する。本実施例では、移動判定の精度を維持するためにリミットを2倍に設定したが、この値は、十分な測定を行い誤判定が軽減される値を任意に設定することが可能である。Step917においては、移動判定閾値THfaceにTh7を代入し、Step919に遷移する。Step918では、移動判定閾値が大き過ぎるため、閾値にリミットを設定する。最終的な移動判定閾値THfaceには基準移動判定閾値Thを2倍したものを代入し、Step919に遷移する。
Step919では、移動判定閾値THfaceを基に、遠ざかり判定と近づき判定の閾値を変更する。顔検出は目の間隔を基に顔サイズを決定している手法がある。人物が横を向いた場合に、目の間隔が小さくなることにより、被写体までの距離が変化してないにも関わらず、検出された顔サイズが小さくなる。そのため、被写体の遠ざかり検出を行ってしまう事がある。そこで、近づき検出閾値THnearよりも、遠ざかり検出閾値THfarを大きく設定することで、横顔撮影時のサイズ変化による誤判定を低減する。本実施例では、遠ざかり検出の閾値を1.5倍に大きくしているが、この値は、十分な測定を行い誤判定が軽減される値を設定することとする。この様に、被写体状況とは、上記判別の結果であり、前記閾値ないし所定量は、判別の結果が遠ざかりである場合と近づきである場合で異なる値が設定され、遠ざかりである場合は、近づきである場合よりも大きい量が設定される。
以上が移動判定閾値設定の処理フローであり、近づき検出閾値THnear及び遠ざかり検出閾値THfarを算出する処理である。この処理の際に使用した係数や式は一例であり、これに限定するものではない。閾値の変更は、必ずしも上述の全ての変更を含む必要はなく、少なくとも1つの変更を含むものでもよい。
以上のように、上記実施例では、顔検出を用いて被写体の人物にAF評価値でピント合わせを行う。これと共に、判別手段が顔の大きさの変化を監視し、被写体が安定している状態の顔サイズを基準とすることと、撮影パラメータと被写体状況に応じて移動判定の閾値を変更することにより、精度の高く安定した被写体の移動判定が可能になる。そして、その情報を用いて、その被写体の無限または至近側の移動にフォーカスを追従駆動させることにより、合焦精度を高めることができる。
<第2の実施例>
第1の実施例では、検出された顔の大きさの変化を監視し、被写体が安定している状態の顔サイズを基準とすることと、撮影パラメータなどに応じて移動判定の閾値を変更することにより、被写体の移動判定を精度高く安定して行うことを可能としている。そして、この判定情報を使って被写体の動きにフォーカスを追従駆動させることにより、オートフォーカスの安定性と精度の向上を得ている。本発明の第2の実施例では、第1の実施例における構成に加えて、複数検出された被写体(顔など)の中から1つの顔を主顔として選択する処理機能を兼ね備える。この処理にて、主顔の切り替わりが頻発するような状況においても、オートフォーカスの安定性と精度の向上が得られるようにしている。
ここで、複数の顔(被写体)が検出されている場合の課題に関して説明する。図14は複数の顔が検出されている状態でのフォーカス動作を示している。例えば、複数の顔が検出されている場合は、その中から1つの顔が主顔として選択され、この主顔に対する合焦動作が行われる。主顔を選択する条件としては、顔の位置と大きさから選択の優先度が決定され、中央に近いほど、大きいほど優先度が高くなる。同図(a)では、撮影者が被写体Aを画角中心となるようにフレーミングすることにより、被写体Aが主顔として選択され、被写体Aへの合焦がなされている状態である。この状態から変化して、同図(b)では被写体Bがカメラに近づきながら被写体Aの前をよぎっている。この時、撮影者が意図せずに主顔が被写体Bに切り替わってしまう。そして、この主顔の動きに追従してフォーカスが至近方向に追従駆動し、被写体Bへの合焦が維持されてしまう。次いで、同図(c)では、被写体Bが画角からフレームアウトし始め、これによって主顔が再度被写体Aに切り替わっている。また、主顔の切り替わりに応じて、同図(d)では合焦位置が被写体Aに戻ってきている。
以上の様に複数の顔が検出されている場合の課題として、複数の顔(被写体)が交差して主顔が意図せずに移った場合に、移った主顔の移動に応じてフォーカス位置が大きくずれ、フォーカスの安定性を損なってしまうという事態があった。こうした課題に対処する第2の実施例について以下に説明する。第2の実施例では、カメラ/AFマイコン114は、第1の実施例で説明した処理機能に加えて、検出された複数の顔の中から1つの顔を選択する処理機能を備えている。更にカメラ/AFマイコン114は、第1の実施例で説明した「移動判定閾値設定処理」機能に加えて「移動判定閾値再設定処理」機能を備えている。ここでは第1の実施例で説明した処理機能部分に関してはその説明は割愛する。また、複数の顔の中から1つの顔を選択する処理に関して、その選択方法としては前述したように、検出された顔の位置と大きさから選択の優先度を決定する。ここでは、顔が中央に近いほど、また大きいほど、優先度が高くなる様な選択処理としたが、その優先度の設定方法はこれに限らない。
以下に、第2の実施例の特徴となる「移動判定閾値再設定処理」に関して図15を用いて説明する。移動判定閾値再設定処理では先ずStep1501で、顔検出部116にて複数の顔が検出されているか確認し、複数でなければ本処理は不要となり、そのまま処理を終了する。また、1つの顔が主顔としてロックされている場合(つまり特定被写体に固定されている場合)や予め個人認証された被写体が主被写体として指定されている場合には、主被写体の切り替わりが発生しないので、本実施例の処理は不要となる。よって、それぞれStep1502、Step1503にて処理の終了が判定される。
一方、Step1504に処理が進められると、ここで更に移動判定の閾値再設定を実施するか否かの判定がされる。閾値再設定判定の処理では、再設定が判定されると「閾値再設定フラグ」がセットされる。Step1505では、閾値再設定フラグがセットされているか確認され、セットされていなければそのまま処理を終了する。一方、閾値再設定フラグがセットされていれば、Step1506に処理を進め、以下、移動判定の閾値再設定が実施されていく。
閾値再設定の処理は、先ずStep1506、1507にて、検出された顔の数に応じて補正係数kを設定する。図16は、検出された顔の数に対して各々決められた補正係数kを示しており、検出数が多いほど補正係数kを高めに設定している。すなわち、閾値の再設定をする場合に、検出手段にて検出された被写体が多いほどより大きな値に再設定する。但し、補正係数kの設定値は、ビデオカメラの撮像光学系の性能やフォーカス性能、カメラ/AFマイコンの処理能力に応じて決定されるものである。よって、最も安定したフォーカス性能が得られる設定値として検討された値を設定すれば良い。Step1508では、THfaceを補正係数kで補正した閾値Th8を設定する。ここでTHfaceは、図9で説明した移動判定閾値設定処理におけるStep916〜918で設定した移動判定閾値を示している。Step916〜918の処理と同様の理由により、Step1509〜1511では、閾値Th8を補正前の基準移動判定閾値Thの2倍以内の閾値にリミットした後、移動判定閾値THfaceとして再設定する。次いで、移動判定閾値設定処理のStep919と同様に、Step1512で近付きの判定閾値THnear及び遠ざかりの判定閾値THfarが各々設定され、最後にStep1513にて閾値再設定フラグをクリアして移動判定閾値の再設定の処理が終了する。
ここでStep1504の閾値再設定の判定処理に関して説明する。図17は、閾値再設定判定処理の第1の形態として、「主顔の切り替わりが頻繁に発生する場合に、閾値再設定の判定を行う処理」を示している。閾値再設定の判定処理は、先ずStep1701〜Step1703にて、過去30回分の主顔切り替わり履歴Ptの更新を行う。つまり、Step1701では、Pt(29)に最も古い主顔切り替わり履歴が格納されるように、Pt配列のデータシフトを行い、続いて最新データがPt(0)に格納される。Step1702で、主顔の切り替わりが確認されると、Step1703で最新データPt(0)として1がセットされる。次いでStep1704では過去30回分の履歴データを合算することで、過去30回の判定で確認された主顔切り替わりの回数pが算出される。Step1705で主顔切り替わりの回数pが判定基準値よりも大きいと判定された場合は、Step1706で閾値再設定フラグがセットされる。ここでは判定期間として過去30回分の主顔切り替わり履歴を用いたが、この回数はビデオカメラの撮像光学系の性能やフォーカス性能、カメラ/AFマイコンの処理能力に応じて決定されるものである。最も判定精度が得られる回数として検討された値を設定すれば良い。また判定基準値に関しても、同様な理由からここではその値を指定しない。以上、図17では主顔の切り替わりが頻繁に発生する場合に閾値再設定の判定を行う処理を説明したが、主顔の動きに応じて主顔の切り替わりの乱発を予測し、閾値再設定の判定を行うこともできる。以上の様に、本形態では、カメラ/AFマイコンの判別手段は、1つの被写体が検出されている場合には、所定量の閾値にて距離変化の有無の判別を実施する。一方、複数の被写体が検出されている場合には、カメラ/AFマイコンの被写体選択手段にて選択される主被写体の単位期間あたりの切り替え回数を計数して、所定の回数を超えないときは、所定量の閾値にて距離変化の有無の判別を実施し、前記所定の回数を超えるときは、閾値を前記所定量より大きな値に再設定して距離変化の有無の判別を実施する。
閾値再設定判定処理の第2の形態として、図18では「主顔の移動が激しい為に、他の被写体との交差により主顔の切り替わりが予測される場合の判定方法」を示している。同図において、まずStep1801にて座標(x0、y0)に設定されている顔検出位置の座標を前回座標として(x1、y1)に退避し、Step1802にて座標(x0、y0)に今回検出された顔検出位置の座標を設定する。続いてStep1803にて式9を用いて、座標(x1、y1)から座標(x0、y0)への移動量を算出する。
移動量=SQR((x1-x0)^2+(y1-y0)^2)・・・式9
Step1804で、算出された移動量が予め設定された基準量を超えると判定された場合は、他の被写体との交差により主顔の切り替わりが予測される。そこでStep1804で基準値を超えたと判定すると、Step1805に進み閾値再設定フラグをセットとする。基準量はビデオカメラの撮像光学系の性能やフォーカス性能、カメラ/AFマイコンの処理能力に応じて決定されるものである。よって、最も安定したフォーカス性能が得られる設定値として検討された値を設定すれば良い。以上の様に、本形態では、カメラ/AFマイコンの判別手段は、1つの被写体が検出されている場合には、所定量の閾値にて距離変化の有無の判別を実施する。一方、複数の被写体が検出されている場合には、カメラ/AFマイコンの被写体選択手段にて選択される主被写体の単位期間あたりの画面内移動量を計測して、所定の移動量を超えないときは、所定量の閾値にて距離変化の有無の判別を実施し、前記所定の移動量を超えるときは、閾値を前記所定量より大きな値に再設定して距離変化の有無の判別を実施する。
閾値再設定判定処理の第3の形態として、図19では「主顔が近付き/遠ざかりを繰り返し、他の被写体との交差により主顔の切り替わりが予測される場合の判定方法」を示している。先ず、Step1901では移動判定フラグを確認し、移動判定フラグが設定されていなければそのまま処理を終了する。ここで移動判定フラグは第1の実施例で説明した移動判定処理で設定されたフラグである。移動判定フラグから移動判定(遠ざかり)が確認されるとStep1902に進む。一方、移動判定(近付き)フラグが確認されるとStep1905に進む。ここで、Mmは移動判定の履歴を記録しており、上位bitに行くほど古い履歴が記録されている。Step1902では履歴を記録する為に先ずMmデータを上位bit側に1bitシフトし、次いでMmに1を加算し最下位bitをセットする。一方、Step1905に進んだ場合には、Mmデータを上位bit側に1bitシフトするだけで1は加算せず、最下位bitはクリアされたままとする。つまりMmには、移動判定(遠ざかり)フラグが確認された場合に「1」、移動判定(近付き)フラグが確認された場合に「0」が履歴として残されている。Step1903及びStep1906では、Mmデータの上位3bitをマスクし、過去5回分の履歴のみを記録するようにする。次いでStep1904及びStep1907では、過去5回分のMmデータを確認し、0と1を繰り返す場合(Mm=00010101bないし00001010b)は、Step1908に進み、閾値再設定フラグをセットとする。ここでは過去5回の履歴を使って閾値再設定の判定を行っているが、その回数はビデオカメラの撮像光学系の性能やフォーカス性能、カメラ/AFマイコンの処理能力に応じて決定されるものである。よって、最も安定したフォーカス性能が得られる回数として検討された回数を設定すれば良い。
以上の様に、本形態では、カメラ/AFマイコンの判別手段は、1つの被写体が検出されている場合には、所定量の閾値にて距離変化の有無の判別を実施する。一方、複数の被写体が検出されている場合には、カメラ/AFマイコンの被写体選択手段にて選択される主被写体の前記距離変化の有無の判別の状態を監視し、主被写体の近付き及び遠ざかり判別が交互に繰り返されていないときは、所定量の閾値にて距離変化の有無の判別を実施し、主被写体の近付き及び遠ざかり判別が交互に繰り返されているときは、閾値を前記所定量より大きな値に再設定して距離変化の有無の判別を実施する。
閾値再設定判定処理の第4の形態として、図20では「主顔が画角方向に移動し続けて、やがて画角からはみ出し、現主顔の消失により切り替わりが予測される場合の判定方法」を示している。先ずStep2001、2002にて、座標(x0、y0)に設定されている顔検出位置の座標を前回座標として(x1、y1)に退避し、座標(x0、y0)に今回検出された座標を設定する。Step2003では、DIRx及びDIRyをそれぞれ上位bit側に1bitシフトする。ここでDIRx及びDIRyは、各々x軸上及びy軸上の主顔の移動方向の履歴を記録しており、上位bitに行くほど古い履歴が記録されている。移動方向が正の場合は「1」がセットされ、負の場合は「0」がセットされる。
Step2004からStep2009で、先ずx軸上のデータDIRxの処理が行われる。Step2004では今回と前回の差分から移動方向を求め、正方向への移動が判定されると、Step2005で最下位bitに1が設定される。一方、負方向への移動が判定された場合は、最下位bitは0が設定されたままの状態となる。Step2006では過去8回の履歴を確認し、常に正方向に移動している場合はStep2008に進む。Step2008でx座標の上限x(upper)と比較し、上限を超えた場合はStep2009に進み、閾値再設定フラグが設定される。一方、Step2007で常に負方向に移動していることが判定されると、Step2010に進む。Step2010でx座標の下限x(lower)と比較し、下限を超えた場合はStep2009に進み、閾値再設定フラグが設定される。ここでx座標の上限x(upper)、下限x(lower)は画角付近を判定する為に設定されたデータである。
次いで、Step2011からはy軸上のデータDIRyの処理が行われる。Step2011では今回と前回の差分から移動方向を求め、正方向への移動が判定されるとStep2012で最下位bitに1が設定される。一方、負方向への移動が判定された場合は、最下位bitは0が設定されたままの状態となる。Step2013では過去8回の履歴を確認し、常に正方向に移動している場合はStep2015に進む。Step2015でy座標の上限y(upper)と比較し、上限を超えた場合はStep2016に進み、閾値再設定フラグが設定される。一方、Step2014で常に負方向に移動していることが判定されるとStep2017に進む。Step2017でy座標の下限y(lower)と比較し、下限を超えた場合はStep2016に進み、閾値再設定フラグが設定される。ここでy座標の上限y(upper)、下限y(lower)は画角付近を判定する為に設定されたデータであり、その値は画学サイズや顔検出部の性能に応じて決定されるものである。よって、最も安定したフォーカス性能が得られる回数として検討された値を設定すれば良い。また、ここでは過去8回の履歴を使って閾値再設定の判定を行っているが、その回数はビデオカメラの撮像光学系の性能やフォーカス性能、カメラ/AFマイコンの処理能力に応じて決定されるものである。よって、最も安定したフォーカス性能が得られる回数として検討された回数を設定すれば良い。
以上の様に、本形態では、カメラ/AFマイコンの判別手段は、1つの被写体が検出されている場合には、所定量の閾値にて距離変化の有無の判別を実施する。一方、複数の被写体が検出されている場合には、カメラ/AFマイコンの被写体選択手段にて選択される主被写体の検出位置の移動方向を監視し、主被写体が画面内からはみ出る方向に移動していないときは、所定量の閾値にて前記距離変化の有無の判別を実施し、主被写体が画面内からはみ出る方向に移動しているときは、閾値を前記所定量より大きな値に再設定して距離変化の有無の判別を実施する。
以上、図17〜図20で4種類の閾値再設定判定の処理を説明したが、その4種類の判定処理は、複数組み合わせて閾値再設定判定処理としてもかまわない。この場合は、図17〜図20から選択された処理を各々適用した移動判定閾値再設定処理を順番に実施してもよいし、または図17〜図20から選択された処理をStep1504の一連の処理として1度に連続して実施してもかまわない。以上説明したように、第2の実施例では、複数の被写体(顔など)が検出され、主被写体の切り替わりが頻発する等の状況においては、主被写体の移動判定の閾値を高く設定してフォーカスが意図せず移動する事を回避した。よって、オートフォーカスの安定性と精度の向上が得られる。
上述した実施例における処理のために、各機能を具現化したソフトウェアのプログラムコードを記録した記憶媒体をシステム或いは装置に提供してもよい。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによって、前述した実施例の機能を実現することができる。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスクなどを用いることができる。或いは、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることもできる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけではない。そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれている。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれてもよい。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含むものである。
以上、本発明の好ましい実施形態ないし実施例について説明したが、本発明は上記実施形態ないし実施例に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。