(57)【特許請求の範囲】
【請求項１】
画像信号から、人物の顔を検出する第１の検出手段と、
前記画像信号から、人物以外の不特定の被写体を検出する第２の検出手段と、
前記人物の顔および前記不特定の被写体のいずれかである主被写体の動きを判定する判定手段と、を有し、
前記判定手段は、前記不特定の被写体の位置の変化が閾値を超えた場合に前記不特定の被写体が動いたと判定し、前記人物の顔の位置およびサイズのいずれかの変化がそれぞれに対応する閾値を超えた場合に前記人物の顔が動いたと判定し、
前記不特定の被写体の動きを判定するための位置の変化に対する閾値は、前記人物の顔の動きを判定するための位置の変化に対する閾値よりも大きな値に設定されることを特徴とする画像処理装置。
【請求項２】
前記第２の検出手段は、前記画像信号から、前記画像信号の類似する信号成分ごとに領域を分類し、相対的に評価値の高い領域を選択することにより、前記不特定の被写体を検出することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
フォーカスレンズを介して被写体像を撮像して前記画像信号を出力する撮像手段と、
前記画像信号より検出された合焦状態に応じて前記フォーカスレンズの位置を調節する焦点調節手段と、を有し、
前記焦点調節手段は、前記主被写体が動いていると判定した場合には、動いていないと判定した場合と比較して、前記フォーカスレンズを高速で移動させることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
第１の検出手段が、画像信号から、人物の顔を検出する工程と、
第２の検出手段が、前記画像信号から、人物以外の不特定の被写体を検出する工程と、
判定手段が、前記人物の顔および前記不特定の被写体のいずれかである主被写体の動きを判定する工程と、を有し、
前記判定する工程では、前記不特定の被写体の位置の変化が閾値を超えた場合に前記不特定の被写体が動いたと判定し、前記人物の顔の位置およびサイズのいずれかの変化がそれぞれに対応する閾値を超えた場合に前記人物の顔が動いたと判定し、
前記不特定の被写体の動きを判定するための位置の変化に対する閾値は、前記人物の顔の動きを判定するための位置の変化に対する閾値よりも大きな値に設定されることを特徴とする画像処理装置の制御方法。
【請求項５】
コンピュータを、請求項１乃至３のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【請求項６】
コンピュータを、請求項１乃至３のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラムを記憶したコンピュータによる読み取りが可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置における被写体の動き判定技術に関する。
【背景技術】
【０００２】
従来、デジタルスチルカメラなどの撮像装置において、フォーカスレンズを移動させて被写体に焦点を合わせる方法として、ＣＣＤなどの撮像素子から得られる輝度信号を用いて自動的に合焦動作を行うオートフォーカス（以下、ＡＦ）方式が用いられている。このＡＦ方式を用いた撮像装置では、各画面内に設定された測距領域内における信号の高周波成分を積分したＡＦ評価値に基づいて、最もコントラストの高いフォーカスレンズ位置を検出して合焦位置を求めることが行われている。
【０００３】
このようなＡＦ方式の１つとして、焦点評価値が増加する方向にフォーカスレンズを動かし、焦点評価値が最大になる位置を合焦位置とする山登り方式（ＣｏｎｔｉｎｕｏｕｓＡＦ）が知られている。このＣｏｎｔｉｎｕｏｕｓＡＦ制御を用いて、焦点評価値が増加する方向に遅い速度でフォーカスレンズを動かすと、ライブ画像の見栄えを損なわずに被写体に追従して合焦状態を維持することができる。しかし、距離方向に大きく動いている被写体へのフォーカス追従性は良好とは言えない。
【０００４】
このような距離方向に大きく動いている被写体へのフォーカス追従性を良くするためには、フォーカスレンズの駆動速度を速くすればよい。距離方向に動いている被写体へのフォーカス追従性を良くするためのＡＦ方式として、過去に検出した合焦位置に基づいた距離範囲内で、常にフォーカスレンズを高速で駆動して合焦位置を求め続ける方式（ＳｅｒｖｏＡＦ）がある。しかし、距離方向に大きく動いている被写体へのフォーカス追従性を改善しようとすると、単位時間あたりの合焦状態の変化が大きくなるため、ライブ画像の見栄えは低下する。
【０００５】
そこで、特許文献１では、フォーカス追従性を優先するか否かに応じて、このＣｏｎｔｉｎｕｏｕｓＡＦとＳｅｒｖｏＡＦを切り換えるカメラが開示されている。フォーカス追従性を優先するか否かを判定する方法の一つとして、合焦させる対象となる被写体が動体であるか否かを判定する方法が考えられる。
【０００６】
そして、画像信号から被写体を検出する方法として、特許文献２では、合焦させる対象となる被写体として、撮像素子から得られた画像信号から顔を検出するカメラが開示されている。
【０００７】
また、特許文献３では、撮像素子から得られた画像信号をその色成分に着目して複数の領域に分類し、それらの中から被写体が存在する領域を選択するカメラが開示されている。画像信号を色成分や輝度成分に着目して領域に分類し、領域ごとのサイズや位置に応じて被写体が存在する領域を選択する構成とすることにより、予めカメラに特定の被写体情報を記憶させておかずとも、被写体が存在する領域を検出することができる。
【０００８】
これら特許文献１乃至３より、撮像素子から得られた画像信号から被写体を検出し、この被写体が動いているか否かを判定することによって、ＡＦ制御のフォーカス追従性を切り替える構成を導くことができる。
【０００９】
なお、ここではＡＦ制御の例をあげて説明を行ったが、このような被写体の動き判定結果に応じた制御の切り替えは、ＡＦ制御だけでなく、露出制御や画像処理制御などの他の制御においても適用することできる。例えば、露出制御では、被写体が動いていると判定された場合には、そうでないと判定された場合よりも、シャッター速度を短くすることが考えられる。例えば、画像処理制御では、被写体が動いていると判定された場合には、そうでないと判定された場合よりも、ノイズ抑圧のための巡回フィルタ係数を小さくすることが考えられる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−０７２１１７号公報
【特許文献２】特開２００８−１７６１５２号公報
【特許文献３】特開２００７−１１０６３８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
被写体の動きは、画像信号の面内における移動だけでなく、被写体とカメラとの距離が変化する方向における移動も含まれる。そのため、画像信号から検出した被写体の位置だけでなく、検出した被写体のサイズが変化したことによっても、被写体が動いたと判定することができる。
【００１２】
図２１は、人物の顔と顔以外の被写体における距離とサイズの相関性を説明する図である。図２１（ａ）に示すように、顔はカメラからの距離とそのサイズの相関性が高いことが事前にわかっているのだから、被写体として顔を検出したことが明らかであるならば、その被写体のサイズの変化に応じて被写体の動きを判定したとしても問題はない。
【００１３】
これに対し、特許文献３のように、画像信号から不特定の被写体を検出した場合には、カメラからの距離とその被写体のサイズとの相関性が高くなるとは限らない。例えば、画像信号が検出した不特定の被写体が、図２１（ｂ）に示すように奥行きのある物体であった場合に、この被写体の向きが変わるだけで、被写体のサイズが大きく変化してしまう。つまり、検出した被写体が何であるかを特定できていない状態では、被写体のサイズが変化したからといって、被写体までの距離が変化したことによるものなのか、それ以外の理由によるものなのかを判断することができない。よって、不特定の被写体を検出した場合も、顔を検出した場合と同様に、そのサイズの変化によって動きの有無を判定してしまうと、被写体がほとんど移動していないにも関わらず、被写体が動いたと誤って判定してしまうことがある。
【００１４】
本発明は、上記課題に鑑みてなされ、その目的は、画像信号から被写体を検出する方法に応じて、その被写体に適した動き判定を行う技術を実現することである。
【課題を解決するための手段】
【００１５】
上記課題を解決し、目的を達成するために、本発明の画像処理装置は、画像信号から、人物の顔を検出する第１の検出手段と、前記画像信号から、人物以外の不特定の被写体を検出する第２の検出手段と、前記人物の顔および前記不特定の被写体のいずれかである主被写体の動きを判定する判定手段と、を有し、前記判定手段は、前記不特定の被写体の位置の変化が閾値を超えた場合に前記不特定の被写体が動いたと判定し、前記人物の顔の位置およびサイズのいずれかの変化がそれぞれに対応する閾値を超えた場合に前記人物の顔が動いたと判定し、前記不特定の被写体の動きを判定するための位置の変化に対する閾値は、前記人物の顔の動きを判定するための位置の変化に対する閾値よりも大きな値に設定される。
【発明の効果】
【００１６】
本発明によれば、画像信号から被写体を検出する方法に応じて、その被写体に適した動き判定を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】本発明に係る実施形態のＡＦ制御を実現する撮像装置の構成を示すブロック図。
【図２】本実施形態の撮像装置の動作を示すフローチャート。
【図３】図２のＳ２０１における主被写体情報の変化判断処理を示すフローチャート。
【図４Ａ】図３のＳ３０６における顔サイズ変化判断処理を示すフローチャート。
【図４Ｂ】図３のＳ３０７における顔位置変化判断処理を示すフローチャート。
【図５】図３のＳ３０９における不特定被写体位置変化判断処理を示すフローチャート。
【図６】図２のＳ２０８におけるＣｏｎｔｉｎｕｏｕｓＡＦ制御を示すフローチャート。
【図７】図２のＳ２０５におけるＳｅｒｖｏＡＦ制御を示すフローチャート。
【図８】図６のＳ６０９及び図７のＳ７０９における山登りＡＦ制御を示すフローチャート。
【図９】図６のＳ６１０及び図７のＳ７１３における被写体距離変化判定処理を示すフローチャート。
【図１０】図２のＳ２１２における通常ＡＦ動作を示すフローチャート。
【図１１】図７のＳ７１２におけるＳｅｒｖｏ中ＡＦ動作を示すフローチャート。
【図１２】図１１のＳ１１０２における予測可能判定処理を示すフローチャート。
【図１３】図１１のＳ１１０４における被写体位置予測処理を示すフローチャート。
【図１４】図１３の被写体位置予測方法を説明する図。
【図１５】図１０のＳ１０１２及び図１１のＳ１１１０におけるスキャン動作を示すフローチャート。
【図１６】図１０のＳ１０１３及び図１１のＳ１１１１における合焦状態判定処理を示すフローチャート。
【図１７】無限遠方向の単調減少チェックを示すフローチャート。
【図１８】至近端方向の単調減少チェックを示すフローチャート。
【図１９】ＡＦ評価値の判定方法を説明する概念図。
【図２０】図２のＳ２１７における撮影動作を示すフローチャート。
【図２１】人物の顔と顔以外の被写体における距離とサイズの相関性を説明する図。
【発明を実施するための形態】
【００１８】
以下に、本発明を実施するための形態について詳細に説明する。尚、以下に説明する実施の形態は、本発明を実現するための一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されるべきものであり、本発明は以下の実施の形態に限定されるものではない。また、後述する各実施形態の一部を適宜組み合わせて構成しても良い。
【００１９】
以下、本発明の画像処理装置を、撮影機能を備えたデジタルスチルカメラに適用した例を説明するが、これに限られず、デジタルビデオカメラや、画像処理機能を備えたパーソナルコンピュータ等に適用しても良い。また、ＡＦ制御を切り換えるために被写体の動き判定を行う例をあげて説明を行うが、上述したように、ＡＦ制御のみに限らず、露出制御や画像処理制御においても適用することが可能である。
【００２０】
＜装置構成＞
図１を参照して、本実施形態の撮像装置の構成について説明する。
【００２１】
図１において、１０１はズーム機構を含む撮影レンズである。１０２は光量を制御する絞り及びシャッターである。１０３はＡＥ処理部、１０４は被写体像を撮像する撮像素子１０６上に焦点を合わせるためのフォーカスレンズである。１０５はＡＦ処理部、１０６は被写体からの反射光を電気信号に変換する受光手段又は光電変換手段としての撮像素子である。１０７は出力ノイズを除去するＣＤＳ回路やＡ／Ｄ変換前に行う非線形増幅回路を含むＡ／Ｄ変換部である。１０８は画像処理部、１０９はフォーマット変換部、１１０は内蔵メモリ（例えばランダムアクセスメモリ、以下、ＤＲＡＭ）である。１１１はメモリカードなどの外部記憶媒体とそのインタフェースからなる画像記録部である。１１２は後述する合焦動作を含む撮影シーケンスなどを実行するように制御するシステム制御部である。１１３は画像表示用メモリ（以下、ＶＲＡＭ）、１１４は画像表示の他、操作補助のための表示やカメラ状態の表示の他、撮影時には撮影画面と測距領域を表示する操作表示部である。１１５は装置を外部から操作するための操作部、１１６は撮影の条件設定を行う撮影モードスイッチ、１１７はシステムに電源を投入するためのメインスイッチである。１１８はＡＦやＡＥ等の撮影スタンバイ動作を行うためのスイッチ（以下、ＳＷ１）、１１９はＳＷ１の操作後、撮影を行う撮影スイッチ（以下、ＳＷ２）である。
【００２２】
１２０は画像処理部１０８で処理された画像信号を用いて被写体の検出を行い、検出した１つ又は複数の被写体情報をシステム制御部１１２に送出する被写体検出モジュールである。被写体検出モジュールは２種類の検出方法を併用して被写体を検出するものであり、顔を検出するための顔検出と、不特定被写体を検出するための不特定被写体検出を行う。被写体情報は、被写体が人物の場合は顔の位置、および大きさ、不特定被写体の場合は位置のみとなる。
【００２３】
顔検出の方法としては、例えば、画像信号を色成分や輝度成分に分解し、周知のパターン認識技術を用いて、予め記憶させて顔のパーツ（目、鼻、口等）に一致する領域を抽出し、それらを包含する領域を顔として検出する方法がある。複数の顔が検出された場合には、顔のサイズが大きいほど、顔の位置が画像の中心に近いほど大きな値となるように、各顔に対して評価値を付与し、最も評価値の高い顔を主被写体とする。
【００２４】
また、不特定被写体検出の方法としては、画像信号を色成分や輝度成分といった類似の信号成分ごと分類し、分類された領域ごとにそのサイズや位置に応じて評価値を付与し、相対的に評価値の高い領域を選択する方法がある。例えば、画像信号を所定数のブロックに分割し、各ブロックにおける色相を取得し、色相ヒストグラムを作成する。色相ヒストグラムでは、ヒストグラムの山の頂点を中心に、ヒストグラムが谷に当たるまでの範囲の色を同一グループとみなす動作を繰り返していくことで、全ての色相をグループ分けする。そして、隣接ブロックが同一グループの場合に同一領域と判定する処理を画像信号全体に渡って行うことで、画像信号を複数の被写体候補領域に分類する。そして、分類された領域のうち、画像の上端、右端、あるいは左端に接する面積が閾値以上の領域、および、その領域の形状の偏平度が高い（長細い）領域を、背景である可能性が高いと判断し、被写体の対象から除外する。そして残った被写体候補領域のうち、サイズが大きいほど、画像の中心位置に近いものほど高い評価値を与え、最も評価値の高い被写体候補領域を不特定被写体として選択する。この不特定被写体検出によれば、顔検出と異なり、画像中にどのような被写体が存在するかによって、主被写体として検出される対象が変化する。
【００２５】
なお、顔検出および不特定被写体検出の両方で主被写体が検出された場合には、顔検出による主被写体を最終的な主被写体として選択する。あるいは、顔検出および不特定被写体検出のそれぞれの主被写体に対して付与された評価値を比較し、評価値が大きい主被写体を最終的な主被写体として選択する。
【００２６】
ＤＲＡＭ１１０は一時的な画像記憶手段としての高速バッファとして、あるいは画像の圧縮伸張における作業用メモリなどに使用される。操作部１１５には、例えば、撮像装置の撮影機能や画像再生時の設定などの各種設定を行うメニュースイッチ、撮影レンズのズーム動作を指示するズームレバー、撮影モードと再生モードの動作モード切換えスイッチなどが含まれる。
【００２７】
＜動作説明＞
次に、図２乃至２０を参照して、本実施形態の撮像装置の動作について説明する。なお、以下に説明する処理は、システム制御部１１２がＲＯＭに格納された制御プログラムをＲＡＭに読み出して実行することにより実行される。
【００２８】
図２において、メインスイッチ１１７がＯＮになると、ステップＳ２０１へ進む。ステップＳ２０１では、後述する図３での処理に従って、主被写体情報の変化判断処理を行い、ステップＳ２０２へ進む。ステップＳ２０２では、輝度が所定値以下か判定し、所定値以下であればステップＳ２０７へ進み、所定値以下でなければステップＳ２０３へ進む。これにより、後述するＳｅｒｖｏＡＦに必要なＡＦ精度が得られない低照度条件時に、ＳｅｒｖｏＡＦを行わずＣｏｎｔｉｎｕｏｕｓＡＦを行う。ステップＳ２０３では、ステップＳ２０１で判断した結果、主被写体が動いているか判定し、主被写体が動いているならばステップＳ２０４へ進み、動いていなければステップＳ２０７へ進む。ステップＳ２０４では、主被写体が動いていることを示す動きアイコンを画面内の所定位置に表示して、ステップＳ２０５へ進む。ステップＳ２０５では、後述する図７での処理に従って、ＳｅｒｖｏＡＦを行ってステップＳ２０９へ進む。ステップＳ２０７では、画面内の所定位置に主被写体が動いていることを示す動きアイコンが表示されていれば、非表示にしてステップＳ２０８へ進む。ステップＳ２０８では、後述する図６での焦点調節動作に従って、ＣｏｎｔｉｎｕｏｕｓＡＦを行ってステップＳ２０９へ進む。
【００２９】
ステップＳ２０９では、ＳＷ１の状態がＯＮであればステップＳ２１０へ進み、ＯＮでなければステップＳ２０１へ進む。ステップＳ２１０では、ＡＥ処理部１０３で画像処理部１０８の出力からＡＥ処理を行ってステップＳ２１１へ進む。ステップＳ２１１では、合焦フラグの状態がＴＲＵＥであればステップＳ２１３へ進み、ＦＡＬＳＥであればステップＳ２１２へ進む。ステップＳ２１２では、後述する図１０での焦点調節動作に従って、通常ＡＦ動作を行ってステップＳ２１３へ進む。ステップＳ２１３では、ＳｅｒｖｏＡＦモードに設定されているか判定し、ＳｅｒｖｏＡＦモードに設定されていればステップＳ２１４へ進み、ＳｅｒｖｏＡＦモードに設定されていなければステップＳ２１５へ進む。ステップＳ２１４では、後述する図７での焦点調節動作に従って、ＳｅｒｖｏＡＦを行ってステップＳ２１５へ進む。ステップＳ２１５では、スイッチＳＷ１の状態がＯＮであればステップＳ２１６へ進み、ＯＮでなければステップＳ２０１へ進む。ステップＳ２１６では、スイッチＳＷ２の状態がＯＮであればステップＳ２１７へ進み、ＯＮでなければステップＳ２１３へ進む。ステップＳ２１７では、後述する図２０での処理に従って撮影動作を行ってステップＳ２０１へ進む。
【００３０】
＜主被写体情報の変化判断処理＞
図３を参照して、図２のＳ２０１における主被写体情報の変化判断処理について説明する。
【００３１】
図３において、ステップＳ３０１では、被写体検出モジュール１２０が被写体を検出したか判定し、被写体を検出していればステップＳ３０２へ進み、被写体を検出していなければ処理を終了し、ステップＳ２０２へ進む。ステップＳ３０２では、画角が変化するような設定があったか判定する。画角が変化する設定とは光学ズーム、または、電子ズーム動作、記録画像のアスペクト比を変更するような場合である。画角変化設定があればステップＳ３０３へ進み、なければステップＳ３０４へ進む。このように光学ズームや電子ズームの動作中、記録画像のアスペクト比変換時は、被写体に変化がなくても顔サイズや画面内の被写体の位置が変化してしまうため、ステップＳ３０３にてＤＲＡＭ１１０に記憶した顔サイズや顔／不特定被写体の位置情報の履歴を消去する。後述する変動フラグや、動きアイコンの状態は前回の状態を継続したままとする。
【００３２】
ステップ３０４では検出された被写体が顔であるか判別する。検出された被写体が顔の場合はステップＳ３０５へ進み、顔以外の不特定被写体であればステップＳ３０８へ進む。ステップＳ３０５では記憶した不特定被写体の位置情報を消去する。Ｓ３０６では、後述する図４Ａでの処理に従って、顔サイズの変化判断を行ってステップＳ３０７へ進む。ステップＳ３０７では、後述する図４Ｂでの処理に従って、顔位置の変化判断を行ってステップＳ３１０へ進む。ステップＳ３０８では、記憶した顔のサイズ、位置情報を消去する。Ｓ３０９では、後述する図５での処理に従って、不特定被写体位置の変化判断を行ってステップＳ３１０へ進む。ステップＳ３１０では、顔サイズ変動フラグがＴＲＵＥであればステップＳ３１４へ進み、そうでなければステップＳ３１１へ進む。ステップＳ３１１では、顔位置変動フラグがＴＲＵＥであればステップＳ３１４へ進み、そうでなければステップＳ３１２へ進む。ステップＳ３１２では、不特定被写体位置変動フラグがＴＲＵＥであればステップＳ３１４へ進み、そうでなければステップＳ３１３へ進む。ステップＳ３１４では、主被写体が動いていると判定して処理を終了し、ステップＳ２０２へ進む。ステップＳ３１３では、主被写体が動いていないと判定して処理を終了し、ステップＳ２０２へ進む。このように、本実施形態では、主被写体が顔であるか不特定被写体であるかに応じて、主被写体が動いたか否かを判定する基準を異ならせている。
【００３３】
＜顔サイズの変化判断処理＞
図４Ａを参照して、図３のＳ３０６における顔サイズの変化判断処理について説明する。
【００３４】
図４Ａにおいて、ステップＳ４０１では、被写体検出モジュール１２０で検出した顔サイズ情報を取得してステップＳ４０２へ進む。ステップＳ４０２では、顔サイズ情報に対して時間軸方向でローパス処理を施し被写体検出モジュール１２０の誤差の低減を図る。ローパスフィルタのパラメータは被写体検出モジュール１２０での変化判定閾値に応じて変更できる。次にステップＳ４０３では時間軸方向でハイパスフィルタ処理を施し、時間軸方向での顔サイズ変化の差分を算出する。ステップＳ４０４ではハイパス処理後の顔サイズ変化の絶対値が予め設定した変化判定閾値以上か判定し、変化判定閾値以上であればステップＳ４０５へ進み、変化判定閾値未満であればステップＳ４０７へ進む。ここで、変化判定閾値は、被写体距離が変化していないときに検出誤差などによって誤って変化したと判定することがないように設定する。ステップＳ４０５では、顔サイズ変動フラグをＴＲＵＥにしてステップＳ４０６へ進む。ステップ４０６では顔サイズ安定カウンタを初期化する。
【００３５】
ステップＳ４０７では顔サイズ安定カウンタをインクリメントする。ステップＳ４０８では、顔サイズ安定カウンタが予め設定した安定回数閾値以上であるか判定し、安定回数閾値以上であればステップＳ４０９へ進み、安定回数閾値未満であれば処理を終了し、ステップＳ３０５へ進む。ここで、安定回数閾値は、被写体距離が変化しているときに誤って安定したと判定することがないように設定する。ステップＳ４０９では、顔サイズ変動フラグをＦＡＬＳＥにして処理を終了し、ステップＳ３０５へ進む。
【００３６】
＜顔位置の変化判断処理＞
図４Ｂを参照して、図３のＳ３０７における顔位置の変化判断処理について説明する。
【００３７】
図４Ｂにおいて、ステップＳ４２１では、被写体検出モジュール１２０で検出した顔位置のＸ座標、Ｙ座標の情報を取得してステップＳ４２２へ進む。ステップＳ４２２では、顔位置情報に対して時間軸方向でローパス処理を施し被写体検出モジュール１２０の誤差の低減を図る。ステップＳ４２３では時間軸方向でハイパスフィルタ処理を施し、時間軸方向での顔位置変化の差分を算出する。ステップＳ４２４では、顔位置変化の絶対値が予め設定した変化判定閾値以上か判定し、変化判定閾値以上であれば、ステップＳ４２５へ進み、変化判定閾値未満であればステップＳ４２７へ進む。ここで、変化判定閾値は、被写体距離が変化していないときに検出誤差や手ぶれによる画面内の動きによって誤って変化したと判定することがないように設定する。ステップＳ４２６では顔位置安定カウンタを初期化する。ステップＳ４２８では、顔位置安定カウンタが予め設定した安定回数閾値以上か判定し、安定回数閾値以上であれば、ステップＳ４２９へ進み、安定回数閾値未満であれば処理を終了してステップＳ３０６へ進む。ここで、安定回数閾値は、被写体距離が変化しているときに誤って安定したと判定することがないように設定する。ステップＳ４２９では、顔位置変動フラグをＦＡＬＳＥにして処理を終了してステップＳ３０６へ進む。
【００３８】
＜不特定被写体位置の変化判断処理＞
図５を参照して、図３のＳ３０９における不特定被写体位置の変化判断処理について説明する。
【００３９】
図５において、ステップＳ５０１では、被写体検出モジュール１２０で検出した不特定被写体位置のＸ座標、Ｙ座標の情報を取得してステップＳ５０２へ進む。ステップＳ５０２では、不特定被写体位置情報に対して時間軸方向でローパス処理を施し被写体検出モジュール１２０の誤差の低減を図る。ステップＳ５０３では時間軸方向でハイパスフィルタ処理を施し、時間軸方向での不特定被写体位置変化の差分を算出する。ステップＳ５０４では、不特定被写体位置変化の絶対値が予め設定した変化判定閾値以上か判定し、変化判定閾値以上であれば、ステップＳ５０５へ進み、変化判定閾値未満であればステップＳ５０７へ進む。ここで、変化判定閾値は、被写体距離が変化していないときに検出誤差や手ぶれによる画面内の動きによって誤って変化したと判定することがないように設定し、顔の変化判定閾値と異ならせてもよい。本実施形態としては、人物の顔のように距離と相関性が高い被写体に対して（図４Ａ参照）、顔以外の距離とサイズの相関性が低い不特定被写体の場合は、変化判定閾値を判定しにくくなる方向、すなわち、より大きな値に設定する。これは図４Ｂのように不特定被写体は見る角度によって重心位置が変わり、顔に比べて動いたと判定されやすいためである。
【００４０】
ステップＳ５０６では不特定被写体位置安定カウンタを初期化する。ステップＳ５０８では、不特定被写体位置安定カウンタが予め設定した安定回数閾値以上か判定し、安定回数閾値以上であれば、ステップＳ５０９へ進み、安定回数閾値未満であれば処理を終了してステップＳ３０６へ進む。ここで、安定回数閾値は、被写体距離が変化しているときに誤って安定したと判定することがないように設定する。ステップＳ５０９では、不特定被写体位置変動フラグをＦＡＬＳＥにして処理を終了してステップＳ３０６へ進む。
【００４１】
＜ＣｏｎｔｉｎｕｏｕｓＡＦ制御＞
図６を参照して、図２のＳ２０８におけるＣｏｎｔｉｎｕｏｕｓＡＦ制御について説明する。
【００４２】
図６において、ステップＳ６０１では、被写体検出モジュール１２０が被写体検出したか判定し、被写体検出していればステップＳ６０２へ進み、被写体検出していなければステップＳ６０４へ進む。ステップＳ６０２では、被写体検出モジュール１２０で検出した位置・サイズなどの情報を取得してステップＳ６０３へ進む。ステップＳ６０３では、被写体検出していることを示す被写体検出フラグをＴＲＵＥにしてステップＳ６０４へ進む。ステップＳ６０４では、被写体検出フラグの状態がＴＲＵＥであればステップＳ６０５へ進み、ＦＡＬＳＥであれば、ステップＳ６０６へ進む。ステップＳ６０５では、最新の被写体検出位置にＡＦ枠を設定してステップＳ６０７へ進む。ここで、被写体検出されているときのＡＦ枠のサイズは、所定のサイズにしてもよいし、被写体検出サイズに基づいて決定してもよい。ステップＳ６０６では、中央領域などの所定位置にＡＦ枠を設定してステップＳ６０７へ進む。ステップＳ６０７では、ステップＳ６０５、またはステップＳ６０６で設定したＡＦ枠において焦点評価値及び輝度値を取得してステップＳ６０８へ進む。ステップＳ６０８では、後述するステップＳ６０９の山登りＡＦにおいてピークが検出されたことを示すピーク検出フラグの状態がＴＲＵＥであればステップＳ６１０へ進み、ＦＡＬＳＥであればステップＳ６０９へ進む。ステップＳ６０９では後述する図８での処理に従って山登りＡＦを行ってステップＳ２０９へ進む。ステップＳ６１０では、後述する図９での処理に従って被写体距離変化判定を行って、ステップＳ６１１へ進む。ステップＳ３１１では、被写体距離が変化したことを示す距離変化フラグの状態がＴＲＵＥであればステップＳ６１２へ進み、ＦＡＬＳＥであれば、ステップＳ６１３へ進む。ステップＳ６１２では、ピーク検出フラグ及び距離変化フラグをＦＡＬＳＥにし、ステップＳ６０９の山登りＡＦ制御で用いる焦点評価値の最大値、ピーク位置、焦点評価値の増加を示す増加カウンタをリセットしてステップＳ６１３へ進む。ステップＳ６１３では、フォーカスレンズをそのまま停止させてステップＳ２０９へ進む。
【００４３】
＜ＳｅｒｖｏＡＦ制御＞
図７を参照して、図２のＳ２０５，Ｓ２１４におけるＳｅｒｖｏＡＦ制御について説明する。
【００４４】
図７において、ステップＳ７０１では、被写体検出モジュール１２０が被写体検出したか判定し、被写体検出していればステップＳ７０２へ進み、被写体検出していなければステップＳ７０４へ進む。ステップＳ７０２では、被写体検出モジュール１２０で検出した位置・サイズなどの情報を取得してステップＳ７０３へ進む。ステップＳ７０３では、被写体検出していることを示す被写体検出フラグをＴＲＵＥにしてステップＳ７０４へ進む。ステップＳ７０４では、被写体検出フラグの状態がＴＲＵＥであればステップＳ７０５へ進み、ＦＡＬＳＥであればステップＳ７０６へ進む。ステップＳ７０５では、最新の検出位置にＡＦ枠を設定してステップＳ７０７へ進む。ここで、被写体検出されているときのＡＦ枠のサイズは、所定のサイズにしてもよいし、被写体検出サイズに基づいて決定してもよい。ステップＳ７０６では、中央領域などの所定位置にＡＦ枠を設定してステップＳ７０７へ進む。ステップＳ７０７では、ステップＳ７０５、またはステップＳ７０６で設定したＡＦ枠において焦点評価値及び輝度値を取得してステップＳ７０８へ進む。ステップＳ７０８では、後述するステップＳ７１３の山登りＡＦにおいてピークが検出されたことを示すピーク検出フラグの状態がＴＲＵＥであればステップＳ７１０へ進み、ＦＡＬＳＥであれば、ステップＳ７０９へ進む。ステップＳ７０９では、後述する図８での処理に従って山登りＡＦを行ってステップＳ７０７へ進む。ステップＳ７１０では、被写体距離が変化したことを示す距離変化フラグの状態がＴＵＲＥであればステップＳ７１２へ進み、ＦＡＬＳＥであればステップＳ７１１へ進む。ステップＳ７１１では、合焦フラグがＴＲＵＥであればステップＳ７１３へ進み、ＦＡＬＳＥであればステップＳ７１２へ進む。ステップＳ７１２では、後述する図１１での処理に従ってＳｅｒｖｏ中ＡＦ動作を行って、ステップＳ２０９またはステップＳ２１５へ進む。ステップＳ７１３では後述する図９での処理に従って被写体距離変化判定を行ってステップＳ２０９または、ステップＳ２１５へ進む。
【００４５】
＜山登りＡＦ制御＞
図８を参照して、図６のＳ６０９及び図７のＳ７０９における山登りＡＦ制御について説明する。
【００４６】
図８において、ステップＳ８０１では、フォーカスレンズ１０４の現在位置を取得してステップＳ８０２へ進む。ステップＳ８０２では、焦点評価値・輝度値の取得及びフォーカスレンズ１０４の現在位置の取得をカウントするための取得カウンタに１を加えてステップＳ８０３へ進む。この取得カウンタは、初期化動作（図示略）において予め０に設定されているものとする。ステップＳ８０３では、取得カウンタの値が１か判定し、取得カウンタの値が１ならば、ステップＳ８０６へ進み、取得カウンタの値が１でなければステップＳ８０４へ進む。ステップＳ８０４では、「今回の焦点評価値」が「前回の焦点評価値」よりも大きいか判定し、「今回の焦点評価値」が「前回の焦点評価値」よりも大きければステップＳ８０５へ進み、そうでなければステップＳ８１２へ進む。ステップＳ８０５では、「今回の焦点評価値」が「前回の焦点評価値」よりも大きいことを示す増加カウンタに１を加えてステップＳ８０６へ進む。この増加カウンタは、初期化動作（図示略）において予め０に設定されているものとする。ステップＳ８０６では、今回の焦点評価値を焦点評価値の最大値としてシステム制御部１１２に内蔵される図示しない演算メモリに記憶して、ステップＳ８０７へ進む。ステップＳ８０７では、フォーカスレンズ１０４の現在の位置を焦点評価値のピーク位置としてシステム制御部１１２に内蔵される図示しない演算メモリに記憶して、ステップＳ８０８へ進む。ステップＳ８０８では、今回の焦点評価値を前回の焦点評価値としてシステム制御部１１２に内蔵される図示しない演算メモリに記憶してステップＳ８０９へ進む。ステップＳ８０９では、フォーカスレンズ１０４の現在位置が測距範囲の端にあるか判定し、測距範囲の端にあればステップＳ８１０へ進み、測距範囲の端になければステップＳ８１１へ進む。ステップＳ８１０では、フォーカスレンズ１０４の移動方向を反転してステップＳ８１１へ進む。ステップＳ８１１では、フォーカスレンズ１０４を所定量移動してステップＳ２０９、またはステップＳ２１５へ進む。
【００４７】
ステップＳ８１２では、「焦点評価値の最大値−今回の焦点評価値」が所定量より大きいか判定し、所定量より大きければステップＳ８１３へ進み、そうでなければステップＳ８０８へ進む。ここで、「焦点評価値の最大値−今回の焦点評価値」が所定量より大きいこと、即ち最大値から所定量減少していれば、その最大値を合焦状態のピーク位置での値とみなす。ステップＳ８１３では、増加カウンタが０より大きいか判定し、増加カウンタが０より大きければステップＳ８１４へ進み、そうでなければステップＳ８０８へ進む。ステップＳ８１４では、フォーカスレンズ１０４を前記ステップＳ８０７で記憶した焦点評価値が最大値となったピーク位置へ移動させて、ステップＳ８１５へ進む。ステップＳ８１５では、ピーク検出フラグをＴＲＵＥにしてステップＳ８１６へ進む。ステップＳ８１６では、取得カウンタを０としてステップＳ２０９、またはステップＳ２１５へ進む。
【００４８】
＜被写体距離変化判定処理＞
図９を参照して、図６のＳ６１０及び図７のＳ７１３における被写体距離変化判定処理について説明する。
【００４９】
図９において、ステップＳ９０１では、図３の主被写体情報の変化判断処理において被写体が動いたか判定する。次に、ステップＳ９０２へ進み、被写体が動いているならばステップＳ９１１へ進み、被写体が動いていないならばステップＳ９０３へ進む。ステップＳ９０３では、前回取得した輝度値に対して、今回取得した輝度値が所定値以上変化したか判定し、所定値以上変化していればステップＳ９０４へ進み、所定値以上変化していなければステップＳ９０６へ進む。ステップＳ９０４では、輝度値変化回数に１を加えてステップＳ９０５へ進む。ステップＳ９０５では、輝度値変化回数が閾値以上か判定し、閾値以上であればステップＳ９１１へ進み、そうでなければステップＳ９０６へ進む。ステップＳ９０６では、前回の焦点評価値に対して、今回の焦点評価値が所定値以上変化したか判定し、所定値以上変化していればステップＳ９０７へ進み、所定値以上変化していなければステップＳ９０９へ進む。ステップＳ９０７では、焦点評価値変化回数に１を加えてステップ９０８へ進む。ステップＳ９０８では、焦点評価値変化回数が閾値以上か判定し、閾値以上であればステップＳ９１１へ進み、そうでなければステップＳ９０９へ進む。
【００５０】
ステップＳ９１１では、合焦フラグをＦＡＬＳＥ、距離変化フラグをＴＲＵＥにして処理を終了し、ステップＳ６１１またはステップＳ２０９、ステップＳ２１５へ進む。ステップＳ９１８では、被写体情報・輝度値・焦点評価値のいずれも変化していなければステップＳ９１０へ進み、どれかの評価値が変化していれば処理を終了してステップＳ６１１またはステップＳ２０９、ステップＳ２１５へ進む。ステップＳ９１３では、輝度値変化回数・焦点評価値変化回数を０にして処理を終了し、ステップＳ６１１またはステップＳ２０９、ステップＳ２１５へ進む。
【００５１】
＜通常ＡＦ動作＆焦点検出処理＞
図１０を参照して、図２のＳ２１２における通常ＡＦ動作について説明する。
【００５２】
図１０において、ステップＳ１００１では、被写体検出モジュール１２０が被写体検出したか判定し、被写体検出していればステップＳ１００２へ進み、被写体検出していなければステップＳ１００４へ進む。ステップＳ１００２では、被写体検出モジュール１２０で検出した位置・サイズなどの情報を取得してステップＳ１００３へ進む。ステップＳ１００３では、被写体検出していることを示す被写体検出フラグをＴＲＵＥにしてステップＳ１００４へ進む。ステップＳ１００４では、被写体検出フラグの状態がＴＲＵＥであればステップＳ１００５へ進み、ＦＡＬＳＥであればステップＳ１００６へ進む。ステップＳ１００５では、最新の被写体検出位置にＡＦ枠を設定してステップＳ１００７へ進む。ここで、被写体検出されているときのＡＦ枠のサイズは、所定のサイズにしてもよいし、被写体検出サイズに基づいて決定してもよい。
【００５３】
ステップＳ１００６では、中央領域などの所定位置にＡＦ枠を設定してステップＳ１００７へ進む。ステップＳ１００７では、ＡＦモードがＣｏｎｔｉｎｕｏｕｓＡＦであるかＳｉｎｇｌｅＡＦモードであるか判定し、ＣｏｎｔｉｎｕｏｕｓＡＦモードであればステップＳ１００８へ進み、ＳｉｎｇｌｅＡＦモードであればステップＳ１０１０へ進む。ステップＳ１００８ではピーク検出フラグがＴＲＵＥであればステップＳ１０１１へ進み、ＦＡＬＳＥであればステップＳ１０１０へ進む。ステップＳ１０１０では、スキャン範囲を全域に設定してステップＳ１０１２へ進む。ステップＳ１０１１では、スキャン範囲をフォーカスレンズ１０４の現在位置を中心とした所定範囲に設定してステップＳ１０１２へ進む。ステップＳ１０１２では、後述する図１５での処理に従ってスキャンを行って、ステップＳ１０１３へ進む。ステップＳ１０１３では、後述する図１６での処理に従って合焦状態の判定を行って、ステップＳ１０１４へ進む。ステップＳ１０１４では、ステップＳ１０１３における合焦状態の判定結果が○判定か判定し、○判定であればステップＳ１０１５へ進み、○判定でなければステップＳ１０１７へ進む。
【００５４】
ステップＳ１０１５では、フォーカスレンズ１０４をステップＳ１０１２で計算したピーク位置へ移動してステップＳ１０１６へ進む。ステップＳ１０１６では、ピーク検出フラグ及び合焦フラグをＴＲＵＥ、距離変化フラグをＦＡＬＳＥにして通常ＡＦ動作を終了し、ステップＳ１０１３へ進む。ステップＳ１０１７では、フォーカスレンズ１０４を予め設定している位置（定点）へと移動してステップＳ１０１８へ進む。ここで、定点は被写体の存在確率の高い距離に設定する。顔が検出されていれば、顔サイズより人物の距離を推定して算出した距離に設定してもよい。ステップＳ１０１８では、ピーク検出フラグ及び距離変化フラグをＦＡＬＳＥにして通常ＡＦ動作を終了し、ステップＳ２１３へ進む。
【００５５】
＜Ｓｅｒｖｏ中ＡＦ動作＞
図１１を参照して、図７のＳ７１２におけるＳｅｒｖｏ中ＡＦ動作について説明する。
【００５６】
図１１において、ステップＳ１１０１では、現在の時刻と、次回のスキャン（Ｓ１１１０でのスキャン）にかかる時間から、次回スキャン時にフォーカスレンズ１０４の位置がスキャン範囲の中心に位置する予測時刻ＰｒｅＴｉｍｅを算出する。次にステップＳ１１０２では、後述する図１２での処理に従って予測可能判定を行って、ステップＳ１１０３へ進む。ステップＳ１１０３では、ステップＳ１１０２の予測可能判定における予測可能判定結果が○判定であればステップＳ１１０４へ進み、○判定でなければステップＳ１１０５へ進む。
【００５７】
ステップＳ１１０４では、後述する図１３での処理に従って被写体位置予測を行って、ステップＳ１１０７へ進む。ステップＳ１１０５では、後述する過去の動体予測用のデータＳｃａｎＴｉｍｅ［０］〜ＳｃａｎＴｉｍｅ［ｉ−１］及びＨｏｋａｎＰｅａｋ［０］〜ＨｏｋａｎＰｅａｋ［ｉ−１］をクリアする。更に連続して予測可能判定となった回数を示すｉを０にしてステップＳ１１０６へ進む。ステップＳ１１０６では、フォーカスレンズ１０４の現在位置をスキャン中心位置に設定して、ステップＳ１１０７へ進む。ステップＳ１１０７では、合焦フラグがＴＲＵＥであればステップＳ１１０８へ進み、ＦＡＬＳＥであればステップＳ１１０９へ進む。ステップＳ１１０８では、スキャン範囲を所定範囲に設定してステップＳ１１１０へ進む。
【００５８】
ステップＳ１１０９では、ステップＳ１１０８で設定する所定範囲よりも広い範囲にスキャン範囲を設定してステップＳ１１１０へ進む。ステップＳ１１１０では、後述する図１５での処理に従ってスキャンを行って、ステップＳ１１１１へ進む。ステップＳ１１１１では、後述する図１６での処理に従って合焦状態の判定を行って、ステップＳ１１１２へ進む。ステップＳ１１１２では、ステップＳ１１１１で判定した合焦状態の判定結果が○判定であればステップＳ１１１３へ進み、○判定でなければステップＳ１１２５へ進む。ステップＳ１１１３では、合焦フラグをＴＲＵＥにしてステップＳ１１１４へ進む。ステップＳ１１１４では、連続して合焦状態の判定結果が○判定でなかった回数を示す×ｃｏｕｎｔを０にしてステップＳ１１１５へ進む。
【００５９】
ステップＳ１１１５では、ステップＳ１１１０におけるスキャン結果（ピーク位置）とスキャン中心位置の差が所定値より小さいか判定し、所定値より小さければステップＳ１１１６へ進み、そうでなければステップＳ１１１９へ進む。ステップＳ１１１６では、連続してステップＳ１１１０におけるピーク位置とスキャン中心位置の差が所定値より小さくなった回数を示すＳｔＣｏｕｎｔに１を加えてステップＳ１１１７へ進む。ステップＳ１１１７では、ＳｔＣｏｕｎｔが閾値以上であるか判定し、閾値以上であればステップＳ１１１８へ進み、そうでなければステップＳ１１２０へ進む。ステップＳ１１１８では、被写体の距離変化がなくなったと判断して、距離変化フラグをＦＡＬＳＥにしてＳｅｒｖｏ中ＡＦ動作を終了し、ステップＳ２０９またはステップＳ２１５へ進む。これにより、被写体距離が変化しない場合には、無駄にスキャンを繰り返すことなくフォーカスレンズを停止させることができる。
【００６０】
ステップＳ１１１９では、ＳｔＣｏｕｎｔを０にクリアしてステップＳ１１２０へ進む。ステップＳ１１２０では、ステップＳ１１１０における今回のスキャン中心位置に対する今回のピーク位置の方向と、前回のスキャン中心位置に対する前回のピーク位置の方向とが同方向であるか判定する。そして、同方向であればステップＳ１１２１へ進み、同方向でなければステップＳ１１２２へ進む。ステップＳ１１２１では、同方向移動フラグをＴＲＵＥにしてステップＳ１１２３へ進む。ステップＳ１１２２では、同方向移動フラグをＦＡＬＳＥにしてステップＳ１１２３へ進む。ステップＳ１１２３では、今回のスキャンにおいてフォーカスレンズ１０４の位置がスキャン範囲の中心に位置した時刻をＳｃａｎＴｉｍｅ［ｉ］として、今回のスキャンにおけるピーク位置をＨｏｋａｎＰｅａｋ［ｉ］としてステップＳ１１２４へ進む。ステップＳ１１２４では、ｉに１を加えてＳｅｒｖｏ中ＡＦ動作を終了し、ステップＳ２０９またはステップＳ２１５へ進む。
【００６１】
ステップＳ１１２５では、合焦フラグをＦＡＬＳＥにしてステップＳ１１２６へ進む。ステップＳ１１２６では×Ｃｏｕｎｔに１を加えてステップＳ１１２７へ進む。ステップＳ１１２７では、×Ｃｏｕｎｔが所定値よりも大きいか判定し、所定値より大きければステップＳ１１２８へ進み、そうでなければＳｅｒｖｏ中ＡＦ動作を終了し、ステップＳ２０９またはステップＳ２１５へ進む。ステップＳ１１２８では、ピーク検出フラグ及び距離変化フラグをＦＡＬＳＥにしてＳｅｒｖｏ中ＡＦ動作を終了し、ステップＳ２０９またはステップＳ２１５へ進む。
【００６２】
＜予測可能判定処理＞
図１２を参照して、図１１のＳ１１０２における予測可能判定処理について説明する。
【００６３】
図１２において、ステップＳ１２０１では、ｉ＝０か判定し、０であればステップＳ１２０５へ進み、そうでなければステップＳ１２０２へ進む。ステップＳ１２０２では、ＰｒｅＴｉｍｅとＳｃａｎＴｉｍｅ［ｉ−１］の差が所定時間よりも短いか判定し、所定時間よりも短ければステップＳ１２０３へ進み、そうでなければステップＳ１２０５へ進む。これより、前回のスキャンから今回のスキャンまでの間の時間が分かり、前回のスキャン結果を使用した予測の信頼性があるのか判断することができる。ステップＳ１２０３では同方向移動フラグがＴＲＵＥか判定し、同方向移動フラグがＴＲＵＥであればステップＳ１２０４へ進み、ＦＡＬＳＥであればステップＳ１２０５へ進む。これにより、被写体が距離方向で同方向に移動しているときにのみ予測を行うことで、誤測距の結果を使用することによる誤った予測を低減することができる。ステップＳ１２０４では、予測可能判定の結果を○判定として処理を終了し、ステップＳ１１０３へ進む。ステップＳ１２０５では、予測可能判定の結果を×判定として処理を終了し、ステップＳ１１０３へ進む。
【００６４】
＜被写体位置予測処理＞
図１３及び図１４を参照して、図１１のＳ１１０４における被写体位置予測処理について説明する。
【００６５】
図１３において、ステップＳ１３０１では、ｉが２より小さいか判定し、ｉが２より小さければステップＳ１３０２へ進み、そうでなければステップＳ１３０３へ進む。ステップＳ１３０２ではスキャン中心位置を前回のスキャンのピーク位置に設定して処理を終了し、ステップＳ１１０７へ進む。ステップＳ１３０３では、ｉ＝２であるか判定し、ｉ＝２であればステップＳ１３０４へ進み、ｉが２より大きければステップＳ１３０６へ進む。
【００６６】
ステップＳ１３０４では、図１４（ａ）に示すように、動体予測式１を使って２点で１次近似処理を行う。具体的には、（ＳｃａｎＴｉｍｅ［０］，ＨｏｋａｎＰｅａｋ［０］）と、（ＳｃａｎＴｉｍｅ［１］，ＨｏｋａｎＰｅａｋ［１］）の２点より、ＰｒｅＴｉｍｅ時の被写体の予測位置ＰｒｅＰｏｓｉｔｉｏｎを算出してステップＳ１３０５へ進む。
【００６７】
（動体予測式１）
ＰｒｅＰｏｓｉｔｉｏｎ＝（ＰｒｅＴｉｍｅ−ＳｃａｎＴｉｍｅ［０］）×（ＨｏｋａｎＰｅａｋ［１］−ＨｏｋａｎＰｅａｋ［０］）／（ＳｃａｎＴｉｍｅ［１］−ＳｃａｎＴｉｍｅ［０］）＋ＨｏｋａｎＰｅａｋ［０］
ステップＳ１３０５では、ステップＳ１３０４で算出した被写体の予測位置ＰｒｅＰｏｓｉｔｉｏｎをスキャン中心位置に設定して処理を終了し、ステップＳ１１０７へ進む。
【００６８】
ステップＳ１３０６では、図１４（ｂ）に示すように、動体予測式２を使って３点で２次近似処理を行う。具体的には、（ＳｃａｎＴｉｍｅ［ｉ−２］，ＨｏｋａｎＰｅａｋ［ｉ−２］）、（ＳｃａｎＴｉｍｅ［ｉ−１］，ＨｏｋａｎＰｅａｋ［ｉ−１］）、（ＳｃａｎＴｉｍｅ［ｉ］，ＨｏｋａｎＰｅａｋ［ｉ］）の３点より、ＰｒｅＴｉｍｅ時の被写体の予測位置ＰｒｅＰｏｓｉｔｉｏｎを算出してステップＳ１３０７へ進む。
【００６９】
（動体予測式２）
ＰｒｅＰｏｓｉｔｉｏｎ＝（ｔ３／ｔ２）×｛（ｔ３−ｔ２）×（ｔ２×Ｐｏｓ１−ｔ１×Ｐｏｓ２）／ｔ１／（ｔ１−ｔ２）＋Ｐｏｓ２｝＋ＨｏｋａｎＰｅａｋ［ｉ−２］
ｔ１＝ＳｃａｎＴｉｍｅ［ｉ−１］−ＳｃａｎＴｉｍｅ［ｉ−２］
ｔ２＝ＳｃａｎＴｉｍｅ［ｉ］−ＳｃａｎＴｉｍｅ［ｉ−２］
ｔ３＝ＰｒｅＴｉｍｅ−ＳｃａｎＴｉｍｅ［ｉ−２］
Ｐｏｓ１＝ＨｏｋａｎＰｅａｋ［ｉ−１］−ＨｏｋａｎＰｅａｋ［ｉ−２］
Ｐｏｓ２＝ＨｏｋａｎＰｅａｋ［ｉ］−ＨｏｋａｎＰｅａｋ［ｉ−２］
ステップＳ１３０７では、ステップＳ１３０６で算出した被写体の予測位置ＰｒｅＰｏｓｉｔｉｏｎをスキャン中心位置に設定して処理を終了し、ステップＳ１１０７へ進む。
【００７０】
＜スキャン動作＞
図１５を参照して、図１０のＳ１０１２及び図１１のＳ１１１０におけるスキャン動作について説明する。
【００７１】
図１５において、ステップＳ１５０１ではフォーカスレンズ１０４をスキャン開始位置に移動する。スキャン開始位置は設定されたスキャン範囲の一端に設定される。ステップＳ１５０２では、撮影画面内に設定される測距領域の焦点評価値とフォーカスレンズ１０４の位置をシステム制御部１１２に内蔵される図示しない演算メモリに記憶する。ステップＳ１５０３ではレンズ位置がスキャン終了位置にあるか判定し、終了位置であればステップＳ１５０５へ、そうでなければステップＳ１５０４へ進む。スキャン終了位置は、設定されたスキャン範囲の他端に設定される。ステップＳ１５０４ではフォーカスレンズ１０４を駆動して所定の方向へ所定量動かしてステップＳ１５０２へ進む。ステップＳ１５０５では、ステップＳ１５０２で記憶した焦点評価値とそのレンズ位置から、焦点評価値のピーク位置を計算する。
【００７２】
＜合焦状態判定処理＞
図１６乃至図１９を参照して、図１０のＳ１０１３及び図１１のＳ１１１１における合焦状態判定処理について説明する。
【００７３】
焦点評価値は遠近競合などの特殊な場合を除けば、横軸にフォーカスレンズ位置、縦軸に焦点評価値をとると図１９に示すような山状になる。そこで焦点評価値が山状になっているか否かを、焦点評価値の最大値と最小値の差、一定値（ＳｌｏｐｅＴｈｒ）以上の傾きで傾斜している部分の長さ、傾斜している部分の勾配から判断することにより、合焦状態の判定を行うことができる。合焦状態の判定結果は、以下に示すように○×で出力される。
○：焦点評価値のピーク位置から、被写体の焦点調節が可能である。
×：被写体のコントラストが不十分、もしくはスキャンした距離範囲外の距離に被写体が位置する。
【００７４】
ここで図１９に示すように、山の頂上（Ａ点）から傾斜が続いていると認められる点をＤ点、Ｅ点とし、Ｄ点とＥ点の幅を山の幅Ｌ、Ａ点とＤ点の焦点評価値の差ＳＬ１とＡ点とＥ点の焦点評価値の差ＳＬ２の和ＳＬ１＋ＳＬ２をＳＬとする。
【００７５】
図１６において、ステップＳ１６０１では、焦点評価値の最大値と最小値、及び最大値を与えるスキャンポイントｉｏを求めてステップＳ１６０２へ進む。ステップＳ１６０２では、焦点評価値の山の幅を表す変数Ｌ、山の勾配を表す変数ＳＬをともに零に初期化してステップＳ１６０３へ進む。ステップＳ１６０３では、最大値を与えるスキャンポイントｉｏがスキャンを行った所定範囲における遠側端の位置か判定し、遠側端位置でないならばステップＳ１６０４へ進み無限遠方向への単調減少チェックを行う。遠側端位置であったならば、無限遠方向の単調減少チェックをスキップしステップＳ１６０５に進む。
【００７６】
＜無限遠方向の単調減少チェック＞
ここで、図１７を参照して、Ｓ１６０４での無限遠方向への単調減少チェックについて説明する。図１７において、ステップＳ１７０１では、カウンタ変数ｉをｉｏに初期化してステップＳ１７０２へ進む。ステップＳ１７０２では、スキャンポイントｉにおける焦点評価値の値ｄ［ｉ］と、ｉより１スキャンポイント分無限遠よりのスキャンポイントｉ−１における焦点評価値の値ｄ［ｉ−１］の差を所定値ＳｌｏｐｅＴｈｒと比較する。ｄ［ｉ］−ｄ［ｉ−１］≧ＳｌｏｐｅＴｈｒであれば、無限遠方向への単調減少が生じていると判断し、ステップＳ１７０３に進む。
【００７７】
一方、ｄ［ｉ］−ｄ［ｉ−１］≧ＳｌｏｐｅＴｈｒでなければ、無限遠方向への単調減少は生じていないと判断し、無限遠方向への単調減少チェックを終了し、ステップＳ１６０５へ進む。
【００７８】
無限遠方向への単調減少をチェックする処理を継続する場合はステップＳ１７０３へ進む。ステップＳ１７０３では、焦点評価値が一定値以上の傾きで傾斜している部分の長さ（山の幅）を表す変数Ｌ、単調減少区間における減少量を表す変数ＳＬを以下の式に従い更新してステップＳ１７０４へ進む。
Ｌ＝Ｌ＋１
ＳＬ＝ＳＬ＋（ｄ［ｉ］−ｄ［ｉ−１］）
ステップＳ１７０４では、ｉ＝ｉ−１として、検出をする点を１スキャンポイント無限遠側に移してステップＳ１７０５へ進む。ステップＳ１７０５では、カウンタｉがスキャンを行った所定範囲における遠側端位置の値（＝０）になったかチェックする。カウンタｉの値が０、すなわち単調減少を検出する開始点がスキャンを行った所定範囲における遠側端位置に達したならば、無限遠方向への単調減少チェックを終了し、ステップＳ１６０５へ進む。
【００７９】
以上のようにしてｉ＝ｉｏから無限遠方向への単調減少をチェックする。
【００８０】
ステップＳ１６０５では、最大値を与えるスキャンポイントｉｏがスキャンを行った所定範囲における至近端の位置か判定し、至近端位置でないならばステップＳ１６０６へ進み至近端方向への単調減少をチェックする。至近端位置であったならば、至近端方向の単調減少チェックをスキップしステップＳ１６０７に進む。
【００８１】
＜至近端方向の単調減少チェック＞
ここで、図１８を参照して、Ｓ１６０６での至近端方向への単調減少チェックについて説明する。図１８において、ステップＳ１８０１において、カウンタ変数ｉをｉｏに初期化してステップＳ１８０２へ進む。ステップＳ１８０２では、スキャンポイントｉにおける焦点評価値の値ｄ［ｉ］と、ｉより１スキャンポイント分至近端よりのスキャンポイントｉ＋１における焦点評価値の値ｄ［ｉ＋１］の差を所定値ＳｌｏｐｅＴｈｒと比較する。ｄ［ｉ］−ｄ［ｉ＋１］≧ＳｌｏｐｅＴｈｒであれば、至近端方向への単調減少が生じていると判断し、ステップＳ１８０３に進む。
【００８２】
一方、ｄ［ｉ］−ｄ［ｉ＋１］≧ＳｌｏｐｅＴｈｒでなければ、至近端方向への単調減少は生じていないと判断し、至近端方向への単調減少チェックを終了し、ステップＳ１６０７へ進む。
【００８３】
至近端方向への単調減少をチェックする処理を継続する場合はステップＳ１８０３へ進む。ステップＳ１８０３では、焦点評価値が一定値以上の傾きで傾斜している部分の長さ（山の幅）を表す変数Ｌ、単調減少区間における減少量を表す変数ＳＬを以下の式に従い更新してステップＳ１８０４へ進む。
Ｌ＝Ｌ＋１
ＳＬ＝ＳＬ＋（ｄ［ｉ］−ｄ［ｉ＋１］）
ステップＳ１８０４では、ｉ＝ｉ＋１として、検出をする点を１スキャンポイント至近端側に移してステップＳ１８０５へ進む。
【００８４】
ステップＳ１８０５では、カウンタｉがスキャンを行った所定範囲における至近端位置の値（＝Ｎ）になったかチェックする。カウンタｉの値がＮ、すなわち単調減少を検出する開始点がスキャンを行った所定範囲における至近端位置に達したならば、至近端方向への単調減少チェックを終了し、ステップＳ１６０７へ進む。
【００８５】
以上のようにしてｉ＝ｉｏから至近端方向への単調減少をチェックする。
【００８６】
無限遠方向および至近端方向への単調減少チェックが終了したならば、得られた焦点評価値が山状になっているか否か、諸係数をそれぞれの閾値と比較し、○×の判定を行う。
【００８７】
ステップＳ１６０７では、焦点評価値の最大値を与えるスキャンポイントｉｏがスキャンを行った所定範囲における至近端であり、かつ至近端スキャンポイントｎにおける焦点評価値の値ｄ［ｎ］と、ｎより１スキャンポイント分無限遠よりのスキャンポイントｎ−１における焦点評価値の値ｄ［ｎ−１］の差が所定値ＳｌｏｐｅＴｈｒ以上であればステップＳ１６１１へ進み、そうでなければステップＳ１６０８へ進む。ステップＳ１６０８では、焦点評価値の最大値を与えるスキャンポイントｉｏがスキャンを行った所定範囲における遠側端であり、かつ遠側端スキャンポイント０における焦点評価値の値ｄ［０］と、０より１スキャンポイント分至近端よりのスキャンポイント１における焦点評価値の値ｄ［１］の差が、所定値ＳｌｏｐｅＴｈｒ以上であればステップＳ１６１１へ進み、そうでなければステップＳ１６０９へ進む。
【００８８】
ステップＳ１６０９では、一定値以上の傾きで傾斜している部分の長さＬが所定値Ｌｏ以上、かつ傾斜している部分の傾斜の平均値ＳＬ／Ｌが所定値ＳＬｏ／Ｌｏ以上、かつ焦点評価値の最大値と最小値の差が所定値以上であれば、ステップＳ１６１０へ進む。そうでなければステップＳ１６１１へ進む。ステップＳ１６１０では、得られた焦点評価値が山状となっていて、被写体の焦点調節が可能であるため判定結果を○としている。ステップＳ１６１１では、得られた焦点評価値が山状となっておらず、被写体の焦点調節が不可能であるため判定結果を×としている。
【００８９】
以上のようにして、図１０のＳ１０１３及び図１１のＳ１１１１の合焦状態判定処理を行う。
【００９０】
＜撮影動作＞
図２０を参照して、図２のＳ２１７における撮影動作について説明する。
【００９１】
図２０において、ステップＳ２００１では、被写体輝度を測定してステップＳ２００１へ進む。ステップＳ２００２ではステップＳ２００１で測定した被写体輝度に応じて撮像素子１０６への露光を行ってステップＳ２００３へ進む。撮像素子面上に結像された像は光電変換されてアナログ信号となり、ステップＳ２００３にてＡ／Ｄ変換部１０７へと送られ、撮像素子１０６の出力ノイズ除去や非線形処理などの前処理の後にデジタル信号に変換される。ステップＳ２００４では、Ａ／Ｄ変換部１０７からの出力信号を画像処理部１０８でホワイトバランス調整し、適正な出力画像信号としてステップＳ２００５へ進む。ステップＳ２００５では、出力画像信号をフォーマット変換部１０９でＪＰＥＧフォーマット等へのフォーマット変換を行い、ＤＲＡＭ１１０に一時的に記憶してステップＳ２００６へ進む。ステップＳ２００６では、ＤＲＡＭ１１０のデータを画像記録部１１１にて撮像装置内のメモリ、または撮像装置に装着されたメモリカードなどの外部記憶媒体へと転送・記憶して撮影動作を終了し、ステップＳ２０１へと戻る。
【００９２】
以上説明したように、本実施形態によれば、画像信号から被写体を検出する方法に応じて、その被写体に適した動き判定を行うことができる。なお、本実施形態では、動き判定結果に応じてＣｏｎｔｉｎｕｏｕｓＡＦ制御とＳｅｒｖｏＡＦ制御を切り換える例をあげて説明を行ったが、本発明はこれに限られるものではない。
【００９３】
例えば、この動き判定を露出制御に適用すれば、被写体が動いていると判定した場合には、そうでない場合に比較して、露光時間を短くしたり、画面中の測光重点領域のサイズを拡大したりすることが考えられる。あるいは、ノイズリダクション制御に適用すれば、被写体が動いていると判定した場合には、そうでない場合に比較して、巡回係数の値を小さくしたり、演算の計算式自体を簡略化したりすることが考えられる。あるいは、監視カメラなどのセキュリティ制御に適用すれば、被写体が動いていると判定した場合には、そうでない場合に比較して、撮影感度を高くしたり、被写体領域の画像の表示倍率を拡大したりすることが考えられる。
【００９４】
このように、被写体の動きの有無を判定し、その判定結果を用いて制御を切り換えることはすでに様々な技術分野に応用されており、本実施形態における動き判定方法は、これらのいずれの技術分野にも適用することが可能である。
【００９５】
［他の実施形態］
本発明は、以下の処理を実行することによっても実現される。即ち、上記実施形態の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
0005871463.tif 000002
【図２】
0005871463.tif 000003
【図３】
0005871463.tif 000004
【図４Ａ】
0005871463.tif 000005
【図４Ｂ】
0005871463.tif 000006
【図５】
0005871463.tif 000007
【図６】
0005871463.tif 000008
【図７】
0005871463.tif 000009
【図８】
0005871463.tif 000010
【図９】
0005871463.tif 000011
【図１０】
0005871463.tif 000012
【図１１】
0005871463.tif 000013
【図１２】
0005871463.tif 000014
【図１３】
0005871463.tif 000015
【図１４】
0005871463.tif 000016
【図１５】
0005871463.tif 000017
【図１６】
0005871463.tif 000018
【図１７】
0005871463.tif 000019
【図１８】
0005871463.tif 000020
【図１９】
0005871463.tif 000021
【図２０】
0005871463.tif 000022
【図２１】
0005871463.tif 000023