(実施形態1)
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下では焦点調整装置の一例として、焦点調整の可能なデジタルカメラを用いる例を説明する。しかし、本実施形態は、デジタルカメラに限らず、焦点調整が可能な他の機器にも適用可能である。これらの機器には、例えばスマートフォンを含む携帯電話機、ゲーム機、タブレット端末、時計型や眼鏡型の情報端末、医療機器、監視システムや車載用システムの機器などが含まれてよい。
(デジタルカメラの構成)
図1は、本実施形態の焦点調整装置の一例としてのデジタルカメラ1の機能構成例を示すブロック図である。なお、図1に示す機能ブロックの1つ以上は、1つ以上のASICやプログラマブルロジックアレイ(PLA)などのハードウェアによって実現されてもよい。或いは、1つ以上のCPU、MPU、GPU等のプログラマブルプロセッサがソフトウェアを実行することによって実現されてもよい。また、ソフトウェアとハードウェアの組み合わせによって実現されてもよい。従って、以下の説明において、異なる機能ブロックが動作主体として記載されている場合であっても、同じハードウェアが主体として実現されうる。
ズームレンズ群2は、撮影光学系を構成し、レンズの光軸方向に進退可能に構成され、光軸方向に進退することにより、被写体光学像の変倍率を変化させる。フォーカスレンズ群3は、レンズの光軸方向に所定の範囲で移動可能に構成され、所定の位置(合焦位置ともいう)に移動すると撮像センサ5に結像する画像の所定領域が合焦した状態になる。絞り4は、ズームレンズ群2、フォーカスレンズ群3等からなる撮影光学系を透過する光束の量を制御する光量調節手段であり露出手段である。撮影レンズ鏡筒32は、ズームレンズ群2とフォーカスレンズ群3と絞り4とを含む。
撮像センサ5は、撮影光学系を透過した被写体像が結像し、これを光電変換するCMOS等の固体撮像素子を含む。撮像回路6は、この撮像センサ5によって光電変換された電気信号を受けて各種の画像処理を施すことにより所定の画像信号を生成する。A/D変換回路7は、この撮像回路6により生成されたアナログ画像信号をデジタル画像信号に変化させる。VRAM8は、バッファメモリ等のメモリを含み、このA/D変換回路7の出力を取得して、取得した画像信号を一時的に記憶する。
D/A変換回路9は、このVRAM8に記憶された画像信号を読み出してこれをアナログ信号に変換するとともに再生出力に適する形態の画像信号に変換する。LCD10は、この画像信号を表示する液晶表示装置(LCD)等の画像表示装置を含む。記憶用メモリ12は半導体メモリ等を含み、画像信号を記憶する。
圧縮伸長回路11は、VRAM8に一時記憶された画像信号を読み出して記憶用メモリ12に対する記憶に適した形態にするために画像信号の圧縮処理や符号化処理を施す圧縮回路を含む。また、圧縮伸長回路11は、記憶用メモリ12に記憶された画像信号を再生表示等するのに最適な形態とするための復号化処理や伸長処理等を施す伸長回路も含む。
AE処理回路13は、A/D変換回路7からの出力を受けて自動露出(AE)処理を行う。スキャンAF処理回路14は、A/D変換回路7からの出力を受けてAF評価値生成する自動焦点調整(AF)処理を行う。
制御部15は、CPUやGPUなどの1以上のプロセッサと、演算用のRAMとを含み、EEPROM25に記録されたプログラムを当該RAM等に展開、実行することによりデジタルカメラ1の全体を制御する。TG16は、所定のタイミング信号を発生するタイミングジェネレータを含む。撮像センサドライバ17は、撮像センサ5を駆動するドライバを含む。第一モータ駆動回路18は絞り駆動モータ21を駆動制御し、絞り駆動モータ21は絞り4を駆動する。第二モータ駆動回路19はフォーカス駆動モータ22を駆動制御し、フォーカス駆動モータ22はフォーカスレンズ群3を駆動する。第三モータ駆動回路20はズーム駆動モータ23を駆動制御し、ズーム駆動モータ23は、ズームレンズ群2を駆動する。
操作スイッチ24はデジタルカメラ1をユーザが操作するための各種のスイッチ群を含む。例えば、操作スイッチ24は、デジタルカメラ1を起動させ電源供給を行うための主電源スイッチや、撮影動作(記憶動作)等を開始させるレリーズスイッチ、再生動作を開始させる再生スイッチを含む。レリーズスイッチは撮影動作に先立ち行われるAE処理、AF処理を開始させる指示信号を発生する第一ストローク(以下SW1)と実際の露光動作を開始させる指示信号を発生する第二ストローク(以下SW2)との二段スイッチにより構成される。また、撮影光学系のズームレンズ群2を移動させズームを行わせるズームスイッチ等を含む。
EEPROM25は、各種制御等を行うプログラムや各種動作を行わせるために使用するデータ等が予め記憶されている電気的に書き換え可能な読み出し専用メモリ(記録媒体)である。電池26はデジタルカメラ1の各部に電力を提供するためのバッテリを含む。LED29は警告表示などを行うLEDなどの表示素子を含む。DFD(Depth from Defocus)処置回路30はA/D変換回路7から出力される信号を受信して、合焦位置の方向とデフォーカス量の推定を行う。ここでいうデフォーカス量は非負の値で表現される合焦位置からの像面距離を示すものである。しかし、合焦位置の方向とデフォーカス量を合わせて正負の符号付きで表現してもよい。初期移動方向識別回路31は、A/D変換回路7からの出力とフォーカスレンズ群3の位置を用いてフォーカスレンズ群3の初期移動方向を識別する。
画像信号等の記憶媒体である記憶用メモリ12は、フラッシュメモリ等の固定型の半導体メモリを含む。また、記憶用メモリ12は、カード形状やスティック形状であって装置に対して着脱自在に形成されるカード型フラッシュメモリ等の半導体メモリであってもよく、また、ハードディスク等の磁気記憶媒体等、様々な形態のものが適用されてよい。
(デジタルカメラ1の基本的な動作)
次に、上述のように構成されたデジタルカメラ1の動作の概要を説明する。まず、デジタルカメラ1の撮影レンズ鏡筒32を透過した被写体光束は絞り4によってその光量が調整された後、撮像センサ5の受光面に結像される。この被写体像は、撮像センサ5による光電変換処理により電気的な信号に変換され撮像回路6に出力される。撮像回路6では、入力した信号に対して各種の信号処理が施され、所定の画像信号が生成される。この画像信号はA/D変換回路7に出力されデジタル信号に変換された後、VRAM8に一時的に格納される。VRAM8に格納された画像信号はD/A変換回路9へ出力されアナログ信号に変換され表示するのに適した形態の画像信号に変換された後、LCDに画像として表示される。一方、VRAM8に格納された画像信号は圧縮伸長回路11にも出力される。この圧縮伸長回路11における圧縮回路によって圧縮処理が行われた後、記憶に適した形態の画像信号に変換され、記憶用メモリ12に記憶される。
また、例えば操作スイッチ24のうち不図示の再生スイッチが操作されオン状態になると、再生動作が開始される。記憶用メモリ12に圧縮された形で記憶された画像信号は圧縮伸長回路11に出力され、伸長回路において復号化処理や伸長処理等が施された後、VRAM8に出力され一時的に記憶される。更に、この画像信号はD/A変換回路9へ出力されアナログ信号に変換され表示するのに適した形態の画像信号に変換された後、LCD10に画像として表示される。
他方、A/D変換回路7によってデジタル化された画像信号は、上述のVRAM8とは別にAE処理回路13、スキャンAF処理回路14、DFD処理回路30、初期移動方向識別回路31に対しても出力される。
まずAE処理回路13においては、入力されたデジタル画像信号を受けて、一画面分の画像信号の輝度値に対して累積加算等の演算処理が行われる。これにより、被写体の明るさに応じたAE評価値が算出される。このAE評価値は制御部15に出力される。
スキャンAF処理回路14は、入力されたデジタル画像信号を受けて、画像信号の所定の周波数成分をバンドパスフィルター(BPF)を介して抽出し、更に累積加算等の演算処理を行って、所定帯域の成分量等に対応するAF評価値信号を算出する。具体的にはスキャンAF処理は、AF領域として指定された画面の一部分の領域に相当する画像信号の所定周波数成分を複数(例えば4つ)のバンドパスフィルター(BPF)を介して抽出し、更に累積加算等の演算処理を行う。これにより、所定帯域の成分量等に対応する複数のAF評価値信号が算出される。また、AF領域の画像信号の最大値と最小値の差分を計算してコントラスト値を求める演算処理を行う。このようにスキャンAF処理回路14は、自動焦点調整(AF制御)を行う過程において、撮像センサ5によって生成された画像信号から所定の周波数成分を検出する所定周波数成分検出手段の役割を担っている。
DFD処理回路30は、処理が指示された時点のフォーカスレンズ群3の位置で得られる第1デジタル画像信号と、予め定められた所定量だけ所定方向にフォーカスレンズ群3の位置で得られる第2デジタル画像信号とを受信する。受信した第1及び第2のデジタル画像信号を用いて、画像再構成とボケ像生成の画像処理を撮影レンズ鏡筒の光学特性を示すPSFを用いて複数回行う。そして、その結果として作成されたデジタル画像信号と、入力されたデジタル画像信号の相関演算を行い、最も高い相関を得た画像処理における設定値から、合焦位置の方向とデフォーカス量の推定を行う。すなわち、DFD処理回路はフォーカスレンズ群3の異なる位置で撮影された画像に基づいて、AF領域等の画像の所定領域が合焦するように前記フォーカスレンズを移動させるための、移動方向とデフォーカス量とを求める。
初期移動方向識別回路31は、画像とフォーカスレンズ位置の変化とAF領域との関係に基づいて合焦位置方向を推定するための特徴をCNN(Convolutional Neural Networks)によって抽出(学習)したうえで、レンズ初期移動方向を推定する。本実施形態では、初期移動方向識別回路31を、深層学習に用いられる複数の隠れ層を有するニューラルネットワークを用いて実現する。本実施形態では、深層学習に用いるニューラルネットワークの一例としてCNNを採用した場合を例に説明する。
TG16からは所定のタイミング信号が制御部15、撮像回路6、撮像センサドライバ17へ出力されており、制御部15はこのタイミング信号に同期させて各種の制御を行う。また撮像回路6は、TG16からのタイミング信号を受け、これに同期させて色信号の分離等の各種画像処理を行う。さらに撮像センサドライバ17は、TG16のタイミング信号を受けこれに同期して撮像センサ5を駆動する。
また制御部15は、第一モータ駆動回路18、第二モータ駆動回路19、第三モータ駆動回路20をそれぞれ制御する。これらを制御することにより、絞り駆動モータ21、フォーカス駆動モータ22、ズーム駆動モータ23を介して、絞り4、フォーカスレンズ群3、ズームレンズ群2を駆動制御する。制御部15は、DFD処理回路30からのフォーカスレンズ群3の移動方向とデフォーカス量とに基づいて第二モータ駆動回路19を制御し、フォーカスレンズ群3の移動を制御する。また、制御部15はAE処理回路13において算出されたAE評価値等に基づき第一モータ駆動回路18を制御して絞り駆動モータ21を駆動し、絞り4の絞り量を適正になるように調整するAE制御を行う。
操作スイッチ24のうち不図示のズームスイッチが操作された場合は、これを受けて第三モータ駆動回路20を制御してズーム駆動モータ23を駆動制御することによりズームレンズ群2を移動させ、撮影光学系の変倍動作(ズーム動作)を行う。
(DFD処理)
次に、図2を参照して、DFD処理回路30によって実行されるDFD(Depth from Defocus)処理に関する動作について説明する。また、合焦方向とデフォーカス量の推定方法の原理に関しては、特許第5869883号などでその詳細が説明されている公知の方法を用いることができるため、詳細な説明は割愛する。
S201で、DFD処理回路30は、DFD処理開始時のフォーカスレンズ群3の位置における、AF領域として指定された画面の一部分の領域に相当する第一画像を、フォーカスレンズ群3の位置情報とともに取得する。DFD処理回路30は画像信号と位置情報を内部の所定の記録領域に一時的に記録する。
S202で、制御部15は第二モータ駆動回路19を制御してフォーカス駆動モータ22を駆動し、フォーカスレンズ群3の位置を所定方向に所定の量を移動させる。この所定量及び所定方向は、予め焦点距離などを考慮して一律の方向と値に決めておいても良いし、フォーカスレンズ群3の位置などに応じて可変にしても良い。但し、本実施形態では、後述するように、初期移動方向識別回路31からの初期レンズ移動方向を所定方向として用いる。
S203で、DFD処理回路30は、移動後のフォーカスレンズ群3の位置におけるAF領域として指定された画面の一部分の領域に相当する第二画像を、フォーカスレンズ群3の位置情報とともに取得し、内部の所定の記録領域に一時的に記録する。S204で、DFD処理回路30は、第一画像及び第二画像が記録されたことに応じて、二像の平均画像を求め、内部の所定記録領域に一時的に記録する。
S205で、DFD処理回路30は、DFD処理開始時のデフォーカス量を仮定して、仮定したデフォーカス量と撮影レンズ鏡筒の光学特性を示すPSF(Point Spread Function)を用いて画像の再構成を行い、仮想焦点画像を生成する。この画像は仮定したデフォーカス量が正しければ理想的には焦点が合った画像と同等になる。
S206で、DFD処理回路30は、仮想焦点画像にPSFを畳み込むことで第一画像のフォーカスレンズ群3の位置における第一ボケ画像と、第二画像のフォーカスレンズ群3の位置における第二ボケ画像を生成する。
仮定したデフォーカス量をX、フォーカスレンズ群3の移動をDとした場合、平均画像の仮想デフォーカス量は、合焦位置の方向によって異なるので(X+D/2)または(X―D/2)となる。よって画像の再構成の際にはデフォーカス量(X+D/2)のPSFと、デフォーカス量(X―D/2)のPSFを用いる。
そしてボケ像を生成する際には、第一ボケ画像をデフォーカス量Xを用いて生成する。また、第二ボケ画像を、デフォーカス量(X+D/2)で再構成した際にはデフォーカス量(X+D)を用いて、デフォーカス量(X―D/2)で再構成した際にはデフォーカス量(X−D)を用いて生成する。
S207で、DFD処理回路30は、記録されている第一画像と第一ボケ画像の相関値と、第二画像と第二ボケ画像の相関値を求める。この相関値は、例えばPSNRと呼ばれる指標を用いることができる。また第一画像に関する相関値と第二画像に対する相関値が求まるので、例えばその和をその仮定デフォーカス量における相関値とすることができる。仮定されたデフォーカス量はX1〜Xnなど複数仮定されていて、それに対応したPSFが用意されている。
S208で、DFD処理回路30は、その全ての仮定されたデフォーカス量について相関値が求められたかを判定し、求められていない場合にはS205へ戻り、仮定デフォーカス量を更新して処理を繰り返す。全ての仮定デフォーカス量において相関値が求められている場合には、S209へ進む。
S209で、DFD処理回路30は、相関値が最大となった仮定デフォーカス量を選択する。そして、選択した仮定デフォーカス量を推定デフォーカス量とする。このとき、選択した仮定デフォーカス量を直接用いる代わりに、最大値を与えた仮定デフォーカス量と二番目に大きい相関値を与えた仮定デフォーカス量から補間演算を行って推定デフォーカス量を求めても良い。なお、推定する合焦方向は、仮定デフォーカス量(X+D/2)と(X―D/2)のどちらで相関値が最大になったのかを調べれば知ることができる。
(初期移動方向識別処理)
次に、図3及び図4を参照して、CNNで構成された初期移動方向識別回路31にて行われる初期移動方向識別処理について説明する。図3は、入力された2次元画像信号、フォーカスレンズ群3の位置及びAF領域から、初期移動方向を識別するCNNの基本的な構成を示している。
初期移動方向識別処理に係る一連の動作について具体的に説明する前に、フォーカスレンズ群3の位置の検出処理について説明する。
デジタルカメラの起動時にフォーカスレンズ群3は所定位置へ駆動される。フォーカスレンズ群3をリセット位置に達したことを検出するPIセンサが撮影レンズ鏡筒32に取り付けられており、リセット位置へ到達した際にフォーカスレンズ群3を駆動するためのパルス数をリセットして、値を零とする。次に制御部15が起動時の所定位置への駆動に必要なパルス数を、第二モータ駆動回路19を介してフォーカス駆動モータ22へ出力し、フォーカスレンズ群3は所定位置へ駆動される。
その後、制御部15は、第二モータ駆動回路19を介して駆動制御に必要なパルスを与えフォーカス駆動モータ22を駆動し、フォーカスレンズ群3を移動させる。このとき、制御部15は、初期移動方向識別回路31で識別された初期移動方向やスキャンAF処理回路14において算出されるAF評価値信号・DFD処理回路30で推定される合焦位置の方向・デフォーカス量に従って、駆動制御に必要なパルスを生成する。この駆動制御に必要なパルスは方向性を持っている。このため、制御部15は、駆動制御を行うたびにフォーカス駆動モータ22に与えられるパルス数を積算しその値を記録しておくことで、その時点におけるフォーカスレンズ群3の位置を特定することができる。
次に、図3を参照して本実施形態に係るCNNについて説明する。図3に示すCNNの構造では、左端を入力とし、右方向に処理が進んでいく。本実施形態に示すCNNの一例は、特徴検出層(S層)と特徴統合層(C層)と呼ばれる2つの層をひとつのセットとし、各セットが階層的に構成されている。
CNNでは、まずS層において前段階層で検出された特徴をもとに次の特徴を検出する。またS層において検出した特徴をC層で統合し、その階層における検出結果として次の階層に送る構成になっている。
S層は特徴検出細胞面からなり、特徴検出細胞面ごとに異なる特徴を検出する。また、C層は、特徴統合細胞面からなり、前段の特徴検出細胞面での検出結果をプーリングする。以下では、特に区別する必要がない場合、特徴検出細胞面及び特徴統合細胞面を総称して特徴面と呼ぶ。本実施形態では、最終段階層である出力層ではC層は用いずS層のみで構成している。
図4を参照して、特徴検出細胞面での特徴検出処理と、特徴統合細胞面での特徴統合処理との詳細について説明する。特徴検出細胞面は、複数の特徴検出ニューロンにより構成され、(例えば特徴検出層2の)特徴検出ニューロンは前段階層のC層(例えば特徴統合層1)に所定の構造で結合している。また特徴統合細胞面は、複数の特徴統合ニューロンにより構成され、特徴統合ニューロンは同階層のS層に所定の構造で結合している。図4中に示した、L階層目S層のM番目細胞面内における特徴検出ニューロンの出力値と、L階層目C層のM番目細胞面内における特徴統合ニューロンの出力値は、以下のように表すことができる。
式(2)のfは活性化関数であり、ロジスティック関数や双曲正接関数などのシグモイド関数であれば他の関数であってもよく、例えばtanh関数で実現することができる。
式(1)及び式(2)中のξ,ζ,u,v,nについて説明する。位置(ξ,ζ)は入力画像における位置座標に対応しており、
が高い出力値である場合は、入力画像の画素位置(ξ,ζ)に、L階層目S層M番目細胞面において、合焦方向が近側であることを示す特徴が存在する可能性が高いことを意味する。
逆に出力値が低い場合は、合焦方向が遠側であることを示す特徴が存在する可能性が高いことを意味する。またnは式(1)において、L−1階層目C層n番目細胞面を意味しており、統合先特徴番号と呼ぶ。基本的にL−1階層目C層に存在する全ての細胞面についての積和演算を行う。(u,v)は、結合係数の相対位置座標であり、検出するサイズに応じて有限の範囲(u,v)において積和演算を行う。このような有限な(u,v)の範囲を受容野と呼ぶ。また受容野の大きさを、以下では受容野サイズと呼び、結合している範囲の横画素数×縦画素数で表す。
但しフォーカスレンズ群3の位置は、単一の画像に関しては撮像処理がなされた時点でのフォーカスレンズ群3の位置であるので、同じ値入力レンズ位置yin_posi_lensとなる。ちなみにニューロンや画素の分布は離散的であり、結合先特徴番号も離散的なので、ξ,ζ,u,v,nは連続な変数ではなく、離散的な値をとる。ここでは、ξ,ζは非負整数、nは自然数、u,vは整数とし、何れも有限な範囲となる。
式(1)中の特徴検出ニューロンの結合係数
所定の特徴を検出するための結合係数分布であり、この結合係数分布を適切な値に調整することによって、所定の特徴を検出することが可能になる。すなわち、この結合係数分布の調整が学習であり、本実施形態では、取得した画像信号とレンズ位置とAF領域との入力から正しい合焦位置動方向を得るための特徴を抽出することを意味する。CNNの構築においては、さまざまなテストパターン(学習データともいう)を入力して、
適切な出力値になるように、結合係数を繰り返し(徐々に)修正していくことで結合係数の調整を行う。
次に、式(2)中の特徴統合ニューロンの結合係数
2次元のガウシアン関数を用いており、以下の式(3)のように表すことができる。
ここでも、(u,v)は有限の範囲としてあるので、特徴検出ニューロンの説明と同様に、有限の範囲を受容野といい、範囲の大きさを受容野サイズと呼ぶ。この受容野サイズは、ここではL階層目S層のM番目特徴のサイズに応じて適当な値に設定すれば良い。式(3)中の、σは特徴サイズ因子であり、受容野サイズに応じて適当な定数に設定しておけば良い。具体的には、受容野の一番外側の値がほぼ0とみなせるような値になるように設定することができる。
本実施形態では、上述のようにCNNを構成し上述の演算を各階層で行うようにすることにより、最終階層のS層において初期移動方向の識別結果を出力する。
(学習に関する説明)
次に、以下に示す、特徴検出ニューロンの結合係数の具体的な調整方法について説明する。結合係数
の調整、すなわち学習の方法としては、さまざまな方法が提案されており、大きく教師なしの学習と教師ありの学習に分類される。本実施形態では、例えば教師ありの学習により、結合係数の調整を行う場合を例に説明する。
教師ありの学習では、テストパターンを与えて実際にニューロンの出力値を求め、その出力値と教師信号(そのニューロンが出力すべき望ましい出力値)の関係を用いて結合係数の修正を行う。本実施形態に係る学習においては、最終層の特徴検出層の出力の最適化手法として最小二乗法を用い、中間層の特徴検出層の結合係数の修正には誤差逆伝搬法(バックプロパゲーションともいわれる)を用いる。最小二乗法や誤差逆伝搬法等の結合係数の修正手法の詳細は、「S.Haykin,“Neural Networks A Comprehensive Foundation 2nd Edition”,Prentice Hall,pp.156−255,July 1998」に記載される公知の手法を用いることができるため、説明を省略する。
本実施形態では、学習用のテストパターンとして、画像、レンズ位置、AF領域及び教師信号(フォーカスレンズの初期移動方向)を1セットとする。ここで、レンズ位置はその画像を撮像した際のフォーカスレンズ群3の位置である。
テストパターンに含まれる画像は、例えば図5に示すような、デジタルカメラの姿勢を考慮した際の画像上部に最遠側の被写体が存在し、画面下部になるに従い被写体距離の近い被写体が存在する、遠近の被写体が混在したものである。加えて、図6に示すような上部に被写体距離の近い被写体が存在する長い廊下や上部に屋根など被写体距離の近い被写体が存在する画像を用いることができる。更に、図7に示すような風鈴など中央に浮遊している画像や、木に咲く花など上部と下部に中央より被写体距離の遠い被写体が存在するものを用いることができる。また、画像が大きくボケた際の性能を向上させるため、AF領域や画像全体が大きくボケた画像を多く用いてもよい。
このようなテストパターンを学習して初期移動方向の推定を行うのは、初期移動方向の推定が、画像内の領域毎のボケ量や画像上の位置関係に応じて初期移動方向を推定可能にするためである。また、画像が大きくボケた画像を用いることにより、初期移動方向の判別が困難な状況においてより推定精度の向上した初期移動方向の推定を実現するためである。
そして、AF領域は画像上でAFを行い合焦させたい主被写体が存在する領域であり、学習させる画像を撮像した際のAF領域とは異なる。領域情報としては、例えばその領域の中心座標を与えるようにすることができる。例えば図5〜図7において破線で囲った領域がAF領域である。
活性化関数にtanh関数を用いる場合、識別すべき初期移動方向が近側(すなわち被写体距離の近い側)の特定パターンを提示した場合、最終層の特徴検出細胞面の、特定パターンが存在する領域のニューロンに対し、出力が1となるように教師信号を与える。逆に、識別すべき初期移動方向が遠側(すなわち被写体距離の遠い側)の特定パターンを提示した場合、そのパターンの領域のニューロンに対し、出力が−1となるように教師信号を与えることになる。そして、式(1)に示した特徴検出ニューロンの出力値
の値は−1〜1の範囲となるようにする学習させていく。従って、特徴検出ニューロンの出力値が1に近い出力値である場合は、初期移動方向が近側である可能性が高く、特徴検出ニューロンの出力値が-1に近い出力値である場合は、初期移動方向が遠側である可能性が高いことになる。
以上により、2次元画像とフォーカスレンズ位置とAF領域とからフォーカスレンズの初期移動方向を識別するためのCNNを構築することができる。
デジタルカメラの動作時には、初期移動方向識別回路31は、学習された[数10]に示す特徴検出ニューロンの結合係数を用いて新たな入力データに対する演算を行い、最終層の特徴検出細胞面上のニューロン(図3特徴検出層n)の出力値を取得する。そして、取得した出力値を用いてフォーカスレンズ群3の初期移動方向を決定する。
(焦点調整処理に係る一連の動作)
次に、図8を参照して、本実施形態における初期移動方向を識別する機能を用いた、焦点調整処理に係る一連の動作について説明する。なお、焦点調整処理に係る一連の動作は、制御部15がEEPROM25に格納されたプログラムを不図示のRAMに展開、実行することにより、制御部15が実行或いはデジタルカメラ1の各部を制御することによって実現される。また、本一連の動作は、デジタルカメラ1の主電源スイッチがオン状態であり、かつデジタルカメラの動作モードが撮影(録画)モードにあるときに、実行され得る。
S801で、制御部15は、デジタルカメラ1の各部を制御して、画像を取得してAE処理を実行させる。具体的には、撮像センサ5は、撮像センサ5上に結像した被写体像を光電変換処理して電気的な信号に変換した後、撮像回路6に出力する。撮像回路6が入力信号に対して各種の信号処理を施して所定の画像信号を生成した後、A/D変換回路7が所定の画像信号をデジタル信号に変換してこれをVRAM8に一時的に格納する。同時に、AE処理回路13にも画像信号が出力されAE評価値が算出される。制御部15はAE評価値を用いてAE処理が行い、画像信号の露出が適正になる。
S802で、制御部15は、LCD10へ画像表示を行う。制御部15は、VRAM8に格納された画像信号を、D/A変換回路9により表示するのに適した形態の画像信号(アナログ信号)に変換し、LCDに画像として表示させる。
S803で、制御部15は、例えばVRAM8に記録された画像を初期移動方向識別回路31の入力画像として取得して、初期移動方向識別回路31へ入力する。
S804で、制御部15は、記録されているフォーカス駆動モータ22を駆動するためのパルスの積算値を読み出してフォーカスレンズ群3の位置を取得し、取得した情報を初期移動方向識別回路31へ入力する。
S805で、制御部15は、AF領域を取得し、その情報を初期移動方向識別回路31へ入力する。AF領域については、例えば、撮影者により指定されている場合はその領域をAF領域として取得する。指定されていなければ、顔検出などの公知の主被写体検出技術を用いて求められた主被写体領域をAF領域とすることができる。また、主被写体領域が求められなかった場合は画面中央の所定の大きさの領域をAF領域とする。
S806で、制御部15は、初期移動方向識別回路31に初期移動方向識別処理を実行させ、その結果を受け取る。制御部15は、前述のように構築された初期移動方向を識別するためのCNNに、2次元画像、フォーカスレンズ位置及びAF領域を指定する情報を入力する。初期移動方向識別回路31は、学習済みの[数10]に示す特徴検出ニューロンの結合係数を用いてニューラルネットワーク上の演算を行って、最終層の特徴検出細胞面上のニューロンから最終出力を出力する。この最終出力は特徴検出ニューロンの出力値(−1〜1の範囲の値)であり、推定されたフォーカスレンズ群3の初期移動方向に対応する。
最終出力が1に近ければ初期移動方向が近側である可能性が高く、−1に近ければ遠側である可能性が高い。このため、制御部15は、最終出力値の絶対値が所定値以上であって、かつ最終出力値が正であれば近側を初期移動方向として決定する。一方、最終出力値の絶対値が所定値以上であって、かつ最終出力値が負であれば遠側を初期移動方向として決定する。なお、制御部15は、最終出力値の絶対値が所定値未満である場合には、初期移動方向を判定不可とする。
S807で、制御部15は、DFD処理回路30に前述したDFD処理を実行させ、デフォーカス量と合焦方向の推定を行う。このとき、S806の処理で得た初期移動方向は、フォーカスレンズ群3を移動させる所定方向として用いられる。
なお、このS803〜S807で行われる初期移動方向識別処理とDFD処理は演算負荷が重い為、制御部15は、信頼性の高いデフォーカス量と合焦方向の推定が行われた後にはS803〜S807の処理を一時的に行わないようにしても良い。また処理回数に制限を設けて所定回数以上行わないようにしても良い。これらの場合には、制御部15は、AE評価値に所定以上の変化が生じたり、ズームスイッチが操作されたりして環境が変化したと判定したことに応じて、再び初期移動方向識別処理とDFD処理を行うようにする。
S808で、制御部15は、レリーズスイッチの状態を判定する。例えば、制御部15は、撮影者によって操作スイッチ24のレリーズスイッチが操作されず、SW1(レリーズスイッチの第一ストローク)がオフ状態であると判定した場合、S801へ戻ってS801〜807の処理を繰り返す。一方、制御部15は、操作スイッチ24のレリーズスイッチがオン状態であると判定した場合、S809に進む。
S809で、制御部15は、AF処理を実行する。例えば、制御部15は、DFD処理によって得られた推定デフォーカス量と方向の基づき、第二モータ駆動回路19を制御してフォーカス駆動モータ22を駆動し、フォーカスレンズ群3を合焦位置に移動させる。なお、推定デフォーカス量が大きい場合には、制御部15は、フォーカスレンズ群3の駆動中にもDFD処理を実行して推定デフォーカス量を更新し、目標位置を随時変更していく。また、推定デフォーカス量に応じてフォーカスレンズ群3の駆動の速さを可変にしている。このようにすれば、推定デフォーカス量が大きい場合には速い駆動で合焦までの時間を短縮することができる。また、更新された推定デフォーカス量が小さくなるにつれて遅い駆動に制御することで、オーバーシュートなどの弊害を除去し、停止精度を高めることができ、高精度のAFを実現することができる。
また、推定されたデフォーカス量の信頼性が予め定めた閾値より低い場合、制御部15は、フォーカスレンズ群3を合焦位置へ駆動している間に、スキャンAF処理回路14において取得されるAF評価値を用いて合焦位置へ制御しても構わない。また、推定されたデフォーカス量の信頼性が低い場合にはフォーカスレンズ群3の駆動の速さを遅くすることができる。すなわち推定デフォーカス量に応じてフォーカスレンズ群3の駆動の速さを可変にしておいて、同時にAF評価値を取得してAF評価値がピークとなる位置(すなわち合焦位置)を検出し、当該ピーク位置へフォーカスレンズ群3を制御する。
S810で、制御部15は、フォーカスレンズ群の合焦位置が得られていれば、上述のS205の処理を行ってAFOK表示を行う。例えば、制御部15は、表示素子29を点灯させると同時にLCD上に緑の枠を表示するなどによりAFNG表示を行う。一方、制御部15は、S809において合焦位置が得られなかった場合、AFNG表示を行う。制御部15は、表示素子29を点滅表示させると同時にLCD上に黄色の枠を表示するなどによりAFNG表示を行う。
S811で、制御部15は、SW2(レリーズスイッチの第二ストローク)がオンであるかを判定し、SW2がオンであると判定した場合にはS812に進み、そうでない場合にはS811に戻ってSW2がオンになるのを待つ。但しその間にSW1がオフになった場合にはS801へ戻ってもよい。S812で、制御部15は、実際の露光処理を実行して、その後、本一連の動作を終了する。
(DFD処理の結果を用いた再学習)
本実施形態では、S807でDFD処理を行った結果として得られた合焦方向と、S806で初期移動方向識別処理によって得られた初期移動方向が異なる場合は、DFD処理結果を用いた結合係数の再調整(再学習)を行う。すなわち、初期移動方向識別処理によって正しい方向(DFD処理により得られる合焦方向と一致する方向)が出力されなかった場合、結合係数である特徴検出ニューロンの結合係数を再学習によって変更し、より精度良く初期移動方向を出力できるようにする。以下、再学習の方法について説明する。
学習用のテストパターンは、例えば、DFD処理を行った際の2つの画像、画像に対応するフォーカスレンズ群3の位置、及びDFD処理を行った際のAF領域のデータと、DFD処理の結果として得られるべき合焦位置方向(教師信号)とを1セットとする。そして、テストパターンを1セットずつ順次ニューラルネットワーク(CNN)に入力しながら、ニューラルネットワークの結合係数を修正してゆく。結合係数の修正は、上述の公知の方法を用いて行うことができる。
同様に、S809で行われるAF処理の結果として得られた合焦位置への方向と、S806で初期移動方向識別処理によって得られた初期移動方向が異なる場合は、AF処理の結果として得られた合焦位置への方向を用いて結合係数の再調整(再学習)を行う。
このようにすることで、再学習後には、DFD処理を行う際に合焦方向にフォーカスレンズ群3が移動する可能性が高まり、LCD10に表示される画像の品位が向上する。更に、DFD処理に用いる画像に含まれる信号成分が増えるためDFD処理の結果得られるデフォーカス量と合焦方向の推定結果の信頼性が向上する。
更に、AF補助光の拡散領域を検出できない環境においても、被写体に合焦するフォーカスレンズ位置の方向を知ることができるため、処理実行時点から合焦位置方向へフォーカスレンズを駆動してより高速な合焦位置の探索動作を行うことができる。
以上説明したように本実施形態では、DFD処理回路30がフォーカスレンズ群3の異なる位置で撮影された画像に基づいて、画像の所定領域が合焦した状態となる合焦位置にフォーカスレンズを移動させるための、移動方向とデフォーカス量とを求める。そして、制御部15がDFD処理回路30からのフォーカスレンズ群3の移動方向とデフォーカス量とに基づいてフォーカスレンズ群3の移動を制御するようにした。このとき、DFD処理回路30は、フォーカスレンズ群3の現在の位置で撮影された第一画像と、フォーカスレンズ群3の位置を現在の位置から所定方向(初期移動方向)へ移動させて撮影された第二画像とに基づいて、移動方向とデフォーカス量を求める。ここで、初期移動方向識別回路31は、現在の位置から合焦位置へ向かう方向となるように上記所定方向を推定する。画像とレンズ位置とAF領域とを入力として初期移動方向を出力する深層学習機構を用いることにより、画像信号とレンズ位置の変化との関係に応じて初期移動方向を推定可能になる。すなわち、フォーカスレンズの合焦位置への駆動を効率化することができ、焦点検出処理の高速化とAF画像の品位向上を実現することができる。
また、被写体の遠近関係と合焦方向とを推定することで、推定デフォーカス量と移動方向を求める際の推定結果の信頼性を向上させ、焦点検出処理においてフォーカスレンズ群3を処理実行時点からより信頼性高く合焦位置へ移動させることができるようになる。更に、AF処理の結果として得られた合焦位置への方向と深層学習機構によって出力される初期移動方向とが異なる場合には深層学習機構の結合係数の再学習を行うようにした。すなわち、新たな学習を行うことによってニューラルネットワークで抽出した特徴を更新させることで、より高精度に初期移動方向を出力できるようにした。結果としてデフォーカス量と合焦方向の推定結果の信頼性を向上させることができる。
(実施形態2)
次に、実施形態2について説明する。上述の実施形態1では、初期移動方向識別処理において、入力画像とレンズ位置とAF領域とを入力とする場合を例に説明した。実施形態2では、初期移動方向識別処理において、ボケ量を評価する指数とレンズ位置とAF領域とを入力として用いる場合を例に説明する。ボケ量を評価する指数は、画像を複数に分割した各領域での像のボケ量を評価する指数である。本実施形態のデジタルカメラ1は、実施形態1と初期移動方向識別回路31の内部構造が異なるが、その他の構成は実施形態1と実質的に同一である。このため、実質的に同一である構成については同一の符号を付して重複する説明は省略し、相違点について重点的に説明する。
図9を参照して、実施形態2に係る初期移動方向識別処理とその前処理について説明する。なお、本処理は、実施形態1におけるS805及びS806の処理として実行される処理である。制御部15がEEPROM25に記憶されたプログラムを不図示のRAMの作業用領域に展開、実行すると共に、初期移動方向識別回路31等の各部を制御することにより実現される。
S901において、制御部15は、例えば上述のS803などにおいて取得した画像に対し、顔検出などの公知の主被写体検出技術を用いて主被写体の領域を求める。制御部15は、主被写体が検出されなかった場合には、例えば画面中央の所定の大きさの領域を主被写体領域として求める。S902において、制御部15は、主被写体領域を初期移動方向識別処理におけるAF領域として選択する。
S903において、制御部15は、取得した画像を複数の領域に分割する。制御部15は、主被写体領域と同じ大きさの領域を主被写体領域に隣接させるようにして、例えば図10に示すように分割領域を配置していく。分割領域は、画像内で各分割領域が隣接するように配置されており、分割領域が画面からはみ出さない範囲で配置される。図10(A)は、主被写体が検出され、主被写体領域が求められた場合の例を示している。図10(B)は、主被写体領域が求められなかったため、所定の大きさの領域を用いて、画面の中央を主被写体領域とした場合の例を示している。なお、図10に示す各図において破線で囲った領域は主被写体領域を表す。
なお、S903の処理では、制御部15は、デジタルカメラ1の姿勢を考慮した垂直方向には、複数個の領域を必ず設定するようにする。その場合に画面からはみ出す領域は垂直方向の範囲については縮小し、分割領域が画面からはみ出さいようにする。図10(C)にその一例を示している。主被写体領域よりも上にある行の分割領域では、垂直方向の範囲が縮小されている。
S904において、制御部15は、分割領域ごとのぼかし処理を実施し、ボケ量を評価する指数(ボケ量評価指数)を算出する。このボケ量評価指数は各領域がどの程度のボケ量かを表すものである。図11を参照して、ボケ量評価指数を算出する手順について説明する。なお、この処理は、制御部15がEEPROM25に記憶されたプログラムを不図示のRAMの作業用領域に展開、実行すると共に、スキャンAF処理回路14等の各部を制御することにより実現される。
S1101において、制御部15は、画像取得を行ったうえで(ぼかし処理前の)AF評価値を求める。具体的には、制御部15は、スキャンAF処理回路14を制御して、入力されたAF枠内のデジタル画像信号を取得する。そして、制御部15は、スキャンAF処理回路14を制御して、複数(例えば4つ)の異なる周波数特性のバンドパスフィルター(BPF)を適用し、複数のAF評価値信号TesBef[n]を算出する。その後、算出された評価値TesBef[n]は記憶用メモリ12等の所定の領域に記録される。
S1102では、制御部15は、スキャンAF処理回路14を制御して、画像の解像度を低下させるぼかし処理を行う。これは、入力されたAF枠内のデジタル画像信号をスキャンAF処理回路14に入力し、スキャンAF処理回路14内の低周波帯域の周波数を抽出するバンドパスフィルター(BPF)を介することで、入力されたデジタル画像信号の解像度を低下させる。
S1103において、制御部15は、スキャンAF処理回路14を制御して、ぼかし処理を行った画像から複数のAF評価値信号TesAft[n]を算出する。算出されたぼかし処理後のAF評価値信号は、記憶用メモリ12等の所定の領域に記録される。
S1104において、制御部15は、ぼかし処理前のAF評価値信号とぼかし処理後のAF評価値信号とを比較して、評価値の変化量からボケ量を評価する指数(ボケ量評価指数)を算出する。以下、ボケ量評価指数の算出処理について、より具体的に説明する。
まず、複数のAF評価値それぞれの変化率を求める。この例では、ぼかし処理前後でそれぞれ4つのAF評価値、TesBef[0]、TesBef[1]、TesBef[2]、TesBef[3]、TesAft[0]、TesAft[1]、TesAft[2]、TesAft[3]が求められている。それぞれのAF評価値のBPFにおけるAF評価値の変化率TesVari[0]、TesVari[1]、TesVari[2]、TesVari[3]を、以下のように算出する。
(i) TesVari[0] =(TesAft[0] ― TesBef[0])÷ (TesAft[0] + TesBef[0])
(ii) TesVari[1] =(TesAft[1] ― TesBef[1])÷ (TesAft[1] + TesBef[1])
(iii) TesVari[2] =(TesAft[2] ― TesBef[2])÷ (TesAft[2] + TesBef[2])
(iv) TesVari[3] =(TesAft[3] ― TesBef[3])÷ (TesAft[3] + TesBef[3])
制御部15は、更に、変化率の絶対値の和(Σabs(TesVari[i]))を取って、求めた変化率の絶対値の和を、領域ごとのボケ量評価指数(ボケ量を評価する指数)とする。なお、上記のようにボケ量評価指数の算出を行うことにより、図10(C)に示した(垂直方向の範囲を縮小した)分割領域を用いる場合であっても、差÷和と比を取っているので、領域の縦方向の範囲の差はキャンセルされる。また、各分割領域の水平方向の範囲は同じ大きさであるため、こちらも算出結果に影響を与えない。
S905において、制御部15は、初期移動方向識別回路31を制御して、初期移動方向識別処理を行う。より具体的には、初期移動方向識別回路31は、S904までの前処理で求められた各領域のボケ量評価指数とフォーカスレンズ群3の位置とAF領域とを入力として、初期移動方向を推定する。すなわち、初期移動方向識別回路31は、画像の特定の領域のボケ量を示す情報とフォーカスレンズの位置の変化との関係に基づいて初期移動方向を推定するための特徴を抽出し、抽出された特徴に基づいてDFD処理における初期移動方向を推定する。
なお、初期移動方向識別回路31によって実行される本実施形態に係る初期移動方向識別処理は、CNNに、実施形態1のように入力画像を入力する代わりに、ボケ量評価指数を入力とする点のみが異なるが、それ以外は実施形態1と同様に行われる。
図12は、入力されたボケ量評価指数とフォーカスレンズ群3の位置とAF領域から、初期移動方向を識別するCNNの基本的な構成を模式的に示している。実施形態1と同様に、CNNにおける処理は、左端を入力とし、右方向に進んでいく。実施形態1において上述したように、図3及び図12に示すCNNは、特徴検出層(S層)と特徴統合層(C層)と呼ばれる2つの層をひとつのセットとし、それが階層的に構成されている。すなわち、CNNでは、まずS層において前段階層で検出された特徴をもとに次の特徴を検出する。またS層において検出した特徴をC層で統合し、その階層における検出結果として次の階層に送る構成になっている。上記CNNは、最終段階層である出力層ではC層は用いずS層のみで構成している。なお、このように構成されるCNNに対する学習用のテストパターンは、分割された各領域での像のボケ量と、フォーカスレンズ位置と、AF領域と、教師信号とを1セットとするデータで構成される。
このようにして、分割された各領域での像のボケ量と、フォーカスレンズ位置と、AF領域とからフォーカスレンズの初期移動方向を識別するためのCNNが構築することができる。そして、デジタルカメラの動作時には、学習により構築した結合係数を用いて、入力値(分割された各領域での像のボケ量と、フォーカスレンズ位置と、AF領域)に対する演算を行う。その結果として、最終層における特徴検出細胞面上のニューロン(図12特徴検出層n)の出力を取得し、その値を用いてフォーカスレンズ群3の初期移動方向を決定する。制御部15は、初期移動方向を決定すると、その後、本処理を終了する。
そして、本実施形態に係る初期移動方向識別処理を用いたデジタルカメラ1の動作は、実施形態1と同様、図8において上述した一連の動作に従って実行される。
以上説明したように、本実施形態では、初期移動方向識別処理において、ボケ量を評価する指数とレンズ位置とAF領域とを入力として用いるようにした。ここで、ボケ量を評価する指数は、画像を複数に分割した各領域での像のボケ量を評価する指数である。このように初期移動方向識別処理の入力の一部を、入力画像の代わりにボケ量評価指数を用いるようにしても、推定デフォーカス量と移動方向を求める際の推定結果の信頼性を向上させることができる。このようにしても、焦点検出処理においてフォーカスレンズ群3を処理実行時点からより信頼性高く合焦位置へ移動させることができるようになり、焦点検出処理の高速化とAF画像の品位向上を実現することができる。
なお、上述した実施形態1の例では、識別された初期移動方向は、S807におけるDFD処理において、第二の画像信号を取得するためのフォーカスレンズ群3の移動方向を決定するために使用された。しかし、DFD処理を行わずに、スキャンAF処理を行う際のフォーカスレンズ群3の初期移動方向に使用しても構わない。すなわち、制御部15は、S807のDFD処理を行わずに、S808に進んでSW1がオン状態になったと判定した場合、フォーカスレンズ群3を識別した初期移動方向へ所定の速さで移動させる。そして、フォーカスレンズ群3の位置を移動させながらスキャンAF処理回路14からAF評価値信号を受け取る。このAF評価値信号がピークとなるフォーカスレンズ群3の位置を探索し、その位置を合焦位置とする。このスキャンAF処理は、図13に概要を示すように、スキャンAFの技術に初期移動方向を適用した処理であってよい。
(初期移動方向を用いたスキャンAF処理の概要)
S1301において、制御部15は、スキャンAF処理回路14を制御して、現在のフォーカスレンズ群3の位置におけるAF評価値を取得し、レンズ位置とともに記録する。S1302において、制御部15は、フォーカスレンズ群3を、識別された初期移動方向に所定の速さで移動させる。S1303において、制御部15は、スキャンAF処理回路14を制御して、所定タイミング(例えばセンサ読み出しの同期信号のタイミング)でAF評価値を取得する。制御部15は、取得したAF評価値を、そのフォーカスレンズ群3の位置とともに、例えば記憶用メモリ12等に記録する。
S1304において、制御部15は、AF評価値が所定回数にわたって連続して減少してないかを判定する。制御部15は、AF評価値が所定回数にわたって連続して減少していなければS1305に進む。更に、S1305において、AF評価値のピークが検出されたか、またはレンズ端に到達したかを判定し、そうである場合は、S1306に進んでフォーカスレンズ群3を停止し、それ以外の場合にはS1308へ進む。なお、S1305において、AF評価値のピーク位置が検出された場合には、S1306においてレンズ位置を停止する際にそのピーク位置を合焦位置とする。一方、ピーク位置が検出されない場合はAF失敗と判断する。
なお、AF評価値のピークが検出された否かは、例えば、以下のようにして判定する。ピーク位置となるレンズ位置で取得したAF評価値をTes0、所定量遠側と近側のレンズ位置において取得したAF評価値をTeFar、TesNearとすると、その差分
Tes0−TeFar
Tes0−TesNear
がともに所定値以上である場合にAF評価値のピークが検出されたと判定する。
一方、S1304において、制御部15は、AF評価値が所定回数にわたって連続して減少していると判定した場合、S1307においてフォーカスレンズ群3の移動方向を反転させる。更に、S1308において、制御部15は、レンズ位置の移動を継続して、処理を再びS1303に戻す。ステップ1305において、制御部15は、AF評価値のピークが検出されておらず、かつレンズ端に到達していないと判定された場合は、S1308でレンズ移動を継続する。制御部15は、S1306においてレンズを停止させるとその後本処理を終了する。
なお、上述のスキャンAF処理では、本処理に係る動作の一部を制御部15が制御する場合を例に説明したが、スキャンAF処理回路14のみで実行してもよい。
(実施形態3)
上述の実施形態では、デジタルカメラ1に初期移動方向識別回路31を設け、当該回路によって推定される初期位置方向に基づいてDFD処理を行う場合を例に説明した。実施形態3に係るデジタルカメラ1400は、図14に示すように、初期移動方向識別回路31を有しない構成となっている。本実施形態のデジタルカメラ1400は、実施形態1及び2に係るデジタルカメラ1と初期移動方向識別回路31の有無が異なるが、その他の構成は実施形態1と実質的に同一である。このため、実質的に同一である構成については同一の符号を付して重複する説明は省略し、相違点について重点的に説明する。
(実施形態3に係る焦点調整処理)
図15を参照して、本実施形態における焦点調整処理に係る一連の動作について説明する。なお、焦点調整処理に係る一連の動作は、制御部15がEEPROM25に格納されたプログラムを不図示のRAMに展開、実行することにより、制御部15が実行或いはデジタルカメラ1400の各部を制御することによって実現される。また、本一連の動作は、デジタルカメラ1400の主電源スイッチがオン状態であり、かつデジタルカメラの動作モードが撮影(録画)モードにあるときに、実行され得る。
制御部15は、上述のS801とS802と同様にS1501とS1502を実行する。すなわち、S1501で、制御部15は、デジタルカメラ1400の各部を制御して、画像を取得してAE処理を実行させる。撮像センサ5で得た被写体像の信号に対して撮像回路6やA/D変換回路7が処理を行って画像信号をVRAM8に一時的に格納する。同時に、AE処理回路13が画像信号に基づいてAE評価値を算出し、制御部15は当該AE評価値を用いてAE処理が行って、画像信号の露出を適正にする。また、S1502で、制御部15は、LCD10へ画像表示を行う。
S1503で、制御部15は、AF領域のボケ量評価指数を算出するための画像を取得する。この画像は適正露光において取得された画像であれば良いので、S1502におけるLCD表示で使用した画像でも構わない。S1504で、制御部15は、記録されているフォーカス駆動モータ22を駆動するためのパルスの積算値を読み出してフォーカスレンズ群3の位置を取得する。
S1505で、制御部15は、AF領域を取得する。AF領域については、例えば、撮影者により指定されている場合はその領域をAF領域として取得する。指定されていなければ、顔検出などの公知の主被写体検出技術を用いて求められた主被写体領域をAF領域とすることができる。また、主被写体領域が求められなかった場合は画面中央の所定の大きさの領域をAF領域とする。
S1506で、制御部15は、AF領域においてぼかし処理を実施して、ボケ量評価指数を算出する。ボケ量評価指数の算出は、実施形態2で図11を参照して説明した方法と同様であるので詳細は省略する。
S1507で、制御部15は、S1506で求めたAF領域のボケ量評価指数等を用いて、後のDFD処理を行うための設定(DFDパラメータ設定)を行う。具体的なDFDパラメータ設定の処理については、後述するが、DFD処理における第二画像を得るためのフォーカスレンズ群3の移動方向と、その移動量と、画像再構成とボケ画像生成を行う際のPSFの持ち方との3つが設定される。
S1508では、制御部15は、DFD処理回路30を制御することにより、S1507で設定されるDFDパラメータを用いてDFD処理を行い、デフォーカス量と合焦方向を推定する。なお、S1508で行われるDFD処理は演算負荷が重い為、制御部15は、信頼性の高いデフォーカス量と合焦方向の推定が行われた後にはDFD処理を一時的に行わないようにしても良い。また処理回数に制限を設けて所定回数以上行わないようにしても良い。これらの場合には、制御部15は、AE評価値に所定以上の変化が生じたり、ズームスイッチが操作されたりして環境が変化したと判定したことに応じて、再びDFD処理を行うようにする。
その後、制御部15は、S1509〜1513の処理を上述のS808〜S812と同様に実行する。すなわち、S1509で、制御部15はレリーズスイッチの状態を判定し、SW1がオフ状態であると判定した場合、S1501へ戻ってS1501〜1508の処理を繰り返す。一方、制御部15は、操作スイッチ24のレリーズスイッチがオン状態であると判定した場合、S1510に進む。S1510で、制御部15は、AF処理を実行する。すなわち、制御部15は、DFD処理によって得られた推定デフォーカス量と方向の基づき、第二モータ駆動回路19を制御してフォーカス駆動モータ22を駆動し、フォーカスレンズ群3を合焦位置に移動させる。このとき、制御部15は、S809で上述した、例えばフォーカスレンズ群3の駆動中にも推定デフォーカス量を更新する等の処理を行ってよい。S1511では、制御部15は、フォーカスレンズ群の合焦位置が得られていれば、上述のS205の処理を行ってAFOK表示或いはAFNG表示を行う。S1512で、制御部15は、SW2がオンであるかを判定し、SW2がオンであると判定した場合にはS1513に進んで実際の露光処理を実行する。そうでない場合にはS1512に戻ってSW2がオンになるのを待つ。制御部15は、S1513の処理の実行後、本一連の動作を終了する。
(DFDパラメータ設定)
次に、S1507における、DFD処理のパラメータ設定の処理について、図16及び図17を参照して説明する。DFDパラメータ設定の処理では、DFD処理において第二画像を取得するためのフォーカスレンズ群3の移動方向を設定する。
S1601では、制御部15は、デジタルカメラ1400の撮影モードが動画撮影モードに設定されているかを判定し、動画撮影モードに設定されていると判定した場合S1610へ進み、そうでない場合にはS1602へ進む。
S1602では、制御部15は、デジタルカメラ1400の動画撮影モードが更に高解像度動画フォト撮影モードであるかを判定する。高解像度動画フォト撮影モードは、8kフォトや4Kフォトなどの所定の高解像度の動画で記録された映像の一部を静止画として活用する撮影モードである。制御部15は、高解像度動画フォト撮影モードが設定されていればS1610へ進み、設定されていなければS1603へ進む。
S1603では、制御部15は、デジタルカメラ1400の動画撮影モードがプリキャプチャーモードであるかを判定する。プリキャプチャーモードは、AF処理や露光処理を指示する操作(SW1、SW2操作)がされる前の画像も記録するモードである。制御部15は、プリキャプチャーモードが設定されていればS1610へ進み、設定されていなければS1604へ進む。
S1604では、制御部15は、デジタルカメラ1400の撮影モードがマクロ撮影モードに設定されているかを判定する。制御部15は、撮影モードがマクロ撮影モードに設定されていればS1610へ進み、設定されていなければS1605へ進む。
S1610では、フォーカスレンズ群3を現在の位置から無限遠側に移動させた場合と至近側に移動させた場合の像倍率の変化の差を、撮影光学系の変倍動作(ズーム動作)で設定された焦点距離などの光学特性から取得する。そして、S1611では、制御部15は、取得した像倍率の変化の方向依存度(方向変化)が大きいかを判定する。制御部15は、例えば、像倍率の変化の差が予め定めた閾値より大きい場合には、方向依存性が大きい(方向変化が大きい)と判定する。制御部15は、方向依存性が大きい(方向変化が大きい)と判定した場合にはS1612へ進み、そうでない場合にはS1605に進む。
S1605では、制御部15は、S1506で求めたAF領域のボケ量評価指数を取得する。S1606で、制御部15は、ボケ量評価指数が予め設定された閾値未満であるかを判定する。制御部15は、ボケ量評価指数が予め設定された閾値未満である(すなわち合焦位置かそのすぐ近くにフォーカスレンズ群3が位置すると判断できる)場合、S1612へ進み、そうでない場合には、S1607に進む。なお、予め設定された閾値は、例えば、開放F値に応じて設定され、開放F値が小さいほど(明るいほど)大きくなる値であって、かつ上限下限を設けるようにする。
なお、上記のように、ボケ量評価指数は、ぼかし処理前後でのAF評価値の差を和で割ったものであるので、合焦位置に近ければ、ぼかし処理後の値はぼかし処理前の値に比べて十分小さくなる。すなわち、差と和の値はぼかし処理前の値に近くなるのでの、その比の値は−1に近づく。逆に大きくボケている場合、処理前後でのAF評価値の値はほとんど変化しない。よって分母の差分の値が0に近づくため、差を和で割った指数の値は0に近づく。従って、例えば指数が−0.9未満なら合焦位置かそのすぐ近くにフォーカスレンズ群3が位置すると判断することができる。
上記S1612では、フォーカスレンズ群3の位置を現在の位置から無限遠側に移動させた場合の像倍率の変化と、無限遠側とは逆の方向(至近側)に移動させた場合の像倍率の変化とを比較して、像倍率の変化の少ない方向を初期移動方向として推定した。このようにすることで、動画記録において連続して撮影された画像の像倍率の差によって、画面が振動するような動きが生じる映像品位の低下を抑制することができる。また、像倍率の差によって主被写体の位置が大きく変化すると構図が変化して撮影者の意図に反してしまう恐れのある撮影モード(高解像度動画フォト撮影・プリキャプチャー撮影・マクロ撮影等)において、撮影者の意図に反する恐れを低減することができる。
なお、撮影光学系が交換レンズである場合にも、制御部15は、焦点距離とフォーカスレンズの位置、その位置での像倍率変化の情報を、交換レンズとの通信により受け取って同様の処理を行うことができる。制御部15は、S1612の処理の後に、DFDパラメータ設定の処理を終了する。
S1607では、制御部15は、フォーカスレンズ群3の位置とAF領域のAF評価値とコントラスト値とを取得する。そして、S1608では、制御部15は、合焦位置のある方向を予測し、その方向を第二画像を得るためのフォーカスレンズ群3の移動方向に設定する。ここで、合焦位置方向の予測は、図17に示す表に従って行う。
具体的には、無限遠から至近までのフォーカスレンズ位置を複数の範囲(図17の例では5つ)に分割しておいて、制御部15は、現在のフォーカスレンズ位置がどの範囲に入るかを調べる。そして、例えば、図17に示す値に従ったボケ量評価指数の程度で分類を行う。ボケ量評価指数は、上述のように、合焦位置に近ければその値は−1に近づき、逆に大きくボケていればその値は0に近づくので、例えばボケ量評価指数の分類は図17に示すようになる。
すなわち、フォーカスレンズ群3の位置が「近」や「至近」の範囲にあって、ボケ量評価指数が大きい場合は、(図17右下に示すように)合焦位置は無限遠の方向にあると予測できる。逆にボケ量評価指数が小さい場合には、(図17左下に示すように)近(或いは至近)の範囲に合焦位置があると予測できる。
またフォーカスレンズ群3が「無限遠」や「遠」の範囲置にあって、ボケ量評価指数が大きい場合には、合焦位置は近(或いは至近)の方向にあると予測できる。逆にボケ量評価指数が小さい場合は無限遠(または遠)の方向に合焦位置があると予測できる。
そして、フォーカスレンズ群3の位置が中の範囲にある時は、ボケ量評価指数が大きい場合は合焦位置の方向を予測することができない。そこで一般的には風景や人物など被写体は比較的遠側に存在する確率が高いので、合焦位置は無限遠の方向にあると予測する。またボケ量が小さい場合は中の範囲に合焦位置があると予測できるが、この場合もどちらにフォーカスレンズ群3を移動すべきか判断することができない。そこで移動方向は無限遠の方向とする。このように、制御部15は、フォーカスレンズ位置とボケ量評価指数とに基づいて合焦位置方向を予測する。
次いで、制御部15は、DFD処理における第二画像を得るためのフォーカスレンズ群3の移動量を設定する。まず、合焦近傍にフォーカスレンズ群3が位置する場合を想定した移動量の最小値をKminとし、大ボケの場合を想定した移動量の最大値をKmaxとする。この2つの移動量と、S1506で求めたAF領域のボケ量評価指数Valを用いて、移動量Kを以下の式に従って求める。
K = (Kmin - Kmax)・Abs(Val)+Kmax
但しAbs()は()の絶対値を求めることを表す。
なお、KmaxとKminの値について、静止画撮影モードである場合の値を、動画撮影モードである場合の値よりも大きくすることができる。例えば、静止画撮影モードの場合には、Kmaxを開放深度の30倍程度、Kminを開放深度の3倍程度とし、動画撮影モードの場合には、Kmaxを開放深度の15倍程度、Kminを開放深度の1倍程度とすることができる。
そして最後に、画像再構成とボケ画像生成を行う際のPSFの持ち方についての設定を行う。例えば、PSFを持つ個数を固定(N個)とし、その間隔をボケ量評価指数に基づいて変更する。間隔はPSFを規定する際のデフォーカス量であり、デフォーカス量=0からデフォーカス量=defNの間で設定される。よって間隔defIとdefNの関係はdefN÷(N−1)となる。
静止画撮影モードの場合、PSFを持つ間隔defIを、S1506で求めたAF領域のボケ量評価指数Valを用いて、以下のように求めることができる。
defI=(defImin−defImax)・Abs(Val)+defImax
但しAbs()は()の絶対値を求めることを表す。
ここで、defImaxは合焦近傍にフォーカスレンズ群3が位置するときに、合焦位置を十分な精度で求めることができる値であり、例えば、開放深度の2程度の値とすることができる。
更に、defIminは大ボケ時を想定した際に方向判別が可能となる値であり、その焦点距離におけるフォーカスレンズ群3の全移動範囲の半分程度の値とすることができる。但し、移動範囲が広すぎると方向検出が困難になることが予想されるので、その値には上限を設ける。上限値としては、例えば焦点距離が100mm、最至近距離が1mである場合のフォーカスレンズ群3の全移動範囲の半分程度の値とすることができる。
これにより、フォーカスレンズ群3の位置が合焦位置に近い場合には、AF処理を開始させる指示(SW1)前のDFD処理で正確に合焦位置を推測することができ、AF処理開始直後に合焦位置へフォーカスレンズ群3を制御することができる。また、フォーカスレンズ群3の位置が合焦位置から離れている場合は、合焦位置の方向を正確に推測することができるため、合焦位置と逆方向へ移動させることなくフォーカスレンズ群3を制御することができる。
このため、AF処理の高速化と表示画像の品位向上を両立せることが可能となる。また動画撮影モードの場合には、静止画撮影モードの設定に対して、焦点距離によって異なる定数を掛けて、広い範囲で合焦位置の方向とデフォーカス量を探索するようにする。これにより大きくぼけた状態でも合焦位置の方向の推定精度を更に向上させ、記録される映像の品位を向上させることができる。
なお、上記の諸定数をEEPROM25の所定の領域に記録しておく場合、例えば焦点距離に依存する値を用いる際などに該当する焦点距離が記録されていない場合は、記録されている前後の値から補間計算によって記録されていない値を求めてもよい。
また、本実施形態では、S1507のDFDパラメータ設定における第二画像を得るためのフォーカスレンズ群3の移動方向の設定において、深層学習のアルゴリズムを用いてもよい。この場合の学習用のテストパターン(学習データ)は、例えば、{静止画撮影モードか動画撮影モードか、マクロ撮影モードか、像倍率変化、ボケ量評価指数、AF評価値、コントラスト値とこれらに対応するフォーカスレンズ群3の位置}を入力とする。また、各入力に対する教師信号としての移動方向をセットで持たせるようにすることができる。このようなテストパターンを与えて、公知の深層学習の手法を用いてのニューラルネットワークの結合係数を決定しておく。そしてS1507の処理において、学習の際に与えたパラメータから移動方向を設定していく。
このように本実施形態では、動画撮影モードの場合に、DFD処理を行う際のパラメータ設定を、ボケ量評価指数や像倍率変化に基づいて行うようにした。これより、DFD処理を行う際やその後のAF処理において、記録画像や表示される画像のフォーカスレンズ位置の変動による影響を抑えることが可能となる。
(実施形態4)
更に、実施形態4について説明する。なお、本実施形態は、AF処理の指示操作(SW1操作)がなされる前のDFD処理の結果、合焦位置の方向とデフォーカス量の推定とのいずれかもしくは両方が失敗した場合に、スキャンAF処理を行う点が実施形態3と異なる。本実施形態のデジタルカメラ1400は、実施形態3に係るデジタルカメラ1400と実質的に同一である。このため、実質的に同一である構成については同一の符号を付して重複する説明は省略し、相違点について重点的に説明する。
本実施形態に係るスキャンAF処理について、図18を参照して説明する。なお、図18に示すスキャンAF処理は、図15に示したS1501〜S1508を実行した後に、S1509においてSW1がオン状態になり、S1510が実行される際に開始される。本実施形態のスキャンAF処理は、フォーカスレンズ群3を、S1507で設定された移動方向へAF評価値に応じた所定の速さで移動させる。そして、フォーカスレンズ群3を移動させながら、スキャンAF処理回路14からAF評価値信号を受け取り、このAF評価値信号がピークとなるフォーカスレンズ群3の位置を探索して、合焦位置を決定する。以下、図18を参照して、具体的に説明する。なお、図18に示すAF処理は図13において説明したAF処理と一部のみが異なるため、重複する説明は省略して相違点について説明する。
S1801では、制御部15は、S1301と同様に実行して、現在のフォーカスレンズ群3の位置におけるAF評価値を取得し、レンズ位置とともに記録する。
S1802において、制御部15は、フォーカスレンズ群3を、設定された移動方向へ取得したAF評価値に応じた所定の速さで移動させる。制御部15は、更に、第一画像の特定の領域のボケ量に基づき所定の速さでフォーカスレンズを移動させて撮影した画像を用いて、移動方向を求めることが可能である。
AF評価値に応じた所定の速さVKは、S1506で求めたボケ量評価指数Valを用いて、以下の式により求められる。
VK = (VKmin - VKmax)・Abs(Val)+VKmax
但しAbs()は()の絶対値を求めることを表す。
またVKmaxとVKminの値については、静止画撮影モードの場合の値を、動画撮影モードの場合の値よりも大きくする。例えば、静止画撮影モードの場合には、VKmaxを開放深度の15倍程度、VKminを開放深度の3倍程度とする。一方、動画撮影モードの場合には、VKmaxを開放深度の8倍程度、VKminを開放深度の0.5倍程度とすることができる。
S1803では、制御部15は、スキャンAF処理回路14を制御して、所定タイミング(例えばセンサ読み出しの同期信号のタイミング)でAF評価値を取得する。制御部15は、取得したAF評価値を、そのフォーカスレンズ群3の位置とともに、例えば記憶用メモリ12等に記録する。
S1804では、制御部15は、S1803で取得したAF評価値に応じた所定の速さにフォーカスレンズ群3の移動の速さを変更する。その後、S1805〜S1809の処理を、上述したS1304〜1308と同様に実行して、本処理を終了する。
なお、上述した実施形態では、一例としてコンパクトタイプのデジタルカメラにおける焦点調整処理を例に説明したが、デジタルビデオカメラやデジタル一眼レフのライブビュー表示における焦点調整処理にも適用可能である。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。