本発明では、受光手段からの像信号による一対の画素信号列中の異常信号を発生する画素を検出し、異常画素信号を含んだ一対の画素信号列の位相差を検出する第一演算と、異常画素信号を除外した一対の画素信号列の位相差を検出する第二演算を実行する。そして、異常画素が発生した場合においても、比較的精度の高い焦点検出を行うことができるように、第一演算と第二演算の結果のいずれか一方を所定の判定基準に基づいて選択し、選択された結果を基に焦点状態を検出する。
以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。図1は、本発明の実施形態にかかわる焦点検出装置を備えた撮像装置である。
(実施例1)
図1において、本実施例における撮像装置は、レンズ交換式の一眼レフカメラ(以下、単に「カメラ」と称する)100である。カメラ100は、カメラ本体30と、カメラ本体30に脱着可能に構成された撮影レンズユニット20とで構成される。撮影レンズユニット20とカメラ本体30は、図中央の縦方向の点線で示したマウントを介して接続される。撮影レンズユニット20は、撮影レンズ21と、絞り22と、レンズ側MPU(マイクロプロセッシングユニット)1と、レンズ駆動ユニット2と、絞り駆動ユニット3と、繰り返し位置検出ユニット4と、光学情報テーブル5とを備える。
レンズ側MPU1は、撮影レンズユニット20の動作に関する全ての演算及び制御を行う。レンズ駆動ユニット2は、レンズ側MPU1による制御に応じて撮影レンズ21を駆動する駆動部である。絞り駆動ユニット3は、レンズ側MPU1による制御に応じて絞り22を駆動する駆動部である。繰り返し位置検出ユニット4は、レンズ鏡筒の繰り返し位置を検出する検出部である。光学情報テーブル5は、自動焦点調節に必要な光学情報であり、不図示のメモリなどに記憶されている。
カメラ本体30は、カメラ側MPU6と、焦点検出ユニット7と、シャッター駆動ユニット8と、ダイヤルユニット10と、測光ユニット11、メモリ23とを備える。また、カメラ本体30は、メインミラー12と、サブミラー13と、ピント板14と、ペンタミラー15と、ファインダー16と、撮像素子(イメージセンサ)101と、スイッチSW1_18とスイッチSW2_19とを備える。カメラ側MPU6は、カメラ本体30の動作に関する全ての演算及び制御を行う。また、カメラ側MPU6は、マウントの信号線を介してレンズ側MPU1に接続され、レンズ側MPU1からレンズ位置情報を取得したり、レンズ駆動及び交換レンズごとに固有の光学情報を取得したりする。
また、カメラ側MPU6には、カメラ本体30の動作を制御するためのプログラムが格納されたROM(不図示)、変数を記憶するRAM(不図示)、各種パラメータを記憶するEEPROM(電気的消去、書き込み可能メモリ)(不図示)が内蔵されている。ROMに格納されたプログラムにより、後述の焦点検出処理が実行される。また、17はLCD等の表示器で、カメラの撮影モードに関する情報、撮影前のプレビュー画像と撮影後の確認用画像等を表示する。
焦点検出ユニット7は、後述する焦点検出センサを備え、焦点検出処理を行うと共に、位相差検出方式により焦点検出を行う。焦点検出ユニット7は、焦点検出センサからの信号読み出し完了をカメラ側MPU6に通知する。シャッター駆動ユニット8は、不図示シャッターを駆動するための駆動部である。ダイヤルユニット10は、カメラ100の諸設定を変更するための操作部であり、例えば、連続撮影速度(連写速度)やシャッター速度、絞り値、撮影モード等の切り替えなどを行うことができる。測光ユニット11は、測光センサを備え、不図示のレリーズボタンへの半押し操作に応じて、ペンタミラー15からの光束に基づき測光センサ(不図示)を介して測光処理を行う。これらはいずれもカメラ側MPU6に接続されている。測光センサは、フォトダイオード等の光電変換素子及びその信号処理回路等からなり、被写体の輝度レベルに関する信号出力を行い、その出力信号はカメラ側MPU6に入力される。
メインミラー12は、撮影レンズユニット20を介して入射された光束のほとんどを上方へ折り返し、ピント板14上に被写体像を結像させる機能を有する。ピント板14上の被写体像はペンタミラー15により正立正像に変換反射されてファインダー16へ導かれる。これにより、光学ファインダーとして機能する。ペンタミラー15を透過した一部の光は、測光ユニット11へ導かれる。また、メインミラー12は、入射された光束の一部を透過させ、透過した光がサブミラー13を介して焦点検出ユニット7へと導かれる。そして、カメラ100が撮影状態になると、メインミラー12及びサブミラー13が退避して、撮影レンズユニット20を介して入射される被写体からの光束がイメージセンサ101に結像される。スイッチSW1_18は、レリーズボタンの第1ストローク操作(半押し)によりONするスイッチである。スイッチSW2_19は、レリーズボタンの第2ストローク操作(全押し)によりONするスイッチである。
次に、焦点検出ユニット7の構成について図2を用いて説明する。図2は、図1の焦点検出ユニット7の概略構成を示す。撮影レンズユニット20からの入射光の一部は、メインミラー12を透過し、後方のサブミラー13で下方へ曲げられ、焦点検出ユニット7へ導かれる。焦点検出ユニット7は、視野マスク102、赤外線カットフィルタ103、フィールドレンズ104、絞り105、二次結像レンズ106、焦点検出センサ107、複数の反射ミラー108a〜108cで構成される。焦点検出用の焦点検出センサ107は、フォトダイオード等の光電変換素子で構成された一対のラインセンサ及びその信号処理回路等からなる。そして、被写体までの距離或いはデフォーカス量に関する画素信号(像信号)出力を行い、その像信号はカメラ側MPU6に入力される。本明細書では、一対のラインセンサからの像信号をA像、B像とする。カメラ側MPU6は、焦点検出処理に関わるブロックとして、異常画素検出部(異常画素検出手段)111、相関演算部(演算手段)112、演算切替判定部(判定手段)113を有する。
次に、図1のカメラ100における基本動作を、図3のフローチャートを用いて説明する。図1のカメラ100の電源がONされると、メモリ内容や実行プログラムの初期化状態を検出すると共に、撮影準備動作を実行し、図3のフローチャートが開始する。ステップS201では、カメラ側MPU6は、ユーザーが各種ボタン(不図示)を操作してカメラの各種設定を行ったことを認識する。ステップS202では、カメラ側MPU6は、スイッチSW1_18がONされたか否かの判定を行う。スイッチSW1_18がONされた場合はステップS204に移行する。一方、ONされていない場合はステップS203に移行し、電源のON/OFF判定を行う。電源OFFの場合は一連の撮影動作を終了する。電源がONの場合は、ステップS201の動作へ戻る。
ステップS204では、カメラ側MPU6は、スイッチSW1_18がONされたことに対応して、後述する焦点検出処理を行う。ステップS205では、カメラ側MPU6は、スイッチSW2_19がONされたか否かの判断を行い、スイッチSW2_19がONされたと判断すればステップS206の撮影処理を行う。一方、カメラ側MPU6は、スイッチSW2_19がONされていないと判断すればステップS201へ戻る。
図4は、本実施例における図3のステップS204の焦点検出処理を示すフローチャートである。ステップS301では、カメラ側MPU6は、焦点検出センサに対して、信号蓄積指示を出力する。指示に基づき、焦点検出センサは信号蓄積動作を開始する。そして、蓄積動作が終了すると焦点検出センサは、一対のラインセンサで得た像信号をそれぞれA像、B像としてカメラ側MPU6に出力する。ステップS301で出力したA像、B像の一例を図5に示す。この例では、A像とB像は−2bit〜−3bitの位相差がある。ここでは、A像がB像に対して右に存在する場合を負の位相差と定義する。図5のA像、B像の信号レベルは、共に飽和レベルを超えていない。A像、B像について、仮に飽和レベルを超えている画素が存在している場合、飽和レベルを超えた画素信号は飽和レベルにクリップされて出力される。
次にステップS302では、カメラ側MPU6は、ステップS301で焦点検出センサから出力された像信号から得たコントラスト情報が所定量以下であるか否かの判定を行う。コントラスト情報が所定量以下の場合は、ステップS303に移行し、焦点検出を行わずに、焦点検出が不可能であることをユーザーに警告する。一方、コントラスト情報が所定量より大きい場合、ステップS304の第一演算に移行する。ここでのコントラスト情報とは、カメラ側MPU6が、像信号の演算画素範囲において、画素信号列の互いに隣接した画素の画素信号の差分を二乗した値の総和である。コントラスト情報が小さい場合、位相差を検出する際、後述する相関量も小さくなる。したがって、画素に発生するノイズ成分の影響を受けやすく焦点検出の精度が悪化する。以上の理由から、コントラスト情報が小さく焦点検出の信頼性が十分ではない場合は、焦点検出を行わない。
次にステップS304では、カメラ側MPU6は、A像、B像を基に図2の相関演算部112にて第一演算を行う。第一演算について詳細に説明する。第一演算におけるA像、B像のシフト波形と相関量の演算方法について、図6を用いて説明する。焦点検出センサから取得した像信号を所定画素分(bit)シフトさせた波形をシフト波形と定義する。図6(a)はセンサから取得した像信号そのものであり、シフト量0のシフト波形である。図6(b)はシフト量−1bitのシフト波形、図6(c)はシフト量−2bitのシフト波形を示している。ここでは、B像を固定して、A像を左右にシフトすることでシフト量を制御する。下記の相関演算式(1)を用いて、シフト量kbitでの相関量C(k)を演算する。
この例では、最大シフト量は±4bitとし、9つのシフト波形をRAMに保存する。また、演算範囲は、最大シフト量を考慮し、出力されたA像、B像の総画素数25のうちの最初と最後の4bit分を演算から除外した範囲を演算範囲として設定する。そこで、各シフト波形のA像、B像の差分面積(図6(a)〜(c)の斜線部の面積)を相関量Cとし、シフト波形の相関量Cが最も小さくなるシフト量がA像、B像の位相差に対応する。
このように、図6(a)の2つの画素信号を相対的に±4bitの範囲でシフトさせた時の相関量Cを図7に示す。シフト量k=−2bitの時の相関量が最も小さい値となっているが、極小値は点線で示すようにk=−2bit〜−3bitにある。そこで、シフト量k=−2とその近傍の相関量情報から補間演算することで、位相差検出の分解能を上げる。ここでは、シフト量k=−1bit〜−4bitの4つの相関量Cを用いることで、破線のように直線補間している。直線補間に用いる4つのシフト量は、以下の通り決定する。まず、最も小さい相関量を示すシフト量kを決定し、その近傍をシフト量k−2、k−1、k+1とする。また、相関量が最小なものが2つある場合は、シフト量が大きい方をシフト量kとして採用する。このように、第一演算手段は、一対の画素信号列を相対的に一画素ずつシフトさせ、複数のシフト位置における相関量から補間演算することで、像信号の一対の画素信号列の位相差を一画素より小さい単位で検出可能である。後述の第二演算手段でも、演算原理は同じである。
次にステップS305では、カメラ側MPU6は、異常信号を検出する手段を備えた図2の異常画素検出部111により、ステップS301で取得した一対の像信号であるA像、B像の画素信号列中における異常画素(飽和画素、欠陥画素)を検出する。ここでは飽和画素を異常画素として検出する。飽和画素が存在しない場合は、ステップS310の合焦判定に移行する。一方、飽和画素が存在する場合はステップS306に移行する。ステップ306では、ステップ304の第一演算の補間演算で使用した4つのシフト波形と、ステップ305で検出した飽和画素の情報から、飽和画素を除外した波形を生成する。ここでは、4つのシフト波形から飽和した画素信号とその近傍の画素信号が除外された波形を生成する。飽和画素を除外した波形の生成方法の詳細は後述する。
ステップS307〜S308では、図2の演算切替判定部113にて、ステップS304の第一演算の結果と、後述する飽和画素と飽和画素の近傍の画素を除外して演算する第二演算の結果の信頼性判定を行う。信頼性判定は、画素数とコントラストの2つの項目とする。
ステップS307では、飽和画素を除外した波形生成の処理を施した4つの除外波形において、演算範囲内の画素数が所定数以下であるか否かの判定を行う。演算画素数が所定数以下である場合は、飽和画素とその近傍の画素を含めて演算する第一演算の方がより精度が高いと判定し、ステップS310の合焦判定に移行する。一方、演算画素数が所定数より多い場合、ステップS308のコントラスト情報による判定へ移行する。
ここで、上記ステップS307について図9を用いて詳細に説明する。図9は除外波形生成の処理を施した4つの除外波形のうちの1つを示している。横軸は画素位置、縦軸は像信号のレベルを示している。図9で示している除外範囲は、除外対象画素の位置を示しており、図5に示した波形と比べて、中央部の信号が飽和レベルを超えているものとする。演算画素範囲は4〜8画素目と14〜21画素目となっている。
演算画素数が少ない像信号の場合、相関量も小さくなる。そのため、被写体の明暗から得られる画素信号に対してノイズの割合が大きくなり、信頼性が低いと判定できる。したがって、除外対象画素が多くなることで演算画素数が所定数以下になってしまう場合は、第一演算の結果に基づいて焦点検出を行う。第一演算の結果を用いる理由は、次の通りである。まず、ステップS302の判定により、十分なコントラストが得られており、飽和の影響を受けにくい。更に、演算画素数が少ない波形から求める焦点検出の結果より、飽和画素近傍の除外対象になっている正常な画素信号を用いて演算する場合の方が、より精度の高い焦点検出が可能であるためである。
次にステップS308では、ステップS306で生成した除外波形のコントラスト情報が所定値以下であるか否かの判定を行う。コントラスト情報が所定値以下である場合は、第一演算がより精度が高いと判定し、ステップS310の合焦判定に移行する。一方、コントラストが所定値より大きい場合は、第二演算が第一演算より精度が高いと判定し、ステップS309の第二演算へ移行する。
ここで、上記ステップS308について前述した図9を用いて詳細に説明する。コントラスト情報は演算画素範囲における隣接画素間の差分を二乗した値の総和とし、次の式(2)に示す。CNTは、コントラスト情報のことを示している。
ここで、kはA(i)、A(i+1)のいずれかの画素が除外対象の画素である場合は0とし、A(i)、A(i+1)の画素がともに演算画素範囲の画素である場合は1として、演算画素範囲の画素からコントラスト情報を求める。図9では、9〜13画素目までは除外対象画素であり、この間の画素信号によるコントラスト情報は、式(2)のCNTには加算されない。また、コントラスト情報は、A像、B像それぞれに対して式(2)を用いて求め、A像、B像の小さい方のコントラスト情報をとることとする。式(2)より求めたコントラスト情報と演算切替判定部113に記憶されている所定の判定値との大小関係の比較を4つの除外波形に対して行い、判定を行う。コントラスト情報とAF精度についても、ステップS307の演算画素数と同様の関係にあり、コントラスト情報が小さい像信号から求めた相関量はノイズを受けやすくなる。したがって、除外処理を行った波形から求めたコントラスト情報が所定量以下の場合、第一演算の結果に基づいて焦点検出を行う。
以上のステップS307、ステップS308の2つの信頼性項目について規定の所定値を超えた場合は、飽和画素とその近傍画素を除外した第二演算がより精度が高いと判定し、ステップS309の第二演算に移行する。
次にステップS309では、ステップS306の飽和画素を除外する波形生成で生成した4つのシフト波形から、ステップS304の第一演算と同様に上記式(1)を用いて相関量Cを求める。それぞれの相関量から極小値となるシフト量を求め、第二演算結果とする。相関量C(F−1)とC(F)をつないだ直線と、相関量C(F+1)とC(F+2)をつないだ直線の交点を相関量の極小値とし、位相差を算出する。
ステップS310では、ステップS304もしくはステップS309で算出された位相差が所定の範囲内であるか否かの判定を行う。レンズの駆動量を示すデフォーカス量に変換するため、算出された位相差に係数を乗じてデフォーカス量を求める。求めたデフォーカス量が所望の範囲内、例えば1/4Fδ以内(F:レンズの絞り値、δ:定数:20μm、したがってF2.0のレンズの開放絞りでは10μm)であるならば合焦と判断し、一連の焦点検出処理を終了する。一方、1/4Fδより大であるならば、ステップS311のレンズ駆動に移行する。ステップS311では、ステップS304もしくはS309で算出された位相差の情報に基づき、レンズ駆動量を算出してレンズ側MPU1に送信する。レンズ側MPU1は、送信されたレンズ駆動量を基にレンズ駆動制御を行い、ステップS301に戻り、合焦状態になるまで前述の動作が繰り返される。
ここで飽和画素を除外する波形生成方法について、図8のフローチャートを用いて詳細に説明する。ステップS401では、第一演算から検出した位相差Pを基に第二演算で使用するシフト量の範囲を決定する。まず、最初に処理を行うシフト波形のシフト量k=F−1に設定する。Fは、検出した位相差Pよりも小さい整数に丸めた値とする。図7を例にすると、位相差P=−2bit〜−3bitであり、F=−3となる。ステップS402では、第一演算で取得したシフト量(k)のシフト波形をRAMから読み出す。
ステップS403で、ステップS402で読み出したシフト波形から1画素ずつA像、B像のいずれかが飽和画素であるか判断し、飽和画素の位置を検知する。画素信号と予めRAMに記憶してある飽和レベルの値とを比較することで飽和の判定を行う。ステップS404では、ステップS403で飽和画素と判定された画素の位置をRAMに記憶する。ステップS405では、kがF+2か否かの判定を行い、F+2であればステップS407へ移行する。つまり、ここでは4つのシフト量のシフト波形について飽和画素の検知処理を行った場合に次のステップS407へ移行する。一方、F+2よりも小さければ、飽和画素を検知すべきシフト波形が残っているので、ステップS406で、シフト量k=k+1を設定し、次のシフト量のシフト波形について検知処理を行う。
ステップS407では、ステップS404で夫々のシフト波形における飽和画素位置が記憶されているため、ステップS404で飽和画素位置として記憶された画素位置をRAMから読み出す。そして、4つのシフト波形のいずれか一か所でも飽和画素位置として記憶された画素位置を除外対象の画素位置とする。
ここで上記ステップS407について、図10と図11を用いて詳細に説明する。図10は第二演算で用いる4つのシフト波形を示している。横軸は画素位置、縦軸は像信号のレベルを示している。図10におけるシフト波形は、図4のステップS304の第一演算の結果でRAMに記憶したF−1、F、F+1、F+2のシフト量、ここではF=−3のためシフト量k=−4、−3、−2、−1のシフト波形である。図10(a)はシフト量k=−1のシフト波形であり、画素位置9〜12でA像、B像のいずれかに飽和画素が存在し、カメラ側MPU6は飽和画素位置として画素位置9、10、11、12の4画素をRAMに記憶する。図10(b)はシフト量k=−2のシフト波形であり、図10(a)と同様の判定により画素位置9、10、11の3画素をRAMに記憶する。図10(c)はシフト量k=−3のシフト波形であり、上記と同様の判定により画素位置9、10、11の3画素をRAMに記憶する。図10(d)ではシフト量k=−4のシフト波形であり、上記と同様の判定により画素位置8、9、10、11の4画素をRAMに記憶する。
図10(a)〜(d)のシフト波形における飽和画素位置を図11の表にまとめて示した。飽和画素および除外画素に対応した画素位置は“×”で表している。このようにシフト波形によってA像、B像のいずれかが飽和している画素の数が異なる。相関量は、相関演算式(1)で示したように、各画素の対になっている像信号の差分を総和した値である。飽和画素のみ、または、飽和画素とこれと対になる画素のみを除外すると、シフト波形毎に演算画素数が異なり、総和する画素数が異なるために、位相差を示すそれぞれの相関量の基準が異なってしまい、正しい演算結果を求めることが出来ない。
そこで、図10(a)〜(d)のいずれかのシフト波形で、任意の画素位置(i)を飽和画素位置として記憶している場合、他のシフト波形においても画素位置(i)は除外画素とする。この場合、除外画素は正常画素であってもよい。つまり、第二演算に用いる4つのシフト波形において、8、9、10、11、12の5画素が除外画素位置となる。したがって、図10(a)のシフト波形では画素位置9、10、11、12が飽和画素であるが、正常画素である画素の位置8についても飽和画素と同様に扱う。このため、いずれかのシフト波形で飽和画素とした画素を4つのシフト波形から取り除いている。よって、4つのシフト波形の相関量Cを式(1)より演算すると、演算範囲および演算画素数が等しくなり、除外を行った波形から演算する際、高精度な位相差を検出することが出来る。
ステップS408では、4つのシフト波形において、ステップS407で除外対象画素とした画素の信号を0とすることで、飽和画素とその近傍画素を除外した除外波形を生成することになる。
上記実施例1によれば、像信号に飽和画素の信号が存在した場合、飽和画素とその近傍画素の信号を除外して相関演算することで、飽和によって生じるAF誤差を低減することが出来る。しかし、被写体状況によっては、飽和画素とその近傍画素を除外することで、演算画素数やコントラスト情報の信頼度を失ってしまう。そこで、除外処理した波形に対して、演算画素数とコントラスト情報を基に信頼性判定(S307、S308)して、その判定結果に基づき相関演算を選択することで、高精度な焦点検出を行うことが出来る。
(実施例2)
上記実施例1では、除外処理した後の波形から信頼性を判定することで第1と第2演算を切替えている。実施例2では、演算切替判定のために第1演算の結果を使う焦点検出装置ないし方法について説明する。以下、図12を参照して、実施例2について詳細に説明する。上記実施例1と同様の部分については、同一の符号を用いてその説明を省略する。また、実施例2におけるカメラ100の構成(図1)と撮影動作(図3)については、上記実施例1と同様であり、それらの説明を省略する。
図12は、本実施例における焦点検出処理を示すフローチャートである。図12のフローチャートでは、ステップS507以外のステップは、実施例1で説明した図4のフローチャートと同じステップ番号であり、それらの説明を省略する。図12のステップS507では、ステップS304において飽和画素とその近傍画素を含めて演算した第一演算の結果(A像、B像の位相差)が整数値近傍であるか否かの判定を行う。第一演算の結果が整数値近傍である場合は、飽和によるAF誤差が許容できる値と判定し、ステップS311に移行する。一方、第一演算の結果が整数値近傍ではない場合、飽和画素とこれの近傍画素を除外した第二演算を行うために、ステップS306の飽和画素を除外した波形生成に移行する。
ここで、ステップS304の第一演算結果(位相差)による判定の閾値について図13により説明する。図13は、第一演算結果のAF誤差を示す図である。横軸は第一演算結果、縦軸は実際のA像、B像の位相差を示している。誤差がない場合は、第一演算結果とA像、B像の位相差の関係は傾き1の直線になる。しかし実際には、飽和画素の影響により破線の領域内でAF誤差が生じてしまう。飽和により発生するAF誤差の特徴としては、位相差が整数である1bit、2bitではAF誤差が生じず、正しい演算結果を得ることが出来る。一方、0.5bit単位の位相差に近づくにつれて、AF誤差が大きくなる。ここでの判定値として、AF誤差の範囲を焦点検出の合焦範囲である1/4Fδとする。AF誤差をデフォーカス量換算して、1/4Fδ以内であればそのまま第一演算結果を選択する。一方、AF誤差が1/4Fδより大きければ前述した第二演算結果を用いる。
位相差によってAF誤差の大きさが変化する原理について、図13〜図19を用いて説明する。図14は、A像、B像の位相差が−0.5bitである像信号において、相関演算する際に生成する4つのシフト波形を示している。横軸は画素位置、縦軸は像信号のレベルを示している。図14は、波形のシフト量がそれぞれ(a):シフト量k=1、(b):シフト量k=0、(c):シフト量k=−1、(d):シフト量k=−2の4つのシフト波形を示している。それぞれの波形において、●はA像の画素信号、○はB像の画素信号、▲はA像、B像が重なっている画素信号を示している。図14のシフト波形は、A像、B像共に飽和レベルを超えていない波形である。それぞれのシフト波形に対して式(1)より相関量を求める。
図15では、図14の像信号はそのままで飽和レベルを低くすることにより、A像、B像の一部の画素信号が飽和レベルを超えた場合を想定する。もちろん、飽和レベルはそのままで、信号レベルを上げても同様の現象が起きる。飽和レベルを超える信号量を持つ画素は全て飽和画素とし、飽和レベルより高い信号量を持っている飽和画素の信号量は、飽和レベルにクリップされてしまう。そのため、飽和がない本来の信号量よりも減少する。
図16は、飽和画素なしの相関量と、飽和画素ありの相関量を示した図である。図16において、シフト量−2のシフト波形の相関量を式(1)より算出した値をC(−2)とし、C(−2)とC(−1)をつないだ直線と、C(0)とC(1)をつないだ直線との交点を極小値として、位相差を算出する。図16より、飽和画素なしのシフト波形から算出した位相差に対して、飽和画素ありのシフト波形から算出した位相差はズレていることが分かる。このズレはAF誤差である。
このAF誤差の原因として、図14(a)と図15(a)の10画素目と12画素目に注目すると、飽和によるクリップがない図14(a)と比べて、飽和によるクリップがある図15(a)はA像、B像の信号量の差が減少していることがある。A像、B像の信号量の差は相関量になるので、飽和がないときに比べて、飽和ありの像信号の相関量は少なくなる。図16より、シフト量k=0の場合は、k=−2、−1、1の場合と比較して、飽和によって相関量が減少している量が少ない。これは、シフト量0bitのシフト波形である図14(b、図15(b)に注目して分かるように、10画素目と11画素目は飽和により飽和レベルにクリップされるが、相関量に及ぼす影響は他のシフト波形と比較すると少ないことに起因する。このように、シフト波形毎に、飽和の影響による相関量の減少量が異なるため、それぞれのシフト波形から補間演算することで位相差を求めると正しい結果が得られず、AF誤差が生じてしまう。補間演算する際、整数bitから最も離れている0.5bit付近に極小値がある場合に、最も相関量の変動の影響を受けやすくなる。このように、位相差の小数部が0.5bitである像信号を演算した場合、AF誤差が最も大きくなる。
一方で、位相差が整数bitの場合について図17、18、19を用いて説明する。図17では、A像、B像の位相差が−1bitである像信号の4つのシフト波形を示しており、位相差以外の振幅、像信号は図14と同様の波形である。飽和レベルは、図17と同様に飽和画素が生じないような、像信号の最大値よりも大きい値とする。図18は、図17の像信号はそのままで飽和レベルを低くすることにより、A像、B像の一部の画素信号が飽和レベルを超えた場合を想定している。
図19には、図17と図18のシフト波形から求めた相関量を示す。図19においても、図16と同様にして相関量の極小値を求め、位相差を算出する。A像、B像の位相差が整数である像信号の相関量を示している図19では、飽和画素の有無に関わらず同じ位相差を示し、AF誤差は生じていない。この理由は、図18(b)に着目すると分かるように、A像、B像の位相差が整数であるため、飽和画素に関わらずA像とB像が重なるからである。A像、B像の像信号が完全に同じとすると、A像、B像が重なったシフト波形の相関量は0となる。相関量は負の値をとらないため、極小値は像が一致したシフト量になる。したがって、上述したように、像信号が一致するシフト量は飽和画素とは関係がないため、飽和画素の存在に関わらず、正しい位相差を算出することが出来る。
また、実際の演算では、シフト波形毎の相関量から直線補間を行う。図18(a)、(c)が示すように、像信号が一致している図18(b)の波形に対し、左右にシフトした(a)と(c)の波形は、A像とB像が入れ替わっただけである。そのため、(a)と(c)のシフト波形における相関量は同じ値である。したがって、図19において、上述したように極小値を算出すると飽和画素の有無に関わらずシフト量k=−1で極値を持つ。以上の原理により、A像、B像の位相差が整数値の場合は、AF誤差は生じず、位相差が整数の間で小数部が0.5bitである値に近づくにつれて、第一演算結果のAF誤差は大きくなる。
上記実施例1によれば、像信号に飽和画素が存在した場合、第一演算結果から飽和画素除外波形を生成し、生成した波形を基に第二演算を行っている。つまり、第二演算を行う場合は、相関演算を二回行う必要がある。そこで、実施例2では、第一演算結果より、位相差が整数値近傍である場合は、AF誤差が少ないと判定し(S507)、第二演算を行わず、第一演算結果から焦点検出を行う。このことで、焦点検出処理にかかる時間を短縮し、かつ高精度で焦点検出を行うことが出来る。
(実施例3)
実施例3は、実施例1の考え方と実施例2の考え方を組み合わせた演算切替の判定方法を採用する。実施例3におけるカメラ100の構成(図1)と撮影動作(図3)については、上記実施例1と同様なので、それらの説明は省略する。図20は、本実施例における焦点検出処理を示すフローチャートである。なお、図20のフローチャートでは、演算切替判定部のステップS601〜S607以外のステップについては、図4のフローチャートと同じステップ番号であり、それらの説明を省略する。
図20のステップS601では、先に算出した第一演算(飽和画素を含む像信号による位相差演算)の結果が整数値近傍であるか否かの判定を行う。ここでの判定は前述の実施例2で説明したのと同様であり、第一演算の結果が整数値近傍でAF誤差が1/4Fδ以内である場合は、ステップS602に移行する。一方、第一演算の結果が整数値近傍ではなくAF誤差が1/4Fδより大きい場合は、ステップS605に移行する。ステップS602では、実施例1のステップS306と同様の飽和画素を除外した波形生成を行う。飽和画素除外の波形生成は、第一演算の補間演算で使用した4つのシフト波形と、ステップS305で検出した飽和画素情報から、飽和画素を除外した波形を生成する。ここでは、4つのシフト波形から飽和画素とその近傍画素が除外される。
ステップS603では、ステップS602で生成した除外波形の演算画素数が閾値1(第一閾値)以下であるか否かの判定を行う。演算画素数が閾値1より多い場合は、演算画素数による判定においては第二演算が有効であると判定し、ステップS604のコントラストによる判定に移行する。一方、演算画素数が閾値1以下の場合は、第二演算が有効ではないと判定し、第一演算の結果を用いるステップS310の合焦判定に移行する。なお、ここでの閾値1の決定方法については後述する。
ステップS604では、除外波形のコントラスト情報が閾値2(第2閾値)以下であるか否かの判定を行う。コントラスト情報は実施例1で述べた通り、式(2)より求める。コントラスト情報が閾値2より大きい場合は、第二演算が有効であると判定し、ステップS309の第二演算に移行する。一方、コントラスト情報が閾値2以下の場合は、第二演算が有効ではないと判定し、第一演算の結果を用いるステップS310の合焦判定に移行する。
ここで、ステップS603とS604の閾値の決定方法について説明する。ステップS601の位相差の判定により、第一演算結果のAF誤差は、図13より、1/4Fδ以内である。そこで、さらに精度の高い演算を行うため、第二演算では、AF誤差が1/8Fδ以内になるような、演算画素数とコントラスト情報の閾値を設定し、判定を行う。演算画素数とコントラスト情報が共に判定閾値より大きく、第二演算結果のAF誤差が1/8Fδ以内であると判断された場合は、第二演算を選択する。一方、演算画素数とコントラスト情報のいずれかが判定閾値以下で、第二演算でのAF誤差が1/8Fδより大きくなる場合は、第一演算を選択する。ここにおいて、判定手段は、第一演算手段で検出した位相差が整数値近傍である場合、演算画素数とコントラスト情報の判定項目のうち、少なくとも1つの閾値を変更することができる。これにより、AF誤差の1/8Fδ以内という目標を変更することができる。
次に、ステップS601で、第一演算の結果が整数値近傍ではなくAF誤差が1/4Fδより大きいと判定された場合について説明する。ステップS605では、ステップS602と同様に飽和画素とその近傍画素を除外する飽和画素除外の波形生成を行う。ステップS606では、ステップS605で生成された除外波形の演算画素数が閾値3(第3閾値)以下であるか否かの判定を行う。演算画素数が閾値3より多い場合は、演算画素数による判定においては第二演算が有効であると判定し、ステップS607のコントラストによる判定に移行する。一方、演算画素数が閾値3以下の場合は、第二演算が有効ではないと判定し、ステップS303に移行する。ステップS303では、焦点検出を行わず、焦点検出が不可能であることをユーザーに警告する。なお、ここでの閾値の決定方法についても後述する。
ステップS607では、除外波形のコントラスト情報が閾値4(第4閾値)以下であるか否かの判定を行う。コントラスト情報が閾値4より大きい場合は、第二演算が有効であるとして、ステップS309の第二演算に移行する。一方、コントラスト情報が閾値4以下の場合は、第二演算が有効ではないと判定され、ステップS303に移行する。ステップS303では、焦点検出を行わずに焦点検出が不可能であることをユーザーに警告する。
ここで、ステップS606とS607の閾値の決定方法について説明する。ステップS601の位相差の判定のより、第一演算結果のAF誤差は、図13より、1/4Fδより大きい。そこで、第二演算ではAF誤差が1/4Fδ以内になるように演算画素数とコントラスト情報の閾値を設定し、判定を行う。演算画素数とコントラスト情報が共に判定閾値を超えて、第二演算結果のAF誤差が1/4Fδ以内であると判断された場合は、第二演算を選択する。一方で、演算画素数とコントラスト情報のいずれかが判定閾値以下で、第二演算でのAF誤差が1/4Fδより大きくなると判断された場合、焦点検出は行わない。
上記実施例3によれば、像信号に飽和画素が存在した場合、第一演算結果の位相差によって第一演算のAF誤差を判定する(S601)。判定された第一演算のAF誤差が1/4Fδ以内である場合、信頼性判定の閾値1、2により、第二演算で、さらに高い精度の高い演算が可能であるかを判定している(S603、S604)。一方、判定された第一演算のAF誤差が1/4Fδより大きく焦点検出が行えない場合、信頼性判定の閾値3、4により、第二演算で、AF誤差1/4Fδ以内の精度で演算が可能であるか否かの判定を行う(S606、S607)。この判定により、第二演算による焦点検出が可能あるか否かを判定することが出来る。以上の判定により、様々な被写体状況に対応して、最適な演算を選択し、高精度な焦点検出を行うことが出来る。
(実施例4)
実施例4では、撮像素子に焦点検出用画素が離散的に配置された撮像装置における焦点検出処理について説明する。上記実施例1では、メインミラー12がダウン位置に配置され、サブミラー13により光束が焦点検出ユニット7へ入射するような構成であり、イメージセンサ101への光束に対して、所謂2次光学系による位相差検出方式の焦点検出を行っていた。しかし、これに限らず、イメージセンサ101の一部画素を焦点検出用に転用し、その焦点検出用画素にて、撮像面で瞳分割するマスクを配置することで、撮像面における位相差検出方式の焦点検出を行ってもよい。すなわち、実施例4では、受光手段は、画素の光電変換素子が二次元に配置された撮像素子であり、撮像素子の少なくとも一部を焦点検出用画素とし、焦点検出用画素からの像信号を基に位相差を検出することで焦点状態を検出する。
焦点検出用画素は、例えば、複数の光電変換部を備え、撮影レンズの瞳上の異なる領域を通過した光束が、それぞれ、異なる光電変換部に導かれるように構成される。各焦点検出用画素に含まれる光電変換部で得た画像信号により、異なる瞳領域を通過した光束により生成される光像(A像とB像)を取得する。そして、上記相関演算式を用いて、このA像とB像の相対的な位相差を算出する。他方、撮像用画素は、例えば、画素内に1つの光電変換部を有する画素である。こうした場合、各焦点検出用画素で取得した信号を用いて焦点検出を行い、撮影用画素で取得した信号を用いて画像を生成できる。また、撮像用画素で取得した信号を用いて、近接する焦点検出用画素の画像用信号を生成してもよい。このような構成とすることで、撮像素子に占める焦点検出用画素の割合を減らすことができ、焦点検出と同時に、高画質な画像を撮像することができる。
図21から図23は、撮像用画素と焦点検出用画素の構造を説明する図である。実施例4においては、2行×2列の4画素のうち、対角2画素にG(緑色)の分光感度を有する画素を配置し、他の2画素にR(赤色)とB(青色)の分光感度を有する画素を各1個配置した、ベイヤー配列が採用されている。そして、ベイヤー配列の間に、後述する構造の焦点検出用画素が所定の規則にて分散配置される。図21に撮像用画素の配置と構造を示す。同図(a)は2行×2列の撮像用画素の平面図である。ベイヤー配列では対角方向にG画素が、他の2画素にRとBの画素が配置される。この2行×2列の構造が繰り返し配置される。同図(a)における断面A−Aを同図(b)に示す。MLは各画素の最前面に配置されたオンチップマイクロレンズ、CFRはRのカラーフィルタ、CFGはGのカラーフィルタである。PDはC−MOSセンサの光電変換部を模式的に示し、CLはC−MOSセンサ内の各種信号を伝達する信号線を形成するための配線層である。TLは撮影光学系を模式的に示し、EPは射出瞳を示す。撮像用画素のオンチップマイクロレンズMLと光電変換部PDは、撮影光学系TLを通過した光束を可能な限り有効に取り込むように構成されている。換言すると、撮影光学系TLの射出瞳EPと光電変換部PDは、マイクロレンズMLにより共役関係にあり、かつ光電変換部の有効面積は大面積に設計される。同図(b)ではR画素の入射光束について説明したが、G画素及びB画素も同一の構造となっている。従って、撮像用のRGB各画素に対応した射出瞳EPは大径となり、被写体からの光束を効率良く取り込んで画像信号のS/Nを向上させている。
図22は、撮影光学系の水平方向(横方向)に瞳分割を行なうための焦点検出用画素の配置と構造を示す。ここで水平方向あるいは横方向の定義は、撮影光学系の光軸が水平となるようにカメラを構えたとき、該光軸に直交し、かつ水平方向に伸びる直線に沿った方向を指す。同図(a)は、焦点検出用画素を含む2行×2列の画素の平面図である。記録もしくは観賞のための画像信号を得る場合、G画素で輝度情報の主成分を取得する。そして人間の画像認識特性は輝度情報に敏感であるため、G画素が欠損すると画質劣化が認知されやすい。一方で、RもしくはB画素は、色情報(色差情報)を取得する画素であるが、人間の視覚特性は色情報には鈍感であるため、色情報を取得する画素は多少の欠損が生じても画質劣化は認識され難い。そこで本実施例では、2行×2列の画素のうち、G画素は撮像用画素として残し、RとBの画素を焦点検出用画素に置き換える。これを同図(a)においてSHA及びSHBで示す。同図(a)における断面A−Aを同図(b)に示す。マイクロレンズMLと、光電変換部PDは図21(b)に示した撮像用画素と同一構造である。本実施例においては、焦点検出用画素の信号は画像創生には用いないため、色分離用カラーフィルタの代わりに透明膜CFWが配置される。また、撮像素子で瞳分割を行なうため、配線層CLの開口部はマイクロレンズMLの中心線に対して一方向に偏倚している。具体的には、画素SHA及の開口部OPHAは右側に偏倚しているため、撮影光学系TLの左側の射出瞳EPHAを通過した光束を受光する。同様に、画素SHBの開口部OPHBは左側に偏倚しているため、撮影光学系TLの右側の射出瞳EPHBを通過した光束を受光する。よって、画素SHAを水平方向に規則的に配列し、これらの画素群で取得した被写体像をA像とする。また、画素SHBも水平方向に規則的に配列し、これらの画素群で取得した被写体像をB像とし、A像とB像の位相差を検出することで、デフォーカス量が検出できる。上記画素SHA及びSHBでは、撮影画面の横方向に輝度分布を有した被写体、例えば縦線に対しては焦点検出可能であるが、縦方向に輝度分布を有する横線は焦点検出不能である。そこで本実施例では、後者についても焦点検出できるよう、撮影光学系の垂直方向(縦方向)にも瞳分割を行なう画素も備えている。
図23と図24は、上記図21と図22で説明した撮像用画素と焦点検出用画素の配置規則を説明する図である。図23は撮像用画素の間に焦点検出用画素を離散的に配置する場合の、最小単位の配置規則を説明するための図である。同図において、10行×10列=100画素を1つのブロックとする。そして一番左上のブロックBLK(1,1)において、一番左下のR画素とB画素を、水平方向に瞳分割を行なう1組の焦点検出用画素SHA及びSHBで置き換える。その右隣りのブロックBLK(1,2)においては、同じく一番左下のR画素とB画素を、垂直方向に瞳分割を行なう1組の焦点検出用画素SVC及びSVDで置き換える。また、最初のブロックBLK(1,1)の下に隣接したブロックBLK(2,1)の画素配列は、ブロックBLK(1,2)と同一とする。そして、その右隣りのブロックBLK(2,2)画素配列は、先頭のブロックBLK(1,1)と同一とする。この配置規則を普遍的に表現すると、ブロックBLK(i,j)において、i+jが偶数なら水平瞳分割用の焦点検出用画素を配置し、i+jが奇数なら垂直瞳分割用の焦点検出用画素を配置することになる。そして、図23の2×2=4ブロック、すなわち20行×20列=400画素の領域を、ブロックの上位の配列単位として、クラスタとする。
こうして、クラスタを単位とした配置を行い、クラスタが集まって単位としたフィールドを単位とした配置を行う。図24は、撮影光学系によって形成された被写体像の、横ずれ方向の焦点検出を行なう場合の画素グループ化方法を説明する図である。横ずれ方向の焦点検出とは、撮影光学系の射出瞳を横方向に分割するための焦点検出用画素を用いて、位相差演算を行なうことを指す。図24に示す画素配列は、ブロックが集まったクラスタの配置を示す。焦点検出の際には、横方向に1ブロック、縦方向に10ブロックの合計10ブロックを1つのグループとし、これをセクションとする。そして、本実施例では、横方向に並んだ30セクションで、1つの焦点検出領域を構成する。すなわち、100行×300列=3万画素の領域が1つの焦点検出領域となる。この1つの焦点検出領域をAFエリアと定義する。ここで、1つのセクション内においては、横方向における一方の瞳分割を行なう画素SHAが5個、他方の瞳分割を行なう画素SHBも5個含まれている。そこで本実施例においては、5個のSHAの出力を加算して、位相差演算用の一方の画像信号(A像)の1AF画素とする。同様に、5個のSHBの出力を加算して、位相差演算用の他方の画像信号(B像)の1AF画素とする。撮影光学系によって形成された被写体像の、縦ずれ方向の焦点検出を行なう場合の画素グループ化方法も原理は同じである。
図25から図27は、本実施例に関わる撮影動作及び焦点検出処理を説明するためのフローチャートである。図25は本実施例のカメラの撮影動作フローである。撮影者がカメラの電源スイッチをオン操作すると、ステップS701においては目標露光値を適正露光値に設定する。また、その他に、メモリ内容や実行プログラムの初期化を行なうと共に、撮影準備動作を実行する。ステップS702では撮像素子の撮像動作を開始する。ここではステップS701、あるいは後述するステップS705で設定された目標露光値になるように露光時間を制御し、プレビュー用の低画素動画像を出力する。ステップS703では読み出した動画をカメラ背面に設けられた表示器17に表示し、撮影者はこのプレビュー画像を目視して撮影時の構図決定を行なう。ステップS704では、SW1_18がオン操作されたか否かを判別し、オン操作されていなければステップS702に戻る。そして、撮像素子駆動からステップS703のプレビュー画像表示を繰り返し実行する。ステップS704でSW1_18がオン操作されるとステップS705に移行し、焦点検出処理を実行する。ステップS705で行う焦点検出処理は、図27のフローチャートを用いて説明する。
図27は、本発実施例における焦点検出処理を示すフローチャートである。ステップS901では、MPU6は101のC−MOSセンサに対して、信号蓄積指示を出力する。指示に基づき、C−MOSセンサは信号蓄積動作を開始する。そして、蓄積動作が終了すると焦点検出用画素を読み出す。次にステップS902では、ステップS901で焦点検出用画素から出力された像信号から得たコントラスト情報が所定量以下であるか否かの判定を行う。コントラスト情報が所定量以下の場合は、ステップS916に移行し、焦点検出を行わず、焦点検出が不可能であることをユーザーに警告する。一方、コントラスト情報が所定量より大きい場合、ステップS903の第一演算に移行する。ここで、コントラスト情報とは、実施例1と同様に、像信号の演算画素範囲において、AF画素の隣接したAF画素の画素信号の差分を二乗した値の総和である。コントラスト情報が小さい場合、位相差を検出する際、相関量も小さくなる。したがって、画素に発生するノイズ成分の影響を受けやすく焦点検出の精度が悪化する。以上の理由からコントラスト情報が小さく焦点検出の信頼性が十分ではない場合は、焦点検出を行わない。次にステップS903では、MPU6はA像、B像を基に、実施例1と同様の第一演算を行う。C−MOSセンサのAF画素から取得した像信号のシフトさせた波形をシフト波形とする。相関演算式(1)を用いて、それぞれのシフト波形から相関量C(k)を演算し、像信号の位相差を算出する。
次にステップS904では、MPU6は、ステップS901で取得した一対の像信号における異常画素(飽和画素、欠陥画素)を検出する。ここでは異常画素として飽和画素を検出する。実施例4において、AF画素は複数の焦点検出用画素の出力を加算する構成になっている。ここで定義する飽和画素は、AF画素単位に含まれる焦点検出用画素(SCTV・SCTH)に1つでも飽和画素が含まれていた場合、そのAF画素は飽和画素として扱う。次に、検出した情報を基に飽和画素が存在するか否かの判定を行う。飽和画素が存在しない場合は、ステップS913の合焦判定に移行する。一方、飽和画素が存在する場合はステップS905のA像、B像の位相差による判定に移行する。ステップS905での位相差による判定は実施例2、3でも説明した通りであり、先に算出した第一演算の結果が整数値近傍であるか否かの判定を行う。ここでの判定は第一演算の結果が整数値近傍でAF誤差が1/4Fδ以内である場合は、ステップS906に移行する。一方、第一演算の結果が整数値近傍ではなくAF誤差が1/4Fδより大きい場合は、ステップS909に移行する。ステップS906では、実施例1のステップS306と同様の飽和画素除外の波形生成を行う。飽和画素除外の波形生成は、第一演算の補間演算で使用した4つのシフト波形と、ステップS904で検出した飽和画素情報から、飽和画素の除外波形を生成する。ここでは、4つのシフト波形から飽和した画素信号とその近傍画素の信号が除外される。
ステップS907では、除外波形の演算画素数が閾値1以下であるか否かの判定を行う。演算画素数が閾値1より多い場合は、演算画素数による判定においては、実施例1で説明した第二演算が有効であると判定し、ステップS908のコントラストによる判定に移行する。一方、演算画素数が閾値1以下の場合は、第二演算が有効ではないと判定し、第一演算の結果を用いてステップS913の合焦判定に移行する。ステップS908では、除外波形のコントラスト情報が閾値2以下であるか否かの判定を行う。コントラスト情報は実施例1で述べた通り、上記式(2)より求める。コントラスト情報が閾値2より大きい場合は、第二演算が有効であると判定し、ステップS912の第二演算に移行する。一方、コントラスト情報が閾値2以下の場合は、第二演算が有効ではないと判定し、第一演算の結果を用いてステップS913の合焦判定に移行する。ここで、ステップS907とS908の閾値の決定方法については実施例3のステップS603、S604と同じものとする。ステップS909では、ステップS906と同様に飽和画素とその近傍画素を除外する飽和画素除外の波形生成を行う。
ステップS910では、除外波形の演算画素数が閾値3以下であるか否かの判定を行う。演算画素数が閾値3より多い場合は、演算画素数による判定においては第二演算が有効であると判定し、ステップS911のコントラストによる判定に移行する。一方、演算画素数が閾値3以下の場合は、第二演算が有効ではないと判定し、ステップS915に移行する。ステップS915では、焦点検出を行わず、図25のステップS702で撮像素子の駆動に関わる目標露光値を1EV分アンダーに変更する。ステップS911では、除外波形のコントラスト情報が閾値4以下であるか否かの判定を行う。コントラスト情報が閾値4より大きい場合は、第二演算が有効であるとして、ステップS912の第二演算に移行する。一方、コントラスト情報が閾値4以下の場合は、第二演算が有効ではないと判定され、ステップS915に移行する。ステップS908もしくはS911で、コントラスト情報がそれぞれで決められた閾値以上であると判定された場合、ステップS912で飽和画素とその近傍画素を除外した除外波形から演算する第二演算を行う。ステップS913では、ステップS903もしくはステップS912で算出された位相差が所定の範囲内であるか否かの判定を行う。ステップS914では、位相差の情報に基づき、レンズ駆動量を算出し、レンズ駆動制御を行い、ステップS901に戻り、合焦状態になるまで前述の動作が繰り返される。ここで、ステップS910とS911の閾値の決定方法は実施例3のステップS606、S607と同じものとする。ステップS915では、目標露光値を1EV分アンダーに設定する。そのため次回の焦点検出処理の際、焦点検出用画素の飽和量を改善できる。
図25の撮影動作フローの説明に戻る。ステップS706では、目標露光値の変更を行ったか否かの判定を行う。目標露光値の変更が行われていない場合は、ステップS707のSW2_19の判定に移行する。一方、目標露光値の変更が行われている場合は、変更された目標露光値に基づいて撮像素子を駆動させる。ステップS707では、SW2_19がオン操作されたか否かを判別し、オン操作されていなければステップS702の撮像素子駆動へ戻る。一方、ステップS708でSW2_19がオン操作されるとステップS708に移行し、撮影サブルーチンを実行する。
図26は撮影サブルーチンのフロー図である。撮影開始スイッチが操作されると、ステップS801では適正露光値であるか否かの判定を行う。メインフローのステップS705で目標露光値が変更され、ステップS701で設定した適正露光値とは異なる露光値でプレビュー画像に出力されていた場合、ステップS802の露光値変更に移行する。一方、適正露光値で出力されている場合はステップS803の絞り・シャッター駆動へ移行する。ステップS802では、焦点検出を行うために変更された目標露光値を、適正露光値に変更し、ステップS803の動作に備える。ステップS803では光量調節絞りを駆動し、露光時間を規定するメカニカルシャッタの開口制御を行なう。ステップS804では、高画素静止画撮影のための画像読み出し、すなわち全画素の読み出しを行なう。ステップS805では読み出した画像信号の欠損画素補間を行なう。すなわち、焦点検出用画素の出力は撮像のためのRGBカラー情報を有しておらず、画像を得る上では欠陥画素に相当するため、周囲の撮像用画素の情報から補間により画像信号を創生する。ステップS806では、画像のγ補正、エッジ強調等の画像処理を行い、ステップS807において、フラッシュメモリ23に撮影画像を記録する。ステップS808では、表示器17に撮影済み画像を表示し、図25の撮影動作フローにリターンする。図25の撮影動作フローに戻り、一連の撮影動作を終了する。
以上説明したように、ライブビュー撮影の時、撮像面全体から露光値を決定するため、焦点検出範囲の一部に明るい被写体が存在した場合、焦点検出用画素が飽和してしまい、焦点検出の精度が悪化してしまう。一方、焦点検出範囲に飽和画素が発生しないように目標露光値を暗くしてしまうと、プレビュー画面が暗くなってしまい、撮影者は構図を定める際の障害になってしまう。そこで、飽和画素が発生しても可能な限り露光値を変更せず、実施例3と同様、位相差、演算画素数、コントラスト情報から最適な演算を選択して焦点検出処理を行う(S903〜S915)。
(他の実施形態)
本発明の目的は、以下の実施形態によって達成することもできる。即ち、前述した実施例の機能(カメラ側MPUなどの制御手段などの機能)を実現するソフトウェアのプログラムコードを格納した記憶媒体を、焦点検出装置に供給する。そして、そのカメラコントローラのコンピュータ(またはCPU、MPUなど)が記憶媒体に格納されたプログラムコードを読み出し上記機能を実行する。この場合、記憶媒体から読み出されたプログラムコード自体が上記実施例の機能を実現することになり、被写体に対する異なる視点にて取得した視差画像信号に基づき焦点検出を行うためのプログラム、これを格納した記憶媒体は本発明を構成することになる。詳細には、少なくとも1対の複数画素からなるセンサを用いて位相差検出方式の焦点検出を行う焦点検出方法は次のステップを有する。撮影光学系の一対の瞳領域を通過した光束により形成される一対の被写体の像信号を受光し、出力する出力ステップ。前記出力ステップで出力される像信号で形成される一対の画素信号列に含まれる異常信号を発生する異常画素を検出する異常画素検出ステップ。前記異常画素検出ステップで検出された異常画素による信号を含んだ一対の画素信号列の位相差を検出する第一演算ステップ。異常画素による信号を除外した一対の画素信号列の位相差を検出する第二演算ステップ。前記第一演算ステップと前記第二演算ステップの結果のいずれか一方を所定の判定基準に基づいて選択する判定ステップ。前記判定ステップにより選択された結果を基に焦点状態を検出する焦点検出ステップ。