図1は、本発明の実施例1である画像処理装置を搭載した電子機器または撮像装置としてのカメラ100の構成を示す。図1において、第1レンズ群101は、結像光学系としての撮像光学系のうち最も被写体側(前側)に配置され、光軸方向に移動可能に保持されている。絞り兼シャッタ102は、その開口径を調節することで光量調節を行い、また静止画撮像時には露光秒時を制御するシャッタとして機能する。第2レンズ群103は、絞り兼シャッタ102と一体となって光軸方向に移動し、光軸方向に移動する第1レンズ群101とともに変倍(ズーム)を行う。
第3レンズ群(フォーカスレンズ)105は、光軸方向に移動して焦点調節を行う。光学ローパスフィルタ106は、撮像画像の偽色やモアレを軽減するための光学素子である。第1レンズ群101、絞り兼シャッタ102、第2レンズ群103、第3レンズ群105および光学ローパスフィルタ106により撮像光学系が構成される。
ズームアクチュエータ111は、不図示のカム筒を光軸回りで回動させることで、該カム筒に設けられたカムによって第1レンズ群101および第2レンズ群103を光軸方向に移動させて変倍を行わせる。絞りシャッタアクチュエータ112は、絞り兼シャッタ102の光量調節動作やシャッタ動作のために不図示の複数の遮光羽根を開閉方向に駆動する。フォーカスアクチュエータ114は、第3レンズ群105を光軸方向に移動させて焦点調節を行わせる。
フォーカス駆動回路126は、カメラCPU121からのフォーカス駆動指令に応じてフォーカスアクチュエータ114を駆動し、第3レンズ群105を光軸方向に移動させる。絞りシャッタ駆動回路128は、カメラCPU121からの絞りまたはシャッタ駆動指令に応じて絞りシャッタアクチュエータ112を駆動する。ズーム駆動回路129は、ユーザのズーム操作に応じてズームアクチュエータ111を駆動する。
なお、本実施例では、撮像光学系、アクチュエータ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は、画像処理装置として機能する。
撮像素子107は、複数の画素を含む2次元CMOSフォトセンサとその周辺回路からなり、撮像光学系の結像面に配置されている。撮像素子107は、撮像光学系により形成される被写体像を光電変換する。撮像素子駆動回路124は、撮像素子107の動作を制御するとともに、光電変換により生成したアナログ信号をA/D変換して、デジタル信号をカメラCPU121に送信する。画像処理回路125は、撮像素子駆動回路124からのデジタル信号としての撮像データに対して、画素欠陥補正、γ変換、カラー補間およびJPEG圧縮等の画像処理を行って表示用のライブビュー画像や記録用の撮像画像として用いられる画像データを生成する。
表示器(表示手段)131は、LCD等の表示素子を備え、カメラ100の撮像モードに関する情報、撮像前のプレビュー画像、撮像後の確認用画像、焦点検出領域の指標および合焦画像等を表示する。操作スイッチ群132は、メイン(電源)スイッチ、レリーズ(撮影トリガ)スイッチ、ズーム操作スイッチ、撮影モード選択スイッチ等を含み、ユーザにより操作される。フラッシュメモリ133は、撮像画像を記録する。フラッシュメモリ133は、カメラ100に対して着脱が可能である。
次に、図2を用いて撮像素子107の画像配列について説明する。図2は、撮像素子107のうち4画素列×4画素行の範囲の画素配列を光軸方向(z方向)から見て示している。
1つの画素ユニット200は2行×2列に配置された4つの撮像画素を含む。撮像素子107上に多数の画素ユニット200が配列されることで、2次元の被写体像の光電変換を行うことができる。1つの画素ユニット200のうち左上にはR(赤)の分光感度を有する撮像画素(以下、R画素という)200Rが配置され、右上と左下にはG(緑)の分光感度を有する撮像画素(以下、G画素という)200Gが配置されている。さらに、右下にはB(青)の分光感度を有する撮像画素(以下、B画素という)200Bが配置されている。また、各撮像画素は、水平方向(x方向)に分割された第1焦点検出画素201と第2焦点検出画素202を含む。
本実施例の撮像素子107において、撮像画素の画素ピッチPは4μm、撮像画素数Nは水平(x)5575列×垂直(y)3725行=約2075万画素である。また、焦点検出画素の画素ピッチPAFは2μm、焦点検出画素数NAFは水平11150列×垂直3725行=約4150万画素である。
本実施例では、各撮像画素が水平方向に2分割されている場合について説明するが、垂直方向に分割されていてもよい。また、本実施例の撮像素子107は、それぞれ第1および第2焦点検出画素を含む撮像画素を複数有するが、撮像画素と第1および第2焦点検出画素とを別々の画素として設けてもよい。例えば、複数の撮像画素の中に第1および第2焦点検出画素を離散的に配置してもよい。
図3(a)は、撮像素子107の受光面側(+z方向)から見た1つの撮像画素(200R,200G,200B)を示している。図3(b)は、図3(a)の撮像画素のa-a断面を-y方向から見て示している。図3(b)に示すように、1つの撮像画素には、入射光を集光するための1つのマイクロレンズ305が設けられている。
また、撮像画素には、x方向にN分割(本実施例では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に示した画素構造と瞳分割との関係を説明する。図4は、図3(a)に示した撮像画素のa-a断面を+y側から見て示すとともに、撮像光学系の射出瞳を示す。図4では、射出瞳の座標軸との対応を取るために、撮像画素のx方向とy方向とを図3(b)に対して反転させている。
射出瞳のうち+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および第2焦点検出画素201,202)を全て合わせた撮像画素全体で受光可能な瞳領域を示している。
図5は、撮像素子107による瞳分割を示している。第1瞳領域501と第2瞳領域502をそれぞれ通過した一対の光束は、撮像素子107の各画素にそれぞれ異なる角度で入射し、2分割された第1および第2焦点検出画素201,202により受光される。本実施例では、撮像素子107の複数の第1焦点検出画素201からの出力信号を集めて第1焦点検出信号を生成し、複数の第2焦点検出画素202からの出力信号を集めて第2焦点検出信号を生成する。また、複数の撮像画素の第1焦点検出画素201からの出力信号と第2焦点検出画素202からの出力信号とを加算して撮像画素信号を生成する。そして、複数の撮像画素からの撮像画素信号を合成して、有効画素数Nに相当する解像度の画像を生成するための撮像信号を生成する。
次に、撮像光学系のデフォーカス量と撮像素子107から取得される第1焦点検出信号と第2焦点検出信号の位相差(像ずれ量)との関係について、図6を用いて説明する。図中の撮像面600には撮像素子107が配置されており、図4および図5を参照して説明したように、撮像光学系の射出瞳は第1瞳領域501と第2瞳領域502とに2分割されている。デフォーカス量dは、被写体(801,802)からの光束の結像位置Cから撮像面600までの距離(大きさ)を|d|として、結像位置Cが撮像面600より被写体側にある前ピン状態を負符号(d<0)で表すよう定義される。また、結像位置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)は、デフォーカス量dの大きさ|d|の増加に概ね比例して増加する。同様に、第1焦点検出信号と第2焦点検出信号間の像ずれ量p(=光束の重心位置の差G1-G2)の大きさ|p|も、デフォーカス量dの大きさ|d|の増加に概ね比例して増加する。後ピン状態(d>0)でも、第1焦点検出信号と第2焦点検出信号間の像ずれ方向は前ピン状態とは反対となるが、同様である。
このように、デフォーカス量の大きさが増加するのに伴って第1および第2焦点検出信号間の像ずれ量の大きさが増加する。本実施例では、撮像素子107を用いて得られた第1および第2焦点検出信号間の像ずれ量からデフォーカス量を算出する撮像面位相差検出方式焦点検出を行う。
次に、撮像素子107のうち第1および第2焦点検出信号を取得する焦点検出領域について、図7を用いて説明する。図7において、A(n,m)は、撮像素子107の有効画素領域1000に設定された複数(x方向およびy方向に3つずつの計9つ)の焦点検出領域のうちx方向でのn番目、y方向でのm番目の焦点検出領域を示す。焦点検出領域A(n,m)に含まれる複数の第1および第2焦点検出画素201,202からの出力信号から第1および第2焦点検出信号が生成される。I(n,m)は、表示器131において焦点検出領域A(n,m)の位置を表示する指標を示す。
なお、図7に示した9つの焦点検出領域は例に過ぎず、焦点検出領域の数、位置およびサイズは限定されない。例えば、ユーザが指定した位置を中心とした所定の範囲の領域を焦点検出領域として設定してもよい。
図8のフローチャートは、本実施例のカメラ100にAF動作および撮像動作を行わせるAF・撮像処理(画像処理方法)を示す。具体的には、カメラ100に表示器131にライブビュー画像を表示する撮像前から静止画撮像を行うまでの動作を行わせる処理を示す。コンピュータであるカメラCPU121は、コンピュータプログラムに従って本処理を実行する。以下の説明において、Sはステップを意味する。
まずS1では、カメラCPU121は、撮像素子駆動回路124に撮像素子107を駆動させ、撮像素子107から撮像データを取得する。
次にS2では、カメラCPU121は、S1で得られた撮像データのうち、図6に示した9つの焦点検出領域のそれぞれに含まれる複数の第1および第2焦点検出画素から第1および第2焦点検出信号を取得する。また、カメラCPU121は、撮像素子107の全有効画素の第1および第2焦点検出信号を加算して撮像信号を生成し、画像処理回路125に撮像信号(撮像データ)に対する画像処理を行わせて画像データを取得する。なお、撮像画素と第1および第2焦点検出画素と別々に設けた場合は、カメラCPU121は焦点検出用画素に対する補完処理を行って画像データを取得する。
次にS3では、カメラCPU121は、画像処理回路125にS2で得られた画像データからライブビュー画像を生成させ、これを表示器131に表示させる。なお、ライブビュー画像は、表示器131の解像度に合わせた縮小画像であり、ユーザはこれを見ながら撮像構図や露出条件等を調整することができる。
次にS4では、カメラCPU121は、S2で取得した9つの焦点検出領域のそれぞれで得られた第1および第2焦点検出信号間の像ずれ量を算出し、該像ずれ量から焦点検出領域ごとのデフォーカス量を算出する。
次にS5では、カメラCPU121は、操作スイッチ群132に含まれるレリーズスイッチの半押し操作によって、撮像準備動作の開始を指示するスイッチSw1がオンされたか否かを判定する。カメラCPU121は、Sw1がオンされていない場合はS11に進む。一方、Sw1がオンされた場合は、カメラCPU121はS6に進み、合焦状態を得る焦点検出領域(以下、合焦目標領域という)を設定する。ここでは、ユーザが選択した焦点検出領域を合焦目標領域として設定してもよいし、S4で算出した9つの焦点検出領域のデフォーカス量やそれら焦点検出領域の撮像範囲中心からの距離に基づいて、カメラCPU121が自動的に合焦目標領域を設定してもよい。
S6からS7に進んだカメラCPU121は、設定した合焦目標領域で検出されたデフォーカス量に基づいて、フォーカスレンズ105を合焦状態が得られる位置(合焦位置)に駆動する。
次にS8では、カメラCPU121は、再度、S1と同じ撮像データの取得処理とS4と同じ焦点検出処理を行う。
そしてカメラCPU121はS9に進み、レリーズスイッチの全押し操作によって、撮像動作の開始を指示するスイッチSw2がオンされたか否かを判定する。カメラCPU121は、Sw2がオンされていない場合はS5に戻る。一方、Sw2がオンされた場合はS10に進み、画像記録を行うか否かを判定する。本実施例では、連写(連続撮像)中の画像取得処理を、画像記録用と焦点検出用とで切り替える。この切り替えは、交互に行ってもよいし、3回に2回は画像記録用の画像取得処理を行って1回は焦点検出用の画像取得処理を行う等してもよい。これにより、単位時間当たりの撮像回数(撮像画像数)を大きく減らすことなく、高精度な焦点検出を行うことができる。
カメラCPU121は、S10で画像記録を行う場合はS300に進み、撮像サブルーチンを実行する。撮像サブルーチンの詳細については後述する。撮像サブルーチンが終了すると、カメラCPU121はS9に戻ってSw2がオンされているか否か、すなわち連写が指示されているか否かを判定する。
一方、カメラCPU121は、S10で画像記録を行わない、すなわち焦点検出を行うと判定した場合はS400に進み、連写中焦点検出サブルーチンを実行する。連写中焦点検出サブルーチンの詳細については後述する。連写中焦点検出サブルーチンが終了すると、カメラCPU121はS9に戻り、連写が指示されているか否かを判定する。
S11では、カメラCPU121は、操作スイッチ群132に含まれるメインスイッチがオフされたか否かを判別する。カメラCPU121は、メインスイッチがオフされた場合は本処理を終了し、メインスイッチがオフされていない場合はS2に戻る。
次に、図9に示すフローチャートを用いて、図8のS300でカメラCPU121が実行する撮像サブルーチンについて説明する。
S301において、カメラCPU121は、露出制御処理を行い、撮像条件(シャッタ速度、絞り値、撮像感度等)を決定する。この露出制御処理は、ライブビュー画像の画像データから取得した輝度情報を用いて行うことができる。露出制御処理を行う際に用いる画像データを得るタイミング等の詳細については後述する。
そして、カメラCPU121は、決定した絞り値とシャッタ速度を絞りシャッタ駆動回路128に送信して、絞り兼シャッタ102を駆動させる。さらにカメラ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に次の処理を行わせるよう、画像処理回路125を制御する。カメラCPU121は、画像処理回路125に、欠陥画素補正処理後の撮像データに対して、デモザイク(色補間)処理、ホワイトバランス処理、γ補正(階調補正)処理、色変換処理およびエッジ強調処理等の画像処理や符号化処理を行わせる。
そしてS305では、カメラCPU121は、S304での画像処理や符号化処理が行われることで得られた画像データとしての高画素静止画データと、S302で読み出された一方の焦点検出信号とを、画像データファイルとしてメモリ133に記録する。
次にS306では、カメラCPU121は、S305で記録した高画素静止画データに対応付けて、カメラ100の特性情報としてのカメラ特性情報をメモリ133とカメラCPU121内のメモリに記録する。カメラ特性情報は、例えば以下の情報を含む。
・撮像条件(絞り値、シャッタ速度、撮像感度等)
・画像処理回路125で行った画像処理に関する情報
・撮像素子107の撮像画素および焦点検出画素の受光感度分布に関する情報
・カメラ100内での撮像光束のケラレに関する情報
・カメラ100における撮像光学系の取付け面から撮像素子107までの距離の情報
・カメラ100の製造誤差に関する情報。
撮像画素および焦点検出画素の受光感度分布に関する情報(以下、単に受光感度分布情報という)は、撮像素子107から光軸上の距離(位置)に応じた撮像素子107の感度の情報である。この受光感度分布情報は、マイクロレンズ305と光電変換部301,302に依存するため、これらに関する情報であってもよい。また、受光感度分布情報は、光の入射角度に対する感度の変化の情報であってもよい。
次にS307では、カメラCPU121は、S305で記録した高画素静止画データに対応付けて、撮像光学系の特性情報としてのレンズ特性情報をメモリ133とカメラCPU121内のメモリに記録する。レンズ特性情報は、例えば次の情報を含む。例えば射出瞳に関する情報、光束をける鏡筒等の枠に関する情報、撮像時の焦点距離やFナンバーの情報、撮像光学系の収差に関する情報、撮像光学系の製造誤差に関する情報および撮像時のフォーカスレンズ105の位置(被写体距離)の情報を含む。
次にS308では、カメラCPU121は、高画素静止画データに関する情報としての画像関連情報をメモリ133とカメラCPU121内のメモリに記録する。画像関連情報は、例えば、撮像前の焦点検出動作に関する情報、被写体の移動に関する情報、焦点検出精度に関する情報を含む。
次にS309では、カメラCPU121は、表示器131に、撮像画像のプレビュー表示を行う。これにより、ユーザは撮像画像を簡易的に確認することができる。
S309の処理が終わると、カメラCPU121は本撮像サブルーチンを終了して、図8のS9に進む。
次に、図10に示すフローチャートを用いて、図7のS400でカメラCPU121が実行する連写中焦点検出サブルーチンについて説明する。
S401では、カメラCPU121は、図9のS301と同様に露出制御処理を行い、撮像条件を決定する。ここでは、焦点検出のための撮像素子107の露光を行うため、カメラCPU121は、焦点検出に適した絞り値を決定し、その絞り値に応じてシャッタ速度および撮像感度を決定する。
そして、カメラCPU121は、決定した絞り値とシャッタ速度を絞りシャッタ駆動回路128に送信し、絞り兼シャッタ102を駆動させる。さらにカメラCPU121は、撮像素子駆動回路124を通じて露光期間の間、撮像素子107に電荷蓄積を行わせる。この際、絞り兼シャッタ102を駆動せずに、露光時間を電気的に制御するスリットローリングシャッタやグローバル電子シャッタを用いて露光を行ってもよい。
露光制御処理を行ったカメラCPU121は、S402において、撮像素子駆動回路124に、撮像素子107のうち合焦目標領域から撮像信号と第1および第2焦点検出信号のうち一方の焦点検出信号の全画素読み出しを行わせる。図7のS4での焦点検出時には、ライブビュー画像を生成するために水平方向の画素出力に対して加算または間引き等の処理を行って得られた信号を用いるが、S402では全画素の信号を読み出して用いる。これにより、撮像素子107の駆動を、撮像時とライブビュー画像生成時で切り替える必要がないため、切り替え時間を必要とせずに焦点検出信号を得ることができる。また、この時点で図8のS6で選択された時点から被写体が移動していた場合には、被写体検出処理を用いて合焦目標領域を変更すればよい。
次にS403では、カメラCPU121は、画像処理回路125に、S402で読み出されてA/D変換された撮像データに対して欠陥画素補正処理を行わせる。
次にS404では、カメラCPU121は、合焦目標領域で得られた第1および第2焦点検出信号を用いて、合焦目標領域におけるデフォーカス量を算出する。
次にS405では、カメラCPU121は、合焦目標領域のデフォーカス量に応じてフォーカスレンズ105を合焦位置に駆動する。この後、カメラCPU121は、本連写中焦点検出サブルーチンを終了し、図7のS9に進む。
図11のフローチャートは、カメラCPU121が行う画像再生処理を示す。本処理の開始時には、メモリ133に記録された複数の撮像画像が表示器131に表示されているものとする。
まずS1001では、カメラCPU121は、ユーザの操作に応じて、表示器131に表示された複数のサムネイル画像のうち1つを選択し、選択されたサムネイル画像に対応する撮像画像を表示器131に再生表示する。
次にS1002では、着目領域設定手段としてのカメラCPU121は、ユーザの操作に応じて、S1001で再生表示された撮像画像(以下、再生画像という)において着目領域を設定する。
図12(a),(b)を用いて、評価領域設定手段としてのカメラCPU121が再生画像から着目領域(第1の評価領域)を設定する方法について説明する。図12(a)は、再生画像の全体を表示器131に表示した状態を示し、図12(b)は再生画像の一部を表示器131に拡大表示した状態を示している。
ユーザは、操作スイッチ群132の操作または表示器131がタッチパネルである場合のそのタッチ操作を通じて、再生画像のうちピント状態を確認する着目領域A100の位置と大きさを指定する。カメラCPU121は、その指定に応じて再生画像における着目領域を設定する。操作スイッチ群132やタッチパネルとしての表示器131およびカメラCPU121は、領域設定手段に相当する。着目領域A100の設定は、再生画像の全体を表示した図12(a)に示す状態で行ってもよいし、一部を拡大表示した図12(b)に示す状態で行ってもよい。
次にS1003では、画像群設定手段としてのカメラCPU121は、S1002で設定した着目領域に基づいて、再生画像を含んで相互に関連する複数の撮像画像を含む画像群を設定する。すなわち、第1のグルーピングを行う。この際、領域検出手段としてのカメラCPU121は、再生画像(第1の画像)と撮像時刻が近い複数の他の撮像画像(第2の画像)に、ユーザが設定した着目領域と関連性を有する(言い換えれば、類似する)領域が含まれるか否かを判定(検出)する。カメラCPU121は、着目領域と類似する領域が含まれる撮像画像がある場合は、その類似する領域を着目領域に対応する対応領域として認定する。そして、再生画像と対応領域を有する複数の他の撮像画像を含む画像群を設定する。画像群は、後述する第2のグルーピングの対象となる。画像群の設定方法については、後に詳しく説明する。なお、本実施例では、着目領域に対して対応領域が「関連性を有する」ことを「類似する」と表現するが、類似すること以外の関連性がある領域を対応領域としてもよい。
次にS1004では、ピント状態検出手段としてのカメラCPU121は、S1003で設定した画像群における着目領域と対応領域のピント状態を取得(検出)する。すなわち、カメラCPU121は、着目領域と対応領域のそれぞれについてピント状態を検出して、「合焦状態」、「前ピン状態」および「後ピン状態」を判定する。ピント状態とは、デフォーカス量とデフォーカス方向を含む。
そして処理手段としてのカメラCPU121は、S1005に進み、第1のグルーピングで設定された画像群に含まれる複数の撮像画像(再生画像と他の撮像画像)をS1004でのピント状態の検出結果に応じて複数のグループに分類する分類処理を行う。この分類処理を、第2のグルーピングといい、後に詳しく説明する。
次にS1006では、カメラCPU121は、ユーザが操作スイッチ群132にて再生画像を時系列に変更する操作を行ったか否かを判定する。ユーザが該操作を行っていない場合はカメラCPU121はS1007に進み、ユーザが該操作を行った場合はS1008に進む。
S1007では、カメラCPU121は、ユーザが操作スイッチ群132にて再生画像をピント方向に変更する操作を行ったか否かを判定する。ユーザが該操作を行っていない場合はカメラCPU121はS1006に戻ってユーザ操作を待ち、ユーザが該操作を行った場合はS1009に進む。
図13を用いて、S1006およびS1007においてユーザが操作する操作スイッチ群132の例について説明する。図13は、背面から見たカメラ100を示している。表示器131には、再生画像が表示される。カメラ100の背面には、操作ボタンB1~B4が十字状に配置されている。
S1006において再生画像を時系列に変更するユーザ操作は、第1の表示画像変更手段としての操作ボタンB2,B4に対して行われる。例えば、操作ボタンB2が押されることで現在の再生画像よりも時間的に後に取得された撮像画像が新たに再生画像として表示され、操作ボタンB4が押されることで現在の再生画像よりも時間的に前に取得された撮像画像が新たに再生画像として表示される。
S1007において再生画像をピント方向に変更するユーザ操作は、第2の表示画像変更手段としての操作ボタンB1,B3に対して行われる。例えば、操作ボタンB1が押されることで現在の再生画像より無限遠側にピントが合っている撮像画像が新たに再生画像として表示される。そして、操作ボタンB3が押されることで現在の再生画像より至近側にピントが合っている撮像画像が新たに再生画像として表示される。
十字状に配置された操作ボタンB1~B4に代えて、ダイヤルの回転操作によって再生画像を変更するユーザ操作が行われるようにしてもよい。この場合、再生画像を時系列に変更するためのダイヤルと、再生画像をピント方向に変更するためのダイヤルとを別々に設ければよい。また、ダイヤルと操作ボタンを組み合わせて再生画像を時系列およびピント方向に変更してもよい。さらに、操作スイッチ群132ではなく、表示器131のタッチパネルに対するタッチ操作(例えば、左右方向と上下方向のスワイプ操作)によって時系列およびピント方向に変更してもよい。
S1008では、カメラCPU121は、S1005で分類された同一ピント状態の撮像画像のグループの中に、S1006でのユーザ操作に応じて再生画像として変更可能な時系列での次の撮像画像が存在するか否かを判定する。ここで、次の撮像画像を、(以下、次の時系列画像とも称する。次の時系列画像が存在しない場合は、カメラCPU121はS1011に進み、表示器131に次の時系列画像が存在しない旨を表示させる。具体的には、文字により次の時系列画像が存在しない旨を通知してもよいし、ユーザ操作(操作ボタンB2,B4やタッチパネルの操作)がなされても再生画像が変更されないことで次の時系列画像が存在しない旨を通知してもよい。一方、次の時系列画像が存在する場合は、カメラCPU121はS1012に進み、表示器131に該次の時系列画像を表示する。こうしてS1011またはS1012を終えたカメラCPU121は、S1013に進む。
S1009では、カメラCPU121は、現在の再生画像に対してS1007でのユーザ操作に対応するピント方向にてピント状態が異なる撮像画像のグループが存在するか否かを判定する。例えば、現在の再生画像が「合焦状態」のグループに含まれる場合においてユーザ操作が前ピン方向に対応する場合は、「前ピン状態」のグループに撮像画像が存在するか否かを判定する。また、現在の再生画像が「前ピン状態」のグループに含まれる場合においてユーザ操作が前ピン方向に対応する場合は、より「前ピン状態」のグループに撮像画像が存在するか否かを判定する。ユーザ操作に対応するピント状態が異なる撮像画像のグループが存在する場合はS1010に進み、そうでなければS1011に進んで表示器131にピント方向における次の撮像画像が存在しない旨を表示させる。
S1010では、カメラCPU121は、S1007でのユーザ操作に対応するピント方向における次の撮像画像であって、現在の再生画像に対して時系列で最も近い撮像画像を新たな再生画像として表示器131に表示する。
こうしてS1010またはS1011を終えたカメラCPU121は、S1013に進む。
S1013では、カメラCPU121は、本画像再生処理を終了するか否かを判定する。ユーザによって電源をオフにされたり、画像再生状態から撮像状態に移行するよう指示されたりした場合は、カメラCPU121は画像再生処理を終了するためにS1014に進む。また、後述するS1014で説明する撮像画像のグルーピングの再設定を行う場合にも、カメラCPU121はS1013では画像再生処理を終了すると判定してS1014に進む。一方、本画像再生処理を終了せずに継続する場合は、カメラCPU121は、S1006に戻ってユーザ操作を待つ。
S1014では、カメラCPU121は、S1003またはS1005で行った撮像画像のグルーピングに関する処理を改めて行うか否かを判定する。時系列において前後の撮像画像を追加または削減したい場合、ピント状態に応じて撮像画像を分類するグループ数やピント状態の判定を行うための閾値等を変更する場合および着目領域の再設定を行う場合は、S1001に戻る。一方、撮像画像のグルーピングの再設定を行わない場合は、カメラCPU121は本画像再生処理を終了する。
本実施例では、S1014で説明したように着目領域の再設定により、撮像画像(再生画像)のうちピント状態を確認する領域を変更可能としている。このため、撮像時に設定された着目領域(合焦目標領域)に限らず、その後にユーザが望む着目領域でピント状態を確認することができる。また、1つの撮像画像について複数の着目領域でピント状態を確認することも可能である。例えば、乗り物に乗った人物の撮像画像において、人物の顔だけでなく、乗り物にも着目領域を設定することができる。
次に、図14のフローチャートを用いて、図11のS1003でカメラCPU121が行う第1のグル―ピングのサブルーチンについて説明する。本サブルーチンでは、カメラCPU121は、S1002で設定された着目領域に基づいて相互に関連する画像群を設定する。
S3001では、カメラCPU121は、検出画像群を設定する。検出画像群の設定方法としては種々な方法があるが、S1002で設定された着目領域に対応する対応領域を有する複数の撮像画像を検出画像群として設定する。例えば、S1002で設定された着目領域および対応領域を有する複数の撮像画像が連写により取得されたものであれば、対応領域を有する複数の連写撮像画像(連写画像群)を検出画像群として設定する。
また、S1002で設定された着目領域を有する撮像画像の撮像時間に対して所定範囲内(例えば、10分以内)の時刻を撮像時間とする複数の撮像画像を検出画像群として設定してもよい。さらに、連写中の焦点調節の追従状況や露出制御状況によって検出画像群を設定してもよい。例えば、焦点調節をサーボ制御する、いわゆるサーボAFを行っている間の撮像により取得された複数の撮像画像を検出画像群と設定してもよい。上述した連写中の焦点調節の追従状況や露出制御状況等、一度の画像記録指示により記録されたことを識別するために複数の連続撮像画像に付与される情報が連続撮像情報に相当する。次にS3002では、カメラCPU121は、検出画像群に含まれる各撮像画像に対して対応領域を有するか否かを判定する。そして、対応領域を有する撮像画像において、その対応領域の撮像画像内での位置および大きさを検出する。この判定と検出には、テンプレートマッチングを用いる。テンプレートマッチングにおける被写体モデル(テンプレート)を着目領域とし、この着目領域の画素パターンを特徴量として扱う。
特徴量T(i,j)は、テンプレート内の座標を(i,j)、水平画素数をW、垂直画素数をHとすると、式(2)で表現される。
T(i,j)={T(0,0),T(1,0),...,T(W-1,H-1)} (2)
対応領域を探索する撮像画像において、マッチングを行う範囲(探索範囲)は、該撮像画像の全領域とする。探索範囲における座標は(x,y)で表現する。マッチングの評価値を取得するための部分領域を設定し、テンプレートの特徴量と同様に、各部分領域の輝度信号を特徴量S(i,j)とする。特徴量S(i,j)は、部分領域内の座標を(i,j)、水平画素数をW、垂直画素数をHとすると、式(3)で表現される。
S(i,j)={S(0,0),S(1,0),...,S(W-1,H-1)} (3)
テンプレートと部分領域との類似性を評価する演算方法として、差分絶対和、いわゆるSAD(Sum of Absolute Difference)値を用いる。SAD値は、式(4)により算出される。
部分領域を探索範囲である撮像画像の全領域の左上から順に1画素ずつずらしながら、SAD値V(x,y)を演算する。演算されたV(x,y)が最小値を示す座標(x,y)がテンプレートと最も類似した位置を示す。つまり、最小値を示す位置が探索範囲において目的とする追尾対象の被写体が存在する可能性の高い位置となる。ここでは、特徴量として輝度信号の1次元の情報を用いる例を示したが、明度・色相・彩度の信号等の3次元の情報を特徴量として扱ってもよい。また、ここではマッチングの評価値としてSAD値を用いる場合について説明したが、正規化相互相関、いわゆるNCC(Normalized Correlation Coefficient)等の異なる演算方法により得られた値を用いてもよい。
最も類似した位置におけるSAD値V(x,y)が所定の値より大きい場合には、検出対象の撮像画像は対応領域を有さないと判定する。これにより、S3001で設定した検出画像群を再設定することができる。
次にS3003では、カメラCPU121は、再生画像と検出画像群のうち対応領域を有する撮像画像を画像群として設定し、該画像群の各撮像画像に対応領域の位置と大きさ(範囲)の情報を付与する。S3003を終えたカメラCPU121は、本サブルーチンの処理を終了する。
次に、図15のフローチャートを用いて、図11のS1004でカメラCPU121が着目および対応領域のピント状態を検出するサブルーチンについて説明する。本サブルーチンでは、カメラCPU121は、S1003で設定された画像群に含まれる各撮像画像における着目領域または対応領域のピント状態を検出する。
S4001では、カメラCPU121は、画像群に含まれる各撮像画像における第1の評価領域としての着目または対応領域の位相差(像ずれ量)を検出する。上述したS302で説明したように、本実施例のカメラ100は通常の撮像画像を記録する際に、第1および第2焦点検出信号のうち一方も記録する。カメラCPU121は、記録された一方の焦点検出信号と、撮像信号から該一方の焦点検出信号を差し引いて得られる他方の焦点検出信号との間の像ずれ量を検出する。
S4001で行う像ずれ量検出は、ライブビュー画像を表示している状態(ライブビュー状態)に行う像ずれ量検出と算出方法は同じであるが、用いる焦点検出信号の画素ピッチが異なる。ライブビュー画像の生成には、水平方向の画素出力に対して加算または間引き等の処理を行って得られる信号が用いられるが、S4001では高画素静止画を記録するために全画素読み出しされた撮像信号を用いるため、より細かい画素ピッチの信号を得る。このため、S4001では、より高精度な像ずれ量検出が可能となる。
また、ライブビュー状態での焦点検出タイミングと記録用撮像タイミングとが異なるため、必ずしもこれらのタイミングでピント状態が等しいとは限らない。撮像タイミングにおけるピント状態をライブビュー状態での焦点検出結果から予測することは可能であるが、誤差をなくすことは困難である。一方、複数の視点の位置と該視点からの視線方向の情報(複数の視点に関する情報:視点情報)を含む記録用撮像画像の撮像信号を用いた像ずれ量検出は、タイムラグなく記録用撮像画像のピント状態を検出することができる。
さらにS4001では、カメラCPU121は、各撮像画像において検出した像ずれ量を、各撮像画像を取得した際のカメラ特性情報(S306で取得)やレンズ特性情報(S307で取得)を用いて、デフォーカス量や被写体距離に換算する。デフォーカス量に換算する際には、光束範囲情報(射出瞳の光軸上の位置、撮像光学系のFナンバーおよび枠に関する情報)と焦点検出画素の受光感度分布情報とを用いて、光束範囲情報を考慮した受光感度分布情報を算出する。カメラCPU121は、対の焦点検出画素の受光感度分布情報から、これら受光感度分布情報を示す座標上での対の代表値(代表座標)を算出する。そして、該対の代表値の間隔Wと撮像素子107から受光感度分布情報を示す光軸上の位置までの距離Lとを用いてL/Wを算出し、検出された像ずれ量にL/Wを乗じることによりデフォーカス量を算出する。なお、対の代表値は、受光感度分布の重心座標でもよいし、受光感度分布の範囲の中心座標でもよい。
また、記録用撮像画像の取得時に撮像光学系のFナンバーと射出瞳距離に応じた変換係数を記憶しておき、これを像ずれ量に乗じることでデフォーカス量を算出してもよい。
さらに、デフォーカス量を距離情報に換算する際には、撮像時のフォーカスレンズ105の位置に対応付けられた被写体距離情報Dと焦点距離情報fとから撮像倍率(横倍率)Bを求め、デフォーカス量をB2倍する。これにより、被写体距離上でのデフォーカス量(距離情報)を算出することができる。被写体距離は、被写体距離情報Dに対して被写体距離上でのデフォーカス量を加減算することにより求められる。
次にS4002では、信頼性判定手段としてのカメラCPU121は、S4001で画像群に含まれる全ての撮像画像の着目および対応領域(第1の評価領域)から得られたデフォーカス量の信頼性が高いか否かを判定する。
本実施例において、画像群に含まれる複数の撮像画像は連写によって得られたものであるため、それらの撮像タイミングにより被写体の位置(像高)が大きく変化したりレンズ状態(フォーカスレンズ位置や絞り値等)が大きく変化したりする場合がある。そのような場合に、着目および対応領域の信号量が不足して安定的な像ずれ量の検出が行えない場合がある。このため、カメラCPU121は、各撮像画像において像ずれ量を検出する際の第1および第2焦点検出信号間の相関量の極小値の大きさや該極小値近傍の相関量の変化の大きさを用いて、デフォーカス量の信頼性を判定する。具体的には、カメラCPU121は、相関量の極小値が小さい場合や極小値近傍の相関量の変化が大きい場合には、信頼性が高いと判定する。
カメラCPU121は、画像群の中にデフォーカス量の信頼性が低い撮像画像が含まれる場合は、画像群の各撮像画像に対して着目および対応領域である第1の評価領域と少なくとも一部が異なる第2の評価領域を設定する。そして、該第2の評価領域でデフォーカス量を算出する。
なお、S4002では相関量の大きさや相関量の変化の大きさにより着目および対応領域におけるデフォーカス量の信頼性を判定したが、他の判定方法を用いてもよい。例えば、着目および対応領域のコントラストの情報や所定の空間周波数の信号量に関する情報を用い、コントラストが低い場合や信号量が少ない場合に信頼性が低いと判定してもよい。
S4002で着目および対応領域(第1の評価領域)でのデフォーカス量の信頼性が低いと判定したカメラCPU121は、S4003に進む。S4003では、カメラCPU121は、再生画像の着目領域(第1の評価領域)の近傍に第2の評価領域を設定する。この際、カメラCPU121は、第1の評価領域よりも高精度なデフォーカス量の検出が見込めるように第2の評価領域を設定する。図16は、図12(b)に示した着目領域A100に対して、その少なくとも一部が異なるように設定された第2の評価領域A101を示している。
図16では、被写体の目の領域を中心とする着目領域A100に対して、髪の生え際の領域を含む第2の評価領域A101を設定することにより、よりコントラストが高い信号を取得してより高精度なデフォーカス量を検出する。第2の評価領域は、複数設定してもよい。この場合、複数の第2の評価領域のそれぞれで得られたデフォーカス量の平均値を算出することにより、被写体の傾きが変化した場合等でもより安定的に高精度なデフォーカス量を検出することができる。
次にS4004では、カメラCPU121は、S3002と同様に、画像群に含まれる再生画像以外の複数の撮像画像が第2の評価領域に類似する対応領域を有するか否かを判定し、対応領域を有する場合は該対応領域の位置とサイズを検出する。
さらにS4005では、カメラCPU121は、S4001と同様に、第2の評価領域と対応領域において、像ずれ量、デフォーカス量および被写体距離を検出(算出)する。
次にS4006では、カメラCPU121は、S4002と同様に、第2の評価領域および対応領域で得られたデフォーカス量の信頼性が高いか否かを判定する。第2の評価領域または対応領域で得られたデフォーカス量の信頼性が低いと判定した場合は、カメラCPU121はS4003に戻り、改めて第2の評価領域を設定する。なお、第2の評価領域を保持しつつ、該第2の評価領域とは少なくとも一部が異なる第3の評価領域を設定してもよい。
一方、S4006で第2の評価領域で得られたデフォーカス量の信頼性が高いと判定したカメラCPU121はS4007に進む。S4007では、カメラCPU121は、第2の評価領域で得られたデフォーカス量および被写体距離により、S4001にて第1の評価領域で得られたデフォーカス量および被写体距離を更新する。
図17を用いて、デフォーカス量の更新方法について説明する。図17は、第1の評価領域A100で得られたデフォーカス量(A100_2~A100_5)と第2の評価領域A101で得られたデフォーカス量(A101_2~A101_5)を撮像順に時系列に示している。横軸は撮像時刻の順序を示しており、縦軸は検出されたデフォーカス量を示している。図中の黒点A100_2~A100_5は、第1の評価領域A100で得られたデフォーカス量を示しており、白丸A101_2~A101_5は第2の評価領域A101で得られたデフォーカス量を示している。
ここでは、例として、第1の評価領域から得られたデフォーカス量A100_3の信頼性が低い場合のデフォーカス量の更新方法について説明する。デフォーカス量A100_3の時間的前後に得られたデフォーカス量A100_2,A100_4はともに信頼性が高い。また、第2の評価領域で得られたデフォーカス量A101_2,A101_3,A101_4も信頼性が高い。このような場合、デフォーカス量A100_3に対して、更新されたデフォーカス量A100_3Cは、以下の式(5)により算出される。
A100_3C=A101_3+(A100_2+A100_4-A101_2-A101_4)/2 (5)
式(5)では、信頼性が高いデフォーカス量A101_3を、その前後において第1および第2の評価領域A100,A101で得られたデフォーカス量の差分の平均値でオフセットする。そして、オフセットしたデフォーカス量で信頼性が低いデフォーカス量A100_3を更新することで、信頼性がある程度高いデフォーカス量A100_3Cを得る。
図17は、デフォーカス量A100_5の信頼性が低いことも示している。式(5)で説明した通り、デフォーカス量A100_5の時間的前後で得られたデフォーカス量を利用してデフォーカス量を更新することで、信頼性がある程度高いデフォーカス量A100_5Cを得る。
本実施例では、2つの評価領域で得られた評価結果(デフォーカス量)の差を利用して信頼性が低い評価結果を更新したが、該差をより多くの評価領域で得られた評価結果から得てもよい。ただし、連写中に被写体の状況(距離や大きさ)が大きく変化する場合は、2つの評価領域で得られるデフォーカス量の差も大きく変化するため、より時間的に近いデフォーカス量の差を用いることが好ましい。また、図17ではデフォーカス量の更新について説明したが、被写体距離を更新してもよい。2つの評価領域で得られる評価結果としての被写体距離の差は連写中の被写体の状況の変化に左右されにくいため、より精度良く被写体距離を更新することができる。
また、本実施例では、着目領域(第1の評価領域)の大きさによらず第2の評価領域を設定する場合について説明したが、着目領域の大きさに応じて第2の評価領域を設定する場合を限定してもよい。着目領域が小さい場合は、被写体が小さいため、評価領域内に明暗差を持つエッジが存在する確率が高い。一方、着目領域が大きい場合は、被写体が大きいため、評価領域内に明暗差を持つエッジが存在する確率が低くなる。このため、着目領域が大きい場合にのみ第2の評価領域を設定することにより、第2の評価領域に関する演算量を低減しつつ、高精度なデフォーカス量を検出することができる。
S4007を終えたカメラCPU121は、S4008に進み、画像群に含まれる各撮像画像のピント状態、各撮像画像の撮像時の絞り値等の撮像条件や被写体距離および後述する深度関連情報を各撮像画像に紐付けて記憶する。そして、本サブルーチンを終了する。
次に、図18のフローチャートを用いて、図11のS1005でカメラCPU121が行う第2のグルーピングのサブルーチンについて説明する。本サブルーチンでは、カメラCPU121は、S1003で設定した画像群をS1004で検出されたピント状態に基づいて分類する。
S5001では、カメラCPU121は、画像群に含まれる複数の撮像画像から深度関連情報を取得する。深度関連情報とは、焦点深度を算出するために用いられる、各撮像画像を取得した際の許容錯乱円径と絞り値の情報である。一般に許容錯乱円は、画像サイズや鑑賞距離にもよるが、その直径以上のボケを鑑賞者が認識することができるサイズである。本実施例では、画像サイズに応じた許容錯乱円径としてεを設定する。絞り値をFとすると、焦点深度は、±εFで表される。カメラCPU121は、各撮像画像における焦点深度を算出する。
次にS5002では、カメラCPU121は、ピント状態を判定するための閾値(以下、判定閾値という)を設定する。具体的には、カメラCPU121は、判定閾値(所定デフォーカス量)として、前ピン方向の判定閾値(負の第1の閾値)Th1=-εF/2と後ピン方向の判定閾値(正の第2の閾値)Th2=+εF/2を設定する。画像群のピント状態等に応じて、ユーザ操作に応じて判定閾値を変更できるようにしてもよい。判定閾値の変更方法については後述する。
次にS5003では、カメラCPU121は、画像群からピント状態を判定する撮像画像(以下、判定画像という)を設定する。この際、カメラCPU121は、判定画像が事前に設定されていた場合は、撮像時刻順における次の撮像画像を新たな判定画像として設定する。一方、判定画像が事前に設定されていなかった場合は、カメラCPU121は、画像群に含まれる複数の撮像画像のうち撮像時刻が最も古いものを判定画像として設定する。
次にS5004では、カメラCPU121は、判定画像の着目領域または対応領域のデフォーカス量(ピント状態)が判定閾値Th1より小さいか否かを判定する。カメラCPU121は、デフォーカス量が判定閾値Th1より小さい場合はS5006に進み、判定画像を第1のグループ(前ピングループ)Gr.1と判定する。
一方、デフォーカス量が判定閾値Th1以上である場合は、カメラCPU121はS5005に進み、着目領域のデフォーカス量が判定閾値Th2より小さいか否かを判定する。カメラCPU121は、デフォーカス量が判定閾値Th2より小さい場合はS5007に進み、判定画像を第2のグループ(合焦近傍グループ)Gr.2と判定する。さらに、着目領域のデフォーカス量が判定閾値Th2以上である場合は、カメラCPU121はS5008に進み、判定画像を第3のグループ(後ピングループ)Gr.3と判定する。
S5006、S5007およびS5008のいずれかを終えたカメラCPU121は、S5009に進み、画像群に含まれる全ての撮像画像についてピント状態の判定を終えたか否かを判定する。カメラCPU121は、全撮像画像のピント状態の判定を終えていない場合はS5003に戻って次の撮像画像に対する判定を行い、全撮像画像のピント状態の判定を終えた場合は本サブルーチンを終了する。
本実施例では、連写情報、着目領域の有無および撮像時刻を用いて設定された画像群において1つの撮像画像の着目領域に対応する他の撮像画像の対応領域を検出し、該着目および対応領域のデフォーカス量を検出する。そして、各撮像画像で検出されたデフォーカス量(大きさと方向)と焦点深度から各撮像画像のピント状態を判定する。これにより、画像再生時に時系列に再生画像を変更するだけでなく、ピント状態を変更することができる。
本実施例では、着目領域または対応領域のピント状態のバラつきが撮像時の焦点調節精度のばらつきによって生じることを想定して、ピント状態による撮像画像のグルーピングを行う。撮像時に被写体が激しく移動する場合や被写体のコントラストが低い場合等のように焦点調節精度のばらつきが大きい環境では、ピント状態によるグルーピングが有効に機能する。しかし、高い焦点調節精度が得られる環境ではピント状態を変更できるほど着目領域または対応領域のピント状態がばらつかないことが想定される。そのような場合でも、ユーザが意図する合焦状態を得たい着目領域とカメラ100において設定されている焦点検出領域とに差がある場合があり、この差によって着目領域が合焦状態ではない画像が安定的に得られる場合がある。
このような状況において、ユーザが撮像後にピント状態を選択したい場合には、焦点調節精度のばらつきを期待せずに、意図的にピント状態が異なる複数の撮像画像を取得すればよい。例えば、焦点深度に合わせて、前ピン状態、合焦状態および後ピン状態で連続的に撮像することで、ピント状態が異なる複数の撮像画像を取得することができる。
また、本実施例では、図11のS1002で着目領域を設定した後に、S1003で第1のグルーピングを行った。しかし、第1のグルーピングの後に、着目領域の設定をより容易にできる撮像画像を選択して表示し、その選択された撮像画像にて着目領域を設定してもよい。この場合、第1のグルーピングは、着目領域の有無ではできないが、撮像時刻や連写撮像画像であるか等を考慮して行えばよい。着目領域の設定がより容易な撮像画像としては、被写体がより大きく映っている画像、合焦している被写体までの距離がより近い画像、絞りがより開かれた状態での撮像により取得された画像等、より焦点深度が浅い画像を選択するとよい。これにより、着目領域の設定やピント状態の確認が容易な撮像画像を用いて、着目領域を設定することができる。
次に、ここまで説明した処理における画像群の各撮像画像の判定方法や再生画像の選択方法について、より具体的に説明する。
図19は、連写により得られた複数の撮像画像のうち図12(a)に示すように設定された着目領域と類似の対応領域を含む撮像画像として、第1のグルーピングの結果として得られた画像群を示している。Frame1からFrame15までの画像は、撮像時刻が古い順の撮像画像を示している。図12(a)に示した撮像画像は、Frame10に相当する。Frame10の撮像画像は、被写体距離が近いために焦点深度が浅く、被写体として顔だけでなく体全体が映っている画像であるため、着目領域の設定に適した画像である。
図20は、図19に示した画像群に対して、S1005で第2のグルーピングが行われた結果を示している。各撮像画像の左上にピント状態を示すグループ名(分類処理の結果を示す情報)が、前ピン(Gr.1)、合焦近傍(Gr.2)、後ピン(Gr.3)として示されている。
図21(a),(b)は、第2のグルーピングの後のFrame10の撮像画像が表示器131に再生表示されている様子を示している。表示処理手段としてのカメラCPU121は、表示器131に再生表示する画像を変更する画像変更処理を行う。図21(a)ではFrame10の撮像画像の全体が表示され、図12(b)ではその一部が拡大表示されている。Frame10の撮像画像の左上にはピント状態を示すグループ名(Gr.2)が表示されている。
図21(a)のようにFrame10の撮像画像が表示された状態でS1012の処理を行ったカメラCPU121は、第1の画像変更処理として、ピント状態が同じである(ピント状態が同じグループに属する)次の時系列画像を表示器131に表示させる。例えば、図13に示した操作ボタンB2が操作された場合はFrame8の撮像画像が表示され、操作ボタンB4が操作された場合はFrame12の撮像画像が表示される。
また、Frame10の撮像画像が表示された状態でS1010の処理を行ったカメラCPU121は、第2の画像変更処理として、撮像時刻が近い異なるピント状態(ピント状態が異なるグループに属する)の撮像画像を表示器131に表示させる。例えば、図13に示した操作ボタンB1が操作された場合はFrame11の撮像画像が表示され、操作ボタンB3が操作された場合はFrame9の撮像画像が表示される。
このように、本実施例では、連写等によって構図が類似する多数の撮像画像が取得された場合に、所望の構図(撮像時刻)の撮像画像や所望のピント状態の撮像画像の選択および再生を迅速に行うことができる。また、図19および図20に示した複数の撮像画像を、ユーザが第1のグルーピングを確認するためにサムネイル画像として表示器131に一括表示してもよい。
次に、図22(a),(b)を用いて、S5002で設定される判定閾値を変更する方法について説明する。図22(a),(b)は、第1のグルーピングが行われた画像群の着目領域および対応領域のピント状態を示す。第1の尺度としての横軸は撮像時刻の順序を示しており、第2の尺度としての縦軸は着目領域および対応領域のピント状態を焦点深度単位で示している。図中の15個の黒点は、図20に示したFrame1からFrame15の撮像画像のピント状態を示している。
また、図の左上には、ユーザにより設定された着目領域とその近傍を含む被写体領域が着目領域を設定した撮像画像から切り出されて示されている。また、図の右側には、ピント状態を示すグループ名(Gr.1,Gr.2,Gr.3)が示されているとともに、各グループに属している撮像画像の数が示されている。例えば、合焦近傍グループGr.2には、15の撮像画のうち7つの撮像画像が属している。破線は各グループ間の境界を示す。
S5002においてユーザが判定閾値を変更する場合には、表示器131に図22(a),(b)のような表示を行えばよい。このような表示を行うことにより、ユーザは、画像群内でのピント状態のばらつきを直感的に確認することができる。また、各グループにいくつの撮像画像が属するかも容易に確認することができる。
判定閾値が変更された際に、図中の破線の表示位置が変更されることにより、各グループにいくつの撮像画像が属するかをリアルタイムに確認しながら操作を行うことができる。評価更新手段としてのカメラCPU121が行う判定閾値の変更の指示は、タッチパネルの操作や専用に設けられた操作部材の操作によって行われるようにすればよい。
図22(a),(b)は、ユーザ操作によって判定閾値が変更した際の表示器131上での表示の変化を示している。図22(a)に対して、図22(b)は、破線(Th1,Th2)の位置が垂直方向に移動している。また、各グループに属する撮像画像の数が変化している。
また、図22(a),(b)のような表示において、第1のグルーピングを変更可能に構成してもよい。その場合には、横軸の方向に設定可能な境界を設け、ユーザがその境界を操作可能にすればよい。
本実施例では、ピント状態が異なる撮像画像を図22(a),(b)のように縦軸上に異なる位置に散布図としてプロットする。これにより、画像群に含まれる複数の撮像画像の撮像時刻(第1の尺度)とピント状態(第2の尺度)に関する分布を視認し易くすることができる。画像群に含まれる複数の撮像画像を分類する指標は、ピント状態に限らない。例えば、被写体が人の顔である場合に笑顔の度合いを数値化して縦軸に示してもよい。その際に、笑顔の程度が微笑みから大笑いであるかによって、縦軸上の異なる位置にプロットし、境界線を表示してもよい。これにより、ユーザは、好みの笑顔の画像がどの程度存在するかやグループをどのように分ければよいかを容易に認識することができる。ピント状態や笑顔の程度に限らず、被写体の顔の向き(正面、右向き、左向き等)によって撮像画像を分類してもよい。
また本実施例では、図22(a),(b)に示したようにピント状態が異なるグループのそれぞれいくつの撮像画像が属するかをユーザに分かりやすく表示する。これにより、ユーザがグルーピングの境界を変更する際に、グルーピングによりどのグループにいくつの撮像画像が属するかを確認することができる。
また、撮像画像を分類する指標が撮像時刻、ピント状態および笑顔の程度のように3つある場合は、使用する2つの指標を切り替えてグループを表示してもよいし、プロットされる点の色や大きさを変えることで3つの指標を使用してグループを表示してもよい。
ユーザが判定閾値の設定を終えると、その設定に基づいて図20に示すような複数の撮像画像のサムネイル表示や、図21(a)に示すような1つの撮像画像の単独表示を行えばよい。また、グループの選択により、選択れたグループ内の撮像画像をサムネイル表示したり単独表示したりしてもよい。
以上説明したように、本実施例によれば、複数の撮像画像に対して、ユーザの意図に応じた着目領域および対応領域でのピント状態の確認を容易に行うことを可能とすることができる。
(変形例1)
ライトフィールド情報を用いたリフォーカス技術が知られている。本実施例では水平方向における2分割に対応するライトフィールド情報を得る構成である。これに対し、さらに水平方向、さらには垂直方向により多くの分割数に対応するライトフィールド情報を得られるように構成することで、リフォーカス処理によってピント状態を変更することができる。
図23を用いて、リフォーカス処理によるピント状態の変更について説明する。図23は、第1のグルーピングがなされた画像群に含まれる撮像画像のピント状態がリフォーカス処理によって変更される場合の表示器131における表示例を示している。横軸は撮像時刻の順序を示しており、縦軸は着目領域または対応領域のピント状態を示している。図23は、合焦近傍グループ(Gr.2)に属している撮像画像のピント状態は変更されず、前ピングループ(Gr.1)および後ピングループ(Gr.3)に属している撮像画像のピント状態がリフォーカス処理によって変更される例を示している。
15個の黒点は、図20に示したFrame1からFrame15までの撮像画像のピント状態を示す。また、白丸は、リフォーカス処理後のピント状態を示す。例えば、黒点F3_1は、Frame3の撮像画像のリフォーカス処理前のピント状態を示しており、白丸F3_2は、Frame3の撮像画像のリフォーカス処理後のピント状態を示している。図23の右側には、リフォーカス処理の前後における各グループに属する撮像画像の数の変化を示している。
このようにリフォーカス処理によるピント状態の変化を表示器131に表示することにより、ユーザは画像群におけるピント状態の分布を容易に確認することができる。
(変形例2)
実施例1において、ユーザが所望のピント状態の撮像画像を抽出できた場合に、設定した着目領域(および対応領域)に関する情報を撮像画像に付帯情報として付加してもよい。着目領域に関する情報としては、画像群に属する撮像画像のID情報や、着目領域および第2の評価領域の座標および大きさの情報等が含まれる。
また、画像群に属する撮像画像のID情報は、各撮像画像が消去された場合に対応して、画像群を構成する全撮像画像に同様に付加してもよい。
次に、本発明の実施例2について説明する。本実施例は、第1のグルーピングが行われた画像群の各撮像画像に対してピント状態を判定して第2のグルーピングを行う際に、1つの撮像画像が、複数のグループに属することを許容する点で実施例1と異なる。
実施例1では、1つの撮像画像は1つのグループにのみ属するようにグルーピングする場合について説明した。しかし、ユーザがピント状態で撮像画像を分類する場合に、より使い勝手の良さが求められる。例えば、ユーザが人物の顔にピントを合った複数の撮像画像から左目ではなく右目にピントがあった撮像画像を抽出したい場合がある。この場合には、左目と右目に対して焦点深度差があれば、ユーザは右目にピントが合うような操作を行えばよい。このとき、左目にピントがあった撮像画像は、右目にピントが合った撮像画像に対して、後ピンもしくは前ピンのグループに属することとなる。
ただし、被写体が遠かったり、絞り込まれたF値での撮像が行われたりした場合には、画像群の中に左目にも右目にもピントが合った撮像画像も存在し得る。このような撮像画像は、ユーザが意図する右目にピントが合った撮像画像としてもユーザが意図しない左目にピントがあった撮像画像としても抽出されるべきである。
このため、本実施例では、被写体領域のデフォーカス量差(距離差)の情報や被写体と背景(周囲の被写体)とのデフォーカス量差の情報を取得し、該情報に応じて複数のピント状態のグループに属する撮像画像を許容する。すなわち、被写体領域でのデフォーカス量差が(所定値より)小さい撮像画像を、複数のグループのうち少なくとも2つのグループに属するように分類する。これにより、ユーザが意図する撮像画像を漏れなく抽出することができ、ユーザによる撮像画像の選択および確認を効率的に行わせることができる。
本実施例のカメラの構成、焦点検出方式、焦点検出領域、AF・撮像処理および画像再生処理は、実施例1と同様である。つまり、実施例1のカメラ100の構成(図1)、焦点検出方式(図3(a)~図6)、焦点検出領域(図7)、AF・撮像処理(図8~図10)および画像再生処理(図11~図17)と同じである。
本実施例において図11のS1005でカメラCPU121が行う画像群の分類(第2のグルーピング)の処理について、図24のフローチャートを用いて説明する。
S6001では、カメラCPU121は、画像群に含まれる複数画像から深度関連情報を取得する。深度関連情報は、図18のS5001で説明したように、許容錯乱円εと絞り値Fの情報である。カメラCPU121は、各撮像画像における焦点深度(±εF)を算出する。
次にS6002では、カメラCPU121は、各撮像画像における被写体領域の距離情報を取得する。図25(a),(b)を用いて、被写体領域の距離情報の取得方法について説明する。
図25(a)は、図12(a)に示したFrame10の撮像画像に着目領域A100が設定された状態に加えて、被写体領域の検出と被写体領域の距離情報を取得するために焦点検出ポイントを重畳して示している。図25(a)には、焦点検出ポイントとして、水平方向に12箇所、垂直方向に8箇所の計96箇所に十字のマークPhを示している。
本実施例では、カメラCPU121は、計96箇所の焦点検出ポイントにおいて図15のS4001と同様に位相差(像ずれ量)を検出し、デフォーカス量または被写体距離を算出する。そして、得られた各焦点検出ポイントにおけるデフォーカス量または被写体距離から、まず被写体領域を抽出する。具体的には、カメラCPU121は、着目領域のデフォーカス量または被写体距離に対して、デフォーカス量または被写体距離が所定値以下の小さい差を有する領域を被写体領域として抽出する。被写体が人物である場合には、その身体や器官の検出によって被写体領域を抽出してもよい。
さらに、カメラCPU121は、被写体領域内に配置された焦点検出ポイントで得られたデフォーカス量と各撮像画像の取得時のフォーカスレンズ105の位置とを用いて、代表値としての被写体距離を算出する。図25(b)は、図19に示した15の撮像画像から得られた被写体距離を示している。縦軸は被写体距離を、横軸は撮像時刻の順序を示している。被写体距離Dを示す折れ線は、被写体が遠距離から徐々に近づいて最後の数番目の撮像画像ではほぼ距離が変わっていないことを示している。被写体距離D(1)は1番目の撮像画像(Frame1)における被写体距離を示し、被写体距離D(15)は15番目の撮像画像(Frame15)における被写体距離を示している。
F値や撮像光学系の焦点距離が一定である場合には、被写体距離によって被写界深度が変化する。具体的には、被写体距離が遠くなるにつれて、被写界深度は広く(深く)なる。本実施例では、被写界深度の変化を加味してピント状態を判定する。
次にS6003では、カメラCPU121は、ピント状態を判定するための閾値である判定閾値を設定する。具体的には、カメラCPU121は、前ピン側合焦状態の判定閾値Th2=-εF/2と、後ピン側合焦状態の判定閾値Th3=+εF/2とを設定する。さらに、カメラCPU121は、前ピン状態と判定するための判定閾値Th1と、後ピン状態と判定するための判定閾値Th4とを設定する。判定閾値Th1,Th4は、各撮像画像の被写界深度により異なるため、それぞれをTh1(i),Th4(i)と表すと、以下の式(6),(7)で算出される。
図26を用いて、前ピン状態と後ピン状態の判定閾値の設定方法について説明する。図26は、Frame1とFrame15を撮像した状態での被写体距離と被写界深度を示している。Frame1を撮像した際の被写体距離はD(1)であり、焦点深度±εFに対応する被写界深度は±H(1)である。同様に、Frame15を撮像した際の被写体距離はD(15)であり、焦点深度±εFに対応する被写界深度は±H(15)である。
Frame15の撮像画像を再生表示する際に、ユーザが、着目領域のデフォーカス量が単位焦点深度分ずれたピント状態を望んでいる場合は、被写体距離D(15)±H(15)の被写体距離にピントが合った状態がそれに相当する。例えば、デフォーカス量がほぼ0である右目に対して単位焦点深度分ずれた左目にピントが合った状態にピント状態を変更したい場合には、ユーザは、ピントが合う被写体距離をD(15)からH(15)だけ移動させる操作を行えばよい。
このユーザ操作を被写体距離D(1)の被写体に対して行う際にも、被写体上では左目と右目の間隔は変わらないため、ピントが合う被写体距離をD(1)からH(15)だけ移動させる操作を行えばよい。被写体距離D(1)はD(15)より遠いため、被写界深度H(1)の方がH(15)より深い(広い)。このため、被写体距離D(1)に対するH(15)のピント状態の変更量は、焦点深度εFよりも小さい値となる。小さくなる比率をkとすると、kは以下の式(8)で算出される。
k=H(15)/H(1)=D(15)2/D(1)2 (8)
式(8)では、前側被写界深度と後側被写界深度を区分せず、概算値としての被写界深度が被写体距離の二乗を焦点距離の二乗で除することで算出されるものとして、kを算出している。kの算出精度を上げるために、被写界深度を前側被写界深度と後側被写界深度に区別して算出に用いてもよい。
上述した式(6),(7)は、式(8)で算出されたkを焦点深度εFに乗じて得られた値として判定閾値Th1,Th4を算出している。これにより、被写界深度が浅い状態で選択したピント状態(例えば右目または左目に合焦した状態)と同様のピント状態の撮像画像を、被写体距離が遠く被写界深度が深い撮像画像から漏れなく抽出することができる。また、ピント状態の変更を、被写体距離の遠近によらず適切に行うこともできる。
S6003でピント状態の判定閾値が設定された状態を、第1のグルーピングが行われた画像群の着目領域および対応領域のピント状態を示す図27を用いて説明する。図27において、前ピン側合焦状態の判定閾値Th2および後ピン側合焦状態の判定閾値Th3は、図22における判定閾値と同様に破線で示されている。実線で示された前ピン状態の判定閾値Th1は、撮像時刻が後半の撮像画像では前ピン側合焦状態の判定閾値Th2と等しいが、撮像時刻が前半の撮像画像では前ピン側合焦状態の判定閾値Th2よりも上側(より合焦状態の近く)に変化している。これは、上述しように、被写界深度の変化によりピント状態が維持される範囲が異なることに対応して、第2のグルーピングの境界を変化させているためである。
同様に、実線で示された後ピン状態の判定閾値Th4は、撮像時刻が後半の撮像画像では後ピン側合焦状態の判定閾値Th3と等しいが、撮像時刻が前半の撮像画像では、後ピン側合焦状態の判定閾値Th3よりも下側(より合焦状態の近く)に変化している。
なお、図27では、撮像時刻が後半の撮像画像に対する判定閾値Th2,Th3を判定閾値Th1,Th4に対して若干ずらして分かり易く表示しているが、これらを重ねて表示してもよい。
図27では、2番目の撮像画像のピント状態F2は、Th2とTh3の間にあるため、2番目の撮像画像はGr.2に属する。一方、F2は、Th4より大きいため、2番目の撮像画像はGr.3にも属している。この場合、2番目の撮像画像は、ユーザがGr.2に属する撮像画像を抽出する際でも、Gr.3に属する撮像画像を抽出する際でも再生表示される。したがって、ユーザが望むピント状態の撮像画像を漏れなく再生表示することができる。
また、図27に示したような表示を行うことにより、散布図上において複数のグループに属する領域を容易に確認することができる。実施例1で説明したように、ピント状態を判定するための判定閾値を容易に変更することも可能となる。
S6003を終えたカメラCPU121は、S6004に進み、図18のS5003と同様に、画像群からピント状態を判定する撮像画像としての判定画像を設定する。
次にS6005では、カメラCPU121は、着目領域または対応領域のデフォーカス量(ピント状態)が判定閾値Th1より小さいか否かを判定する。カメラCPU121は、デフォーカス量が判定閾値Th1より小さい場合はS6006に進み、判定画像を前ピングループGr.1と判定する。その後、カメラCPU121は、デフォーカス量にかかわらずS6007に進む。
S6007では、カメラCPU121は、デフォーカス量が判定閾値Th2以上で判定閾値Th3以下であるか否かを判定する。カメラCPU121は、デフォーカス量が判定閾値Th2以上でTh3以下である場合はS6008に進み、判定画像を合焦近傍グループGr.2と判定する。その後、カメラCPU121は、S6007での判定結果にかかわらずS6009に進む。
S6009では、カメラCPU121は、デフォーカス量が判定閾値Th4より大きいか否かを判定する。カメラCPU121は、デフォーカス量が判定閾値Th4より大きい場合はS6010に進み、判定画像を後ピングループGr.3と判定する。その後、カメラCPU121は、S6009の判定結果にかかわらずS6011に進む。
S6011では、カメラCPU121は、画像群に含まれる全ての撮像画像についてピント状態の判定を終えたか否かを判定する。カメラCPU121は、全撮像画像のピント状態の判定を終えていない場合はS6004に戻って次の撮像画像に対する判定を行い、全撮像画像のピント状態の判定を終えた場合は本サブルーチンを終了する。
本実施例では、ユーザが望むピント状態が得られる領域での被写体距離の変化は被写界深度によらないことに着目して、被写界深度の状況に応じて、1つの撮像画像が複数のピント状態のグループに属することを可能とする。これにより、前述したように、ユーザが望むピント状態が得られている撮像画像を漏れなく抽出することができ、ユーザによる撮像画像の選択および確認を効率的に行わせることができる。
本実施例では、画像群に含まれる複数の撮像画像の焦点距離や絞り値が互いに等しく、被写体距離によってのみ被写界深度が変わる場合について説明した。しかし、撮像時の焦点距離や絞り値が変化する場合にも、それに対応した被写界深度を加味して、同様にピント状態のグルーピング(第2のグルーピング)を行えばよい。この結果、1つの撮像画像が3つ以上のグループに属することがあってもよい。
また、本実施例では、被写体領域を抽出し、その被写体距離を算出することで、被写界深度の変化を取得する場合について説明した。しかし、被写体領域に限らず、背景や他の被写体も含めて被写界深度を考慮してもよい。例えば、被写体も背景も含む全撮像範囲内が焦点深度内に収まっている撮像画像は、第2のグルーピングの結果の全グループに属するようにしてもよい。また、グループを判定するための判定閾値も、被写体領域内の奥行きや距離の情報を用いて変更してもよい。これにより、被写体の奥行に応じて適切にピント状態を変更することができる。
さらに、カメラCPU121は、着目領域または対応領域とその近傍領域を含む被写体領域でのデフォーカス量の変化に応じて判定閾値を変更してもよい。例えば、被写体領域内でデフォーカス量の変化が小さい場合には判定閾値の絶対値を小さくし、反対に被写体領域内でデフォーカス量の変化が大きい場合に判定閾値の絶対値を大きくしてもよい。
さらに本実施例では、1つの撮像画像が互いにピント状態が異なる複数のグループに属する場合がある。この場合に、実施例1で図20や図21を用いて説明した表示を行う場合には、複数のグループ名を示す文字やアイコンを表示すればよい。
また、上記各実施例では画像処理装置(カメラCPU121)を内蔵したカメラについて説明した。しかし、カメラおよび画像処理装置を内蔵した携帯電話等のモバイル機器や、撮像機能を有さないパーソナルコンピュータにより構成される画像処理装置も本発明の他の実施例に含まれる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
以上説明した各実施例は代表的な例にすぎず、本発明の実施に際しては、各実施例に対して種々の変形や変更が可能である。