(58)【調査した分野】(Int.Cl.,DB名)
撮影光学系の異なる瞳領域を通過した光束から被写体の一対の像信号を検出し、当該一対の像信号を相対的にシフトさせて得られる位相差からデフォーカス量を求める焦点検出手段と、
複数の焦点検出領域から前記撮影光学系の焦点状態を検出するための所定の焦点検出領域を選択する選択手段と、
前記複数の焦点検出領域について焦点検出領域ごとにデフォーカス量を求め、デフォーカスマップを作成するデフォーカスマップ作成手段と、
前記デフォーカスマップの作成時に、前記所定の焦点検出領域との相対位置に基づいて、前記複数の焦点検出領域に対してシフト範囲を設定する設定手段と、を有することを特徴とする焦点検出装置。
前記評価値は全ての焦点検出領域に対して設定され、前記所定の焦点検出領域に近い領域は大きく、前記所定の焦点検出領域から離れた領域では小さくなるように設定されることを特徴とする請求項2ないし4のいずれか1項に記載の焦点検出装置。
前記設定手段は、前記所定の焦点検出領域に近い領域は広く、前記所定の焦点検出領域から離れた領域は狭くなるように前記シフト範囲を設定することを特徴とする請求項1ないし5のいずれか1項に記載の焦点検出装置。
前記設定手段は、前記所定の焦点検出領域に設定されるシフト範囲を基準として全ての焦点検出領域に対してシフト範囲を設定することを特徴とする請求項1ないし7のいずれか1項に記載の焦点検出装置。
前記基準となるシフト範囲は、前記撮影光学系のレンズごとの焦点位置の誤差と、前記焦点検出手段を構成する焦点検出センサの取付誤差とに応じて補正されることを特徴とする請求項8に記載の焦点検出装置。
前記レンズごとの焦点位置の誤差に関する補正値は、前記焦点検出領域のうち中央に位置する焦点検出領域では小さく、周辺に位置する焦点検出領域ほど大きくなる特性を有することを特徴とする請求項9に記載の焦点検出装置。
コンピュータを、請求項1ないし11のいずれか1項に記載された焦点検出装置または請求項13に記載された撮像装置の各手段として機能させるためのプログラムを格納したコンピュータが読み取り可能な記憶媒体。
【発明を実施するための形態】
【0010】
以下に、本発明を実施するための形態について詳細に説明する。尚、以下に説明する実施の形態は、本発明を実現するための一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されるべきものであり、本発明は以下の実施の形態に限定されるものではない。また、後述する各実施形態の一部を適宜組み合わせて構成しても良い。
【0011】
[実施形態1]以下、本発明を、静止画や動画を撮影可能なレンズ交換式の一眼レフデジタルカメラなどの撮像装置に適用した実施形態について説明する。なお、本発明は、レンズ交換式の一眼レフカメラに限定されず、レンズユニットとカメラ本体が一体的に構成されたコンパクトカメラなどにも適用可能である。
【0012】
<装置構成>
図1を参照して、本発明に係る実施形態の撮像装置の構成および機能の概略について説明する。
【0013】
図1において、本実施形態の撮像装置としてのデジタルカメラ(以下、カメラ)100は、カメラ本体30と、当該カメラ本体30に対して交換可能に構成されたレンズユニット20とを含む。レンズユニット20とカメラ本体30は、レンズマウント40を介して接続される。
【0014】
レンズユニット20は、撮影レンズ21と、絞り22と、レンズ制御部1と、レンズ駆動ユニット2と、絞り駆動ユニット3と、繰り出し位置検出ユニット4と、メモリ5とを備える。撮影レンズ21は、光軸方向に移動することで、焦点調節を行うためのフォーカスレンズを含む。また、変倍を行うためのズームレンズを含んでもよい。撮影レンズ21は、レンズ駆動ユニット2によって駆動される。絞り22は、絞り駆動ユニット3によって駆動され、後述する撮像素子101への入射光量を制御する。なお、撮影レンズ21と絞り22により、撮影光学系が構成される。
【0015】
レンズ制御部1は、CPU(またはMPU)、RAM、入出力回路、タイマー回路などを含み、1つまたは複数のハードウェア回路から構成される。レンズ制御部1は、CPUがメモリ5に格納されたプログラムをRAMの作業エリアに展開し、実行することにより、レンズユニット20の全体の動作を制御する。
【0016】
メモリ5は、レンズユニット20の制御プログラムや各種パラメータを記憶する電気的に消去・書き込み可能なEEPROMなどが用いられる。また、メモリ5には、オートフォーカスに必要な光学情報テーブルが記憶されている。
【0017】
レンズ駆動ユニット2は、レンズ制御部1からの制御信号に応じて、撮影レンズ21を駆動する。
【0018】
絞り駆動ユニット3は、レンズ制御部1からの制御信号に応じて、絞り22を駆動する。
【0019】
繰り出し位置検出ユニット4は、レンズ鏡筒の繰り出し位置を検出する。
【0020】
カメラ本体30は、カメラ制御部6と、焦点検出ユニット7と、シャッター駆動ユニット8と、操作部10と、測光ユニット11とを備える。また、カメラ本体30は、メインミラー12と、サブミラー13と、ピント板14と、ペンタミラー15と、ファインダー16と、表示部17と、撮像素子(イメージセンサ)101と、第1シャッタースイッチ18と第2シャッタースイッチ19とを備える。
【0021】
カメラ制御部6は、CPU(またはMPU)、RAM、入出力回路、タイマー回路などを含み、1つまたは複数のハードウェア回路から構成される。メモリ23は、カメラ100の制御プログラムや各種パラメータを記憶する電気的に消去・書き込み可能なEEPROMなどが用いられる。
【0022】
また、カメラ制御部6は、レンズマウントを介してレンズ制御部1に通信可能に接続され、レンズ制御部1からレンズ位置情報を取得したり、レンズ駆動及び交換レンズごとに固有の光学情報を取得可能である。また、カメラ制御部6は、撮影レンズ21や絞り22の駆動命令をレンズ制御部1に送信可能である。
【0023】
カメラ制御部6は、CPUがメモリ23に格納されたプログラムをRAMの作業エリアに展開し、実行することにより、カメラ100の全体の動作を制御する。ここで、プログラムとは、後述する焦点検出処理の制御シーケンスを実行するためのプログラムを含んでいる。なお、カメラ本体30には、メモリーカードなどの記録媒体が装着可能であり、記録媒体には撮影された画像データなどが記録される。なお、記録媒体は、カメラ100に内蔵されたメモリ23と同一の構成としてもよい。
【0024】
表示部17はLCDなどの表示パネルであり、カメラ100の動作モードに応じた情報、例えば撮影モードならば撮影時の設定情報、撮影前のプレビュー画像や撮影後の確認用画像などを表示する。
【0025】
焦点検出ユニット7は、
図2で後述する焦点検出センサ107を備え、カメラ制御部6からの制御信号に応じて、位相差検出方式による焦点検出処理を行う。また、焦点検出ユニット7は、焦点検出センサ107からの信号読み出し完了通知をカメラ制御部6に送出する。
【0026】
シャッター駆動ユニット8は、カメラ制御部6からの制御信号に応じて、不図示のメカニカルシャッターを駆動する。
【0027】
操作部10は、カメラ100の設定や動作モードなどを変更するためのユーザ操作を受け付けるダイヤルやボタンなどの入力手段であり、例えば連続撮影速度(連写速度)やシャッター速度、絞り値などの撮影時の設定や、カメラ100を撮影モードや再生モードなどに切り替える指示を行う。
【0028】
測光ユニット11は、不図示の測光センサを備え、カメラ制御部6からの制御信号に応じて、カメラ本体30に設けられた不図示のレリーズボタンが半押しされたときに、ペンタミラー15からの光束に基づき測光センサ(不図示)を介して測光処理を行う。測光センサは、フォトダイオードなどの光電変換素子や信号処理回路などを有し、被写体像の輝度レベルに関する信号を出力し、その出力信号はカメラ制御部6に送出される。
【0029】
メインミラー12は、レンズユニット20を介して入射された光束を上方へ折り返し、ピント板14に被写体像を結像させる機能を有する。ピント板14に結像される倒立逆像はペンタミラー15により正立正像に復元・反射されてファインダー16へ導かれる。これにより、光学ファインダーとして機能する。ペンタミラー15を透過した一部の光は、測光ユニット11へ導かれる。
【0030】
また、メインミラー12に入射した光束の一部は透過し、透過した光がサブミラー13を介して焦点検出ユニット7へ導かれる。そして、不図示のレリーズボタンが全押しされた撮影指示状態となると、メインミラー12及びサブミラー13が退避して、レンズユニット20を介して入射される被写体像がイメージセンサ101に結像される。
【0031】
第1シャッタースイッチ18は、不図示のレリーズボタンの半押し(撮影準備指示)によりオンとなり、カメラ制御部6に第1シャッタースイッチ信号を出力する。カメラ制御部6は、第1シャッタースイッチ信号を受けて、イメージセンサ101を制御することによりAF(オートフォーカス)処理やAE(自動露出)処理、AWB(オートホワイトバランス)処理、EF(フラッシュプリ発光)処理等の動作を開始する。
【0032】
また、第2シャッタースイッチ19は、不図示のレリーズボタンの操作完了、いわゆる全押し(撮影指示)によりオンとなり、カメラ制御部6に第2シャッタースイッチ信号を出力する。カメラ制御部6は、第2シャッタースイッチ信号を受けて、イメージセンサ101からの信号読み出しから記録媒体に画像データを書き込むまでの一連の撮影処理の動作を開始する。
【0033】
<焦点検出ユニット>次に、
図2を参照して、
図1の焦点検出ユニット7の構成および機能について説明する。
【0034】
図2において、レンズユニット20から入射してメインミラー12を透過した光束の一部は、サブミラー13により下方へ向けて反射され、焦点検出ユニット7へ導かれる。焦点検出ユニット7は、視野マスク102、赤外線カットフィルタ103、フィールドレンズ104、絞り105、二次結像レンズ106、焦点検出センサ107、複数の反射ミラー108a〜108cを備える。
【0035】
焦点検出センサ107は、フォトダイオードなどの光電変換素子からなる一対のラインセンサや信号処理回路を有し、撮影レンズ21の一対の瞳領域を通過した光束から被写体の一対の像信号を検出し、カメラ制御部6に送出する。本実施形態では、一対のラインセンサから出力される一対の像信号をA像、B像とする。
【0036】
カメラ制御部6は、焦点検出部111、AFフレーム選択部112、AFフレームグループ決定部113、評価測光部114、デフォーカスマップ作成部115、被写体倍率算出部116を有する。
【0037】
<評価測光>次に、
図3を参照して、上述したカメラ制御部6の評価測光部114による測光処理としてデフォーカスマップを用いた評価測光方法について説明する。
【0038】
図3の点線で示した枠は測光センサの各センサブロックである。
【0039】
測光センサはセンサブロックごとに測光値を検出し、カメラ制御部6へ送出する。カメラ制御部6は評価測光部114において、得られた測光値を用いて適切な露光量に制御するため評価測光を行う。
【0040】
評価測光とは、AFフレーム(焦点検出領域)ごとに評価値を算出し、各AFフレームの評価値と測光値とに基づいて、絞り22およびシャッターを駆動して最終的な露出を決定するための測光方式である。本実施形態では、評価値は各AFフレームごとに求められるデフォーカス量から算出される値とする。
【0041】
AFフレームに対応していない測光センサのセンサブロックも存在するが、全てのセンサブロックの測光値の平均値に露出を合わせる露出制御などで用いられる。
【0042】
図3は中央のAFフレーム32を用いてAF動作を行うシーンを説明する図である。AFフレーム選択処理の詳細については
図5で後述するが、選択されたAFフレーム32は、ユーザもしくはカメラ制御部6が主被写体であると判断した被写体を捕捉している。したがって、主被写体である中央に位置する男性とその隣に位置する女性に露出を合わせることが望まれる。露出を決定するための評価測光では、全てのAFフレームに対してデフォーカス量を算出し、主被写体の近傍に位置する被写体の評価値を高くする一方、主被写体から離れた被写体の評価値を低くする。このように、全AFフレームに評価値を与え、評価値が高いAFフレームに対応する測光センサのセンサブロックの測光値に重みを付けることで適切な露出制御を行うことができる。
【0043】
この評価測光を、主被写体である男性と女性が同じ被写体距離で平行に並んでいる
図3を具体例として説明する。主被写体を捕捉しているAFフレーム31、37、41、42、53、57、61におけるデフォーカス量は、焦点検出に用いたAFフレーム32のデフォーカス量と同じ値となるため評価値を高くする。一方で、AFフレーム47、51で捕捉している人や、左側に位置する木は背景であるため、これらの被写体に対応するAFフレームで検出されるデフォーカス量は、AFフレーム32のデフォーカス量とは大きく異なる。よって、このようなAFフレームに対しては評価値を低くすることで、背景の測光値に影響されにくく、主被写体に露出制御を合わせることができる。
【0044】
<AF(オートフォーカス)動作>次に、
図4を参照して、本実施形態のカメラ100によるAF動作について説明する。
【0045】
なお、AF動作は、後述する焦点検出処理における検出結果に基づいて、カメラ制御部6が合焦位置まで撮影レンズ21(フォーカスレンズ)の駆動を制御する。
【0046】
また、本実施形態のAF動作は、カメラ制御部6とレンズ制御部1とが協働して実現される。
図4のAF動作を行う制御シーケンスは、第1シャッタースイッチ18がオンされると開始され、カメラ制御部6のCPUがメモリ23から読み出したプログラムをRAMに展開して実行することで実現される。
【0047】
ステップS401では、カメラ制御部6は、第1シャッタースイッチ18がオンされ、第1シャッタースイッチ信号が入力されたことにより焦点検出部111において焦点検出処理を行う。詳細は
図5で後述する。
【0048】
ステップS402では、カメラ制御部6はAFフレームグループ決定部113において、ステップS401で決定した第1AFフレームの位置に基づき、全AFフレームについてAFフレームグループに分類する。詳細は
図8で後述する。
【0049】
ステップS403では、カメラ制御部6は、ステップS402で分類したAFフレームグループごとにステップS401で決定した第1AFフレームのデフォーカス量を基準として、評価測光の評価値と、撮影レンズ21の焦点距離情報と被写体距離情報から求められる被写体倍率とに基づいてデフォーカスマップ作成時のシフト量を算出する。詳細は
図10で後述する。
【0050】
ステップS404では、カメラ制御部6はデフォーカスマップ作成部115において、ステップS401で焦点検出処理が行われていないAFフレームについて、ステップS403で算出したシフト量、および、ステップS401で算出した第1AFフレームのデフォーカス量を用いて焦点検出を行い、デフォーカスマップを作成する。詳細は
図13で後述する。
【0051】
ステップS405では、カメラ制御部6は、ステップS401で算出したデフォーカス量に応じて、レンズ制御部1に制御信号を出力し、レンズ制御部1はレンズ駆動ユニット2により撮影レンズ21を合焦位置に駆動する。
【0052】
<焦点検出処理>次に、
図5を参照して、
図4のステップS401における焦点検出処理について説明する。
【0053】
ステップS501では、カメラ制御部6は、AFモードが任意一点モードであるか否かを判定し、任意一点モードであった場合はステップS503に進み、そうでない場合はステップS502に進む。
【0054】
AFモードは、ユーザにより選択される一点モード、領域拡大モード、AFフレーム自動選択モードのいずれかを含み、ユーザが焦点状態を検出するAFフレームを任意に選択可能である。任意一点モード、領域拡大モード、および自動選択モードにおける各処理の詳細は後述する。
【0055】
(任意一点モード)
ステップS503からS507は任意一点モードにおける焦点検出処理である。任意一点モードは、ユーザが複数のAFフレームから任意のAFフレームを1つ選択し、選択したAFフレームの焦点状態を検出する処理である。
【0056】
ステップS503では、カメラ制御部6のAFフレーム選択部112は、ユーザが複数のAFフレームから任意に選択したAFフレームを任意一点のAFフレームとして設定する。
図3ではAFフレーム32を任意一点のAFフレームとする。
【0057】
ステップS504では、カメラ制御部6は、焦点検出ユニット7に信号電荷の蓄積指示を出力する。焦点検出センサ107は、信号蓄積指示に応じて信号蓄積動作を開始し、必要な信号が蓄積されると蓄積動作を終了する。信号蓄積動作を行う焦点検出センサ107のラインは任意一点のAFフレームに関わらず、全てのラインについて蓄積動作を行う。
【0058】
ステップS505では、カメラ制御部6は、焦点検出センサ107が蓄積した信号のうち、ステップS503で選択された任意一点のAFフレームに対応するラインから一対の像信号をA像、B像として取得する。
【0059】
ステップS506では、カメラ制御部6は、ステップS505で取得したA像とB像に基づき、第1相関演算を行う。
【0060】
以下に、
図6を参照して、第1相関演算におけるA像、B像のシフト波形と相関量の演算方法について説明する。
【0061】
ここで、焦点検出センサ107から取得した像信号をシフトさせた波形をシフト波形と呼び、第1相関演算を行う像信号は、ステップS505で読み出した像信号である。
【0062】
図6(a)はシフト量がゼロの場合のシフト波形であり、
図6(b)はシフト量が1bitの場合のシフト波形、
図6(c)はシフト量が2bitの場合のシフト波形をそれぞれ示している。シフト量は、例えばB像を固定して、A像を左右方向にシフトすることで制御される。
【0063】
相関演算式(1)を用いて、シフト量kbitでの相関量C(k)を演算する。
【0064】
C(k)=Σ|A(i−k)−B(i)|・・・(1)
本実施形態では、シフト量は±4bitとし、シフト量ゼロを含めて9個のシフト波形をRAMに記憶する。
【0065】
各シフト波形のA像、B像の差分面積(
図6(a)〜(c)の斜線部の面積)を相関量Cとし、各シフト波形の相関量Cが最も小さくなるときのシフト量がA像とB像の位相差に対応する。
【0066】
このように、
図6(a)の像信号に対して、シフト量を±4bitでシフトさせた場合の相関量Cを
図7(a)に示す。シフト量kが−2bitの相関量が最も小さい値となっているが、極小値は点線で示すようにシフト量kが−2bitと−3bitの間にある。そこで、シフト量k=−2bitとその近傍の相関量から補間演算することで位相差検出の分解能を上げる。ここでは、シフト量kが−1bit、−2bit、−3bit、−4bitの4つの相関量Cを用いて補間演算を行う。
【0067】
上述した第1相関演算は、撮影レンズ21を合焦位置へ駆動するための演算であるため、焦点位置が大きくずれている場合も焦点状態を検出する必要がある。したがって、説明を容易化するために、シフト量kを±4bitとした場合を例示しているが、装着されているレンズにおける焦点検出可能な最大のシフト範囲で像信号のシフトを行う。
【0068】
図5のフローチャートに戻り、ステップS507では、カメラ制御部6は、ステップS506で求めた任意一点のAFフレームにおける第1相関演算結果に係数を乗じてデフォーカス量を算出し、任意一点のAFフレームにおけるデフォーカス量を第1デフォーカス量とする。また、第1デフォーカス量を求めたAFフレームを第1AFフレームとする。
【0069】
以上が、任意一点モードにおける焦点検出処理である。
【0070】
ステップS502では、カメラ制御部6は、AFモードが領域拡大モードであるか否かを判定し、領域拡大モードである場合はステップS508に進み、そうでない場合はステップS513に進む。
【0071】
(領域拡大モード)
ステップS508からS512は領域拡大モードにおける焦点検出処理である。領域拡大モードは、ユーザが選択した任意一点のAFフレームと、この任意一点のAFフレーム近傍のAFフレームの焦点状態を検出する処理である。
【0072】
ステップS508では、カメラ制御部6のAFフレーム選択部112は、ユーザにより複数のAFフレームから選択された任意一点のAFフレームと、この任意一点のAFフレーム近傍のAFフレームを領域拡大AFフレームとして設定する。ここで、
図3を用いて領域拡大AFフレームの選択方法について説明する。ユーザが選択した任意一点のAFフレームをAFフレーム32とすると、AFフレーム32の上下方向および左右方向に隣接するAFフレーム27、31、33、37と、任意一点のAFフレームを領域拡大AFフレームとして設定する。
【0073】
ステップS509では、カメラ制御部6は、ステップS504と同様に、焦点検出ユニット7に信号電荷の蓄積指示を出力し、焦点検出センサ107は、信号蓄積指示に応じて信号蓄積動作を行う。信号蓄積動作を行う焦点検出センサ107のラインは領域拡大AFフレームに関わらず、全てのラインについて蓄積動作を行う。
【0074】
ステップS510では、カメラ制御部6は、ステップS505と同様に、焦点検出センサ107が蓄積した信号のうち、ステップS508で選択された領域拡大AFフレームに対応するラインから一対の像信号を読み出し、A像、B像を取得する。
【0075】
ステップS511では、カメラ制御部6は、ステップS506と同様に、ステップS510で取得したA像とB像に基づき、第1相関演算を行う。
【0076】
ステップS512では、カメラ制御部6は、ステップS507と同様に、ステップS511で求めた領域拡大AFフレームにおける第1相関演算結果に係数を乗じてデフォーカス量を算出し、領域拡大AFフレームにおけるデフォーカス量を第1デフォーカス量とする。また、第1デフォーカス量を求めたAFフレームを第1AFフレームとする。
【0077】
ここで、領域拡大AFフレームのデフォーカス量から第1デフォーカス量を決定する方法について説明する。選択された領域拡大AFフレームのデフォーカス量の信頼性が高い場合は、選択された領域拡大AFフレームのデフォーカス量を第1デフォーカス量とする。一方、選択された領域拡大AFフレームのデフォーカス量の信頼性が低い場合は、領域拡大AFフレームで信頼性が高いデフォーカス量のうち、最も至近側を示すデフォーカス量を第1デフォーカス量とする。このデフォーカス量の信頼性については、例えば、信頼性が高い場合には相関演算を行うための像信号の振幅が十分であり、A像、B像の波形が同様の形になることから、一対の像信号の波形を比較することで判断できる。
【0078】
以上が、領域拡大モードにおける焦点検出処理である。
【0079】
(AFフレーム自動選択モード)
ステップS513からS516はAFフレーム自動選択モードにおける焦点検出処理である。AFフレーム自動選択モードは、全てのAFフレームの焦点状態を検出する処理である。
【0080】
ステップS502で領域拡大モードでない場合は、ユーザがAFフレームを選択しないため、AFフレーム自動選択モードとなる。
【0081】
ステップS513では、カメラ制御部6のAFフレーム選択部112は、焦点状態を検出するための所定のAFフレームとして全てのAFフレームを設定し、焦点検出ユニット7に信号電荷の蓄積指示を出力する。焦点検出センサ107は、信号蓄積指示に応じて全てのラインについて信号蓄積動作を行う。
【0082】
ステップS514では、カメラ制御部6は、ステップS505と同様に、焦点検出センサ107が蓄積した全AFフレームに対応するラインから一対の像信号を読み出し、A像、B像を取得する。
【0083】
ステップS515では、カメラ制御部6は、ステップS506と同様に、ステップS514で取得したA像、B像に基づき、第1相関演算を行う。
【0084】
ステップS516では、カメラ制御部6は、ステップS507と同様に、ステップS515で求めた全AFフレームにおける第1相関演算結果に係数を乗じてデフォーカス量を算出する。また、カメラ制御部6は、算出した全AFフレームのデフォーカス量で信頼性が高いデフォーカス量のうち、最も至近側を示すデフォーカス量を第1デフォーカス量とし、第1デフォーカス量を求めたAFフレームを第1AFフレームとする。
【0085】
以上のように、焦点検出処理では、任意一点モード、領域拡大モード、AFフレーム自動選択モードのいずれにおいても、レンズ駆動の目標値である第1デフォーカス量Defocusが決定される。
【0086】
<AFフレームグループ決定処理>次に、
図8を参照して、
図4のステップS402におけるAFフレームグループ決定処理について説明する。
【0087】
AFフレームグループ決定処理では、例えば
図9(a)に示すように全てのAFフレームをField0、Field1、Field2、Field3のいずれかのAFフレームグループに分類する。
図9(a)は任意一点モードでAFフレーム32が任意一点のAFフレームとして選択された場合を例示している。各AFフレームグループは、任意一点のAFフレーム32がFiled0、AFフレーム32の周囲のAFフレームがFiled1(右斜線)、Filed1の周囲のAFフレームがField2(左斜線)、Filed0〜Filed2以外のAFフレームがField3として分類される。
【0088】
ステップS801では、カメラ制御部6は、各AFフレームのうち最初にAFフレームグループに分類するAFフレーム[i]としてi=0を設定する。
図9では左上のAFフレーム[0]に対応する。
【0089】
ステップS802では、カメラ制御部6は、ステップS801もしくは、後述するステップS811で設定したAFフレーム[i]をAFフレームグループに分類するAFフレームとして設定する。
【0090】
ステップS803では、カメラ制御部6は、ステップS802で設定したAFフレーム[i]について、
図5の焦点検出処理におけるステップS507、S512、S516のいずれかで第1デフォーカス量Defocusが算出されているか否かを判定する。判定の結果、デフォーカス量が算出されている場合はステップS804に進み、算出されていない場合はステップS805に進む。
【0091】
ステップS804では、カメラ制御部6は、AFフレーム[i]をField0に分類するため、Field=Field0を代入する。
【0092】
ステップS805では、カメラ制御部6は、ステップS802で設定したAFフレーム[i]が第1AFフレームに隣接しているか否かを判定する。ここでは、隣接しているAFフレームは、第1AFフレームに対して縦・横・斜めいずれかの方向に対し、1AFフレーム以内に存在するAFフレームとする。AFフレーム[i]が第1AFフレームに隣接している場合はステップS806に進み、隣接していない場合はステップS807に進む。
【0093】
ステップS806では、カメラ制御部6は、AFフレーム[i]をField1に分類するため、Field=Field1を代入する。
【0094】
ステップS807では、カメラ制御部6は、ステップS802で設定したAFフレーム[i]について、第1AFフレーム近傍のAFフレームであるか否かを判定する。ここでは、第1AFフレーム近傍のAFフレームは、第1AFフレームに対して縦・横・斜めのいずれかの方向に対し、3AFフレーム以内に存在するAFフレームを近傍のAFフレームとする。AFフレーム[i]が第1AFフレーム近傍に存在している場合はステップS808に進み、存在していない場合はステップS809に進む。
【0095】
ステップS808では、カメラ制御部6は、AFフレーム[i]をField2に分類するため、FieldにField2を代入する。
【0096】
ステップS809では、カメラ制御部6は、AFフレーム[i]をField3に分類するため、FieldにField3を代入する。
【0097】
ステップS810では、カメラ制御部6は、全AFフレームについていずれかのAFフレームグループに分類したか否かを判定し、全AFフレームの分類が完了した場合は処理を終了し、完了していない場合はステップS811に進む。例えば、全AFフレームを65点とすると、i≧64である場合は、全てのAFフレームについていずれかのAFフレームグループに分類したとしてAFフレームグループ決定処理を終了する。一方、i<64である場合は、全てのAFフレームについていずれかのAFフレームグループに分類が完了していないとして、分類が完了していないAFフレームについて、AFフレームグループを分類するためステップS811へ進む。
【0098】
ステップS811では、カメラ制御部6は、次のAFフレーム[i]についてAFフレームグループを決定するため、iにi+1を代入する。
【0099】
以上の処理を全AFフレームについて行い、
図9(a)に示すように全AFフレームをいずれかのAFフレームグループに分類する。
図9(a)では、中央のAFフレーム32が第1AFフレームとして選択されているため、この第1AFフレームに対して1AFフレーム以内のAFフレームがField1に分類され、Field1を除く3AFフレーム以内のAFフレームがField2に分類される。
【0100】
次に、
図9(b)に示す第1AFフレームがAFフレーム42のように、全AFフレーム中の端に位置するAFフレームが選択された場合について説明する。
【0101】
AFフレーム42は全AFフレームの中で最も下方に位置するAFフレームであるため、Field1に分類されるAFフレームは、第1AFフレームから1AFフレーム以内に存在するAFフレームであるAFフレーム36、37、38、41、42となる。これは、第1AFフレームがAFフレーム32である
図9(a)よりも、Field1に分類されるAFフレームが少数となる。Field2についてもField1と同様である。また、Field3はField1、Field2に分類されるAFフレームが少なくなった分、Field3に分類されるAFフレームは多くなる。
【0102】
以上説明したように、全てのAFフレームをいずれかのAFフレームグループに分類し、分類したAFフレームグループごとに後述するシフト量を算出して後述するデフォーカスマップを作成する。
【0103】
<シフト量算出処理>次に、
図10を参照して、
図4のステップS403におけるシフト量算出処理について説明する。
【0104】
シフト量算出処理では、ステップS402で分類された各AFフレームグループごとにシフト量を算出する。
【0105】
ステップS1001では、カメラ制御部6は、レンズ制御部1からレンズ情報として撮影レンズ21の焦点距離情報bと被写体距離情報aを取得する。
【0106】
ステップS1002では、カメラ制御部6は被写体倍率算出部116において、ステップS1001で取得した焦点距離情報bと被写体距離情報aとを用いて式(2)から被写体倍率mを算出する。
【0107】
m=b/a・・・(2)
ステップS1003では、カメラ制御部6は、ステップS1002で算出した被写体倍率mを閾値と比較し、閾値よりも大きい場合はステップS1004に進み、閾値以下の場合はステップS1005に進む。
【0108】
ステップS1004では、カメラ制御部6は、閾値よりも大きい被写体倍率mを第1被写体倍率として、Field1におけるシフト量の設定を行う。
【0109】
ステップS1005では、カメラ制御部6は、第1閾値以下の被写体倍率mを第2被写体倍率として、Field1におけるシフト量の設定を行う。
【0110】
ここで、第1被写体倍率と第2被写体倍率は、第1被写体倍率>第2被写体倍率とする。
【0111】
すなわち、ステップS1004〜S1005では、カメラ制御部6は、各AFフレームごとに分類されたAFフレームグループごとにシフト量を設定する。このシフト量の設定方法について
図11(a)を用いて詳細に説明する。
【0112】
図11(a)の横軸はデフォーカス量であり、
図5で決定した第1デフォーカス量Defocusに対する各AFフレームごとのデフォーカス量の相対値を示している。したがって、第1デフォーカス量が原点となる。縦軸は評価測光における評価値である。
【0113】
図11(a)は評価測光の評価値を求めるための評価値グラフを示している。評価値グラフは、各AFフレームと第1AFフレームとの相対位置、および、第1デフォーカス量との相対値と評価値との相関関係を示したグラフである。この評価値グラフから全AFフレームについて評価値を決定する。
【0114】
まずField1に分類されたAFフレームについての評価値グラフ@Field1に着目する。Field1に分類されたAFフレームの評価値は実線で描かれた評価値グラフ@Field1から算出される。Field1に分類されたAFフレームのデフォーカス量は、第1デフォーカス量と同じ横軸が原点の場合が最も評価値が高く、原点から離れるにしたがって、評価値は小さくなる。デフォーカス量が一定値以上離れた場合には評価値は0となるため、評価値を決定する上で、評価値が0以上である範囲のみデフォーカス量が分かればよい。したがって、評価値グラフ@Field1が0以上の範囲であるSHIFT_Rangeで評価値が有効となり、シフト量をSHIFT_Rangeとする。
【0115】
次にField2に分類されたAFフレームは、Field1よりも第1AFフレームに対して離れた位置に存在する。そのため、破線で描かれた評価値グラフ@Field2は、評価値グラフ@Field1と比較して、デフォーカス量が同じ場合でも評価値は小さい値となる。また、評価値グラフ@Field1と同様に評価値グラフ@Field2では、第1デフォーカス量と同じ横軸が原点の場合が最も評価値が高く、原点から離れるにしたがい、評価値は小さくなる。評価値が0以上の範囲となるField2に分類されたAFフレームのシフト量をα・SHIFT_Rangeとする。
【0116】
Field3に分類されたAFフレームは、Field2よりも第1AFフレームに対して離れた位置に存在する。そのため、点線で描かれた評価値グラフ@Field3は、評価値グラフ@Field2と比較して、デフォーカス量が同じ場合でも評価値は小さい値となる。評価値が0以上の範囲となるField3に分類されたAFフレームのシフト量をβ・SHIFT_Rangeとする。
【0117】
ここでSHIFT_Rangeの係数α、βの関係は、1>α>βである。したがって、シフト量はSHIFT_Range>α・SHIFT_Range>β・SHIFT_Rangeとなり、Field1、Field2、Field3の順でシフト量は狭くなる。
【0118】
図10のフローチャートに戻り、ステップS1004では、カメラ制御部6は、第1被写体倍率である場合のField1に分類されたAFフレームグループのシフト量を設定する。ここでは、前述したように第1被写体倍率における評価値が有効である範囲としてSHIFT_RangeにNを代入する。被写体倍率ごとに決定するSHIFT_Rangeに代入する値については後述する。
【0119】
ステップS1006では、カメラ制御部6は、Field2に分類されたAFフレームグループについてシフト量の設定を行う。Field2のシフト量はステップS1004で設定したSHIFT_Rangeに係数αを乗じた、α・SHIFT_Rangeとする。
【0120】
ステップS1007では、カメラ制御部6は、Field3に分類されたAFフレームグループについてシフト量の設定を行う。Field3のシフト量はステップS1004で設定したSHIFT_Rangeに係数βを乗じた、β・SHIFT_Rangeとする。
【0121】
次に、被写体倍率ごとに決定するSHIFT_Rangeについて
図11(b)および
図12を用いて説明する。
【0122】
図11(b)は
図11(a)と同様に横軸はデフォーカス量であり、
図5で決定された第1デフォーカス量Defocusに対する各AFフレームのデフォーカス量の相対値を示している。縦軸は評価測光における評価値である。
【0123】
図12(a)は被写体倍率が大きい場合、
図12(b)は被写体倍率が小さい場合のAFフレームと被写体との関係をそれぞれ示し、第1AFフレームはいずれもAFフレーム32とする。
【0124】
被写体倍率が大きい
図12(a)では、Field1に分類されたAFフレームは主被写体を捉えているため、Field1に分類されているAFフレーム全てに対して高い評価値を与えることが望ましい。ところが、第1AFフレームであるAFフレーム32で捉えているのは主被写体の顔の中央部分であるのに対して、AFフレーム33は主被写体の耳の部分を捉えているため、AFフレーム32のデフォーカス量と差が生じてしまい、AFフレーム33の評価値が低くなってしまう。そこで、
図11(b)の実線で描かれた評価値グラフ@Field1のグラフに示すように、被写体倍率が大きい場合は、デフォーカス量にしたがって評価値が減少する傾きを小さくする。これにより、第1デフォーカス量から離れているAFフレームに関しても高い評価値を与えることが可能となり、評価測光において、主被写体に対して適切な露出に合わせることができる。
【0125】
一方で、被写体倍率が小さい
図12(b)では、Field1に分類されたAFフレームのうち、主被写体を捉えているAFフレームはAFフレーム32、AFフレーム37のみである。そのため、主被写体を捉えていないAFフレーム26、27、28、31、33、36、38に関しては低い評価値を与えることが望ましい。よって、
図11(b)の点線で描かれた評価値グラフ@Field1に示すように、被写体倍率が小さい場合は、デフォーカス量にしたがって評価値が減少する傾きを大きくすることで、主被写体を捉えていないAFフレームに対して評価値を低くする。これにより、相対的に主被写体を捉えているAFフレームの評価値が高くなり、主被写体に適切な露出に合わせることができる。また、デフォーカス量にしたがって評価値が減少する傾きを大きくすることで、シフト量を狭めることになるため、後述する第2相関演算の演算量が少なくなり、演算処理の高速化が図れる。
【0126】
図10のフローチャートに戻り、ステップS1005では、カメラ制御部6は、第2被写体倍率である場合のField1に分類されたAFフレームグループのシフト量の設定を行う。ここでは、前述したように第2被写体倍率の場合において、評価値が有効である範囲としてShift_RangeにMを代入する(M<N)。
【0127】
ステップS1006、S1007では、被写体倍率が第2被写体倍率である場合も第1被写体倍率の場合と同様の処理を行う。
【0128】
上述したシフト量算出処理では、AFフレームグループごとに被写体倍率と評価測光における評価値とに基づいてシフト量(シフト範囲)を設定する。
【0129】
<デフォーカスマップ作成処理>次に、
図13を参照して、
図4のステップS404におけるデフォーカスマップ作成処理について説明する。
【0130】
デフォーカスマップ作成処理では、ステップS403で算出したAFフレームグループごとのシフト量に基づいて、後述する第2相関演算を行い、全AFフレームについてデフォーカス量を算出する。
【0131】
ステップS1301では、カメラ制御部6は、各AFフレームのうち最初にデフォーカス量を算出するAFフレーム[i]としてi=0を設定する。
【0132】
ステップS1302では、カメラ制御部6は、ステップS1301もしくは、後述するステップS1310で設定したAFフレーム[i]について、
図8で分類したAFフレームグループがField0であるか否かを判定する。AFフレーム[i]がField0である場合はステップS1309へ進み、それ以外の場合はステップS1303に進む。
【0133】
ステップS1303では、カメラ制御部6は、AFフレーム[i]がField1であるか否かを判定する。AFフレーム[i]がField1である場合はステップS1304に進み、それ以外の場合はステップS1305へ進む。
【0134】
ステップS1304では、カメラ制御部6は、AFフレーム[i]のシフト範囲を決定する。
【0135】
AFフレーム[i]はField1に分類されているため、AFフレーム[i]のシフト範囲は式(3)により決定する。
【0136】
シフト範囲={Defocus±(Shift_Range)/2}/d・・・(3)
ここで、DefocusはステップS507で算出した第1デフォーカス量、Shift_RangeはステップS1004またはS1005で算出した評価値の有効範囲である。dは相関演算で算出した位相差をレンズ駆動量であるデフォーカス量に換算するための係数である。DefocusやShift_Rangeはデフォーカス量であるため、位相差を示すbitに換算するため、dで除算している。
【0137】
次に、レンズ特性および焦点検出ユニット7の取り付けによって生じる焦点位置のずれを考慮した場合について説明する。
【0138】
まず、焦点検出センサ107の検出結果と撮影レンズ21のベストピント位置について
図14を用いて説明する。
【0139】
焦点検出センサ107は撮影レンズ21の一部を通過した光束から焦点を検出するのに対して、撮像素子101は撮影レンズ21の全域を通過した光束を用いる。このため、撮像素子101はレンズの球面収差により焦点検出センサ107の検出結果に対して撮影レンズ21のベストピント位置が異なる。
【0140】
この異なる焦点位置を補正値であるBP値を用いて補正する。BP値はレンズごとに異なるため、レンズ制御部1からレンズ情報を取得する必要がある。
【0141】
BP値はAFフレームのうち中央に位置するAFフレームでは小さく、周辺に位置するAFフレームほど大きくなる特性がある。
【0142】
このようにAFフレームごとに異なるBP値を持つため、第2相関演算では、第1AFフレームに対するBP値の差分を考慮する必要がある。よって、AFフレーム[i]に対応するBP値をBP[i]、第1AFフレームに対応するBP値をBP1とし、シフト範囲に(BP[i]−BP1)の項が追加される。
【0143】
次に、焦点検出ユニット7の取り付け誤差について説明する。
【0144】
焦点検出ユニット7における、
図2のフィールドレンズ104、絞り105、二次結像レンズ106、焦点検出センサ107などの取り付けや、二次結像レンズ106の製造誤差などによってデフォーカス量にオフセットが生じてしまう。この取付誤差を補正値であるδ値を用いて補正する。
【0145】
上記δ値はBP値と同様にAFフレームごとに異なる誤差が生じるため、第2相関演算では、第1AFフレームに対するδ値の差分を考慮する必要がある。よって、AFフレーム[i]に対応するδをδ[i]、第1AFフレームに対応するδをδ1とするとシフト範囲に+(δ[i]−δ1)の項が追加される。
【0146】
また、BP値およびδ値はデフォーカス量であるため、位相差を示すbitに換算するため、dで除算する。
【0147】
上記BP値やδ値を考慮した場合のシフト範囲を式(4)に示す。
【0148】
シフト範囲={Defocus+(BP[i]−BP1)+(δ[i]−δ1)±(Shift_Range)/2}/d・・・(4)
ここで、位相差をデフォーカス量に換算するための係数dは全てのAFフレームにおいて同一の値であるとする。
【0149】
式(4)では、第1AFフレームにおいて算出した第1デフォーカス量の位置を基準とし、
図10で算出したシフト量を加算して、BP値、δ値の差分を考慮した範囲をシフト範囲としている。
【0150】
図13のフローチャートに戻り、ステップS1305では、カメラ制御部6は、AFフレーム[i]がField2であるか否かを判定する。AFフレーム[i]がField2である場合はステップS1306に進み、それ以外の場合はAFフレームグループがField3であるとしてステップS1307に進む。
【0151】
ステップS1306では、カメラ制御部6は、AFフレーム[i]のシフト範囲を決定する。
【0152】
AFフレーム[i]はField2に分類されているため、AFフレーム[i]のシフト範囲の式(5)により決定する。
【0153】
シフト範囲={Defocus+(BP[i]−BP1)+(δ[i]−δ1)±α・(Shift_Range)/2}/d・・・(5)
ステップS1307では、カメラ制御部6は、AFフレームグループがField3として、AFフレーム[i]のシフト範囲を決定する。
【0154】
AFフレーム[i]はField3に分類しているため、AFフレーム[i]のシフト範囲の式(6)により決定する。
【0155】
シフト範囲={Defocus+(BP[i]−BP1)+(δ[i]−δ1)±β・(Shift_Range)/2}/d・・・(6)
ステップS1308では、カメラ制御部6は、AFフレーム[i]について第2相関演算を行い、デフォーカスマップ作成のためのデフォーカス量を算出する。
【0156】
第2相関演算では、ステップS1304、S1306、S1307で算出したシフト範囲を適用して、第1相関演算と同様の演算を行う。例えば±2bitの範囲でシフトさせた場合の相関量Cを
図7(b)に示す。
【0157】
図7(b)では、Defocusと(BP[i]−BP1)、および(δ[i]−δ1)から0bitの位置を基準として±2bitの範囲でシフトさせ、相関量の極小値を求める。
【0158】
なお、第1デフォーカス量とBP値、およびδ値から基準とする値は、切り上げ、もしくは切り下げをして整数値として扱うものとする。
【0159】
このようにして得られたAFフレーム[i]の第2相関演算の結果に係数を乗じてデフォーカス量を算出する。
【0160】
また、第2相関演算ではシフト範囲を限定しているため、相関量の極小値を求めることができず、デフォーカス量が算出できないAFフレームが存在する可能性がある。
【0161】
しかしながら、シフト範囲が限定されたことでデフォーカス量が算出できないAFフレームは、第1デフォーカス量から離れているため、焦点状態を検出する第1AFフレームが捉えている被写体とは別の被写体を捉えているとしデフォーカスをNGとする。デフォーカスをNGとしたAFフレームについては、前述した評価測光における評価値は0とする。
【0162】
上述した第2相関演算は、評価測光に用いられるデフォーカスマップ作成のための演算処理であるため、シフト範囲を評価測光に必要な範囲に限定し、演算処理に要する時間を短縮している。デフォーカスマップ作成に用いるデフォーカス量には高い精度は求められないため、さらに演算時間を短縮するために、第2相関演算では補間演算を行わなくてもよい。
【0163】
ステップS1309では、カメラ制御部6は、全AFフレームについてデフォーカス量を算出したか否かを判定し、全AFフレームのデフォーカス量の算出が完了した場合は処理を終了し、完了していない場合はステップS1310に進む。例えば、全AFフレームを65点とすると、i≧64である場合は、全てのAFフレームについてステップS507、S512、S516、S1308のいずれかでデフォーカス量を算出したため、デフォーカスマップ作成処理を終了する。一方、i<64である場合は、デフォーカス量の算出が完了していないAFフレームがあるとして、次のAFフレームについてデフォーカス量を算出するためステップS1310へ進む。
【0164】
ステップS1310では、カメラ制御部6は、次のAFフレームについてデフォーカス量を算出するため、iにi+1を代入する。
【0165】
以上の処理を全AFフレームについて行い、全てのAFフレームについてデフォーカス量を算出し、デフォーカスマップ作成処理を終了する。
【0166】
その後、カメラ制御部6は、作成されたデフォーカスマップと
図11の評価値グラフとに基づいて各AFフレームごとに評価値を決定し、決定した評価値と測光センサにより検出された測光値とに基づいて評価測光を行う。
【0167】
上述したデフォーカスマップ作成処理によれば、全AFフレームについてデフォーカスマップが得られ、かつデフォーカスマップ作成時間を短縮することができる。
【0168】
上述した実施形態では、焦点検出センサ107による検出結果を用いてデフォーカスマップを作成する方法を説明したが、焦点検出センサ107を用いた処理に限らず、撮像素子(イメージセンサ)101による検出結果を用いた、いわゆる像面位相差AFにも適用できる。
【0169】
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0170】
また、本発明はデジタルカメラのような撮影を主目的とした機器に限定されず、携帯電話、パーソナルコンピュータ(ラップトップ型、デスクトップ型、タブレット型など)、ゲーム機など、撮像装置を内蔵もしくは外部接続する任意の機器に適用可能である。従って、本明細書における「撮像装置」は、撮像機能を備えた任意の電子機器を包含することが意図されている。