以下、図面を参照しながら、実施形態を説明する。以下の各実施形態では、被写体を撮影して、動画像や静止画像のデータを、各種の記録メディアに記録する撮像装置がデジタルカメラである場合を例に挙げて説明する。しかしながら、撮像装置は、デジタルカメラに限定されず、ビデオカメラであっても、スマートフォンやタブレット等の各種の携帯機器に含まれるものであっても良い。また、撮像装置は、工業用カメラ、車載用カメラ、または医療用カメラに適用されるものであっても良い。尚、記録メディアとしては、例えば、テープ、固体メモリ、光ディスク、および磁気ディスク等が挙げられる。また、以下の各実施形態では、画像処理装置が撮像装置に含まれる場合を例に挙げて説明する。しかしながら、画像処理装置は、撮像手段を備える装置とは別の装置であっても良い。
(第1の実施形態)
まず、第1の実施形態を説明する。
図1は、デジタルカメラ100の機能構成の一例を示すブロック図である。
システム制御部101は、例えばCPUである。システム制御部101は、デジタルカメラ100が備える各ブロックの動作を制御する。具体的にシステム制御部101は、デジタルカメラ100が備える各ブロックの動作プログラムを読み出し、システムメモリ103に展開して実行することにより、各ブロックの動作を制御する。デジタルカメラ100が備える各ブロックの動作プログラムは、例えば、不揮発性メモリ102に記憶されている。
不揮発性メモリ102は、例えばEEPROM等の電気的に消去・記録可能なメモリである。不揮発性メモリ102は、デジタルカメラ100が備える各ブロックの動作プログラムに加え、各ブロックの動作において必要なパラメータ等を記憶する。システムメモリ103は、例えばRAMのような揮発性メモリである。また、本実施形態では不揮発性メモリ102には、好適な画像を得るために必要な処理情報が記憶されている。システムメモリ103は、各ブロックの動作プログラムの展開領域としてだけではなく、各ブロックの動作において出力された中間データ等が一時的に記憶される格納領域としても用いられる。
システムタイマ105は、デジタルカメラ100に内蔵されるタイマである。システムタイマ105は、システム制御部101により実行される各プログラムや処理における経過時間の計測やタイムスタンプ等に用いられる。
撮像ユニット120は、被写体を撮像し、画像データを出力するユニットである。撮像ユニット120は、撮影レンズ121、シャッタ122、撮像素子123、およびA/D変換部124を有する。撮影レンズ121は、フォーカスレンズやズームレンズ、カラーフィルタ等を含む撮影レンズ郡である。撮影レンズ121は、絞りおよびNDフィルタ機能を備えるシャッタ122を介して光学像を撮像素子123に結像する。撮像素子123は、例えばCCDやCMOSセンサ等の撮像素子であり、撮影レンズ121を介して結像された光学像をアナログ画像信号に変換してA/D変換部124に出力する。A/D変換部124は、撮像素子123から入力されたアナログ画像信号に対してA/D変換処理を適用することにより、アナログ画像信号をデジタル画像信号(画像データ/フレーム)に変換する。
画像処理部104は、撮像ユニット120から出力された画像データ、または後述するメモリ制御部106によりメモリ107から読み出された画像データに対し、種々の画像変換処理を適用する。種々の画像変換処理には、所定の画素補間処理や、縮小処理等のリサイズ処理や、色変換処理等が含まれる。また、画像処理部104は、A/D変換部124より入力されたデジタル画像信号を用いて露出制御や測距制御に係る演算処理を実行し、当該演算処理の結果をシステム制御部101に出力する。システム制御部101は、当該演算処理の結果に基づき、不図示の駆動系により撮影レンズ121およびシャッタ122を動作させて露出制御、測距制御、およびEF(フラッシュプリ発光)処理等の動作を開始させる。
メモリ制御部106は、メモリ107からの情報の読み出しと、メモリ107への情報の書き込みとを制御するブロックである。メモリ制御部106は、A/D変換部124より入力されたデジタル画像信号、または画像処理部104により各種処理が適用されて出力された画像信号を、メモリ107に書き込む。メモリ107には、撮影中の画像のフレームに係る画像群に加え、撮影中の音声の情報も書き込まれる。このため、メモリ107は、当該情報を格納するために十分な記憶容量を有するように設計されているものとする。
ストロボ113は、撮影時にストロボ光の発光動作を行う。ストロボ制御部114は、ストロボ113の発光動作を制御する。入力操作部115は、デジタルカメラ100が備える操作部材(電源ボタン、モード切り替えSW、および撮影ボタン等)を有するユーザインタフェースである。入力操作部115は、ユーザによる各操作部材の操作がなされたことを検出すると、当該操作に対応する制御信号をシステム制御部101に伝送する。I/F111は、記録媒体112とデジタルカメラ100とを相互に接続するためのインタフェースである。記録媒体112には、例えば記録媒体I/F111を介して、MPEG等の所定の符号化形式に従って符号化部110により符号化された画像データおよび音声データが記録される。記録媒体112は、例えばメモリカードやHDD等の、デジタルカメラ100に着脱可能に接続される記録装置である。
このような構成をもつ本実施形態のデジタルカメラ100の処理の一例を、図2のフローチャートを用いて説明する。尚、図2のフローチャート(全体処理)は、例えば、デジタルカメラ100において撮影の指示がなされた際に開始されるものとする。
S200において、システム制御部101は、撮像処理を行う。具体的にシステム制御部101は、画像処理部104による演算処理の結果を取得し、露出値を決定する。露出値は、シャッタスピード、絞りの開口量、およびISO感度の設定を含む、撮像ユニット120に係る制御量である。システム制御部101は、決定した露出値を撮像ユニット120に設定する。システム制御部101は、撮像ユニット120により時系列的に連続して撮像されたフラッシュ画像と複数の非フラッシュ画像とを取得する。このように本実施形態では、例えば、S200において、ストロボ光が発光された状態で撮像された発光画像と、ストロボ光が発光されていない状態で撮像された非発光画像とを取得することの一例が実現される。
ここで、図3を参照しながら、本実施形態のデジタルカメラ100で撮像される画像の一例を説明する。図3(a)は、フラッシュ画像310の一例を示す。図3(b)、図3(c)、図3(d)は、それぞれ1枚目の非フラッシュ画像320、2枚目の非フラッシュ画像330、3枚目の非フラッシュ画像340を示す。フラッシュ画像310は、ストロボ光を発光して撮像された画像であり、非フラッシュ画像320、330、340は、ストロボ光を発光せずに撮像された画像である。図3(a)~図3(d)は、フラッシュ画像310、1枚目の非フラッシュ画像320、2枚目の非フラッシュ画像330、3枚目の非フラッシュ画像340の順に連続して撮像される画像である。尚、1枚目~3枚目の非フラッシュ画像320、330、340の後にフラッシュ画像310を連続して撮像してもよい。
フラッシュ画像310は、非フラッシュ画像320、330、340に比べ、背景が暗い。これは、フラッシュ画像310を撮像する際には、非フラッシュ画像320、330、340に比べ、ストロボ光を発光する分、露出を下げるためである。システム制御部101は、主要被写体302が適正の明るさになるように例えば露出を1段下げる。そして、システム制御部101は、非フラッシュ画像の適正な露出の明るさに合うようにストロボ113からストロボ光が発光されるようにストロボ制御部114を制御し、ストロボ光が発光された状態で撮像ユニット120により撮像を実行させる。
従って、非フラッシュ画像320、330、340は、フラッシュ画像310に比べ、ストロボ光が届かない領域303(フラッシュ画像310の領域301に対応する領域)で明るさが1段高くなっている。また、非フラッシュ画像320、330、340を撮像する際にはストロボ光が発光されないため、光量が低い。よって、非フラッシュ画像320、330、340は、画像全体にノイズが多く含まれた画像となる。更に、フラッシュ画像310の、ストロボ光が当たっていない領域301に関しては、非フラッシュ画像320、330、340よりもノイズが1段悪化した画像となる。フラッシュ画像310および非フラッシュ画像320、330、340は、撮影指示に基づいて本撮影された画像である。
続いて図4を参照しながら、本実施形態のデジタルカメラ100で撮像された画像に対し画像処理を行うことで生成される画像の一例について説明する。図4(a)は、ゲイン調整後のフラッシュ画像410の一例を示す。フラッシュ画像410は、図3(a)に示すフラッシュ画像310に対し明るさが1段分明るくなるようにデジタルゲインを掛けた画像である。フラッシュ画像410の背景領域401の明るさは、図3(b)~図3(d)に示す非フラッシュ画像320、330、340の明るさと合っている。また、図4(b)は、背景画像420の一例を示す。背景画像420は、後述する図2に示すフローチャートのS202の処理によって、非フラッシュ画像320、330、340と、フラッシュ画像410とを合成した画像である。このように本実施形態では、例えば、ゲイン調整後のフラッシュ画像410を生成することにより、前記発光画像の背景の領域の明るさが前記非発光画像の明るさに近づくように前記発光画像の明るさを調整することの一例が実現される。また、明るさが調整された前記発光画像は、例えば、ゲイン調整後のフラッシュ画像410により実現される。
図2の説明に戻り、S201において、システム制御部101は、位置合わせ処理を行う。具体的にシステム制御部101は、図4(a)に示すフラッシュ画像410と図3(b)~図3(d)に示す非フラッシュ画像320、330、340とを合成するためにこれらの画像のうちの所定の1枚の画像を基準に各画像の位置合わせを行う。この処理を行うことで、フラッシュ画像410と複数の非フラッシュ画像320、330、340とにおける手ブレ等の影響を改善することができる。このように本実施形態では、例えば、S201により、複数の非発光画像の位置を合わせることの一例が実現される。尚、本実施形態では、フラッシュ画像310、複数の非フラッシュ画像320、330、340の順に撮像を行う場合を例に挙げて説明する。
画像の位置合わせ方法の一例としては、動きベクトルを求めて、動きベクトルの向きおよび大きさを基にした変換係数を算出し、変換係数に基づいて画像を変形させる方法がある。例えば、基準画像から所定サイズのテンプレート画像を作成し、位置合わせ対象画像とテンプレート画像とのマッチング処理(テンプレートマッチング処理)を行うことで、動きベクトルを算出する。尚、このような動きベクトルを用いた位置合わせについては、特許文献2に記載されているので、ここでは、その詳細な説明を省略する。また、位置合わせの方法は、前述したものに限定されず、様々な手法があるため、それらの手法を使用して位置合わせ処理を行っても良い。
次に、S202において、システム制御部101は、背景画像生成処理を行う。図4(b)に示す背景画像420は、図3(b)~図3(d)に示す非フラッシュ画像320、330、340と、図4(a)に示すフラッシュ画像410とを合成することで作成される。背景画像生成処理については後で詳しく述べる。本実施形態では、例えば、S202により、前記発光画像と前記複数の非発光画像とを合成した画像を、前記非発光画像に基づく画像として生成することの一例が実現される。また、前記非発光画像に基づく画像は、例えば、背景画像420により実現される。
次に、S203において、システム制御部101は、主要被写体置き換え領域検出処理を行う。具体的にシステム制御部101は、図3(a)に示すフラッシュ画像310と、図4(b)に示す背景画像420とを合成するための主要被写体置き換え領域を検出する。主要被写体置き換え領域は、フラッシュ画像310の領域であって、背景画像420に対して置き換える主要被写体の領域である。S203では、図4(a)に示すフラッシュ画像410と図3(b)~図3(d)に示す非フラッシュ画像320、330、340とを用いて、動く被写体の領域を除去し、ストロボ光が当たっている領域を検出する。主要被写体置き換え領域検出処理については後で詳しく述べる。本実施形態では、例えば、S203により、複数の前記非発光画像の画素情報の変化に基づいて、前記発光画像において動きのある被写体の領域を検出することの一例が実現される。また、動きのない被写体の領域は、例えば、主要被写体の領域により実現される。
次に、S204において、図1のシステム制御部101は、S203の処理で求めた主被写体置き換え領域の検出結果に基づいて、フラッシュ画像310と背景画像420とを合成する。本実施形態では、例えば、S204により、前記発光画像と、前記非発光画像に基づく画像とを合成することの一例が実現される。図5を参照しながら、フラッシュ画像310と背景画像420とを合成する方法の一例を説明する。
図5(a)は、フラッシュ画像310の一例を示し、図5(b)は、背景画像420の一例を示す。図5(c)は、S203の処理で求めた主要被写体置き換え領域の検出結果530の一例を示す。図5(d)は、本実施形態の最終画像540である。図5(c)において、領域501は、図5(a)に示すフラッシュ画像310のうち、背景画像420に合成する領域(すなわち、主要被写体置き換え領域)を示す。また、領域502は、図5(b)に示す背景画像420を合成する領域を示す。従って、システム制御部101は、図5(c)に示す主要被写体置き換え領域の検出結果530に応じて、フラッシュ画像310と背景画像420とを合成し、最終画像540を生成する。
以上、図2のフローチャートを用いて、フラッシュ画像と非フラッシュ画像とを合成する全体の処理の一例を説明した。
続いて、図6のフローチャートを参照しながら、図2のS202の背景画像生成処理の一例を詳しく説明する。ここでは一例として、1枚の(ゲイン調整後の)フラッシュ画像410と、3枚の非フラッシュ画像320、330、340とを合成して背景画像420を生成する処理を説明する。
S600において、システム制御部101は、合成処理を行った回数を記録するレジスタの値iを初期化(レジスタの値iに「1」を設定)する。
次に、S601において、システム制御部101は、レジスタの値iが、合成する回数N(ここではN=3)を超えていないかを判定する。この判定の結果、真の場合(レジスタの値iが、合成する回数Nを超えていない場合)、処理はS602のステップに移る。一方、偽の場合(レジスタの値iが、合成する回数Nを超えている場合)、システム制御部101は、背景画像生成処理を終了し、この時点で得られている画像を背景画像420とする(図4(b)を参照)。
次に、S602において、システム制御部101は、差分情報を算出する。図3、図4、および図7を参照しながら、差分情報を算出する処理の一例を説明する。
まず、システム制御部101は、合成基準画像と、合成対象の画像とのフレーム間の差分情報を算出する。システム制御部101は、例えば、図3(b)に示す1枚目の非フラッシュ画像320を合成基準画像に設定する。1枚目の非フラッシュ画像320と2枚目の非フラッシュ画像330とのフレーム間の差分情報は、図7(a)に示す差分情報710となる。差分情報は、例えば、各画像の明るさまたは色差のフレーム間の画素ごとの差分値で表わされる。図7に示す例では、差分値の絶対値が閾値を上回る領域を、領域701のように白い領域で表す。システム制御部101は、この白い領域701で示されている領域を被写体が動いている領域と判断する。システム制御部101は、黒い領域702を被写体が動いていない領域と判断する。以上の処理と同様の処理を行うことで、図7(b)に示すように、1枚目の非フラッシュ画像320と3枚目の非フラッシュ画像340とのフレーム間の差分情報720が得られる。
合成基準画像とフラッシュ画像とのフレーム間の差分情報を算出する場合には、図3(a)に示すフラッシュ画像310を用いず、図4(a)に示すゲインが調整されたフラッシュ画像410を用いる。主要被写体以外の領域の明るさをフラッシュ画像と非フラッシュ画像に合わせることで、被写体が動いている領域(差分)を抽出できるようにするためである。図7(c)は、1枚目の非フラッシュ画像320とフラッシュ画像410とのフレーム間の差分情報730を示す。
尚、合成基準画像としてフラッシュ画像を用いてもよい。この場合には、図3(a)に示すフラッシュ画像310を用いず、図4(a)に示すゲインが調整されたフラッシュ画像410を合成基準画像として用いる。
図6の説明に戻り、S603において、システム制御部101は、S602で算出したフレーム間の差分情報を基に、以下の処理を行う。即ち、システム制御部101は、i-1回の処理までに合成された画像と、i回目の処理(S602)において合成基準画像に対しフレーム間の差分値(差分情報)を算出した画像と、の合成を行う。尚、1回目の処理においては、i-1回の処理までに合成された画像は、初期の合成基準画像(ここでは、1枚目の非フラッシュ画像320)である。また、合成基準画像と最初に合成する画像が、例えば、2枚目の非フラッシュ画像330である場合、1回目の処理(S602)において合成基準画像に対しフレーム間の差分値(差分情報)を算出した画像は、2枚目の非フラッシュ画像330である。このように本実施形態では、例えば、S603により、前記発光画像および前記複数の発光画像のうち基準となる画像と、前記発光画像および前記複数の発光画像のうち前記基準となる画像と異なる画像とを合成することの一例が実現される。
システム制御部101は、i回目の処理において算出した差分情報に基づいて、i-1回の処理までに合成された画像と、i回目の処理において合成基準画像に対しフレーム間の差分値(差分情報)を算出した画像との合成割合を変えるのが好ましい。具体的にシステム制御部101は、i回目の処理(S602)で算出された差分情報(差分値)が大きい領域ほど、i-1回の処理までに合成された画像の割合を大きくする。i回目の処理(S602)で算出された差分情報(差分値)の値が極端に大きい領域については、i回目の処理において合成基準画像に対しフレーム間の差分値(差分情報)を算出した画像の合成割合を0(ゼロ)にする。この場合、当該領域は、i-1回の処理までに合成された画像になる。例えば、差分情報(差分値)の範囲と、合成割合との関係を予め設定しておくことで、システム制御部101は、合成割合を決定することができる。本実施形態では、このようにして、前記基準となる画像の画素情報と、前記基準となる画像と異なる画像の画素情報との差分に応じて、既に合成されている画像と、当該基準となる画像と異なる画像とを合成する割合を決定することの一例が実現される。
次に、S604において、システム制御部101は、レジスタの値iをインクリメントする。そして、処理は、S601のステップに戻る。
以上の処理を繰り返し、図3(b)~図3(d)に示す非フラッシュ画像320、330、340と図4(a)に示すフラッシュ画像410とを合成することで、図4(b)に示す背景画像420が生成される。
図7(a)~図7(c)に示す差分情報710、720、730を用いることで、例えば、以下のようにすることができる。即ち、差分情報(差分値)が大きい領域については、i-1回目の処理までに合成された画像を得ることができる(図4(b)に示す領域403、404を参照)。それ以外の領域については、i-1回の処理までに合成された画像と、i回目の処理において合成基準画像に対しフレーム間の差分値(差分情報)を算出した画像との加重平均をとった画像を得ることができる(図4(b)に示す領域405を参照)。即ち、各回(各i)のS603において、重み(合成割合)を領域毎に変えながら、i-1回の処理までに合成された画像と、i回目の処理において合成基準画像に対しフレーム間の差分値(差分情報)を算出した画像とを合成することができる。従って、図4(b)に示す背景画像420は、図3(b)に示す非フラッシュ画像320に比べ、領域405の領域におけるノイズが低減された画像となる。
続いて、図8および図9を参照しながら、図2のS203の主要被写体置き換え領域検出処理の一例を詳しく説明する。図8は、主要被写体置き換え領域検出処理の一例を説明するフローチャートである。図9は、主要被写体置き換え領域を検出する方法の一例を説明する図である。
S800において、システム制御部101は、被写体が動いている領域の動きベクトルを抽出する。以下の説明では、被写体が動いている領域を、必要に応じて動き領域と称する。システム制御部101は、ゲインが調整されたフラッシュ画像410と複数の非フラッシュ画像320、330、340とを用いて動きベクトル(動き領域の動く方向と動き量を示すベクトル)を抽出する。
ここでは、時系列的に隣り合う非フラッシュ画像間の差分領域901、902を基にして動きベクトルを算出する領域を特定する場合を例に挙げて説明する。システム制御部101は、非フラッシュ画像320、330のフレーム間の差分領域(前述した差分値)を算出し、差分値の絶対値が閾値を上回る領域を差分領域901とする。同様に、システム制御部101は、非フラッシュ画像330、340のフレーム間の差分領域(前述した差分値)を算出し、差分値の絶対値が閾値を上回る領域を差分領域902とする。差分領域901、902は、動きベクトルを特定する領域である。
そして、システム制御部101は、差分領域901、902(動き領域)に対する動きベクトルを算出する。システム制御部101は、例えば、差分領域901に含まれる領域のうち、時間的に遅く撮像された画像に対応する領域の重心から時間的に早く撮像された画像に対応する領域の重心に向かうベクトルを差分領域901に対する動きベクトルとする。例えば、差分領域901について、時間的に早く撮像された画像に対応する領域は、1枚目の非フラッシュ画像320において、2枚目の非フラッシュ画像330に対し明るさが大きく異なる領域である。時間的に遅く撮像された画像に対応する領域は、2枚目の非フラッシュ画像330において、1枚目の非フラッシュ画像320に対し明るさが大きく異なる領域である。差分領域902についても差分領域901と同様にして動きベクトルを算出することができる。
このとき、システム制御部101は、動きベクトルを計算する範囲を、差分領域901、902の大きさに応じて変更しても良い。例えば、差分領域901、902の大きさが大きいほど、動きベクトルを計算する範囲を大きくすることができる。システム制御部101は、例えば、差分領域901、902が含まれる範囲で、動きベクトルを算出する。システム制御部101は、動きベクトルの算出により、非フラッシュ画像320、330の間、非フラッシュ画像330、340の間で、それぞれ動きベクトル903、904を求めることができる。本実施形態では、このようにして、2つの非発光画像の画素情報に閾値を上回る差分がある領域の大きさに応じて、当該2つの非発光画像における被写体の動きを示す動きベクトルを検出する範囲を変更することの一例が実現される。
図8の説明に戻り、S801において、システム制御部101は、1枚目の非フラッシュ画像320とフラッシュ画像410との間の動き領域を予測する。図9および図10を参照しながら、動き領域を予測する方法の一例を詳しく説明する。図10は、動き領域を予測する方法の一例を説明する図である。
図10において、動きベクトル1002、1003は、それぞれ図9に示す動きベクトル903、904に対応し、一つの平面上にプロットされたものである。また、移動方向1001は、動きベクトル1002、1003の方向を示す。予測ベクトル1004は、図9に示す予測ベクトル905に対応するものである。システム制御部101は、例えば、動きベクトル1002、1003の移動方向、大きさ、および位置に基づいて、予測ベクトル1004を求める。
まず、システム制御部101は、動きベクトル1002、1003から、移動方向1001を算出する。その後、システム制御部101は、動きベクトル1002の始点を終点とし、動きベクトル1002の大きさの半分の大きさを有し、移動方向1001に沿う向きのベクトルを予測ベクトル1004として算出する。本実施形態では、フラッシュ画像310と、非フラッシュ画像320、330、340の撮影間隔は非常に短い撮影となっており、移動する被写体の動きは等速運動として予測できる。また、本実施形態では、フラッシュ画像310は、非フラッシュ画像320、330、340に比べ露出時間が1段分短い。そのため、非フラッシュ画像320、330、340間の移動量に比べ、フラッシュ画像310と非フラッシュ画像320と間では、1/2倍の移動量であることが推測される。
ただし、フラッシュ画像310、非フラッシュ画像320、330、340の露出時間が極端に短い際には、露出時間の差は小さくなる。このため、予測ベクトルの大きさは、非フラッシュ画像間の動きベクトルの大きさと差がなくなる。よって、システム制御部101は、非フラッシュ画像間の動きベクトルの大きさと同じ大きさのベクトルを予測ベクトルとすることができる。予測ベクトルの大きさは、フラッシュ画像の撮影時と非フラッシュ画像の撮影時の露出時間の差に依存する。このため、システム制御部101は、露出時間の差に応じて、予測ベクトルの大きさを切り替えることを行っても良い。例えば、所定の範囲の露光時間であれば等速度運動で予測ベクトルを推定することができる。このため、システム制御部101は、例えば、フラッシュ画像と非フラッシュ画像の露出の差が2段差有る場合には、非フラッシュ画像間の動きベクトルの大きさの1/4倍の大きさのベクトルを予測ベクトルにする。
本実施形態では、以上のようにして、前記動きベクトルに基づいて、前記発光画像と前記複数の非発光画像のうちの1つの前記非発光画像との間における被写体の動きを予測する予測ベクトルを導出することの一例が実現される。
続いてシステム制御部101は、予測ベクトル905に対応する位置に、差分情報914に含まれる差分領域(白い領域)のうち、予測ベクトル905に最も近い位置にある差分領域906(白い領域)を、動き差分領域予測結果907として設定する。予測ベクトル905に対応する位置は、例えば、予測ベクトル905の大きさ、向き、および位置に基づいて定められる。尚、差分情報914、差分領域906の導出は、前述した方法と同様の方法で実現される。動き差分領域予測結果907は、差分情報の予測結果である。
本実施形態では、例えば、差分情報914により、前記発光画像の画素情報と前記複数の非発光画像のうちの1つの前記非発光画像の画素情報との差分を示す画像である第1の差分画像の一例が実現される。また、例えば、図9において、非フラッシュ画像320、330間の差分情報(差分領域901を含む差分情報)により、前記複数の非発光画像のうちの2つの非発光画像の画素情報の差分を示す画像である第2の差分画像の一例が実現される。同様に、図9において、非フラッシュ画像330、340間の差分情報(差分領域902を含む差分情報)により、前記複数の非発光画像のうちの2つの非発光画像の画素情報の差分を示す画像である第2の差分画像の一例が実現される。
図8の説明に戻り、S802において、システム制御部101は、フラッシュ画像410と非フラッシュ画像320との差分情報914に含まれる差分領域(白い領域)のうち、動き差分領域予測結果907に対応する差分領域906を除去する。このように本実施形態では、例えば、差分領域906により、動きのある被写体の領域の一例が実現される。また、差分情報914内の差分領域906以外の差分領域(白い領域)により、動きのない被写体の領域の一例が実現される。このように本実施形態では、例えば、差分情報914と予測ベクトル905とに基づいて動き差分領域予測結果907が導出され、動き差分領域予測結果907に基づいて差分領域906が検出され除去される。従って、前記発光画像の画素情報と前記複数の非発光画像のうちの1つの前記非発光画像の画素情報との差分を示す第1の差分画像と、前記予測ベクトルとに基づいて、前記発光画像において動きのある被写体の領域が検出される。
以上のように動き差分領域予測結果907を用いれば、予測ベクトル905の算出精度が低い場合であっても、差分領域906を特定して除去することができる。しかしながら、システム制御部101は、予測ベクトル905の算出精度が高く、予測ベクトル905だけから差分領域906を正確に導出することができる場合、差分情報914に含まれる差分領域906を予測ベクトル905から直接特定して除去してもよい。
このようにしてシステム制御部101は、フラッシュ画像410と非フラッシュ画像320との差分情報914から、差分領域906を除去した後に差分情報914に含まれる差分領域(白い領域)を、主要被写体置き換え領域908として検出する。差分情報914には、動いていない主要被写体と動いている被写体とのそれぞれが差分領域として含まれている。このため、動き差分領域予測結果907である差分領域を取り除くことで、動いている被写体が含まれる領域を除去することができる。従って、システム制御部101は、ストロボ光が当たっている主要被写体の領域(主要被写体置き換え領域908)を検出することができる。
以上説明したように、本実施形態では、デジタルカメラ100は、非フラッシュ画像320、330、340の差分領域901、902を用いて、動いている被写体の動きを予測する予測ベクトル905を算出する。デジタルカメラ100は、フラッシュ画像410と非フラッシュ画像320の差分領域のうち、予測ベクトル905に対応する差分領域906を除く領域を主要被写体置き換え領域908とする。デジタルカメラ100は、背景画像420の領域のうち、主要被写体置き換え領域908に対応する領域の画像を、フラッシュ画像310に置き換えて最終画像とする。従って、動いている被写体があっても、フラッシュ画像310に含まれる被写体の領域のうち、ストロボ光が当たっている領域を適切に判別して抽出することができる。よって、例えば、夜景と主要被写体との双方の明るさが適正となる画像を好適に生成することが可能となる。
尚、本実施形態では、背景画像生成処理で用いた差分情報(図6のS602で求める差分情報)と、主要被写体置き換え領域検出処理で用いた差分情報(図8のS800で求める差分情報)を別々に求める場合を例に挙げて説明した。しかしながら、これらの処理で共通の差分情報を用いても良い。例えば、主要被写体置き換え領域検出処理における図8のS800では、システム制御部101は、図6のS602と同じく非フラッシュ画像320を基準にした2つの画像間の動きベクトルを求める。具体的にシステム制御部101は、非フラッシュ画像320、330間の動きベクトルと、非フラッシュ画像320、340間の動きベクトルとを求める。このように共通の差分情報を用いることで、演算量や処理時間を短縮することが可能となる。
また、本実施形態では、主要被写体置き換え領域検出処理(図8のS801)において、予測ベクトルを用いて動き領域の予測を行う構成を説明したが、これに限らなくても良い。例えば、複数の非フラッシュ画像320、330、340によって求めたフレーム間の差分情報の形状、大きさ、および位置を用いて、図9に示す動き差分領域予測結果907を特定しても良い。図11を参照しながら、動き領域の予測を行う方法の変形例を詳しく説明する。図11(a)、図11(b)は、それぞれ図9に示す差分領域901、902を含む差分情報1110、1120(非フラッシュ画像320、330間の差分情報、非フラッシュ画像330、340間の差分情報)を示す。
フラッシュ画像310、非フラッシュ画像320、330、340を取得するサンプリング周期は短いため、システム制御部101は、動いている被写体(差分領域901、902)が等速直線運動するものとするものと仮定する。この仮定の下、システム制御部101は、フラッシュ画像310、非フラッシュ画像320、330、340を取得するサンプリング周期分だけ差分領域901を等速直線運動させた差分領域1103を、図11(c)に示す動き差分領域予測結果1130とする。差分領域901、902の領域情報を用いて動き差分領域予測結果1130を求めることで、動きベクトル903、904および予測ベクトル905を求める演算処理が必要なくなり処理時間を短縮することが可能となる。
また、本実施形態では、1枚のフラッシュ画像と3枚の非フラッシュ画像の計4回の撮像(ただし、フラッシュ画像のゲイン調整は含めない)する構成について説明を行ったが、撮像枚数に限りはない。撮像枚数を増やして(非フラッシュ画像の数を3以上にして)本実施形態の処理を行うことでノイズ低減効果を向上させることができる。また、ベクトルの方向、位置、および大きさを算出するための画像の枚数が増えるため、動き領域予測(図8のS801)の予測精度を高めることができる。
また、デジタルカメラ100の位置が三脚等で固定されている場合には、位置合わせ処理(図2のS201)を行わなくてもよい。このようにすれば、処理時間を短縮することが可能となる。
(第2の実施形態)
次に、第2の実施形態を説明する。第1の実施形態では、ユーザによる入力操作部115の操作やタイマ撮影等による撮影指示に伴う本撮影により取得した3枚の非フラッシュ画像320、330、340を用いる場合を例に挙げて説明した。これに対し、本実施形態では、ライブビュー用画像(プレビュー用画像)を用いて、明るさの差分情報を求めて動きベクトルを求め、求めた動きベクトルから予測ベクトルを求める。そして、予測ベクトルと、本撮影により取得した2枚の画像(フラッシュ画像および非フラッシュ画像)の差分情報とを用いて動いている被写体の領域を取り除いて主要被写体の領域を求める。そして、フラッシュ画像に含まれる主要被写体の領域における画像と非フラッシュ画像(の主要被写体の領域以外の領域)とを合成する。
このように本実施形態と第2の実施形態とは、動いている被写体を特定するための処理の一部が主として異なる。従って、本実施形態の説明において、第1の実施形態と同一の部分については、図1~図11に付した符号と同一の符号を付す等して詳細な説明を省略する。以下の説明では、ライブビュー用画像を必要に応じて画面表示用画像または画面表示用非フラッシュ画像と称する。また、本撮影により得られるフラッシュ画像を必要に応じて本撮影フラッシュ画像と称し、本撮影により得られる非フラッシュ画像を必要に応じて本撮影非フラッシュ画像と称し、これらを必要に応じて本撮影画像と総称する。
本実施形態では、ゲインが調整されたフラッシュ画像と複数の非フラッシュ画像とから背景画像を作成する処理を行わない。このため、本撮影前に取得するライブビュー用画像から求めた動きベクトルを基にしてフラッシュ画像と非フラッシュ画像とのフレーム間の動き領域の予測ベクトルを算出する。
本実施形態のデジタルカメラ100構成は、図1に示す第1の実施形態のデジタルカメラ100の構成と同じであるため、その詳細な説明を省略する。
また、本実施形態では、画面表示用画像を用いる。従って、図1に示すメモリ107は、本撮影により取得される画像データの他にカメラ処理の評価値を取得する画像や画面表示用画像を格納する。本実施形態では、本撮影により取得される画像データであるフラッシュ画像と非フラッシュ画像の他に、画面表示用画像を用いる。
図12のフローチャートを参照しながら、本実施形態のデジタルカメラ100の全体処理の一例を説明する。尚、第1の実施形態と同じ処理についての詳細な説明は省略する。図2に示すフローチャートは、デジタルカメラ100において撮影の指示がなされた際に開始される。これに対し、図12に示すフローチャートは、デジタルカメラ100において撮影の指示がなされる前に開始される。
S1200において、システム制御部101は、撮影処理を行う。具体的にシステム制御部101は、ユーザまたはデジタルカメラ100のタイマ撮影等による撮影指示がなされる前には、画面表示用画像の撮像処理を続ける。その後、撮影指示がなされた後に、システム制御部101は、本撮影を行い、フラッシュ画像と非フラッシュ画像を1枚ずつ連続して撮像する。図13は、画面表示用画像と本撮影画像の一例を説明する図である。
図13において、画面表示用非フラッシュ画像1301~1303は、撮影指示前に撮像された画面表示用画像として非フラッシュ画像である。1枚目の画面表示用非フラッシュ画像1301、2枚目の画面表示用非フラッシュ画像1302、3枚目の画面表示用非フラッシュ画像1303の順に連続して撮像されているものとする。その後、撮影指示がなされた後で、デジタルカメラ100は、本撮影画像である本撮影フラッシュ画像1304と本撮影非フラッシュ画像1305をこの順で連続して撮像する。本撮影非フラッシュ画像1305は、第1の実施形態と異なり長時間露光し、画面表示用非フラッシュ画像1301~1303の露光時間と異なる構成をとっても良い。また、撮影指示がなされる前に取得する画面表示用の画像は、メモリ107の容量に収まる範囲でメモリ107に複数枚保持される。本実施形態では、例えば、画面表示用非フラッシュ画像1301~1303により、画面に表示するための画像の一例が実現される。また、例えば、本撮影フラッシュ画像1304および本撮影非フラッシュ画像1305により、撮影指示に基づいて本撮影された画像の一例が実現される。
次に、S1201において、システム制御部101は、本撮影フラッシュ画像1304と本撮影非フラッシュ画像1305とを合成するための主要被写体置き換え領域検出処理を行う。図14を参照しながら、本実施形態の主要被写体置き換え領域を検出する方法の一例を用いて詳しく述べる。
図14において、本撮影フラッシュ画像1410は、本撮影フラッシュ画像1304に対し、背景領域の明るさが本撮影非フラッシュ画像1305の明るさと合うようにゲインが調整された画像である。
第1の実施形態では本撮影された非フラッシュ画像320、330、340から動きベクトル903、904を求め、その動きベクトル903、904を用いて予測ベクトル905を求めて、動いている被写体の動き予測を行う。これに対し、本実施形態では、画面表示用非フラッシュ画像を用いて動きベクトルおよび予測ベクトルを求める。システム制御部101は、例えば、画面表示用非フラッシュ画像1301、1302間の差分領域1401を算出する。更に、システム制御部101は、差分領域1401において動きベクトル1403を算出する。同様にシステム制御部101は、画面表示用非フラッシュ画像1302、1303間の差分領域1402を算出し、差分領域1402において動きベクトル1404を算出する。差分領域1401、1402および動きベクトル1403、1404を求める方法自体は、第1の実施形態で説明した方法と同じである。
次に、システム制御部101は、第1の実施形態で説明したのと同じ方法で動きベクトル1403、1404を用いて予測ベクトル1405を算出する。その後、システム制御部101は、第1の実施形態で説明したのと同じ方法で、ゲイン調整後の本撮影フラッシュ画像1410と本撮影非フラッシュ画像1305との差分情報1414と予測ベクトル1405とを基に、動き差分領域予測結果1407を算出する。最後に、システム制御部101は、第1の実施形態で説明したのと同じ方法で、差分情報1414と、動き差分領域予測結果1407とを基に、差分情報1414に含まれる差分領域1406を除去し、主要被写体置き換え領域1408を抽出する。
図12の説明に戻り、S1202において、システム制御部101は、S1201の処理で求めた主要被写体置き換え領域1408の検出の結果に基づいて、本撮影フラッシュ画像1304と本撮影非フラッシュ画像1305とを合成する。これらの画像の合成方法は、第1の実施形態における、フラッシュ画像310と背景画像420とを合成する処理の説明において、背景画像420を本撮影非フラッシュ画像1315に置き換えることにより実現することができるので、その詳細な説明を省略する。
以上のように本実施形態では、デジタルカメラ100は、画面表示用非フラッシュ画像1301~1303を用いて動き差分領域予測結果1407を算出する。従って、本撮影において撮像する画像が、フラッシュ画像と非フラッシュ画像の2枚の画像であっても、動き領域を排除した主要被写体置き換え領域を抽出することができ、合成後の画像で動き領域の弊害を改善することができる。
本実施形態では、撮影指示が出されるまでの画面表示用非フラッシュ画像1301~1303を複数保持し、撮影指示が出された後の本撮影フラッシュ画像1304および本撮影非フラッシュ画像1305を用いる構成を例に挙げて説明した。しかしながら、本実施形態の処理を行うことが、デジタルカメラ100におけるモード等の設定により分かっている場合、撮影指示が出される前の画面表示用非フラッシュ画像を用いて撮影指示の前に予め動きベクトル1403、1404を求めておいても良い。この構成をとることで、画面表示用非フラッシュ画像を常に保持しておく必要が無く、更に本撮影がなされたときに動きベクトルがすでに算出されているので処理速度の改善に有効である。更に、予測ベクトル1405を撮影指示の前に求めておいても良い。
また、本実施形態では、撮影指示が出されるまでの画面表示用非フラッシュ画像1301~1303を複数保持し、撮影指示が出された後の本撮影フラッシュ画像1304および本撮影非フラッシュ画像1305を用いる構成を例に挙げて説明した。しかしながら、撮影指示が出された後、本撮影フラッシュ画像1304および本撮影非フラッシュ画像1305を撮像し、その後、画面表示用非フラッシュ画像を複数保持する構成をとっても良い。この構成をとることで、本施形態の処理を行わない場合には画面表示用画像を複数保持しておく必要が無くメモリの節約に有効である。
また、本実施形態においても、第1の実施形態で説明した変形例を適用することができる。
(第3の実施形態)
次に、第3の実施形態を説明する。第1、第2の実施形態では、フラッシュ画像と非フラッシュ画像との差分情報の全体において差分領域の動きを求め、動きのない差分領域を、主要被写体置き換え領域として算出する例を挙げて説明した。これに対し本実施形態では、ストロボ光の適正発光距離にある被写体の領域以外の領域をマスク領域として、マスク領域については、差分領域の動きを求めない。このように本実施形態と第1、第2の実施形態とでは、動いている被写体を特定するための処理の一部が主として異なる。従って、本実施形態の説明において、第1、第2の実施形態と同一の部分については、図1~図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
本実施形態のデジタルカメラ100の構成は、図1に示す第1の実施形態のデジタルカメラ100の構成と同じであるため、その詳細な説明を省略する。
図15のフローチャートを参照しながら、本実施形態のデジタルカメラ100の全体処理の一例を説明する。尚、第1、第2の実施形態と同じ処理についての詳細な説明は省略する。
S1501において、システム制御部101は、本撮影フラッシュ画像1304と本撮影非フラッシュ画像1305とを合成するための主要被写体置き換え領域検出処理を行う。
本実施形態では、システム制御部101は、適正発光距離情報の領域を設定する。例えば、システム制御部101は、撮影レンズ121の絞り値(F値)とガイドナンバーから適正発光距離情報を算出すると共に、奥行き情報を算出する。適正発光距離情報は、ストロボ光が適正にとどくデジタルカメラ100からの距離を示す情報である。シーンの奥行き情報は、デジタルカメラ100から被写体までの距離を示す情報である。そして、システム制御部101は、適正発光距離情報と奥行き情報とに基づいて、ストロボ光の適正発光距離の被写体の範囲だけを、動きベクトルを求める領域とする。
図16を参照しながら、主要被写体置き換え領域の求め方の一例を説明する。尚、ここでは、第2の実施形態の図14を参照しながら説明した処理と同じ処理についての詳細な説明を省略する。
図16において、システム制御部101は、例えば、本撮影フラッシュ画像1410の撮像時における撮影レンズ121の絞り値(F値)とガイドナンバーから、適正発光距離情報1601を取得する。これと同時にシステム制御部101は、奥行き情報1602を算出する。奥行き情報1602の算出方法としては、以下の方法が挙げられる。
撮像素子123が瞳分割撮像素子であれば、撮像素子123から取得される視差画像(距離取得用データ)の相関演算から算出されるデフォーカス量を用いて奥行き情報1602を算出する方法が1つ目の方法として挙げられる。この方法は、特許文献3に記載されている方法を用いて実現することができる。2つ目の方法として、合焦面を変化させて撮像した複数の画像(距離取得用データ)の相関演算から算出されるデフォーカス量を用いて奥行き情報1602を算出する方法が挙げられる。この方法は、特許文献4に記載されている方法を用いて実現することができる。撮像ユニット120が複眼構成であれば、複眼画像(距離取得用データ)の相関演算から算出されるデフォーカス量を用いて奥行き情報1602を算出する方法が3つ目の方法として挙げられる。この方法は、特許文献5に記載されている方法を用いて実現することができる。尚、どの方法も距離情報を取得するための手段であり本実施形態の構成を限定するものではない。
本実施形態では、例えば、適正発光距離情報1601により、撮像装置からの前記ストロボ光の発光距離を示す情報の一例が実現される。また、例えば、奥行き情報1602により、前記非発光画像における被写体の撮像装置からの距離を示す情報の一例が実現される。
システム制御部101は、以上のようにして求めた適正発光距離情報1601と奥行き情報1602とに対応する領域を、適正フラッシュ領域マスク1603として算出する。このマスクされた領域(適正フラッシュ領域マスク1603)が、ストロボ光が画像上で適正の光としてとどいている領域1610となる。
システム制御部101は、画面表示用非フラッシュ画像1301、1302間の差分領域1401および画面表示用非フラッシュ画像1302、1303間の差分領域1402が領域1610に含まれているか否かを判定する。図14および図16に示す例では、画面表示用非フラッシュ画像1301、1302間の差分領域1401および画面表示用非フラッシュ画像1302、1303間の差分領域1402が領域1610に含まれていない。この場合、システム制御部101は、動きベクトル1403、1404、予測ベクトル1405、および動き差分領域予測結果1407の算出を行わない。そして、システム制御部101は、差分情報1414における領域1610に対応する領域を主要被写体置き換え領域1408として抽出する。このように、領域1610よりも外の動きに対しては、被写体の動き予測を行う必要を無くすことができるため、演算処理負荷を軽減することができる。
一方、画面表示用非フラッシュ画像間の差分領域が領域1610に含まれている場合、システム制御部101は、当該差分領域について、第2の実施形態で説明したようにして、動きベクトル、予測ベクトル、および動き差分領域予測結果の算出を行う。そして、システム制御部101は、第1および第2の実施形態で説明したように、動き差分領域予測結果に基づいて、領域1610における動き領域を特定し、領域1610から動き領域を除く領域を主要被写体置き換え領域1408として抽出する。
以上の処理によれば、動きベクトルを算出する画像領域が狭くなるため、演算処理負荷を軽減することができる。また更に、フラッシュ画像の適正発光距離外の領域を合成することを防ぐことができ、ストロボ光の有効領域に絞ってフラッシュ画像を置き換えることができる。
また、奥行き情報1602ではなく、画像の位置情報としてストロボ光の発光中心位置からの距離が近い領域だけを、フラッシュ画像と非フラッシュ画像の比較処理領域として、フラッシュ画像を合成する領域に設定しても良い。これは、ストロボ光の発光中心位置から離れるほど目立ちにくい領域になるため、フラッシュ画像に置き換える領域を限定し、処理負荷をより軽減することができる。
尚、本実施形態では、第2の実施形態に基づく形態(画面表示用非フラッシュ画像を用いる形態)を例に挙げて説明したが、第1の実施形態に基づく形態(本撮影による非フラッシュ画像を用いる形態)であっても良い。また、本実施形態においても、第1、第2の実施形態で変形例を適用することができる。
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
(その他の実施例)
本発明は、前述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。