以下、添付図面を参照して本発明の実施形態を詳細に説明する。なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明は以下の実施の形態に限定されるものではない。
<第一の実施形態>
図1は、本実施形態におけるレンズユニット及びカメラ本体からなるレンズ交換式カメラの構成を示すブロック図である。図1に示すように、本実施形態におけるカメラシステムは、レンズユニット10及びカメラ本体20から構成されている。レンズユニット10全体の動作を統括制御するレンズ制御部106と、カメラ全体の動作を統括するカメラ制御部207がデータを通信している。なお、本実施形態ではレンズ交換式カメラを例に説明するが、レンズと一体型のカメラにおいても本発明を適用可能である。
まず、レンズユニット10の構成について説明する。レンズユニット10は、固定レンズ101、絞り102、フォーカスレンズ103、ズームレンズ(不図示)を備えて構成される撮影光学系を有する。絞り102は、絞り駆動部104によって駆動され、後述する撮像素子201への入射光量を制御する。フォーカスレンズ103は、フォーカスレンズ駆動部105によって駆動され、焦点調節を行う。不図示のズームレンズは、ズームレンズ駆動部によって駆動されることにより、ズームの調節を行う。なお、本実施形態においては、ズームレンズおよびズームレンズ駆動部は必須の構成ではない。
絞り駆動部104、フォーカスレンズ駆動部105、ズームレンズ駆動部は、レンズ制御部106によって制御され、絞り102の開口量や、フォーカスレンズ103およびズームレンズの位置が決定される。ユーザーによりレンズ操作部107を介してフォーカスやズームなどの操作が行われた場合には、レンズ制御部106がユーザー操作に応じた制御を行う。本実施形態では、ユーザーがレンズ操作部107を介してフォーカスレンズ103を移動することで、手動による焦点調節操作(以下、MF操作)を行うことが可能である。
レンズ制御部106は、後述するカメラ制御部207から受信した制御命令・制御情報に応じて絞り駆動部104やフォーカスレンズ駆動部105、ズームレンズ駆動部の制御を行い、また、レンズ情報をカメラ制御部207に送信する。
次に、本実施形態に係る焦点検出装置を備えるカメラ本体20の構成について説明する。カメラ本体20は、レンズユニット10の撮影光学系を通過した光束から撮像信号を生成可能に構成されている。撮像素子201は、CCDやCMOSセンサーを用いて構成される。撮影光学系を通過した光束が撮像素子201の受光面上に結像し、形成された被写体像がフォトダイオードによって入射光量に応じた電荷に変換(光電変換)される。各フォトダイオードに蓄積された電荷は、カメラ制御部207の指令に従ってタイミングジェネレータ209から与えられる駆動パルスに基づいて、電荷に応じた電圧信号として撮像素子201から順次読み出される。
撮像面位相差検出方式の焦点検出に対応しない撮像素子の場合、例えば図2(A)に示すようなベイヤー配列の画素構成となる。一方、本実施形態の撮像素子201は、撮像面位相差検出方式の焦点検出を行うために、図2(B)に示すように1つの画素に複数(本実施形態では2つ)のフォトダイオードを保持している。光束をマイクロレンズで分離し、この2つのフォトダイオードで結像することで、撮像用と焦点検出用の2つの信号が取得可能になっている。2つのフォトダイオードの信号を加算した信号(A+B)が撮像信号であり、個々のフォトダイオードの信号(A、B)が焦点検出用の2つの像信号になっている。本実施形態では、2つの像信号の取得方法は、2つの像信号のそれぞれを読み出す構成に限られない。例えば処理負荷を考慮して、加算した信号(A+B)と一方の像信号(例えばA)を読み出し、加算した信号(A+B)と一方の像信号(例えばA)の差分からもう一方の像信号(例えばB)を取得する構成でもよい。後述する焦点検出信号処理部204で焦点検出用の2つの像信号に対して相関演算を行い、像ずれ量や各種信頼性情報を算出する。
なお、本実施形態では1つの画素に2つのフォトダイオードを有する構成としているが、フォトダイオードの数は2つに限定されず、それ以上であってもよい。また、撮像面位相差検出方式による焦点検出対応の撮像素子の構成として、本実施形態のように1つの画素に複数のフォトダイオードを設ける構成に限らず、撮像素子中に焦点検出用の画素を設ける構成であってもよい。
撮像素子201から読み出された撮像信号及び焦点検出用信号(以下、焦点検出信号とも言う)は、CDS/AGCコンバータ202に入力され、リセットノイズを除去する為の相関二重サンプリング、ゲインの調節、信号のデジタル化を行う。CDS/AGCコンバータ202は、撮像信号をカメラ信号処理部203および被写体検出部210に、撮像面位相差検出方式による焦点検出用の信号を焦点検出信号処理部204に出力する。
カメラ信号処理部203は、CDS/AGCコンバータ202から出力された撮像信号を表示部205に送信する。表示部205は、LCDや有機EL等を用いて構成される表示デバイスであり、撮像信号に基づく画像を表示する。また、撮像信号の記録を行うモードのときには、撮像信号は記録部206に記録される。
焦点検出信号処理部204は、CDS/AGCコンバータ202から出力された焦点検出用の2つの像信号を基に相関演算を行い、像ずれ量と信頼性情報(二像一致度、二像急峻度、コントラスト情報、飽和情報、キズ情報等)を算出する。そして、算出した像ずれ量と信頼性情報をカメラ制御部207へ出力する。相関演算の詳細については、図7及び図8を用いて後述する。
本実施形態においては、MF操作により焦点調節を行うMFモードにおいて、表示部205にフォーカスアシスト表示を行うことが可能に構成されている。フォーカスアシスト表示は、画像に重畳して表示されるフォーカスアシスト枠における焦点状態を示す表示である。フォーカスアシスト枠における焦点状態は、焦点検出信号処理部204による相関演算結果に基づいて検出される。ユーザーはフォーカスアシスト表示によりデフォーカス量やデフォーカス方向の情報を視認することで、意図に沿ったMF操作を行うことができる。フォーカスアシスト表示の詳細については後述する。これに対して、自動で焦点調節を行うAFモードにおいては、焦点検出信号処理部204による相関演算結果を用いて焦点調節が行われる。なお、AFモードにおいては、焦点調節を行うための信号を取得する領域を示すAF枠を画像に重畳して表示することが可能に構成されているが、フォーカスアシスト表示は行われないものとする。
カメラ制御部207は、カメラ本体20内の各構成と情報をやり取りして制御を行う。カメラ制御部207は、カメラ本体20内の処理だけでなく、カメラ操作部208からの入力に応じて、電源のON/OFF、設定の変更、記録の開始、焦点検出制御の開始、記録画像の確認、焦点検出枠の選択等、ユーザーが操作したカメラ機能を実行する。また、先述したように、カメラ制御部207は、レンズユニット10内のレンズ制御部106と情報をやり取りし、撮影光学系の制御命令・制御情報の送信及び、レンズユニット内の情報を取得する。
被写体検出部210は、顔検出や人体検出などの検出系のブロックであり、CDS/AGCコンバータ202から出力された撮像信号に対して公知の検出処理を施し、撮影画面内の特定の被写体領域を検出する。すなわち、被写体検出部210は、撮像信号から予め定められた被写体を検出する被写体検出手段を構成する。なお、顔検出は公知の方法を用いて行うこととし、詳細な説明を省略する。
(フォーカスアシスト枠表示制御全体について)
次に、カメラ制御部207が実行するフォーカスアシスト表示制御全体のシーケンスについて、図3を用いて説明する。図3の処理は、カメラの動作周期に基づいて周期的に実行される。
まず、ステップS301において、カメラ制御部207は、被写体検出部210に対して撮影画面内の特定の被写体領域を検出する旨の命令を行う。本実施形態においては特定の被写体領域として人物の顔の領域を例に説明する。
次に、ステップS302において、カメラ制御部207は、フォーカスアシスト表示を行う領域(以下、フォーカスアシスト表示領域、またはフォーカスアシスト枠)を設定する処理を行う。フォーカスアシスト表示領域は、後述する焦点検出処理において焦点検出信号処理部204により相関演算を行う範囲(焦点検出範囲)に対応する。すなわち、フォーカスアシスト表示領域を設定する処理は、焦点検出範囲を設定する処理と換言することができる。フォーカスアシスト表示領域設定処理の詳細については、図9を用いて後述する。
次に、ステップS303では、カメラ制御部207は、ユーザーの操作に応じてフォーカスアシスト枠の位置を変更する処理を行う。フォーカスアシスト表示領域変更処理の詳細については、図13を用いて後述する。
次に、ステップS304では、焦点検出信号処理部204は、ステップS302にて設定されたフォーカスアシスト枠に対応する焦点検出範囲において、焦点検出処理を行う。焦点検出処理の詳細については、図6を用いて後述する。
次に、ステップS305において、カメラ制御部207は、表示部205に対してフォーカスアシスト枠を表示する処理を行い、フォーカスアシスト表示制御を終了する。
なお、本実施形態において、上述したフォーカスアシスト表示制御は、MFモードのときのみ実行可能な制御であり、AFモードのときは実行されないこととする。
(焦点検出領域設定処理)
次に、ステップS304の焦点検出処理を行う領域を設定する処理について図4を用いて説明する。図4は、焦点検出処理で用いる像信号を取得する領域の一例を表した図である。
図4(a)は、画素アレイ401上の焦点検出範囲402を示す図である。相関演算を行う為に必要な領域404は、焦点検出範囲402および相関演算に必要なシフト領域403を合わせた領域である。図4(a)中のp、q、s、tは、それぞれx軸方向の座標を表す。pからqは領域404を表し、sからtは焦点検出範囲402を表す。
図4(b)は、焦点検出範囲402を5つに分割した焦点検出領域405〜409を示す図である。一例として、本実施形態では、焦点検出領域単位でピントずれ量を算出し、焦点検出を行う。本実施形態では、分割した複数の焦点検出領域の中から最も信頼できる領域の焦点検出結果を選び、その領域で算出したピントずれ量をフォーカスアシスト表示に用いる。なお、焦点検出範囲の分割数や分割方向は上記に限定されない。
図4(c)は、図4(b)の焦点検出領域405〜409を連結した仮の焦点検出領域410を示す図である。実施形態の一例として、このように焦点検出領域を連結した領域から算出したピントずれ量をフォーカスアシスト表示に用いても良い。
なお、焦点検出領域の配置の仕方、領域の広さ等は、本実施形態に挙げた内容に限られるものではなく、発明の要旨を逸脱しない範囲の形式であれば良い。
(フォーカスアシスト枠表示の形式について)
次に、本実施形態におけるフォーカスアシスト枠表示の形式について、図5を用いて説明する。図5(a)〜(c)では、フォーカスアシスト表示の一例を示している。
フォーカスアシスト枠500は、前述した図4における焦点検出範囲402と対応する領域に表示される。ここで、フォーカスアシスト枠と焦点検出範囲は同一である必要はなく、略同じ領域であればよい。図形502〜507は、デフォーカス量とデフォーカス方向を視覚的に表現する図形であり、破線501に沿って移動する。破線501は、表示部205に表示されない。
焦点状態に応じたフォーカスアシスト表示形態の変化について、図5(a)〜(c)を用いて詳しく説明する。まず、図5(a)は、フォーカスアシスト枠500内の被写体に対してフォーカスレンズが至近側にあるときの焦点状態を表した図である。フォーカスレンズが至近側にある場合は、破線501の外側に配置された図形502と、破線501の内側に配置された2つの図形503と504が表示される。そして、図形502が上部で停止した状態で、図形503と504がデフォーカス量に応じて中心線に対して左右対称に破線501に沿って動く。図形503と504は、デフォーカス量(焦点ずれ量)が大きいほど図形502から遠ざかる動きをする。
図5(b)は、フォーカスアシスト枠500内の被写体に対してフォーカスレンズが無限遠側にあるときの焦点状態を表した図である。フォーカスレンズが無限遠側にある場合は、破線501の内側に配置された図形507と、破線501の外側に配置された2つの図形505と506が表示される。そして、図形507が上部で停止した状態で、図形505と506がデフォーカス量に応じて中心線に対して左右対称に破線501に沿って動く。図形505と506は、デフォーカス量(焦点ずれ量)が大きいほど図形507から遠ざかる動きをする。
図5(c)は、フォーカスアシスト枠500内の被写体に対してフォーカスレンズが合焦位置にあるときの焦点状態を表した図である。図形502は図形505と506が重なった状態、図形507は図形503と504が重なった状態と表現することができる。フォーカスレンズが合焦位置にあるときに、図形502と図形507が最も接近する。
なお、フォーカスアシスト表示形式については、デフォーカス量とデフォーカス方向が視覚的に分かる方法であれば上述の形式に限られない。また、フォーカスアシスト領域を拡大して表示するようにしてもよい。
(焦点検出処理)
次に、図3のステップS304におけるデフォーカス量を算出するための位相差検出方式による焦点検出処理について、図6を用いて説明する。図6は、位相差検出方式の焦点検出処理の流れを示すフローチャートである。
まず、ステップS601では、焦点検出信号処理部204は、ステップS302で設定された焦点検出範囲内の焦点検出領域から一対の像信号を取得する。ステップS602では、焦点検出信号処理部204は、ステップS601で取得した一対の像信号から相関量を算出する。ステップS603では、焦点検出信号処理部204は、ステップS602で算出した相関量から相関変化量を算出する。
ステップS604では、焦点検出信号処理部204は、ステップS603で算出した相関変化量からピントずれ量を算出する。ステップS605では、焦点検出信号処理部204は、ステップS604で算出したピントずれ量がどれだけ信頼できるのかを表す信頼性を算出する。信頼性は、前述したように、像信号の二像一致度や二像急峻度等をもとに算出される値である。ステップS601〜ステップS605の処理は、図4で説明した焦点検出範囲内に存在する焦点検出領域の数だけ行う。
次に、ステップS606では、カメラ制御部207は、焦点検出領域毎にピントずれ量をデフォーカス量に変換する。ステップS607では、カメラ制御部207は、フォーカスアシスト表示に使用する焦点検出領域を決定し、焦点検出処理を終了する。
(相関演算の詳細説明)
次に、図7及び図8を用いて、図6で説明した位相差検出方式による焦点検出処理について詳細に説明する。
図7は、図4で設定した焦点検出領域から取得した像信号を示す図である。sからtが焦点検出範囲を表し、pからqがシフト量を踏まえた焦点検出演算に必要な範囲である。またxからyは、分割した1つ分の焦点検出領域を表す。
図7(a)は、シフト前の像信号を波形で表した図である。実線701が像信号A(A像)、破線702が像信号B(B像)を示している。領域705から709は、図4の分割した各焦点検出領域を表す。
図7(b)は、図7(a)のシフト前の像波形に対しプラス方向にシフトした図であり、図7(c)は、図7(a)のシフト前の像波形に対しマイナス方向にシフトした図である。相関量を算出する際には、それぞれ矢印の方向に像信号A701、像信号B702を1ビットずつシフトする。
続いて、相関量CORの算出法について説明する。まず、図7(b)と(c)で説明した通り、像信号Aと像信号Bを1ビットずつシフトしていき、そのときの像信号Aと像信号Bの差の絶対値の和を算出する。なお、シフト量をiで表し、最小シフト数は図7中のp−s、最大シフト数は図7中のq−tである。また、xは焦点検出領域の開始座標、yは焦点検出領域の終了座標である。これらを用いて、以下の式(1)によって相関量CORを算出することができる。
図8(a)は、相関量を波形で示した図である。グラフの横軸はシフト量を示し、縦軸は相関量を示す。相関量波形801において、極値周辺の領域802、803が示されている。この中でも相関量が小さい方ほど、A像とB像の一致度が高いといえる。
続いて、相関変化量ΔCORの算出法について説明する。まず、図8(a)の相関量波形より、1シフト飛ばしの相関量の差から相関変化量を算出する。この時、シフト量をiで表し、最小シフト数は図7中のp−s、最大シフト数は図7中のq−tである。これらを用いて、以下の式(2)によって相関変化量ΔCORを算出することができる。
図8(b)は、相関変化量ΔCORを波形で示した図である。グラフの横軸はシフト量を示し、縦軸は相関変化量を示す。相関変化量波形804において、領域805や806で相関変化量がプラスからマイナスになる。このように相関変化量が0となるところをゼロクロスと呼ぶ。ゼロクロスにおいて最もA像とB像の一致度が高く、そのときのシフト量がピントずれ量となる。
図8(c)は、図8(b)の領域805の部分を拡大したもので、相関変化量波形804の一部分807が示されている。図8(c)を用いて、ピントずれ量PRDの算出法について説明する。まず、ピントずれ量は整数部分βと小数部分αに分けられる。小数部分αは、図8(c)中の三角形ABCと三角形ADEの相似の関係から、以下の式(3)によって算出することができる。
続いて小数部分βは、図8(c)中より以下の式(4)によって算出することができる。
β=k−1 (4)
以上のように、αとβの和からピントずれ量PRDを算出することができる。
また、図8(b)のように複数のゼロクロスが存在する場合は、ゼロクロスでの相関量変化の急峻性maxder(以下、急峻性と呼ぶ)が大きいところを第1のゼロクロスとする。この急峻性は焦点検出のし易さを示す指標で、値が大きいほど焦点検出し易い点であることを示す。急峻性は以下の式(5)によって算出することができる。
maxder=│ΔCOR[k−1]│+│ΔCOR[k]│ (5)
以上のように、ゼロクロスが複数存在する場合は、急峻性によって第1のゼロクロスを決定する。
続いて、ピントずれ量の信頼性の算出法について説明する。信頼性は、前記急峻性や、像信号A、Bの2像の一致度fnclvl(以下、2像一致度と呼ぶ)によって定義することができる。2像一致度はピントずれ量の精度を表す指標で、値が小さいほど精度が良い。
図8(d)は、図8(a)の領域802の部分を拡大したもので、808が相関量波形801の一部分が示されている。2像一致度は以下の式(6)によって算出できる。
(フォーカスアシスト表示領域設定処理)
次に、図3のステップS302におけるフォーカスアシスト表示領域設定処理について、図9のフローチャートと図10を用いて説明する。図9は、本実施形態におけるフォーカスアシスト表示領域設定処理の流れを示すフローチャートである。本実施形態では、フォーカスアシスト表示領域のサイズは、検出可能な最小の顔サイズより小さい所定のサイズに固定するものとして説明するが、フォーカスアシスト表示領域のサイズを変更可能にしてもよい。また、この所定のサイズを焦点検出可能な最小サイズとしてもよい。
まず、ステップS901では、カメラ制御部207は、前述したステップS301の処理において被写体検出部210が人物の顔を検出したか否かを判断する。人物の顔を検出した場合はステップS902へ移行し、検出していない場合はステップS903へ移行する。
ステップS902では、カメラ制御部207は、検出された顔のサイズが所定の閾値TH1より大きいか否かを判断する。検出された顔のサイズが閾値TH1よりも大きいと判断した場合はステップS904へ移行し、閾値TH1以下であると判断した場合はステップS911に移行する。
ここで、所定の閾値TH1は、顔のサイズが閾値TH1以下の場合に左右いずれかの目(特徴領域)の位置に合わせて設定されたフォーカスアシスト枠が顔枠内に収まらなくなるような値に設定される。閾値TH1の決定方法としては、例えば、フォーカスアシスト枠の水平方向のサイズの2倍程度の値が想定されるが、これに限定されるものではない。一般的に、人物を撮影する場合は人物の目(左右の目でピント位置が異なる場合が多いため、左右いずれかの目)にピントを合わせることが多い。そのため、MFモードで人物を撮影する場合は、左右いずれかの目の領域にフォーカスアシスト表示を行うことが好ましい。これにより、ユーザーがフォーカスアシスト枠を目の領域に移動するための操作を行う手間を省くことができる。
しかしながら、カメラに対して顔が遠くにあったり、焦点距離が広角側であることによって画像内の人物の顔が小さくなる場合、目とその他の部分のピントの差が分かりにくくなる。図10(a)では、検出された顔(顔枠1001に対応)のサイズが小さい場面の例を示している。図10(a)のように制御上設定できるサイズのフォーカスアシスト枠1002を片目(ここでは右目)の位置に合わせて設定してしまうと、枠に占める背景の割合が大きくなる。これが誤検出の原因となり、フォーカスアシスト表示が時間によってばらついたり、ユーザーが誤った焦点状態でピントが合ったと判断してしまう可能性が高くなる。
仮に、制御上設定できるフォーカスアシスト枠のサイズがさらに小さくなって目の領域に合わせて設定できたとしても、焦点検出範囲が非常に小さくなるため、デフォーカス量の検出が困難になる。そのため、大きくボケた状態からアシスト表示の経過を見ながらMF操作でピント合わせを行いたい場合には適していない。
そこで、検出された顔のサイズが所定の閾値以下の場合には、ステップS911において、図10(b)に示すように、顔枠1001内に収まるようにフォーカスアシスト枠1003を設定する。この場合、像信号のコントラストを高めるために、目の領域を含むようにフォーカスアシスト枠1003を設定することが好ましい。図10(b)のフォーカスアシスト枠1003を顔枠1001内に設定することで、背景の影響を受けなくなるため、誤検出が発生する可能性が低減し、ユーザーがより正確にピントの状態を把握することができる。なお、フォーカスアシスト枠のサイズを変更可能な場合には、顔枠と略同じ領域や、顔枠内において所定比率以上のサイズの領域にフォーカスアシスト枠を設定してもよい。
ここで、人物の顔の中から目の位置を検出する方法としては、例えば、検出した顔のサイズと位置から一般的な割合の(相対的な)位置(例えば、顔の中の上から1/3の位置など)を目の位置とする方法がある。また、被写体検出部210がCDS/AGCコンバータ202から出力された撮像信号に対して公知の検出処理を施し、検出した顔の画像領域内の特定の部位(目や耳、鼻、口など)を検出する方法を用いてもよい。
一方、検出された顔のサイズが所定の閾値TH1より大きい場合には、ステップS904において、カメラ制御部207は、検出した顔の向き情報を被写体検出部210から受信し、顔の向きを判断する。正面向きであると判断した場合はステップS905に移行し、横向きであると判断した場合はステップS906に移行する。ここでは、カメラ(撮影光学系)に対して顔が向いている角度が所定の角度以内であれば正面向きと判定するようにしてもよい。
ステップS905に進んだ場合、カメラ制御部207は、検出した顔の位置情報を被写体検出部210から受信し、顔の位置が撮影画面の水平方向における中心に対して、左右どちらの位置に存在しているかを判断する。顔の位置が画面に向かって左側である場合はステップS907に移行し、顔の位置が画面に向かって右側にある場合はステップS908に移行する。
ステップS907において、カメラ制御部207は、人物の右目の位置にフォーカスアシスト枠を設定する。具体的な設定方法の一例として、フォーカスアシスト枠の重心位置を右目領域の重心位置に合わせるように設定する方法があるが、他の基準に合わせて設定してもよい。人物の右目の位置にフォーカスアシスト枠を設定すると、ステップS914に移行する。
一方、ステップS908においては、カメラ制御部207は、人物の左目の位置にフォーカスアシスト枠を設定し、ステップS914に移行する。この場合も、フォーカスアシスト枠の重心位置を左目領域の重心位置に合わせるように設定してもよいし、他の基準に合わせて設定してもよい。
ここで、ステップS907およびステップS908において、人物の顔が正面向きの場合に、画面内の顔の位置に応じて人物の右目または左目にフォーカスアシスト枠を設定する理由について説明する。
図10(c)では、人物が正面を向いている場面の一例を示している。人物が正面向きであるということは、カメラのほうを向いているということになる。したがって、ピント面は画面の中心から遠い距離に位置する目のほうが至近側に存在する可能性が高い。一般的に、人物の目にピントを合わせる場合は至近側にある目にピントを合わせることが多いため、本実施形態では、画面の中心からより遠い距離に位置する目にフォーカスアシスト枠を設定する。これにより、ユーザーがフォーカスアシスト枠を至近側の目の位置に移動するための操作を行う手間を省くことができる。
上記の理由により、カメラから見て人物が右側(位置1004)にいる場合は人物の左目にフォーカスアシスト枠1006を設定し、カメラから見て人物が左側(位置1005)にいる場合は人物の右目にフォーカスアシスト枠1007を設定する。
一方、ステップS906に進んだ場合、カメラ制御部207は、検出した顔の向きの情報を被写体検出部210から受信し、顔の向いている方向を判断する。ここでは、顔の右側を画面に向けている場合を右向き、顔の左側を画面に向けている場合を左向きとする。顔の向きが右向きの場合はステップS909に移行し、左向きの場合はステップS910に移行する。
ステップS909に進んだ場合、カメラ制御部207は、ステップS907と同様に、人物の右目の位置にフォーカスアシスト枠を設定し、ステップS914に移行する。また、ステップS910に進んだ場合、カメラ制御部207は、ステップS908と同様に、人物の左目の位置にフォーカスアシスト枠を設定し、ステップS914に移行する。
ここで、ステップS909およびステップS910において、人物の顔が向いている方向に応じて人物の右目または左目にフォーカスアシスト枠を設定する理由について説明する。
図10(d)および(e)は、人物が左向きの状態を表している。まず、図10(d)に示すように、人物が左向きの場合に右目の位置にフォーカスアシスト枠1008を設定すると、前述の顔のサイズが小さい場合と同様に、領域に占める背景の割合が大きくなる。そのため、誤検出が起こりやすくなって、フォーカスアシスト表示が時間によってばらつく可能性が高くなる。これにより、ユーザーがMF操作によってフォーカスレンズを合焦位置に合わせにくくなったり、誤ったフォーカスレンズ位置でピントが合ったと判断してしまう可能性が高くなる。
また、人物が左向きであるということは、左目のほうが至近側に存在する。そこで、図10(e)に示すように、至近側にある左目の位置にフォーカスアシスト枠1009を設定することで、ユーザーがフォーカスアシスト枠を至近側の目の位置に移動するための操作を行う手間を省くことができる。
ステップS914において、カメラ制御部207は、ステップS907〜S911にて設定したフォーカスアシスト枠の顔の領域(顔枠)に対する位置についての情報を記憶する。なお、ここでフォーカスアシスト枠の顔の領域(顔枠)に対するサイズの割合についての情報をさらに記憶してもよい。
一方、ステップS901において顔が検出されなかった場合、ステップS903に進み、カメラ制御部207は、顔追尾状態になっているか否かを判断する。顔追尾状態とは、顔を検出している状態から顔を検出していない状態に移行した場合に、顔が検出できなくなる直前の情報と一般的な顔の特徴量から、顔の可能性が高い領域を推定している状態のことを言う。カメラ制御部207が顔追尾状態であると判断した場合はステップS912へ遷移し、顔追尾状態ではないと判断した場合にはステップS913に遷移する。
ステップS912において、カメラ制御部207は、ステップS914にて記憶したフォーカスアシスト枠の顔の領域に対する位置についての情報を読み出す。そして、記憶されていた位置を追尾状態となっている顔の領域(追尾領域)に対する位置に変換してフォーカスアシスト枠を設定する。なお、フォーカスアシスト枠のサイズを変更可能な場合は、ステップS914にてフォーカスアシスト枠の顔の領域に対するサイズの割合についての情報を記憶し、これを読み出してフォーカスアシスト枠のサイズを設定してもよい。この場合、記憶されていたサイズ(顔枠に対するサイズの割合)を追尾領域に対するサイズに変換してフォーカスアシスト枠を設定する。
ステップS912の処理を行う理由について、図10(f)および(g)を用いて説明する。図10(f)および(g)は、顔が検出されていた人物が横を向き、顔が検出できなくなり顔追尾状態になった場面を示している。図10(f)に示すように、追尾領域1010の中心にフォーカスアシスト枠1011を設定した場合、フォーカスアシスト枠1011が人物の目の位置から外れてしまう可能性が高い。そこで、図10(g)のように、顔追尾状態に入る直前のフォーカスアシスト枠の位置に基づいてフォーカスアシスト枠1012を設定することで、フォーカスアシスト枠1012が人物の目を含む可能性が高くなる。さらに、図10(g)の状態から人物が再びカメラのほうを向いて顔が再度検出できるようになると、フォーカスアシスト枠をスムーズに目の位置に設定し続けることができる。
一方、ステップS913において、カメラ制御部207は、予め記憶されている位置にフォーカスアシスト枠を設定して処理を終了する。本実施形態において、予め記憶されている位置は画面の中央とするが、これに限定されるものではない。なお、顔追尾状態において、追尾している位置の近傍に所定期間顔検出がされなかったり、顔の特徴量が低くなって顔である可能性が低いことを検知すると、顔追尾状態を終了する。顔追尾状態を終了した場合、顔追尾を行っていた位置と異なる位置に顔検出されていれば、検出されている顔に基づいてフォーカスアシスト枠を設定してもよい。また、顔追尾状態を終了した時点で他に検出されている顔がない場合は、フォーカスアシスト枠は予めカメラ制御部207に記録されている所定の位置および大きさに設定しても良いし、顔追尾状態を終了した時点の位置とサイズを保持して設定してもよい。
本実施形態において、ステップS901にて顔検出している場合やステップS903にて顔の追尾状態になっている場合、すなわち顔情報が取得されている場合は、顔枠内にフォーカスアシスト枠を設定する(例えば「顔MFモード」とする)。一方、顔検出状態でも顔追尾状態でもない場合、すなわち顔情報が取得されていない場合は、予め記憶されている位置に基づいてフォーカスアシスト枠を設定する(例えば「通常MFモード」とする)。
(フォーカスアシスト表示領域変更処理)
次に、図3のステップS303におけるフォーカスアシスト表示領域変更処理について、図13を用いて説明する。図13は、フォーカスアシスト表示領域変更処理の流れを示すフローチャートである。
まず、ステップS1301において、カメラ制御部207は、カメラ操作部208を介した変更操作を受け付け、変更操作が行われたかどうかを判定する。ここでの変更操作とは、例えば十字キーによる入力操作や、表示部205へのタッチ操作などが想定されるが、操作部材および操作の形態はこれらに限定されない。変更操作が行われた場合はステップS1302へ移行し、変更操作が行われていない場合は本フローを終了する。
ステップS1302では、カメラ制御部207は、上述した顔MFモードか否かを判断する。顔MFモードの場合はステップS1303へ移行し、顔MFモードでない場合はステップS1305へ移行する。
ステップS1303では、カメラ制御部207は、前述したステップS301の処理において被写体検出部210が複数の顔を検出したか否かを判断する。複数の顔を検出した場合はステップS1304へ移行し、検出していない場合は本フローを終了する。
ステップS1304では、カメラ制御部207は、ステップS1301で検出された操作に応じて、フォーカスアシスト枠を設定する対象となる主顔を切り替える処理を行う。すなわち、現在フォーカスアシスト枠を表示している顔以外の顔にフォーカスアシスト枠を移動する。主顔を切り替える処理を行うと、本フローを終了する。
一方、ステップS1305に進んだ場合、カメラ制御部207は、ステップS1301で検出された操作に応じて、フォーカスアシスト枠の位置を移動する処理を行う。例えば、十字キーで操作された方向に所定量ずつフォーカスアシスト枠を移動したり、表示部205へのタッチ操作により指定された位置にフォーカスアシスト枠を移動する。フォーカスアシスト枠の位置を移動する処理を行うと、本フローを終了する。
このように、本実施形態では、フォーカスアシスト表示中にカメラ操作部208を介して変更操作が行われた場合、顔情報の取得状態に応じて処理を変更する。具体的には、複数の顔情報が取得されている場合はフォーカスアシスト枠の設定対象となる顔を切り替える処理を行い、顔情報が取得されていない場合は変更操作に応じてフォーカスアシスト枠の位置を移動する処理を行う。これは、ユーザーがフォーカスアシスト枠位置の変更を意図してカメラ操作部208の操作を行う場合も、上述したように、顔情報が取得されている場合は片目の焦点状態を表示することが好ましいためである。
以上、MFモード中のフォーカスアシスト枠の設定について説明したが、AFモードにおいては、フォーカスアシスト枠は設定せずに、焦点調節を行うための信号を取得するAF枠を設定する。ここで、AFモード中に顔が検出されている場合に片目の領域にAF枠を設定すると、AF枠の大きさが小さくなる。そのため、被写体が動いたときなどにAF枠に対する被写体のかかり方が変わりやすくなり、AFが不安定になってしまう恐れがある。そこで、AFモードにおいては、AF枠を顔領域に対して設定(例えば、顔枠と略同じサイズに設定)することで、安定したAFを実現することができる。また、上記の理由により、カメラ操作部208を介してAF枠のサイズを変更する操作が行われた場合でも、AF枠の最小のサイズはフォーカスアシスト枠よりも大きいサイズに設定される。
なお、フォーカスアシスト枠のサイズを固定した場合でも、AFモードにおいては、AF枠のサイズを変更可能とする。これは、フォーカスアシスト表示においては手動操作による厳密なピント調整を行うために小さい焦点検出範囲を設定することが好ましいのに対して、AF時には被写体のサイズに応じてAF枠を設定することが好ましいためである。
以上説明したように、本実施形態では、被写体情報の取得状態に応じてフォーカスアシスト枠の設定を変更する。例えば、所定の被写体(例えば顔)の情報が取得されている場合には、当該所定の被写体へのMF操作によるピント合わせを行うことを考慮して、所定の被写体の領域内にフォーカスアシスト枠を設定する。特に、複数の特徴部分(例えば目)が存在する被写体(例えば顔)の情報が取得されている場合には、被写体の状況に応じて至近側の特徴部分を判定し、フォーカスアシスト表示を行う。これにより、被写体に対して適切な位置に焦点状態を示す表示(フォーカスアシスト表示)を行うことができるので、ユーザーの利便性を向上させることができる。
また、本実施形態では、ユーザーによりフォーカスアシスト枠を変更する操作が行われた場合に、被写体情報の取得状態に応じた処理を行う。例えば、所定の被写体の情報が複数検出されている場合には、ユーザーの操作に応じて、フォーカスアシスト枠を設定する被写体を切り替える処理を行う。これにより、ユーザーの変更意図を被写体に適した方法で反映させてフォーカスアシスト枠を設定することができる。
<第二の実施形態>
次に、第二の実施形態について図11および図12を用いて説明する。本実施形態では、被写界深度に基づいてフォーカスアシスト表示の設定を変更する点が第一の実施形態と異なる。なお、第一の実施形態と同じ項目については同じ番号を付して説明を省略する。
図11は、本実施形態におけるフォーカスアシスト表示領域設定処理の流れを示すフローチャートである。本実施形態では、フォーカスアシスト表示領域のサイズを変更可能であるものとする。
まず、ステップ902において、検出した顔のサイズが閾値TH1より大きい場合に、ステップS1101へ進む。ステップS1101において、カメラ制御部207は、被写界深度が閾値TH2より小さいか否かを判断する。被写界深度が閾値TH2より小さい場合はステップS904に遷移し、以降でステップS901と同様の処理を行う。
一方、被写界深度が閾値TH2以上である場合はステップS1102に遷移し、顔枠全体に基づいてフォーカスアシスト枠を設定する。例えば、顔枠と略同じ領域や、顔枠内において所定比率以上のサイズの領域にフォーカスアシスト枠を設定する。ステップS1102でフォーカスアシスト枠を設定すると、ステップS914に進み、図9と同様の処理を行う。なお、ステップS902において検出した顔のサイズが閾値TH1以下であると判定された場合に、ステップS1102の処理を行ってもよい。
このように、本実施形態では、検出した顔のサイズが閾値TH1より大きい場合でも、被写界深度が閾値以上の場合は、顔枠全体に基づいてフォーカスアシスト表示を行う。ここで、被写界深度に応じてフォーカスアシスト枠の設定を変更する理由について説明する。
被写界深度が顔の奥行き(例えば鼻先から後頭部まで)の長さよりも浅い場合は、顔の各パーツの中でのピントの差が判別できる可能性が高くなる。例えば、顔が右向きになっている場合は、カメラに対して左目と右目の距離差が顔の奥行きとなるため、被写界深度が顔の奥行きの長さよりも浅くなると左目と右目のピントの差が視認できるようになるため、右目にフォーカスアシスト枠を設定する。図12(a)では、顔枠1201の中で右目の領域にフォーカスアシスト枠1202を設定した状態を示している。
一方、被写界深度が顔の奥行きの長さよりも深い場合は、顔の各パーツの中でのピントの差が判別できなくなる可能性が高くなる。例えば、顔が右を向いて横顔になっている場合は、被写界深度が顔の奥行きの長さよりも深くなると左目と右目のピントの差が視認できなくなる。そこで、より高い精度でデフォーカス量を検出することを優先して、図12(b)に示すように、顔枠1201全体に基づいてフォーカスアシスト枠1203を設定する。
このように、本実施形態では被写界深度に応じてフォーカスアシスト枠の設定を変更する。具体的には、被写界深度が浅い場合は、厳密なピント調整を可能にするために、より小さい領域で焦点状態を検出して表示する一方で、被写界深度が深い場合は、焦点検出精度を優先して、より大きい領域で焦点状態を検出して表示する。このような処理を行うことによって、より利便性の高いフォーカスアシスト表示を実現することができる。
(他の実施形態)
本発明の目的は以下のようにしても達成できる。すなわち、前述した実施形態の機能を実現するための手順が記述されたソフトウェアのプログラムコードを記憶した記憶媒体を、システムまたは装置に供給する。そしてそのシステムまたは装置のコンピュータ(またはCPU、MPU等)が記憶媒体に格納されたプログラムコードを読み出して実行する。この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体および制御プログラムは本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスクなどが挙げられる。また、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD−R、磁気テープ、不揮発性のメモリカード、ROM等も用いることができる。
また、コンピュータが読み出したプログラムコードを実行可能とすることにより、前述した各実施形態の機能が実現される。さらに、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した各実施形態の機能が実現される場合も含まれる。
更に、以下の場合も含まれる。まず記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う。
以上、本発明をその好適な実施形態に基づいて詳述したが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。