以下、本発明の各実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の各実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は各実施形態に記載されている構成によって限定されることはない。
<第1実施形態>
以下、図面を参照して、本発明の第1実施形態について説明する。図1は、本発明の第1実施形態に係る撮像装置(カメラ100)の構成例を示すブロック図である。
図1に示すように、カメラ100は撮像光学系、ズームアクチュエータ111、絞りアクチュエータ112、フォーカスアクチュエータ114、電子フラッシュ115、AF補助光発光部116、撮像素子107及びシャッター108を有する。また、カメラ100はCPU121、電子フラッシュ制御回路122、補助光駆動回路123、撮像素子駆動回路124、画像処理回路125、フォーカス駆動回路126、絞り駆動回路128及びズーム駆動回路129を有する。更に、カメラ100は表示器131、操作スイッチ群132、フラッシュメモリ133、被写体検出部140、辞書データ記憶部141及びフォーカス領域検出部142を有する。
第1レンズ群101、絞り102、第2レンズ群103、第3レンズ群105及び光学ローパスフィルタ106により撮像光学系が構成される。第1レンズ群101は、結像光学系としての撮像光学系のうち最も被写体側(前側)に配置され、光軸方向に移動可能に保持されている。絞り102は、その開口径を調節することにより、光量調節を行う。第2レンズ群103は、絞り102と一体となって光軸方向に移動し、光軸方向に移動する第1レンズ群101と共に変倍(ズーム)を行う。第3レンズ群(フォーカスレンズ)105は、光軸方向に移動して焦点調節を行う。光学ローパスフィルタ106は、撮像画像の偽色やモアレを軽減するための光学素子である。
ズームアクチュエータ111は、不図示のカム筒を光軸回りで回動させることにより、該カム筒に設けられたカムによって、第1レンズ群101及び第2レンズ群103を光軸方向に移動させて変倍を行わせる。また、絞りアクチュエータ112は、絞り102の光量調節動作のために、不図示の複数の遮光羽根を開閉方向に駆動する。そして、フォーカスアクチュエータ114は、第3レンズ群105を光軸方向に移動させて焦点調節を行わせる。
フォーカス駆動回路126は、CPU121からのフォーカス駆動指令に応じてフォーカスアクチュエータ114を駆動し、第3レンズ群105を光軸方向に移動させる。絞り駆動回路128は、CPU121からの絞り駆動指令に応じて絞りアクチュエータ112を駆動する。ズーム駆動回路129は、ユーザのズーム操作に応じてズームアクチュエータ111を駆動する。
第1実施形態では、撮像光学系、ズームアクチュエータ111、絞りアクチュエータ112、フォーカスアクチュエータ114、フォーカス駆動回路126、絞り駆動回路128及びズーム駆動回路129がカメラ本体と一体に設けられた場合について説明する。また、カメラ本体は撮像素子107を含む。ただし、撮像光学系、ズームアクチュエータ111、絞りアクチュエータ112、フォーカスアクチュエータ114、フォーカス駆動回路126、絞り駆動回路128及びズーム駆動回路129を有する交換レンズがカメラ本体に着脱可能であってもよい。
電子フラッシュ115は、キセノン管やLED等の発光素子を有し、被写体を照明する光を発する。AF補助光発光部116は、LED等の発光素子を有し、所定の開口パターンを有するマスクの像を投光レンズを介して被写体に投射することにより、暗い又は低コントラストの被写体に対する焦点検出性能を向上させる。また、電子フラッシュ制御回路122は、撮像動作に同期して電子フラッシュ115を点灯させるように制御する。補助光駆動回路123は、焦点検出動作に同期してAF補助光発光部116を点灯させるように制御する。
CPU121は、カメラ100における各種制御を司る。CPU121は、演算部、ROM、RAM、A/Dコンバータ、D/Aコンバータ及び通信インターフェイス回路等を有する。CPU121は、ROMに記憶されているコンピュータプログラムを実行することによって、カメラ100内の各種回路を駆動したり、AF処理、撮像処理、画像処理及び記録等の一連の処理(動作)を制御したりする。CPU121は画像処理装置として機能する。画像処理装置は、CPU121の他に、被写体検出部140や辞書データ記憶部141、フォーカス領域検出部142等を含む構成であってもよい。
撮像素子107は、複数の画素を含む2次元CMOSフォトセンサとその周辺回路からなり、撮像光学系の結像面に配置されている。撮像素子107は、撮像光学系により形成される被写体像を光電変換する。撮像素子駆動回路124は、撮像素子107の動作を制御すると共に、光電変換により生成されたアナログ信号をA/D変換して得られたデジタル信号をCPU121に送信する。
シャッター108は、フォーカルプレーンシャッターの構成を有しており、CPU121からの指示に基づき、シャッター108に内蔵されているシャッター駆動回路からの指令に応じて、フォーカルプレーンシャッターの駆動を行う。撮像素子107の信号を読み出し中には、撮像素子107を遮光する。また、露光が行われているときには、フォーカルプレーンシャッターが開かれ、撮像素子107に撮影光束が導かれる。
画像処理回路(画像処理部)125は、CPU121内のRAMに蓄積された画像データに対して予め定められた画像処理を適用する。画像処理回路125が適用する画像処理には、ホワイトバランス調整処理、色補間処理(デモザイク処理)、ガンマ補正処理といった所謂現像処理のほか、信号形式変換処理、スケーリング処理などがあるが、これらに限定されない。
更に、画像処理回路125は、被写体の姿勢情報やシーンに固有の物体(以下、「固有物体」と称する)の位置情報に基づいて主被写体を判定する。画像処理回路125が行った判定処理の結果を他の画像処理(例えば、ホワイトバランス調整処理)に利用してもよい。画像処理回路125は、処理した画像データや各被写体の関節位置、固有物体の位置や大きさ情報、主被写体と判定した被写体の重心、顔や瞳の位置情報などをCPU121内のRAMに保存する。
表示器(表示手段)131は、LCD(Liquid Crystal Display)等の表示素子を有し、カメラ100の撮像モードに関する情報、撮像前のプレビュー画像、撮像後の確認用画像、焦点検出領域の指標及び合焦画像等を表示する。操作スイッチ群132は、メインスイッチ(電源スイッチ)、レリーズスイッチ(撮影トリガスイッチ)、ズーム操作スイッチ及び撮影モード選択スイッチ等を含み、ユーザにより操作される。フラッシュメモリ133は撮像画像を記録する。なお、フラッシュメモリ133はカメラ100に対して着脱可能である。
被写体検出手段としての被写体検出部140は、機械学習により生成される被写体検出用辞書データに基づいて、被写体検出処理を行う。第1実施形態では、被写体検出部140は、複数種類の被写体を検出するために、被写体ごとの被写体検出用辞書データを用いる。各被写体検出用辞書データは、例えば、対応する被写体の特徴が登録されたデータである。被写体検出部140は、被写体ごとの被写体検出用辞書データを順次切り替えながら被写体検出を行う。第1実施形態では、被写体ごとの被写体検出用辞書データは、辞書データ記憶部141に記憶される。従って、辞書データ記憶部141には、複数の被写体検出用辞書データが記憶される。CPU121は、複数の被写体検出用辞書データの中から何れの被写体検出用辞書データを用いて被写体検出を行うかを、事前に設定された被写体の優先度やカメラ100(撮像装置)の設定に基づいて決定する。
フォーカス領域検出手段としてのフォーカス領域検出部142は、機械学習により生成されるフォーカス領域検出用辞書データに基づいて、被写体内の領域で合焦すべき領域(ピントを合わせるべき領域)の検出を行う。第1実施形態では、フォーカス領域検出部142は、被写体検出部140により検出された被写体(以下、「検出被写体」と称する)の領域(以下、「被写体検出領域」と称する)の画像信号を少なくとも入力とし、出力としてのフォーカス領域を得る。フォーカス領域は、検出被写体内の領域で合焦すべき領域である。第1実施形態では、被写体ごとのフォーカス領域検出用辞書データは辞書データ記憶部141に記憶される。従って、辞書データ記憶部141には、複数のフォーカス領域検出用辞書データが記憶される。被写体検出部140で用いられた被写体検出用辞書データと対応付けられたフォーカス領域検出部142で用いられるフォーカス領域検出用辞書データを選択して用いる。詳細は後述する。
記憶手段としての辞書データ記憶部141には、被写体ごとの被写体検出用辞書データ及びフォーカス領域検出用辞書データが記憶されている。被写体検出部140は、撮像された画像データと被写体検出用辞書データとに基づいて、画像中の被写体の位置を推定する。また、被写体検出部140は、被写体の位置やサイズ、信頼度等の情報を推定して、推定したこれらの情報を出力してもよい。更に、被写体検出部140は、他の情報を出力してもよい。同様に、フォーカス領域検出部142は、上述の通り、被写体検出領域の画像データを入力画像として、フォーカス領域検出用辞書データに基づいて、入力画像内の合焦すべき領域(フォーカス領域)を出力する。
被写体検出部140が使用する被写体検出用辞書データとしては、例えば、被写体として「人物」を検出するための人物辞書データや「動物」を検出するための動物辞書データ、「乗物」を検出するための乗物辞書データ等がある。また、「人物の全体」を検出するための辞書データと「人物の顔」を検出するための辞書データとが別個に辞書データ記憶部141に記憶されていてもよい。
フォーカス領域検出用辞書データとしては、例えば、被写体として「乗物」が検出され、入力画像とされた場合に、被写体のサイズや撮影設定に応じて、乗物の運転手の頭部の領域を出力したり、乗物の筐体の側面の領域を出力したりする辞書データである。フォーカス領域検出部142がフォーカス領域検出用辞書データを使用する。本発明では、このように、被写体検出領域とは別に、合焦すべき領域(フォーカス領域)を出力することにより、撮影シーンに応じて適切な領域でピントを合わせた画像を得ることができる。詳細は後述する。
第1実施形態では、被写体検出部140は、機械学習(深層学習)されたCNN(コンボリューショナル・ニューラル・ネットワーク)により構成され、撮像された画像データに含まれる被写体の位置等を推定する。また、フォーカス領域検出部142は、機械学習(深層学習)されたCNN(以下、「学習済みCNN」と称する)により構成され、検出被写体内の領域でピントを合わせるべき位置等を推定する。第1実施形態では、被写体検出部140及びフォーカス領域検出部142は、それぞれ異なる手法により機械学習されたCNNにより構成される。被写体検出部140及びフォーカス領域検出部142は、GPU(グラフィックス・プロセッシング・ユニット)やCNNによる推定処理に特化した回路で実現されてもよい。
本発明では、CNNの機械学習は任意の手法で行われ得る。例えば、サーバ等の所定のコンピュータがCNNの機械学習を行って学習済みCNN(即ち、学習済みモデル)を生成し、カメラ100は所定のコンピュータから学習済みCNNを取得してもよい。例えば、所定のコンピュータが、学習用の画像データを入力とし、学習用の画像データに対応する被写体の位置等を教師データとした教師あり学習を行うことにより、被写体検出部140のCNNの機械学習を行わってもよい。また、所定のコンピュータが、学習用の画像データを入力とし、学習用の画像データの被写体に対応するピントを合わせるべき位置等を教師データとした教師あり学習を行うことにより、フォーカス領域検出部142のCNNの機械学習を行わってもよい。このように、被写体検出部140及びフォーカス領域検出部142の学習済みCNN(学習済みモデル)が生成される。
ここで、上述したように、被写体検出部140は被写体検出用辞書データを使用して被写体を検出する。また、被写体検出部140は、それぞれ異なる種類の被写体(人物や動物、乗物等)についての被写体検出用辞書データを使用して被写体を検出する。第1実施形態では、被写体検出部140が使用する各被写体検出用辞書データは、被写体検出部140を構成する学習済みCNNを適用することにより、生成される。また、フォーカス領域検出部142はフォーカス領域検出用辞書データを使用してフォーカス領域を検出する。フォーカス領域検出部142が使用する各フォーカス領域検出用辞書データも、フォーカス領域検出部142を構成する学習済みCNNを適用することにより、生成される。
また、CNNの機械学習は、カメラ100(撮像装置)又はCPU121(画像処理装置)で行われてもよい。
なお、上述したように、第1実施形態では、被写体検出部140及びフォーカス領域検出部142はそれぞれ異なる機械学習されたCNNにより構成されている。しかしながら、本発明はこれに限定されず、被写体検出部140及びフォーカス領域検出部142は、それぞれ異なる機械学習されたニューラルネットワークにより構成されてもよい。また、被写体検出部140及びフォーカス領域検出部142は、学習済みCNN以外の学習済みモデルにより構成されてもよい。例えば、被写体検出部140及びフォーカス領域検出部142は、サポートベクターマシンやロジスティクス回帰等の任意の機械学習アルゴリズムにより機械学習された学習済みモデルにより構成されてもよい。
次に、図2を参照して、第1実施形態に係る撮像装置(カメラ100)の撮像素子107の画素配列について説明する。図2は、撮像素子107のうち、光軸方向(以下、「z方向」と称する)から見た、4画素列×4画素行の範囲の画素配列を示している。
図2に示すように、1つの画素ユニット200は2行×2列に配置された4つの撮像画素を含む。撮像素子107上に多数の画素ユニット200が配列されることにより、2次元の被写体像の光電変換を行うことができる。1つの画素ユニット200のうち、左上にはR(赤)の分光感度を有する撮像画素(以下、「R画素」と称する)200Rが配置され、右上と左下にはG(緑)の分光感度を有する撮像画素(以下、「G画素」と称する)200Gがそれぞれ配置されている。更に、右下にはB(青)の分光感度を有する撮像画素(以下、「B画素」と称する)200Bが配置されている。また、各撮像画素は、水平方向(以下、「x方向」と称する)に分割された第1焦点検出画素201と第2焦点検出画素202を含む。
第1実施形態に係るカメラ100の撮像素子107において、撮像画素の画素ピッチPは4μmであり、撮像画素数Nは約2075万画素(x方向5575列×垂直方向(以下、「y方向」と称する)3725行)である。また、焦点検出画素の画素ピッチPAFは2μmであり、焦点検出画素数NAFは約4150万画素(x方向11150列×y方向3725行)である。
第1実施形態では、各撮像画素が水平方向に2分割されている場合について説明するが、各撮像画素が垂直方向に分割されていてもよい。また、第1実施形態の撮像素子107は、第1焦点検出画素201と第2焦点検出画素202をそれぞれ含む撮像画素を複数有しているが、撮像画素と第1焦点検出画素及び第2焦点検出画素とを別々の画素として設けてもよい。例えば、複数の撮像画素の中に、第1焦点検出画素及び第2焦点検出画素を離散的に配置してもよい。
図3(A)は第1実施形態の撮像素子107の受光面側(+z方向)から見た1つの撮像画素(図中では、G画素200G)を示している。図3(B)は、図3(A)の撮像画素のa-a断面を-y方向から見て示している。
図3(B)に示すように、1つの撮像画素には、入射光を集光するための1つのマイクロレンズ305が設けられている。また、撮像画素には、x方向にN分割(第1実施形態では2分割)された光電変換部301及び光電変換部302が設けられている。光電変換部301及び光電変換部302はそれぞれ、第1焦点検出画素201及び第2焦点検出画素202に相当する。光電変換部301及び光電変換部302の重心はそれぞれ、マイクロレンズ305の光軸に対して、-x方向側および+x方向側に偏心している。
各撮像画素におけるマイクロレンズ305と光電変換部301及び光電変換部302との間には、R、G又はBのカラーフィルタ306が設けられている。なお、光電変換部ごとにカラーフィルタの分光透過率を変えてもよいし、カラーフィルタを省略してもよい。
撮像光学系から撮像画素に入射した光は、マイクロレンズ305により集光され、カラーフィルタ306で分光された後、光電変換部301及び光電変換部302で受光されてから、光電変換される。
次に、図4を参照して、図3(A)及び図3(B)に示した撮像画素の構造と瞳分割との関係を説明する。図4は、図3(A)に示した撮像画素のa-a断面を+y方向から見て示すと共に、撮像光学系の射出瞳を示す。図4では、射出瞳の座標軸との対応を取るために、撮像画素のx方向とy方向とを図3(B)に対して反転させている。
図4に示すように、射出瞳のうち、+X方向側に重心が偏心した第1瞳領域501は、マイクロレンズ305によって、撮像画素のうち-x方向側の光電変換部301の受光面と概ね共役な関係とされた領域である。第1瞳領域501を通過した光束は、光電変換部301、即ち、第1焦点検出画素201により受光される。また、射出瞳のうち、-X方向側に重心が偏心した第2瞳領域502は、マイクロレンズ305によって、撮像画素のうち+x方向側の光電変換部302の受光面と概ね共役な関係とされた領域である。第2瞳領域502を通過した光束は、光電変換部302、即ち、第2焦点検出画素202により受光される。瞳領域500は、光電変換部301及び光電変換部302(第1焦点検出画素201及び第2焦点検出画素202)を全て合わせた撮像画素全体で受光可能な瞳領域を示している。
次に、図5を参照して、撮像素子による瞳分割を説明する。図5は撮像素子107による瞳分割を示している。図5に示すように、第1瞳領域501と第2瞳領域502をそれぞれ通過した一対の光束は、撮像素子107の各撮像画素にそれぞれ異なる角度で入射し、2分割された第1焦点検出画素201及び第2焦点検出画素202により受光される。第1実施形態では、撮像素子107の複数の撮像画素の第1焦点検出画素201からの出力信号を集めて第1焦点検出信号を生成し、撮像素子107の複数の撮像画素の第2焦点検出画素202からの出力信号を集めて第2焦点検出信号を生成する。また、複数の撮像画素の第1焦点検出画素201からの出力信号と第2焦点検出画素202からの出力信号とを加算して撮像画素信号を生成する。そして、複数の撮像画素からの撮像画素信号を合成して、有効画素数N(撮像画素数N)に相当する解像度の画像を生成するための撮像信号を生成する。
次に、図6を参照して、撮像光学系のデフォーカス量と撮像素子107から取得される第1焦点検出信号と第2焦点検出信号の位相差(以下、「像ずれ量」と称する)との関係について説明する。図6において、撮像面600には撮像素子107が配置されており、図4及び図5を参照して説明したように、撮像光学系の射出瞳は第1瞳領域501と第2瞳領域502とに2分割されている。
図6に示すように、デフォーカス量dは、被写体(801,802)からの光束の結像位置Cから撮像面600までの距離(大きさ)を|d|として、結像位置Cが撮像面600より被写体側にある前ピン状態を負符号(d<0)で表すように定義される。また、デフォーカス量dは、結像位置Cが撮像面600より被写体とは反対側にある後ピン状態を正符号(d>0)で表すように定義される。結像位置Cが撮像面600にある合焦状態では、d=0である。撮像光学系は、被写体801に対して合焦状態(d=0)にあり、被写体802に対して前ピン状態(d<0)にある。前ピン状態(d<0)と後ピン状態(d>0)を合わせてデフォーカス状態(|d|>0)と称する。
前ピン状態(d<0)では、被写体802からの光束のうち、第1瞳領域501(第2瞳領域502)を通過した光束は、一旦集光した後、光束の重心位置G1(G2)を中心として幅Γ1(Γ2)に広がり、撮像面600上でボケ像を形成する。このボケ像は、撮像素子107上の各第1焦点検出画素201(各第2焦点検出画素202)により受光され、第1焦点検出信号(第2焦点検出信号)が生成される。つまり、第1焦点検出信号(第2焦点検出信号)は、撮像面600上での光束の重心位置G1(G2)にて被写体802がボケ幅Γ1(Γ2)だけボケた被写体像を表す信号となる。
被写体像のボケ幅Γ1(Γ2)は、第1焦点検出信号と第2焦点検出信号のデフォーカス量dの大きさ|d|の増加に概ね比例して増加する。同様に、第1焦点検出信号と第2焦点検出信号間の被写体像の像ずれ量p(=光束の重心位置の差G1-G2)の大きさ|p|も、デフォーカス量dの大きさ|d|の増加に概ね比例して増加する。後ピン状態(d>0)でも、第1焦点検出信号と第2焦点検出信号間の被写体像の像ずれ方向は前ピン状態とは反対となるが、同様である。
このように、デフォーカス量の大きさが増加するのに伴って、第1焦点検出信号と第2焦点検出信号間の被写体像の像ずれ量の大きさが増加する。第1実施形態では、撮像素子107を用いて得られた第1焦点検出信号と第2焦点検出信号間の被写体像の像ずれ量からデフォーカス量を算出する「撮像面位相差検出方式による焦点検出」を行う。
次に、図7を参照して、撮像素子107のうち、第1焦点検出信号及び第2焦点検出信号を取得する焦点検出領域について説明する。図7において、A(n,m)は、撮像素子107の有効画素領域1000に設定された複数(図中では、x方向及びy方向に3つずつの計9つ)の焦点検出領域のうち、x方向でのn番目、y方向でのm番目の焦点検出領域を示す。焦点検出領域A(n,m)に含まれる複数の第1焦点検出画素201及び第2焦点検出画素202からの出力信号から、第1焦点検出信号及び第2焦点検出信号が生成される。I(n,m)は、表示器131において焦点検出領域A(n,m)の位置を表示する指標を示す。
なお、図7に示した9つの焦点検出領域はあくまでも一例に過ぎず、本発明では、焦点検出領域の数、位置及びサイズは図7の例に限定されない。例えば、ユーザが指定した位置や被写体検出部140により検出された被写体の位置(以下、「被写体位置」とも称する)を中心とした所定の範囲に、一つ若しくは複数の領域を焦点検出領域として設定してもよい。第1実施形態では、後述するデフォーカスマップの取得に際して、より高分解能の焦点検出結果が得られるように、焦点検出領域を配置する。例えば、撮像素子107上に、水平120分割及び垂直80分割で計9600点の焦点検出領域を配置する。
次に、第1実施形態に係る撮像装置(カメラ100)のライブビュー撮影の流れについて説明する。図8は第1実施形態に係るカメラ100のライブビュー撮影の流れを示すフローチャートである。具体的には、図8はカメラ100にライブビュー画像を表示器131に表示する撮像前から静止画撮像を行うまでの動作を行わせる処理を示している。CPU121は、コンピュータプログラムに従って図8の処理を実行する。なお、以下の説明において、Sはステップを意味する。
まず、S1において、CPU121は、撮像素子駆動回路124に撮像素子107を駆動させ、撮像素子107から撮像データを取得する。その後、CPU121は、取得した撮像データのうち、図7に示した焦点検出領域のそれぞれに含まれる複数の第1焦点検出画素及び第2焦点検出画素から第1焦点検出信号及び第2焦点検出信号を取得する。また、CPU121は、撮像素子107の全有効画素の第1焦点検出信号及び第2焦点検出信号を加算して撮像信号を生成し、画像処理回路125に撮像信号(撮像データ)に対する画像処理を行わせて画像データを取得する。なお、撮像画素と第1焦点検出信号及び第2焦点検出画素とを別々に設けた場合に、CPU121は焦点検出用画素に対する補完処理を行って画像データを取得する。
次に、S2において、CPU121は、画像処理回路125にS1で得られた画像データからライブビュー画像を生成させ、生成されたライブビュー画像を表示器131に表示させる。なお、ライブビュー画像は表示器131の解像度に合わせた縮小画像であり、ユーザはライブビュー画像を見ながら撮像構図や露出条件等を調整することができる。そのため、CPU121は、画像データから得られた測光値に基づき露出調整を行い、表示器131に表示する。露出調整は、露光時間、撮影レンズの絞り開口の開閉、撮像素子出力に対するゲイン調整を適宜行うことにより実現する。
次に、S3において、CPU121は、操作スイッチ群132に含まれるレリーズスイッチの半押し操作によって、撮像準備動作の開始を指示するスイッチSw1(以下、単に「Sw1」と称する)がオンされたか否かを判定する。CPU121は、S3でSw1がオンされていないと判定した場合に、Sw1がオンになるタイミングを監視するため、S3で行われる判定を繰り返す。一方、CPU121は、S3でSw1がオンされたと判定した場合に、処理をS400に進め、被写体追従AF処理(被写体追従オートフォーカス処理)を行う。被写体追従AF処理では、得られた撮像信号や焦点検出信号から被写体領域の検出、フォーカス領域の検出、焦点検出領域の設定、焦点検出タイミングから画像露光タイミングまでのタイムラグの影響を抑制するための予測AF処理などを行う。カメラ100に被写体追従AF動作を行わせる「被写体追従AF処理」の詳細は後述する。
CPU121は被写体追従AF処理を行ってから、処理をS5に進め、レリーズスイッチの全押し操作によって、撮像動作の開始を指示するスイッチSw2(以下、単に「Sw2」と称する)がオンされたか否かを判定する。CPU121は、S5でSw2がオンされていないと判定した場合に、処理をS3に戻す。一方、CPU121は、S5でSw2がオンされたと判定した場合に、処理をS300に進め、撮像処理を実行する。カメラ100に撮像動作を行わせる「撮像処理」の詳細は後述する。撮像処理が終了すると、CPU121は処理をS7に進める。
S7において、CPU121は、操作スイッチ群132に含まれるメインスイッチがオフされたか否かを判定する。CPU121は、S7でメインスイッチがオフされたと判定した場合に、ライブビュー撮影を終了する。一方、CPU121は、S7でメインスイッチがされていないと判定した場合に、処理をS3に戻す。
第1実施形態では、S3でSw1のオンが検出された後に(Sw1がオンされたと判定された後に)、被写体追従AF処理を行うように構成したが、被写体追従AF処理を行うタイミングはこれに限らない。Sw1がオンされる前の状態に、S400で行われる被写体追従AF処理を行うことにより、撮影者の撮影前の予備動作を不要とすることができる。
次に、図8のS300でCPU121が実行する撮像処理の流れについて説明する。図9は図8のS300でCPU121が実行する撮像処理の流れを示すフローチャートである。
S301において、CPU121は、露出制御処理を行い、撮像条件(シャッター速度、絞り値、撮像感度等)を決定する。この露出制御処理は、ライブビュー画像の画像データから取得した輝度情報を用いて行うことができる。そして、S301において、CPU121は、決定した絞り値を絞り駆動回路128に送信して、絞り102を駆動させる。また、S301において、CPU121は、決定したシャッター速度をシャッター108に送信して、フォーカルプレーンシャッターを開く動作を行う。更に、S301において、CPU121は、撮像素子駆動回路124を通じて露光期間の間、撮像素子107に電荷蓄積を行わせる。
露光制御処理を行ったCPU121は、S302において、撮像素子駆動回路124に、撮像素子107からの静止画撮像のための撮像信号の全画素読み出しを行わせる。また、CPU121は、撮像素子駆動回路124に撮像素子107内の焦点検出領域(合焦目標領域)からの第1焦点検出信号及び第2焦点検出信号のうち一方の読み出しを行わせる。このときに読み出される第1焦点検出信号又は第2焦点検出信号は、後述する画像再生時に、画像のピント状態を検出するために用いられる。第1焦点検出信号及び第2焦点検出信号のうち一方の焦点検出信号を撮像信号から差し引くことにより、他方の焦点検出信号を取得することができる。
次に、S303において、CPU121は、画像処理回路125に、S302で読み出されてA/D変換された撮像データに対して、欠陥画素補正処理を行わせる。
更に、S304において、CPU121は、画像処理回路125に、欠陥画素補正処理後の撮像データに対して、デモザイク処理、ホワイトバランス調整処理、γ補正処理(階調補正処理)、色変換処理及びエッジ強調処理等の画像処理と符号化処理を行わせる。
そして、S305において、CPU121は、S304で画像処理と符号化処理が行われることで得られた画像データとしての静止画データと、S302で読み出された一方の焦点検出信号とを、画像データファイルとしてフラッシュメモリ133に記録する。
次に、S306において、CPU121は、S305で記録した静止画データに対応付けて、カメラ100(撮像装置)の特性情報としてのカメラ特性情報(撮像装置特性情報)をフラッシュメモリ133とCPU121内のメモリ(RAM)に記録する。カメラ特性情報は、例えば、以下の情報を含む。
・撮像条件(絞り値、シャッター速度、撮像感度等)
・画像処理回路125で行った画像処理に関する情報
・撮像素子107の撮像画素及び焦点検出画素の受光感度分布に関する情報
・カメラ100内での撮像光束のケラレに関する情報
・カメラ100における撮像光学系の取り付け面から撮像素子107までの距離の情報
・カメラ100の製造誤差に関する情報
撮像素子107の撮像画素及び焦点検出画素の受光感度分布に関する情報(以下、単に、「受光感度分布情報」と称する)は、撮像素子107から光軸上の距離(位置)に応じた撮像素子107の感度の情報である。この受光感度分布情報は、マイクロレンズ305と光電変換部301及び光電変換部302に依存するため、これらに関する情報であってもよい。また、受光感度分布情報は、光の入射角度に対する感度の変化の情報であってもよい。
次に、S307において、CPU121は、S305で記録した静止画データに対応付けて、撮像光学系の特性情報としてのレンズ特性情報(撮影レンズ特性情報)をフラッシュメモリ133とCPU121内のメモリ(RAM)に記録する。レンズ特性情報は、例えば、以下の情報を含む。
・射出瞳に関する情報
・光束をける鏡筒等の枠に関する情報
・撮像時の焦点距離やFナンバーの情報
・撮像光学系の収差に関する情報
・撮像光学系の製造誤差に関する情報
・撮像時のフォーカスレンズ105の位置(被写体距離)の情報
次に、S308において、CPU121は、静止画データに関する情報としての画像関連情報をフラッシュメモリ133とCPU121内のメモリ(RAM)に記録する。画像関連情報は、例えば、撮像前の焦点検出動作に関する情報、被写体の移動に関する情報及び焦点検出精度に関する情報を含む。
次に、S309において、CPU121は、表示器131に、撮像画像のプレビュー表示を行わせる。これにより、ユーザは撮像画像を簡易的に確認することができる。S309で行われる処理が終了すると、CPU121は撮像処理を終了して、処理を図8のS7に進める。
次に、図8のS400でCPU121が実行する被写体追従AF処理の流れについて説明する。図10は図8のS400でCPU121が実行する被写体追従AF処理の流れを示すフローチャートである。
S401において、CPU121は、S2で取得した複数の焦点検出領域のそれぞれで得られた第1焦点検出信号と第2焦点検出信号間の被写体像の像ずれ量を算出し、算出した像ずれ量から焦点検出領域ごとのデフォーカス量を算出する。このように、CPU121は、焦点検出領域ごとのデフォーカス量を算出することにより、デフォーカスマップを取得する。上述の通り、第1実施形態では、撮像素子107上に、水平120分割及び垂直80分割の計9600点配置された焦点検出領域から得られた焦点検出結果の群を、デフォーカスマップと称する。
次に、S402において、CPU121は、被写体検出処理及び追尾処理を行う。上述の被写体検出部140が被写体領域を検出する被写体検出処理を行う。被写体検出処理では、得られた画像の状態によっては、被写体領域を検出することが不可能な場合があるため、そのような場合には、CPU121は、テンプレートマッチングなどの他の手段を用いた追尾処理を行い、被写体の位置を推定する。被写体検出処理及び追尾処理の詳細は後述する。
続いて、S403において、CPU121は、フォーカス領域検出部142に、フォーカス領域を検出するフォーカス領域検出処理を行わせる。フォーカス領域検出処理の詳細は後述する。本発明では、S402では被写体検出部140(第1検出手段)が被写体領域の検出処理(被写体検出処理)を行い、S403ではフォーカス領域検出部142(第2検出手段)がフォーカス領域の検出処理(フォーカス領域検出処理)を行うようになっている。
以下、被写体領域の検出処理とフォーカス領域の検出処理の違いについて説明する。被写体領域の検出処理では、被写体が人物である場合に、その人物の顔の領域や瞳の領域を被写体領域として検出する。また、被写体がバイクなどの乗物である場合に、被写体領域の検出処理では、バイクの車体全体の領域やバイクを運転している運転手のヘルメットの領域を被写体領域として検出する。換言すると、被写体領域の検出処理では、被写体が生物の場合に、生物の体全体や器官を検出し、被写体が乗物などの非生物の場合に、非生物のある機能を有する部品(例えば、乗物のタイヤ、乗物のハンドルなど)を検出する。
一方、フォーカス領域の検出処理では、撮影者がピントを合わせたい領域(以下、「合焦したい領域」と称する)をフォーカス領域として、撮影シーン(被写体の撮影シーンに関する情報)に応じて検出する。例えば、被写体が人物である場合に、顔が、比較的大きく撮影されていて、被写界深度の浅い条件で、斜め前を向いている撮影シーンでは、フォーカス領域の検出処理は前側の目のまつ毛の領域(まつ毛領域)をフォーカス領域として検出する。また、被写体が人物である場合に、顔が、比較的大きく撮影されていて、被写界深度の浅い条件で、片目をつぶっている撮影シーンでは、フォーカス領域の検出処理は開いている瞳の領域をフォーカス領域として検出する。いずれの撮影シーンも、S402で行う被写体領域の検出処理(被写体検出処理)では、瞳の領域が被写体領域として検出される。
第1実施形態では、瞳の領域とは異なる領域で、フォーカス領域としてまつ毛領域を検出するが、まつ毛は隙間が大きく焦点検出が適切に行えない場合がある。そのような場合には、表示はまつ毛領域で行うが、焦点検出は、瞳の領域で行った結果に対して、事前に登録されたオフセット量を加味して、焦点調節を行ってもよい。
また、同様に、オートバイのロードレースにおいて撮影する際には、被写体はバイクとその運転手である場合が多い。レース中のバイクが、撮影者に対して近づく方向にコーナリングしている際には、バイクの車体が、撮影者側(手前側)に倒れ、撮影者に対して遠ざかる方向にコーナリングしている際には、バイクの車体が、撮影者から遠ざかる側(奥側)に倒れる。このような撮影環境では、撮影者の合焦したい領域は、撮影シーンによっては生物である運転手の器官の領域である場合も非生物であるバイクの部品の領域である場合もあり、一意に決まらない。例えば、バイクの車体が手前側に倒れている撮影シーンに、撮影者の合焦したい領域はヘルメットの領域になり、バイクの車体が奥側に倒れている撮影シーンに、撮影者の合焦したい領域はエンジンやガソリンタンク付近のボディの領域になる。これは、ある程度、深度の浅い画像を撮影する際には、被写体の中でピントの合っている領域があまり奥側にあると、不自然さが生じるためである。
S402では、被写体の特定の領域を固定的に検出すると共に、被写体の向きも検出する。S403では、被写体の向き(例えば、バイク車体の傾斜方向)や撮影環境(例えば、被写体サイズ、深度の浅さ)や背景の環境などから、統計的に、撮影者が望む合焦したい領域を検出する。S402で検出された領域は第1局所領域(被写体領域の少なくとも一部に相当する領域)であり、S403で検出される領域は第2局所領域(被写体領域の少なくとも一部に相当する領域)である。また、S402では、被写体検出部140は、被写体が人物の場合にその人物の全身や器官、被写体が乗物の場合にその乗物の部品などの被写体特性を示す領域を被写体領域(第1局所領域)として検出する。S403では、フォーカス領域検出部142は、被写体の絵柄、被写体サイズ、深度の深さ、被写体の傾斜方向などの撮影シーン特性を示す領域をフォーカス領域(第2局所領域)として検出する。撮影シーン特性を示す領域は、合焦対象の特性に応じた領域でもある。
次に、S404において、CPU121はS402で得られた被写体検出領域の情報とS403で得られた合焦したい領域としてのフォーカス領域の情報を用いて、焦点検出領域(合焦させる領域)を設定する焦点検出領域設定処理を行う。S404において、CPU121は局所領域選択手段として機能する。焦点検出領域設定処理の詳細は後述する。
次に、S405において、CPU121は、S404の焦点検出領域設定処理で設定された焦点検出領域の焦点検出結果(デフォーカス量)を取得する。S405で取得する焦点検出結果は、S401で算出された焦点検出結果(S401で取得されたデフォーカスマップ)から、所望の領域に近い焦点検出結果を選択してもよい。また、S405で取得する焦点検出結果は、設定された焦点検出領域に対応する焦点検出信号を用いて、デフォーカス量の算出を新たに行ってもよい。また、デフォーカス量を算出する焦点検出領域は、一つに限らず、周囲に複数配置し、算出してもよい。
次に、S406において、CPU121は、S405で得られたデフォーカス量と、過去に得られたデフォーカス量を用いて、予測AF処理を行う。予測AF処理は、焦点検出を行ったタイミングと、画像の露光を行うタイミングにタイムラグがある場合に、必要となる処理で、焦点検出を行ったタイミングに対して所定時刻後の被写体の位置を予測して、AF制御を行う処理である。予測AF処理の詳細は後述する。
S406で行われる予測AF処理が終了すると、CPU121は被写体追従AF処理を終了して、処理を図8のS5に進める。
次に、図10のS402でCPU121が実行する被写体検出処理及び追尾処理について説明する。図11は図10のS402でCPU121が実行する被写体検出処理及び追尾処理の流れを示すフローチャートである。
S2000において、CPU121は、S2で取得した画像データから検出したデータから、検出したい被写体の種別に応じた辞書データの設定を行う。具体的に、S2000において、事前に設定された被写体の優先度やカメラ100(撮像装置)の設定に基づき、辞書データ記憶部141に記憶された複数の辞書データから、被写体検出処理及び追尾処理で用いる辞書データを選択(設定)する。例えば、複数の辞書データとして、「人物」「乗物」「動物」など被写体を分類して記憶されている。第1実施形態では、選択する辞書データは一つでもよいし、複数でもよい。一つの辞書データを選択する場合は、一つの辞書データが検出可能な被写体を、高頻度で繰り返し検出を行うことが可能になる。一方で、複数の辞書データを選択する場合は、検出被写体としての優先度に応じて、シーケンシャルに辞書データを設定することにより、順次、被写体を検出することができる。
次に、S2001において、被写体検出部140は、S2で読み出した画像データを入力画像として、S2000で設定された辞書データを用いて、被写体検出を行う。このとき、被写体検出部140は、検出した被写体の位置やサイズ、信頼度等の情報を被写体検出領域の情報として出力する。このとき、CPU121は、被写体検出部140が出力した上記被写体検出領域の情報を表示器131に表示させてもよい。また、S2001において、被写体検出部140は、画像データから、階層的に被写体の複数の領域を被写体検出領域として検出する。例えば、S2000で辞書データとして「人物」や「動物」が設定されている場合は、被写体検出部140は「全身」の領域、「顔」の領域、「目」の領域といった複数の領域を被写体検出領域として階層的に検出する。検出された「全身」の領域は被写体の全身を示す全体領域であり、検出された「顔」の領域と「目」の領域は被写体の器官を示す局所領域である。人物や動物の「顔」の領域や「目」の領域などの局所領域は、被写体としてピントを合わせたい領域である一方、周囲の障害物や顔の向きによって検出できない場合がある。本発明では、そのような場合でも、全身の検出を行うことで、被写体をロバストに検出し続けるため、階層的に被写体を検出するように、被写体検出部140を構成している。同様に、S2000で辞書データとして、「乗物」が設定されている場合は、被写体検出部140は乗物の運転手及び乗物の車体を含む全体領域と局所領域としての運転手のヘルメット(運転手の頭部)の領域を被写体検出領域として階層的に検出する。本発明では、辞書データとして「乗物」が設定されている場合に、乗物の運転手及び乗物の車体を含む乗物全体の検出を行うことで、階層的に被写体を検出するように、被写体検出部140を構成している。
次に、S2002において、CPU121は、S2001で得られた被写体検出領域をテンプレートとして、公知のテンプレートマッチング処理を行う。S2で得られた複数枚の画像を用いて、過去の画像で得られた被写体検出領域をテンプレートとして、直前に得られた画像内に、類似の領域を検索する。テンプレートマッチングに用いる情報としては、周知の通り、輝度情報、色のヒストグラム情報、コーナーやエッジなどの特徴点情報など、いずれを用いてもよい。マッチング方法やテンプレート更新方法も種々の方法が考えられるが、いずれの方法を用いてもよい。S2002で行われる追尾処理は、S2001で被写体が検出されなかった場合に、過去の被写体検出データと類似の領域を直前に得られた画像データから検出することにより、安定した被写体検出処理及び追尾処理を実現するために行う。
S2002で行われる追尾処理が終了すると、CPU121は被写体検出処理及び追尾処理を終了して、処理を図10のS403に進める。
次に、図10のS403でCPU121が実行するフォーカス領域検出処理について説明する。図12は図10のS403でCPU121が実行するフォーカス領域検出処理の流れを示すフローチャートである。
S3000において、CPU121は、フォーカス領域検出処理を実施するか否かを判定する。上述の通り、フォーカス領域は被写体内の領域で合焦すべき領域であり、フォーカス領域検出処理は、図11で説明した被写体検出処理により検出された被写体検出領域とは異なる領域(フォーカス領域)を検出する処理である。そのため、合焦すべき領域を被写体内で検出することは不適切な場合や不可能な場合は、フォーカス領域検出処理をスキップする。フォーカス領域検出処理をスキップするのは、S402で検出されている被写体領域のサイズが所定サイズより小さい場合や、撮影設定やライブビュー設定における被写体内の深度差が所定値より小さい場合である。これらの場合には、被写体領域内でピント状態の差(ピントが合っている領域とぼけている領域の差)が視認しにくい状態となるため、フォーカス領域検出処理をスキップする。
被写体領域のサイズが所定サイズより小さい場合は、被写体領域内でピント状態の差が視認しにくい状態となる。そのため、第1実施形態では、S3000において、CPU121は、被写体領域のサイズが所定サイズより小さい場合に、フォーカス領域検出処理をスキップすると判定する。
また、被写体内の深度差は、周知のとおり、被写体の距離と撮影光学系の絞り開口径によって定まるもので、被写体距離が遠いほど、また、絞り開口径が小さいほど、深度が深くなり、被写体領域内で、許容できるボケ状態(ピント状態)である領域が広がる。即ち、被写体領域内で深度内となる領域が広がる。これにより、被写体領域内でピント状態の差が視認しにくい状態となる。そのため、第1実施形態では、S3000において、CPU121は、被写体領域の深度差が所定値より小さい場合に、フォーカス領域検出処理をスキップすると判定する。
以上のように、S3000において、CPU121はフォーカス領域検出処理を実施しないと判定した場合(即ち、フォーカス領域検出処理をスキップすると判定した場合)に、フォーカス領域検出処理を終了して、処理を図10のS404に進める。
一方、S3000において、CPU121はフォーカス領域検出処理を実施すると判定した場合に、処理をS3001に進め、被写体領域の信号取得を行う。即ち、S3001において、CPU121は、被写体検出部140により階層的に検出された、全体領域及び局所領域を含む全ての被写体検出領域の画像データを取得する。上述したように、被写体の全体領域とは、被写体が人物や動物の生物であれば、その生物の全身の領域であり、被写体がバイクなどの乗物であれば、その乗物及び乗物の運転手を包含する領域である。第3検出手段としての被写体検出部140は、S2で得られた画像データに基づき、S402で説明した被写体検出処理及び追尾処理を行った結果として、被写体検出領域として検出された全体領域の検出結果(全体領域の信号)を出力する。被写体検出部140により検出された被写体領域(被写体検出領域)が複数ある場合は、S3002で行われるフォーカス領域検出処理を複数回行う。
次に、S3002において、CPU121は、フォーカス領域検出部142に、フォーカス領域の検出を行うフォーカス領域検出処理を行わせる。上述の通り、フォーカス領域検出部142は、CPU121の指示に基づき、被写体検出部140により検出された被写体領域(被写体検出領域)の被写体の状況に基づき、合焦すべき領域をフォーカス領域として検出する。フォーカス領域検出処理では、フォーカス領域として、一つ領域のみを検出してもよいし、複数の領域を検出してもよい。フォーカス領域として複数の領域が検出された場合には、撮像装置(カメラ100)が検出された複数の領域を自動的に選択したり、撮影者が検出された複数の領域を選択したりすることにより、適切にフォーカスを合わせるべき領域を設定する。このとき、CPU121は、フォーカス領域検出部142が出力した上記フォーカス領域の情報を表示器131に表示させてもよい。
S3002で行われるフォーカス領域検出処理(被写体検出領域が複数ある場合は複数回のフォーカス領域検出処理)が終了すると、CPU121はフォーカス領域検出処理を終了して、処理を図10のS404に進める。
次に、図10のS404でCPU121が実行する焦点検出領域設定処理について説明する。図13は図10のS404でCPU121が実行する焦点検出領域設定処理の流れを示すフローチャートである。
S4000において、CPU121は、S402で行われた被写体検出処理及び追尾処理の出力として得られる被写体検出領域の情報として、被写体の位置やサイズ、信頼度等の情報を取得する。次に、S4001において、CPU121は、S403で行われたフォーカス領域検出処理の出力として得られるフォーカス領域の情報として、フォーカス領域の位置やサイズ、信頼度などの情報を取得する。
次に、S4002において、CPU121は、S4000で得られた被写体検出領域の情報及びS4001で得られたフォーカス領域の情報を用いて、焦点検出領域の設定を行う。焦点検出領域の設定としては、被写体検出領域とフォーカス領域として設定された領域内の焦点検出領域の結果から、信頼性が高く、比較的、至近側の距離にいる被写体を示す焦点検出結果を選択するよう行えば良い。また、焦点検出領域の設定として、得られた被写体検出領域とフォーカス領域として設定された領域内に改めて焦点検出領域を配置し、再度、画像データ及び焦点検出信号を取得して、同様に焦点検出結果の選択を行ってもよい。
被写体検出領域とフォーカス領域から、焦点検出領域の設定に用いる領域の選択については、以下のような方法を用いることができる。被写体検出領域とフォーカス領域の一方のみが検出されている場合には、検出されている領域を焦点検出領域として設定する。被写体検出領域とフォーカス領域のいずれも検出されていない場合には、事前の焦点検出領域と同じ位置に、焦点検出領域を設定する。被写体検出領域とフォーカス領域の両方が検出されている場合には、フォーカス領域が被写体検出領域より優先で、フォーカス領域を焦点検出領域として設定する。また、被写体検出領域とフォーカス領域の両方が検出されている場合には、被写体の撮影シーンに関する情報に応じて、被写体検出領域を焦点検出領域として設定してもよいし、フォーカス領域を焦点検出領域として設定してもよい。設定された焦点検出領域を表示器131に表示するように、カメラ100(撮像装置)を構成してもよい。被写体検出領域、フォーカス領域、焦点検出領域を、区別して表示したり、選択的に表示したりできるように、カメラ100(撮像装置)を構成してもよい。
S4002で行われる焦点検出領域の設定が終了すると、CPU121は焦点検出領域設定処理を終了して、処理を図10のS405に進める。
次に、図14(A)~図14(D)及び図15を用いて、S403で行われるフォーカス領域検出処理により検出されるフォーカス領域について説明する。図14(A)~図14(D)は、被写体としてバイク及び運転手が対象である場合に、撮影者が撮影を行いたいシーンの例を示している。
図14(A)は、バイク及び運転手が、カメラ100(撮像装置)に近づく方向を進行方向として走行中の様子を示している。図14(B)は、バイクおよび運転手が手前に近づきながら、運転手から見て左側にコーナリングしようとしている様子を示している。図14(C)は、運転手から見て左側にコーナリングしようとしているシーンで、バイクの側面から撮影している様子を示している。図14(D)は、運転手から見て右側にコーナリングしようとしているシーンで、バイクの側面から撮影している様子を示している。図14(A)~図14(D)では、S402で検出された被写体領域(被写体検出領域)として、全体領域900と局所領域901を示している。同様に、図14(A)~図14(D)では、S403で検出されたフォーカス領域として、局所領域902と局所領域903を示している。
図14(A)及び図14(B)では、被写体検出の局所領域901として運転手の頭部が検出され、フォーカス領域として局所領域902と局所領域903が検出されている様子を示している。フォーカス領域として複数の領域(局所領域902と局所領域903)が検出されているのは、撮影者の好みや意図によって、どちらにピントを合わせた画像も望まれている場合があるためである。S4002において、CPU121は焦点検出領域の設定を行う際に、運転手優先や近距離優先などの撮影装置の設定や、撮影範囲における検出領域の画像内位置、事前の焦点検出領域の設定との連続性などを鑑みて、フォーカス領域の優先度を決定する。例えば、CPU121は、近距離優先であると決定した場合に、フォーカス領域903を焦点検出領域として設定する。
図14(C)では、被写体検出の局所領域901として運転手の頭部が検出され、フォーカス領域として局所領域902が検出されている様子を示している。図14(C)の撮影シーンでは、バイクの車体はカメラ100(撮像装置)から奥側に傾斜している。そのため、バイクのボディ部である局所領域902と被写体検出領域901は深度差が生じる。このような状況では、近距離優先で、局所領域902にフォーカスの合った画像が好まれる場合が多い。そのため、図14(C)の撮影シーンの場合、本発明のフォーカス領域検出処理では、フォーカス領域として、頭部の局所領域901を検出せず、ボディ部の局所領域902を検出する。
図14(D)の撮影シーンでは、バイクの車体が手前側に傾斜しているため、被写体として重要な器官である頭部領域と近距離であり、合焦したい領域が一致する。そのため、被写体検出により検出された局所領域901とフォーカス領域検出により検出された局所領域902が重畳している様子は図14(D)に示されている。
なお、被写体検出領域がフォーカス領域を包含するようになっている図14(A)~図14(D)を用いて、被写体検出領域とフォーカス領域を説明したが、本発明では、各領域の大小関係は、これに限らない。
このように、本発明においては、撮影時に重要となる器官として頭部や瞳などを検出するだけでなく、撮影シーンによって、被写体検出領域とは異なる領域として、フォーカス領域を検出することにより、より撮影者の意図にあった焦点調節を行うことができる。
フォーカス領域の検出が有効となる撮影シーンとしては、様々な場合が考えられる。図15に、フォーカス領域としての検出が有効となりうるシーンの主な例を示している。
図15に示すように、被写体が「人物」でポートレートの撮影を行う際に、顔の右側がカメラ100(撮像装置)に近い場合は、一般的には、被写体の右目にピントを合わせることが多い。よって、被写体検出では重要器官として右目を検出し、フォーカス領域検出も右目を検出する。本発明のフォーカス領域の検出(図10のS403で行われるフォーカス領域検出処理)を行うことにより、人物の顔が大きく、深度が浅い撮影シーンの場合は、フォーカス領域として右目まつ毛領域を検出する。これにより、よりピント状態が分かりやすいまつ毛のコントラストの高い画像を得ることができる。
また、被写体が「バイク」である場合に、図14(A)~図14(D)で説明した通り、進行方向に対して正面からの撮影では、被写体検出も、フォーカス領域検出もヘルメットを検出し、ヘルメットに焦点調節を行う。車体が手前に傾斜している場合も同様である。一方で、車体が奥側に傾斜している場合には、被写体検出は重要器官としてヘルメット(頭部)を検出するが、フォーカス領域としてエンジン近傍のボディ領域を検出する。
また、被写体が「車(例えば、F1などのレースカー)」である場合に、進行方向に対して正面で、やや上から撮影するシーンでは、被写体検出は、重要器官としてヘルメット(頭部)を検出する。しかしながら、上記撮影するシーンでは、フォーカス領域としては、車体全体を深度内に収めるために、運転席より前方の位置を検出する。これは、F1などのレースカーを正面上から撮影する場合に、車体の奥行があり、ヘルメット(頭部)にピントを合わせると、車体の前方が深度から外れ、ぼけてしまうことに対応するためである。フォーカス領域検出部142を構成するCNN(以下、「フォーカス領域検出用CNN」と称する)として、機械学習する際に、レースカーの画像の撮影方向ごとに、フォーカス領域を設定し学習させることにより、上述の検出を実現する。このような撮影シーンでは、フォーカス領域検出の出力として、必要深度情報を出力することが考えられる。車体全体が深度内に収めるための撮影光学系の絞り値情報などを出力すればよい。フォーカス領域の検出に基づき、焦点検出領域を設定し、必要に応じて絞り値を設定することにより、奥行方向に広がる車全体を深度内に収めた画像を得ることができる。
被写体が「車(例えば、F1などのレースカー)」である場合に、進行方向に対して側面から撮影する撮影シーンでは、被写体検出は、重要器官としてヘルメット(頭部)を検出するが、フォーカス領域としては、車体側面の領域を検出する。これは、車体よりヘルメット(頭部)が奥側にあるためで、バイクの奥側に車体が傾斜している場合と同様の理由である。
次に、フォーカス領域検出を実現するためのフォーカス領域検出用CNNの機械学習と、被写体検出を実現するための被写体検出部140を構成するCNN(以下、「被写体検出用CNN」と称する)の機械学習との差異について説明する。
フォーカス領域検出のための教師データを付与した画像群の収集について説明する。まず、機械学習時の教師データを付与した画像について、収集した画像群に対して被写体検出を行い、所望の被写体が検出された画像を抽出する。検出された被写体領域内で深度差がある画像を、被写体領域内のコントラスト分布や、対応するデフォーカスマップ情報を用いて抽出する。抽出された画像に対して、教師データを付与する。被写体領域内でコントラストが高い部分と浅い部分がある場合や、デフォーカスマップ情報からデフォーカス量が小さい領域と大きい領域がある場合に、深度差があると判定する。一方で、被写体領域内で深度差がない場合(コントラストの差がない場合や、デフォーカス量の分布が所定値以内場合)は、その画像データをネガティブサンプルとして学習する。このような方法で機械学習することにより、被写体検出領域内に深度差がある場合はフォーカス領域検出を行い、深度差がない場合はフォーカス領域検出を行わないフォーカス領域検出用CNNを実現することができる。
抽出された画像に対して、教師データの付与は、1枚ずつ画像を確認しながら、付与してもよいが、被写体領域内でコントラストが高い領域やデフォーカス量が小さい領域が分かる場合は、自動的に教師データを付与することができる。自動的に教師データを付与した後、人手を利用して、教師データの微修正を行ってもよい。
学習データの収集を効率的に行うために、データオーギュメンテーションを行うことができる。周知の方法として、平行移動、拡大縮小、回転、ノイズ付与、ボケの付与などが挙げられる。本発明では、フォーカス検出領域のために有効なデータオーギュメンテーションの方法として、ボケの付与に関して、画像全体もしくは被写体領域全体にボケを付与する周知の方法ではなく、フォーカス領域以外の領域にボケを付与する方法を用いる。これにより、1枚の教師データが付与された画像から、被写体領域内の深度差が異なることに相当する画像データを得ることができる。また、付与するボケの程度を画像ごとに異ならせることにより、教師データとなるフォーカス領域以外の領域のボケ状態を異ならせることができ、異なる撮影光学系の絞り開口径で撮影された場合に対してロバストな学習を行うことができる。ボケの付与の方法としては、フォーカス検出領域からの距離に応じて、付与するボケを大きくする方法や、フォーカス検出領域とそれ以外の領域でボケの付与の有無を異ならせ、境界領域を適切に処理する方法などを用いることができる。また、絞り開口径の変化に応じて、フォーカス領域以外の領域に付与するボケの程度を設定してもよい。これにより、実際に撮影される画像に近い学習データを生成することができる。
また、第1実施形態では、画像データをフォーカス領域検出用CNNに入力したが、フォーカス領域検出用CNNの入力データは画像データに限らない。フォーカス領域検出用CNNの入力データとして、画像データに加えて、コントラストマップやデフォーカスマップなどの深度が類推できる情報もフォーカス領域検出用CNNに入力することにより、より適切にフォーカス領域を検出することができる。その際には、フォーカス領域検出用CNNに機械学習させる時に、画像データに加えて、コントラストマップやデフォーカスマップも用意し、学習を行えば良い。
次に、図10のS406でCPU121が実行する予測AF処理について説明する。図16は図10のS406でCPU121が実行する予測AF処理の流れを示すフローチャートである。
S6000において、CPU121は、被写体が光軸方向に移動する動体であるか否かを判定する。具体的に、CPU121は、過去のデフォーカス検出結果の時系列データを参照し、複数の時系列データの隣接差分が同一符号であるか否かを判定することにより、被写体が光軸方向に移動しているか否かことを判定する。S6000において、CPU121は、被写体が光軸方向に移動する動体であると判定した場合に、処理をS6001に進める。一方、S6000において、CPU121は、被写体が光軸方向に移動する動体でないと判定した場合に、処理をS6012に進める。
S6001において、CPU121は、最新の画像データで検出された被写体の進行方向を算出する。S402で行われる被写体検出処理及び追尾処理により、該被写体の向きが既に検出されている。被写体の進行方向を算出する方法としては、被写体内の局所検出(例えば、顔や目など)を利用する方法と、被写体の姿勢検出結果を利用する方法がある。
まず、被写体内の局所検出(例えば、顔や瞳など)を利用する方法について説明する。被写体内の局所検出とは、被写体が人物である場合は、局所検出領域として、その人物の瞳、頭部や胴体があり、被写体がバイクなどの乗物である場合は、局所検出領域として、その乗物の運転手の頭部(ヘルメット部)がある。被写体が人物のみである場合に、既知の方法について説明する。局所検出領域が瞳であり、両方の瞳が検出されている場合に被写体の進行方向を光軸方向とし、右の瞳のみが検出されている場合に被写体の進行方向を右方向とし、左の瞳のみが検出されている場合に被写体の進行方向を左方向とする。被写体が人物のみでない場合(例えば、バイクも含む場合)には、瞳の位置がわからない場合や、瞳の検出と被写体の進行方向が異なる場合がある。本発明では、そのような場合に、検出被写体全体の範囲を示す矩形枠のサイズと、検出被写体全体の範囲に対する検出被写体内の局所検出領域の位置関係から、検出被写体の進行方向を推定する。ここで、被写体がバイク及び運転手の場合を例として説明する。被写体全体の検出範囲の縦横比の縦が長く横が短いかつ局所検出領域(この例では運転手のヘルメット)の位置が検出被写体全体の範囲の上側にある場合には、被写体は正面を向いているとし、検出被写体の進行方向を光軸方向とする。被写体全体の検出範囲の縦横比の縦が短く横が長いかつ局所検出領域の位置が検出被写体全体の範囲の右上にある場合には、検出被写体の進行方向を右方向とする。以上のように、検出被写体全体の範囲の縦横比や検出被写体の範囲と局所検出領域との位置関係から、検出被写体の進行方向を算出することができる。
上述した方法でも、検出被写体の進行方向が急に変化する場合(例えば、ジャンプ動作のように、検出被写体が光軸方向に近づいている状態から、急に上方向へ移動する場合)に、上述した方法では、検出被写体の進行方向を算出できない可能性がある。その場合には、検出被写体が進行方向を変更する前に、その進行方向を推定する必要がある。
検出被写体の進行方向を推定する推定方法としての被写体の姿勢検出結果を利用する方法について説明する。被写体の姿勢検出には様々な方法があるが、第1実施形態では、画像から先ず被写体の関節部位を、深層学習がされたニューラルネットワークを用いて推定する。推定されたそれらの関節を繋ぎ合わせることによって、被写体の姿勢情報を検出する。予め、各被写体の進行方向を事前に学習させておいてもよいし、フレーム間での各関節の移動量から進行方向を推定してもよい。また、特徴的な進行方向が変わる前の前動作(例えば、ジャンプ前の動作)を事前に学習させておいてもよい。更に、被写体内の局所検出(例えば、顔や目など)と併用して進行方向を推定してもよい。被写体が人物のみの場合には、ジャンプ前の腕や足の関節部位の検出による姿勢情報から、進行方向を推定する。例えば、腕が下がっていることや両足が曲がっていることにより、進行方向が変化すること(例えば、ジャンプ前の姿勢)を推定する。被写体が人物のみでない場合(例えば、バイクも含む場合)でも、人の腕や足の関節部位の位置関係から、検出被写体の進行方向を推定する。バイクも含む場合に図14(D)に示すように、右足が検出され、関節が曲がっている、かつ腰や背骨の関節部位が検出されている場合には、光軸方向かつ右方向に検出被写体が進行していると推定できる。また、バイクも含む場合に、タイヤやハンドルの傾きを検出することによっても、検出被写体の進行方向を推定できる。
光軸方向へ進行しているかの推定は、デフォーカス量から被写体位置を推定して、検出してもよい。
S6002において、CPU121は、被写体の進行方向の将来予測(被写体の将来の進行方向の予測)を行う。具体的に、CPU121は、過去のフレームでの被写体の進行方向の算出結果の時系列変化から、被写体の進行方向を予測する。被写体全体の検出範囲の縦横比(以下、単に「縦横比」とも称する)や被写体全体の検出範囲と局所検出領域との位置関係(以下、単に「被写体領域の位置関係」とも称する)のフレーム間の時系列変化量から、被写体の将来の進行方向を推定してもよい。ここで、被写体がバイク及び運転手の場合を例として説明する。縦横比の変化が、縦が長い状態から横が長い状態に変化し、局所検出領域が被写体全体の検出範囲に対して右上へ位置関係が変化している場合に光軸方向への近づきから、右方向へ進行方向が変化しているため、進行方向が右方向へ変化していると推定できる。この例では、局所検出領域は運転手のヘルメットである。
また、被写体の姿勢推定により被写体の進行方向の予測を行う場合には、例えば、被写体である人物の腕と足の関節部位による姿勢情報や関節部位の時系列変化からジャンプ前の動作を推定し、検出被写体の進行方向が上方向に変化すると予測できる。
以上のように、S6002において、CPU121は、過去の複数のフレームで得られた検出被写体の進行方向算出結果の時系列変化から、検出被写体の将来の進行方向の予測を行う。図18(A)~図18(F)を用いて、検出被写体の将来の進行方向の予測について説明する。図18(A)は検出被写体の進行方向を矢印で示した図である。下方向を光軸方向とし、右側を右方向とする。図18(A)のように検出被写体の進行方向が徐々に変化する場合に、検出被写体全体の範囲の縦横比や局所領域との位置関係から進行方向を算出し、時系列の進行方向の変化から、検出被写体の次の進行方向を予測する。図18(C)のように検出被写体の進行方向が急に変化する場合に、前述の被写体の姿勢推定により、進行方向が急に変化する前の被写体の姿勢を検出し、検出被写体の次の進行方向を予測する。
S6003において、CPU121は、被写体の像面速度が大きいか否かを判定する。被写体の像面速度は被写体の像面位置の時系列変化から算出される。S6003において、CPU121は、被写体の像面速度が大きいと判定した場合に、処理をS6004に進める。一方、S6003において、CPU121は、被写体の像面速度が大きくないと判定した場合に、処理をS6012に進める。S6004において、CPU121は、被写体の進行方向の変化があるか否かを判定し、進行方向の変化があると判定した場合に、処理をS6005に進め、進行方向の変化がないと判定した場合に、処理をS6008に進める。
S6005において、CPU121は、予測演算に使用する履歴データ数を変更する。具体的に、CPU121は、被写体位置を予測する際に使用する過去フレームのデフォーカス量とフォーカス位置から算出される被写体位置のデータの使用する履歴データ数を変更する。図17に被写体の像面位置の時系列変化の例を図示した。図17において、横軸は時間を示し、縦軸は被写体の像面移動量を示し、黒丸は焦点検出した結果に基づいた被写体の像面位置の履歴データを示し、点線は予測処理による予測曲線を示す。履歴データとは過去に取得した、被写体の像面上の位置(被写体の像面位置)とその時間の情報のことである。図18(A)~図18(F)の概念図を用いて説明する。図18(A)は被写体の進行方向を矢印で示した図である。図18(B)は図18(A)に対応する。図18(B)において、横軸は時間を示し、縦軸は被写体の像面位置を示し、実線は被写体の軌跡を示し、黒丸は焦点検出したタイミングの被写体の像面位置を示し、点線はフォーカス移動可能範囲を示す。図18(A)は下側からカメラで撮影していることを想定しており、上下方向が光軸方向に相当し、前述したS6001で行われる被写体進行方向算出とS6002で行われる被写体進行方向予測により推定された被写体の進行方向を示す。図18(A)は被写体の進行方向が光軸方向に近づき、途中で進行方向が右側に変更する例を示す図である。図18(B)において、進行方向が光軸方向の時間範囲を18-b1とし、右方向を含んだ進行方向の時間範囲を18-b2とする。18-b1の時間範囲では、進行方向が変化せず、像面速度変化が大きくないので、予測演算に使用する履歴データ数を変更しない。一方、18-b2の時間範囲では、進行方向が変化し、像面速度変化も生じているため、進行方向が光軸方向の履歴データを使用する数を削減することにより、予測演算に使用する履歴データ数を減少させることで、後述の予測演算での誤差を低減する。
図18(C)と図18(D)に被写体の進行方向が異なる例を示す。図18(C)は被写体の進行方向が光軸方向から急に右方向に変化する例を示す図である。図18(D)は図18(C)に対応する。図18(D)において、横軸は時間を示し、縦軸は被写体の像面位置を示し、被写体の進行方向が光軸方向の時間範囲を18-d1とし、被写体の進行方向が右方向の時間範囲を18-d2とする。図18(C)と図18(D)の例では、被写体の進行方向が急に変化することを被写体進行方向予測により推定し、光軸方向から右方向のみに変化する場合に、方向変化直前に予測演算に使用する履歴データ数をリセットすることで使用しない。これにより、被写体の進行方向が右方向に急に変化しても、被写体の進行方向が光軸方向であるという誤った予測を抑制できる。
更に、図18(E)と図18(F)に被写体の進行方向の変化が異なる例を示す。図18(E)は被写体の進行方向が光軸方向と右方向、光軸方向と左方向を交互に繰り返す例を示す図である。図18(F)は図18(E)に対応する。図18(F)において、横軸は時間を示し、縦軸は被写体の像面位置を示す。図18(E)と図18(F)の例では、被写体の進行方向は変化しているが、被写体の像面速度は変化していないため、予測演算に使用する履歴データ数を変更しない。以上のように、被写体の進行方向に応じて予測演算に使用する履歴データ数を変更することにより、被写体の像面位置の予測誤差を低減できる。
S6006において、CPU121は、フォーカス移動可能範囲を設定する。フォーカス移動可能範囲について、図19を用いて説明する。図19において、横軸は時間を示し、縦軸は被写体の像面位置を示し、実線はフォーカス位置を示し、点線はフォーカス移動可能範囲を示す。被写体が動体の場合には撮影者が被写体から誤ってAF枠を外し、AF枠内が背景となった場合に、フォーカス移動してしまうと、被写体にフォーカスが戻るのに時間がかかってしまう。本発明では、被写体が移動する範囲を被写体の像面移動速度や被写体距離などから推定し、推定した被写体が移動する範囲に基づいてフォーカス移動可能範囲を設定することで、被写体がフォーカス移動可能範囲外となった場合に、フォーカス移動しない。
これにより、フレーミング等によりAF枠内が誤って背景となった場合でも、被写体に対して急にボケたりすることを抑制できる。第1実施形態では、フォーカス移動可能範囲を説明したが、被写体がフォーカス移動可能範囲外となった場合のフォーカスが移動しない、つまり、フォーカス停止時間を変更してもよい。
被写体の進行方向とフォーカス移動可能範囲の設定について、図18(A)~図18(F)を用いて説明する。図18(B)、図18(D)及び図18(F)の点線がフォーカス移動可能範囲を示す。図18(B)では、被写体の進行方向が光軸方向から右方向に変化した場合に、被写体は光軸方向へ移動していないので、光軸方向移動時に対してフォーカス移動可能範囲を小さく設定する。図18(D)でも、被写体の進行方向が光軸方向から右方向に変化する場合又は変化直前に、光軸方向移動時に対してフォーカス移動可能範囲を小さく設定する。
S6007において、CPU121は、焦点検出領域を変更する。具体的に、CPU121は、前述のS6002で行われる被写体進行方向予測により、被写体の光軸方向以外の進行方向に対して、焦点検出領域を広げるまたは焦点検出領域の重心を進行方向に移動させるように、焦点検出領域を変更する。これにより、被写体の進行方向が変化した場合にも、被写体が焦点検出領域外となることを抑制できる。
S6008において、CPU121は、被写体の像面予測位置の演算を行う。具体的に、CPU121は、過去の被写体の像面位置と時刻の履歴データを用いて、多変量解析(例えば、最小2乗法)を行い、予測曲線の式を求めることにより、被写体の像面位置の予測を行う。また、CPU121は、求めた予測曲線の式に静止画撮影の時刻を代入することにより、被写体の像面予測位置を算出する。
S6009において、CPU121は、フォーカス移動速度(フォーカスの像面移動速度)を変更する。具体的に、CPU121は、S6002で得られた被写体進行方向予測結果やS6008で得られた被写体の像面予測位置(予測した被写体の像面位置)と履歴データから、被写体の像面移動速度を推定することにより、フォーカスの像面移動速度を変更する。前述の図18(A)と図18(B)の例では、CPU121は、被写体の像面移動速度が減少していると推定するので、フォーカスの像面移動速度を減少させることにより、フォーカスの像面移動速度を変更する。また、前述の図18(C)と図18(D)の例では、CPU121は、被写体の進行方向が急に変化し、光軸方向に移動しないため、フォーカスの像面移動速度を0に設定することにより、フォーカスの像面移動速度を変更する。このように、S6009において、CPU121は、被写体の進行方向に応じてフォーカスの像面移動速度を設定することにより、フォーカスの像面移動速度を変更する。
S6010において、CPU121は、被写体がS6006で設定したフォーカス移動可能範囲内であるか否かを判定し、被写体がフォーカス移動可能範囲内であると判定した場合に、処理をS6011に進める。一方、S6010において、CPU121は、被写体がフォーカス移動可能範囲内でない(即ち、フォーカス移動可能範囲外である)と判定した場合に、フォーカス移動せず、予測AF処理を終了する。S6011において、CPU121は、予測した被写体位置に相当する像面位置(被写体の像面予測位置)へフォーカスを移動し(フォーカスレンズ105を被写体の像面予測位置へ移動させ)、予測AF処理を終了する。S6012において、CPU121は、焦点検出結果(デフォーカス量)から算出された被写体位置に相当する像面位置(被写体の像面位置)へフォーカスを移動し(フォーカスレンズ105を被写体の像面位置へ移動させ)、予測AF処理を終了する。
第1実施形態で説明した被写体の進行方向に応じて、予測演算時とフォーカス制御時に変更する項目を図20に示す。CPU121は、予測演算時とフォーカス制御時に、被写体の進行方向に応じて、図20に示された「予測演算に使用する履歴データ数」、「フォーカス移動可能範囲」、「フォーカス移動速度」、「焦点検出領域」といった項目を変更する。図20に示されたこれらの項目は、検出被写体の進行方向の変化に応じたテーブルとして、値が撮像装置(カメラ100)内のCPU121のROMに記憶されている。CPU121は、ROMに記憶されている検出被写体の進行方向の変化に応じたテーブルを参照することにより、これらの項目の値を変更する。
本発明では、検出された被写体領域のサイズや被写体領域の位置関係、縦横比を用いて、検出被写体の進行方向を推定する。また、本発明では、時系列に変化する被写体領域のサイズ、被写体領域の位置関係、縦横比や検出被写体の進行方向の情報を用いて、検出被写体の進行方向の将来の変化を予測する。本発明のこれらの技術構成によって、焦点検出結果を用いて同様のことを行う場合と比べて、焦点検出タイミングから画像露光タイミングまでのタイムラグが少なく、より精度良い撮影結果を得ることができる。
例えば、焦点検出結果(デフォーカス量)のみを用いて、被写体が近づいた後、遠ざかることを推定しようとした場合に、一度、被写体が停止した際に、そのまま停止するのか、反転して遠ざかるのかを推定することは難しい。しかし、本発明では、撮影シーン特性としての被写体の絵柄を用いて、複数の絵柄を区別し、検出被写体の進行方向を推定すると共に進行方向の将来予測も行うため、タイムラグが少なく、より精度良い撮影結果を得ることができる。例えば、複数の絵柄は、「向かってくるバイク」の絵柄、「横向きのバイク」の絵柄、「遠ざかるバイク」の絵柄である。
上述したように、第1実施形態では、フォーカス領域が検出された場合に、被写体検出領域に対して優先的に焦点検出を行う焦点検出領域として、フォーカス領域を選択するよう構成したが、本発明では、焦点検出領域の設定方法としては、これに限らない。
例えば、焦点検出領域の設定方法としては、撮影者が設定可能なモードとして、被写体検出領域を優先するモード(第2モード)と、フォーカス領域を優先するモード(第1モード)をCPU121に設けることができる。具体的に、第1モードでは、被写体検出領域(第1局所領域)とフォーカス領域(第2局所領域)の両方を焦点検出領域として選択可能にし、フォーカス領域を優先的に焦点検出領域として設定する。第2モードでは、被写体検出領域(第1局所領域)を焦点検出領域として設定する。このように、被写体検出領域を優先する第2モードとフォーカス領域を優先する第1モードを局所領域選択手段としてのCPU121に設けることにより、被写体における合焦したい領域に関する撮影者の意図の反映を容易にすることができる。
また、上述したように、第1実施形態では、フォーカス領域の検出を機械学習に基づいた領域検出で実現する構成(機械学習されたCNNにより構成され、フォーカス領域の検出を行うフォーカス領域検出部142)について説明した。しかしながら、本発明では、フォーカス領域の検出を実現する構成としては、第1実施形態で説明した構成に限らない。
例えば、本発明では、被写体検出領域の縦横比や、被写体検出領域のサイズ、デフォーカスマップを活用した被写体の奥行情報などの情報(以下、「被写体検出情報」と称する)を用いて、フォーカス領域を設定することができる。被写体が人物の場合は、被写体検出領域のサイズが所定サイズ以上である場合に、被写体検出領域として検出された瞳領域に対して、まつ毛の位置を推定し、推定されたまつ毛の領域をフォーカス領域として設定することができる。被写体がバイクの場合は、デフォーカスマップを活用してバイク車体の傾斜方向を検出し、頭部にフォーカス領域を設定するか、バイク全体に対応する被写体検出領域のボディ位置と推定される領域にフォーカス領域を設定するかを切り替えることができる。同様に、被写体検出領域として、バイク車体のデフォーカス情報とヘルメット(頭部)のデフォーカス情報を用いて被写体の距離の遠近を判定することもできる。更に、被写体検出領域の縦横比を用いて、バイクや車などの乗物の車体が正面から検出されているか、側面から検出されているかを判定し、フォーカス領域を設定するようにしてもよい。
以上のように、被写体検出情報を用いてフォーカス領域を設定する構成を用いることにより、撮像装置内にCNNによるフォーカス領域検出を行う回路(フォーカス領域検出用CNN)を用意する必要がなく、フォーカス領域検出を低コストで実現できる。
<第2実施形態>
次に、図21、図22(A)、図22(B)及び図23(A)~図23(D)を参照して、本発明の第2実施形態について説明する。第2実施形態の構成は第1実施形態の構成と同様であるが、第2実施形態で行われる焦点検出領域設定処理だけが、第1実施形態のS4000~S4002で行われる焦点検出領域設定処理と異なる。第2実施形態で行われる焦点検出領域設定処理では、検出された被写体内の焦点検出候補領域から焦点検出領域を選択するようになっている。
以下、第1実施形態の構成と同様である第2実施形態の構成の説明については省略する。図21は本発明の第2実施形態の焦点検出領域設定処理の流れを示すフローチャートである。
S4100において、CPU121は、取得した画像に対して検出された被写体全体(検出被写体全体)から局所領域(フォーカス領域も含む)の表示を行う。図22(A)と図22(B)に局所領域(フォーカス領域も含む)の表示例を示す。図22(A)と図22(B)に検出被写体としてバイクが検出された例を示す。図22(A)と図22(B)において、点線で囲まれた領域が検出被写体の焦点検出候補となる領域を示し、実線で囲まれた領域が焦点検出候補領域を示す。図22(A)と図22(B)において、点線で囲まれたヘルメットの領域、ヘッドライト部の領域、ボディロゴ部の領域及びマフラの領域は検出被写体の焦点検出候補となる領域である。
S4101において、指定手段としてのCPU121は、検出被写体の局所領域(フォーカス領域も含む)から焦点検出候補領域の選択(指定)を行う。図22(A)と図22(B)で示した局所領域(フォーカス領域も含む)から、ユーザが焦点検出候補領域の指定を行う。図22(A)では、焦点検出候補領域がヘルメットの領域であり、図22(B)では、焦点検出候補領域がボディロゴ部の領域である。焦点検出候補領域の指定方法は、ユーザの指によるタッチ操作やボタン操作で、焦点検出候補領域を変更して選択する。ユーザの視線による焦点検出候補領域の選択でもよい。焦点検出候補領域の変更はSw1がオンされた状態のみでなく、Sw1がオンされた状態になる前やSw2がオンされた状態の連続撮影時に行っても良い。また、S4100で行われる局所領域の事前表示はなく、ユーザの指によるタッチ操作やボタン操作によって指定位置が決定された後に、指定位置に近い局所領域をカメラ100側で選択し、選択した局所領域を焦点検出候補領域としてもよい。
その他の方法として、カメラ100内のメニュー操作から、焦点検出候補領域を選択(指定)する方法を図23(A)~図23(D)で説明する。図23(A)は検出被写体選択の設定画面を示す。図23(A)において、検出可能な被写体(例えば、乗物、動物、人物)から検出被写体を選択する(図23(A)の例では、乗物を検出被写体として選択)。図23(B)において、選択した検出被写体である乗物から、更に乗物の種類を選択する(図23(B)の例では、乗物の種類としてバイクを選択)。図23(C)において、選択した種類の検出被写体であるバイクの向きを指定する(図23(C)の例では、右向きを選択)。図23(D)において、選択した種類の検出被写体内の焦点検出候補領域を選択する(図23(D)の例では、ボディロゴ部を焦点検出候補領域として選択する)。図23(C)と図23(D)は検出被写体の向きに対して、局所領域(フォーカス領域も含む)から異なる焦点検出候補領域を選択してもよい。以上のようにメニュー操作で焦点検出候補領域を選択してもよい。また、各検出被写体のイメージ画像を選択し、焦点検出候補領域となる局所領域を表示して選択できるようにしてもよい。更に、各検出被写体の3次元モデルをイメージ画像として表示し、ユーザ操作により3次元モデルを回転可能にし、検出被写体の向きや姿勢に応じて異なる焦点検出候補領域を指定できるようにしてもよい。
検出被写体の向きに応じて、局所領域(フォーカス領域も含む)の候補となる項目を変更してもよい。例えば、図23(C)でバイクの向きとして、正面を選択したら、焦点検出候補領域として、ヘルメット、ヘッドライト部のみを表示し、右向きを選択したら、図23(D)に示すように、ヘルメット、ヘッドライト部、ボディロゴ部、マフラを表示してもよい。
また、検出被写体の向きに応じて、局所領域(フォーカス領域も含む)の候補となる項目をユーザが設定してもよい。
S4102において、CPU121は、S4101で指定手段により指定された焦点検出候補領域を記録する。記録は局所領域(フォーカス領域も含む)から指定された焦点検出候補領域の画面上の位置関係と、各局所領域(フォーカス領域も含む)のデフォーカス量から光軸方向の位置関係をCPU121内のメモリに記憶してもよい。
S4103において、CPU121は、S4101で指定手段により指定された焦点検出候補領域が選択可能であるか否かを判定し、焦点検出候補領域が選択可能であると判定した場合に、処理をS4104に進める。一方、S4103において、CPU121は、焦点検出候補領域が選択可能でないと判定した場合又は焦点検出候補領域を選択しない場合に、処理をS4105に進める。以下、CPU121は焦点検出候補領域が選択可能であるか否かを判定する際に必要な判定条件を単に「判定条件」と称する。判定条件は、「指定した焦点検出候補領域が検出被写体の進行方向や姿勢変化で見えなくなり、検出できない」場合や「指定した焦点検出候補領域を検出できているが、ユーザが指定したタイミングとは異なり、被写体の姿勢が変化している」場合がある。被写体の姿勢が変化しているか否かの場合は、S4102で記録した時点での、被写体の姿勢や進行方向の結果や各局所領域との位置関係との一致度を比較し、判定してもよい。具体的には、画面上をXY方向とし、光軸方向をZ方向としたXYZ方向のベクトルとし、記録時のXYZ方向のベクトルとの大きさと向きの相関を判定し、相関がある場合に姿勢が変化していないと判定し、相関がない場合に姿勢が変化していると判定する。相関方法はベクトルの内積を計算し、2つのベクトルの各角度を求める。各角度が所定値未満の場合に相関があると判定し、各角度が所定値以上の場合に相関がないと判定する。図23(A)~図23(D)で説明したように、検出被写体の向きに応じた焦点検出候補領域が選択されている場合に、焦点検出候補領域が選択可能であると判定する。一方、検出被写体の向きに応じた焦点検出候補領域が選択されていない場合、焦点検出候補領域が見えない場合、又は、撮影シーンに応じてフォーカス領域として検出されていない場合に、焦点検出候補領域が選択可能でないと判定する。
S4104において、CPU121は、指定手段により指定された焦点検出候補領域を焦点検出領域として設定する。S4104で行われる焦点検出領域の設定が終了すると、CPU121は焦点検出領域設定処理を終了して、処理を図10のS405に進める。S4105において、CPU121は、指定手段により指定された焦点検出候補領域ではなく、カメラ100が自動で選択した局所領域を焦点検出領域として設定する。S4105で行われる焦点検出領域の設定が終了すると、CPU121は焦点検出領域設定処理を終了して、処理を図10のS405に進める。カメラ100による自動での選択方法は、例えば、各局所領域の最も至近の局所領域、又は、予め被写体の形状、姿勢や進行方向に対して優先の局所領域を選択してもよい。
以上、本発明の好ましい実施形態について説明したが、本発明は上述した各実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。本発明は、上述の各実施形態の1以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの1つ以上のプロセッサーがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。