(実施形態1)
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下では撮像装置の一例として、被写体からの光束の強度および入射角度の情報を有する画素値から構成される光線空間情報(LFデータ)を記録可能なデジタルカメラに本発明を適用した例を説明する。しかし、本発明はLFデータを記録可能なデジタルカメラに限らず、絞り値を調整してLFデータを取得可能な任意の機器にも適用可能である。また、以下の説明では、LFデータを再構成して得られる画像を再構成画像と呼ぶ。
(1 デジタルカメラの構成)
図1は、本発明の実施形態に係る撮像装置の一例としてのデジタルカメラ100とレンズ102の機能構成例を示すブロック図である。本実施形態におけるカメラシステムは、デジタルカメラ100に対して着脱可能なレンズ102内に撮影光学系101が設けられている。
被写体からの光束は撮影光学系101を介して撮像素子252の撮像面に結像する。撮影光学系101はズームレンズ110を有しており、超音波モータやステッピングモータを駆動源とするズームレンズ駆動部111によって光軸方向に駆動可能である。ズームレンズ電圧ドライバ113は、ズームレンズ駆動部111を駆動制御する電圧を発生する。
ズーム位置検出部112は、光軸Iに沿ったズームレンズ110の位置を検出するズームエンコーダである。ズーム位置検出部112は、焦点距離値に応じたパルス信号をズームレンズ制御部105に出力する。ズームレンズ制御部105は、ズームレンズ駆動部111を制御し、例えばユーザがデジタルカメラ100もしくはレンズ102に不図示のスイッチにより設定した焦点距離になる光軸I上の位置にズームレンズ110が駆動されるように追従制御を行う。またズームレンズ制御部105は、ズーム位置検出部112が出力するパルス信号を取り込む。ズームレンズ制御部105は、ユーザが設定した焦点距離になる光軸I上の位置(目標位置)、ズームレンズ110の現在位置情報などに基づいて駆動信号を演算し、このデジタル駆動信号をズームレンズ電圧ドライバ113に出力する。ズームレンズ電圧ドライバ113は、入力された駆動信号(駆動電圧)に応じて、ズームレンズ駆動部111に電力を供給するドライバ部である。ズームレンズ電圧ドライバ113は、駆動信号に対し、スイッチングを行い、ズームレンズ駆動部111に電圧を印加してズームレンズ駆動部111の駆動を行う。
また撮影光学系101は、AFレンズ120を有しており、超音波モータやステッピングモータを駆動源とするAFレンズ駆動部121によって光軸方向に駆動可能である。AFレンズ電圧ドライバ123は、AFレンズ駆動部121を駆動制御する電圧を発生する。フォーカス位置検出部122は、光軸Iに沿ったAFレンズ120の位置を検出するフォーカスエンコーダである。フォーカス位置検出部122は、被写体距離値に応じたパルス信号をAFレンズ制御部104に出力する。AFレンズ制御部104は、AFレンズ駆動部121を制御し、例えばユーザのデジタルカメラ100のレリーズスイッチ191の操作により検出された被写体距離となる光軸I上の位置にAFレンズ120が駆動されるように追従制御を行う部分である。またAFレンズ制御部104は、フォーカス位置検出部122が出力するパルス信号を取り込む。AFレンズ制御部104は、被写体距離になる光軸I上の位置(目標位置)、AFレンズ120の現在位置情報などに基づいて駆動信号を演算し、このデジタル駆動信号をAFレンズ電圧ドライバ123に出力する。
AFレンズ電圧ドライバ123は、入力された駆動信号(駆動電圧)に応じて、AFレンズ駆動部121に電力を供給するドライバ部である。AFレンズ電圧ドライバ123は、駆動信号に対し、スイッチングを行い、AFレンズ駆動部121に電圧を印加し、AFレンズ駆動部121の駆動を行う。
また撮影光学系101は、絞り140を有しており、ステッピングモータ等を駆動源とする絞り駆動部141によって絞り140の開口の大きさが制御される。絞り制御部106は、絞り駆動部141を制御し、例えば撮影する被写体の明るさに応じて適正露光量となる絞りの値を演算するとともに、該絞り値となる駆動信号を演算して絞り駆動部141に出力する。また、後述するように絞り制御部106は、絞り設定スイッチ194においてユーザが設定した絞り値、あるいはボディCPU109からの指示に応じて駆動信号を演算し、絞り駆動部141に出力する。
レンズCPU103は、レンズ102側の種々の制御を行う中央処理装置である。レンズCPU103内には、ズームレンズ制御部105と、AFレンズ制御部104及び絞り制御部106が設けられている。レンズCPU103は、レンズ102とデジタルカメラ100との間に設けられたレンズ接点190を介して、ボディCPU109との間で通信が可能である。EEPROM131は、レンズ102に関する種々の固有情報であるレンズデータなどを格納する不揮発性の記憶部である。レンズ用メモリ132は、レンズCPU103が演算処理を行う際に種々のデータを格納する揮発性の記憶部である。
撮像素子252は、例えば固体撮像素子の1つであるCMOSセンサである。任意の画素へのランダムアクセスが可能であり、ディスプレイ用に間引いた読み出しが容易に行えるため、表示部258において高い表示レートで画像を表示することができる。撮像素子252は、上述した特長を利用し、ディスプレイ画像出力動作(撮像素子252の受光領域のうち一部を間引いた領域での読み出し)および高精彩画像出力動作(全受光領域での読み出し)を行う。
撮像素子252と撮影光学系101との間にはマイクロレンズアレイ(MLA)20が配設されており、MLA20上にはマイクロレンズが格子状に並んでいる。1つのマイクロレンズには、撮像素子の複数の光電変換素子が対応付けられており、マイクロレンズに入射した光は該複数の光電変換素子に結像されて光電変換される。1つのマイクロレンズに対応付けられた光電変換素子の各々は、分割された瞳領域の各々を通過した光束に対応した画素信号を出力するためLFデータが得られる。なお、MLA20の機能や配置の詳細については図3を用いて後述する。
また、後述するように撮像素子252から得られるピント評価量および適当な露光量に基づいて、ボディCPU109は適切に撮影光学系101を調整する。該調整によって被写体からの反射光は適切な光量で撮像素子252に露光されるとともに、撮像素子252近傍で被写体像が結像する。ボディCPU109は、後述するように撮影画像のデフォーカス量(ボケ量)に基づいて主被写体の判定を行い、レンズCPU103を介してAFレンズ120の駆動を制御する。
画像処理部150は、内部にA/D変換器、ホワイトバランス回路、ガンマ補正回路、補間演算回路等を有しており、撮像素子252から入力されたLFデータに対して各種処理を行なって記録用の画像を生成する。画像処理部150で行われる各種処理には、後述する像シフト処理、像生成処理、相関計算処理が含まれる。また、画像処理部150は、生成した画像を記録部に出力を行うとともに、予め定められた方法を用いて画像、動画、音声などの圧縮を行う。さらに画像処理部150はボディCPU109の指示により生成した画像を表示部258に出力する。
ボディCPU109は、例えばCPUやMPUなどのプログラマブルプロセッサであり、例えば不図示の不揮発性メモリに記憶されたプログラムを読み出し、メモリ197に展開して実行することによりカメラシステム全体の種々の制御を行う。
ボディCPU109は、レリーズスイッチ191が操作されるとレリーズスイッチ191が半押し、又は、全押しされたことを検知し、撮像素子252の駆動、画像処理部150の動作などを制御する。ボディCPU109は、後述する撮影モードに応じて算出した絞り値に基づいて絞り駆動部141を制御するため、レンズCPU103との間で通信を行う。ボディCPU109は、さらに表示部258によって液晶モニタ等に情報表示を行う情報表示装置の各セグメントの状態を制御する。
レリーズスイッチ191は、図示しないレリーズボタンの半押し動作(SW1のON)あるいはレリーズボタンの全押し動作(SW2のON)を検出する。レリーズボタンの半押し動作の検出により、一連の撮影準備動作(測光動作や焦点調節動作等)が開始され、レリーズボタンの全押し動作(SW2のON)の検出により、撮影動作(撮像素子252から読み出されたLFデータの記録媒体への記録)が開始させる。
図2は本実施形態のデジタルカメラ100の背面図の一例を示している。選択スイッチ192は任意方向の操作が可能な選択スイッチで、不図示の公知の撮影メニューの項目を選択したり、後述するように、ユーザが主被写体を選択したりするときに用いるスイッチである。
決定スイッチ193は、不図示の公知の撮影メニューにおいてユーザが操作を決定をしたり、後述するように、ユーザが主被写体を決定したりするときに用いるスイッチである。また、絞り設定スイッチ194は、ユーザが不図示の操作ダイヤルを操作して絞り値を設定することができるスイッチである。
メインスイッチ195はデジタルカメラ100を起動させるためのスイッチである。メインスイッチ195は2つのポジション(195−1,195−2)が選択可能なスイッチである。195−1のポジションにメインスイッチ195をセットしたときは「OFF」を示し、デジタルカメラ100はスリープ状態となる。また195−2のポジションにメインスイッチ195をセットしたときは「ON」を示し、デジタルカメラ100はスリープ状態から駆動状態となり、各種スイッチの操作等を受け付けて静止画や動画の撮影のための動作を行う状態となる。
モードスイッチ196は、デジタルカメラ100の撮影モードを設定するためのスイッチである。ユーザは、少なくともユーザが設定した撮影条件を優先する撮影が可能なモードと、「リフォーカス優先撮影モード」とを設定することができる。本実施形態において「リフォーカス優先撮影モード」とは、例えば主被写体に合焦した撮影を行った後に、撮影時とは異なる被写体距離に合焦させた(例えば主被写体以外の被写体に合焦させた)画像を生成可能なLFデータを取得する撮影モードをいう。
メモリ197は、実際の記憶部に加えて記録に必要な処理回路を備えている。
表示部258はデジタルカメラ100の背面に取り付けられており、例えば撮影時や再生時に、LFデータから生成された画像データを表示する。また、撮影環境や撮影光学系101の状態等の情報を表示する場合、ボディCPU109は該情報を示すGUIデータを表示部9に表示させる。表示部258は、例えば有機EL素子により構成すれば消費電力を小さくできるとともに、表示部258の薄型化を図ることができ、ひいてはデジタルカメラ100の省電力化および小型化を図ることができる。
図3は、本実施形態における撮影光学系を模式的に示す図である。本実施形態では、光線の位置に加えて角度の情報を取得したLFデータを取得する。本実施形態では、LFデータの取得のために撮影光学系101の結像面近傍にMLA20を配置するとともに、MLA20を構成する1つのマイクロレンズに対して複数の画素を対応させている。
図3(a)は撮像素子252とMLA20の関係を模式的に示している。図3(b)は撮像素子252の画素とMLA20の対応を模式的に示す図である。図3(c)はMLA20によってMLA20の下に設けられた画素が特定の瞳領域と対応付けられることを示している。
図3(a)に示すように、撮像素子252上にはMLA20が設けられており、MLA20の前側主点は撮影光学系101の結像面近傍になるように配置されている。本実施形態では撮像素子252上のMLA20は、各マイクロレンズの前側主点が撮影光学系101の結像面近傍となるように配置される。また図3(a)の正面図(z軸負の方向にMLA20を見た図)に示されるように、MLA20は撮像素子252の光電変換素子(以下、画素という)を覆うように配置されている。
ここで、MLA20の各マイクロレンズには、図2(b)に示されるように撮像素子252の複数の画素が対応付けられている。図3(b)に示す格子状の枠は、撮像素子252の各画素を示している。20a,20b,20c,20dはMLA20を構成する各マイクロレンズを示す。図3(b)に示すように、マイクロレンズ1つに対して複数の画素が割り当てられており、図3(b)の例では25個の画素が1つのマイクロレンズに対して設けられている(各マイクロレンズの大きさは画素の大きさの5倍×5倍の大きさである)。
また図3(c)は、MLA20の各マイクロレンズに対応付けられた撮像素子252の画素に結像される光束と、撮影光学系101の瞳領域との対応関係を示している。図3(c)では便宜上、1つのマイクロレンズの主点を通りY軸と直交するXZ断面について示した該マイクロレンズ及びレンズに対応付けられた撮像素子252の画素と、Z軸と直交する射出瞳面30(XY平面)を示した瞳領域とを同一平面に示している。図3(c)において画素21、22、23、24、25は、例えば図3(b)の画素21a〜25aと対応しており、それぞれ分割瞳領域を通過した光束が結像される。つまり、MLA20のマイクロレンズによって画素21〜25の各々は撮影光学系101の射出瞳面上の特定の分割瞳領域と共役になるように設計されている。図3(c)の例では、画素21と領域31が、画素22と領域32が、画素23と領域33が、画素24と領域34、画素25と領域35がそれぞれ対応している。従って、マイクロレンズの位置、及び射出瞳面と撮像素子6の距離が定まることにより、該マイクロレンズに対応付けられた画素の各々に入射する光束の入射角度の情報が実質的に取得可能である。
図4は、いわゆるライブビュー撮影時に表示部258に表示される被写体像の様子を示している。図4において、表示部258には、被写体像258aと撮影条件(シャッタ速度、絞り値、ISO感度等)や露出レベル表示、電池残量表示等の撮影情報258bが表示されている。図4の例では、主被写体310は主被写体であり、その他の被写体320、330、もしくは、340は主被写体以外の被写体である。
また被写体像258a表示部内には、複数のAF検出枠301が設けられている。撮像素子252からのピント検出結果に基づいて選択されたAF検出枠302は別の表示形態(色違いでの表示等)で表示されるため、ユーザは合焦している主被写体部を知ることができる。
なお、デジタルカメラ100の選択スイッチ192と決定スイッチ193を用いれば、撮像素子252からのピント検出結果によらず、ユーザは複数のAF検出枠301の中から合焦させたい任意の位置のAF検出枠を選択可能である。ユーザが選択したAF検出枠302に基づいて、撮像素子252からのピント検出結果から主被写体310までの距離を演算することで撮影された画像がボケた画像になることを防止する。
(2 像生成処理および像シフトの概要)
再構成画像を生成するための像生成処理および像シフト処理の概要について図9を用いて説明する。
図9(b)は、撮像素子252が被写体像に係る光束を捕捉した面(取得面)について、再構成画像の各画素を生成する際に加算される画素を示している。図9(b)において、画素X1,i、X2,i、X3,i、X4,i、X5,iはそれぞれ、分割瞳領域1〜5の各々を通過してiで規定される位置のマイクロレンズに入射した光束に対応する画素を示している。図9では説明を簡単にするためLFデータは、瞳を1つの方向に5分割した分割瞳領域を定義し、各マイクロレンズについて該分割瞳領域の各々を通過した光束を記録したものであるとする。従って、図9(b)において縦方向には同一のマイクロレンズに対応する画素が並び、横方向には対応する光束が通過した分割瞳領域が同一である画素が並んでいる。物理的な位置との関係においては、X1,iは図3(c)の領域21から得られるデータを、X2,iは図3(c)の領域22から得られるデータを、以下添え字の3、4、5は領域23、24、25に対応していることを示している。
取得面に対応する焦点状態の再構成画像を生成するためには、図9(b)に破線で示すように各マイクロレンズに対応する画素の画素値を加算すればよい(像生成処理)。具体的には、X1,i、X2,i、X3,i、X4,i、X5,iの画素値の和Siを求めることにより、iで規定される位置のマイクロレンズに対応する、再構成画像の画素値を得ることができる。また、再構成画像を生成する際に中央の分割瞳領域3を通過した光束に対応する画素値のみを使用した場合、瞳を絞った状態と等価、即ち撮像素子に入射する光束を中央の分割瞳を通過する光束に制限した場合と等価な画像となる。このため、得られる再構成画像は、全画素を加算して得られる画像よりも被写界深度が深い画像となる。
次に図9(a)に示されるように、取得面よりも被写体寄りに規定される面(再構成面1)について再構成画像を生成する場合を考える。図3で説明したように、本実施形態の撮影光学系101は、各画素に入射する光束を特定の分割瞳領域に限定しているために、入射角度が既知である。この角度に沿って再構成面での各画素の位置を再構成する。具体的にはX1,iのように分割瞳領域の添え字が1のものは図9(d)において41に示すような角度で入射しているとする。分割瞳領域2、3、4、5はそれぞれ42、43、44、45に対応する。このとき再構成面1でのマイクロレンズXiに入射した光束は、取得面においては、Xi-2からXi+2に分散して入射していることになる。より具体的には、X1,i-2、X2,i-1、X3,i、X4,i+1、X5,i+2に分散している。再構成面1に対応する焦点状態の再構成画像を生成するためには、図9(a)に破線で示すように、入射角度に応じてシフトさせた画素を加算すれば良いことが分かる。再構成面1における再構成画像を生成するため、分割瞳領域が1のものは右に2画素、分割瞳領域が2のものは右に1画素、分割瞳領域が3のものはシフトなし、分割瞳領域が4のものは左に1画素、分割瞳領域が5のものは左に2画素、それぞれシフトさせる。これにより各画素について入射角度に応じたシフト量を与えることができる。このように光束の入射方向に基づいて再構成面における対応する画素をシフトさせることを像シフト処理と呼ぶ。
その後、図9(a)の縦方向に(即ち各分割瞳領域について)加算することで再構成面1に対応する焦点状態の再構成画像の画素値を得ることができる。具体的には、この再構成画像の画素値は、X1,i-2、X2,i-1、X3,i、X4,i+1、X5,i+2の和Siであり、Xiに入射した光の角度方向の積分値を得ることができる。これにより再構成面1での再構成画像が得られる。
ここで、図9(d)に示すように、再構成面1においてXiに輝点があるとすると、光束は取得面に対してX1,i-2、X2,i-1、X3,i、X4,i+1、X5,i+2に分散し、いわゆるボケ状態にある。しかしながら、再構成面1での再構成画像を生成すると、再びXiに輝点が生成されコントラストの高い像が得られる。図9(c)から分かるように、再構成面2においても再構成面と同様に像を生成することができる。再構成面を配置する方向が異なるとシフトさせる方向を反転させれば良い。
以上説明した像生成処理および像シフト処理によって、撮影時には合焦していない撮影画像の任意の被写体(例えば、図4に示した被写体320、330、もしくは、340)に合焦させる再構成画像を生成することが可能となる。
(3 リフォーカス優先撮影モードにおける撮影の一連の動作)
ユーザが撮影モードをリフォーカス優先撮影モードに設定して撮影を行う場合の一連の処理を図5に示すフローチャートを用いて説明する。
フローチャートに対応する処理は、ボディCPU109が、例えば不揮発性メモリに記憶されている処理プログラムを読み出し、メモリ197に展開して実行することにより実現することができる。本処理は例えばメインスイッチ195に対する操作が検出された場合に開始される。
まずS1010においてボディCPU109は、メインスイッチ195がONであるかどうかの判定を行う。ボディCPU109は、メインスイッチ195がOFFであれば、デジタルカメラ100はスリープ状態となるため処理を終了する。ボディCPU109はメインスイッチ195がONであるときは処理をS1020へ進める。
S1020においてボディCPU109は、モードスイッチ196がリフォーカス優先撮影モードに設定されているかを判定する。ボディCPU109は、撮影モードがリフォーカス優先撮影モードに設定されているときは処理をS1030に進め、リフォーカス優先撮影モードに設定されていないときは処理をS1250に進める。
S1030においてボディCPU109は、ユーザが絞り設定スイッチ194を用いて設定する絞り値に対して、絞り値の値を大きくする側(以下、小絞り側という)に制限を設ける。小絞り側の絞り値の制限について、図6を用いて説明する。
図3(c)において示したように、画素21〜25は、例えば図3(b)の画素21a〜25aと対応しており、それぞれ分割瞳領域を通過した光束が結像される。一方で、撮影光学系101において絞り140の開口径が小さくなると、分割瞳領域を通過した光束の一部が遮られ、限られた画素例えば画素23(対応する画素23a)に光束が結像される。また、図9において示したように、取得面と異なる再構成面に対応する再構成画像を生成するためには、入射方向の異なる複数の分割瞳領域を通過した光束を受光することが必要である。換言すれば、絞り140によって例えば各マイクロレンズ下の中心の画素に光束が制限されるときは、像シフト処理が制限されて再構成画像の生成ができないこととなる。
このため、絞り140を制御する際の開口径の下限値を規定するための絞り値Fminを設定する。絞り値Fminは、絞りの開口径の下限値を複数の分割瞳領域を通過した光束が通過可能な開口径の値にするように設定される。分割瞳領域を対応する画素で表すと、例えば絞り値Fminは、MLA20を構成する各マイクロレンズ20aのFナンバーをf、1つのマイクロレンズに対して格子状に配列された画素群の一列の画素数をnとして、以下のように定義される。
Fmin= nf/3(nが奇数のとき)
Fmin= nf/2(nが偶数のとき)
図6(a)は、例えば一列分の画素数が5個(n=奇数)の場合に、マイクロレンズ20aの中心に配列されている画素23aの周囲に配列された画素が被写体からの光束を受光している様子を示している。図6(a)のハッチングで示した各画素は被写体からの光束を受光している画素である。即ち、絞り値Fminに対応する絞りの開口径により画素23aの周囲に配列された画素22a、24a、23aa、23ab、23ac、23ad、23ae、23afに被写体からの光束が入射する。同様に、図6(b)は、例えば一列分の画素数が4個(n=偶数)の場合、マイクロレンズ20aの中心に配列された画素22a、23a、22aa、22abに被写体からの光束が入射する。このように複数の分割瞳領域を通過した光束を受光可能にすることで、LFデータから再構成画像の生成が可能になる。
ボディCPU109は、Fminを小絞り側の制限値として設定する。絞り設定スイッチ194において設定可能な絞り値は、例えば、開放側の絞り値はレンズ102の撮影光学系101の開放絞り値であるF2.8から、小絞り側はFminまでに制限されることとなる。
S1040においてボディCPU109は、レリーズスイッチ191の半押し動作が行われたかどうかの判断を行う。ボディCPU109は反押し動作が行われていると判断したときは処理をS1050へ進める。
S1050においてボディCPU109は、ユーザが絞り設定スイッチ194にて設定した絞り値を読み込み、S1030において設定された絞り値(Fmin)の制限値を超えたかを判断する。即ち、ボディCPU109は、ユーザにより指定されている絞りの開口径が再構成画像を生成可能な開口径の下限値を下回るかを判断する。ボディCPU109は、ユーザの設定した絞り値が制限値を超えている場合は処理をS1050に処理を進め、制限値を超えていない場合は処理をS1300へ進める。
S1300においてボディCPU109は、S1050において読み込んだユーザの設定した絞り値を、レンズ接点190を介してレンズCPU103に送信する。絞り制御部106は設定された絞り値に応じて絞り駆動部141を駆動制御し、絞り140をユーザの設定した絞り値に相当する開口径にする。ボディCPU109はその後処理をS1080へ進める。
S1060においてボディCPU109は、表示部258内に例えば「絞り値が制限値を超えました。制限値に設定変更します」等の警告表示を行って、ユーザの設定した絞り値が制限値を超えたことをユーザに通知すると共に、ボディCPU109は設定された絞り値を制限値に変更して、S1070に処理を進める。
S1070においてボディCPU109は、S1060にて設定した制限値の絞り値を、レンズ接点190を介してレンズCPU103に送信する。そして、その制限値の絞り値に応じて絞り制御部106は絞り駆動部141を駆動制御し、絞り140を設定された制限値である絞り値に相当する開口径にする。その後、ボディCPU109はS1080に処理を進める。
S1080においてボディCPU109は、撮像素子252を適当な時間露光して、読み出す(A/D変換する)ことによりデータを取得する。なお、露光時間と露光量から撮影において適当な露出量を計算するようにしてもよい。
S1090においてボディCPU109は、相関計算処理を行う。相関計算処理では、いわゆる位相差AFによるピント位置を求めることができる。相関計算処理は、予め設定された評価位置の数(いわゆるAF検出枠の数)に対応して繰り返し演算を行う。相関計算処理は、適切に設定された評価枠(評価対象の領域)の大きさに応じた画素数の範囲で相関計算を行う。相関計算は例えばΣ|Ai − Bi|により計算すれば良い。ここで、Aiは特定の瞳領域を通過したi番目の画素の輝度を示している。BiはAiとは異なる瞳領域を通過したi番目の画素の輝度を示している。例えば図3において、画素22に対応する画素を並べたものをAi、画素24に対応する画素を並べたものをBiとすれば良い。また相関計算の評価値は、予め設定された評価点の数(焦点合わせの探索を行うピントの深さに対応)だけ得られる。上記に示したΣ|Ai − Bi|という評価式においては、相関値が小さくなった個所が最もピント状態が良い個所に対応している。相関評価値が最良となる点を相関量評価に基づく最良ピント位置として格納する。
S1100においてボディCPU109は、S1090において求めたピント位置から各AF検出枠301でのデフォーカス量を算出する。
S1110においてボディCPU109は、S1100で求めた各AF検出枠301でのデフォーカス量からユーザが主被写体としている被写体を判定する。具体的には、ボディCPU109は例えば各AF検出枠301でのデフォーカス量の分布状況やその絶対値の差から、ある特定の値及びその近傍のデフォーカス量となっているAF検出枠301の数が多いエリアを特定する。ボディCPU109はそのエリア内の被写体を主被写体310と判定すると共に、そのエリアで一番デフォーカス量が小さいものをピント位置のAF検出枠302として表示する(図4参照)。あるいは、前述のようにユーザが選択スイッチ192により合焦させたい位置のAF検出枠302を指定した場合、ボディCPU109は指定されたAF検出枠302におけるデフォーカス量と類似するデフォーカス量を持つAF検出枠を特定しても良い。このとき、該AF検出枠が分布するエリア内の被写体を主被写体310と判定しても良い。なお、ユーザが主被写体310を指定する場合は、ボディCPU109表示部258内に例えば「主被写体を選択/決定して下さい」等の表示を行えば、ユーザにとっては利便性が向上する。また、撮影範囲内(図4で被写体像258a)においてAF検出領域外(AF検出枠301が配置されていない領域)となる被写体(例えば、被写体330及び340)に対してもS1060の処理によりデフォーカス量が得られている。このためボディCPU109は主被写体310以外の被写体のデフォーカス量をメモリ197に記憶させても良い。
S1120においてボディCPU109は、S1110の演算結果をレンズ接点190を介してレンズCPU103へ送信して、AFレンズ120を駆動させる。ボディCPU109はS1110により求まった主被写体310が合焦状態となる位置にAFレンズ120を移動させる。
S1130において画像処理部150は、ボディCPU109の指示に応じて像生成処理を行う。像生成処理の動作の詳細は図8を用いて後述するが、これにより撮像素子252に結像した主被写体310の像がメモリ197に生成される。
S1140においてボディCPU109は、S1130にて生成された主被写体310に合焦した画像を撮影前のプレビュー画像として表示部258に表示する。
S1150においてボディCPU109は、ユーザが絞り設定スイッチ194を操作することによって絞り値が変更されたかを判断する。これは、S1140で表示部258に表示されたプレビュー画像を確認後、撮影前にユーザが絞り値を変更してから撮影する場合があるためである。ボディCPU109はすでに取得している絞り値と絞り設定スイッチ194の絞り値を比較して、絞り値が異なる場合は処理をS1050に進め、変更されていない場合はS1150に処理を進める。
S1160においてボディCPU109は、レリーズスイッチ191が全部押し込まれたか(SW2がオンになったかどうか)の判断を行う。ボディCPU109はレリーズスイッチ191が全部押し込まれていないときはS1060に戻り、全部押し込まれているときはS1170に処理を進める。
S1170において、ボディCPU109は撮影動作を制御すると共に、撮像素子252に結像した主被写体310の像を、公知の画像処理技術を経て画像処理部150で処理した記録画像としてメモリ197もしくは不図示の記録媒体に記録する。
S1180においてボディCPU109は、S1170で生成した記録画像を表示部258に表示する。これにより、ユーザは撮影直後に主被写体310に合焦した画像を確認および取得することができる。
S1190においてボディCPU109は、メインスイッチ195がOFFになったかどうかのボディCPU109が判断を行い、メインスイッチ195がOFFの場合は処理をS1040に戻し、メインスイッチ195がONの場合は一連の処理を終了する。
一方、S1250においてボディCPU109は、絞り値の制限を解除する。これにより、ユーザは自分が意図する絞り値で被写体を撮影することが可能になる。
S1260において、通常の撮影動作を行なって処理を終了する。なおS1260の動作は公知の動作でありため詳細な説明を省略する。
(4 像生成処理の動作)
上述の像生成処理の動作について、図7を用いて説明する。なお本実施形態においては取得したLFデータはS1140においてプレビュー表示を行うために再構成画像が生成される。このため、取得面において入射した光束を再現した画像を生成するものであるから、像シフト処理を行うことなく像生成処理が行われる。
S1610において、画像処理部150はS1640における加算処理のための領域のデータを初期化する(0で埋める)。このときのデータ領域の大きさはMLA20のマイクロレンズの数量あれば良い。
S1620からS1660はMLA20のマイクロレンズ数に基づくループを形成している。S1620において、MLA20を構成するマイクロレンズの数に応じてループ計算が実行される。例えば、図3に示した例では、元の撮像素子の画素数を25分割(瞳分割の数)した数がマイクロレンズの数となる。画像処理部150はマイクロレンズの数だけループ処理を行なうと処理をS1670に進める。
S1630からS1660はさらに瞳分割の数に応じたループを形成している。画像処理部150は瞳分割の数だけループ処理を行うと処理をS1660に進める。即ち再び処理はS1620へ戻る。
S1640において、画像処理部150は処理対象であるマイクロレンズに対応する画素の画素値を加算する。瞳分割の数に応じた数だけループ計算が実行されると、例えば、図3に示した例では、25個に分割されていた画素について、25個のそれぞれの瞳位置からの光束を受光した画素が加算される。また図9の例では各マイクロレンズXiについて、画素値の和Siが求められる。画素値の総和シフト量が画素の整数倍でない場合は、S1640において、適切に内分されながら加算される(重なっている面積に応じて適切に加算すれば良い)。
S1670において、呼び出し元のS1130に戻る。
以上本実施形態における一連の動作を説明した。なお本実形態では、絞り値の制限値をマイクロレンズのFナンバーと光束を受光する画素数により規定するものして説明したが、絞り値の制限値の設定方法はこれに限らない。画像解析によって得られる被写体の特徴量に基づいて制限値を設定してもよい。例えば、公知の顔検出処理で得られる顔領域の被写体距離と深度の情報に基づいて、顔領域のリフォーカスが可能な範囲で絞り値を制限することなどが考えられる。
以上説明したように、本実施形態では絞りの開口径の下限値を複数の分割瞳領域を通過した光束が通過可能にする値にすることで、再構成可能なLFデータを取得できるようにした。即ち撮影後に異なる条件の画像を生成可能なLFデータを出力することが可能になる。また本実施形態ではリフォーカス優先撮影モードに設定されているときは絞り値を再構成可能なLFデータを取得可能な絞り値に制限するようにした。これによりユーザが絞り値を増大させてLFデータを取得しようとする場合であっても撮影後に異なる条件の画像を生成可能なLFデータを出力することが可能になる。
さらに本実施形態では、絞り値を再構成可能なLFデータを取得可能な絞り値に制限した場合、ユーザに対する通知を行なうようにした。これによりユーザが絞り値を増大させた操作を行っても、ユーザは撮影後に異なる条件の画像を生成可能なLFデータが出力されることを認識することができる。
(実施形態2)
上述した実施形態1では、リフォーカス優先撮影モードに設定されている場合に、異なる条件の再構成画像をLFデータから生成できなくなる絞り値をユーザが設定できないように制御する方法について説明した。本実施形態では、ユーザに所望の絞り値の設定を許容した上で、ユーザの所望する絞り値に対応する画像を提示しつつ、異なる条件の再構成画像を生成可能なLFデータを記録する方法について説明する。本実施形態の説明において、デジタルカメラ100の機能構成は実施形態1と同一であるものとし、説明は省略する。
(1 絞りを設定した場合の再構成画像の生成の概要)
図11を用いて、異なる条件の再構成画像をLFデータから生成できなくなる絞り値がユーザにより設定された場合に、対応する再構成画像をLFデータから生成する原理について説明する。
図11は絞り140の開口径と、撮像素子252上に結像する物体(被写体)からの光束の関係を示している。図11では、それぞれ51は物体平面を、51a、51bは物体上の適当な点を、52は撮影光学系101の瞳平面を、61、62はMLA20上の特定のマイクロレンズをそれぞれ示している。また、撮像素子252、MLA20、領域31〜35は図3で示すものにそれぞれ対応している。
物体上の点51aから出射して瞳平面上の領域31及び33を通過する光束を実線で、物体上の点51bから出射して瞳平面上の領域31及び33を通過する光束を破線で図示した。図11の例では、図3にて説明したように、撮影光学系101の結像面近傍にMLA20を配置することで、撮像素子6と撮影光学系101の瞳平面52が共役の関係にある。さらに、物体平面51とMLA20が共役の関係にある。このため物体上の点51aから出た光束はマイクロレンズ61に、51bを出た光束はマイクロレンズ62に到達し、領域31から35それぞれを通過した光束はマイクロレンズ下に設けられたそれぞれ対応する画素に到達する。
例えば絞り140の開口径が所定の絞り値に設定された場合、該開口径を介した被写体からの光束は、瞳平面52に矢印71で示した領域(領域32〜34の全ておよび領域31及び35の一部)を通過する光束となる。そして瞳平面52を通過した光束はMLA20の下のそれぞれ対応する画素(図3(c)では画素21〜25)に到達する。各光束を受光した画素の情報に対して像生成処理を行うことで、設定された所定の絞り値に対応した被写界深度を有する被写体像を得ることができる。
一方、像シフト処理を行うことにより絞りを絞った状態と等価な再構成画像を得ることができる。所望の再構成画像の絞り値に対応した仮想的な絞りの開口径が矢印72で与えられているとする。被写体からの光束は瞳平面52では矢印72で示した領域(領域32〜34のほぼ全て)を通過する光束となる。そして該光束はMLA20の下のそれぞれ対応する画素(図3(c)では画素22〜24)に到達する。つまり、仮想的に到達した光束に対応する画素値を用いればより絞りを絞った状態と等価な再構成画像が生成される。即ち現に光束を受光した画素21〜25のうちの画素22〜24の情報を用いて再構成画像を生成することができる。よって、より大きな開口径に絞りを制限して現に取得した画素の情報を用いて、より開口径の小さな再構成画像を得ることができる。換言すれば、撮影後にユーザの設定した被写界深度に変更した再構成画像を得ることができる。
図10は実施形態2に係るリフォーカス優先撮影モードで撮影する場合の一連の処理を示すフローチャートである。以下、図10を用いて、撮影後にユーザが絞り値コントロール処理を行う場合の動作について説明する。
S3010からS3060、及び、S3310、S3320、S3400の動作は、それぞれ実施形態1で説明したS1010からS1060、及びS1250、S1260、S1300に対応するため、説明を省略する。
S3070においてボディCPU109は、S3050(S1050)において比較に用いた、ユーザにより設定された絞り値をメモリ197に記憶させ、S3080に処理を進める。
S3080からS3190の動作は、実施形態1で説明したS1070からS1180に対応するため、その説明を省略する。
S3200においてボディCPU109は、S3180で撮影した主被写体に合焦した撮影画像に対して、被写界深度を変更するのかどうかのユーザからの入力を指示を待つ。具体的には、主被写体310に合焦した画像を表示部258に表示すると共に、例えば「絞り値の変更を行いますか?」等の表示を行って、ユーザが被写界深度を変更するかどうかの確認を行う。このとき「Yes」および「No」の表示等を行い、選択スイッチ192等により「Yes」という表示が選択された場合、S3210に処理を進める。一方、「No」という表示が選択された場合、ボディCPU109はS3290に処理を進める。
S3210においてボディCPU109は、S3070にてメモリ197に記憶させた、ユーザにより設定された絞り値を取得する。
S3220においてボディCPU109は、ユーザにより設定された絞り値が小絞り側の制限値を超えているかを判断する。該制限値を超えていると判断したときは、S3220に処理を進め、該制限値を超えていないと判断したときは、処理をS3500に進める。S3500においてボディCPU109は、ユーザが絞り設定スイッチ194にて入力した絞り値を取得すると、S3230に処理を進める。
S3230においてボディCPU109は、ユーザにより設定された絞り値あるいはS3500において取得した絞り値を用いて、該絞り値に対応する再構成画像を生成するため各マイクロレンズ位置に対して像シフト処理を行う。像シフト処理の動作を図8に示す。ボディCPU109は、処理をS1710に進め、画像処理部150に像シフト処理を実行させる。
S1710からS1760はループを形成し、瞳分割の数に応じた数だけループ計算が実行される。例えば、図3に示した例では、瞳領域は25個に分割されていたので、25個のそれぞれの瞳位置に応じた計算がなされる。図9を用いて説明したように、再構成画像の生成においては同じ再構成面であっても入射角度が異なると像をシフトさせる量が異なる。瞳分割の数に応じたループの処理は、各入射角度に応じて各画素のシフト量を計算するためのものである。
S1710では、画像処理部150は処理が瞳分割の数分行われたかを判定し、処理回数が瞳分割の数より少ないときは処理をS1730に進め、処理回数が瞳分割の数に達したときは処理をループを終了してS1770に処理を進める。
S1720において画像処理部150は、瞳位置情報を取得する。瞳位置情報は、撮像素子252上の各画素とMLA20との対応関係が保存されており、各画素がどの分割瞳領域の光線を受光しているかを示す情報である。
S1730において画像処理部150は取得した瞳位置情報に基づいて現在処理対象となっている各分割瞳領域での像シフト量を計算する。
S1740では、S1730の情報を元に同じ入射角の光線を得ている(同じ分割瞳領域からの光線を得ている)画素をシフトさせる。同じ入射角の光線を得ている画素は例えば図3(b)の25aと25bが該当する。このような画素がMLA20を構成するマイクロレンズの数だけ存在している。
S1760において画像処理部150は、呼び出し元のS3230に処理を戻す。
S3240において画像処理部150は、S3230においてシフトされた画素を用いて、像生成処理を動作させる。これにより、ユーザが設定した絞り値によって得られる被写界深度の再構成画像が生成される。
S3250においてボディCPU109は、S3240にて生成された再構成画像をプレビュー画像として表示部258に表示する。
S3260においてボディCPU109は、表示した再構成画像に対するユーザからの入力を待つ。具体的には、表示部258に表示している、被写界深度を変更した画像と共に、例えば「この被写界深度でよろしいですか?」等の表示を行って、ユーザが望んでいた被写界深度を有する画像が得られたどうかの確認を行う。この時、さらに「OK」と「キャンセル」の表示等があり、ユーザにより「OK」選択された場合、ボディCPU109はユーザが望んでいた被写界深度を有する画像が得られたと判断して、S3270に処理を進める。一方、ユーザにより「キャンセル」が選択された場合、ユーザが望んでいた被写界深度を有する画像が得られなかったと判断して、S3600に処理を進める。
S3270においてボディCPU109は、生成した再構成画像をメモリ197や不図示の記録媒体に保存するかどうかの確認を行う。具体的には、ボディCPU109は表示部258に再構成画像を表示すると共に、例えば「保存しますか?」等の表示を行って再構成画像を保存するかどうかの確認を行う。このとき、さらにボディCPU109は「する」と「しない」の表示をさせ、ユーザにより「する」が選択された場合、S3280に処理を進める。一方、ボディCPU109は、ユーザにより「しない」が選択された場合、処理をS3700へ進める。
S3280においてボディCPU109は、再構成画像をS3180にて記録した主被写体310に合焦した画像の名前とは別の名前でメモリ197や不図示の記録媒体に保存して、処理をS3290へ進める。
S3290においてボディCPU109は、S1190同様の処理を行い、一連の動作を終了させる。
一方、S3600においてボディCPU109は、ユーザが絞り設定スイッチ194を操作して絞り値を変更したかどうかを判定する。ボディCPU109が設定スイッチ194による信号から絞り値が変更されたと判定した場合は、S3230に戻って、一連の動作を繰り返す。一方、絞り値が変更されていないときは再びS3600に処理を戻してユーザのよる入力を待つ。また、S3700においてボディCPU109は、S3240にてメモリ197に生成した再構成画像を消去して、S3290へ進める。
なお、実施形態2では撮影後にユーザに被写界深度の変更有無を確認してから該処理の実行を行っている。しかし例えばユーザの設定した絞り値が制限値よりも小絞り側である場合には、撮影後に自動的に被写界深度を変更するような撮影モードを設定すれば、ユーザの利便性はさらに向上し得る。本発明ではデジタルカメラ100とレンズ102が着脱可能であるとしたが、これに限定せず、デジタルカメラ100とレンズ102が一体化しているデジタルカメラでも上記で説明したのと同様な効果が得られることは言うまでもない。
以上説明したように、本実施形態においては、絞りの開口径の下限値を複数の分割瞳領域を通過した光束が通過可能にする値にすることで、再構成可能なLFデータを取得し、ユーザによる指示に基づいて再構成画像の生成を行った。これにより、撮影時にユーザが所定の絞り値を超えて絞り値を増大させた場合であってもユーザの所望の再構成画像を生成できる。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。