以下、図面を参照しながら本発明の実施形態に係る撮像装置とその合焦制御法を説明する。
図1は本発明の一実施形態を適用した電子カメラの構成例を示すブロック図である。撮影光学系は、ズーム機構を含む撮影レンズ101、光量を制御する絞り及びシャッタ102、焦点調節用のフォーカスレンズ103を備える。
AE(自動露出)処理部104は、後述のシステム制御部からの指示に従い絞り及びシャッタ102を制御する。AF処理部105は、後述のシステム制御部からの指示に従いフォーカスレンズ103を制御し、自動焦点調節を行う。撮像素子106は被写体からの反射光を受光して電気信号に変換する光電変換手段であり、その出力はA/D変換部107に送られる。
A/D変換部107は、出力ノイズを除去するCDS回路やA/D変換前に行う非線形増幅回路を含む。画像処理部108はA/D変換部107の出力信号を処理して、AE処理部104や後述のシステム制御部等に信号を送出する。システム制御部は画像データに基づいて合焦状態を示す焦点信号を得て、AF処理部105に制御指令を送り、焦点調節動作を制御する。画像処理部108による画像データはフォーマット変換部109によって変換されて、高速なメモリ110に記憶される。例えばランダムアクセスメモリ(以下、DRAMと記す)が使用され、一時的な画像記憶手段としての高速バッファや、画像の圧縮伸張における作業用メモリ等に使用される。画像記録部111はメモリカード等の記録媒体とそのインターフェース部を備え、画像データを記録媒体に記録する。
装置全体の制御を司るシステム制御部112は、撮影シーケンス等を制御する。画像表示用メモリ(以下、VRAMと記す)113は、操作表示部114に撮影画像を表示するための画像データを記憶している。操作表示部114は画像表示の他、操作補助のための表示やカメラ状態の表示を行い、撮影時には撮影した画像と焦点検出領域を表示する。なお後述する各種の処理はシステム制御部112を構成するCPU(中央演算処理装置)によって解釈及び実行されるプログラムに従って実現される。
操作部115はカメラの操作手段であり、各種の操作指示をシステム制御部112に伝える。例えば撮像装置の撮影機能や画像再生時の設定等の各種設定を行うメニュースイッチ、撮影レンズのズーム動作を指示するズームレバー、撮影モードと再生モードの動作モード切換えスイッチ等が挙げられる。撮影モードスイッチ116は、顔検出モードのオン/オフを切り替える等の設定を行うためのスイッチであり、その指示はシステム制御部112に送られる。メインスイッチ117の操作によりシステムに電源が投入され、又は電源が遮断される。スイッチ118はAFやAE等の撮影スタンバイ動作を行うためのスイッチ(以下、SW1と記す)であり、スイッチ119はSW1の操作後、撮影を行うための撮影スイッチ(以下、SW2と記す)である。
顔検出モジュール120は画像処理部108で処理した画像信号を用いて顔検出を行う。ここで検出した1つ又は複数の顔情報(位置・大きさ・信頼度)はシステム制御部112に送られる。なお顔検出については既知の方法を使用でき、また本発明の主眼点ではないので詳細な説明は省略する。
動体検出部121は画像処理部108に接続されており、撮影画面内の被写体及び背景が動いているか否かを検出し、動体情報をシステム制御部112に送る。具体的には、画像処理部108で処理した画像信号のうち、時系列的に並んだ2枚の画像を比較し、その輝度の差分情報から被写体や背景の動体情報(動作量、位置、範囲)を検出する。
次に図2のフローチャートを参照しながらカメラ動作について説明する。まずS201ではシステム制御部112が、撮影準備を指示するSW1の状態(ON/OFF)を判定する。その結果、SW1の状態がON(オン)状態の場合、S212へ進み、OFF(オフ)状態の場合にはS202へ進む。S202ではシーン安定判断が行われる。これは撮影シーンが安定したか否かの判断処理であり、その手順の詳細は後述する。S203ではS202において撮影シーンが安定したと判断したか否かをシステム制御部112が調べる。安定の判断時には戻り値がTRUE(真)であり、撮影シーンが安定していないと判断された場合には戻り値がFALSE(偽)となる。TRUEの場合、S204へ進み、FALSEの場合、S201へ戻る。なお撮影シーンが安定した状態とは、撮影する被写体、カメラの状態が安定して維持され、撮影に適した状態になっている事である。撮影シーンが安定せず、当該シーンが確定しないと判断された場合には、無闇にフォーカスレンズ103を駆動させずに、停止させることが望ましい。
S204にて、被写体輝度が所定値以下か否かをシステム制御部112が判定する。その結果、被写体輝度が所定値以下であればS205へ進むが、そうでなければS206へ進む。S205では、低照度時用のAF枠が設定される。ここでAF枠とは、撮影画面内の焦点評価値を取得する領域の事である。また、焦点評価値とは、撮像素子106から読み出したアナログ映像信号をA/D変換部107がデジタル信号に変換し、その出力から画像処理部108が輝度信号の高周波成分を抽出した値のことである。この値を示すデータは、フォーカスレンズ103の位置及びAF枠位置と対応づけてシステム制御部112が内蔵のメモリに記憶する。「焦点評価値を取得する」とは、AF処理部105がAF制御における判断のために、システム制御部112がメモリに記憶している焦点評価値を読み出すことである。低照度時には露光時間が延びる為、スキャンでのAF精度を確保する事が出来ない。そこで本実施形態では、低照度時に、被写体領域特定や顔検出時のスキャンは行わず、画面中央付近に所定の大きさのAF枠を1枠設定する。
S206では顔検出モジュール120において、顔検出が行われたか否かを調べる。顔検出が行われていればS207へ進むが、顔検出が行われていなければS208へ進む。S207では顔検出時AFスキャンが行われ、この処理は後述する手順に従って実行され、その後にS209へ進む。S208では被写体領域を特定するためのAFスキャン処理が実行され、その手順の詳細は後述する。S205、S207、S208の後、S209に進み、コンティニュアスAFの処理が実行され、その手順の詳細は後述する。そしてS210ではシーン不安定判断の処理が実行される。これは撮影シーンが不安定か否かの判断処理であり、その手順の詳細は後述する。S211では撮影シーンが不安定か否かをシステム制御部112が判断し、不安定と判断された場合、S201へ戻る。不安定でないと判断された場合、S209に戻る。ここで、「撮影シーンが不安定である」とは、撮影する被写体の状態、カメラの状態が不安定となり、撮影に適した状態ではなくなる事である。
S201からS212に進んだ場合、合焦度判定フラグがFALSEに設定される。次のS213では、後述する手順に従って撮影処理が行われた後、S201に戻る。
以上のように、システム制御部112は撮影シーンが安定状態となって該撮影シーンが確定するまでの間は状態の監視を続行し、撮影シーンが確定した場合には焦点調節動作を行うように制御する。なお上述の動作と並行して常にAE動作が行われる。これは、システム制御部112からの制御信号に基づきAE処理部104が、絞り及びシャッタ102を制御して操作表示部114に表示される画像の明るさが適正になるよう制御する。
次に、図3のフローチャートを用いて、図2に示したS202のシーン安定判断について説明する。まずS301にてシステム制御部112は図1の動体検出部121から出力される2枚の画像データ間の輝度差分量を取得する。これは撮影画面内の輝度に関する時間的な差分量、つまり異なる時刻における画像間での輝度差を表す。次のS302でシステム制御部112は、S301で得た輝度差分量に対してフィルタ処理を実行し、ノイズ成分の除去及び被写体像の特徴量の抽出処理を行う。S303では現在の画面の明るさに応じた閾値が設定される。この閾値は撮影シーンの安定判断に用いる基準値であり、画面の明るさだけでなく、シャッタスピード、絞り値、感度、その他の撮影条件によって決定してもよい。S304ではS302で得た輝度差分量と、S303で設定した閾値とが比較される。その結果、輝度差分値が閾値以上の場合、S305に進む。現時点では、ユーザによって撮影シーンが決定されておらず、安定状態でないと判断され、戻り値としてFALSEを返して処理が終了する。一方、輝度差分値が閾値よりも小さい場合、S306に進む。ユーザは撮影シーンを決定しており、安定状態であると判断され、戻り値としてTRUEを返して処理が終了する。
次に、図4のフローチャートを用いて、図2に示したS207の顔検出時AFスキャンについて説明する。まずS401にてシステム制御部112は、顔検出モジュール120が検出した顔情報(位置・大きさ)に基づいてAF枠設定を行う。S402ではAF処理部105がフォーカスレンズ103をスキャン開始位置へと移動させる。ここで、スキャン開始位置は、例えば検出した顔の大きさより推定した人物までの距離に基づいて決定される。S403にてシステム制御部112は、現時点のフォーカスレンズ位置における焦点評価値のデータを取得してDRAM110へ記憶させる。S404ではフォーカスレンズ103の現在位置を取得し、システム制御部112は該位置のデータをDRAM110へ記憶させる。S405にてシステム制御部112は、撮影準備を指示するSW1の状態(ON/OFF)を判定する。該状態がON状態の場合、本処理を終了して図2のS212(ノードA参照)へ進むが、OFF状態の場合にはS406へ進む。S406では後述する手順に従ってシーン変化判定が実行される。このシーン変化判定とは、撮影シーンが変わったか否かを、カメラの状態や被写体の状態から判定する処理である。
S407でシステム制御部112は、フォーカスレンズ103の現在位置がスキャン終了位置と等しいかを判定する。その結果、両者が等しい場合にはS409へ進むが、そうでなければS408へ進む。なおスキャン終了位置については、例えば、検出した顔の大きさより推定した人物までの距離に基づいて決定される。S408ではAF処理部105がフォーカスレンズ103をスキャン終了方向へ向けて所定量だけ移動させた後、S403に戻る。またS409では後述する手順に従って合焦判定が行われる。S410ではS409における合焦判定により○判定となったか否かをシステム制御部112が調べる。ここで「○判定」とは、被写体のコントラストが十分にあり、かつスキャンした距離範囲内に被写体が存在する場合に得られる判定結果として定義される。判定結果が○判定の場合、S411へ進み、○判定でない場合、S414へ進む。
S411ではS403で取得した焦点評価値がピークとなる合焦位置の算出処理が行われる。S412でAF処理部105はフォーカスレンズ103を、S411で算出した合焦位置へと移動させる。S413ではピーク検出フラグがTRUEに設定される。
一方、S410からS414に進んだ場合には、○判定ではない、つまり、被写体のコントラストが不十分であるか、又はスキャンした距離範囲外に被写体が存在することになる。AF処理部105はフォーカスレンズ103を、予めDRAM110に記憶しているデータの示す位置(定点)へと移動させる。ここで定点については被写体の存在確率の高い距離に設定され、例えば、顔が検出されていれば、検出した顔の大きさより推定した人物までの距離とする。S413、S414の後、リターン処理となる。
次に図5のフローチャートを用いて、シーン変化判定について説明する。本判定は図4のS406、後述する図10のS1106、図14のS1405、図19のS2107で行われる定義済み処理である。まずS501でシステム制御部112は、顔検出モジュール120で検出した顔検出状態が変化したか否かを調べる。顔検出状態が変化していれば本判定処理を終了し、図2のS201(ノードB参照)へ戻る。顔検出状態が変化していない場合、S502へ進む。「顔検出状態」とは、顔検出されているか否かを意味する。例えば、前回のシーン変化判定時に顔検出されていて今回のシーン変化判定時に顔検出されていなければ、顔検出状態が変化したことになる。
S502でシステム制御部112は、カメラを特定方向に振った量(以下、カメラ動き量という)が所定量以上となっているか否かを調べる。カメラ動き量が所定量以上であって、判定結果が不安定であれば、本判定処理を終了して図2のS201へ戻るが、そうでなければS503へ進む。
S503でシステム制御部112は、コンティニュアスAF中であるか否かを判定する。コンティニュアスAF中の場合、S504へ進み、これは被写体輝度差が所定値(基準値)以下か否かの判断処理である。「被写体輝度差」とは、前回のシーン変化判定時に取得した被写体輝度値と、今回のシーン変化判定時に検出された被写体輝度値の差である。被写体輝度値の差が所定値より大きい場合、撮影シーンが変化したと判断され、本判定処理を終了して図2のS201へ戻る。また、被写体輝度差が所定値以下であれば、本判定処理を終了してリターン処理となる。
S503にてコンティニュアスAF中でないと判定された場合、S505へ進む。ここでシステム制御部112は、露光時間が所定時間以上であるか否かを判定する。露光時間が所定時間以上であれば、本判定処理を終了して図2のS201へ戻る。つまり、露光時間が所定時間以上の場合、焦点評価値を取得する間隔が延びてしまう為、AFの制御精度を確保出来なくなるからである。一方、露光時間が所定時間未満の場合、S506へ進む。ここでシステム制御部112は、絞り102の状態が変化したか否かを調べる。絞り102の状態が変化した場合、S507へ進むが、変化していない場合には本判定処理を終了し、リターン処理となる。なお本実施形態では、絞り制御を用いた場合について説明しているが、絞り制御の変わりにNDフィルタによって露出制御を行った場合は、NDフィルタの状態の変化を判定してもよい。これは、絞り又はNDフィルタの状態が変化した場合、焦点評価値のピーク位置が変化するためである。
S507は顔検出モジュール120が顔を検出しているか否かの判定処理である。システム制御部112は、被写体である人の顔を検出していると判定した場合、本判定処理を終了して図4のS402(ノードD参照)へ進む。顔を検出していないと判定された場合、本処理を終了して後述する図8のS809(ノードC参照)へ進む。
次に図6のフローチャート及び図7のグラフを用いて、合焦判定のサブルーチンについて説明する。この処理は、図4のS409、後述する図11のS1201、図15のS1501で行われる定義済み処理である。焦点評価値は遠近競合等の場合を除けば、図7に示すように、横軸にフォーカスレンズ位置をとり、縦軸に焦点評価値をとって示すグラフの形が山状になる。そこで焦点評価値の最大値と最小値との差と、一定値(これを「SlopeThr」と記す)以上の傾きで傾斜している部分の長さと、傾斜部分の勾配に基づき、山の形状を判断することにより、合焦判定を行うことができる。
合焦判定結果は、前述の○判定を含む以下の3つのうちの1つで出力される。
○判定:被写体のコントラストが十分であって、かつスキャンした距離範囲内の距離に被写体が位置する場合の判定結果。
×判定:被写体のコントラストが不十分であるか、又はスキャンした距離範囲外の距離に被写体が位置する場合の判定結果。
△判定:×判定のうち、至近側方向へスキャンした距離範囲外に被写体が位置する場合の判定結果。
山の形状を判断する為の、一定値以上の傾きで傾斜している部分の長さをLとし、傾斜している部分の平均勾配をSL/Lとして、図7を用いて各量の定義を説明する。図中に示す山の頂上(A点)から傾斜が続いていると認められる点をD点(左側)、E点(右側)とし、D点からE点までの幅を山の幅Lとする。傾斜が続いていると認められる範囲は、A点から所定量、つまりSlopeThr以上に亘って焦点評価値が下がっており、かつスキャンポイントが続く範囲とする。「スキャンポイント」とは、連続的にフォーカスレンズを動かした場合、該レンズがスキャン開始点からスキャン終了点まで移動する間に、焦点評価値を取得するポイントの事である。
A点での焦点評価値とD点での焦点評価値との差をSL1と記し、A点での焦点評価値とE点での焦点評価値の差SL2を記すと、両者の和「SL1+SL2」がSLである。
図6のフローチャートを用いて、合焦判定について説明する。まずS601でシステム制御部112は焦点評価値の最大値(Max)と最小値(Min)を求め、次にS602では焦点評価値が最大となるスキャンポイント(Max Point)を求め、S603へ進む。ここでシステム制御部112はスキャンポイント、焦点評価値から、山の形状を判断する為のLとSLを求め、SL/Lを得る。次のS604は、山の形状が至近側への登り止まりか否かの判断処理である。システム制御部112によって至近側への登り止まりと判断されるのは、以下の2条件がともに満たされる場合である。
・焦点評価値が最大値となるスキャンポイントが、スキャンを行った所定範囲における近端であること。
・近端のスキャンポイントにおける焦点評価値と、近端のスキャンポイントより1ポイント分だけ無限遠寄りのスキャンポイントにおける焦点評価値との差が、所定の基準値以上である場合であること。
至近側への登り止まりと判断された場合、S609へ進むが、そうでなければS605へ進む。ここでシステム制御部112は山の形状が無限遠側への登り止まりか否かを判断する。無限遠側への登り止まりと判断されるのは、以下の2条件がともに満たされる場合である。
・焦点評価値の最大値となるスキャンポイントが、スキャンを行った所定範囲における無限遠端であること。
・無限遠端のスキャンポイントにおける焦点評価値と、無限遠端のスキャンポイントより1ポイント分だけ至近端寄りのスキャンポイントにおける焦点評価値との差が、所定の基準値以上であること。
無限遠側への登り止まりと判断された場合、S608へ進むが、そうでなければS606へ進む。ここでシステム制御部112は以下の3条件がともに満たされるか否かを判定する。
・一定値以上の傾きで傾斜している部分の長さLが所定の基準値以上であること。
・傾斜している部分の平均勾配SL/Lが所定の基準値以上であること。
・焦点評価値の最大値(Max)と最小値(Min)の差が所定の基準値以上であること。
これらの条件が全て満たされた場合、S607へ進むが、1つでも条件が満たされない場合にはS608へ進む。判別結果はS607で○判定、S608で×判定、S609で△判定である。つまりS607では、得られた焦点評価値が山状となっていて、被写体のコントラストが十分であり、焦点調節が可能である為、システム制御部112は判定結果を○判定とする。これに対してS608では、得られた焦点評価値が山状となっておらず、被写体のコントラストが不十分であって焦点調節が不可能であるため、システム制御部112は判定結果を×判定とする。またS609では、得られた焦点評価値が山状となってはいないが、近端方向に登り続けている状態となっており、さらに至近側に被写体ピークが存在している可能性があるため、システム制御部112は判定結果を△判定とする。
次に図8のフローチャートを用いて、図2に示したS208の処理、つまり被写体領域を特定するAFスキャンについて説明する。ここでは撮影画面内の主被写体の領域を特定するためのAFスキャンが行われる。
まずS801にてシステム制御部112は、電子ズームを行っているか否かを判定する。電子ズームを行っていると判定された場合、S802へ進むが、電子ズーム中でなければS803へ進む。S802では電子ズーム用のAF枠設定が行われる。ここで「電子ズーム」とは、画面の中央領域を拡大して操作表示部114に表示することである。拡大するため操作表示部114に表示される画像の画素数は、電子ズームを行わない場合に比べて少なくなる。従って電子ズーム時に操作表示部114が表示する画像に対して、電子ズームを行わない時と同じ割合になるようにAF枠を設定したのでは、電子ズームを行う場合、これを行わない時に比べてAF枠内の画素数が少なくなる。よって焦点評価値のS/N比が低下する。そのため、電子ズーム時と電子ズームを行わない時とでは、AF枠設定の仕方を変える必要がある。本実施形態では電子ズーム時において、撮影画面の中央付近に、所定の大きさのAF枠を1枠設定する。
S803では画面内にN×N個のAF枠が設定される。例えば、N=5とし、AF枠の大きさを縦横の長さ共に撮影画面の10%とした場合、図13に示すAF枠設定となる。なお、N値又はAF枠の大きさについては画面内の主被写体の存在確率を考慮して設定することができる。また、横方向と縦方向でAF枠の数は異なっていてもよい。
次のS804では前回参照判定が行われ、その手順については後述する。S805に進み、S804での前回参照判定の結果、システム制御部112は前回の撮影シーンと今回の撮影シーンとで変化があったか否かを判定する。その結果、前回と今回とでシーンがあまり変わらないと判定された場合、S806へ進み、シーンの変化があったと判定された場合、S809へ進む。S806では前回参照AFスキャンが行われ、その手順については後述する。そしてS807では、S806の前回参照AFスキャンにおいて主被写体領域が特定できたか否かが判定される。その結果、主被写体領域が特定できた場合、S808へ進むが、そうでなければS809へ進む。S808でピーク検出フラグがTRUEに設定された後、S813に進む。
S809では、後述する手順に従ってゾーンAFスキャンが行われる。次のS810は、S809のゾーンAFスキャンにおいて主被写体領域が特定できたか否かの判定処理である。主被写体領域が特定できればS808へ進み、特定できなければS811へ進む。S811は一様面判断処理であり、「一様面である状態」の有無について判断が行われる。「一様面である状態」とは画面内に輝度差がなく、コントラストがないため、AF制御を行っても焦点評価値ピークが充分に得られない状態のことである。この状態で撮影シーンが安定する度に図2のS208に示すAFスキャンが繰り返されると、画面のピント変動が無駄に繰り返されるため、煩わしい。そこで、「一様面である状態」と判定された場合には、当該状態の判定が下されなくなるまでの間、フォーカスレンズ103を停止することが望ましい。なお、一様面判断処理の詳細については説明を省略する。
S809のゾーンAFスキャンにおいて主被写体領域が特定できなかった場合、S812では、撮影画面内に予め設定してある所定領域にAF枠を設定する処理が行われる。ここで所定領域のAF枠としては、例えば撮影画面の中央領域内の1枠が設定され、主被写体が存在する蓋然性の高い領域に設定することが望ましい。そしてS813に進み、後述する手順に従ってフォーカス駆動が行われた後、リターン処理となる。
次に図9のフローチャートを用いて、図8に示したS804の前回参照判定について説明する。本処理は、前回にAFスキャンを行った撮影シーンに対して、今回の撮影シーンがあまり変化していないか否かを判定する処理である。
まずS1001でシステム制御部112は、前回のAFスキャンにおいて主被写体領域を特定できていたか否かを調べる。その結果、主被写体領域が特定できていればS1002へ進み、該領域が特定できていない場合にはS1005へ進む。S1002では現在のフォーカスレンズ103の位置が所定位置よりも至近側にあるか否かの判定が行われる。その結果、フォーカスレンズ103の現在位置が所定位置よりも至近側にあればS1003へ進み、そうでなければS1005へ進む。なおS1002ではフォーカスレンズ103の現在位置が所定位置よりも至近側か否かを判定したが、フォーカスレンズ103の現在位置が所定位置より無限遠側か否かを判定してもよい。
S1003では前回と今回のAFスキャンの時間差、つまり前回からの経過時間が所定時間以内か否かの判定が行われる。その結果、前回のAFスキャンの時点から所定時間以内であればS1004へ進むが、そうでなければS1005へ進む。S1004では前回のAFスキャンでの撮影シーンとあまり変わらないという判定が下される。またS1005では、前回のAFスキャンの時点から撮影シーンが大きく変わったとの判定が下される。S1004、S1005の後、本判定処理が終了し、リターン処理となる。
次に図10のフローチャートを用いて、図8に示したS806の前回参照AFスキャンについて説明する。まずS1101では、フォーカスレンズ103の現在位置を中心にスキャン範囲が第1の範囲(図には丸枠内に数字1を付して示す)に設定される。ここでは上述の前回参照判定にて前回と今回とで撮影シーンがあまり変わらないと判断されているので、第1のスキャン範囲は狭い範囲とする。S1102では、システム制御部112の指令を受けたAF処理部105がフォーカスレンズ103をスキャン開始位置へと移動させる。S1103では撮像素子106から読み出されたアナログ映像信号をA/D変換部107がデジタル信号に変換する。この信号から画像処理部108が輝度信号の高周波成分を抽出し、システム制御部112はこれを焦点評価値のデータとしてメモリに記憶させる。S1104ではフォーカスレンズ103の現在位置を取得してシステム制御部112が該位置のデータをメモリに記憶させる。S1105でシステム制御部112は、撮影準備を指示するSW1の状態(ON/OFF)を判定し、該状態がON状態の場合、本処理を終了して図2のS212(ノードA参照)へ進む。またSW1がOFF状態の場合にはS1106へ進む。S1106で前述したシーン変化判定が行われた後、S1107でシステム制御部112は、フォーカスレンズ103の現在位置がスキャン終了位置と等しいか否かを判定する。両位置が等しい場合にはS1108へ進むが、両位置が異なる場合、S1109へ進む。S1108では後述する主被写体領域判定が行われた後、リターン処理となる。またS1109ではAF処理部105がフォーカスレンズ103をスキャン終了方向に向けて所定量だけ移動させた後、S1103に戻る。
次に図11及び図12のフローチャートを用いて、主被写体領域判定について説明する。本処理は、図10に示したS1108や、後述する図14のS1411で行われる定義済み処理であり、撮影画面内の主被写体領域が特定できたか否かが判定される。図13は主被写体領域判定の処理例についての説明図である。本例では、AF枠サイズの大きさを画面の10%とし、N=5、スキャン範囲を0乃至500、所定深度範囲を±10とする。なおスキャン範囲及び所定深度範囲を示す数値は、フォーカスレンズ103の位置を表す。これは図示しないフォーカスレンズ103の駆動用モータとしてステッピングモータを使用する場合、駆動用のパルス数に相当し、値が大きい位置が至近側であることを示している。
まず図11のS1201では、設定した各AF枠の全てにおいて、前述した合焦判定が行われる。例えば、各AF枠において図13(a)に示す合焦判定結果が得られたものとする。本例では、最上行のAF枠での判定結果が全て×判定であり、上から2行目では2つの○判定と3つの×判定とされ、3行目では4つの○判定と1つの×判定とされる。下2行分のAF枠での判定結果は○判定である。
S1202では各AF枠における焦点評価値のピーク位置(以下、PeakPosと記す)が算出され、メモリに記憶される。例えば、図13(b)に示すように、各AF枠において○判定の箇所には、数値で示すピーク位置算出結果、つまりPeakPosの値をそれぞれ示している。S1203は、設定しているAF枠が1枠か否かの判定処理である。設定しているAF枠が1枠であればS1214へ進むが、1枠でない場合、S1204へ進む。ここでは中央M×M枠の各AF枠におけるPeakPosの値を至近順にソートする処理が行われる。ここでソートされた数をSと記す。以下の説明ではM=3とする。図13の例では、太線で囲んだ縦3枠、横3枠の合計9枠が各AF枠を示す。ここで、S1201の合焦判定で×判定とされたAF枠ではピーク位置が算出できないのでソートの対象としていない。図13(b)に示す例では、9枠内のピーク位置が左上隅から右下隅にかけて「100、90、400、400、100、410、400、100」である。至近順に「410、400、400、400、100、100、100、90」とソートされ、ソート数S=8となる。S1205ではS1202で算出したM×M枠内のピーク位置の至近順を示すカウンタPの値が初期値1に設定される。次にS1206ではソート順でP番目のPeakPosを「PeakPosP」とする(「P」は自然数の変数を示す)。例えば、図13(b)では、P=1の場合、PeakPosP=410となる。
S1207では所定の条件を満たすAF枠の「かたまり」を検出する処理が実行され、「かたまり」を構成するAF枠の数と各AF枠の位置がメモリに記憶される。ここで「かたまり」とは、中央のM×M個のAF枠中において○判定であり、かつPeakPosPに対して所定深度範囲内のAF枠をひとまとめした一群を意味する。換言すれば、「かたまり」とは、上記条件を満たすAF枠が上下左右に隣接している状態における当該AF枠の集合である。なお、「かたまり」が複数存在する場合には、「かたまり」を構成するAF枠の数や「かたまり」の位置に基づいて、複数の「かたまり」のうちの1つを選択することができる。
S1208では中央のN×N個のAF枠中において、中央のM×M個のAF枠中を1枠以上含むように、判定結果が○判定であって、かつPeakPosPに対して所定深度内の「かたまり」を検出する処理が行われる。そして、検出された「かたまり」を構成するAF枠の数と各AF枠の位置を示すデータがメモリに記憶される。例えば、図13(a)及び(b)に示す判定結果に対して、図13(c)に灰色枠で示す「かたまり」、即ち○判定の箇所のうち、PeakPosPの値が400以上とされるAF枠の一群が検出される。そして図12のS1209(ノードF参照)に進む。
S1203からS1214に進んだ場合には、S1201での合焦判定結果が○判定であるか否かが判定され、○判定の場合、図12のS1215(ノードG参照)へ進み、そうでなければ図12のS1217(ノードH参照)へ進む。
図12のS1209では図11のS1207又はS1208で検出した「かたまり」が、中央枠を含む「かたまり」であるか否かの判定処理が行われる。その結果、中央枠を含む「かたまり」の判定が下された場合、S1215へ進み、そうでなければS1210へ進む。S1210ではS1207又はS1208で検出した「かたまり」が、M×M枠内にAF枠を所定数以上含む「かたまり」であるか否かの判定処理が行われる。肯定的判定結果が得られた場合、S1215へ進み、否定的判定結果が得られた場合、S1211へ進む。S1211ではS1207又はS1208で検出した「かたまり」が、中央M×M枠のうちの1枠以上を含み、かつN×N枠内のAF枠を所定数以上含む「かたまり」であるか否かの判定処理が行われる。肯定的判定結果が得られた場合、S1215へ進み、否定的判定結果が得られた場合、S1212へ進む。S1212はカウンタPのインクリメント処理が行われ、P値に1が加算される。そしてS1213にてカウンタPの値とソート数Sが比較され、P値がS値よりも大きい場合、S1217へ進むが、P値がS値以下の場合、図11のS1206(ノードI参照)に戻る。
S1215では主被写体領域が特定できたとの判定が下された後、S1216では「かたまり」を構成する各AF枠が主被写体領域と判断され、これらが選択されて本判定処理を終了する。なお、ここで設定しているAF枠が1枠の場合には当該1枠を選択する処理が行われる。一方、S1217では主被写体領域の特定ができなかったとの判定が下された後、本判定処理が終了する。
次に図14のフローチャートを用いて、図8に示したS809のゾーンAFスキャンについて説明する。ここで「ゾーン」とは、合焦可能距離範囲を複数の範囲に分割した際の、個々の範囲を指す。
まずS1401ではシステム制御部112の指示に従いAF処理部105がフォーカスレンズ103をスキャン開始位置へと移動させる。ここでスキャン開始位置は、例えば無限遠端位置とする。S1402では撮像素子106から読み出されたアナログ映像信号をA/D変換部107がデジタル信号に変換し、その出力から画像処理部108が輝度信号の高周波成分を抽出する。システム制御部112はこれを焦点評価値のデータとしてメモリに記憶させる。S1403ではフォーカスレンズ103の現在位置を取得して、システム制御部112が該位置のデータをメモリに記憶させる。S1404でシステム制御部112は、撮影準備を指示するSW1の状態(ON/OFF)を判定する。該状態がON状態の場合、本処理を終了して図2のS212(ノードA参照)へ進み、OFF状態の場合にはS1405へ進む。S1405では前述したシーン変化判定が行われ、S1406ではフォーカスレンズ103が予め設定したゾーンの境界位置にあるか否かについて判定される。肯定的判定結果の場合、S1407へ進み、否定的判定結果の場合、S1409へ進む。
S1407ではゾーン更新判定が行われ、その手順については後述する。ここで「ゾーン更新」とは、あるゾーンのスキャン後に、当該ゾーンに隣接するゾーンのスキャンを続行することを指す。S1408にてシステム制御部112は、S1407での判定の結果、ゾーン更新を行うか否かを判定し、ゾーン更新を行う場合、S1409へ進むが、ゾーン更新を行わない場合、S1411へ進む。S1409でシステム制御部112は、フォーカスレンズ103の現在位置がスキャン終了位置と等しいか否かを調べ、両位置が等しい場合、S1411へ進み、両位置が異なる場合にはS1410へ進む。S1410にてAF処理部105はフォーカスレンズ103をスキャン終了方向へ向けて所定量だけ移動させた後、S1402に戻る。またS1411では前述した主被写体領域判定が行われた後、リターン処理となる。
次に図15及び図16のフローチャートを用いて、図14に示したS1407のゾーン更新判定について説明する。本処理はスキャン方向の先に主被写体が存在する蓋然性が高いか否か、つまりAFスキャンを続けるか否かについての判定処理である。図17はゾーン更新判定例を説明する図であり、本例では、AF枠の大きさを画面の10%のサイズとし、N=5、M=3とする。
まず図15のS1501では、設定した各AF枠の全てにおいて前述した合焦判定が行われる。例えば、各AF枠において図17(a)に示す合焦判定結果が得られたものとする。本例では左隅部の6箇所での判定結果が△判定である。また、上から2行分の判定結果及び3行目の右2箇所の判定結果が×判定であり、その他の箇所では○判定である。S1502は最終ゾーンまでスキャンが行われたか否かについて判定され、最終ゾーンまでスキャンが行われた場合、図16のS1512(ノードQ参照)へ進むが、そうでなければS1503へ進む。ここで判定結果が○判定の枠があるか否かについて判定が行われる。○判定の枠があればS1504へ進み、○判定の枠がなければ図16のS1511(ノードJ参照)へ進む。S1504は中央枠の判定結果が△判定であるか否かの判定処理である。中央枠の判定結果が△判定であれば図16のS1511へ進み、そうでなければS1505へ進む。S1505では中央M×M枠の中で判定結果が△判定の枠の数が計数される。△判定とされた枠の数が所定枠数以上の「かたまり」があるか否かについて判定される。図17の例では、3×3の中央枠内において、△判定の枠の数が2であり、所定枠数を2とする。△判定の枠数が所定枠数以上であれば図16のS1511へ進み、そうでなければS1506へ進む。
S1506では中央M×M枠のうち1枠以上を含むようにN×N枠のAF枠中に△判定の枠が所定枠数以上の「かたまり」があるか否かについて判定される。図17の例では、所定枠数を4とする。△判定の枠が6箇所であり、「かたまり」のうち2箇所の枠が中央枠内に含まれているので、この場合には、図16のS1511へ進む。一方、上記判定条件を満たさない場合、図16のS1507(ノードK参照)へ進む。
S1507では中央M×M枠内における○判定の枠が計数される。その枠の数が所定数以上の「かたまり」があるか否かについて判定され、そのような「かたまり」が存在する場合、S1512へ進むが、「かたまり」がない場合、S1508へ進む。図17の例では、中央枠内での○判定の枠が3つであり、所定数を5とすると、上記判定条件は満たされていない。S1508は中央枠の判定結果が×判定であるか否かの判定処理である。中央枠の判定結果が×判定であればS1511へ進むが、そうでなければS1509へ進む。S1509では中央M×M枠の中で△判定又は×判定の枠の数が所定枠数以上の「かたまり」があるか否かについて判定される。そのような「かたまり」があればS1511へ進み、そうでなければS1510へ進む。図17の例で所定枠数を2とすると、中央枠内にて△判定の枠数が2、×判定の枠数が4であるため、上記判定条件を満たしている。S1510では、中央M×M枠の1枠以上を含むようにN×N枠の全ての枠中に△判定又は×判定の枠の数が所定数以上の「かたまり」があるか否かについて判定される。そのような「かたまり」が存在する場合、S1511へ進むが、「かたまり」が存在しなければS1512へ進む。図17にて、例えば所定数を4とすると、△判定の「かたまり」を構成する枠の数は6であって、中央枠内で△判定の枠の数が2であり、上記判定条件が満たされている。S1511では「ゾーン更新する」との判定が下され、S1512では「ゾーン更新しない」との判定が下される。例えばN=5、M=3としたとき、図17(b)に灰色で示す領域で△判定の「かたまり」が上記判定条件を満たしており、S1511で「ゾーン更新する」と判定される。そしてS1511、S1512の後、リターン処理となる。
次に図18のフローチャートを用いて、図8におけるS813のフォーカス駆動について説明する。まずS2001では主被写体領域が特定できたか否かについて判定され、当該領域が特定できていればS2002へ進むが、そうでなければS2003へ進む。S2002では、選択したAF枠中の最至近位置にフォーカスレンズ103が駆動される。またS2003では中央M×M枠中に○判定のAF枠があるか否かについて判定される。その結果、○判定のAF枠があればS2004へ進むが、無い場合にはS2005へ進む。S2004では中央M×M枠中で○判定のAF枠のうち、最至近位置にフォーカスレンズ103が駆動される。S2005ではフォーカスレンズ103を、予め記憶している位置(定点)へと移動させる制御が行われる。ここで「定点」については、例えば、被写体の存在確率の高い距離に対応する位置に設定する。S2002、S2004、S2005の後、本処理が終了し、リターン処理となる。
次に図19及び図20のフローチャートを用いて、図2に示したS209のコンティニュアスAFについて説明する。まず図19のS2101では、合焦度判定フラグがTRUEに設定される。S2102では設定した各AF枠での焦点評価値の取得処理が行われる。S2103では設定しているAF枠が1枠か否かについて判定され、該AF枠が1枠の場合、S2105へ進み、そうでない場合はS2104へ進む。S2104では主被写体領域として選択したAF枠の焦点評価値を用いて演算した評価値を、S2105以降で用いる焦点評価値として設定し直す処理が行われる。これにより、撮影シーンが変化して画面内の主被写体領域が変化したとしても、常に画面内の主被写体領域の焦点評価値を算出することができる。
S2105では焦点評価値に基づいて合焦度が算出され、例えば、焦点評価値に基づいて、合焦度が高、中、低の3段階で決定される。S2106ではシステム制御部112が、撮影準備を指示するSW1の状態(ON/OFF)を判定し、該状態がON状態の場合、本処理を終了して図2のS213(ノードE参照)へ進む。SW1がOFF状態の場合にはS2107へ進み、前述したシーン変化判定が行われる。S2108では、ピーク検出フラグがTRUEであるか否かについて判定され、TRUEであれば図20のS2125(ノードS参照)へ進み、FALSEであれば図20のS2109(ノードR参照)へ進む。
S2109ではフォーカスレンズ103の現在位置が取得され、S2110では、取得カウンタの値に1が加算される。「取得カウンタ」とは、焦点評価値の取得数及びフォーカスレンズ103の現在位置の取得数を計数するためのカウンタである。この取得カウンタの値は、初期化動作にて予めゼロに設定されているものとする。S2111では取得カウンタの値が1と比較され、値が1ならばS2114へ進むが、取得カウンタの値が1でなければS2112へ進む。
S2112では、今回の焦点評価値が前回の焦点評価値と比較され、今回の方が前回よりも焦点評価値が大きい場合、S2113へ進み、そうでなければS2120へ進む。S2113で増加カウンタの値には1が加算される。「増加カウンタ」とは、今回の方が前回よりも焦点評価値が大きいと判定された場合の回数を計数するためのカウンタである。S2114でシステム制御部112は、今回の焦点評価値を焦点評価値の最大値とした後、S2115にて、フォーカスレンズ103の現在の位置を焦点評価値のピーク位置とする。そしてS2116でシステム制御部112は、今回の焦点評価値を前回の焦点評価値として再設定する。S2114乃至2116での焦点評価値を示すデータは、システム制御部112に内蔵の演算メモリに記憶される。S2117では、フォーカスレンズ103の現在位置が焦点検出範囲の端にあるか否かについて判定され、現在位置が末端の位置であればS2118へ進み、そうでなければS2119へ進む。S2118ではシステム制御部112の指令に従い、フォーカスレンズ103の移動方向が反転し、S2119でフォーカスレンズ103が所定量だけ移動する。そしてリターン処理となる。
S2112からS2120に進んだ場合、ピーク評価値と今回の評価値との差、つまり「焦点評価値の最大値−今回の焦点評価値」が所定量と比較される。「焦点評価値の最大値−今回の焦点評価値」が所定量より大きい場合、S2121へ進むが、そうでなければS2116へ進む。S2120では、「焦点評価値の最大値−今回の焦点評価値」が所定量より大きいこと、即ち最大値から所定量だけ焦点評価値が減少していれば、その最大値をピントのピーク位置での値とみなす。S2121では増加カウンタの値がゼロより大きいか否かについて判定され、その値がゼロより大きい場合、S2122へ進み、ゼロの場合、S2116へ進む。S2122では、フォーカスレンズ103が前記S2115でのピーク位置、つまり、記憶済みの焦点評価値が最大値となったピーク位置へ移動する。S2123では、ピーク検出フラグがTRUEに設定された後、S2124では、取得カウンタの値がゼロに設定されて、S2119に進む。
S2125(ノードS参照)は、今回の焦点評価値が焦点評価値の最大値に対して所定の割合以上変動したか否かの判定処理である。所定の割合以上に亘る大きな変動が生じていればS2127へ進み、所定の割合未満の小さな変動であればS2126へ進む。S2126ではフォーカスレンズ103はその位置のまま停止し、S2119に進む。またS2127では、ピーク検出フラグをFALSEとし、焦点評価値の最大値及びピーク位置をリセットする処理が行われる。その理由は焦点評価値が最大となるフォーカスレンズ位置を再び探索するためである。そしてS2128で増加カウンタがリセットされた上で、S2119に進む。
以上のようにして、コンティニュアスAF動作では常に主被写体に対して合焦状態が得られるように、フォーカスレンズ103の駆動制御が行われる。
次に図21のフローチャートを用いて、図2に示したS210のシーン不安定判断について説明する。まずS2201でシステム制御部112は、図1の動体検出部121から出力される2枚の画像に係る各データに基づき、画像データ間の輝度差分量を取得する。次にS2202では、S2201で得た輝度差分量に対し、フィルタ処理を実行することで、ノイズ成分の除去及び被写体像の特徴量の抽出が行われる。S2203では現在の画面の明るさに応じた閾値を設定する。この不安定判断用の閾値については、画面の明るさだけでなく、シャッタスピード、絞り値、感度、その他の撮影条件に応じて決定することができる。またこの閾値を図3の前記S303で設定した閾値とは異なる値に設定することで、判定処理にヒステリシス特性を持たせてもよい。S2204では、S2202で得た輝度差分量とS2203で設定した閾値が比較される。フィルタリング処理後の輝度差分量が閾値以下の場合にはS2205へと進み、現在、ユーザによって撮影シーンが変更されておらず、不安定状態でないと判断される。戻り値としてFALSEのリターン処理が行われて一連の処理が終了する。一方、フィルタリング処理後の輝度差分量が閾値より大きい場合にはS2206に進み、ユーザは撮影シーンを変更しており、不安定状態であると判断される。戻り値としてTRUEのリターン処理が行われて一連の処理が終了する。
使用する画像データとしては、特定の撮影画面内領域(例えば画面内の8割を占める領域)のデータでもよいし、撮影画面内で被写体領域が特定された場合、該被写体領域に対して輝度差分量を算出してもよい。これを、設定された閾値と比較することにより、所定領域の輝度差分量に基づいて撮影シーンの状態を判定することができる。
次に図2に示すS213の撮影処理を説明すると、以下の処理が実行される。
(A1)本露光用AE処理。
(A2)本露光用AF処理。
(A3)SW1及びSW2の状態判定処理。
(A4)本露光処理。
なお(A3)での状態判定処理は以下の通りである。
・システム制御部112は撮影スイッチSW2の状態(ON/OFF)を判定し、SW2がON状態ならば(A4)の本露光処理へ進み、SW2がOFF状態の場合にはSW1の状態を判定する。
・SW1の状態がON状態であれば、再びSW2の状態判定処理に戻るが、SW1がOFF状態の場合には本露光処理を行わずに処理が終了する。
図22は上記本露光用AF処理例を説明するフローチャートである。まずS2401では主被写体検出フラグがTRUEであるか否かについて判定され、TRUEであればS2402へ進み、FALSEの場合、S2403へ進む。
S2402では本露光用のAF枠設定として第1の設定(図22では丸枠内に数字1を付して示す)が行われ、S2403では本露光用のAF枠設定として第2の設定(図22では丸枠内に数字2を付して示す)が行われる。ここでの枠数設定については主被写体領域判定にて設定したN×Nの枠とは異なる。本実施形態では、AF評価値の演算量を低減させる為、「N>n」を満たす自然変数nを用いて、n×nの枠設定とする。さらに枠サイズとしてはS/N比を向上させるため、N×Nの枠サイズを「SizeN」と記し、n×nの枠サイズを「Sizen」と記すとき、「SizeN<Sizen」を満たすように枠サイズを設定することが望ましい。
また、枠設定については主被写体の検出結果に基づいて決定してもよい。主被写体が検出できていた場合、AF評価値の演算量を低減し、S/N比を向上させる為、S2402では「N>n、SizeN<Sizen」を満たすAF枠設定(第1の設定)とする。主被写体が検出できていない場合には、主被写体検出用に設定した枠に対して、細かな被写体を撮影しており、背景抜け等の現象が起こっている可能性がある。そこで、主被写体検出の分解能をあげる為、S2403では、「ν>N、SizeN>Sizeν」を満たすAF枠設定(第2の設定)とする。ここでνは自然数の変数である。
S2402からS2404に進み、図19のS2105で算出した合焦度が「高」であるか否かについて判定される。合焦度が「高」であればS2405へ進み、そうでなければS2406へ進む。S2405では現在のフォーカスレンズ103の位置を中心に、第1のスキャン範囲(図22では丸枠内に数字1を付して示す)が設定される。ここではコンティニュアスAF動作により主被写体にほぼピントが合っている状態、つまり焦点評価値がピークを示す合焦位置付近にフォーカスレンズが位置すると判断され、狭いスキャン範囲を設定する処理が行われる。
S2406は、図19のS2105で算出した合焦度が「中」であるか否かの判定処理である。合焦度が「中」であればS2407へ進み、そうでなければS2408へ進む。S2407では現在のフォーカスレンズ103の位置を中心に、第2のスキャン範囲(図22では丸枠内に数字2を付して示す)が設定される。ここではコンティニュアスAF動作により合焦位置付近にフォーカスレンズが位置しているが、合焦度が「高」の状態ほどではないと判断され、第1のスキャン範囲よりも広げた範囲が設定される。S2408ではフォーカスレンズ103の現在位置がマクロ領域内か否かについて判定され、当該位置がマクロ領域内であればS2409へ進み、そうでなければS2410へ進む。S2409では予め記憶済みのマクロ領域に対応した、第3のスキャン範囲(図22では丸枠内に数字3を付して示す)が設定される。S2410では予め記憶済みの範囲全域である、第4のスキャン範囲(図22では丸枠内に数字4を付して示す)が設定される。S2405、S2407、S2409、S2410の後、S2411では本露光用AFスキャンが行われる。S2412では、後述の処理で算出したピーク位置にフォーカスレンズ103が移動した後、リターン処理となる。
上記S2411の本露光用AFスキャンにおける処理の流れは、以下の通りである。
(B1)スキャン開始位置へのレンズ移動
フォーカスレンズ103はスキャン開始位置へと移動する。ここで「スキャン開始位置」とは、図22のS2405、S2407、S2409又はS2410で設定したスキャン範囲の端位置とする。
(B2)焦点評価値の取得処理
撮像素子106から読み出されたアナログ映像信号をA/D変換部107がデジタル信号に変換し、その出力から画像処理部108が輝度信号の高周波成分を抽出する。システム制御部112はこれを焦点評価値のデータとしてメモリに記憶させる。
(B3)レンズ位置の取得処理
フォーカスレンズ103の現在位置を取得して、システム制御部112が該位置のデータをメモリに記憶させる。
(B4)レンズ位置とスキャン終了位置との比較処理
システム制御部112はフォーカスレンズ103の現在位置とスキャン終了位置を比較して、両位置が等しいか否かを調べる。両位置が等しい場合には次の(B5)へ進む。両位置が異なる場合には、システム制御部112の指令に従って、フォーカスレンズ103がスキャン終了方向へ向けて所定量だけ移動した後、上記(B2)に戻る。
(B5)ピーク位置の計算処理
上記(B2)で記憶した焦点評価値とそのレンズ位置から、焦点評価値のピーク位置が計算される。ここで焦点評価値のピーク位置を計算するにあたって、AF枠を複数枠設定した場合は、図11で説明した主被写体領域判定により決定した主被写体領域の最至近ピーク位置に基づいて計算することができる。あるいは別の判断法を採用してピーク位置計算を行ってもよい。
次に本露光処理の流れを説明すると、以下の処理が実行される。
(C1)撮像素子106の露光
(C2)データ読み出し処理
撮像素子106に蓄積された電荷に対応するデータが読み出される。
(C3)A/D変換処理
A/D変換部107は、撮像素子106から読み出したアナログ信号をデジタル信号に変換する。
(C4)画像処理
画像処理部108は、A/D変換部107から出力されるデジタル信号に対して各種画像処理を施す。
(C5)画像圧縮処理
上記(C4)で処理した画像データは、システム制御部112の制御下でJPEG等のフォーマットに従ってフォーマット変換部109で圧縮される。
(C6)データ転送・記録処理
上記(C5)で圧縮したデータは画像記録部111に送られ、記録媒体に記録される。
以上説明したように、本実施形態では、撮影シーンが変化した後に、撮影画面内の合焦すべき被写体領域を判断し、撮影準備前にピントを合わせておく。これにより、撮影シーンが変化した場合においても、撮影準備指示後に主被写体に素早くピントを合わせることができる。また、撮影シーンが確定していない場合には、焦点調節用のレンズ駆動を停止させることで焦点調節動作が頻繁に行われないように防止でき、画面の見栄えを損なわずに消費電力を抑えることができる。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。