図1は、本発明の実施形態に係る撮像装置のハードウェア構成を示すブロック図である。尚、以下のハードウェア構成のうち、後述する図3〜図5の処理を実施する構成により本発明の焦点調節装置が構成される。
1は撮像装置、2はズームレンズ群、3はフォーカスレンズ群、4はズームレンズ群2やフォーカスレンズ群3等からなる撮影光学系を透過する光束の量を制御する光量調節手段であり露出手段である絞りである。31はズームレンズ群2、フォーカスレンズ群3、及び絞り4等を保持する撮影レンズ鏡筒、5は撮影光学系を透過した被写体像が結像しこれを光電変換する撮像素子(以下「センサ」という。)である。
6はこのセンサ5によって光電変換された電気信号を受けて各種の画像処理を施すことにより所定の画像信号を生成する撮像回路、7はこの撮像回路6により生成されたアナログ画像信号をデジタル画像信号に変化するA/D変換回路である。8はこのA/D変換回路7の出力を受けてこの画像信号を一時的に記憶するバッファメモリ等のメモリ(VRAM)である。9はこのVRAM8に記憶された画像信号を読み出してこれをアナログ信号に変換するとともに再生出力に適する形態の画像信号に変換するD/A変換回路である。10はこの画像信号を表示する液晶表示装置(LCD)等の画像表示装置(以下「LCD」という。)、12は半導体メモリ等からなる画像データを記憶する記憶用メモリである。
11は、圧縮回路及び伸張回路からなる圧縮/伸長回路である。具体的には、圧縮/伸長回路11は、VRAM8に一時記憶された画像信号を読み出して記憶用メモリ12に対する記憶に適した形態にするために画像データの圧縮処理や符号化処理を施す圧縮回路として機能する。また、圧縮/伸長回路11は、記憶用メモリ12に記憶された画像データを再生表示等をするのに最適な形態とするための復号化処理や伸長処理等を施す伸長回路としても機能する。
13はA/D変換回路7からの出力を受けて自動露出(AE)処理を行うAE処理回路、14はA/D変換回路7からの出力を受けてAF評価値生成する自動焦点調節(AF)処理を行うスキャンAF処理回路である。15は撮像装置1の制御を行う演算用のメモリを内蔵したCPU、16は所定のタイミング信号を発生するタイミングジェネレータ(以下TG)である。
17はセンサドライバ、21は絞り4を駆動する絞り駆動モータ、18は絞り駆動モータ21を駆動制御する第一モータ駆動回路である。22はフォーカスレンズ群3を駆動するフォーカス駆動モータ、19はフォーカス駆動モータ22を駆動制御する第二モータ駆動回路である(焦点調節手段)。23はズームレンズ群2を駆動するズーム駆動モータ、20はズーム駆動モータ23を駆動制御する第三モータ駆動回路である。
24は各種のスイッチ群からなる操作スイッチ、25は各種制御等を行うプログラムや各種動作を行わせるために使用するデータ等が予め記憶されている電気的に書き換え可能な読み出し専用メモリであるEEPROMである。26は電池、28はストロボ発光部、27はストロボ発光部28の閃光発光を制御するスイッチング回路、29は警告表示などを行うLEDなどの表示素子(以下LED)である。30は音声によるガイダンスや警告などを行うためのスピーカー、33はAF評価値を取得する際に被写体の全部又は一部を照明する照明手段であるLEDなどの光源で構成されるAF補助光である。32はAF補助光33を駆動するためのAF補助光駆動回路、35は手振れなどを検出する振れ検出センサ、34は振れ検出センサ35の信号を処理する振れ検出回路である(第2の検出手段)。36はA/D変換回路7からの出力を受けて画面上での被写体位置やその大きさなどを検出する被写体検出回路(第1の検出手段,第4の検出手段)である。37は位相差AF用の画像信号の生成及び基準画像(A像)用の信号と参照画像(B像)用の信号の相関演算等を行う位相差AF処理回路である。
なお、画像データ等の記憶媒体である記憶用メモリは、図1において不図示であるが、様々な形態のものが適用される。例えば、フラッシュメモリ等の固定型の半導体メモリや、カード形状やスティック形状からなり装置に対して着脱自在に形成されるカード型フラッシュメモリ等の半導体メモリの他、ハードディスクやフロッピィ−ディスク等の磁気記憶媒体等である。
また、操作スイッチ24としては、本撮像装置1を起動させ電源供給を行うための主電源スイッチ、撮影動作(記憶動作)等を開始させるレリーズスイッチ、再生動作を開始させる再生スイッチがある。その他にも、操作スイッチ24としては、撮影光学系のズームレンズ群2を移動させズームを行わせるズームスイッチ、光学式ファインダー(OVF)電子ビューファインダー(EVF)切り替えスイッチ等がある。
そしてレリーズスイッチは撮影動作に先立ち行われるAE処理、AF処理等を開始させる指示信号を発生する第一ストローク(以下SW1)と実際の露光動作を開始させる指示信号を発生する第二ストローク(以下SW2)との二段スイッチにより構成される。
このように構成された本実施例における撮像装置1の動作を以下に説明する。
まず、撮影レンズ鏡筒31を透過した被写体光束は絞り部4によってその光量が調整された後、センサ5の受光面に結像される。この被写体像は、センサ5による光電変換処理により電気的な信号に変換され撮像回路6に出力される。撮像回路6では、入力した信号に対して各種の信号処理が施され、所定の画像信号が生成される。この画像信号はA/D変換回路7に出力されデジタル信号(画像データ)に変換された後、VRAM8に一時的に格納される。VRAM8に格納された画像データはD/A変換回路9へ出力されアナログ信号に変換され表示するのに適した形態の画像信号に変換された後、LCD10に画像として表示される。また、VRAM8に格納された画像データは圧縮/伸長回路11にも出力される。この圧縮/伸長回路11における圧縮回路によって圧縮処理が行われた後、記憶に適した形態の画像データに変換され、記憶用メモリ12に記憶される。
また、例えば操作スイッチ24のうち不図示の再生スイッチが操作されオン状態になると、再生動作が開始される。すると記憶用メモリ12に圧縮された形で記憶された画像データは圧縮/伸長回路11に出力され、その伸長回路において復号化処理や伸長処理等が施された後、VRAM8に出力され一時的に記憶される。更に、この画像データはその後D/A変換回路9へ出力されアナログ信号に変換され表示するのに適した形態の画像信号に変換された後、LCD10に画像として表示される。
他方、A/D変換回路7によってデジタル化された画像データは、上述のVRAM8とは別にAE処理回路13、スキャンAF処理回路14、位相差AF処理回路37及び被写体検出回路36に対しても出力される。まずAE処理回路13においては、入力されたデジタル画像信号を受けて、一画面分の画像データの輝度値に対して累積加算等の演算処理が行われる。これにより、被写体の明るさに応じたAE評価値が算出される。このAE評価値はCPU15に出力される。
またスキャンAF処理回路14においては、入力されたデジタル画像信号を受けて、画像データの高周波成分がハイパスフィルター(HPF)等を介して抽出される。更にスキャンAF処理回路14において、その高周波成分に対する累積加算等の演算処理が行われ、高周波成分における輪郭成分量等に対応するAF評価値信号が算出される。
位相差AF処理回路37においては、まず、センサ5から読み出された信号から位相差AF方式の演算処理に用いられる基準画像(A像)用の信号と参照画像(B像)用の信号を生成し、その生成された両画像用の信号の像修正を行う。その後、像修正後の両画像用の信号の相関演算を行い、二像の信号が一致する像ずれ量(二像の位相差)を計算する。センサ5は、その撮像面に位相差AFを行う画素を配置している。このため、二次結像光学系で再結像させる場合のように像高による光束の違いにより生じる像の歪みを修正するフィールドレンズや、センサ5へ入射する光束の瞳位置を制限する絞り、不要な光束を遮断するマスクを撮像面とセンサ5の間に配置できない。したがって、位相差AF用の画像信号は画素毎にシェーディング・オフセットが異なり、その補正が必要である。
よって位相差AF処理回路37は、基準画像(A像)の信号及び参照画像(B像)用の信号の生成機能、これらの画像用の信号の像修正機能及び相関演算を行いデフォーカス量を求める機能を担っている。
そしてCPU15において、位相差AF処理回路37で求められた二像の位相差からデフォーカス量・合焦させるためのフォーカスレンズ群3の駆動量を求めることで位相差AFが行われる。
被写体検出回路36においては、入力されたデジタル画像信号を受けて画像上の被写体を検出する。例えば人物が被写体である場合は、目、眉などの顔を特徴付ける部分を画像上で探索し、人物の顔の画像上での位置を求める。更に顔の大きさや傾きなどを、顔を特徴付ける部分の間隔などの位置関係から求める。顔以外の物体の場合は、Deep Learningなど一般公知技術でその物体を画像信号から抽出した後どのような物体なのか認識することで検出が実現できる。また大きさが既知の物体に関しては、その大きさを被写体検出回路36内に記録しておいても良い。
一方、TG16からは所定のタイミング信号がCPU15、撮像回路6、センサドライバ17へ出力されており、CPU15はこのタイミング信号に同期させて各種の制御を行う。また撮像回路6は、TG16からのタイミング信号を受け、これに同期させて色信号の分離等の各種画像処理を行う。さらにセンサドライバ17は、TG16のタイミング信号を受けこれに同期してセンサ5を駆動する。
またCPU15は、第一モータ駆動回路18、第二モータ駆動回路19、第三モータ駆動回路20をそれぞれ制御する。これにより、絞り駆動モータ21、フォーカス駆動モータ22、ズーム駆動モータ23を介して、絞り4、フォーカスレンズ群3、ズームレンズ群2が駆動制御される。すなわちCPU15はAE処理回路13において算出されたAE評価値等に基づき適正な露光量になる露光時間・絞り値を求め、第一モータ駆動回路18を制御して絞り駆動モータ21を駆動し、絞り4の絞り量を適正になるように調整する制御を行う。またCPU15はスキャンAF処理回路14・位相差AF処理回路37の処理結果に基づき第二モータ駆動回路19を制御してフォーカス駆動モータ22を駆動し、フォーカスレンズ群3を合焦位置に移動させるAF制御を行う。また操作スイッチ24のうち不図示のズームスイッチが操作された場合は、これを受けてCPU15は、第三モータ駆動回路20を制御してズーム駆動モータ23を駆動制御する。これによりズームレンズ群2が移動し、撮影光学系の変倍動作(ズーム動作)が行われる。
次に図1のセンサ5に含まれる撮像素子を構成する各画素の構成を図2に示す。
二次元的に配置される画素には、通常の撮像用画素と位相差AF用の画素としての機能を持たせるために、図2に示すような構造をしている。すなわち、ひとつのマイクロレンズに対して長方形の二つのフォトダイオードが配置され、一方のフォトダイオードが基準画像用の画素(以下「基準画素」という。)の信号出力用、他方が参照画像用の画素(以下「参照画素」という。)の信号出力用となっている。このように、二つのフォトダイオードは、撮影光学系の異なる瞳領域を通過した光束を光電変換して、一対の焦点検出用信号を出力することが可能である。
位相差AFを行うための画素行は間欠的に配置されており、この行のみ、一対のフォトダイオードの出力を加算して読み出すだけでなく、基準画素の信号出力用のフォトダイオードから信号を独立で読み出すことが可能である。
その他の画素行はこの一対のフォトダイオードの出力を加算して読み出す。
またセンサ5は、各フォトダイオードから読みだされた信号を増幅することができる。
実際には先頭の行から行ごとに読み出しを開始し、位相差AFを行うための行においては、一対のフォトダイオードの出力を加算した信号とその片方のみからの出力の信号(すなわち、基準画素の信号)が読み出される。また、その他の行においては一対のフォトダイオードの出力を加算した信号が読み出される。
位相差演算を行う際には一対のフォトダイオードの出力を加算した信号と基準画素の信号からその差分をとることで参照画素の信号を生成する。この処理も位相差AF処理回路37で行われる。
そしてこの一対のフォトダイオードの出力を加算した信号はそのまま動画記録や、LCD10への表示に用いられる。
次いで、撮像装置1による撮像処理を図3に示すフローチャートを用いて説明する。
図3は、本発明の実施例1に係る撮像処理の手順を示すフローチャートである。本処理では、被写体が人物であり被写体検出回路36で人物の顔が検出する場合の例を説明する。
撮像装置1の主電源スイッチがオン状態であり、かつ撮像装置1の動作モードが撮影(録画)モードにあるときに、センサ5等への電源を供給やセンサ5の駆動モードの設定等が行われ、以下の撮像処理を開始する。
まずステップS1においてCPU15は、AE処理を行って、露光条件を設定する。この処理はAE処理回路13において算出された被写体の明るさに応じたAE評価値を用いて、センサ5の電荷蓄積時間や絞り5の絞り値等を決定する処理である。ここではLCD10への表示及び被写体検出回路36における顔検出に適した値になるように露光条件を決定していく。LCD10への表示を見て撮影者はフレーミング等を行い、また決定された露光条件でA/D変換回路7により生成されたデジタル画像信号に基づき被写体検出回路36は顔検出を行う。したがって、LCD10への表示や顔検出を行うのに必要なピント(大ボケにはならない)を考慮して、あまり深度の浅い絞りにならないように、また像がずれない電荷蓄積時間になる様に、ステップS1では画像の増幅度も同時に設定される。
次いでステップS2において顔検出処理が行われる。具体的には、被写体検出回路36において、人物の顔の画像上での位置と顔の大きさ(撮像画面内の顔領域)が求められる。
その後ステップS3において撮像画面内の焦点検出を行うための領域(以下「AF領域」という。)の初期設定を行う。すなわち、ステップS2において求められた顔領域をAF領域の初期設定とする。その後、その初期設定された領域内の画像信号を用いて合焦状態に応じたコントラストを表すAF評価値をスキャンAF処理回路14で、位相差AFに用いる信号のPB値(信号の最大値と最小値の比)を位相差AF処理回路37で求める。
そしてステップS4において、AF領域設定処理を実行する。以下図4において具体的に説明するように、この処理では、AF評価値、位相差AFに用いる信号のPB値(信号の最大値と最小値の比)、顔検出結果を用いて、実際に撮像処理を行うAF領域を設定する。
図4は、図3のステップS4のAF領域設定処理の手順を示すフローチャートである。尚、本処理ではステップS401〜S405の処理により、まず、水平方向のAF領域の範囲をデフォーカス量検出が可能な範囲となるよう決定する。しかし、後述のステップS406以降の処理で行われる、垂直方向のAF領域の範囲の決定を先に行うようにしてもよい。
まずステップS401にて、ステップS2で行われた顔検出の結果と現在の撮影レンズ鏡筒31の焦点距離から得られる概ねの被写体距離に基づき、概ねのデフォーカス量を推定する(推定手段)。次いでこの推定された概ねのデフォーカス量をK値で割ることで、後述するステップS402で水平方向の所定値を算出するために必要な画素ずらし量を求める。なおK値とは相関演算により求められた基準画像(A像)の信号と参照画像(B像)の信号との像ずれ量(二像の位相差)をデフォーカス量に変換する係数である。
その後ステップS402にて基準画像(A像)の信号にステップS401で求めた画素ずらし量を加え、AF領域の水平方向の範囲の初期値を表す水平所定値を求める。
ステップS403にて、ステップS2で検出された顔の水平方向の大きさがステップS402で求めた水平所定値より大きいか判別する。この判別の結果、水平所定値より大きい場合はステップS404に進み、顔検出の結果から求められる顔の水平方向の範囲を水平方向のAF領域の範囲とする。一方、水平所定値以下の場合はステップS405にて、水平所定値を水平方向のAF領域の範囲とする(設定手段)。
次いで垂直方向のAF領域の範囲を求める。具体的には、位相差AF処理回路37において生成される位相差AF用の画像信号のS/N比を考慮し、位相差AFの精度を確保できる範囲をAF領域の垂直方向の範囲とする。
まずステップS406にて垂直所定値1を求める。ここで、垂直所定値1とは、AF領域の垂直方向の範囲をこの値に設定すると、センサ5において間欠的に配置され位相差AFを行うための画素行が予め設定された所定行以上となるような値を指す。位相差AFを行うための画素行がこの所定行以上となれば位相差AFの精度を確保することが可能となる。
次いでステップS407において垂直所定値2を求める。ここで、AF領域内の信号のコントラスト(PB値)が高いなどその信頼性が高い場合は、ステップS406で説明した予め設定された所定行より少ない画素行から画像信号のみで位相差AFの精度を確保することが可能となる。そこで、ステップS2において求められたAF評価値と位相差AFに用いる信号の信頼性に基づき、以下後述する方法で垂直所定値1より小さい値である垂直所定値2を求める。
本実施例においては、垂直所定値2は、PB値・AF評価値やそれぞれの標準偏差値、及び垂直所定値1を用いて計算される。より具体的には、PB値・AF評価値やそれぞれの標準偏差値から、垂直所定値1との比率や差分を定めることで垂直所定値2は求められる。
例えば以下の式によって垂直所定値2は求められる。
垂直所定値2=(垂直所定値1×位相差AF信頼性の標準偏差値×AF評価値の信頼性の標準偏差値)/(位相差AF信頼性×AF評価値)
但し、上記式により算出された垂直所定値2が垂直所定値1の半分(1/2)の値未満となる場合は、垂直所定値2の値を垂直所定値1の半分(1/2)の値とする。
また、上記式の位相差AF信頼性とは、位相差AFに用いる画像信号のPB値(信号の最大値と最小値の比)であり、AF評価値はスキャンAF処理回路14で算出される。PB値は位相差AFに使用する基準画像と参照画像の像修正前の信号、及び像修正後の信号の4つの信号から求めた比の平均値、もしくは比の最小値を用いる。また、相関演算を行う際にローパスフィルター処理を行うのであれば、基準画像と参照画像について像修正及びローパス処理をともに行った後の2つの信号をさらに追加した6つの信号から求めた比の平均値、もしくは比の最小値を用いる。
本実施例において、位相差AF信頼性の標準偏差値は、反射率32%のグレーの地に反射率90%の二本の縦線を配した二本バーチャートに合焦した際の値である。また、AF評価値信頼性の標準偏差値は、左右に反射率32%のグレーの地と反射率90%の地を配したエッジチャートに合焦した際の値である。
次に、ステップS408において、検出された顔の垂直方向大きさがステップS407で求めた垂直所定値2より大きいか判別する。この判別の結果、垂直所定値2より大きい場合はステップS410へ進み、顔検出の結果から求められる顔の垂直方向の範囲を垂直方向のAF領域の範囲とする。一方、垂直所定値2以下の場合はステップS409において、以下の方法で求められる信頼性指標の値が、1以上か否かを判別する。
信頼性指標は、PB値・AF評価値やそれぞれの標準偏差値を用いて計算される。具体的には、PB値・AF評価値やそれぞれの標準偏差値の比率や差分を求めることで例えば以下のような式で信頼性指標を定めることが出来る。
信頼性指標=(位相差AF信頼性×AF評価値信頼性)/(位相差AF信頼性の標準偏差値×AF評価値信頼性の標準偏差値)
この式においても、位相差AF信頼性はPB値を指す。
この信頼性指標の値が1以上の場合は、ステップS410に進み、垂直所定値2を垂直方向のAF領域の範囲とし、図4の処理を終了する。一方、この信頼性指標の値が1未満の場合は、ステップS411に進み、垂直所定値1を垂直方向のAF領域の範囲とし、図4の処理を終了する。
このように、垂直方向のAF領域の範囲の設定は、図4のステップS406〜S411の処理(第1の判定手段)に基づき行われる。尚、垂直方向のAF領域の範囲の設定は、上記処理に限定されるわけではなく、例えば、信頼性指標の値に応じて設定される垂直所定値1と垂直所定値2の間の値を垂直方向のAF領域の範囲としても良い。
図4のAF領域設定処理が終了すると、図3に戻り、ステップS5にて、撮影レンズ鏡筒31を透過し、センサ5の撮影画素に結像した像(被写体像)、及びステップS4で設定されたAF領域をLCD10に画像として表示する。具体的には、センサ5上に結像した被写体像は、センサ5による光電変換処理され電気的な信号に変換された後、撮像回路6に出力される。撮像回路6は、センサ5から入力された信号に対して各種の信号処理を施し、所定の画像信号を生成した後、A/D変換回路7に出力する。A/D変換回路7は、その撮像回路6から出力された画像信号をデジタル信号(画像データ)に変換し、VRAM8に一時的に格納する。またVRAM8にはステップS4で設定されたAF領域を示すための矩形の枠を描画する為の信号(AF領域を示すデータ)がCPU15から出力される。これによりVRAM8上で被写体像を示す画像データにAF領域を示すデータが重畳される。その後、VRAM8からこのAF領域を示すデータが重畳された画像データがD/A変換回路9へ出力され、表示するのに適した形態のアナログ画像信号に変換され、LCD10に画像として出力表示される。
次いでステップS6において、レリーズスイッチの状態を確認する。撮影者によってレリーズスイッチが操作され、SW1(レリーズスイッチの第一ストローク)がオン状態になったことをCPU15が確認すると(ステップS6でYES)、次のステップS7に進み、位相差AF処理を行う。
ステップS7の位相差AF処理の動作を、以下に図5のフローチャートを用いて説明する。
図5は、図3のステップS7の位相差AF処理の手順を示すフローチャートである。
まずステップS501において、A/D変換回路7より出力された位相差AF用の画像信号を位相差AF処理回路37の所定の記録領域に記録する。なおSW1がオン状態である場合に、二回目以降の位相差AF処理に用いられる画像信号は、後述するステップS19で再設定されたAF領域内の画像信号となる。
その後、ステップS502において、基準画素と参照画素の信号が加算された状態でセンサ5の一対のフォトダイオードから出力された信号と、その片方のフォトダイオードのみから出力された基準画素の信号とからその差分を取り、参照画素の信号を作成する。そして位相差AF用の画素の並び替えを行い、基準画像と参照画像を生成する。
前述のとおり、センサ5ではひとつのマイクロレンズに対して長方形の二つのフォトダイオードが配置されている。一方のフォトダイオードが基準画素の信号出力に用いられ、他方が参照画素の信号出力に用いられる。また、センサ5からの信号の読み出し順序は「基準画素+参照画素」→「基準画素」→「基準画素+参照画素」→「基準画素」→・・・・・・・→「基準画素+参照画素」→「基準画素」となっている。この読出し順序でセンサ5からの信号は位相差AF処理回路37の所定の第1の記録領域にデータとして記録される。
そこで、上記所定の記録領域から基準画素の信号のデータだけを抽出して、抽出した順序に並べ基準画像用の信号のデータとし、位相差AF処理回路37の所定の第2の記録領域に記録する。
また、上記所定の記録領域から、基準画素の信号と参照画素の信号が加算された状態でセンサ5の一対のフォトダイオードから出力された信号のデータと基準画素の信号のデータを抽出してその差分を求める。この求めた順序に並べて参照画像用の信号のデータとし、位相差AF処理回路37の所定の第3の記録領域に記録する。
次いでステップS503において、位相差AF処理回路37記録された基準画像及び参照画像の両像の修正を行う。
撮像面に位相差AFを行う画素を配置している。このため、二次結像光学系で再結像させる場合のように像高による光束の違いにより生じる像の歪みを修正するフィールドレンズや、センサ5へ入射する光束の瞳位置を制限する絞り、不要な光束を遮断するマスクを撮像面とセンサ5の間に配置できない。したがって、位相差AF用の画像信号は画素毎にシェーディング・オフセットが異なるためその補正が必要である。
このシェーディングは光軸中心からの画素の位置(像高)・撮影レンズの射出瞳位置・絞りによって異なるため、それぞれの要因に関して像修正量を持ち要因に応じて、位相差AF用の画像信号を画素毎に修正する。
またオフセットは位相差AF用の画像信号の増幅率等によって異なるため、それぞれの要因に関して像修正量を持ち要因に応じて、位相差AF用の画像信号を画素毎に修正する。
像修正方法の詳細に関しては特開2012−252280等で公知なので、説明は割愛する。
その後ステップS504において相関演算を行う際の下記式(1)のパラメータK,Jの初期値を設定する。
位相差AF処理回路37は、その後ステップS505において、式(1)に従い基準画像と参照画像の相関値を求める。すなわち、N番目の基準画素の信号値aNと参照画素の信号値bNの相関値の和を求める(N=1〜Jまでの整数)。
UK=Σmax(aN+1,bN+K)−Σmax(aN,bN+K+1)(式1)
ここで、max(a,b)はa,bのうち大きい方をとるという意味である。
またKは相関演算を行う像ずらし量、Jは相関演算を行う画素数であり、ステップS504で初期化されている。
そして、ステップS506において、CPU15は基準画像と参照画像の相関値を位相差AF処理回路37から取得し一時記録する。そして既に一時記録されている他の相関値があれば、その他の相関値と符号が等しいか調べる。
その結果、ステップS506で一時記録された相関値と他の相関値は、符号が反転している場合、ステップS507からステップS508へ進む。同様に、ステップS506で一時記録された相関値が零であり、かつ本位相差AF処理に使用する信号として、取得した基準画像用の信号及び参照画像用の信号が信頼性があると判断された場合も、ステップS507からステップS508へ進む。
この信頼性の判定にはPB値(信号の最大値と最小値の比)や基準画像と参照画像の類似性などを用いる。
PB値は位相差AFに使用する基準画像と参照画像の像修正前の信号、及び像修正後の信号の4つの信号から求めた比の平均値、もしくは比の最小値を用いる。また、相関演算を行う際にローパスフィルター処理を行うのであれば、基準画像と参照画像について像修正とローパス処理をともに行った後の2つの信号をさらに追加した6つの信号から求めた比の平均値、もしくは比の最小値を用いる。
また基準画像と参照画像の類似性は、相関値が最小になったずらし量Kにおける基準画像と参照画像の差分を(式2)で求め、類似性の評価値とする。
類似性の評価値=Σabs(aJ−bJ+K) (式2)
そして、最大値と最小値の差が所定値以上、類似性の評価値が所定値以下の場合に、取得した基準画像用の信号及び参照画像用の信号が信頼性があると判定する。(式2)以外のものであっても両画像の類似性を評価するものであれば構わない。例えば相関値が最小になったずらし量Kにおける両画像の重なり部分の基準画像もしくは参照画像に対する比率を類似性の評価値としても良い。
ステップS508では、相関値が零になる像ずらし量を演算する。
相関値の演算は1画素づつずらして行われているため、位相差AF処理回路37において演算された相関値が零になることは稀である。そこで符号が異なるふたつの相関値と、その相関値を与えるずらし量から、相関値が零となる像ずらす量を求める。
式(1)で相関値を計算した結果、K=LとK=L+1の間で相関値UKの符号が反転したとすると、直線補間により相関値が零となる像ずらす量δは以下のようになる。
δ=L+|UL|÷[|UL|+CUL+1|]
但し、|z|はzの絶対値を意味する。
次いでステップS509において、プレディクション量Pを像ずれ量δから以下のように求める。
P=δ―Δ
但しΔは合焦時の像ずれ量である。
そして、撮影レンズ鏡筒31の特性から決まる基線長を用いることで、プレディクション量Pからデフォーカス量d(フォーカスレンズ群の移動量と方向)を以下のように求める。
d=K・P
但しKはフォーカスに関する敏感度で、撮影レンズ鏡筒31の焦点距離・絞り4の値・像高等に依存する値なので、EEPROM25内にこれらをパラメータとするテーブルを用意しておき、そのテーブルを参照して値を求めている。
次いでステップS510において、ステップS509で求められたデフォーカス量が妥当か判定する。具体的には、顔検出の結果から求まる概ねのデフォーカス量と略等しく、かつ以前に求められたデフォーカス量から算出される駆動目標位置と今回求められたデフォーカス量から算出される駆動目標位置が略等しい場合、妥当であると判定する。尚、ステップS509で求められたデフォーカス量から算出される駆動目標位置はステップS510の判定後も不図示のメモリ(保持手段)に一時保存され、新たにステップS510で判定が行われる際に以前に算出された駆動目標位置として用いられる。
具体的には、まずステップS401と同様の方法で顔検出を行った結果、現在の撮影レンズ鏡筒31の焦点距離、フォーカスレンズ群3の位置から概ねのデフォーカス量を求める。その後、ステップS509で求めたデフォーカス量がこの概ねのデフォーカス量と略等しいか調べる。例えば両者の差が焦点深度の3倍以下の場合に両者が略等しいとみなす。また、過去に位相差AF成功と判定されたデフォーカス量が検出されている場合は、その値と比較して駆動目標位置が略等しければ妥当性があると判定する(第2の判定手段)。尚、過去に複数回、位相差AF成功と判定されたデフォーカス量が検出されている場合は、各デフォーカス量から複数の駆動目標位置を算出し(第1の算出手段)、不図示のメモリに保持されている。保持されている複数の駆動目標位置により、前回のステップS510の処理により保持された駆動目標値の重み付けを大きくした加重平均値が算出され(第2の算出手段)、この算出された加重平均値と駆動目標位置が略等しければ妥当性があると判定する。但し、過去に複数回、位相差AF成功と判定されたデフォーカス量が検出されている場合であっても、その検出されたデフォーカス量の履歴が単調減少しておらず、増減を繰り返す場合は往復運動している被写体と思われる。よって、この場合は過去のデフォーカス量を判定に用いないようにする。
デフォーカス量が妥当と見なされた場合は(ステップS510でYES)、位相差AF成功として本処理を終了する。
このように顔検出を並行して行いその結果から求まる概ねのデフォーカス量で、位相差AF処理で求まるデフォーカス量の妥当性を判断しながら本処理は動作を進める。
一方、ステップS507で符号が反転していない場合等は、ステップS507からステップS511へ進み、相関値を求める演算の終端の値に像ずらし量がなったか否かを調べる。
終端の値になっていなければ、ステップS520へ進み、取得した相関値を一時記録されていた相関値と差し替え、その後、像ずらし量KをK←K+1と更新する。
終端の値になっていた場合はステップS512へ進み、それまでにデフォーカス量の検出が行われたかを調べる。
デフォーカス量の検出が行われていない場合は(ステップS512でNO)、ステップS516へ進んで位相差AFがNGと判定し、本処理を終了する。一方、デフォーカス量の検出が行われていた場合は(ステップS512でYES)、ステップS513へ進み、ステップS401と同様の方法で顔検出を行う。これにより、現在の撮影レンズ鏡筒31の焦点距離、フォーカスレンズ群3に位置から概ねのデフォーカス量を求め、ステップS514に進む。
そしてステップS514において、ステップS513で求めた概ねのデフォーカス量との差が所定値以内で略等しいと見なせるものがそれまでに検出が行われたかを調べる。もし複数該当するものがある場合は、フォーカスレンズ群3の移動量が最小となるデフォーカス量を選択する。この所定値はステップS510で用いる値より大きな値とする。例えば焦点深度の6倍程度の値にする。これにより、位相差AFで検出されたデフォーカス量と顔検出結果から求まるデフォーカス量を比較し、適当なものが選択される。
ステップS514において、デフォーカス量が選択された場合は(ステップS515でYES)、その選択されたデフォーカス量を位相差AF処理結果とし、位相差AF成功として本処理を終了する。一方、ステップS514においてデフォーカス量が選択されなかった場合は(ステップS515でNO)、ステップS516に進み、位相差AFがNGと判定して、本処理を終了する。
ここで、以前のデフォーカス量に関して再び評価するのは、合焦位置に近づくにつれ顔検出の精度が向上し、それから求められるデフォーカス量の精度が上がるため以前の評価では不適切と判断されたものの中に適切なものがある可能性があるからである。
図3に戻り、ステップS7の位相差AF処理の結果に基づき合焦可能と判断された場合(ステップS8でYES)、ステップS10へ進み、位相差AF処理の結果を用いて、デフォーカス量が零になると判断される位置へフォーカスレンズ群3を移動する。その後ステップS11の処理へ進む。
ここで正確なデフォーカス量検出が出来ていなくても合焦位置方向が検出可能な場合、ステップS10へ進み、その方向へフォーカスレンズ群3を駆動するようにしても良い。
またステップS8において、ステップS7の位相差AF処理の結果に基づき合焦可能とは判断されない場合には、ステップS9に進む。ステップS9では、ステップS2またはステップS19で行われた顔検出結果から得られる概ねのデフォーカス量に従いフォーカスレンズ群3を移動する。その後ステップS11の処理へ進む。
ステップS11においては、AF領域の読み出し完了を検知し、完了していなければステップS12へ進み、完了していれば、ステップS19でAF領域の再設定を行った後ステップS7に戻り位相差AF処理を行う。
AF領域の読み出し完了の検知は、TG16から出力されるセンサ駆動のための同期信号を計数することで行われる。具体的には、AF領域の最後の行の次の行の読み出し開始信号がTG16より出力される様にする。これにより、AF領域の読み出し完了を一定周期毎に検知する。
ステップS19においては、ステップS2〜S4と同様の処理を実行しAF領域を更新する。
まず顔検出処理を行い、人物の顔の画像上での位置と顔の大きさを求める。その後求められた顔領域内の画像信号を用いて合焦状態に応じたコントラストを表すAF評価値をスキャンAF処理回路14で、位相差AFに用いる信号のPB値を位相差AF処理回路37で求める。そして、このAF評価値、位相差AFに用いる信号のPB値、顔検出結果を用いて、実際に処理を行うAF領域を決定する。
具体的な方法はステップS4と同様であるが、合焦状態に近づくにつれ検出されるデフォーカス量が小さくなるので、デフォーカス量検出のための水平方向の範囲は狭くなる。そのため水平方向のAF領域も狭くなり、被写体が小さな顔である場合であっても、その顔以外の被写体を含む領域はAF領域から少なくなっていき、合焦位置付近では顔の領域とAF領域とを一致することが期待できる。
このようにフォーカスレンズ群3を駆動しながら(すなわち焦点位置の調節中に)顔検出を並行して行い、その結果から概ねのデフォーカス量を再推定し、水平方向のAF領域の範囲を設定している。
また合焦状態に近づくにつれ位相差AF処理に用いる画像のコントラストも高くなるので、デフォーカス量検出のための信号のS/N比も高くなるためAF評価値とPB値が大きくなる。そのため、垂直方向のAF領域も狭くなり、被写体が小さな顔である場合であっても、その顔以外の被写体を含む領域はAF領域から少なくなっていき、合焦位置付近では顔の領域とAF領域とを一致することが期待できる。
このようにフォーカスレンズ群3を駆動しながら信頼性指標の値の再判定を行い、その結果から垂直方向のAF領域の範囲を設定している。
ステップS12では、フォーカスレンズ群3がステップS7の位相差AF処理などで求められた駆動目標位置に到達したかを調べ、到達していなければステップS20に進み駆動を継続する。もし駆動目標位置が求められていない場合は、レンズの端位置に到達したか否を判定する。
ステップS12において、フォーカスレンズ群3が駆動目標位置へ到達した場合、ステップS13に進み、合焦動作が完了しているか否かの確認を行う。
これは駆動目標位置に到達した段階でフォーカスレンズ群3を停止し、その状態で位相差AF処理を行い検出されたデフォーカス量が所定値以下か否かで判定する。この所定値は、例えば焦点深度の3割にすれば良い。
更に合焦精度を上げるために、例えば検出されたデフォーカス量が焦点深度の1割を超える場合は複数回デフォーカス量検出を行い、その平均値となるデフォーカス量に従いフォーカスレンズ群3の移動制御等を行っても良い。
ステップS13で合焦動作が完了し合焦となった場合、ステップS14へ進みAF表示にOK(合焦)の表示を行う。これはLED29を点灯することなどにより行うと同時にLCD10上に緑の枠を表示するなどの処理を行う。
一方、ステップS13で合焦動作が完了しない(デフォーカス量が所定値を超える)場合は、ステップS19からステップS7へ進み、再度位相差AF処理を行う。
また、ステップS13で合焦動作が完了しない(NG)状態が所定回以上発生した場合は合焦不可能と判断し、ステップS17にてフォーカスレンズ群3を定点と呼ばれるあらかじめ定められた位置へ移動する。その後ステップS18においてAF表示にNG(非合焦)表示を行う。これはLED29を点滅表示することなどにより行うと同時にLCD10上に黄色の枠を表示するなどの処理を行う。
CPU15はステップS15において、SW2(レリーズスイッチの第二ストローク)の確認を行い、SW2がオンになっていた場合、ステップS16に進み、撮影時の露光量を決定する最終のAE処理を実行し、実際の露光処理を実行する。動画撮影の場合は動画記録釦が押された場合に記録を開始し、再度釦が押されたら記録を停止する。
なお、風景撮影など人物撮影以外の場合や、人物撮影でも何らかの理由で顔が検出されなかった場合は、AF領域を画面中央部に大きさが水平垂直とも画面の18%程度に相当する領域としてもよい。あるいは、被写体が人物以外である場合、AF領域を検出された大きさに合わせるようにしてもよい。またこれらの場合はステップS9等顔検出結果を用いた処理は行わない。ステップS9ではレンズの至近側もしくは遠側のいずれかの端位置に駆動し、ステップS7では信頼性のある位相差AF処理結果が得られるか否かで制御を切り替えるようにする。
このように、被写体(顔)検出に基づく概ねのデフォーカス量から、位相差AF処理によるデフォーカス量の妥当性を判断する。また被写体(顔)検出結果に基づく概ねのデフォーカス量に近いデフォーカス量を選択する。これにより、正確なデフォーカス量を検出できる。
更に上記概ねのデフォーカス量に応じて水平方向のAF領域を設定し、AF領域内の信号の信頼性等に応じて垂直方向のAF領域を設定することで、意図する被写体に正確に焦点調節動作を行うことを可能にしている。
本実施例の実施例1に対する違いは、主として3つである。一つ目は、親子の撮影など複数の大きさの異なる被写体が検出された場合に子供の顔に優先的にピントを合わせる処理を行う点である。二つ目は、手振れや被写体の移動を検出しその結果に応じてAF領域の大きさを変更する点である。三つ目は、絞り値を撮影者が指定しないモードで被写体検出結果を基に設定したAF領域で合焦が困難な場合は被写界深度を深くして撮影を行う点である。
また実施例2の撮像処理も、被写体が人物であり被写体検出回路36で人物の顔が検出する場合の例を説明する。
図6は、本発明の実施例2に係る撮像処理の手順を示すフローチャートである。以下、実施例1と同様の処理を行う部分は図3のフローチャートと同じ番号を付し説明は割愛する。
図6においてまず、ステップS1においてAE処理が行われ露光条件が設定された後、ステップS2aにおいて、複数の被写体に対してその顔領域が検出される顔検出処理が行われる。
その後ステップS3aにおいてAF領域の初期設定を行う。具体的には、まず、ステップS2aにおいて求められた複数の顔領域それぞれをAF領域の初期設定とする。次に、この初期設定された各領域内の画像信号を用いて合焦状態に応じたコントラストを表すAF評価値をスキャンAF処理回路14で、位相差AFに用いる信号のPB値を位相差AF処理回路37で求める。
次いでステップS4aにおいて、このAF評価値、位相差AFに用いる信号のPB値、顔検出結果を用いて、実際に処理を行うそれぞれの検出された顔に対応するAF領域を設定する。具体的には、ステップS3aで初期設定された各領域に対して、図4に示すAF領域設定処理が行われる。その後、図4の手順によって設定された各AF領域に対して手振れ量に応じたAF領域の拡大を行う。具体的には、振れ検出回路34で検出された水平方向の手振れ量φh・垂直方向の手振れ量φv・撮影レンズ鏡筒31の焦点距離fl・位相差AF処理の行われる間隔tpを用いて、手振れによる位相差AF処理が行われるタイミングでの顔の移動範囲を予測する。次にその予測した移動範囲を含む様にAF領域の範囲を拡大する。
まず水平方向のAF領域の範囲を拡大する。
手振れにより顔領域の水平方向の変位量xsは以下のように表せる。
xs=Rratio・tp・fl・tan(φh)
ここで、撮影者が意図的にカメラを揺らす等の特別な状況ではなく、手振れ補正による抑振率に3〜4段の補正効果が見込まれる場合は、Rratioを0.1程度の値にする。抑振率は手振れの周波数など個人差にも影響を受けるので、手振れ周波数や手振れ最大値などを考慮した関数にしても良い。またこのxsに上限値を設けても良い。例えば、元の顔領域の大きさに対して2割超は拡大しないようにする。
顔領域の水平方向の両端の座標がxl、xrであった場合は、水平方向の顔の予測移動範囲xlp、xrpは、以下のようになる。
xlp=xl―xs
xrp=xr+xs
図4のステップS405において水平方向のAF領域が水平所定値に設定され、かつその設定された範囲内に上記のxlp、xrpが含まれていれば水平方向のAF領域の範囲を変更しない。一方、その設定された範囲内に含まれていない場合や図4のステップS404において水平方向のAF領域が顔の水平方向範囲に設定された場合は、xlp〜xrpに水平方向のAF領域の範囲を拡大する。なお拡大する場合は、常にxlp〜xrpにまで水平方向のAF領域の範囲を拡大するのではなく、xsの大きさに応じて拡大量を変更しても良い。例えば、xsに上限値を設けられている場合は、xsの二乗に拡大量が比例し、最大値が上限値Xslimとなるようにする。すなわち、xlp、xrpは、以下のように求められる。
xlp=xl−(xs)・(xs)÷Xslim
xrp=xr+(xs)・(xs)÷Xslim
このようにするのは検出された手振れ量が小さい場合は、検出誤差などの可能性があり拡大することで弊害が起こる可能性があるためである。
次いで垂直方向のAF領域の範囲を拡大する。
手振れにより顔領域の垂直方向の変位量ysは以下のように表せる。
ys=Rratio・tp・fl・tan(φv)
この量が所定値を超える場合にAF領域の垂直方向の拡大を行い、上下の位相差AFを行うための画素行を含む様に垂直方向の範囲を拡大する。ここで閾値とする所定値は、例えば位相差AFを行うための画素行の配置される間隔Lintの2分の1とすれば良い。
実際に拡大する量yaddは、以下のように計算されたyadd′を四捨五入した値をLint倍した値である。
yadd′=(ys÷Lint)
しかしながら、yaddの値の最大値は制限する。例えば最大垂直方向の画素数の5%程度を制限値とする。水平方向の場合と同様にysの二乗に拡大量が比例するなど、ysの大きさに応じて拡大量を変更しても良い。
顔領域の垂直方向の両端の座標がyu、ybであった場合は、垂直方向の顔の予測移動範囲yup、ybpは、以下のようになる。
yup=xl−yadd
ybp=xr+yadd
また、ステップS4aでは、ステップS8以降の処理の対象となるAF領域を、被写体検出回路36の出力に基づき選択する。
具体的には、被写体検出回路36にはあらかじめ複数の被写体情報を登録し(登録手段)、優先して検出する被写体の順位付けをする。例えば家族全員の顔情報を登録し、子供を優先して検出するように順位付をすることができる。これにより登録された顔から優先順位の高い子供の顔を選択してステップS8以降のAF等の処理に反映することが可能になる。
被写体検出回路36の出力に従い優先順位の高い顔を選択して、その顔に対応するステップS4aで設定したAF領域をAF処理の対象とする。すなわち、スナップ撮影など親子での撮影においては、子供の顔に対応する領域がAF処理の対象となる。
但し、顔が小さいために優先順位の高い顔に対応する領域が図4に示す処理で領域拡大されると、その領域をAF処理の対象としてしまうとAF精度が落ちてしまう。そこで、優先順位の高い顔に対応する領域が拡大されている間は、優先順位の低い登録された顔が検出されその対応する領域が図4に示す処理で領域拡大されていないのであれば、その優先順位の低い登録された顔に対応する領域をAF処理の対象とする。これにより、例えばスナップ撮影など親子での撮影において、子供の顔に対応する領域がAF処理の対象となった場合、本処理においては、子供の顔に対応する領域でのAF精度が落ちる場合がある。このような場合、親の顔に対応する領域でAF処理を行い、子供の顔に対応する領域でのAF精度が上がるのを待つことができる。
予め登録されている被写体情報が一つの場合は、実施例1と同じ動作になるため説明は割愛する。また、予め登録された被写体情報が無い場合は、ステップS2aで検出された顔のうち最も大きな顔に対するAF領域をステップS8以降の処理の対象として選択する。この場合も実施例1と同じ動作になるため説明は割愛する。
その後ステップS5→S6→S7aと進み位相差AF処理を行う。ステップS7aでは、複数のAF領域それぞれに関して、図5の手順に従って位相差AF処理を行い、それぞれのAF領域に関して、位相差AFで合焦可能か否か判定し、可能な場合は検出されたデフォーカス量を取得する。
ステップS8では、ステップS7において処理の対象に選択されたAF領域に関して位相差AFで合焦可能か判定し、その結果に従いステップS9、ステップS10の処理を行う。
ステップS11では、AF領域の読み出しが完了したかを調べ、結果に従い、実施例1と同様、分岐処理を行う。
具体的には、AF領域の読み出しが完了した場合(ステップS11でYES)、ステップS19aにおいてAF領域を更新する。ステップS19aでは、上記本実施例のステップS2a〜S4aと同様の処理を実行し、複数のAF領域に関して図4のAF領域設定処理を行いAF領域の更新を行う。
そしてステップS4aと同様に設定されたAF領域に対して手振れ量と光軸方向の被写体移動に応じた領域の拡大を行う。すなわち、まずは手振れによる顔領域の水平方向の変位量xs・垂直方向の変位量ysを求め、次いで光軸方向の被写体移動による顔領域の拡大量を求める。
このように、フォーカスレンズ群3を駆動しながら被写体(顔)検出処理を行う場合、被写体が光軸方向に移動していれば、被写体(顔)検出結果から得られる顔の大きさから次の位相差AF処理のタイミングにおける顔の大きさを予測することが出来る。
位相差AF処理の行われる間隔がtp、処理タイミングがtのときに検出された顔の水平方向の大きさがFSh(t)である場合、ΔFShは以下のようになる。
ΔFSh=FSh(t+tp)−FSh(t)=FSh(t)−FSh(t−tp)
これに手振れによる顔領域の変位量を加え、水平方向の予測移動範囲xlp、xrpは、以下のようになる。
xlp=xl−(xs+ΔFSh/2)
xrp=xr+(xs+ΔFSh/2)
図4のステップS405において水平方向のAF領域が水平所定値に設定され、かつその設定された範囲内に上記のxlp、xrpが含まれていない場合xlp〜xrpに水平方向のAF領域の範囲を拡大する。同様に、図4のステップS404において水平方向のAF領域が顔の水平方向範囲に設定された場合も、xlp〜xrpに水平方向のAF領域の範囲を拡大する。
垂直方向も同様に、位相差AF処理の行われる間隔がtp、処理タイミングがtのときに検出された顔の垂直方向の大きさがFSv(t)である場合、ΔFSvは以下のようになる。
ΔFSv=FSv(t)−FSv(t−tp)
これに垂直方向の変位量ysを加えた量(ys+ΔFSv/2)が所定値を超えた場合にAF領域の垂直方向の拡大を行う。
実際に拡大する量yaddと垂直方向の顔の予測移動範囲yup、ybpはステップS4aと同様に計算される。
本実施例で実行される被写体(顔)検出処理及び位相差AF処理はいずれも、センサ5から読み出された画像信号を処理して行われるため、特殊な画像信号読み出し方式を採用しないかぎり、両者の処理タイミングは等しくなる。
なお遠ざかる場合は被写体移動に応じた領域の変更は行わない。
また拡大量は手振れ量に応じたAF領域の拡大の場合と同様に、ΔFShの二乗に拡大量が比例するなど、ΔFShの大きさに応じて拡大量を変更しても良い。
また撮像面内で被写体が移動している場合も被写体(顔)検出結果などを参考にその移動量と位相差AF処理のタイミングで被写体の位置を予測する。
被写体検出回路36に出力から検出された顔の代表座標(例えば両目の平均座標)を取得する。
位相差AF処理の行われる間隔がtp、処理タイミングがt、t−tpにおける顔の代表座標(x1、y1)(x2、y2)の場合、処理タイミングがt+tpにおける顔の代表座標の予測位置(x3、y3)は、(2・x2−x1、2・y2−y1)となる。よって、その差分はΔxFa、ΔyFaは、以下のようになる。
ΔxFa=x2−x1
ΔyFa=y2−y1
また、水平方向の予測移動範囲xlp、xrpは、以下のようになる。
xlp=xl−ΔxFa
xrp=xr+ΔxFa
ただし、移動方向にのみ拡大するので移動と反対方向のものの値は変化させない(xlp=xlまたはxrp=xrとする)。その後の処理はこれまでと同じである。
垂直方向も同様に移動と反対方向のものの値は変化させず、移動する方向の値はΔyFaを基にこれまでと同様に求める。
また拡大量は手振れ量に応じたAF領域の拡大の場合と同様に、ΔFShやΔFSvの二乗に拡大量が比例するなど、その大きさに応じて拡大量を変更しても良い。
AF領域を更新が終了した場合、処理の対象とする領域の再選択を行う。
ステップS4aの処理を行った結果、優先順位の高い顔に対応する領域が拡大されなければ、優先順位の高い登録された顔に対応する領域を処理の対象とする。
また、ステップS4aの処理を行った結果、優先順位の高い顔に対応する領域が拡大した場合、優先順位の低い登録された顔に対応する領域を処理の対象とする。但しこの場合、後述するステップS13aの処理において、優先順位の高い顔に対応する領域のデフォーカス量が明らかに大きくなった場合は、以後SW1がオフされるまでは、優先順位の低い登録された顔に対応する領域を処理の対象とはしない。
ステップS12では、フォーカスレンズ群3が駆動目標位置に到達したと判断された場合、ステップS13aに進み、合焦動作が完了しているか否かの確認を行う。具体的には、フォーカスレンズ群3を駆動目標位置で停止した後、優先順位の高い顔に対応する領域に対してその状態で位相差AF処理を行う。この位相差AF処理の結果検出されたデフォーカス量が所定値以下の場合、合焦動作完了し、合焦と判定してステップS14へ進み、AF表示にOK(合焦)の表示を行う。
一方、ステップS13aで優先順位の高い顔に対応する領域に対して合焦状態と判定できない場合は、優先順位の低い登録された顔に対応する領域に対して、合焦動作が完了しているか否かの確認を行う。合焦と判定されかつ焦点深度を深くすることで優先順位の高い顔に対応する領域も合焦範囲内とみなせる場合は、そのために必要な絞り値に設定した後、ステップS14へ進みAF表示にOK(合焦)の表示を行う。尚、この絞り値の設定と同時に、シャッター速度・撮影時の感度も必要に応じて設定するようにしてもよい。
この場合はステップS16の露光処理において、露光時の絞りを絞り焦点深度を深くすることで合焦範囲内とみなせる絞り値にし、その際のシャッター速度が所定値より遅くなる場合は撮影時に感度をその分高感度にする。例えば、位相差AF処理時の絞り値がF4で合焦範囲内と見なせる絞り値がF11の場合、露光量を変わらないように制御するとシャッター速度が3段遅くなり、1/250秒から1/30秒になる。もし撮影レンズの焦点距離が500mmの場合、シャッター速度を1/125秒より速くしなければならない。そこで撮影時の感度を2段(例えばISO200から800)上げて、シャッター速度を1/125秒とする。
優先順位の低い登録された顔に対応する領域に対しても合焦と判定されない場合は(ステップS13でNO)、ステップS19からステップS7へ進み、再度位相差AF処理を行う。
さらに、ステップS13で優先順位の高い顔に対応する領域だけでなく、優先順位の低い登録された顔に対応する領域に対しても合焦と判定されない(NG)状態が所定回以上発生した場合は合焦不可能と判断し、ステップS21へ進む。
ステップS21では、絞りを絞り焦点深度を深くすることで合焦範囲内とみなせるか否かを判定する。絞りを絞ることで合焦範囲内にあると見なせる場合は、露光処理(ステップS16)で所定の絞り値に絞ることを指示した後ステップS14に進む。但しステップS16での露光処理においては、ここで指示された絞り値と、それ以外の動作によって設定された絞り値(例えばAv優先モード等において撮影者によって指示された絞り値)と比較し、より絞る方の絞り値を採用する。
また、ステップS21では合焦範囲内とみなせるか否かの判定は、位相差AFの結果を用いて行う。
ステップS13においてはフォーカスレンズ群3を停止し、その状態で位相差AF処理を行ってデフォーカス量を検出する。検出されたデフォーカス量では焦点深度が基準とする所定値を超えるので、絞り4を絞ることによって焦点深度を深くする。
この絞り4を絞ることによって合焦範囲内とみなせる絞り値Fdは以下のように求められる。
Fd= 検出されたデフォーカス量÷焦点深度を基準とする所定値×現在の絞り値
この値が絞り4の最小絞り値より開放よりであれば、それを実際に設定指示する絞り値とし、絞り4を絞ることで合焦範囲内と見なせると判定する。
また実際に設定指示する絞り値には上限を設け、上限を超えた場合は絞り値Fdに絞り4を絞っても合焦範囲内にあると見なせないと判断するようにしても良い。
この上限は、例えば、位相差AF処理実行時の絞り値の3倍の値とする。
さらに、位相差AF処理で合焦可能と判断されていない場合は、ステップS21の判定は行わずに絞り4を絞っても合焦範囲内にあると見なせないと判断する。
ステップS13において絞り4を絞っても合焦範囲内にあると見なせない場合は、ステップS17にてフォーカスレンズ群3を定点と呼ばれるあらかじめ定められた位置へ移動する。その後ステップS18においてAF表示にNG(非合焦)表示を行う。これはLED29を点滅表示することなどにより行うと同時にLCD10上に黄色の枠を表示するなどの処理を行う。
本実施例においては定点を以下の順序で設定する。
優先順位の高い登録された顔に対応する領域で位相差AF処理した結果、ステップS8で一度でも合焦可能と判定された場合は、優先順位の高い登録された顔に対応する領域で位相差AF処理した結果得られた最終の駆動目標位置を定点とする。
また、優先順位の低い登録された顔に対応する領域で位相差AF処理した結果、この領域でのみステップS8で一度でも合焦可能と判定される場合がある。この場合は、優先順位の低い登録された顔に対応する領域で位相差AF処理した結果得られた最終の駆動目標位置を定点とする。
登録された顔に対応する領域で位相差AF処理の結果、ステップS8で全て合焦不可能と判定された場合は、例えば無限遠に合焦する位置等あらかじめ定められた位置を定点とする。
その後ステップS15におけるSW2(レリーズスイッチの第二ストローク)の確認、ステップS16における実際の露光処理を実行する。
なお、風景撮影など人物撮影以外の場合や、人物撮影でも何らかの理由で顔が検出されなかった場合は、AF領域を画面中央部に大きさが水平垂直とも画面の18%程度に相当する領域としてもよい。あるいは、被写体が人物以外である場合、AF領域を検出された大きさに合わせるようにしてもよい。またこれらの場合はステップS9等の顔検出結果を用いた処理は行わない。ステップS9ではレンズの至近側もしくは遠側のいずれかの端位置に駆動し、ステップS7aでは信頼性のある位相差AF処理結果が得られるか否かで制御を切り替えるようにする。
この場合のステップS4aにおけるAF領域の範囲の拡大は以下のように行う。
まずは手振れによる顔領域の水平方向の変位量xs・垂直方向の変位量ysを顔が検出された場合と同様にして求める。
次いで被写体が近づく場合の光軸方向の被写体移動による領域の拡大量を求める。
3回以上のデフォーカス量の検出結果があれば二次関数で被写体の動きを近似し、その関数の時刻に関する変数に位相差AF処理の行われる間隔tpから得られる位相差AF処理のタイミングを代入する。これにより、次の位相差AF処理時のフォーカスレンズ群3の位置を知ることが出来る(第3の検出手段)。このフォーカスレンズ群3の位置から被写体の像倍率変化を予想し、その分位相差AF処理を行う領域を拡大する。
位相差AF処理を行いデフォーカス量を検出した時点と次の位相差AF処理の時点でのフォーカスレンズ群3の位置p1・p2とする。この場合、フォーカスレンズ群3の位置p1・p2から被写体距離L1・L2が計算されるとすると、次の位相差AF処理時の画面上の被写体領域の水平方向の変化量ΔASh及び垂直方向の変化量ΔASvは、以下のように求められる。
ΔASh=ASh(L1)×{(L1×p2)/(L2×p1)−1}
ΔASv=ASv(L1)×{(L1×p2)/(L2×p1)−1}
ここで、ASh(L1)、ASv(L1)はそれぞれデフォーカス量を検出した時点の画面上にAF領域の水平方向の大きさ及び垂直方向の大きさである。
そして撮像面内で被写体が移動している場合は、CPU15においてAF領域での動きベクトルを求める事で、画面上の動き量を検出する。
デフォーカス量を検出した時点での水平方向及び垂直方向それぞれの動きベクトル検出量Δmvh,Δmvvが、次の位相差AF処理時の撮像面内での移動による被写体領域の水平方向及び垂直方向の変化量となる。
このようにして求めた各要因による被写体領域の水平方向の変化量から水平方向の予測移動範囲xlp、xrpは、以下のようになる。
xlp=xl―√{(xs+ΔASh/2+Δmvh/2)・(xs+ΔASh/2+Δmvh/2)}
xrp=xr+√{(xs+ΔASh/2+Δmvh/2)・(xs+ΔASh/2+Δmvh/2)}
そして拡大前の設定値が図4のステップS405において水平所定値に設定され、かつその範囲内に上記のxlp、xrpが含まれていない場合は、xlp〜xrpに水平方向のAF領域の範囲を拡大する。同様に、拡大前の設定値が図4のステップS404において顔の水平方向範囲に設定された場合も、xlp〜xrpに水平方向のAF領域の範囲を拡大する。
そして、RMS値(√{(ys+ΔASv/2+Δmvv/2)・(ys+ΔASv/2+Δmvv/2)})が所定値を超えた場合にAF領域の垂直方向の範囲の拡大を行う。
実際に拡大する量yaddと垂直方向の顔の予測移動範囲yup、ybpはステップS4と同様に計算される。
但し、Δmvh・Δmvvに関しては移動方向にのみ拡大するので移動と反対方向のものの値は零とする。
また拡大量は手振れ量に応じたAF領域の拡大の場合と同様に、ΔAShの二乗やΔASvの二乗に拡大量が比例するなど、その大きさに応じて拡大量を変更しても良い。
このようにすることにより、手振れや被写体の移動によって被写体の存在する画面上の位置が変わることによって生じる被写体の一部、特にコントラストの高い部分の消失を防ぐ事ができるので、常に安定した焦点調節動作が可能になる。
実施例1〜実施例2はコンパクトタイプのデジタルカメラ等からなる撮像装置1による静止画撮影を例に説明した。しかしながら、本発明は、デジタルビデオカメラでの動画撮影やデジタル一眼レフのライブビュー時・携帯端末のカメラ機能を用いた際等のAFに適用可能である。また動画撮影の場合は、AFが不可能な場合はフォーカスレンズを動かさないなど静止画の場合とは異なる処理が必要な場合がある。
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。また、上述の実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線/無線通信を用いてプログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのプログラムを実行する場合も本発明に含む。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OステップSに供給するスクリプトデータ等、プログラムの形態を問わない。プログラムを供給するための記録媒体としては、例えば、ハードディスク、磁気テープ等の磁気記録媒体、光/光磁気記憶媒体、不揮発性の半導体メモリでもよい。また、プログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムを記憶し、接続のあったクライアントコンピュータがコンピュータプログラムをダウンロードしてプログラムするような方法も考えられる。