本発明にかかる実施形態を、図面を参照して以下に説明する。本実施形態では、本発明をデジタルスチルカメラ(以下、デジタルカメラ)によって実現した場合を例示する。本実施形態にかかるデジタルカメラ1は、一般的なデジタルスチルカメラが備える機能の他に、いわゆる連写機能を備えているものとする。また、撮像した複数の画像を合成してパノラマ画像を生成する機能を備えているものとする。
図1は、本発明の実施形態にかかるデジタルカメラ1の構成を示すブロック図である。本実施形態にかかるデジタルカメラ1の概略的構成は、図示するように、撮像部100、データ処理部200、インタフェース(I/F)部300、などである。
撮像部100は、デジタルカメラ1の撮像動作をおこなう部分であり、図示するように、光学装置110やイメージセンサ部120などから構成されている。
光学装置110は、例えば、レンズ、絞り機構、シャッタ機構、などを含み、撮像にかかる光学的動作をおこなう。すなわち、光学装置110の動作により、入射光が集光されるとともに、焦点距離、絞り、シャッタスピードなどといった、画角やピント、露出などにかかる光学的要素の調整がなされる。なお、光学装置110に含まれるシャッタ機構はいわゆる機械式のシャッタ装置であり、イメージセンサによってシャッタ動作をおこなう場合には、光学装置110にシャッタ機構が含まれていなくてもよい。
イメージセンサ部120は、光学装置110によって集光された入射光に応じた電気信号を生成する、例えば、CCD(Charge Coupled Device:電荷結合素子)やCMOS(Complementally Metal Oxide Semiconductor:相補型金属酸化物半導体)などのイメージセンサから構成される。イメージセンサ部120は、光電変換をおこなうことで、受光に応じた電気信号を発生してデータ処理部200に出力する。なお、デジタルカメラ1のビューファインダとして、液晶画面やEVF(Electronic View Finder)などが用いられる場合、イメージセンサ部120が低解像度の画像信号を常時出力することで、いわゆるライブビュー画像がファインダ画面に表示されるものとする。
データ処理部200は、撮像部100による撮像動作によって生成された電気信号を処理し、撮像画像を示すデジタルデータを生成するとともに、撮像画像に対する画像処理などをおこなう。図1に示すように、データ処理部200は、制御部210、画像処理部220、画像メモリ230、画像出力部240、記憶部250、外部記憶部260、などから構成される。
制御部210は、例えば、CPU(Central Processing Unit:中央演算処理装置)やRAM(Random Access Memory)などから構成され、後述する記憶部250などに格納されているプログラムを実行することで、デジタルカメラ1の各部を制御する。また、本実施形態では、所定のプログラムを実行することで、後述する各処理にかかる機能が制御部210によって実現される。
画像処理部220は、例えば、ADC(Analog-Digital Converter:アナログ−デジタル変換器)、バッファメモリ、画像処理用のプロセッサ(いわゆる、画像処理エンジン)などから構成され、撮像部100によって生成された電気信号に基づいて、撮像画像を示すデジタルデータを生成する。
すなわち、イメージセンサ部120から出力されたアナログ電気信号をADCがデジタル信号に変換して順次バッファメモリに格納すると、画像処理エンジンがバッファされたデジタルデータに対し、いわゆる現像処理などをおこなうことで、画質の調整やデータ圧縮などをおこなう。なお、画像処理部220のバッファメモリは、デジタルカメラ1のもつ連写機能を実現するに十分な記憶容量を有しているものとする。本実施形態では、例えば、秒間数コマ程度以上の連写をおこなうのに十分なバッファメモリであるものとする。
画像メモリ230は、例えば、RAMやフラッシュメモリなどの記憶装置から構成され、画像処理部220によって生成された撮像画像データや、制御部210によって処理される画像データなどを一時的に格納する。
画像出力部240は、例えば、RGB信号の生成回路などから構成され、画像メモリ230に格納された画像データを表示画面などに出力する。
記憶部250は、例えば、ROM(Read Only Memory)やフラッシュメモリなどの記憶装置から構成され、デジタルカメラ1の動作に必要なプログラムやデータなどを格納する。本実施形態では、制御部210などが実行する動作プログラムなどが記憶部250に格納されているものとする。
外部記憶部260は、例えば、メモリカードなどといった、デジタルカメラ1に着脱可能な記憶装置から構成され、デジタルカメラ1で撮像した画像データなどを格納する。
インタフェース部300は、デジタルカメラ1とその使用者あるいは外部装置とのインタフェースにかかる構成であり、図1に示すように、表示部310、外部インタフェース(I/F)部320、操作部330、などから構成される。
表示部310は、例えば、液晶表示装置などから構成され、デジタルカメラ1を操作するために必要な種々の画面や、撮影時のライブビュー画像、撮像画像、などを表示出力する。本実施形態では、画像出力部240からの画像信号(RGB信号)などに基づいて撮像画像等の表示出力がおこなわれる。
外部インタフェース部320は、例えば、USB(Universal Serial Bus)コネクタやビデオ出力端子などから構成され、外部のコンピュータ装置への画像データの出力や、外部のモニタ装置への撮像画像の表示出力などをおこなう。
操作部330は、デジタルカメラ1の外面上に構成されている各種ボタンなどによって構成され、デジタルカメラ1の使用者による操作に応じた入力信号を生成して制御部210に入力する。操作部330を構成するボタンとして、例えば、シャッタ動作を指示するためのシャッタボタンや、デジタルカメラ1のもつ動作モードを指定するためのモードボタン、各種設定をおこなうための十字キーや機能ボタン、などが含まれているものとする。
ここで、データ処理部200の画像メモリ230についての詳細を、図2を参照して説明する。本実施形態にかかる画像メモリ230は、図2に示すような記憶領域を有している。図示するように、画像メモリ230には、撮像画像記憶領域230a、処理画像記憶領域230b、合成画像記憶領域230c、などの記憶領域が用意され、各記憶領域に応じた画像データが格納される。
撮像画像記憶領域230aは、画像処理部220によって生成された撮像画像毎の画像データを一時的に格納するための記憶領域である。
処理画像記憶領域230bは、撮像画像記憶領域230aに格納された撮像画像を用いて処理(詳細後述)をおこなう場合に、対象となる画像データを一時的に格納するための記憶領域である。
合成画像記憶領域230cは、後述する処理によって合成された画像(パノラマ画像)を一時的に格納するための記憶領域である。
また、上述したように、記憶部250に格納されている動作プログラムを制御部210が実行することで、本発明にかかる処理が実現されるが、この場合に制御部210によって実現される機能を、図3を参照して説明する。
図3は、本発明の実施形態にかかる機能を実行する際に制御部210によって実現される機能を示した機能ブロック図である。なお、図3に示す機能は、デジタルカメラ1の連写機能によって撮像された複数の画像を用いてパノラマ画像を生成する際に必要となる機能を示すものである。
ここで、本実施形態では、移動する被写体(以下、「移動被写体」とする)を連写によって撮影して得られる撮像画像を用いて、同一の移動被写体が複数含まれているパノラマ画像(以下、「連写パノラマ画像」とする)を生成するものする。このような連写パノラマ画像を生成するための撮影モード(以下、「連写パノラマモード」とする)がデジタルカメラ1に用意されているものとする。
すなわち、このような連写パノラマモードで撮像をおこなう際、制御部210によって図3に示すような機能が実現される。図示するように、制御部210は、インタフェース処理部211、撮像制御部212、画像位置検出部213、被写体特定部214、合成対象判別部215、画像合成部216、出力処理部217、などとして機能する。
インタフェース処理部211は、操作部330からの入力信号を受け付けるとともに、デジタルカメラ1の使用者に示す各種画面を生成して表示部310に出力する。
撮像制御部212は、インタフェース処理部211を介した操作部330からの入力に応じて撮像部100を制御することで撮像動作を実行させる。本実施形態では、連写パノラマモードでの撮像に必要な連写動作を撮像部100におこなわせる。ここで、本実施形態にかかるデジタルカメラ1で連写をおこなう場合、シャッタボタンが押下され続けている間、連続的に撮像動作がおこなわれるものとする。よって、撮像制御部212は、操作部330からの入力信号に基づき、シャッタボタンが押下されつづけている期間、撮像部100に連続的な撮像動作をおこなわせる。
このような動作によっておこなわれる連写パノラマモードでの連写について、図4を参照して説明する。本実施形態にかかる連写パノラマモードでは、上述したように移動被写体を連写する。この移動被写体の例を、図4(a)および図4(b)に示す。ここでは、例えば、歩行する人物などといった移動被写体MVを連写によって撮像する場合を示す。この場合、一定の方向に移動する移動被写体MVを連写によって撮像するものとする。本実施形態では、移動被写体MVが、図4(a)に示す位置から矢印で示す方向に移動し、図4(b)に示す位置まで移動する場面、すなわち、水平方向(右から左)に移動する場面を、連写によって撮像することを想定する。
ここで、図4(a)および図4(b)に示すように、移動被写体MVの背景として、静止被写体ST(ST1〜ST6)があるものとし、これら静止被写体より手前の位置で、移動被写体MVが水平方向に移動する場面を連写によって撮像する。この場合、図4(c)に示すように、デジタルカメラ1で移動被写体MVを追いながら連写する。すなわち、移動被写体MVが図4(a)に示す位置のところでシャッタボタンの押下を開始し、移動被写体MVの移動に合わせてデジタルカメラ1をパンニングしながらシャッタボタンを押下し続け、移動被写体MVが図4(b)に示す位置まで移動したところでシャッタボタンの押下を終了する。
このような連写によって得られる撮像画像の例を図5に示す。ここでは、連写開始から4枚目までの撮像画像の例を示す。本実施形態では、連写開始時の最初の画像(フレーム)をf(0)とし、以降、撮像された時系列順にf(1)、f(2)、…、f(n)というフレーム番号が割り当てられるものとする。連写終了時の撮像画像のフレーム番号をmaxとすると、連写パノラマモードでの1回の連写動作によってf(0)〜f(max)の一連の撮像画像(以下、「連写画像」とする)が得られることになる。
上述したように、連写パノラマモードでの撮像では、移動被写体MVを追いながら連写しているので、図5に示すように、連写画像のいずれにも移動被写体MVが含まれているものとする。さらに、連続する画像のそれぞれには、パノラマ画像を生成する際の特徴点となる共通の静止被写体STが写り込むよう撮像されるものとする。図5の例では、画像f(0)と画像f(1)には静止被写体ST1とST2が、画像f(1)と画像f(2)には静止被写体ST1とST2が、画像f(2)と画像f(3)には静止被写体ST2が、いずれも共通の被写体(特徴点)として含まれている。
本実施形態では、このような連写画像から、図6に示すような連写パノラマ画像PNを生成する。ここでのパノラマ画像とは、連写画像を横方向に合成することで、通常の撮像画像よりも横方向に長い画像としたものである。例えば、デジタルカメラ1によって撮像される画像1枚の画像サイズを図5に示すようなPx×Py(Px>Py)とした場合、パノラマ画像の横方向のサイズは、Px×m(m>1)となる。
ここで、図6は、図4(a)〜図4(c)で例示した場面の連写撮像から生成される連写パノラマ画像PNの例を示すものであり、図示するように、1枚の連写パノラマ画像PNの中に、静止被写体ST(ST1〜ST6)のすべてが写り込んでいるとともに、移動被写体MVが複数箇所において写り込んでいるものである。本実施形態では、後述する処理をおこなうことで、図6に示すような、移動被写体MVが重ならずに表された連写パノラマ画像PNを生成する。
すなわち、図3に示す画像位置検出部213、被写体特定部214、合成対象判別部215、画像合成部216、出力処理部217は、連写によって撮像した画像から、図6に示すような連写パノラマ画像PNを生成するための処理をおこなう機能である。以下、図3を参照してこれらの機能を説明する。
画像位置検出部213は、連写画像の中から、連続する2つの画像を比較することで、画像間で被写体が動いた分の移動方向と移動量を示す移動ベクトル(動きベクトル)を算出する。この場合、例えば、動画像の圧縮などで採用されているフレーム間差分符号化と同様の処理をおこなうことで、2つの画像間の移動ベクトルを算出する。ここでは、例えば、ブロックマッチング法や木探索法などのマッチング手法を用いて2画像間の特徴点のマッチングをとることで、連続する画像間の移動ベクトルを算出する。
被写体特定部214は、連写画像のそれぞれに現れている移動被写体MVを特定する。ここでは、連続する2つの画像間でのブロックマッチングをおこなうことで、移動被写体MVを特定する。上述したように、連写画像には、移動被写体MVとともに静止被写体STが写り込んでいるので、連続する2つの画像間において、同一の静止被写体STが存在している場合、そのような静止被写体STを特徴点として2つの画像の位置合わせをおこなってブロックマッチングをおこなうと、静止被写体STの部分ではマッチングするが、移動被写体MVの部分についてはマッチングしないことになる。このようなマッチングしない領域(マッチングエラー領域)に基づいて、当該画像における移動被写体MVの位置などを特定する。
合成対象判別部215は、連写画像のそれぞれについて、図6に示すような、移動被写体MVが重ならずに表された連写パノラマ画像PNを生成するための合成対象となるか判別する。本実施形態では、連写開始時に得られた最初の撮像画像f(0)(以下、「原点画像f(0)」とする)に、以降の撮像で得られた撮像画像を合成していくことで、連写パノラマ画像PNを生成するものとする。合成対象判別部215は、f(1)以降の撮像画像それぞれについて、移動被写体MVの重なりが生じない画像であるか否かを判別する。
ここでは、画像位置検出部213によって算出された移動ベクトルと、被写体特定部214によって特定された移動被写体MVに基づいて、対象画像に示されている移動被写体MVが、それより前の撮像画像に示されている移動被写体MVと重なるか否かを判別する。この場合、被写体特定部214によって求められる移動被写体MVの位置などに基づいて、合成により移動被写体MVが重ならないために必要な移動量を求め、画像間のズレ量である移動ベクトルが、求めた必要移動量を超える画像であれば、その画像を合成しても移動被写体MVが重ならないことになる。合成対象判別部215は、このような画像を合成対象として判別する。
画像合成部216は、合成対象判別部215によって判別された合成対象画像を、原点画像f(0)から順次横方向に合成する処理をおこなう。この場合、連写撮像前に予め設定された移動方向(移動被写体MVの移動方向=デジタルカメラ1のパンニング方向)に基づき、原点画像f(0)の左右いずれかの方向に合成対象画像を合成する。ここでの画像合成においては、例えば、既知のパノラマ画像生成手法と同様の方法で合成をおこなうものとし、特徴点となる静止被写体STを基準に位置合わせをおこなった上で、上下方向のトリミングをすることで、図6に示すような連写パノラマ画像PNを生成する。
出力処理部217は、画像合成部216によって生成された連写パノラマ画像PNの出力を制御する。ここでは、操作部330からの入力信号に基づき、デジタルカメラ1の使用者が指定した方法で連写パノラマ画像PNを出力する。この場合、例えば、表示部310への表示出力の他、記憶部250や外部記憶部260への記録、外部インタフェース部320を介した外部装置などへの出力をおこなう。
以上が連写パノラマモードでの動作時に制御部210によって実現される機能である。なお、本実施形態では、制御部210がプログラムを実行することによる論理的処理で上述した各機能が実現されるものとするが、これらの機能を、例えば、ASIC(Application Specific Integrated Circuit:特定用途向け集積回路)などのハードウェアによって構成してもよい。この場合、図3に示した機能のうち、画像処理にかかる機能については、画像処理部220によって実現されてもよい。
以上説明したデジタルカメラ1の構成は、本発明を実現するために必要な構成であり、デジタルカメラとしての基本機能や種々の付加機能に用いられる構成は必要に応じて備えられているものとする。
このような構成のデジタルカメラ1による動作を以下に説明する。ここでは、上述した連写パノラマモードで撮像をおこなう際のデジタルカメラ1の動作を説明する。連写パノラマモードが選択された際にデジタルカメラ1で実行される「連写パノラマ撮像処理」を、図7に示すフローチャートを参照して説明する。この連写パノラマ撮像処理は、デジタルカメラ1の使用者が操作部330のモードボタンを操作することで、連写パノラマモードが選択されたことを契機に開始されるものとする。
処理が開始されると、インタフェース処理部211が、連写パノラマ撮像の撮像方向を設定するための設定画面を生成して表示部310に表示する(ステップS101)。ここでは、図4(a)〜図4(c)で示したように、水平方向に移動する移動被写体MVを追いながら連写するので、移動被写体MVの移動方向(すなわち、それを追いながら撮像するデジタルカメラ1のパンニング方向)をデジタルカメラ1の使用者に指定させるための設定画面が表示される。
デジタルカメラ1の使用者は、ステップS101で表示された設定画面に従い、操作部330を操作することで移動方向を入力する。ここでは、例えば、操作部330に含まれる十字キーによって、上下左右の4方向のうちのいずれかを指定する。図4の例では、移動被写体MVが右から左へ移動するので、移動方向として「左」を指定する。このような操作に応じた入力信号が操作部330から制御部210に入力されると、生成する連写パノラマ画像の設定情報として、例えば、処理画像記憶領域230bに格納する(ステップS102)。
以下、ここで指定された移動方向を方向Dとし、方向Dとは反対の方向を方向D’とする。上述のように移動方向として「左」が指定された場合、方向Dは画像に向かって左側方向を示し、方向D’は画像に向かって右側方向を示すことになる。
連写パノラマ撮像の設定をおこなうと、デジタルカメラ1の使用者は、所望する被写体を撮影する。ここでは、図4(a)〜図4(c)に示したように、移動被写体MVを追いながら連写する。すなわち、デジタルカメラ1の使用者は、移動被写体MVが図4(a)に示す位置のときに、光学装置110のレンズを移動被写体MVに向け、操作部330に含まれるシャッタボタンを押下する。この場合、シャッタボタンの押下に応じた入力信号が操作部330から制御部210に入力されるので、撮像制御部212は、シャッタボタンが押下されたと判別する(ステップS103:Yes)。
シャッタボタンの押下開始を判別すると、撮像制御部212は、撮像部100の各部を制御して連写撮像を開始する(ステップS104)。上述したように、本実施形態にかかるデジタルカメラ1の連写機能においては、シャッタボタンが押下されている間、連続して撮像動作をおこなう。よって、デジタルカメラ1の使用者は、移動被写体MVが図4(b)に示す位置に移動するまでシャッタボタンを押下し続ける。この間、操作部330からは、シャッタボタンの押下に応じた入力信号が制御部210に入力され続ける。
撮像制御部212は、シャッタボタン押下の信号入力が継続している間、撮像部100に連続撮像動作を指示する。これにより、複数の撮像画像(連写画像)が得られ、画像処理部220による現像処理などを経て撮像画像記憶領域230aに順次格納される(ステップS105)。このような撮像動作は、シャッタボタンが押下されている間、繰り返しおこなわれる(ステップS106:No)。
所望する連写撮影を終了すると、デジタルカメラ1の使用者は、シャッタボタンの押下を終了する。この場合、シャッタボタンの押下に応じた操作部330から制御部210への信号入力も終了するので、撮像制御部212はシャッタボタンの押下が終了したと判別する(ステップS106:Yes)。この場合、撮像制御部212は、撮像部100を制御し、連写撮像動作を終了させるとともに、連写パノラマモードでの連写撮像が終了したことをインタフェース処理部211に通知する。
撮像制御部212からの通知に応じて、インタフェース処理部211は、今回の連写撮影で得られた撮像画像でパノラマ画像を生成するかデジタルカメラ1の使用者に確認するための確認画面を生成して表示部310に表示する(ステップS107)。ここでは、例えば、パノラマ画像を生成するか問い合わせるメッセージとともに、問い合わせに対する返答となる選択肢などが表示される。デジタルカメラ1の使用者は、操作部330の機能ボタンなどを操作することで、パノラマ画像の生成要否を指示する。
この場合において、インタフェース処理部211は、連写画像を表示部310に順次表示することで、使用者に確認させるようにしてもよい。つまり、図6に示すような連写パノラマ画像PNを生成するためには、上述したように、連写画像のいずれにも移動被写体MVが含まれるとともに、連続する画像のそれぞれに共通の静止被写体STが含まれている必要がある。よって、撮像された連写画像がこのような条件を満たしているか、各画像を表示して使用者に確認させ、パノラマ画像の生成をおこなうか判断させることが望ましい。なお、連写画像の確認において条件に合致しない画像がある場合は、当該画像を随時削除できるようにしてもよい。
また、連写パノラマモードでの連写撮像においては、移動被写体MVを追いつつ、連続する画像間で共通の静止被写体STが写り込むよう撮影する必要があるので、このような撮影が実現できる連写速度であることが望ましい。例えば、秒間1〜2コマ程度といった比較的低速な連写速度であれば、連写パノラマ画像の生成に必要な連写画像を確実に得るための撮影をおこなうことができる。
ここで、パノラマ画像の生成をおこなわない旨の指示が入力された場合(ステップS108:No)、本処理を終了する。この場合、撮像画像記憶領域230aに格納した連写画像の画像データを、例えば、外部記憶部260などに格納することで通常の連写撮像とする。
一方、パノラマ画像の生成をおこなう旨の指示が入力された場合(ステップS108:Yes)、撮像制御部212は、その旨を画像位置検出部213に通知する。画像位置検出部213は、撮像制御部212からの通知に応じて、今回の得られた連写画像(図5)から連写パノラマ画像PN(図6)を生成するための「連写パノラマ画像生成処理」を実行する(ステップS200)。この連写パノラマ画像生成処理を、図8に示すフローチャートを参照して説明する。
処理が開始されると、画像位置検出部213は、連写画像が格納されている撮像画像記憶領域230aにアクセスし、今回の撮像によって格納された連写画像を取得し、処理対象データとして処理画像記憶領域230bにコピーする。ここでは、1回の連写動作によって得られた複数の画像であるf(0)〜f(max)が取得される(ステップS201)。
処理対象となる画像データを取得すると、画像位置検出部213は、処理をおこなうためのカウンタなどの初期化をおこなう。ここでは、処理対象画像を指定するためのフレームカウンタnと、連写パノラマ画像PNの生成にかかる画像合成の状態を示す連結カウンタnowの初期化をおこなう(ステップS202)。
ここでは、双方のカウンタ値を「0」に設定することで初期化をおこなう。フレームカウンタnの初期化により、最初に処理する画像として画像f(0)(原点画像)が指定されるようにする。
また、連結カウンタnowは、処理開始時と、画像合成がおこなわれた後に初期化され「0」が設定されるものである。連結カウンタnowは、その値が0か0以外であるかが参照されるもので、0以外となっているときは、処理対象としている画像に示されている移動被写体MVが、それ以前の撮像画像に示されている移動被写体MVと重なるため、当該処理対象画像が合成対象から除外されている状態を示すものとする。
このようにしてカウンタの初期化をおこなうと、画像位置検出部213は、ステップS201で処理画像記憶領域230bに格納した連写画像f(0)〜f(max)のうち、現在のフレームカウンタ値で指定されるf(n)とf(n+1)の2つの画像を取得し、ブロックマッチングなどの差分検出によって、画像間の移動ベクトルN(n+1)を算出する(ステップS203)。処理開始直後においては、ステップS202でフレームカウンタ値が初期化されているので、図9(a)に示すように、画像f(0)と、その次に撮像された撮像画像f(1)との間の移動ベクトルN(1)を算出する。
ここでは、図9(a)に示すように、2つの画像の双方に存在する共通部分(特徴点)で位置合わせをした際の画像間のズレ量を示すベクトル(移動ベクトルN)を算出する。本実施形態では、移動被写体MVを追いながら連写しているが、上述したように、特徴点となる静止被写体STも写り込んでいるので、2つの画像の双方に写り込んでいる静止被写体ST同士が重なるように位置合わせをおこなう。図9(a)の例では、画像f(0)と画像f(1)の双方に、静止被写体ST1とST2が写り込んでいるので、これらの特徴点が重なるよう画像f(0)と画像f(1)とを位置合わせして移動ベクトルを算出する。
なお、本実施形態では、連写によって複数の撮像画像が取得されているので、本処理の後段においてフレームカウンタnを+1ずつカウントアップすることで、各画像において次の画像との移動ベクトルNを順次算出していく。本実施形態では、このように算出される複数の移動ベクトルNを、移動ベクトルN(n+1)と表すことにする。すなわち、図9(a)に示すように、n=0のときは、画像f(0)とf(1)との移動ベクトルは移動ベクトルN(1)となり、図9(b)に示すように、処理画像のフレーム番号が増加する毎に、移動ベクトルN(2)、移動ベクトルN(3)…、となる。
このようにして、フレームカウンタで指定された撮像画像と、その次に撮像された画像との間で移動ベクトルを算出すると、画像位置検出部213は、現在の連結カウンタnowが示す値が「0」であるか否かを判別する(ステップS204)。ここでは、ステップS202で連結カウンタnowが初期化されているので、カウンタ値は「0」となる(ステップS204:Yes)。
このように、そのときの連結カウンタnowが「0」である場合、画像位置検出部213はその旨を被写体特定部214に通知する。被写体特定部214は、画像位置検出部213からの通知に応じて、移動被写体MVが重ならないために必要な移動量を算出するための「必要移動量算出処理」を実行する(ステップS300)。
この必要移動量算出処理では、現在対象としている2つの画像間のブロックマッチングにより、移動被写体MVの画像上での位置などを求めることで、画像f(n)に以降の画像を合成するときに、移動被写体MVが重ならないために必要な移動被写体MVの横方向(x方向)の移動量(必要移動量Mx)を算出する。このような必要移動量Mxを算出する処理の詳細は後述する。
ステップS300の必要移動量算出処理において必要移動量Mxを算出すると、被写体特定部214は、その旨を合成対象判別部215に通知する。合成対象判別部215は、被写体特定部214からの通知に応じて、連結ベクトルAの更新をおこなう(ステップS205)。
この連結ベクトルAは、ステップS203で算出した画像間の移動ベクトルNを加算したものであり、処理開始直後においては、この連結ベクトルAは初期化され「0」となっているものとする。そして、連結ベクトルAの更新は、そのときの連結カウンタnowの値に応じておこなわれる。上述したように、連結カウンタnowは、そのカウンタ値が「0」であるか「0以外」であるかが参照されるものである。連結ベクトルAの更新においては、連結カウンタnowが「0」の場合は、ステップS203で算出した移動ベクトルN(n+1)が代入される。一方、連結カウンタnowが「0以外」の場合は、それまでの連結ベクトルAに、そのときに算出された移動ベクトルN(n+1)を加算したものになる。今回、ステップS202で連結カウンタnowが初期化されているので、連結ベクトルAには、ステップS203で算出した移動ベクトルN(1)が代入される。
連結ベクトルAを更新すると、合成対象判別部215は、更新後の連結ベクトルAの横方向(x方向)成分であるベクトルAxを求め、ステップS300で算出した必要移動量Mx(詳細後述)よりも大きいか否かを判別することで、対象としている2つの画像のうちの画像f(n+1)が合成対象となるか否かを判別する(ステップS206)。
この判別動作を、図10を参照して説明する。ここでは、画像f(0)と画像f(1)を対象としている場合を例示する。以下、画像f(n)に示されている移動被写体MVを「移動被写体MVn」とする。なお、理解を容易にするため、画像f(0)と画像f(1)とを共通部分で位置合わせて合成した場合、移動被写体MV0と移動被写体MV1とは重なってしまうものとする。
つまり、図10(a)に示すように、画像f(0)と画像f(1)とを、共通する特徴点である静止被写体ST1とST2で位置合わせした場合、移動被写体MV0とMV1は図示するように重なる。このように画像f(0)と画像f(1)とを位置合わせした状態で、移動被写体MV0と重ならない位置となる移動被写体MVのダミーMVDを図10(b)に示す。本実施形態では、移動被写体MVが方向D(すなわち、左)に移動する場面を撮像しているので、移動被写体MV0の左側で重ならない位置に次の移動被写体MVがあればよいことになる。よって、移動被写体MV0の位置や大きさなどからダミーMVDに相当する位置までの横方向(x方向)の移動量を必要移動量Mxとすることができる。
ここで、上述したように、画像f(0)と画像f(1)とのズレ量は、移動ベクトルN(1)である。そして、今回はフレームカウンタnが0のときであるので、ステップS205で更新された連結ベクトルAは、移動ベクトルN(1)ということになる。ここで、本実施形態では、横方向(水平方向)に移動する移動被写体MVを追いながら連写した画像を用いて、図6に示すような、移動被写体MVが重ならない連写パノラマ画像PNを生成することとしているので、画像f(0)に対する画像f(1)の横方向のズレ量が、必要移動量Mxより大きければ、画像f(1)を画像f(0)に合成しても、移動被写体MV0とMV1は重ならないことになる。よって、画像間の2次元方向のズレ量を示している移動ベクトルN(1)、すなわち連結ベクトルAの横方向(x方向)成分を示すベクトルAxと、必要移動量Mxを比較することで、移動被写体MVが重なるか否かを判別することができる。
画像f(0)と画像f(1)の場合では、図10(b)に示すように、画像間の横方向のズレ量であるAxが必要移動量Mxより小さいため、画像f(1)を画像f(0)に合成すると、移動被写体MVが重なると判別することができる。このような、移動被写体MVが重なってしまう画像は合成対象から除外する。すなわち、合成対象判別部215は、現在対象としている画像f(n)と画像f(n+1)との間の横方向のズレ量であるベクトルAxと、ステップS300で算出された必要移動量Mxとを比較し、Ax<Mxとなる場合、画像f(n+1)を合成対象から除外する(ステップS206:No)。
このように、画像f(n+1)が合成対象ではない場合、合成対象判別部215は、連結カウンタnowを+1カウントアップする(ステップS214)。ここでは、ステップS202において連結カウンタnowに「0」が設定されているので、現在の連結カウンタnowのカウンタ値は「1」となる。
この場合、合成対象判別部215は、フレームカウンタnを+1カウントアップし、次のフレームを指定する(ステップS211)。ここで、更新後のフレームカウンタnが最終画像を示すmaxでなければ(ステップS212:No)、ステップS203に戻り、画像位置検出部213が、新たに指定された画像についての移動ベクトルを算出する。
この2巡目の処理においては、フレームカウンタnが「1」となるので、画像f(1)と画像f(2)との間のズレ量である移動ベクトルN(2)が求められることになる(図9(b)参照)。ここで、画像f(1)は合成対象ではなかったため、ステップS214において連結カウンタnowが「1」となっている。つまり、連結カウンタnowが「0」以外の値となっているので(ステップS204:No)、必要移動量Mxを算出するためのステップS300は実行しない。これは、直近の画像(画像f(1))を合成対象としなかったので、現在の画像f(n+1)である画像f(2)が、原点画像f(0)への合成対象となるか判別するためである。つまり、必要移動量Mxは、合成の基準となる画像(この場合、画像f(0))における移動被写体MVに基づいて求めることとしている。
ステップS300の処理をスキップした場合、合成対象判別部215は、連結ベクトルAの更新をおこなう(ステップS205)。ここでは、連結カウンタnowの値に応じて連結ベクトルAの更新をおこなう。つまり、直近の画像が合成対象ではない場合、ステップS214でのカウントアップにより連結カウンタnowは0以外の値となるが、この場合、これまでの連結ベクトルAにステップS203で算出した移動ベクトルを加算したものが新たな連結ベクトルAとなる。つまり、図10(d)に示すように、これまでの連結ベクトルAが移動ベクトルN(1)であったので、これにステップS203で算出した移動ベクトルN(2)を加算した結果を新たな連結ベクトルAとする。
このように連結ベクトルAを更新すると、合成対象判別部215は、更新後の連結ベクトルAに基づいて、画像f(n+1)(この場合、画像f(2))が合成対象であるか否かを判別する(ステップS206)。ここでの判別動作を、図10(c)を参照して説明する。
上述したように、直近の画像f(1)は合成対象ではなかったため、原点画像f(0)への合成はおこなわれていない状態である。このような場合、現在対象としている画像f(n+1)(すなわち、画像f(2))が原点画像f(0)に対する合成対象となるか否かを判別することになる。よって、ここでは、原点画像f(0)から画像f(2)までのズレ量に基づき、画像f(2)を画像f(0)に合成した場合、画像f(2)の移動被写体MV2が原点画像f(0)の移動被写体MV0に重ならないか判別する。
この場合、ステップS205で更新した連結ベクトルAが、原点画像f(0)から画像f(2)までのズレ量を示した2次元ベクトルであるので、この連結ベクトルAの横方向(x方向)成分であるベクトルAxと、ステップS300で算出された必要移動量Mxを比較することで、移動被写体MVが重なるか否かを判別する。
ここでは、図10(c)に示すように、原点画像f(0)から画像f(2)までの横方向(x方向)のズレ量であるベクトルAxが、必要移動量Mxより大きいので、合成対象判別部215は、画像f(2)は合成対象であると判別する(ステップS206:Yes)。
この場合、合成対象判別部215は、原点移動ベクトルTの更新をおこなう(ステップS207)。この原点移動ベクトルTは、原点画像f(0)と合成対象画像とのズレ量を示す2次元ベクトルである。ここで、原点移動ベクトルTは、処理開始時に初期化され「0」となっているものとする。ステップS207の処理が初回である場合、図10(c)に示すように、連結ベクトルAが原点画像f(0)から合成対象となった画像f(2)までのズレ量を示しているので、連結ベクトルAが原点移動ベクトルTとして代入されることになる(図10(d)参照)。一方、原点移動ベクトルTの更新が2回目以降である場合は、ステップS205で更新された連結ベクトルAにそれまでの原点移動ベクトルTを加算したものに更新する。
原点移動ベクトルTの更新をおこなうと、合成対象判別部215は、合成対象を画像合成部216に通知して合成処理を指示する。ここでは、画像f(2)が合成対象となっているので、原点画像f(0)に画像f(2)を合成することになる。この場合、画像合成部216はまず、処理画像記憶領域230bにアクセスし、原点画像f(0)を合成画像記憶領域230cにコピーするとともに、合成によって拡張される画像サイズに応じた座標領域を設定する。この場合、予め設定されている方向Dに基づいて、拡張する座標領域を設定する。ここでは、方向Dとして「左」が指定されているので、画像合成部216は、図11(a)に示すように、原点画像f(0)の右端が、全体の座標領域の右端に位置するよう座標を設定する。
この場合、原点画像f(0)のx座標は右端を原点とし、左方向に座標値が増加する設定とする。また、y座標については、画像の縦サイズの中点を原点とする。つまり、図11(a)に示すように、原点(0,0)から左方向にPx分離れた位置が画像f(0)の左端となり、原点(0,0)から上方向に+Py/2分離れた位置が画像f(0)の上端となり、原点(0,0)から下方向に−Py/2分離れた位置が画像f(0)の下端となる。
なお、方向Dが「右」である場合は、原点画像f(0)の左端が、全体の座標領域の左端に位置するようにし、原点画像f(0)の左端を原点として右方向に座標値が増加するようなx座標を設定する。また、横方向に合成して連写パノラマ画像PNを生成するので、y座標の設定については、方向Dが「左」の場合と同様とする。
このような基準座標を設定すると、画像合成部216は、合成用に拡張する領域の座標を設定する。この場合、画像合成部216は、ステップS207で更新された原点移動ベクトルTに基づいて拡張する座標を設定する。ここでは、原点移動ベクトルTのx方向ベクトルTxとy方向ベクトルTyのそれぞれを求め、x座標については、原点画像f(0)の左端(Px)から+側にTx分拡張する。y座標については、y座標原点(x,0)からTy分拡張する。なお、y座標については、合成対象画像が上下のいずれに移動したかによって+値と−値のいずれかをとるものとする。
このようにして、合成画像記憶領域230c上に展開した座標空間において、図11(b)に示すように、合成対象画像に対応した矩形の拡張座標領域EMが設定される。画像合成部216は、このようにして座標空間を拡張すると、合成対象である画像f(n+1)を処理画像記憶領域230bから取得する。そして、拡張した座標空間で画像f(0)と合成するため、取得した画像f(n+1)の座標値を、原点移動ベクトルTで補正する(ステップS208)。
ここで、原点移動ベクトルTは、原点画像f(0)から合成対象画像f(n+1)までの移動量であるので、画像f(n+1)の座標を原点移動ベクトルTで補正することで、それぞれの画像に共通の静止被写体(特徴点)が一致するよう座標空間上に合成対象画像f(n+1)を展開することができる。この場合、取得した画像f(n+1)についての初期座標を、上述した原点画像f(0)の場合と同様に設定する。すなわち、画像の右端をx座標の原点とし、y方向サイズの中点となる位置をy座標の原点とする。このような初期座標を画像f(n+1)に設定した上で、原点移動ベクトルTで座標値を補正する。
補正された画像f(n+1)のx座標によって示される画像の左端部は、拡張した座標空間の左端でのx座標と一致するようになる。同様に、y座標についても、画像の上端と座標空間の上端、もしくは、画像の下端と座標空間の下端とが一致するようになる。画像合成部216は、このように補正した座標値に基づいて画像f(n+1)を合成画像記憶領域230c上の座標空間に展開することで、原点画像f(0)に合成する(ステップS209)。
原点画像f(0)に画像f(2)を合成した場合の例を図12(a)に示す。図示するように、矩形の拡張座標空間EM内に、原点画像f(0)と画像f(2)とが合成され、それぞれについての移動被写体MV0とMV2が一つの画像内に示されることになる。
このようにして、合成対象であると判別された画像を原点画像f(0)に合成すると、画像合成部216は、その旨を画像位置検出部213に通知する。画像位置検出部213は、画像合成部216からの通知に応じて、連結カウンタnowをリセットする(ステップS210)。すなわち、合成がおこなわれる毎に、連結カウンタnowがリセットされる。ここでは、連結カウンタnowのカウンタ値を「0」にリセットして初期化する。
画像位置検出部213は、フレームカウンタnをさらに+1カウントアップし(ステップS211)、最終画像でなければ(ステップS212:No)、新たに指定された2つの画像についてステップS203以降の処理をおこなう。ここで、直近の画像を合成したことによってステップS210で連結カウンタnowをリセットしているので、現在のカウンタ値は「0」である(ステップS204:Yes)。この場合、移動被写体MVが重ならないための必要移動量Mxの算出が、被写体特定部214によって再度おこなわれる(ステップS300)。
ここで、原点画像f(0)に画像f(2)を合成した後のフレームカウンタnは「2」となるので、現在処理対象としている画像は画像f(2)と画像f(3)となる。この場合、ステップS300での必要移動量Mxの算出は、直近に合成された画像f(2)の移動被写体MV2についておこなわれることになる。つまり、画像合成がおこなわれる毎に、合成した画像における移動被写体MVで必要移動量Mxを求めることになる。これは、連写速度と移動被写体MVの移動速度とは必ずしも一定の関係とはならないので、移動被写体MVが重ならないための必要移動量Mxも一定ではないからである。よって、合成をおこなう都度、最後に合成した画像における移動被写体MVに基づいた必要移動量Mxの算出をおこなう。
このようにして被写体特定部214が新たに必要移動量Mxを算出すると、被写体特定部214はその旨を合成対象判別部215に通知する。合成対象判別部215は、被写体特定部214からの通知に応じて、連結ベクトルAの更新をおこなう(ステップS205)。ここでは、連結カウンタnowの値に応じて、連結ベクトルAの更新をおこなう。直近の画像を合成した場合、ステップS210で連結カウンタnowを初期化しているので、現在のカウンタ値は「0」である。この場合、合成対象判別部215は、ステップS203で算出した移動ベクトルN(n+1)を連結ベクトルAとする。
このように、連結カウンタnowの値が「0」であるか「0以外」であるかに応じて、連結ベクトルAの更新方法を異ならせることにより、合成対象と判別された画像の合成がおこなわれる毎に連結ベクトルAがリセットされることになる。すなわち、合成がされた場合は、その合成された画像と次以降の画像とのズレ量である移動ベクトルNの加算値を連結ベクトルAとすることで、合成された画像の移動被写体MVと重ならない移動被写体MVが含まれている画像であるかが判別されるようになる。
合成対象判別部215は、このようにして更新した連結ベクトルAの横方向(x方向)成分であるベクトルAxと、ステップS300で算出された必要移動量Mxとを比較することで、処理対象としている画像f(n+1)が合成対象であるか否かを判別する(ステップS206)。
画像f(n+1)が合成対象である場合(ステップS206:Yes)、合成対象判別部215は、原点移動ベクトルTの更新をおこなう(ステップS207)。ここでは、これまでの原点移動ベクトルTに、ステップS205で更新した連結ベクトルAを加算したものを新たな原点移動ベクトルTとする。
ここで、原点画像f(0)に画像f(2)が合成された場合において、現在のフレームカウンタnが「2」であり、このときの画像f(n+1)である画像f(3)が合成対象であると判別されたとすると、これまでの原点移動ベクトルTは、原点画像f(0)から画像f(2)までのズレ量を示したベクトル(すなわち、移動ベクトルN(1)+移動ベクトルN(2))である。よって、このような原点移動ベクトルTに、ステップS205で更新した連結ベクトルA(すなわち、移動ベクトルN(3))を加算したものが、新たな原点移動ベクトルTとなる。
つまり、更新された原点移動ベクトルTは、原点画像f(0)と画像f(3)とのズレ量を示した2次元ベクトルとなる。この場合、図12(a)に示したような、合成画像記憶領域230cに展開している座標空間を、原点画像f(0)の原点(0,0)から原点移動ベクトルT分さらに拡張することで、図12(a)に示している合成画像にさらに画像f(3)を合成するために必要な座標空間を設定することができる。
この場合、画像f(3)についての初期座標を原点移動ベクトルTで補正することで(ステップS208)、原点画像f(0)を基準とした座標に基づいて、画像f(3)(画像f(n+1))を合成することができる(ステップS209)。
なお、今回指定された画像f(n+1)が合成対象でない場合(ステップS206:No)、連結カウンタnowが+1カウントアップされ「0以外」となる(ステップS214)。
以上のような処理を、フレームカウンタnが最終画像を示すまで繰り返しおこなわれることで(ステップS211、ステップS212:No)、得られた連写画像のそれぞれに示されている移動被写体MVが重なることのない画像を順次判別して原点画像f(0)に合成する。この場合、図12(b)に示すように、矩形の座標空間EMが、合成する画像に応じて順次拡張され、その中に合成対象画像が順次合成される。
ここで、水平方向に移動する移動被写体MVを追いながら連写することで、横方向に長いパノラマ画像を生成することにしているので、パノラマ画像とするために特徴点(静止被写体)で位置合わせをしながら合成すると、各画像間の上下位置は、図12(b)に示すようにズレが生じる。ここで、合成のための座標空間EMは矩形としているので、図12(b)で斜線によって示すように、上下部分に画像のない領域(無画像領域)が生じる。よって、座標空間EM上で合成した画像をそのまま完成画像としてしまうと、不規則な無画像領域があるため整った画像とはならない。
よって、最終画像f(max)についての処理を終了すると(ステップS212:Yes)、画像合成部216は、合成した画像の上下方向をトリミングすることで、完成画像である連写パノラマ画像PNを生成する(ステップS213)。ここでは、図12(b)に示したような無画像領域を除外できる上下幅(図中の点線間)を特定してトリミングすることで、図12(c)に示すような連写パノラマ画像PNを生成する。
このようにして連写パノラマ画像PNを生成すると、画像合成部216は、その旨を出力処理部217に通知する。この場合、図7に示す連写パノラマ撮像処理のフローに戻り、出力処理部217は、所定の出力確認画面を生成して表示部310に表示出力する(ステップS109)。
ここでは、例えば、生成された連写パノラマ画像PNとともに、連写パノラマ画像PNの出力方法をデジタルカメラ1の使用者に選択させる画面を生成して表示部310に表示する。出力方法として、例えば、メモリカード(外部記憶部260)への保存や、外部装置への表示出力、などが選択可能に表示される。
デジタルカメラ1の使用者は、操作部330を操作し、所望する出力方法を選択する。出力処理部217は、使用者によって選択された出力方法に応じて、合成画像記憶領域230cに展開されている連写パノラマ画像PNのデータを処理することで出力し(ステップS110)、処理を終了する。
以上説明したように、水平方向に移動する移動被写体MVを、デジタルカメラ1で追いながら連写撮像すると、移動被写体MVが重なることのない画像のみを合成して連写パノラマ画像PNを生成する。
このような、移動被写体MVが重ならない画像を判別するために必要となる必要移動量Mxは、上述したように、図8に示した連写パノラマ画像生成処理のステップS300で実行された「必要移動量算出処理」によって算出される。この必要移動量算出処理を、図13に示すフローチャートを参照して説明する。ここでは、図8に示した連写パノラマ画像生成処理のステップS202において、フレームカウンタnとして「0」が指定され、これにより画像f(0)と画像f(1)が処理対象となっている場合を例に説明する。
処理が開始されると、被写体特定部214は、処理対象となっている画像f(n)と画像f(n+1)の位置合わせをおこなうため、連写パノラマ画像生成処理(図8)のステップS203で算出した移動ベクトルN(n+1)で画像f(n)を補正する(ステップS301)。つまり、図14(a)に示すように、画像f(0)を移動ベクトルN(1)で補正することで、画像f(0)と画像f(1)のそれぞれに共通する特徴点(静止被写体ST1とST2)が重なるよう位置合わせされる。
処理対象画像の位置合わせをおこなうと、被写体特定部214は、2つの画像間でのブロックマッチングをおこなうためのブロックb(k)(調査ブロック)を設定する(ステップS302)。ここでは、設定されるブロック数をkとし、その最大値をmaxとする。これにより、ブロックb(0)〜ブロックb(max)が設定される。この場合、例えば、移動ベクトルNで補正した画像f(n)と画像f(n+1)との重なる部分にブロックb(k)を設定する。ここでは、図14(b)に示すように、画像f(0)と画像f(1)が重なる部分にブロックb(k)を設定する。
このような調査ブロックを設定すると、被写体特定部214は、ブロック番号を指定するブロックカウンタkに0を設定することで初期化する(ステップS303)。これにより、最初のマッチング調査に用いられるブロックとしてブロックk(0)が指定される。
被写体特定部214は、画像f(n)と画像f(n+1)それぞれから、ブロックb(k)の位置に対応する画素情報を取得してマッチングをとり、そのマッチング率bm(k)を算出する(ステップS304)。ここでは、それぞれの画素値の類似度などに基づいてマッチング率bm(k)を算出する。
指定したブロックb(k)におけるマッチング率bm(k)を算出すると、被写体特定部214は、そのマッチング率bm(k)と予め規定されている必要マッチング率mbとを比較し、マッチング率bm(k)が必要マッチング率mb以下であるか否かを判別する(ステップS305)。この必要マッチング率mbは、比較している画素同士が同じ画像を示しているか判別するための閾値であり、既知のブロックマッチング手法などに基づいて予め規定されているものである。
すなわち、算出したマッチング率bm(k)が必要マッチング率mb以下である場合(ステップS305:Yes)、その位置においては、画像f(n)と画像f(n+1)でマッチングがとれないことになる。この場合、被写体特定部214は、そのブロックb(k)をエラーブロックb(er)とし、例えば、処理画像記憶領域230bに記録する(ステップS306)。なお、算出したマッチング率bm(k)が必要マッチング率mbより大きい場合(ステップS306:No)は、マッチングがとれていることになる。よって、そのブロックb(k)はエラーブロックではないので記録しない。
ブロックb(k)についてこのようなマッチング処理をおこなうと、被写体特定部214は、ブロックカウンタkを+1カウントアップする(ステップS307)。そして、上述したようなブロック毎のマッチングを最終ブロックb(max)までおこなう(ステップS308:No)。
ここで、画像f(0)と画像f(1)とでは、上述したように、移動被写体MVが重なっている。このような画像間でブロックマッチングをおこなった場合、静止被写体STなどの共通の被写体部分(特徴点)ではマッチングがとれることになるが、それぞれの画像に示されている移動被写体MVの位置は画像毎に異なっているので、マッチングがとれず、エラーブロックとして記録されていることになる。
ここで、記録されたエラーブロックb(er)を画像f(0)について当てはめると、図15(a)に示すようになる。つまり、画像f(0)に示されている移動被写体MV0の部分と、位置合わせをして重ねたときの画像f(1)に示されている移動被写体MV1に対応する位置が、エラーブロックb(er)となる。ここで、画像f(0)では、移動被写体MV0が実際に示されているので、画像f(0)においては、図15(b)に示すような移動被写体MV0を示す画素がエラーブロックb(er)の位置に存在する。
一方、移動被写体MV1は画像f(0)に含まれているものではなく、画像f(1)に含まれているものであるから、画像f(0)上で移動被写体MV1の形状で現れたエラーブロックb(er)に対応する画像f(0)の画素は、移動被写体MV1を構成するものではない。この部分に対応する画像f(0)の画素は、背景となる部分を示しているものになる。よって、エラーブロックb(er)に対応する画像f(0)の画素は、移動被写体MV0を示すものと、背景部分を示すもので構成されていることになる。
したがって、画像f(0)上のエラーブロックb(er)に対応する画素値に基づき、例えば、コントラストの違いなどをみることで、移動被写体MV0を示す部分とそれ以外の部分とを峻別することができる。よって、被写体特定部214は、エラーブロックb(er)に対応する画像f(n)上の画素値を取得し(ステップS309)、取得した画素値に基づいて移動被写体MVnを特定する(ステップS310)。
つまり、図15(c)に示すように、画像f(0)で示されている移動被写体MV0を構成している画素を特定することができる。ここで、本処理によって求める必要移動量Mxは、この画像に次以降の画像を合成した場合に、その画像に示されている移動被写体MVが、特定された移動被写体MVnと重ならないために必要な移動量を示すものである。よって、少なくとも、特定された移動被写体MVの横方向のサイズ分以上の移動がある画像であれば、合成しても移動被写体MV同士が重ならないことになる。したがって、被写体特定部214は、特定された移動被写体MVの横方向のサイズを必要移動量Mxとし(ステップS311)、処理を終了する。
そして、このように求められた必要移動量Mxと、連結ベクトルAの横方向成分であるベクトルAxとの比較により、合成対象画像であるか判別されるのである。
以上説明したように、本発明を上記実施形態の如く適用することで、移動する被写体が重ならずに示されるパノラマ画像を生成することができるので、パノラマ画角の背景と動きのある被写体とを1つの画像で表すことができ、より効果的な画像表現を実現することができる。
この場合において、基準となる最初の画像(原点画像)とその次の画像とに示される移動被写体から必要移動量を算出し、原点画像からの移動量が必要移動量より大きい画像を原点画像に合成する。そして、以降は、合成をおこなう毎に、合成した画像とその次の画像とに示される移動被写体から必要移動量を算出し、最後に合成した画像からの移動量が必要移動量より大きい画像を順次合成する。これにより、移動被写体が重なることのないパノラマ画像を確実に生成することができる。また、すべての画像について必要移動量を求める必要がないので、処理量を軽減することができ、パノラマ画像の生成にかかる処理時間を短縮することができる。
このように原点画像や最後に合成した画像で必要移動量を算出する際、その画像内で特定される移動被写体の位置と大きさから必要移動量を算出しているので、移動被写体の動きや変化に応じた適切な必要移動量を求めることができ、移動被写体が重なることのないパノラマ画像を確実に生成することができる。
また、合成対象画像を合成する際は、最初の画像(原点画像)から当該画像までの移動量(ズレ量)に基づいて、原点画像を基準に順次合成するので、ズレなどのないパノラマ画像を生成することができる。
また、以上のような動作をおこなう画像処理機能を備えた撮像装置として本発明を実現することで、撮像をおこなったその場で上述したようなパノラマ画像を生成することができる。
このような撮像装置を、上記実施形態で示したようなデジタルスチルカメラで実現した場合、移動する移動被写体の撮像を、デジタルスチルカメラの連写機能によって得ることができる。したがって、連写機能を備えるデジタルスチルカメラであれば、特別な装置を要することなく、撮影したその場で効果的な画像表現を実現することができる。
上記実施形態は一例であり、本発明の適用範囲はこれに限られない。すなわち、種々の応用が可能であり、あらゆる実施の形態が本発明の範囲に含まれる。
上記実施形態では、本発明をデジタルスチルカメラに適用した場合を例示したが、上記実施形態におけるデータ処理部200にかかる構成や機能を実現することができるのであれば、本発明を実現する形態はデジタルスチルカメラに限られるものではない。
すなわち、上記実施形態におけるデータ処理部200は、本発明にかかる画像処理装置を実現したものであるので、上述したデータ処理部200と同様の構成や機能を、例えば、コンピュータによる制御で動作する装置によって実現することでも、移動被写体が重なることのないパノラマ画像を生成することができる。
この場合、本発明にかかる画像処理装置として必要な構成や機能を予め備えている装置として実現できることはもとより、例えば、パーソナルコンピュータなどの汎用装置によって実現することもできる。すなわち、上記実施形態における制御部210によって実現された機能と同様の機能を、当該装置を制御するコンピュータ装置で実現するためのプログラムを適用し、当該コンピュータ装置が上記各処理と同様の処理を実行することでも、上記実施形態と同様の効果を得ることができる。
また、上記実施形態では、本発明にかかる撮像装置をデジタルスチルカメラ(デジタルカメラ1)で実現した場合を例示したが、一の方向に移動する移動被写体を示した一連の画像を得られるのであれば、本発明にかかる撮像装置は、デジタルスチルカメラに限られるものではない。すなわち、コンピュータによる画像処理がおこなえるデジタルデータによって撮像画像が得られるのであれば、動画像を撮像する撮像装置(例えば、デジタルビデオカメラや、動画像撮像機能を有するデジタルスチルカメラや携帯電話など)であってもよい。動画像をデジタルデータで撮像する撮像装置においても、連続したフレーム画像によって動画像が構成されるので、上記実施形態で示した処理と同様の処理をおこなうことで、移動被写体が重なることのないパノラマ画像を生成することができる。
また、本発明にかかる撮像装置を、上記実施形態で示したデジタルカメラ1の構成や機能と同様の機能を予め備えている撮像装置として実現できることはもとより、既存のデジタルスチルカメラやデジタルビデオカメラ、および、これらと同様の機能を有する種々の装置によって実現されてもよい。この場合も、上記実施形態の制御部210によって実現された機能と同様の機能を、当該装置を制御するコンピュータ装置が実現するためのプログラムを適用し、当該コンピュータ装置が上記各処理と同様の処理を実行することでも、上記実施形態と同様の効果を得ることができる。
このような、本発明にかかるプログラムを適用する方法は任意であり、例えば、CD−ROMやメモリカードなどといった記録媒体に格納して適用できる他、インターネットなどの通信媒体を介して適用することができる。
なお、上記実施形態では、画像内の移動被写体を特定する際、連続する画像間のブロックマッチングによって特定することとしたが、対象画像内での移動被写体の大きさや位置を特定できるのであれば、その方法はブロックマッチングに限らず任意である。
例えば、対象とする移動被写体が人物であれば、デジタルスチルカメラなどで採用されている顔認識機能と同様の動作によって移動被写体を特定するようにしてもよい。
その他、例えば、パノラマ画像を生成する前に最初のフレーム画像などを表示することで、所望する移動被写体を撮影者等に指定させるようにしてもよい。この場合、画像上で指定された位置において、例えば、リージョングローイングなどといった画像範囲を特定する手法を実行し、移動被写体を示す画像部分の特徴を認識して記憶する。そして、必要移動量を算出する画像において、記憶した特徴が現れている部分を移動被写体として特定してもよい。
また、上記実施形態では、水平方向に移動する移動被写体を撮像する場合を例示したが、一の方向(一定方向)に移動する対象であれば本発明にかかる移動被写体とすることができ、移動被写体の移動方向は水平方向に限られるものではない。例えば、下から上や上から下などといった、上下の一方向に移動するものを移動被写体として撮像してもよい。この場合は、撮像画像を上下方向に合成すればよい。つまり、パノラマ画像の生成に必要となる撮像方向と一致する方向であれば、移動被写体の移動方向は任意である。なお、パノラマ画像を生成するために設定される方向は、撮像装置を正位置にて撮像する場合における撮像画角内での方向に基づくものである。スチルカメラの場合、縦位置(正位置±90°)にして撮像することがあるが、この場合、移動被写体自体は水平方向に移動していても、撮影前に指定する移動方向や撮像画像の合成方向などは上下方向(縦方向)ということになる。
1…デジタルカメラ、100…撮像部、110…光学装置、120…イメージセンサ部、200…データ処理部、210…制御部、211…インタフェース処理部、212…撮像制御部、213…画像位置検出部、214…被写体特定部、215…合成対象判別部、216…画像合成部、217…出力処理部、220…画像処理部、230…画像メモリ、230a…撮像画像記憶領域、230b…処理画像記憶領域、
230c…合成画像記憶領域、240…画像出力部、250…記憶部、260…外部記憶部、300…インタフェース部、310…表示部、320…外部インタフェース部、330…操作部、MV…移動被写体、ST…静止被写体、PN…連写パノラマ画像