説明

撮像装置、ストロボ画像生成方法、および、プログラム

【課題】より良好なストロボ画像を生成する。
【解決手段】連写によって得られた複数の画像を合成してストロボ画像を生成する場合に、基準フレームN(1番目のフレーム)と対象フレームn'(後続する各フレーム)との間の移動量VFが、オクルージョンの影響を受けにくいことを示す第1の閾値th1未満であれば(ステップS912:Yes)、通常の処理量のモルフォロジー演算によって被写体領域の平滑化をおこなう(ステップS913〜ステップS915)。一方、移動量VFが第1の閾値th1以上である場合(ステップS912:No)、通常よりもモルフォロジー演算の処理量を多くして平滑化をおこなうことで(ステップS916〜ステップS918)、オクルージョンの影響により背景部分の一部が被写体として誤認識された場合でも、このような不要部分を除去したストロボ画像を生成することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、撮像装置、ストロボ画像生成方法、および、プログラムに関し、特に、撮像装置でのストロボ画像生成に好適な撮像装置、ストロボ画像生成方法、および、プログラムに関する。
【背景技術】
【0002】
移動する被写体を固定したカメラで撮影し、移動経過の様子を1枚の画像(写真)内に表した、図22に示すようなストロボ画像(マルチストロボ画像)が知られている。フィルムカメラ時代においては、長時間露光中に移動被写体へ複数回のストロボ発光をおこなうことでこのようなストロボ画像を生成していたが、デジタルカメラが普及した今日においては、カメラ内のコンピュータによる画像処理でストロボ画像の生成が可能となっている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3793258号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ストロボ画像の生成においては、デジタルカメラの画角や方向を一定にし、連写によって移動被写体を撮像することになるが、手持ちで撮影した場合には、デジタルカメラが微動してしまうので、連写されたフレーム画像間で画角変動が生じてしまうことがある。ここで、被写体(移動被写体)の背景の奥行きが大きい場合、フレーム画像間の移動量が大きいと、オクルージョンの影響により、本来フレーム間では移動がないはずの背景領域に差異が生じてしまう。この差異が大きいと、背景部分が移動被写体と誤認識されてしまうことがある。この結果、生成されたストロボ画像上で背景部分が重複(二重合成)してしまう問題がある。
【0005】
本発明は、上記実状に鑑みてなされたものであり、より良好なストロボ画像を生成することのできる撮像装置、ストロボ画像生成方法、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の第1の観点にかかる撮像装置は、
撮像により連続する複数の撮像画像を生成する撮像手段と、
前記撮像手段が生成した各撮像画像から、移動する被写体部分を示す複数の画像を抽出する被写体抽出手段と、
前記撮像手段が生成した複数の撮像画像から、背景画像を生成する背景画像生成手段と、
前記背景画像生成手段が生成した背景画像と、前記被写体抽出手段が抽出した複数の被写体部分を示す画像とを合成してストロボ画像を生成するストロボ画像生成手段と、
を備える撮像装置において、
前記複数の撮像画像における所定の画像間の移動量を検出する移動量検出手段と、
前記移動量検出手段が検出した移動量に応じた処理量で、前記画像に対する平滑化処理をおこなう画像平滑化手段と、をさらに備える、
ことを特徴とする。
【0007】
上記撮像装置において、
前記画像平滑化手段は、
前記移動量検出手段が検出する移動量が大きいほど、前記平滑化処理にかかる処理量を多くすることが望ましい。
【0008】
上記撮像装置において、
前記画像平滑化手段は、
前記移動量検出手段が検出した移動量と閾値との比較に基づいて、前記平滑化処理にかかる処理量を異ならせることが望ましい。
【0009】
あるいは、
前記画像平滑化手段は、
前記移動量検出手段が検出した移動量に係数を乗じた数値に基づいて、前記平滑化処理にかかる処理量を異ならせてもよい。
【0010】
この場合、
前記画像平滑化手段による前記平滑化処理にかかる処理量は、該平滑化処理の実行回数とすることができる。
【0011】
上記撮像装置において、
前記画像平滑化手段は、モルフォロジー演算により前記平滑化処理をおこなうことが望ましく、この場合、
前記移動量検出手段が検出した移動量に基づいて、前記モルフォロジー演算で用いる構成成分を異ならせることで、前記平滑化処理にかかる処理量を異ならせてもよい。
【0012】
この場合、
前記画像平滑化手段は、前記移動量に基づいて、前記構成成分のサイズを異ならせることが望ましい。
【0013】
上記撮像装置において、
前記移動量検出手段は、前記撮像画像の位置合わせをおこなう際に前記移動量を求めることが望ましく、この場合、
前記移動量検出手段が検出した前記移動量が所定の閾値以上となる場合、当該移動量が検出された画像を前記ストロボ画像生成手段による合成対象から除外する画像選択手段をさらに備えていることが望ましい。
【0014】
上記撮像装置は、
前記撮像装置に生じた動きを検出するセンサ手段をさらに備えていてもよく、この場合、
前記移動量検出手段は、前記センサ手段の検出結果に基づいて、フレーム間の移動量を検出してもよい。
【0015】
上記目的を達成するため、本発明の第2の観点にかかるストロボ画像生成方法は、
画像処理をおこなう装置において、移動する被写体が撮像された連続する複数の画像からストロボ画像を生成するストロボ画像生成方法であって、
前記装置が、
前記複数の画像から、移動する被写体部分を示す複数の画像を抽出する被写体抽出ステップと、
前記複数の画像から、背景画像を生成する背景画像生成ステップと、
前記複数の画像における所定の画像間の移動量を検出する移動量検出ステップと、
前記移動量検出ステップで検出された移動量に応じた処理量で、前記被写体抽出ステップで抽出された画像に対する平滑化処理をおこなう画像平滑化ステップと、
前記背景画像生成ステップで生成された背景画像と、前記被写体抽出ステップで抽出された複数の被写体部分を示す画像とを合成してストロボ画像を生成するストロボ画像生成ステップと、
を実行することを特徴とする。
【0016】
上記目的を達成するため、本発明の第3の観点にかかるプログラムは、
コンピュータに、
移動する被写体が撮像された連続する複数の画像を取得する機能と、
前記取得した複数の画像から、移動する被写体部分を示す複数の画像を抽出する機能と、
前記複数の画像から、背景画像を生成する機能と、
前記複数の画像における所定の画像間の移動量を検出する機能と、
前記検出された移動量に応じた処理量で、前記抽出された画像に対する平滑化処理をおこなう機能と、
前記生成された背景画像と、前記抽出された複数の被写体部分を示す画像とを合成してストロボ画像を生成する機能と、
を実現させることを特徴とする。
【発明の効果】
【0017】
本発明によれば、より良好なストロボ画像を生成することができる。
【図面の簡単な説明】
【0018】
【図1】本発明の実施形態にかかるデジタルカメラの構成を示すブロック図である。
【図2】図1に示す制御部によって実現される機能を示す機能ブロック図である。
【図3】本発明の実施形態にかかる「ストロボ画像生成処理」を説明するためのフローチャートである。
【図4】図3に示す「ストロボ画像生成処理」で表示される設定画面の表示例を説明するための図であり、(a)は、カメラの向きを指定するための設定画面の表示例を示し、(b)は、被写体の移動方向を指定するための設定画面の表示例を示す。
【図5】本発明の実施形態にかかる撮像画像を説明するための図であり、(a)は、ストロボ画像生成に必要となる連写撮影の場面を例示し、(b)は、(a)に示した連写撮影で得られた撮像画像(連写画像)の例を示す。
【図6】図3に示す「ストロボ画像生成処理」で実行される「位置合わせ処理」を説明するためのフローチャートである。
【図7】図6に示す「位置合わせ処理」で作成される「フレーム情報テーブル」に記録される情報の例を示す図である。
【図8】図3に示す「ストロボ画像生成処理」で実行される「1次元データ生成処理」を説明するためのフローチャートである。
【図9】図8に示す「1次元データ生成処理」を説明するための図であり、(a)は、撮像画像における座標と被写体移動方向の関係を示し、(b)および(c)は、撮像画像の投影と1次元データの例を示し、(d)は、(b)および(c)に示した1次元データを重ねて示した図である。
【図10】図3に示す「ストロボ画像生成処理」で実行される「被写体領域検出処理」を説明するためのフローチャートである。
【図11】図3に示す「ストロボ画像生成処理」で実行される「被写体領域検出処理」を説明するためのフローチャートである。
【図12】図3に示す「ストロボ画像生成処理」で実行される「被写体領域検出処理」を説明するためのフローチャートである。
【図13】図10〜図12に示す「被写体領域検出処理」を説明するための図であり、(a)は、被写体の移動方向がX方向である場合に検出される被写体領域の例を示し、(b)は、被写体の移動方向がY方向である場合に検出される被写体領域の例を示す。
【図14】図3に示す「ストロボ画像生成処理」で実行される「有効フレーム選択処理」を説明するためのフローチャートである。
【図15】図3に示す「ストロボ画像生成処理」で実行される「有効フレーム選択処理」を説明するためのフローチャートである。
【図16】選択された有効フレームの例を示す図である。
【図17】図3に示す「ストロボ画像生成処理」で実行される「背景画像生成処理」を説明するためのフローチャートである。
【図18】図3に示す「ストロボ画像生成処理」で実行される「被写体画像抽出処理」を説明するためのフローチャートである。
【図19】図3に示す「ストロボ画像生成処理」で実行される「画像平滑化処理(1)」を説明するためのフローチャートである。
【図20】オクルージョンの影響を説明するための図であり、(a)は、オクルージョンの影響を受けやすいシーンの例を示し、(b)は背景部分に変位が生じたフレーム画像の例を示し、(c)は、本来の背景画像の例を示し、(d)は、位置合わせのために変形させた背景画像の例を示し、(e)は、本来の背景画像と変形させた背景画像で生じる差異の例を示し、(f)は、オクルージョンの影響を受けたストロボ画像の例を示し、(g)は、被写体画像として誤認識された不要部分の例を示す。
【図21】図3に示す「ストロボ画像生成処理」で実行される「画像合成処理」を説明するためのフローチャートである。
【図22】生成されたストロボ画像の例を示す図である。
【図23】本発明の実施形態2にかかる「画像平滑化処理(2)」を説明するためのフローチャートである。
【図24】本発明の実施形態3にかかる「画像平滑化処理(3)」を説明するためのフローチャートである。
【発明を実施するための形態】
【0019】
(実施形態1)
本発明にかかる実施形態を、図面を参照して以下に説明する。本実施形態では、本発明をデジタルスチルカメラ(以下、デジタルカメラ)によって実現した場合を例示する。本実施形態にかかるデジタルカメラ1は、一般的なデジタルスチルカメラが有する機能を備えているものとし、この中には、少なくとも、いわゆる連写機能が含まれているものとする。ここでの連写機能とは、1回のシャッタ操作で連続した複数の撮像画像を得ることのできる機能とする。
【0020】
また、本実施形態にかかるデジタルカメラ1は、本発明の適用により、連写機能によって得られた撮像画像から、ストロボ画像(マルチストロボ画像)を生成するストロボ画像生成機能を有する。ここで「ストロボ画像」とは、動く被写体の移動経過が1つの画像内に表された画像をいう。本実施形態にかかるデジタルカメラ1でストロボ画像を生成するためには、動く(移動する)被写体を連写機能で撮像するが、この場合、デジタルカメラ1の方向や画角を一定にして撮像する。
【0021】
図1は、本発明の実施形態にかかるデジタルカメラ1の構成を示すブロック図である。本実施形態にかかるデジタルカメラ1の概略的構成は、図示するように、撮像部100、データ処理部200、インタフェース(I/F)部300、センサ部400、などである。
【0022】
撮像部100は、デジタルカメラ1の撮像動作をおこなう部分であり、図示するように、光学装置110やイメージセンサ部120などから構成されている。
【0023】
光学装置110は、例えば、レンズ、絞り機構、シャッタ機構、などを含み、撮像にかかる光学的動作をおこなう。すなわち、光学装置110の動作により、入射光が集光されるとともに、焦点距離、絞り、シャッタスピードなどといった、画角やピント、露出などにかかる光学的要素の調整がなされる。なお、光学装置110に含まれるシャッタ機構はいわゆるメカニカルシャッタであり、イメージセンサの動作のみでシャッタ動作をおこなう場合には、光学装置110にシャッタ機構が含まれていなくてもよい。また、光学装置110は、後述する制御部210による制御によって動作する。
【0024】
イメージセンサ部120は、光学装置110によって集光された入射光に応じた電気信号を生成する、例えば、CCD(Charge Coupled Device:電荷結合素子)やCMOS(Complementally Metal Oxide Semiconductor:相補型金属酸化物半導体)などのイメージセンサから構成される。イメージセンサ部120は、光電変換をおこなうことで、受光に応じた電気信号を発生してデータ処理部200に出力する。
【0025】
データ処理部200は、撮像部100による撮像動作によって生成された電気信号を処理し、撮像画像を示すデジタルデータを生成するとともに、撮像画像に対する画像処理などをおこなう。図1に示すように、データ処理部200は、制御部210、画像処理部220、画像メモリ230、画像出力部240、記憶部250、外部記憶部260、などから構成される。
【0026】
制御部210は、例えば、CPU(Central Processing Unit:中央演算処理装置)などのプロセッサや、RAM(Random Access Memory)などの主記憶装置(メモリ)、などから構成され、後述する記憶部250などに格納されているプログラムを実行することで、デジタルカメラ1の各部を制御する。また、本実施形態では、所定のプログラムを実行することで、後述する各処理にかかる機能が制御部210によって実現される。
【0027】
画像処理部220は、例えば、ADC(Analog-Digital Converter:アナログ−デジタル変換器)、バッファメモリ、画像処理用のプロセッサ(いわゆる、画像処理エンジン)などから構成され、撮像部100によって生成された電気信号に基づいて、撮像画像を示すデジタルデータを生成する。
【0028】
すなわち、イメージセンサ部120から出力されたアナログ電気信号をADCがデジタル信号に変換して順次バッファメモリに格納すると、バッファされたデジタルデータに対し、画像処理エンジンがいわゆる現像処理などをおこなうことで、画質の調整やデータ圧縮などをおこなう。
【0029】
画像メモリ230は、例えば、RAMやフラッシュメモリなどの記憶装置から構成され、画像処理部220によって生成された撮像画像データや、制御部210によって処理される画像データなどを一時的に格納する。
【0030】
画像出力部240は、例えば、RGB信号の生成回路などから構成され、画像メモリ230に展開された画像データをRGB信号などに変換して表示画面(後述する表示部310など)に出力する。
【0031】
記憶部250は、例えば、ROM(Read Only Memory)やフラッシュメモリなどの記憶装置から構成され、デジタルカメラ1の動作に必要なプログラムやデータなどを格納する。本実施形態では、制御部210などが実行する動作プログラムや処理に必要となるパラメータや演算式などが記憶部250に格納されているものとする。
【0032】
外部記憶部260は、例えば、メモリカードなどといった、デジタルカメラ1に着脱可能な記憶装置から構成され、デジタルカメラ1で撮像した画像データなどを格納する。
【0033】
インタフェース部300は、デジタルカメラ1とその使用者あるいは外部装置とのインタフェースにかかる構成であり、図1に示すように、表示部310、外部インタフェース(I/F)部320、操作部330、などから構成される。
【0034】
表示部310は、例えば、液晶表示装置などから構成され、デジタルカメラ1を操作するために必要な種々の画面や、撮影時のライブビュー画像、撮像画像、などを表示出力する。本実施形態では、画像出力部240からの画像信号(RGB信号)などに基づいて撮像画像等の表示出力がおこなわれる。
【0035】
外部インタフェース部320は、例えば、USB(Universal Serial Bus)コネクタやビデオ出力端子などから構成され、外部のコンピュータ装置への画像データの出力や、外部のモニタ装置への撮像画像の表示出力などをおこなう。
【0036】
操作部330は、デジタルカメラ1の外面上に構成されている各種ボタンなどによって構成され、デジタルカメラ1の使用者による操作に応じた入力信号を生成して制御部210に入力する。操作部330を構成するボタンとして、例えば、シャッタ動作を指示するためのシャッタボタンや、デジタルカメラ1のもつ動作モードを指定するためのモードボタン、各種設定をおこなうための十字キーや機能ボタン、などが含まれているものとする。
【0037】
センサ部400は、デジタルカメラ1に手ブレ補正機能が備えられている場合に構成されるものであり、デジタルカメラ1に生じた動きを検出する。センサ部400は、例えば、ジャイロセンサなどから構成され、例えば、シャッタボタンの押下などによって生じた撮像時のデジタルカメラ1の動きを検出し、検出値を制御部210に入力する。
【0038】
ここで、本実施形態では、記憶部250に格納されている動作プログラムを制御部210が実行することで、後述する各処理が実現されるが、この場合に制御部210によって実現される機能を、図2を参照して説明する。
【0039】
図2は、制御部210によって実現される機能を示した機能ブロック図である。ここでは、連写機能によって撮像された画像からストロボ画像を生成する機能を実現するために必要な機能構成を示す。この場合、図示するように、制御部210は、動作モード処理部211、撮像制御部212、撮像画像処理部213、被写体検出部214、画像選択部215、背景画像生成部216、ストロボ画像生成部217、などとして機能する。
【0040】
動作モード処理部211は、表示部310との協働により、デジタルカメラ1が有する各種動作モードをデジタルカメラ1のユーザに指定させるために必要な画面表示や指定された動作モード毎の設定画面表示などをおこなう他、操作部330との協働により、ユーザが指定した動作モードを認識し、当該動作モードの実行に必要なプログラムや演算式などを記憶部250から読み出し、制御部210の主記憶装置(メモリ)にロードする。
【0041】
本実施形態では、ストロボ画像生成機能にかかる動作モード(ストロボ画像生成モード)がユーザによって指定されるものとし、以下に説明する制御部210の各機能構成は、ストロボ画像生成モードの指定に応じて動作モード処理部211がロードしたプログラムを実行することで実現される機能構成である。
【0042】
撮像制御部212は、撮像部100を制御することでデジタルカメラ1での撮像動作を実行する。本実施形態にかかるストロボ画像生成機能は、デジタルカメラ1の連写機能によって得られた撮像画像からストロボ画像を生成するので、本実施形態にかかる撮像制御部212は、撮像部100が連写動作をおこなうよう制御する。この場合、操作部330のシャッタボタンが押下されている間、撮像部100による撮像動作が連続的におこなわれるものとする。撮像制御部212の制御による連写動作で得られた撮像画像(連写画像)は、画像処理部220による処理を経て、順次画像メモリ230に格納される。この場合、画像メモリ230に格納される連写画像のそれぞれには、例えば、撮像順にフレーム番号が付与される。
【0043】
撮像画像処理部213は、画像メモリ230に格納された連写画像を、ストロボ画像の生成にかかる処理に応じた形式に変換・加工したり、撮像画像を用いた種々の処理をおこなったりする。本実施形態では、連写画像の位置合わせをおこなう他、被写体領域の抽出などを高速におこなうために、撮像画像の1次元データへの変換などをおこなう。撮像画像処理部213によって変換されたデータは、例えば、制御部210の主記憶装置(メモリ)に格納される。ここで「1次元データ」とは、画像データを構成している画素値など情報を1方向成分で表したものである。本実施形態では、画像データを所定の1方向に投影することで得られる投影データを1次元データとする。この場合に画像データを投影する1方向は、対象としている被写体の移動方向に基づいて決定される(詳細後述)。
【0044】
被写体検出部214は、各撮像画像間の1次元データを比較することで、各撮像画像において被写体を示す部分(領域)を検出する。この場合、被写体検出部214は、検出した被写体部分の位置情報(座標情報)を検出する。また、画像選択部215が選択した画像についての被写体部分を、画像メモリ230に格納されている撮像画像(連写画像)から抽出する。
【0045】
画像選択部215は、被写体検出部214が検出した被写体部分の位置情報に基づいて、被写体部分が重ならない撮像画像を選択することで、ストロボ画像の生成に好適な画像(フレーム)を連写画像の中から選択する。
【0046】
背景画像生成部216は、画像選択部215が選択した撮像画像から背景画像を生成する。ここでは、選択された撮像画像すべてについて、同一座標における画素値を取得し、画素値の中央値などを当該座標の画素値とすることで、被写体を除外した背景画像を生成する。
【0047】
ストロボ画像生成部217は、背景画像生成部216が生成した背景画像に、選択された撮像画像から被写体検出部214が抽出した被写体部分の画像を合成することで、1つの背景画像内に、移動する被写体が重ならずに複数箇所で現れるストロボ画像を生成する。
【0048】
以上が制御部210によって実現される機能である。なお、本実施形態では、制御部210がプログラムを実行することによる論理的処理で上述した各機能が実現されるものとするが、これらの機能を、例えば、ASIC(Application Specific Integrated Circuit:特定用途向け集積回路)などのハードウェアによって構成してもよい。この場合、図2に示した機能のうち、画像処理にかかる機能については、画像処理部220によって実現されてもよい。
【0049】
以上説明したデジタルカメラ1の構成は、本発明を実現するために必要な構成であり、デジタルカメラとしての基本機能や種々の付加機能に用いられる構成は必要に応じて備えられているものとする。
【0050】
このような構成のデジタルカメラ1による動作を以下に説明する。ここでは、ストロボ画像生成モードが指定された場合にデジタルカメラ1が実行する「ストロボ画像生成処理」を、図3に示すフローチャートを参照して説明する。このストロボ画像生成処理は、デジタルカメラ1のユーザが操作部330を操作することで、ストロボ画像生成モードを指定したことを契機に開始される。この場合、動作モード処理部211が、ストロボ画像生成モードにかかるプログラムなどを記憶部250からロードすることで、図2に示した各機能構成により以下の処理が実行される。
【0051】
処理が開始されると、動作モード処理部211が、ストロボ画像生成モードを実施する上で必要となる設定のための設定画面を表示部310に表示する(ステップS101)。ここで表示される設定画面の例を図4に示す。
【0052】
ここではまず、図4(a)に示すような、カメラの向き(縦横)を設定するための設定画面が表示される。この設定画面は、ストロボ画像とする連写画像を撮影するときのデジタルカメラ1が、横位置であるか縦位置であるかをユーザに選択させるためのものである。デジタルカメラ1のユーザは、操作部330を操作し、連写撮影時のカメラの向きを指定する。なお、デジタルカメラ1が、例えば、加速度センサなどによる縦位置検出機能などを備えている場合は、その検出結果を用いることができるので、設定画面によってユーザに指定させる必要はない。
【0053】
指定されたカメラの向きが指定されると、動作モード処理部211は、図4(b)に示すような、被写体の移動方向を設定するための設定画面を表示部310に表示する。つまり、ストロボ画像生成モードにおいては、移動する被写体を撮影することになるので、その移動方向をここで設定する。図示するように、被写体の移動方向を設定する設定画面には、例えば、4方向を示す矢印が表示されるので、ユーザは、操作部330の十字キーなどを操作することで、撮影する被写体の移動方向を設定する。
【0054】
動作モード処理部211は、このようにして設定された、カメラの向きや被写体の移動方向を、例えば、制御部210の主記憶装置(メモリ)などに記録することで、ストロボ画像生成モードにかかる設定をおこなう(ステップS102)。
【0055】
ここで、ストロボ画像生成モードで撮影する場合における、デジタルカメラ1と被写体との関係を図5(a)に例示する。この場合、例えば、左から右に移動する被写体MVをデジタルカメラ1で撮影することを想定する。この場合において、デジタルカメラ1の方向や画角は一定にして撮影する。なお、図5(a)に例示した撮影の場合、ステップS102で設定される内容は「カメラの向き:横位置」、「被写体移動方向:→(右)」ということになる。つまり、横方向に被写体が移動することが設定される。
【0056】
上述したように、ストロボ画像生成モードにおいては連写で撮影するので、デジタルカメラ1のユーザは、上記の設定をおこなった後、操作部330のシャッタボタンを操作して撮影を開始することになる。よって、動作モード処理部211は、ストロボ画像生成モードが指定された際に、撮像制御部212に対し、連写撮像をおこなうよう指示する。
【0057】
そして、デジタルカメラ1のユーザ(撮影者)がシャッタボタン(操作部330)を操作(押下)すると、操作に応じた入力信号が操作部330から制御部210に入力される。これにより、撮像制御部212は、シャッタボタンが操作されたと判別し(ステップS103:Yes)、撮像部100を制御して連写撮像をおこなう(ステップS104)。この連写撮像動作は、ユーザがシャッタボタンを押下し続けている間おこなわれる(ステップS105:No)。
【0058】
シャッタ操作を終了すると(ステップS105:Yes)、撮像制御部212が撮像動作の終了を撮像部100に指示する。これにより、連写撮像動作が終了し、連写撮像によって得られた画像(連写画像)が順次、画像処理部220での処理を経て画像メモリ230に格納される(ステップS106)。
【0059】
図5(a)に例示した場面を連写撮像した場合に得られる連写画像の例を図5(b)に示す。図示するように、被写体MVが移動する様子が、複数の撮像画像によって示される。上述したように、デジタルカメラ1の方向や画角を一定にして撮影しているので、各連写画像における被写体MV以外の部分(すなわち、背景)には大きな変化はない。
【0060】
ここで、1回の連写撮像動作によって得られた連写画像のそれぞれには、撮像した時系列順に1〜pのフレーム番号が付される。図5(b)の例では、フレーム1〜フレーム12(すなわち、p=12)までの画像が得られたことになる。
【0061】
このようにして連写撮像がおこなわれると、得られた連写画像を用いてストロボ画像を生成するための処理が順次実行される。この場合、撮像制御部212が、連写撮像の終了を撮像画像処理部213に通知することで、連写画像の位置合わせをおこなうための「位置合わせ処理」が撮像画像処理部213によって実行される(ステップS200)。この「位置合わせ処理」を、図6に示すフローチャートを参照して説明する。
【0062】
処理が開始されると、撮像画像処理部213は、画像メモリ230に格納されている撮像画像フレーム(1〜p)の中から、連写された一連の撮像画像間の移動量を検出する際の基準となるフレーム(以下、「基準フレームN」とする)を設定する(ステップS201)。ここでは、例えば、1番目のフレームを基準フレームNとする。
【0063】
次に、撮像画像処理部213は、撮像画像フレームを指定するポインタnに、ステップS201で設定した基準フレームNの次のフレーム(すなわち、N+1)を指定する(ステップS202)。
【0064】
撮像画像処理部213は、基準フレームNとn番目のフレーム(以下、「フレームn」とする)との間の移動量VFを検出する(ステップS203)。この場合、撮像画像処理部213は、基準フレームN上で設定した特徴点と、フレームn上での当該特徴点との位置のズレを示すベクトルを求めることで、フレーム間の移動量を求める。
【0065】
ここでのフレーム間の移動量は、撮像画像全体の揺れなどを示すものである。ストロボ画像を生成するための撮影は、上述したようにデジタルカメラ1の方向や画角を一定にしておこなう。よって、三脚などでデジタルカメラ1を固定して撮影することが望ましいが、状況によっては手持ちで撮影する場合もある。手持ちの場合、連写撮像期間中にデジタルカメラ1が動いてしまうことがある。このようなときに、フレーム間の位置ズレが生じてしまう。
【0066】
この場合、撮像画像処理部213は、ステップS203で検出した移動量VFが、第1の閾値th1より小さいか否かを判別する(ステップS204)。ここで、ストロボ画像は、同一の背景画像上に、動く被写体を示した複数の被写体画像を合成することで生成されるので、背景部分については、撮像された複数のフレームにわたってほぼ一定となっていることが望ましい。しかし、上述したようなデジタルカメラ1の動きによってフレーム間の位置ズレが生じた場合、フレーム間で背景部分に大きな差異ができてしまう。この結果、ストロボ画像を生成した際に、背景部分が重複したように現れる場合がある。このようなフレームを峻別するため、第1の閾値th1には、背景部分が一定であるとみなすことのできる移動量VFの許容範囲の上限値が設定される。
【0067】
基準フレームNとフレームnとの間の移動量VFが第1の閾値th1未満である場合(ステップS204:Yes)、基準フレームNに対しての大きな位置ズレがフレームnでは生じていないので、撮像画像処理部213は、フレームnを、ストロボ画像の生成に用いることのできるフレーム(有効フレーム)として指定する(ステップS207)。
【0068】
なお、本実施形態では、後段の「有効フレーム選択処理」において、被写体位置に基づいた有効フレームの選択をおこなうので、本処理で指定される「有効フレーム」を「フレームレベルの有効フレーム」とし、後述する「有効フレーム選択処理」で指定される「有効フレーム」を「被写体レベルの有効フレーム」とする。
【0069】
一方、フレーム間の移動量VFが第1の閾値th1以上である場合(ステップS204:No)、撮像画像処理部213は、当該移動量VFと第2の閾値th2(th1<th2)とを比較する(ステップS205)。ここで、第1の閾値th1以上となる移動量VFが検出された場合であっても、フレームnの画像を変形させる画像処理をおこなうことで、位置ズレを許容範囲内に補正することができる。よって、第2の閾値th2には、画像変形によって補正することのできる移動量VFの許容範囲の上限値が設定される。
【0070】
検出された移動量VFが第2の閾値th2未満であれば(ステップS205:Yes)、撮像画像処理部213は、フレームnの画像を変形させる画像処理をおこなうことで位置合わせをおこなう(ステップS206)。
【0071】
このような画像変形によって位置合わせすることのできたフレームnについては、基準フレームNとの差異が許容範囲内となっているので、撮像画像処理部213は、フレームnを、ストロボ画像の生成に用いることのできる有効フレーム(フレームレベル)として指定する(ステップS207)。
【0072】
なお、フレーム間の移動量VFが、第2の閾値th2以上となってしまう場合(ステップS205:No)は、画像変形をおこなっても基準フレームNとの差異を許容範囲内にすることができないので、撮像画像処理部213は、ストロボ画像を生成する際に合成する対象から当該フレームを除外するため、このフレームnを無効フレームとして指定する(ステップS208)。
【0073】
以上のような処理をおこなった撮像画像処理部213は、撮像されたフレーム画像についての情報を記録するために、図7に示すような「フレーム情報テーブル」を、例えば、主記憶装置(メモリ)内に展開する。この「フレーム情報テーブル」には、図示するように、撮像時のフレーム番号(1〜p)をキーとしたレコードが作成されており、各レコードには、当該フレームについての情報が記録される。
【0074】
上述した各処理をおこなった撮像画像処理部213は、各フレームについて、フレームレベルの有効フレームであるか否かを示す情報と、基準フレームNとの差異を示す移動量VFと各閾値との比較を示す情報を「フレーム情報テーブル」に記録する。例えば、ステップS207で「有効フレーム」と指定したフレームについては、「有効フレーム(フレームレベル)」の欄に「OK」と記録し、ステップS208で「無効フレーム」として指定したフレームについては「NG」と記録する。
【0075】
フレームnについて以上のような処理をおこなうと、撮像画像処理部213は、ポインタnを+1することで次のフレームを指定し(ステップS209)、nの値が、撮像画像の最終フレームを示すpの値以下であれば(ステップS210:No)、ステップS203以降の処理をおこなうことで、各フレームについて、フレームレベルで有効フレームであるか無効フレームであるかを順次指定する。
【0076】
そして、撮像画像のすべてのフレームに対して上記処理がおこなわれると(ステップS210:Yes)、本処理を終了し、「ストロボ画像生成処理」(図3)のフローに戻る。
【0077】
なお、デジタルカメラ1が手ブレ補正機能を有している場合、デジタルカメラ1自体に生じた動きを検出するためのセンサ部400(ジャイロセンサなど)を備えていることになる。このような場合には、連写撮像時に検出されたセンサ部400の検出値をフレーム毎に記録しておき、この検出値に基づいてフレーム間の移動量VFを求めることができる。
【0078】
「位置合わせ処理」が終了すると、撮像画像処理部213は、連写画像を1次元データ化するための「1次元データ生成処理」を実行する(ステップS300)。この1次元データ生成処理を、図8に示すフローチャートを参照して説明する。なお、理解を容易にするため、以下の説明においては、カメラの向きとして「横位置」が設定されているものとする。
【0079】
処理が開始されると、撮像画像処理部213は、ポインタnに、フレーム番号の初期値「1」を設定し(ステップS301)、画像メモリ230に格納されている連写画像フレーム番号がnの画像(フレームn)を処理対象として選択する(ステップS302)。
【0080】
処理対象画像を選択すると、撮像画像処理部213は、当該画像における調査座標の初期化をおこなう(ステップS303)。ここでは、x座標とy座標のそれぞれを「0」とした座標を初期調査座標とする。ここで、画像上の座標について、図9(a)を参照して説明する。本実施形態では、カメラの向きが「横位置」としているので、このようなデジタルカメラ1で得られる撮像画像は、図9(a)に示すような横長の画像となる。この場合、画像の左右方向を「X方向」、上下方向を「Y方向」とする。ここで、このような画像の左上端部を座標原点(0,0)とする。この場合、X方向の画素数をsizeXとすると、x座標の最大値はsizeX-1となる。同様に、Y方向の画素数をsizeYとすると、y座標の最大値はsizeY-1となる。
【0081】
次に撮像画像処理部213は、上述したストロボ画像生成処理(図3)のステップS102で設定された被写体移動方向が、図9(a)のように定義した撮像画像の座標系におけるX方向であるかY方向であるか判別する(ステップS304)。ここで、カメラの向きが横位置である場合、図4(b)に示した設定画面で左右方向のいずれかが指定されていれば、被写体の移動方向はX方向(横方向)となる。一方、上下方向のいずれかが指定されていたのであれば、被写体の移動方向はY方向(縦方向)ということになる。
【0082】
図5(a)に例示した場面では、横方向に移動している被写体MVを撮影しているので、ここでは被写体の移動方向がX方向であると判別される(ステップS304:Yes)。被写体の移動方向がX方向である場合、撮像画像処理部213は、被写体の移動方向と直交する方向、すなわちY方向に画像を投影する処理をおこなう。
【0083】
この場合、撮像画像処理部213は、処理対象画像のX方向の座標すべてにおいて、Y方向の画素値を合算することでY方向に投影する(ステップS305、ステップS306、ステップS307:Yes)。ここでは、ステップS303で調査座標の初期化をおこなっているので、まず、x座標0に対応するy座標の画素値を合算し、その結果を制御部210の主記憶装置(メモリ)に保持する。つぎに、x座標の値を+1し、次のx座標について同様の演算をおこなう。このような処理を、x座標が当該画像のX方向のサイズ、すなわちX方向の画素数分繰り返しおこなう。
【0084】
一方、被写体の移動方向がY方向(上下方向)である場合(ステップS304:No)は、同様の方法によって、移動方向と直交する方向、すなわちX方向に画像を投影することとなる(ステップS308、ステップS309、ステップS310:Yes)。
【0085】
処理画像における投影が終了すると(ステップS307:No、もしくは、ステップS310:No)、撮像画像処理部213は、ポインタnを+1し(ステップS311)、新たなポインタnに対応するフレーム番号が、最終フレームのフレーム番号p以下であれば(ステップS312:No)、次の連写画像を処理対象として選択する(ステップS302)。
【0086】
一方、すべての連写画像についての投影が終了した場合(ステップS312:Yes)は、ストロボ画像生成処理(図3)のフローに戻る。
【0087】
このような、1次元データ生成処理による投影により、連写画像のそれぞれが、例えば、図9(b)や図9(c)に示すような1次元データに変換されることになる。このような1次元データ生成は、例えば、数1によって表すことができる。
【0088】
【数1】

【0089】
このようにして、連写画像のそれぞれについての1次元データ(投影データ)を生成すると、撮像画像処理部213は、生成した1次元データを、元となった撮像画像のフレーム番号と対応づけて画像メモリ230に順次格納するとともに、すべての連写画像についての1次元データが生成された旨を被写体検出部214に通知する。被写体検出部214は、撮像画像処理部213からの通知に応じて、変換された1次元データを用いて被写体部分を検出するための「被写体領域検出処理」を実行する(ステップS400)。
【0090】
ここで、連写画像についての1次元データから被写体部分を検出する処理の概念を図9(b)〜図9(d)を参照して説明する。図9(b)は、図5(a)に示した場面において、被写体MVがない状態で撮像した場合の撮像画像の例(上段)と、当該撮像画像の1次元データの例(下段)を示し、図9(c)は、被写体MVがある状態の撮像画像の例(上段)と、当該撮像画像の1次元データの例(下段)を示したものである。
【0091】
上述したように、本実施形態にかかるデジタルカメラ1でストロボ画像生成をおこなう場合、デジタルカメラ1の方向や画角を一定にして連写撮像をおこなう。よって、得られる複数の連写画像間では、被写体MV以外の背景部分に大きな変化はない。よって、各連写画像間の1次元データを比較すると、被写体MVの範囲において変化が現れることになる。ここで、理解を容易にするため、被写体MVが写っていない画像と被写体MVが写っている画像の1次元データを、それぞれ図9(b)および図9(c)に示す。それぞれの1次元データを比較すると、図9(c)で被写体MVが写っている箇所のデータが図9(b)とは異なっており、その他の部分では同じデータとなっている。
【0092】
すなわち、両画像の1次元データを図9(d)に示すように重ねると、一致しない箇所が存在する。このような1次元データが一致しない箇所が、被写体MVが写っている範囲(被写体の移動方向がX方向であればX方向の範囲、移動方向がY方向であればY方向の範囲)となる。よって、時系列順に隣接する連写画像間の1次元データの差分をとれば、被写体範囲の推移が示されることとなる。
【0093】
被写体検出部214は、このような原理に基づく処理をおこなうことで、連写画像における被写体部分の検出をおこなう。ここで実行される被写体領域検出処理(ステップS400)を、図10〜図12に示すフローチャートを参照して説明する。
【0094】
処理が開始されると、被写体検出部214はまず、ストロボ画像生成処理(図3)のステップS102における設定内容に基づき、被写体の移動方向がX方向であるかY方向であるか判別する(ステップS401)。以下、被写体の移動方向がX方向である場合(ステップS401:Yes)を中心に説明する。
【0095】
この場合、被写体検出部214は、調査対象とするX方向の座標を初期化する。上述したように、撮像画像の座標範囲は(0,0)〜(sizeX-1,sizeY-1)なので、x座標の初期値を「0」とする(ステップS402)。
【0096】
次に被写体検出部214は、ポインタnを1〜pとなるよう指定することで連写画像のフレームを順次指定し、各フレームについて「1次元データ生成処理」(図8)で生成された、座標xに対応する1次元データを画像メモリ230から取得して、例えば、制御部210の主記憶装置(メモリ)に格納する(ステップS403〜ステップS406:No)。
【0097】
すべてのフレームの1次元データを取得すると(ステップS406:Yes)、被写体検出部214は、取得した1次元データをソートし(ステップS407)、その中央値を、座標xが背景画像を示している場合の画素値fb(x)とする(ステップS408)。
【0098】
このような動作を、x座標の各点でおこなう(ステップS409、ステップS410:No)。すべてのフレームにおけるすべてのx座標(0〜sizeX-1)についての背景画素値fb(x)が得られると(ステップS410:Yes)、ステップS411(図11)に進む。
【0099】
ここで被写体検出部214は、ポインタnをフレーム初期値「1」にするとともに、x座標を座標初期値「0」とする(ステップS411、ステップS412)。そして、被写体検出部214は、n番目のフレームの当該x座標における画素値fn(x)と、ステップS408で求めた当該座標xにおける背景画素値fb(x)の差分fd(x)(=|fb(x)−fn(x)|)を算出する(ステップS413:Yes、ステップS414)。
【0100】
被写体検出部214は、算出した差分fd(x)が所定の閾値DiffThより大きいか否かを判別することで、当該座標xが被写体を示している部分であるか否かを判別する(ステップS415)。つまり、背景画素値fb(x)は、座標xが背景画像を示しているときの画素値であるから、実際の画素値fn(x)が背景画像の画素値より大きく異なっていれば、フレームnにおける座標xは、背景以外、すなわち被写体MVを示していることになる。よって、このような判別をおこなえる閾値DiffThを設定し、差分fd(x)が閾値DiffThより大きければ、画素値fn(x)は被写体部分を示す画素値であると判別することができる。
【0101】
ここで、画素値fd(x)が閾値DiffTh以下である場合(ステップS415:No)、n番目のフレームにおける座標xは被写体部分ではないので、x座標を+1し(ステップS416)、画像サイズ内の座標であれば(ステップS413:Yes)、次の座標xについて同様の判別をおこなう(ステップS414、ステップS415)。
【0102】
ここで、ステップS412での初期化において、x座標を画像の左端である「0」としているので、調査座標の座標xが被写体部分の画素を示していると判別した場合(ステップS415:Yes)、被写体検出部214は、当該x座標を、n番目のフレームにおける被写体部分の左端に対応する座標L(n)とする(ステップS417)。
【0103】
つまり、撮像画像の左端となるx=0の位置から、x座標を+1しながら判別をおこなっているので、ステップS412〜ステップS416の処理は、画像の左端から被写体部分の探索をおこなっていたことになる。ここで、x座標についての被写体範囲には幅があるので、被写体の範囲の右端についても特定する必要がある。よって、被写体部分の左端を特定すると、被写体検出部214は、被写体部分の右端を探索する動作をおこなう。
【0104】
この場合、撮像画像の右端側から被写体部分の探索を開始する。したがって、被写体検出部214は、調査座標xを、撮像画像の右端を示すx座標であるsizeX-1とする(ステップS418)。ここでは、被写体部分の右端を探索するので、調査座標xは、ステップS417で被写体部分の左端とした座標L(n)よりも右側でなければならない。よって、被写体検出部214は、調査座標xがL(n)より大きい場合(ステップS419:Yes)、当該座標xについてのfd(x)を算出し(ステップS420)、算出したfd(x)が閾値DiffThより大きいか否かを判別する(ステップS421)。
【0105】
座標xにおけるfd(x)が閾値DiffTh以下で、被写体部分を示していないのであれば(ステップS421:No)、被写体検出部214は、調査座標xを−1することで左に1座標分ずらし(ステップS422)、当該座標xについて同様の判別をおこなう(ステップS419、ステップS420、ステップS421)。このようにして、撮像画像の右端側から探索し、調査座標xにおける画素が被写体部分を示していると判別した場合(ステップS421:Yes)、被写体検出部214は、当該座標xを、フレームnにおける被写体部分の右端の座標R(n)とする(ステップS423)。
【0106】
なお、画像の左端から探索しても被写体部分が検出されない場合(ステップS413:No)や、右端側から設定したx座標が被写体左端L(n)より左側にある場合(ステップS419:No)は、当該フレームnには被写体部分がないものとし、例えば、L(n)=R(n)となるよう数値設定し、次のフレームに調査対象を移動する(ステップS424)。
【0107】
また、フレームnについて被写体範囲が検出された場合も、次のフレームを調査対象として、上述した処理をおこなう(ステップS424、ステップS425:No)。そして、すべてのフレームについて被写体領域を検出すると(ステップS425:Yes)、「ストロボ画像生成処理」(図3)のフローに戻る。
【0108】
以上が、被写体の移動方向がX方向である場合の被写体領域検出の動作である。この場合、図13(a)に示すように、各フレームに現れている被写体MVのX方向についての範囲が順次求められることになる。このようにして求められた被写体範囲の座標(L(n)とR(n))は、フレーム番号と対応づけて主記憶装置(メモリ)などに格納される。
【0109】
一方、被写体の移動方向がY方向である場合、上述した処理と同様の処理をY方向についておこなうことになる。すなわち、図10のステップS426〜ステップS434および図12のステップS435〜ステップS449をおこなうことで、各フレームに現れている被写体画像の上端座標T(n)と下端座標B(n)がそれぞれ求められる(図13(b)参照)。
【0110】
このようにして被写体領域を検出すると、被写体検出部214はその旨を画像選択部215に通知する。この場合、画像選択部215は、検出された被写体領域に基づいて、ストロボ画像の生成に用いる撮像画像(有効フレーム)を選択するための「有効フレーム選択処理」(図3のステップS500)を実行する。この有効フレーム選択処理を、図14および図15に示すフローチャートを参照して説明する。
【0111】
処理が開始されると、画像選択部215はまず、被写体の移動方向がX方向であるかY方向であるかを判別する(ステップS501)。ここで、図14のフローチャートは、被写体の移動方向がX方向である場合の処理を示し、図15のフローチャートは、Y方向である場合の処理を示している。
【0112】
被写体の移動方向がX方向である場合(ステップS501:Yes)、画像選択部215は、ポインタnをフレーム初期値「1」とし(ステップS502)、上述した「位置合わせ処理」での処理結果に基づき、当該n番目のフレーム(フレームn)は、フレームレベルでの有効フレームに指定されているか否かを判別する(ステップS503)。この場合、画像選択部215は、制御部210の主記憶装置(メモリ)に展開されている「フレーム情報テーブル」(図7)を参照することで、フレームnが、フレームレベルでの有効フレームに指定されているか否かを判別する。
【0113】
ここで、フレームレベルで「無効フレーム」と指定されている場合(ステップS503:No)、背景部分が基準フレームNと大きくずれているので、当該フレームnをストロボ画像生成に用いると、背景部分が重複してしまうおそれがある。よって、画像選択部215は、ここでも無効フレームに指定する(ステップS504)。
【0114】
この場合、図7に示した「フレーム情報テーブル」の例では、例えば、フレーム番号「3」のレコードのように、「有効フレーム(フレームレベル)」と「有効フレーム(被写体レベル)」の欄の双方に「NG」が記録されることになる。
【0115】
一方、フレームnがフレームレベルで「有効フレーム」と指定されている場合(ステップS503:Yes)、画像選択部215は、上述した「被写体領域検出処理」での検出結果に基づき、フレームnに被写体領域があるか否かを判別する(ステップS505)。ここでは、被写体領域の範囲を示すL(n)およびR(n)(もしくはT(n)およびB(n))がフレームnについて記録されており、かつ、L(n)≠R(n)(もしくはT(n)≠B(n))であれば、フレームnから被写体領域が検出されたと判別する。
【0116】
ここで、フレームnから被写体領域が検出されていない場合(ステップS505:No)は、画像選択部215は、フレームnをストロボ画像の生成には用いない無効フレームとして指定する(ステップS504)。
【0117】
ステップS504でフレームnを「無効フレーム」に指定した場合、画像選択部215は、ポインタnを+1することで次のフレームを指定し(ステップS510)、nの値が最終フレームp以下であれば(ステップS511:No)、ステップS503以降の処理をおこなう。
【0118】
このようにして、画像選択部215は、フレームレベルで有効フレームとされたフレームでの被写体領域の有無を順次判別する。そして、画像選択部215は、被写体領域があると判別された最初のフレームを有効フレームとして選択する(ステップS505:Yes、ステップS506:No、ステップS508)。ここで、画像選択部215は、有効フレームとして選択したフレーム(連写画像)に、フレーム番号とは別の有効フレーム番号を付与する。この場合、ステップS508で最初の有効フレームとして選択したフレームには、有効フレーム番号として「1」を付与する。さらに、画像選択部215は、有効フレームを指定するためのポインタmに、ステップS508で選択されたフレームのフレーム番号を設定する(ステップS509)。
【0119】
この処理で画像選択部215は、「フレーム情報テーブル」(図7)に、被写体レベルでの有効フレームであるか否かを示す情報と、有効フレーム(被写体レベル)に付与した有効フレーム番号を記録する。
【0120】
最初の有効フレームを選択するとともに、このフレームのフレーム番号をポインタmに設定すると、画像選択部215は、ポインタnを+1することで次のフレームを指定し(ステップS510)、nの値が最終フレームp以下であれば(ステップS511:No)、ステップS503以降の処理をおこなう。すなわち、ストロボ画像の生成に用いる次のフレームを探索する。
【0121】
最初の有効フレームが選択された後は(ステップS506:Yes)、調査対象フレーム(n番目のフレーム)と直前に選択した有効フレーム(ポインタmが指定するフレーム)との間で被写体領域の位置を比較することで、前の有効フレームと被写体部分が重ならないフレームを有効フレームとして選択していく。
【0122】
ここで、被写体の移動方向がX方向である場合、左から右への移動と右から左への移動の2通りがある。左から右に移動していたのであれば、フレームnにおける被写体領域が、フレームmにおける被写体領域より右側にある必要がある。一方、右から左に移動していたのであれば、フレームnにおける被写体領域が、フレームmにおける被写体領域より左側にある必要がある。
【0123】
よって、画像選択部215は、フレームnにおける被写体左端L(n)が、フレームmの被写体右端R(m)より大きいか、フレームnにおける被写体右端R(n)が、フレームmの被写体左端L(m)より小さい場合、フレームnの被写体部分がフレームmの被写体部分と重なっていないと判別する(ステップS507)。
【0124】
フレームnの被写体領域がこのような条件に合致していれば(ステップS507:Yes)、画像選択部215は、当該n番目のフレームを有効フレームとして選択する(ステップS508)。一方、条件に合致しなければ(ステップS507:No)、当該n番目のフレームは、ストロボ画像の生成に用いない無効フレームとする(ステップS504)。
【0125】
以降の連写画像についても、このような条件判別による有効フレームの選択をおこない、すべての連写画像を調査して有効フレームの選択をおこなうと(ステップS511:Yes)、図16に示すように、フレーム番号とは別の有効フレーム番号が付与された有効フレームと、ストロボ画像の生成には用いない無効フレームとが峻別される。
【0126】
なお、有効フレーム番号は、図示するように、選択された有効フレームにおいて時系列順に連番となっているものとする。この場合、選択された有効フレームの数をp'(p'≦p)とする。このように、選択した有効フレームを示す識別情報を付与することで、画像メモリ230に格納した連写画像の中から有効フレームを峻別できるが、無効フレームを画像メモリ230から消去することで、有効フレームのみ画像メモリ230に残すようにしてもよい。
【0127】
以上が、被写体がX方向に移動していた場合に有効フレームを選択する動作である。被写体の移動方向がY方向である場合(図14のステップS501:No)も、同様の処理によって有効フレームを選択することができる。つまり、図15に示すフローチャートのステップS512〜ステップS521をおこなうことで、Y方向に移動する被写体の画像が重ならないフレームが有効フレームとして選択されるが、最初の有効フレームが選択された後の選択条件は、被写体が上から下に移動する場合と下から上に移動する場合を考慮する。
【0128】
すなわち、上から下に移動していたのであれば、フレームnにおける被写体領域が、直前に選択した有効フレームmにおける被写体領域より下側にある必要がある。一方、下から上に移動していたのであれば、フレームnにおける被写体領域が、直前に選択した有効フレームmにおける被写体領域より上側にある必要がある。
【0129】
よって、画像選択部215は、フレームnにおける被写体上端T(n)が、直前に選択した有効フレームmの被写体下端B(m)より大きいか、フレームnにおける被写体下端B(n)が、直前に選択した有効フレームmの被写体上端T(m)より小さい場合、フレームnの被写体部分が直前に選択した有効フレームmの被写体部分と重なっていないと判別する(図15のステップS517)。
【0130】
以上説明したように、撮像画像を1方向に投影した1次元データから、被写体領域の検出と、被写体部分が重ならないフレームの選択をおこなった。すなわち、ストロボ画像の生成に用いる画像(有効フレーム)の選択を、データ量の少ない1次元データに基づいておこなうことで、撮像画像のすべてのデータを用いておこなうよりも、画像選択までの処理量が大幅に削減される。
【0131】
このようにして、ストロボ画像の生成に用いる画像(有効フレーム)が選択されると、「ストロボ画像生成処理」(図3)では、選択したフレームの画像データを用いて、ストロボ画像の背景画像を生成するための「背景画像生成処理」(ステップS600)、有効フレームから被写体部分の画像を抽出するための「被写体画像抽出処理」(ステップS700)が順次実行される。
【0132】
「背景画像生成処理」を、図17に示すフローチャートを参照して説明する。この背景画像生成処理は、有効フレーム選択処理が終了した旨を画像選択部215が背景画像生成部216に通知したことを契機に開始される。
【0133】
処理が開始されると、背景画像生成部216は、有効フレーム上で調査する座標(x,y)の初期化をおこなう。ここでは、xおよびyのそれぞれの初期値「0」とすることで、有効フレームの座標原点(0,0)を調査座標とする(ステップS601)。
【0134】
次に背景画像生成部216は、有効フレームを指定するポインタn'で1〜p'を順次指定することで、設定した座標(x,y)の画素値を、画像メモリ230に格納されているすべての有効フレーム(1〜p')から順次取得する(ステップS602〜ステップS604、ステップS605:No)。
【0135】
すべての有効フレームから座標(x,y)の画素値を取得すると(ステップS605:Yes)、背景画像生成部216は、取得した画素値をソートし(ステップS606)、その中央値を座標(x,y)が背景部分を示している場合の画素値(背景画素値fb'(x,y))とする(ステップS607)。
【0136】
座標(x,y)についての背景画素値fb'(x,y)を求めると、背景画像生成部216は、有効フレームの座標範囲内の座標を順次調査座標とし、当該座標(x,y)についての背景画素値fb'(x,y)を求める(ステップS608、ステップS609:No、ステップS602〜ステップS607)。ここでは、例えば、同一のy座標についてのx座標を順次+1していき、x座標が画像の右端に達したところでy座標を+1するとともに座標xを0にすることを繰り返すことで、(0,0)から(sizeX-1,sizeY-1)までの画素値を順次取得し、各座標における背景画素値fb'(x,y)を求める。
【0137】
すべての座標から背景画素値fb'(x,y)を求めると(ステップS609:Yes)、背景画像生成部216は、求めた背景画素値fb'(x,y)を各座標における画素値とすることで、有効フレームに示されている背景部分のみを示した背景画像を生成する(ステップS610)。背景画像生成部216は、生成した背景画像を画像メモリ230に格納するとともに、背景画像を生成した旨を被写体検出部214に通知して処理を終了する。
【0138】
この場合、ストロボ画像生成処理(図3)のフローに戻り、「被写体画像抽出処理」(ステップS700)が実行される。この被写体画像抽出処理は、背景画像の生成を契機に被写体検出部214によって実行される。この被写体画像抽出処理を、図18に示すフローチャートを参照して説明する。
【0139】
処理が開始されると、被写体検出部214は、座標(x,y)の初期化(ステップS701)と、対象フレームの初期化(ステップS702)をおこない、有効フレーム1〜p'のそれぞれから座標(x,y)の画素値fn'(x,y)を順次取得し、当該座標(x,y)における背景画素値fb'(x,y)との差分fd'(x,y)を算出する(ステップS703〜ステップS705、ステップS706:No)。
【0140】
すべての有効フレームから座標(x,y)における差分fd'(x,y)を算出すると(ステップS706:Yes)、被写体検出部214は、算出した差分fd'(x,y)の標準偏差fs(x,y)を算出する(ステップS707)。ここでは、例えば、被写体検出部214が数2を演算することで標準偏差fs(x,y)を算出する。
【0141】
【数2】

【0142】
座標(x,y)での標準偏差fs(x,y)を算出すると、被写体検出部214は、有効フレームの座標範囲内で調査座標を移動させ、各座標における標準偏差fs(x,y)を順次算出する(ステップS708、ステップS709:No、ステップS702〜ステップS707)。
【0143】
各座標における標準偏差fs(x,y)を算出すると(ステップS709:Yes)、被写体検出部214は、各有効フレームにおける被写体部分の判別に用いる変動閾値moveを、算出した標準偏差fs(x,y)に基づいて設定する(ステップS710)。ここでは、例えば、数3を演算することで、変動閾値moveを設定する。
【0144】
【数3】

【0145】
変動閾値moveを設定すると、被写体検出部214は、画像メモリ230に格納されている有効フレーム(1〜p')のそれぞれから、差分fd'(x,y)≧変動閾値moveとなる画素値を取得する(ステップS711、ステップS712)。
【0146】
被写体検出部214は、このような条件となる画素値を、フレームn'で被写体部分を示す画素値とし(ステップS713)、この画素値によって示される被写体部分に対し、画像の欠損を補間するための「画像平滑化処理」を実行する(ステップS900)。本実施形態にかかる「画像平滑化処理(1)」を、図19に示すフローチャートを参照して説明する。
【0147】
処理が開始されると、被写体検出部214は、制御部210の主記憶装置(メモリ)に展開されている「フレーム情報テーブル」(図7)から、当該フレームn'と基準フレームNとの間の移動量VFの情報を参照し(ステップS911)、移動量VFが、第1の閾値th1未満であるか否かを判別する(ステップS912)。
【0148】
上述したように、第1の閾値th1は、フレーム間における背景部分が一定とみなすことのできる移動量VFの許容範囲の上限値であるため、基準フレームNとの移動量VFが第1の閾値th1未満であれば、フレーム間の差異が微小であるため、背景部分の差異も微小である。
【0149】
よって、このような場合(ステップS912:Yes)、被写体検出部214は、抽出された被写体領域の欠損を修復して平滑化するためにおこなうモルフォロジー演算を通常の処理量でおこなう。ここでは、例えば、モルフォロジー膨張(dilation)をおこない(ステップS913)、その後、モルフォロジー収縮(erosion)を2回おこなってから(ステップS914)、モルフォロジー膨張(dilation)をおこなう(ステップS915)。
【0150】
一方、移動量VFが第1の閾値th1以上である場合(ステップS912:No)、フレームn'については、上述した「位置合わせ処理」(図6)において、画像変形による位置合わせがおこなわれていることになる。この場合、画像変形をおこなっているので、背景部分において、本来の画像と変形後の画像とで差異が生じることがあり、この差異の部分が被写体MVとして誤認識されてしまう場合がある。
【0151】
特に、図20(a)に例示するような、奥行きの大きいシーンを撮影した場合、いわゆるオクルージョンの影響により、フレーム画像全体が動いたときの背景の差異が大きくなりやすい。
【0152】
例えば、図20(a)に示したフレーム画像の次のフレームN+1が図20(b)に示されるような画像であった場合、手持ち撮影によるデジタルカメラ1の微動などにより、本来一定であるべき背景部分に変位があり、この移動量VFが第1の閾値th1以上であれば、上述した「位置合わせ処理」(図6)で、フレームN+1に対し画像変形による位置合わせがおこなわれる。
【0153】
この場合、フレームNには、図20(c)に示されるように、本来の背景画像が示されているが、フレームN+1には、図20(d)に示されるように、変形させた背景画像が示される。画像変形によって位置合わせをしているため、フレームNの背景画像とフレームN+1の背景画像の位置が同じであっても、図20(e)に示すように、背景画像の形状などに差異が生じる。
【0154】
図20に示すような奥行きの大きいシーンの場合、このような背景部分の形状の違いは、オクルージョンの影響により大きな差異となって現れる。これらの画像から背景画像と被写体領域を抽出してストロボ画像に合成すると、図20(f)に示すように、背景部分の差異の一部などが現れることがある。背景部分は本来一定であるので、このような部分は不要な背景画像である。
【0155】
このような不要部分が、フレーム画像上において被写体MVの近くにある場合、図20(g)に示すように、被写体MVを抽出した際に不要部分が被写体MVとして誤認識されて抽出されている場合がある。上述したモルフォロジー演算による平滑化は、被写体画像の欠損を修復して補間するものであるが、その際の演算量を増やすことで、図20(g)で示すような誤認識された背景部分を消去することができる。
【0156】
しかしながら、一律に演算量を多くしてしまうと、処理負荷が重くなってしまい、ストロボ画像の生成にかかる処理時間の長大化をもたらしてしまうとともに、本来被写体MV(動体)として認識されるべき領域が比較的小さい場合などには、その領域が消去されてしまう可能性もある。よって、オクルージョンの影響を受けやすいフレームと受けにくいフレームとで平滑化処理の重みを変えるようにすれば、背景部分が被写体(動体)として誤認識された領域を効果的に除去することができる。
【0157】
したがって、本処理においては、フレーム間の移動量VFに基づいて、対象フレームがオクルージョンの影響を受けやすいか否かを判別し、その判別結果に応じてモルフォロジー演算の処理量を異ならせる。
【0158】
よって、フレーム間の移動量VFが第1の閾値th1以上である場合(ステップS912:No)、被写体検出部214は、モルフォロジー演算の処理量を増やすことで、被写体MVの近傍に発生した不要部分の除去をおこなう。この場合、被写体検出部214は、対象フレームn'に対して、一般的な処理量よりも演算量を増やしたモルフォロジー演算をおこなう。ここでは、例えば、モルフォロジー膨張(dilation)をおこない(ステップS916)、その後、モルフォロジー収縮(erosion)を4回おこなってから(ステップS917)、モルフォロジー膨張(dilation)をおこなう(ステップS918)。
【0159】
この例においては、フレーム間の移動量VFに基づいてオクルージョンの影響を受けやすいと判別されたフレームに対して、通常のモルフォロジー演算よりも、2倍量のモルフォロジー収縮をおこなっている。このようにしてモルフォロジー収縮(erosion)の処理量(回数)を増やすことにより、細かい差異を取り除く傾向を強めることができ、オクルージョンの影響で背景部分が被写体(動体)と誤認識された場合でも、その領域を除去することができる。
【0160】
このように、フレーム間の移動量VFに応じてモルフォロジー演算をおこなうと、被写体検出部214は、平滑化された被写体領域を最終的な被写体画像として抽出する(ステップS919)。この場合、例えば、差分fd'(x,y)≧変動閾値moveとなる座標を「1」、差分fd'(x,y)<変動閾値moveとなる座標を「0」とするデータを生成し、生成した0と1のデータに対し、例えば、連続している領域には同じ番号を振り、離れている領域には別の番号を振るラベリングをおこなう。そして、ラベリングした領域のうちで最大となる領域のみとなる座標についての画素値を、当該フレームn'で被写体部分を示す画素値とする。
【0161】
上記「画像平滑化処理(1)」においては、上述した「位置合わせ処理」(図6)で用いられた第1の閾値th1との比較に基づいて、モルフォロジー演算の処理量を異ならせたが、処理量を決定する基準はフレーム間の移動量にあるため、比較する閾値は第1の閾値th1に限られるものではない。すなわち、より多くの閾値を設定し、これらとフレーム間移動量VFを比較することで、より細かく処理量を異ならせるようにしてもよい。いずれの場合であっても、フレーム間の移動量が大きいほど、モルフォロジー演算の処理量を多くすることで、オクルージョンの影響で発生しやすい不要部分を効果的に除去することができる。
【0162】
「画像平滑化処理(1)」により不要部分が除去された被写体画像がフレームn'から抽出されると、「被写体画像抽出処理」(図18)のフローに戻る。ここでは、ポインタn'を+1して次の有効フレームを指定し(ステップS714)、n'番目の有効フレームが画像メモリ230に存在するフレームであれば(ステップS715:No)、ステップS712以降の処理をおこなうことで、各有効フレームから被写体画像を抽出する。
【0163】
このような処理により、画像メモリ230に展開されているすべての有効フレームから被写体画像を抽出すると、被写体検出部214は、その旨をストロボ画像生成部217に通知する。
【0164】
そして、ストロボ画像生成部217は、「ストロボ画像生成処理」(図3)のフローにおいて、「背景画像生成処理」(ステップS600)で生成された背景画像と、「被写体画像抽出処理」(ステップS700)で抽出された各有効フレームにおける被写体画像とを合成することで、図22に示すようなストロボ画像を生成する「画像合成処理」(ステップS800)を実行する。
【0165】
「画像合成処理」を、図21に示すフローチャートを参照して説明する。この画像合成処理は、被写体画像抽出処理が終了した旨を被写体検出部214がストロボ画像生成部217に通知したことを契機に開始される。
【0166】
処理が開始されると、ストロボ画像生成部217は、対象フレームの初期化(ステップS801)をおこない、「被写体画像抽出処理」(ステップS700)で抽出された各有効フレーム1〜P'のそれぞれから抽出された被写体画像を順次重ね合わせることによりストロボ画像の被写体領域を合成する(ステップS802〜S804)。
【0167】
すべてのストロボ画像の被写体領域を合成すると(ステップS802:Yes)、ストロボ画像生成部217は、「背景画像生成処理」(ステップS600)で生成された背景画像を重ね合わせることによりストロボ画像の背景領域を合成する(S805)。なお、各有効フレーム1〜P'のいずれかの画像を重ね合わせることによりストロボ画像の背景領域を合成してもよい。
【0168】
このような処理により、ストロボ画像が生成されると、ストロボ画像生成部217は、生成したストロボ画像を画像メモリ230に格納するとともに、ストロボ画像を生成した旨を被写体検出部214に通知して処理を終了する。
【0169】
この場合、ストロボ画像生成処理(図3)のフローに戻り、生成したストロボ画像は、画像出力部240を通じて表示部310に表示される他、デジタルカメラ1のユーザが操作部330を操作することによる指示入力に応じて、記憶部250や外部記憶部260に保存されて(ステップS107)、処理を終了する。
【0170】
なお、カメラの向きを縦位置とした場合は、撮像画像を−90°もしくは90°回転させたときの座標系で上述した処理をおこなえば、同様にストロボ画像を生成することができる。
【0171】
(実施形態2)
被写体画像から不要部分を除去するためにおこなう「画像平滑化処理」(図18、ステップS900)の他の動作例を説明する。上記実施形態1における「画像平滑化処理(1)」では、フレーム間の移動量VFと閾値との比較により、モルフォロジー収縮の実行回数を2回もしくは4回に切り替える2値マスク処理としたが、モルフォロジー収縮の実行回数を、移動量VFに応じてより細かく制御することもできる。この場合に実行される「画像平滑化処理(2)」を、図23に示すフローチャートを参照して説明する。
【0172】
処理が開始されると、実施形態1における「画像平滑化処理(1)」と同様に、被写体検出部214が、制御部210の主記憶装置(メモリ)に展開されている「フレーム情報テーブル」(図7)にアクセスし、被写体画像の抽出対象フレームであるフレームn'と基準フレームNとの間の移動量VFの情報を参照する(ステップS921)
【0173】
移動量VFを参照すると、被写体検出部214は、当該移動量VFに基づいて、モルフォロジー収縮(erosion)の実行回数を決定するための演算をおこなう(ステップS922)。ここでは、移動量VFに係数k(例えば、1以上の正の整数)を乗じることで、モルフォロジー収縮(erosion)の実行回数Lを算出する(L=VF×k)。
【0174】
モルフォロジー収縮(erosion)の実行回数Lを算出すると、被写体検出部214は、モルフォロジー膨張(dilation)を1回おこなう(ステップS923)。
【0175】
モルフォロジー膨張(dilation)を1回おこなうと、被写体検出部214は、モルフォロジー収縮(erosion)を、ステップS922で算出した実行回数であるL回実行する(ステップS924)。
【0176】
モルフォロジー収縮(erosion)をL回実行すると、被写体検出部214は、モルフォロジー膨張(dilation)を1回実行して(ステップS925)、画像平滑化にかかるモルフォロジー演算を終了する。
【0177】
モルフォロジー演算を終了すると、被写体検出部214は、平滑化された被写体領域を最終的な被写体画像として抽出して(ステップS926)、処理を終了する(「被写体画像抽出処理」(図18)のフローに戻る)。
【0178】
この「画像平滑化処理(2)」では、移動量VFに係数を乗じることで、モルフォロジー収縮(erosion)の実行回数を算出しているので、フレーム間の移動量に比例して、モルフォロジー演算(モルフォロジー収縮)の処理量を多くすることができ、オクルージョンの影響で発生しやすい不要部分をより効果的に除去することができる。
【0179】
なお、「画像平滑化処理(1)」(実施形態1)および「画像平滑化処理(2)」(本実施形態)では、モルフォロジー演算の例として、「モルフォロジー膨張(dilation)→モルフォロジー収縮(erosion)→モルフォロジー膨張(dilation)」の順で演算をおこなう場合を示したが、「モルフォロジー収縮(erosion)→モルフォロジー膨張(dilation)→モルフォロジー収縮(erosion)」の順でおこなう演算を加えてもよい。
【0180】
すなわち、モルフォロジー演算の内容を定義するオペレータとして「Opening」(実行順序が「膨張→収縮→膨張」)や「Closing」(実行順序が「収縮→膨張→収縮」)のいずれが設定された場合であっても、移動量VFに応じて処理量(実行回数)を異ならせることで、オクルージョンの影響による不要部分の効果的な除去を図ることができる。
【0181】
この場合において、モルフォロジー収縮(erosion)についての処理量(実行回数)を、どの時点のモルフォロジー収縮(erosion)に適用するかは任意である。例えば、すべてのモルフォロジー収縮(erosion)の実行回数をモルフォロジー膨張(dilation)より多くする処理としてもよい他、「Opening」でおこなうモルフォロジー収縮(erosion)のみモルフォロジー膨張(dilation)より多く実行する処理などとしてもよい。
【0182】
また、本実施形態では、細かい差異を取り除く傾向を強めるためにモルフォロジー収縮(erosion)の処理量(実行回数)を増やすものとしたが、モルフォロジー膨張(dilation)の処理量(実行回数)を増やすことで不要部分の効果的な除去を図ってもよい。すなわち、フレーム間の移動量に基づいて処理量を異ならせる対象は、モルフォロジー収縮(erosion)であっても、モルフォロジー膨張(dilation)であってもよい。
【0183】
(実施形態3)
上記各実施形態における「画像平滑化処理」では、移動量VFに応じて、モルフォロジー演算の実行回数を異ならせる場合を例示したが、異ならせる処理量は回数に限られるものではない。ここでは、フレーム間の移動量に応じて、モルフォロジー演算による効果(すなわち、収縮や膨張の量)を異ならせることでも、オクルージョンの影響による不要部分の効果的な除去を図ることができる。
【0184】
つまり、モルフォロジー演算においては、単純な形状の「構成成分(構造成分)」(Structuring Element)で対象画像を削ったり、対象画像に肉付けしたりすることで、収縮(erosion)や膨張(dilation)をおこなっているので、この構成成分のサイズを変えることで、収縮や膨張の量を異ならせることができる。
【0185】
本実施形態では、このような方法によって不要部分を除去する例を説明する。この場合に実行される「画像平滑化処理(3)」を、図24に示すフローチャートを参照して説明する。
【0186】
処理が開始されると、実施形態1における「画像平滑化処理(1)」と同様に、被写体検出部214が、制御部210の主記憶装置(メモリ)に展開されている「フレーム情報テーブル」(図7)にアクセスし、被写体画像の抽出対象フレームであるフレームn'と基準フレームNとの間の移動量VFの情報を参照する(ステップS931)
【0187】
本実施形態では、上記各実施形態と同様に、フレーム間の移動量VFに応じてモルフォロジー演算の処理量を異ならせることで、不要部分の効果的な除去を図る。この場合において、本実施形態では、モルフォロジー演算の効果、すなわち、膨張や収縮の量を異ならせることで、画像平滑化にかかる処理量を異ならせるものとする。
【0188】
ここで、本処理においては、上記各実施形態の場合と同様に、「モルフォロジー膨張(dilation)→モルフォロジー収縮(erosion)→モルフォロジー膨張(dilation)」の順で演算をおこなうものとする。そして、細かい差異を取り除く傾向を強めるため、処理量を異ならせる対象をモルフォロジー収縮(erosion)とする。すなわち、1回のモルフォロジー収縮(erosion)による画像収縮の量を大きくさせる。
【0189】
このような処理をおこなうため、本実施形態では、モルフォロジー膨張(dilation)に用いる構成成分(以下、「構成成分SEd」とする)のサイズと、モルフォロジー収縮(erosion)に用いる構成成分(以下、「構成成分SEe」とする)のサイズを異ならせる。
【0190】
ここで、モルフォロジー膨張(dilation)は通常の処理量とするので、構成成分SEdのサイズは、当該構成成分についてのデフォルトサイズ(以下、「サイズDS」とする)を適用する。この場合、被写体検出部214は、モルフォロジー膨張(dilation)の演算内容を定義するオペレータに、構成成分SEdのサイズとしてサイズDSを設定する(ステップS932)。
【0191】
一方、モルフォロジー収縮(erosion)の処理量は、移動量VFに応じて異ならせるため、被写体検出部214は、構成成分SEeのサイズを、ステップS931で参照した移動量VFに基づいて算出する(ステップS933)。ここでは、構成成分のデフォルトサイズであるサイズDSに移動量VFを乗じることで、拡張した構成成分のサイズ(以下、「拡張サイズLS」または「サイズLS」とする)を算出する(LS=VF×DS)。
【0192】
被写体検出部214は、モルフォロジー収縮(erosion)の演算内容を定義するオペレータに、構成成分SEeのサイズとしてサイズLSを設定する(ステップS934)。ここで、サイズLSは、例えば、正の数で示されるものとし、設定される数値が大きいほど構成成分のサイズが大きくなるものとする。すなわち、フレーム間の移動量VFが大きいほど、所定のモルフォロジー演算に用いる構成成分のサイズが大きくなる。
【0193】
各演算についてのオペレータに構成成分のサイズを設定すると、被写体検出部214は、当該オペレータに基づいて、「モルフォロジー膨張(dilation)→モルフォロジー収縮(erosion)→モルフォロジー膨張(dilation)」の順で演算をおこなう(ステップS935、ステップS936、ステップS937)。
【0194】
この場合において、モルフォロジー収縮(erosion)で使用される構成成分SEeのサイズは、モルフォロジー膨張(dilation)で使用される構成成分SEdに設定されているサイズDSを、移動量VFに応じて拡張させたサイズLSであるため、モルフォロジー膨張(dilation)実行時の膨張量よりも大きい度合で画像収縮がおこなわれることになる。
【0195】
このようなモルフォロジー演算を終了すると、被写体検出部214は、平滑化された被写体領域を最終的な被写体画像として抽出して(ステップS938)、処理を終了する(「被写体画像抽出処理」(図18)のフローに戻る)。
【0196】
この「画像平滑化処理(3)」では、モルフォロジー演算に用いる構成成分のデフォルトサイズ(サイズDS)に移動量VFを乗じることで、拡張サイズLSを算出しているので、フレーム間の移動量に比例して、モルフォロジー演算の処理量(膨張や収縮の量)を多くすることができ、オクルージョンの影響で発生しやすい不要部分をより効果的に除去することができる。
【0197】
なお、本実施形態では、モルフォロジー演算の例として、「モルフォロジー膨張(dilation)→モルフォロジー収縮(erosion)→モルフォロジー膨張(dilation)」の順で演算をおこなう場合を示したが、「モルフォロジー収縮(erosion)→モルフォロジー膨張(dilation)→モルフォロジー収縮(erosion)」の順でおこなう演算を加えてもよい。
【0198】
すなわち、オペレータに「Opening」(実行順序が「膨張→収縮→膨張」)や「Closing」(実行順序が「収縮→膨張→収縮」)のいずれが設定された場合であっても、移動量VFに応じて処理量(構成成分のサイズ)を異ならせることで、オクルージョンの影響による不要部分の効果的な除去を図ることができる。
【0199】
この場合において、モルフォロジー収縮(erosion)についての処理量(構成成分のサイズ変更)を、どの時点のモルフォロジー収縮(erosion)に適用するかは任意である。例えば、すべてのモルフォロジー収縮(erosion)に用いる構成成分のサイズをモルフォロジー膨張(dilation)より大きくする処理としてもよい他、「Opening」でおこなうモルフォロジー収縮(erosion)のみモルフォロジー膨張(dilation)より大きいサイズの構成成分を用いる処理などとしてもよい。
【0200】
なお、本実施形態では、細かい差異を取り除く傾向を強めるためにモルフォロジー収縮(erosion)の処理量を増やす(構成成分のサイズを拡張する)ものとしたが、モルフォロジー膨張(dilation)の処理量を増やす(構成成分のサイズを拡張する)ことで不要部分の効果的な除去を図ってもよい。すなわち、フレーム間の移動量に基づいて処理量を異ならせる対象は、モルフォロジー収縮(erosion)であっても、モルフォロジー膨張(dilation)であってもよい。
【0201】
以上説明したように、本発明を上記実施形態の如く適用することにより、ストロボ画像を生成する際の平滑化処理において、オクルージョンの影響で背景位相が変動してしまうことの影響を少なくし、背景部分が重複してしまうことを防止できる。
【0202】
つまり、ストロボ画像の合成に用いる画像を連写撮像によって生成した際に、背景の奥行きが大きいシーンである場合、撮像時のカメラの微動によって生じるフレーム画像間の移動量が大きいと、オクルージョンの影響で背景部分の差異が大きくなり、移動している被写体として誤認識されることがあるため、フレーム間の移動量が大きいときには、例えば、モルフォロジー演算による平滑化処理の処理量を増やすことで、移動被写体として誤認識された領域を除去することができる。
【0203】
また、フレーム間の移動量が大きくない場合には、平滑化処理の処理量を増やさないことで、全体的な処理負荷を低減するとともに、移動する被写体の領域が小さい場合であっても、当該領域を消去してしまうことなくストロボ画像を生成することができる。
【0204】
すなわち、移動量が大きいほど平滑化にかかる処理量を多くすることで、良好なストロボ画像を効果的に生成することができるが、このような平滑化処理にかかる処理量の切替を、検出された移動量と閾値との比較によっておこなうことで、効率的に処理することができる。
【0205】
あるいは、移動量に係数を乗じることで平滑化にかかる処理の実行回数を異ならせたり、構成成分のデフォルトサイズに移動量を乗じることで平滑化にかかる処理の処理量を異ならせたりすることで、良好なストロボ画像の生成をより効果的におこなうことができる。
【0206】
また、撮像画像における背景部分がほぼ一定となるよう位置合わせをおこなうが、フレーム間の移動量が位置合わせできないほど大きい場合には、当該フレームをストロボ画像の合成対象から除外するので、オクルージョンの影響によって背景が重複したストロボ画像が生成されてしまうことを防止することができる。
【0207】
また、手ブレ補正機能などを備えた撮像装置であれば、手ブレ補正に用いるセンサの検出値からフレーム間の移動量を求めることができるので、フレーム間の移動量を演算する処理が軽減され、より高速にストロボ画像を生成することができる。
【0208】
上記実施形態は一例であり、本発明の適用範囲はこれに限られない。すなわち、種々の応用が可能であり、あらゆる実施の形態が本発明の範囲に含まれる。
【0209】
例えば、上記実施形態では、ストロボ画像における被写体や背景を検出するために、撮像画像を1次元データに変換して処理をおこなったが、被写体や背景を検出する方法は任意であり、上述した例に限られるものではない。
【0210】
また、上記実施形態では、有効フレームとする基準として、被写体が重ならないことを条件としたが、有効フレームとすることの基準となる条件は任意であり、上述した例に限られるものではない。
【0211】
また、上記実施形態では、画像平滑化処理をおこなう際に、基準フレームと、後続する各フレームとの間の移動量を検出するものとしたが、移動量を求めるフレームをどのフレームとするかは任意であり、例えば、隣接するフレーム同士の移動量を求めるようにしてもよい。
【0212】
さらに、移動量を求める方法も任意であり、オクルージョンの影響を受けやすいか否かを判別できる数値が得られることができればよい。
【0213】
また、上記実施形態3では、構成成分のサイズを異ならせることで、平滑化にかかる処理の処理量を異ならせるようにしたが、平滑化の効果などに違いが生じるのであれば、サイズ以外の要素を異ならせるようにしてもよい。例えば、構成成分の形状の違いが平滑化の効果に影響するのであれば、フレーム間の移動量に基づいて、適用する構成成分の形状を異ならせるようにしてもよい。
【0214】
なお、本発明を上記実施形態で例示したデジタルカメラ1のような撮像装置で実現する場合においては、本発明にかかる構成や機能を予め備えた撮像装置として提供できる他、制御部210の各機能と同様の機能を実現するプログラムを適用することにより、既存の撮像装置を本発明にかかる撮像装置をして機能させることもできる。
【0215】
なお、上記実施形態では、撮像装置の例としてデジタルスチルカメラを示したが、撮像装置の形態は任意であり、単体のデジタルスチルカメラで実現可能であることはもとより、これと同様の撮像機能を備えた種々の電子機器(例えば、携帯電話など)に本発明を適用してもよい。
【0216】
上記実施形態では、スチルカメラによる連写機能で得られた画像からストロボ画像を生成する例を示したが、被写体が連続的に変化しているフレーム画像が得られればよいので、動画データからもストロボ画像を生成することができる。よって、本発明をビデオカメラや、動画撮像機能を有する種々の撮像装置に適用することでも高速にストロボ画像を生成することができる。
【0217】
さらに、移動する被写体が撮像された連続する複数の画像を取得できるのであれば、撮像装置に限らず、画像処理をおこなうことのできる種々の装置(例えば、パーソナルコンピュータ)などにおいて、上述した各処理と同様の処理を実行することにより、オクルージョンの影響が緩和されたストロボ画像を生成することができる。
【0218】
これらの場合においても、プログラムを適用することで、既存の装置を本発明にかかる撮像装置として機能させることができる。
【0219】
このようなプログラムの適用方法は任意であり、例えば、CD−ROMやメモリカードなどの記憶媒体に格納して適用できる他、例えば、インターネットなどの通信媒体を介して適用することもできる。
【0220】
また、画像処理をおこなえる装置であれば、上記プログラムを適用することで、高速なストロボ画像生成を実現することができる。すなわち、撮像装置に限られず、例えば、パーソナルコンピュータなどに上記プログラムを適用することで、予め撮像された画像から高速にストロボ画像を生成することができる。
【符号の説明】
【0221】
1…デジタルカメラ、100…撮像部、110…光学装置、120…イメージセンサ部、200…データ処理部、210…制御部、211…動作モード処理部、212…撮像制御部、213…撮像画像処理部、214…被写体検出部、215…画像選択部、216…背景画像生成部、217…ストロボ画像生成部、220…画像処理部、230…画像メモリ、240…画像出力部、250…記憶部、260…外部記憶部、300…インタフェース部、310…表示部、320…外部インタフェース部、330…操作部、400…センサ部

【特許請求の範囲】
【請求項1】
撮像により連続する複数の撮像画像を生成する撮像手段と、
前記撮像手段が生成した各撮像画像から、移動する被写体部分を示す複数の画像を抽出する被写体抽出手段と、
前記撮像手段が生成した複数の撮像画像から、背景画像を生成する背景画像生成手段と、
前記背景画像生成手段が生成した背景画像と、前記被写体抽出手段が抽出した複数の被写体部分を示す画像とを合成してストロボ画像を生成するストロボ画像生成手段と、
を備える撮像装置において、
前記複数の撮像画像における所定の画像間の移動量を検出する移動量検出手段と、
前記移動量検出手段が検出した移動量に応じた処理量で、前記画像に対する平滑化処理をおこなう画像平滑化手段と、をさらに備える、
ことを特徴とする撮像装置。
【請求項2】
前記画像平滑化手段は、
前記移動量検出手段が検出する移動量が大きいほど、前記平滑化処理にかかる処理量を多くする、
ことを特徴とする請求項1に記載の撮像装置。
【請求項3】
前記画像平滑化手段は、
前記移動量検出手段が検出した移動量と閾値との比較に基づいて、前記平滑化処理にかかる処理量を異ならせる、
ことを特徴とする請求項1または2に記載の撮像装置。
【請求項4】
前記画像平滑化手段は、
前記移動量検出手段が検出した移動量に係数を乗じた数値に基づいて、前記平滑化処理にかかる処理量を異ならせる、
ことを特徴とする請求項1または2に記載の撮像装置。
【請求項5】
前記画像平滑化手段による前記平滑化処理にかかる処理量は、該平滑化処理の実行回数である、
ことを特徴とする請求項3または4に記載の撮像装置。
【請求項6】
前記画像平滑化手段は、モルフォロジー演算により前記平滑化処理をおこない、
前記移動量検出手段が検出した移動量に基づいて、前記モルフォロジー演算で用いる構成成分を異ならせることで、前記平滑化処理にかかる処理量を異ならせる、
ことを特徴とする請求項1乃至5のいずれか1項に記載の撮像装置。
【請求項7】
前記画像平滑化手段は、前記移動量に基づいて、前記構成成分のサイズを異ならせる、
ことを特徴とする請求項6に記載の撮像装置。
【請求項8】
前記移動量検出手段は、前記撮像画像の位置合わせをおこなう際に前記移動量を求め、
前記移動量検出手段が検出した前記移動量が所定の閾値以上となる場合、当該移動量が検出された画像を前記ストロボ画像生成手段による合成対象から除外する画像選択手段をさらに備える、
ことを特徴とする請求項1乃至7のいずれか1項に記載の撮像装置。
【請求項9】
前記撮像装置に生じた動きを検出するセンサ手段をさらに備え、
前記移動量検出手段は、前記センサ手段の検出結果に基づいて、フレーム間の移動量を検出する、
ことを特徴とする請求項1乃至8のいずれか1項に記載の撮像装置。
【請求項10】
画像処理をおこなう装置において、移動する被写体が撮像された連続する複数の画像からストロボ画像を生成するストロボ画像生成方法であって、
前記装置が、
前記複数の画像から、移動する被写体部分を示す複数の画像を抽出する被写体抽出ステップと、
前記複数の画像から、背景画像を生成する背景画像生成ステップと、
前記複数の画像における所定の画像間の移動量を検出する移動量検出ステップと、
前記移動量検出ステップで検出された移動量に応じた処理量で、前記被写体抽出ステップで抽出された画像に対する平滑化処理をおこなう画像平滑化ステップと、
前記背景画像生成ステップで生成された背景画像と、前記被写体抽出ステップで抽出された複数の被写体部分を示す画像とを合成してストロボ画像を生成するストロボ画像生成ステップと、
を実行することを特徴とするストロボ画像生成方法。
【請求項11】
コンピュータに、
移動する被写体が撮像された連続する複数の画像を取得する機能と、
前記取得した複数の画像から、移動する被写体部分を示す複数の画像を抽出する機能と、
前記複数の画像から、背景画像を生成する機能と、
前記複数の画像における所定の画像間の移動量を検出する機能と、
前記検出された移動量に応じた処理量で、前記抽出された画像に対する平滑化処理をおこなう機能と、
前記生成された背景画像と、前記抽出された複数の被写体部分を示す画像とを合成してストロボ画像を生成する機能と、
を実現させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2010−166545(P2010−166545A)
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願番号】特願2009−143736(P2009−143736)
【出願日】平成21年6月16日(2009.6.16)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】