以下、本発明の一実施の形態を図に従って説明する。
(第1の実施の形態)
図1は、本発明の各実施の形態に共通する電子カメラ1の概略構成を示すブロック図である。この電子カメラ1は、所定の画角からなるフレーム画像を撮影する機能を有するのみならず、複数のフレーム画像の各画像部分を合成してパノラマ画像を合成するパノラマ撮影機能を備えたものであって、図示しない光学系の光軸上に配置されたCCD2と、DSP/CPU3とを有している。DSP/CPU3は、JPEG方式による画像のデータの圧縮・伸張を含む各種デジタル信号処理機能を有するとともに電子カメラ1の各部を制御するワンチップマイコンである。DSP/CPU3には、CCD2を駆動するTG(Timing Generator)4が接続されており、TG4には、CCD2から出力される被写体の光学像に応じたアナログの撮像信号が入力するユニット回路5が接続されている。ユニット回路5は、入力した撮像信号を保持するCDSと、その撮像信号を増幅するゲイン調整アンプ(AGC)、増幅された撮像信号をデジタルの撮像信号に変換するA/D変換器(AD)から構成されており、CCD2の出力信号はユニット回路5を経てデジタル信号としてDSP/CPU3に送られる。
また、DSP/CPU3には、表示装置6、キー入力部7、時計部8が接続されるとともに、アドレス・データバス9を介してDRAM10、内蔵フラッシュメモリ11、カード・インターフェイス12が接続されている。カード・インターフェイス12には、図示しないカメラ本体のカードスロットに着脱自在に装着されたメモリ・カード13が接続されている。
DRAM10は、撮影待機モードの設定時にCCD2によって撮像され、デジタル化された被写体の画像データを一時保存するバッファであるとともに、DSP/CPU3のワーキングメモリとしても使用される。DRAM10に一時保存された画像データは圧縮され、最終的にはメモリ・カード13に記録される。内蔵フラッシュメモリ11には、DSP/CPU3の動作プログラムや各部の制御に使用する各種データが記憶されており、DSP/CPU3は、前記動作プログラムに従い動作することにより本発明の選択手段、第1の画像合成手段、第2の画像合成手段等として機能する。
表示装置6はカラーLCDとその駆動回路とを含み、撮影待機状態にあるときにはCCD2によって撮像された被写体画像をスルー画像として表示し、記録画像の再生時にはメモリ・カード13から読み出され伸張された記録画像を表示する。キー入力部7は、シャッターキー、パノラマ撮影開始キーと終了キー、電源キー、モード選択キー、十字キー等の複数の操作キーを含み、使用者によるキー操作に応じたキー入力信号をDSP/CPU3に出力する。時計部8は日付及び時刻をカウントするカレンダー機能と時計機能とを有しており、撮影動作時等に必要に応じて日付データ及び時刻データをDSP/CPU3へ送る。
以上の構成からなる電子カメラ1において、DSP/CPU3は、前記プログラムに従って、図2に示すフローチャートに示すように処理を実行する。すなわち、ユーザによるキー入力部7における前記モード選択キーの操作により、パノラマ撮影モードが選択されると、撮影処理を実行した後(ステップS1)、画像合成処理を実行する(ステップS1)。
図3は、前記撮影処理(ステップS1)の手順を示すフローチャートである。先ず、スルー画像の表示を開始し(ステップS101)、このステップS101での処理により、表示装置6にはスルー画像が表示される。次に、パノラマ撮影開始キーが操作されたか否かを判断する(ステップS102)。パノラマ撮影開始キーが操作されたならば、撮影・記録処理を実行してCCD2からフレーム画像を取り込んでDRAM10に保存する(ステップS103)。
次に、シャッターキーが操作されたか否かを判断する(ステップS104)。操作されない場合には、ステップS105の処理を実行することなくステップS106に進み、パノラマ撮影終了キーが操作されたか否かを判断する(ステップS104)。パノラマ撮影終了キーが操作されない場合には、所定時間(本実施の形態においては、1/16秒)が経過したか否かを判断し(ステップS107)、所定時間が経過した時点で、ステップS103からの処理を繰り返す。したがって、パノラマ撮影終了キーが操作されるまで、所定時間(1/16秒)間隔でステップS105からの処理が繰り返されることとなる。
このパノラマ撮影中においては、ユーザは電子カメラ1を所望の方向に回動させながら撮影を行うが、このとき中心人物等のユーザが意図した主要被写体がファインダー内に到来した時点(好ましくは、ファインダーの中央に到来した時点)でシャッターキーを操作する。すると、ステップS104の判断がYESとなる。したがって、ステップS104からステップS105に進み、ユーザがシャッターキーを操作した時点でDRAM10に記憶されたフレーム画像に、他のフレーム画像と識別するための選択識別子を付加する。
そして、ユーザがパノラマ撮影終了キーを操作するとステップS106の判断がYESとなり、図2に示したゼネラルフローにリターンする。したがって、DRAM10には、ユーザがパノラマ撮影開始キーを操作してからパノラマ撮影開始キーを操作するまでに所定時間(1/16秒)間隔で撮影された複数枚のフレーム画像が記憶される。このとき、ユーザはパノラマ撮影を行うべく電子カメラ1を所望の方向、例えば右方向に回動させながら撮影を行ったとすると、DRAM10には、電子カメラ1の回動方向とは逆方向の被写体が移動した複数のフレーム画像が記憶されることとなる。
また、パノラマ撮影中にシャッターキーを操作した場合には、当該操作時点で撮影されたフレーム画像には、前記選択識別子が付加されることとなる。
図4は、前記画像合成処理(ステップS2)の処理手順を示すフローチャートである。なお、ここでは、前述のように電子カメラを右方向に回動させて撮影を行うことで得た複数のフレーム画像に対して画像合成処理を行う場合について説明する。つまり、各フレーム画像間では、時間を追うに従って、被写体画像が左方向に移動していくように見える複数のフレーム画像に対して画像合成処理を行う場合について説明する。
先ず、DRAM10から記憶された順序でフレーム画像を選択する(ステップS201)。つまり、フレーム画像を撮影された順に従って選択する。
次に、この選択したフレーム画像の特徴量を算出する(ステップS202)。この特徴量の算出に際しては、図5(A)に示すように、ステップS201で選択した今フレーム画像Xの中央付近(中央領域)に設定された複数のブロックを注目画像とする。この複数のブロックにおいて各々特徴量を算出し、特徴量が所定値以上となっているブロックを抽出する。この特徴量の算出においては、演算式としてHARRIS演算子を用いる。つまり、例えば当該ブロック内における各微小領域間の輝度変化パターン(高周波成分)を示す変数を特徴量として用いる。
次に、この抽出したブロック毎に、当該ブロックに対応する特徴量を有するブロックを図5(B)に示す次フレーム(後フレーム)画像X+1内にて探索する(ステップS203)。つまり、今フレームから抽出したブロック毎に、当該ブロックとしての注目画像に対応する画像領域を次フレーム(後フレーム)画像X+1内にて探索する。ここで、次フレーム(後フレーム)画像X+1は、今フレーム画像Xの次に記憶された(撮影された)フレーム画像である。そして、今フレーム画像Xと次フレーム画像X+1において、各共通の特徴量を有する対応するブロック毎にそれぞれの移動ベクトル(X軸成分、Y軸成分)を検出する。さらに、この検出した各移動ベクトルの例えば平均値を算出することにより、フレーム全体の移動ベクトルを算出する(ステップS204)。つまり、今フレーム画像Xから次フレーム画像X+1への被写体画像の移動ベクトルとして算出する。
次に、抽出する部分画像の幅である抽出幅を設定する(ステップS205)。この抽出幅の設定は、前記フレーム全体の移動ベクトルから予め設定されている移動方向成分を抽出し、この抽出した移動方向成分に基づいて、図6(C)に示す内蔵フラッシュメモリ11に予め記憶されている変換テーブル112から読み出すことで行われる。
本実施の形態の場合、左右方向のパノラマ合成画像を生成するものとし、前記フレーム全体の移動ベクトルから左右方向成分(X軸方向成分)、つまり、例えば被写体画像の左方向への移動量を抽出し、この移動量に対応する抽出幅Wを読み出すことにより行う。
引き続き、今フレーム画像Xの所定の中心線を基準として、今フレーム画像Xから前記抽出幅で画像を抽出する(ステップS206)。すなわち、図6(B)に示すように、先ずフレームの中心点を通る直線であって、前記抽出された移動方向成分と直交する方向(ここではY軸方向)に走る中心線Cを今フレーム画像X上に設定する。そして、今フレーム画像Xにおいて前記中心線Cから、移動ベクトルとは逆方向である電子カメラ1の回動方向(ここでは右方向)に前記抽出幅W分の画像の部分画像XPを抽出する。つまり、今フレーム画像から部分画像を抽出する場合には、中心線C(中心軸C)を基準として、移動ベクトルとは逆方向(電子カメラ1の回動方向)に部分画像XPを抽出する。
しかる後に、図6(A)に示すように、この抽出した部分画像XPをこの時点までに合成されているパノラマ合成画像XSの移動ベクトルとは逆方向の後端部、つまり電子カメラ1の回動方向の後端部(ここでは右側)に結合させて合成する(ステップS207)。
引き続き、DRAM10に記憶された最後−1のフレーム画像まで以上の特徴量算出にかかる処理を行ったか否かを判断し(ステップS208)、最後−1までのフレーム画像に対しての処理が終了するまで、ステップS201からの処理を繰り返す。
このようなパノラマ画像合成を行うことにより、光学系により結像される画像において、両側の歪みがある部分が抽出されることなく、歪みのない中央部の画像部分を抽出して合成することができる。その結果、パノラマ合成画像XSを全域に亙って歪みのないものにすることができる。
また、各フレーム画像から基準となる同一の中心線Cから移動ベクトルの大きさに応じた抽出幅で抽出すれば、時間的に隣接するフレーム画像間において、抽出された前のフレーム画像からの抽出画像の終端縁と、次のフレーム画像からの抽出画像の始端縁とにおける画像を精度よく合致させることができる。したがって、時間的に隣接して撮影された画像を精度よく結合してパノラマ画像を合成することができる。
なお、ステップS207における画像合成において、パノラマ合成画像XSに抽出した部分画像XPの端部を結合合成する際の、上下方向の位置合わせは、移動ベクトルの上下方向成分に応じて部分画像XPを上下に移動調整することにより行う。したがって、ユーザが電子カメラ1を構えて右方向に回動させた場合であっても、当該電子カメラ1には不可避的に上下方向の振動が生ずるときには、パノラマ合成画像XSは図7(A)に示すように上下にずれた部分画像の結合体となる。
また、以上に説明したパノラマ合成画像XSの生成に際しては、DRAM10に記憶された複数のフレーム画像をコピーして用い、元のフレーム画像はそのままDRAM10に保存しておく。若しくは、少なくとも識別子が付加されたフレーム画像に関しては、コピーして保存しておく。
そして、最後−1のフレーム画像までステップS201〜S207が実行されることによりステップS208の判断がYESとなると、DRAM10に保存されたフレーム画像において前記選択識別子が付加された画像があるか否かを判断する(ステップS209)。選択識別子が付加されたフレーム画像がない場合には、ステップS210〜S212の処理を実行することなく、ステップS213に進み切り出し・記憶処理を実行する。この切り出し・記憶処理においては、図7(A)に示すように、最後のステップS207の処理までに結合合成されたパノラマ合成画像XS(後述するステップS212の処理が行われた場合には、当該処理が行われたパノラマ合成画像XS(図7(B))から、結合方向に沿った所定幅の画像部分を切り出し、この切り出した画像部分を最終的なパノラマ合成画像XE1として、メモリ・カード13に記録する。
つまり、前述のように、ユーザが電子カメラ1を構えて右方向に回動させた場合であっても、当該電子カメラ1には不可避的に上下方向の振動が生ずることから、パノラマ合成画像XSは図7(A)に示すように上下にずれた部分画像の結合体となる。したがって、結合方向に沿った所定幅の画像部分を切り出し、この切り出した画像部分を最終的なパノラマ合成画像XE1として、メモリ・カード13に記録することにより、周部に凹凸のないパノラマ合成画像XE1を記録保存することができる。
他方、ステップS209の判断がYESであった場合、つまり前述したパノラマ撮影中にシャッターキーが操作されて、ユーザが意図した主要被写体が撮影されたフレーム画像が選択されている場合には、選択識別子が付加されている選択フレーム画像の特徴量を抽出する(ステップS210)。この特徴量の算出に際しては、前述したステップS202の処理と同様、図5(A)に示すように、選択フレーム画像XFの中央付近(中央領域)に設定された複数のブロックを注目画像とする。この複数のブロックにおいて各々特徴量を算出し、特徴量が所定以上であるブロックを抽出する。この特徴量の算出においては、演算式としてHARRIS演算子を用いる。
次に、この算出した特徴量が所定以上である各ブロックと、共通の特徴量を有するブロックを、ステップS208がYESとなるまで合成された合成画像内にて探索する(ステップS211)。そして、このステップS211で探索した合成画像内の共通の特徴量を有するブロックと、前記ステップS210で各々特徴量を算出したブロックとが合致するように、選択フレーム画像を合成済み画像に上書きする(ステップS212)。これにより、図7(B)に示すように、選択フレーム画像XFがパノラマ合成画像XS上に上書きされる。
そして、前述したステップS213での処理より、図7(B)に示すように、ステップS212の処理が行われたパノラマ合成画像XSから、結合方向に沿った所定幅の画像部分を切り出し、この切り出した画像部分が最終的なパノラマ合成画像XE2として、メモリ・カード13に記録されることとなる。
この最終的なパノラマ合成画像XS2にあっては、ユーザが意図したフレーム画像である選択フレーム画像XFが分断されることなく含まれていることから、ユーザが意図する部分に画像合成による継ぎ目を生じさせることなくパノラマ画像合成した画像を得ることができる。
また、前述のように、中心線Cを基準として部分画像XPを抽出して合成する短冊合成を行うと、光学系により結像される画像において、両側の歪みがある部分が抽出されることなく、歪みのない中央部の画像部分を抽出して合成することができる。しかし、その反面、パノラマ撮合成画像には複数の継ぎ目が不可避的に形成されてしまう。しかるに、本実施の形態によれば、パノラマ合成画像XS2には選択フレーム画像XFが分断されることなく含まれことから、継ぎ目を減少させることができる。
よって、選択フレーム画像XFを除く部分については、短冊合成によりパノラマ合成画像を歪みのないものにしつつ、ユーザが意図する部分については継ぎ目のないパノラマ合成画像を得ることができる。
しかも、本実施の形態においてはシャッターキーが操作された際に撮影されたフレーム画像を選択フレーム画像とすることから、ユーザがシャッターチャンスとしてシャッターキーを操作した時点のフレーム画像に継ぎ目を生じさせることなくパノラマ画像合成した画像を得ることができる。
(第2の実施の形態)
図8は、本発明の第2の実施の形態における前記撮影処理(ステップS1)の手順を示すフローチャートである。先ず、スルー画像の表示を開始し(ステップS121)、このステップS121での処理により、表示装置6にはスルー画像が表示される。次に、シャッターキー(1回目)が操作されたか否かを判断する(ステップS122)。シャッターキーが操作されたならば、撮影・記録処理を実行してCCD2からフレーム画像を取り込んでDRAM10に保存する(ステップS123)。
次に、シャッターキー(2回目以降)が操作されたか否かを判断する(ステップS124)。操作されない場合には、ステップS125の処理を実行することなくステップS126に進み、所定枚数撮影したか否かを判断する(ステップS124)。所定枚数撮影していない場合には、所定時間(本実施の形態においては、1/16秒)が経過したか否かを判断し(ステップS127)、所定時間が経過した時点で、ステップS123からの処理を繰り返す。したがって、所定枚数撮影されるまで、所定時間(1/16秒)間隔でステップS125からの処理が繰り返されることとなる。
このパノラマ撮影中においては、ユーザは電子カメラ1を所望の方向に回動させながら撮影を行うが、このとき中心人物等のユーザが意図した主要被写体がファインダー内に到来した時点(好ましくは、ファインダーの中央に到来した時点)でシャッターキーを操作する(2回目以降の操作)。すると、ステップS124の判断がYESとなる。したがって、ステップS124からステップS125に進み、ユーザが2回目以降のシャッターキーを操作した時点でDRAM10に記憶されたフレーム画像に、他のフレーム画像と識別するための選択識別子を付加する。
そして、所定枚数のフレーム画像が撮影、記録されるとステップS126の判断がYESとなり、図2に示したゼネラルフローにリターンする。したがって、DRAM10には、ユーザが1回目のシャッターキーを操作後において所定時間(1/16秒)間隔で撮影された所定枚数のフレーム画像が記憶される。このとき、ユーザはパノラマ撮影を行うべく電子カメラ1を所望の方向、例えば右方向に回動させながら撮影を行ったとすると、DRAM10には、電子カメラ1の回動方向とは逆方向の被写体が移動した複数のフレーム画像が記憶されることとなる。
また、パノラマ撮影中にさらにシャッターキー操作を行った場合には、当該操作時点で撮影されたフレーム画像には、前記選択識別子が付加されることとなる。
したがって、この実施の形態においては、別途パノラマ撮影開始キーや終了キーを設けることなく、シャッターキーのみでパノラマ撮影の開始及び終了と、所望のフレーム画像の選択とを行うことができる。
なお、この第2の実施の形態における画像合成処理(ステップS2)は、図4のフローチャートに示した第1の実施の形態と同様の手順で行えばよい。
(第3の実施の形態)
図9は、本発明の第3の実施の形態における前記撮影処理(ステップS1)の手順を示すフローチャートである。先ず、スルー画像の表示を開始し(ステップS131)、このステップS131での処理により、表示装置6にはスルー画像が表示される。次に、シャッターキーが押下されたか否かを判断する(ステップS132)。シャッターキーが押下されたならば、撮影・記録処理を実行してCCD2からフレーム画像を取り込んでDRAM10に保存する(ステップS133)。
次に、前記シャッターキーの押下が解除されたか否かを判断する(ステップS134)。シャッターキーの押下が解除されない場合には、所定時間(本実施の形態においては、1/16秒)が経過したか否かを判断し(ステップS135)、所定時間が経過した時点で、ステップS133からの処理を繰り返す。したがって、前記シャッターキーの押下が解除されない状態においては、所定時間(1/16秒)間隔でステップS135からの処理が繰り返されることとなる。
よって、ユーザが繰り返しシャッターキーを操作することなく、シャッターキーの押下を継続すれば、DRAM10に所定時間をフレームレートとする複数枚分のフレーム画像が記憶させることができる。
そして、ユーザが押下しているシャッターキーを解除するとステップS134がYESとなり、図2に示したゼネラルフローにリターンする。したがって、DRAM10には、ユーザがシャッターキーを押下してから解除するまでに所定時間(1/16秒)間隔で撮影された複数枚のフレーム画像が記憶される。このとき、ユーザはパノラマ撮影を行うべく電子カメラ1を所望の方向、例えば右方向に回動させながら撮影を行ったとすると、DRAM10には、電子カメラ1の回動方向とは逆方向の被写体が移動した複数のフレーム画像が記憶されることとなる。
図10は、本実施形態における前記画像合成処理(ステップS2)の処理手順を示すフローチャートである。なお、ここでは、電子カメラを右方向に回動させて撮影を行うことで得た複数のフレーム画像に対して画像合成処理を行う場合について説明する。つまり、各フレーム画像間では、時間を追うに従って、被写体画像が左方向に移動していくように見える複数のフレーム画像に対して画像合成処理を行う場合について説明する。
先ず、DRAM10から記憶された順序でフレーム画像を選択する(ステップS231)。つまり、フレーム画像を撮影された順に従って選択する。
次に、この選択したフレーム画像の特徴量を算出する(ステップS232)。この特徴量の算出に際しては、図5(A)に示すように、ステップS231で選択した今フレーム画像Xの中央付近(中央領域)に設定された複数のブロックを注目画像とする。この複数のブロックにおいて各々特徴量を算出し、特徴量が所定値以上となっているブロックを抽出する。この特徴量の算出においては、演算式としてHARRIS演算子を用いる。つまり、例えば当該ブロック内における各微小領域間の輝度変化パターン(高周波成分)を示す変数を特徴量として用いる。
次に、この抽出したブロック毎に、当該ブロックに対応する特徴量を有するブロックを図5(B)に示す次フレーム(後フレーム)画像X+1内にて探索する(ステップS233)。つまり、今フレームから抽出したブロック毎に、当該ブロックとしての注目画像に対応する画像領域を次フレーム(後フレーム)画像X+1内にて探索する。ここで、次フレーム(後フレーム)画像X+1は、今フレーム画像Xの次に記憶された(撮影された)フレーム画像である。そして、今フレーム画像Xと次フレーム画像X+1において、各共通の特徴量を有する対応するブロック毎にそれぞれの移動ベクトル(X軸成分、Y軸成分)を検出する。さらに、この検出した各移動ベクトルの例えば平均値を算出することにより、フレーム全体の移動ベクトルを算出する(ステップS234)。つまり、今フレーム画像Xから次フレーム画像X+1への被写体画像の移動ベクトルとして算出する。
次に、抽出する部分画像の幅である抽出幅を設定する(ステップS235)。この抽出幅の設定は、前記フレーム全体の移動ベクトルから予め設定されている移動方向成分を抽出し、この抽出した移動方向成分に基づいて、図6(C)に示す内蔵フラッシュメモリ11に予め記憶されている変換テーブル112から読み出すことで行われる。
本実施の形態の場合、左右方向のパノラマ合成画像を生成するものとし、前記フレーム全体の移動ベクトルから左右方向成分(X軸方向成分)、つまり、例えば被写体画像の左方向への移動量を抽出し、この移動量に対応する抽出幅Wを読み出すことにより行う。
引き続き、今フレーム画像Xの所定の中心線を基準として、今フレーム画像Xから前記抽出幅で画像を抽出する(ステップS236)。すなわち、図6(B)に示すように、先ずフレームの中心点を通る直線であって、前記抽出された移動方向成分と直交する方向(ここではY軸方向)に走る中心線Cを今フレーム画像X上に設定する。そして、今フレーム画像Xにおいて前記中心線Cから、移動ベクトルとは逆方向である電子カメラ1の回動方向(ここでは右方向)に前記抽出幅W分の画像の部分画像XPを抽出する。つまり、今フレーム画像から部分画像を抽出する場合には、中心線Cを基準として、移動ベクトルとは逆方向(電子カメラ1の回動方向)に部分画像XPを抽出する。
しかる後に、図6(A)に示すように、この抽出した部分画像XPをこの時点までに合成されているパノラマ合成画像XSの移動ベクトルとは逆方向の後端部、つまり電子カメラ1の回動方向の後端部(ここでは右側)に結合させて合成する(ステップS237)。
引き続き、DRAM10に記憶された最後−1のフレーム画像まで以上の特徴量算出にかかる処理を行ったか否かを判断し(ステップS238)、最後−1までのフレーム画像に対しての処理が終了するまで、ステップS231からの処理を繰り返す。
このようなパノラマ画像合成を行うことにより、光学系により結像される画像において、両側の歪みがある部分が抽出されることなく、歪みのない中央部の画像部分を抽出して合成することができる。その結果、パノラマ合成画像XSを全域に亙って歪みのないものにすることができる。
また、各フレーム画像から基準となる同一の中心線Cから移動ベクトルの大きさに応じた抽出幅で抽出すれば、時間的に隣接するフレーム画像間において、抽出された前のフレーム画像からの抽出画像の終端縁と、次のフレーム画像からの抽出画像の始端縁とにおける画像を精度よく合致させることができる。したがって、時間的に隣接して撮影された画像を精度よく結合してパノラマ画像を合成することができる。
なお、ステップS237における画像合成において、パノラマ合成画像XSに抽出した部分画像XPの端部を結合合成する際の、上下方向の位置合わせは、移動ベクトルの上下方向成分に応じて部分画像XPを上下に移動調整することにより行う。したがって、ユーザが電子カメラ1を構えて右方向に回動させた場合であっても、当該電子カメラ1には不可避的に上下方向の振動が生ずるときには、パノラマ合成画像XSは図7(A)に示すように上下にずれた部分画像の結合体となる。
また、以上に説明したパノラマ合成画像XSの生成に際しては、DRAM10に記憶された複数のフレーム画像をコピーして用い、元のフレーム画像はそのままDRAM10に保存しておく。
そして、最後−1のフレーム画像までステップS231〜S237が実行されることによりステップS238の判断がYESとなると、以上の処理により合成されたパノラマ撮合成画像XSを表示装置6に表示させる(ステップS239)。ユーザは、この表示装置6に表示されたパノラマ合成画像を目視して、パノラマ画像中の中心人物等のユーザが意図した主要被写体上に継ぎ目が形成されていないか否かを確認する。主要被写体上に継ぎ目が形成されていない場合には、後述する指定操作を行わなくてもよい。
この指定操作を行わない場合には、ステップS240の判断がNOとなり、ステップS241〜S244の処理を実行することなくステップS245に進み切り出し・記憶処理を実行する。この切り出し・記憶処理においては、図7(A)に示すように、最後のステップS237の処理までに結合合成されたパノラマ合成画像XS(後述するステップS244の処理が行われた場合には、当該処理が行われたパノラマ合成画像XS(図7(B))から、結合方向に沿った所定幅の画像部分を切り出し、この切り出した画像部分を最終的なパノラマ合成画像XE1として、メモリ・カード13に記録する。
つまり、前述のように、ユーザが電子カメラ1を構えて右方向に回動させた場合であっても、当該電子カメラ1には不可避的に上下方向の振動が生ずることから、パノラマ合成画像XSは図7(A)に示すように上下にずれた部分画像の結合体となる。したがって、結合方向に沿った所定幅の画像部分を切り出し、この切り出した画像部分を最終的なパノラマ合成画像XE1として、メモリ・カード13に記録することにより、周部に凹凸のないパノラマ合成画像XE1を記録保存することができる。
他方、前記ステップS238で表示装置6に表示されたパノラマ合成画像を目視して、パノラマ画像中の中心人物等のユーザが意図した主要被写体上に継ぎ目が形成されていた場合や、主要被写体が撮影されたフレーム画像全体をパノラマ撮影画像に含めたい場合には、ユーザはキー入力部7に設けられている十字キー等を操作して、表示装置6に表示されているカーソル等により、(継ぎ目を避けて)主要被写体を指定する。すると、ステップS240の判断がYESとなる。
したがって、ステップS240からステップS241に進み、パノラマ画像中の指定された画像部分を含む部分画像XPに対応するフレーム画像をDRAM10に保存されている複数のフレーム画像から選択する(ステップS41)。このとき、図6(A)(B)において説明したように、パノラマ合成画像XSを構成する部分画像XPは、中心線Cから抽出された部分であることから、中心線C付近、つまりフレーム画像のほぼ中央部に指定された主要被写体が存在するフレーム画像を選択することができる。
次に、このステップS241で選択された選択フレーム画像の特徴量を抽出する(ステップS242)。この特徴量の算出に際しては、前述したステップS232の処理と同様、図5(A)に示すように、選択フレーム画像XFの中央付近(中央領域)に設定された複数のブロックを注目画像とする。この複数のブロックにおいて各々特徴量を算出し、特徴量が所定以上であるブロックを抽出する。この特徴量の算出においては、演算式としてHARRIS演算子を用いる。
引き続き、この算出した特徴量が所定以上である各ブロックと、共通の特徴量を有するブロックを、ステップS238がYESとなるまで合成された合成画像内にて探索する(ステップS243)。そして、このステップS243で探索した合成画像内の共通の特徴量を有するブロックと、前記ステップS242で各々特徴量を算出したブロックとが合致するように、選択フレーム画像を合成済み画像に上書きする(ステップS244)。これにより、図7(B)に示すように、選択フレーム画像XFがパノラマ合成画像XS上に上書きされる。そして、前述したステップS245での処理より、図7(B)に示すように、ステップS242の処理が行われたパノラマ合成画像XSから、結合方向に沿った所定幅の画像部分を切り出し、この切り出した画像部分が最終的なパノラマ合成画像XE2として、メモリ・カード13に記録されることとなる。
したがって、本実施の形態によれば、パノラマ撮影を終了した後に時間的余裕を持ってフレーム画像を選択することができることから、より確実に、ユーザが意図する部分に画像合成による継ぎ目を生じさせることなくパノラマ画像合成した画像を得ることができる。
また、前述のように、中心線Cを基準として部分画像XPを抽出して合成する短冊合成を行うと、光学系により結像される画像において、両側の歪みがある部分が抽出されることなく、歪みのない中央部の画像部分を抽出して合成することができる。しかし、その反面、パノラマ撮合成画像には複数の継ぎ目が不可避的に形成されてしまう。しかるに、本実施の形態によれば、パノラマ合成画像XS2には選択フレーム画像XFが分断されることなく含まれことから、継ぎ目を減少させることができる。
よって、選択フレーム画像XFを除く部分については、短冊合成によりパノラマ合成画像を歪みのないものにしつつ、ユーザが意図する部分については継ぎ目のないパノラマ合成画像を得ることができる。
(第4の実施の形態)
図11は、本発明の第4の実施形態における前記画像合成処理(ステップS2)の処理手順を示すフローチャートである。なお、ここでは、例えば本発明の第3の実施形態で図9に基づいて説明したような、電子カメラを右方向に回動させて撮影を行うことで得た複数のフレーム画像に対して、画像合成処理を行う場合について説明する。つまり、各フレーム画像間では、時間を追うに従って、被写体画像が左方向に移動していくように見える複数のフレーム画像に対して画像合成処理を行う場合について説明する。
先ず、DRAM10から記憶された順序でフレーム画像を選択する(ステップS251)。つまり、フレーム画像を撮影された順に従って選択する。
次に、この選択したフレーム画像の特徴量を算出する(ステップS252)。この特徴量の算出に際しては、図5(A)に示すように、ステップS251で選択した今フレーム画像Xの中央付近(中央領域)に設定された複数のブロックを注目画像とする。この複数のブロックにおいて各々特徴量を算出し、特徴量が所定値以上となっているブロックを抽出する。この特徴量の算出においては、演算式としてHARRIS演算子を用いる。つまり、例えば当該ブロック内における各微小領域間の輝度変化パターン(高周波成分)を示す変数を特徴量として用いる。
次に、この抽出したブロック毎に、当該ブロックに対応した特徴量を有するブロックを図5(B)に示す次フレーム(後フレーム)画像X+1内にて探索する(ステップS253)。つまり、今フレームから抽出したブロック毎に、当該ブロックとしての注目画像に対応する画像領域を次フレーム(後フレーム)画像X+1内にて探索する。ここで、次フレーム(後フレーム)画像X+1は、今フレーム画像Xの次に記憶された(撮影された)フレーム画像である。そして、今フレーム画像Xと次フレーム画像X+1において、各共通の特徴量を有する対応するブロック毎にそれぞれの移動ベクトル(X軸成分、Y軸成分)を検出する。さらに、この検出した各移動ベクトルの例えば平均値を算出することにより、フレーム全体の移動ベクトルを算出する(ステップS254)。つまり、今フレーム画像Xから次フレーム画像X+1への被写体画像の移動ベクトルとして算出する。
次に、抽出する部分画像の幅である抽出幅を設定する(ステップS255)。この抽出幅の設定は、前記フレーム全体の移動ベクトルから予め設定されている移動方向成分を抽出し、この抽出した移動方向成分に基づいて、図6(C)に示す内蔵フラッシュメモリ11に予め記憶されている変換テーブル112から読み出すことで行われる。
本実施の形態の場合、左右方向のパノラマ合成画像を生成するものとし、前記フレーム全体の移動ベクトルから左右方向成分(X軸方向成分)、つまり、例えば被写体画像の左方向への移動量を抽出し、この移動量に対応する抽出幅Wを読み出すことにより行う。
引き続き、今フレーム画像Xの所定の中心線を基準として、今フレーム画像Xから前記抽出幅で画像を抽出する(ステップS256)。すなわち、図6(B)に示すように、先ずフレームの中心点を通る直線であって、前記抽出された移動方向成分と直交する方向(ここではY軸方向)に走る中心線Cを今フレーム画像X上に設定する。そして、今フレーム画像Xにおいて前記中心線Cから、移動ベクトルとは逆方向である電子カメラ1の回動方向(ここでは右方向)に前記抽出幅W分の画像の部分画像XPを抽出する。つまり、今フレーム画像から部分画像を抽出する場合には、中心線Cを基準として、移動ベクトルとは逆方向(電子カメラ1の回動方向)に部分画像XPを抽出する。
しかる後に、図6(A)に示すように、この抽出した部分画像XPをこの時点までに合成されているパノラマ合成画像XSの移動ベクトルとは逆方向の後端部、つまり電子カメラ1の回動方向の後端部(ここでは右側)に結合させて合成する(ステップS257)。
引き続き、DRAM10に記憶された最後−1のフレーム画像まで以上の特徴量算出にかかる処理を行ったか否かを判断し(ステップS258)、最後−1までのフレーム画像に対しての処理が終了するまで、ステップS251からの処理を繰り返す。
このようなパノラマ画像合成を行うことにより、光学系により結像される画像において、両側の歪みがある部分が抽出されることなく、歪みのない中央部の画像部分を抽出して合成することができる。その結果、パノラマ合成画像XSを全域に亙って歪みのないものにすることができる。
また、各フレーム画像から基準となる同一の中心線Cから移動ベクトルの大きさに応じた抽出幅で抽出すれば、時間的に隣接するフレーム画像間において、抽出された前のフレーム画像からの抽出画像の終端縁と、次のフレーム画像からの抽出画像の始端縁とにおける画像を精度よく合致させることができる。したがって、時間的に隣接して撮影された画像を精度よく結合してパノラマ画像を合成することができる。
なお、ステップS257における画像合成において、パノラマ合成画像XSに抽出した部分画像XPの端部を結合合成する際の、上下方向の位置合わせは、移動ベクトルの上下方向成分に応じて部分画像XPを上下に移動調整することにより行う。したがって、ユーザが電子カメラ1を構えて右方向に回動させた場合であっても、当該電子カメラ1には不可避的に上下方向の振動が生ずるときには、パノラマ合成画像XSは図7(A)に示すように上下にずれた部分画像の結合体となる。
また、以上に説明したパノラマ合成画像XSの生成に際しては、DRAM10に記憶された複数のフレーム画像をコピーして用い、元のフレーム画像はそのままDRAM10に保存しておく。
そして、最後−1のフレーム画像までステップS251〜S257が実行されることによりステップS258の判断がYESとなると、以上の処理により合成されたパノラマ撮合成画像XSを表示装置6に表示させる(ステップS259)。ユーザは、この表示装置6に表示されたパノラマ合成画像を目視して、パノラマ画像中の中心人物等のユーザが意図した主要被写体上に継ぎ目が形成されていないか否かを確認する。主要被写体上に継ぎ目が形成されていない場合には、後述する指定操作を行わなくてもよい。
この指定操作を行わない場合には、ステップS260の判断がNOとなり、ステップS261及びS262の処理を実行することなくステップS263に進み切り出し・記憶処理を実行する。この切り出し・記憶処理においては、図7(A)に示すように、最後のステップS257の処理までに結合合成されたパノラマ合成画像XS(後述するステップS262の処理が行われた場合には、当該処理が行われたパノラマ合成画像XS(図7(B))から、結合方向に沿った所定幅の画像部分を切り出し、この切り出した画像部分を最終的なパノラマ合成画像XE1として、メモリ・カード13に記録する。
つまり、前述のように、ユーザが電子カメラ1を構えて右方向に回動させた場合であっても、当該電子カメラ1には不可避的に上下方向の振動が生ずることから、パノラマ合成画像XSは図7(A)に示すように上下にずれた部分画像の結合体となる。したがって、結合方向に沿った所定幅の画像部分を切り出し、この切り出した画像部分を最終的なパノラマ合成画像XE1として、メモリ・カード13に記録することにより、周部に凹凸のないパノラマ合成画像XE1を記録保存することができる。
他方、前記ステップS258で表示装置6に表示されたパノラマ合成画像を目視して、パノラマ画像中の中心人物等のユーザが意図した主要被写体上に継ぎ目が形成されていた場合や、主要被写体が撮影されたフレーム画像全体をパノラマ撮影画像に含めたい場合には、ユーザはキー入力部7に設けられている十字キー等を操作して、表示装置6に表示されているカーソル等により、(継ぎ目を避けて)主要被写体を指定する。すると、ステップS260の判断がYESとなる。
したがって、ステップS260からステップS261に進み、指定された画像部分を含む部分画像を抽出したフレーム画像をDRAM10に保存されている複数のフレーム画像から選択する(ステップS261)。つまりパノラマ合成画像XSは、各フレーム画像から抽出した部分画像の結合画像であるから、指定された画像部分を含む部分画像はいずれかのフレーム画像から抽出したものである。したがって、指定された画像部分を含む部分画像を抽出した抽出した元となったフレーム画像をDRAM10に保存されている複数のフレーム画像から選択する。よって、図7(A)に示す部分画像XPが指定された画像部分を含む部分画像であるとすると、図7(B)に示す部分画像XPを抽出した元のフレーム画像XFが選択フレーム画像として選択されることとなる。
次に、このステップS261で選択された選択フレーム画像をパノラマ合成画像XSの前記指定された画像部分を含む部分画像に合致させて上書きする。つまり、図7(A)に示すパノラマ合成画像XS中の部分画像XPと、図7(B)に示す選択フレーム画像XPが有する当該部分画像XPとを合致させて、選択フレーム画像XPをパノラマ合成画像XSに上書きする。
そして、前述したステップS263での処理より、図7(B)に示すように、ステップS262の処理が行われたパノラマ合成画像XSから、結合方向に沿った所定幅の画像部分を切り出し、この切り出した画像部分が最終的なパノラマ合成画像XE2として、メモリ・カード13に記録する。
したがって、本実施の形態によれば、前述した第3の実施の形態のように、特徴量を算出したり、共通の特徴量を有するブロックを合成画像内にて探索する処理を実行することなく簡単な処理により、選択フレーム画像XPを精度よく合致させてパノラマ合成画像XS上に上書きすることができる。
無論、第3の実施の形態と同様に、パノラマ撮影を終了した後に時間的余裕を持ってフレーム画像を選択することができることから、より確実に、ユーザが意図する部分に画像合成による継ぎ目を生じさせることなくパノラマ画像合成した画像を得ることができる。
また、前述のように、中心線Cを基準として部分画像XPを抽出して合成する短冊合成を行うと、光学系により結像される画像において、両側の歪みがある部分が抽出されることなく、歪みのない中央部の画像部分を抽出して合成することができる。しかし、その反面、パノラマ撮合成画像には複数の継ぎ目が不可避的に形成されてしまう。しかるに、本実施の形態によれば、パノラマ合成画像XS2には選択フレーム画像XFが分断されることなく含まれことから、継ぎ目を減少させることができる。
よって、選択フレーム画像XFを除く部分については、短冊合成によりパノラマ合成画像を歪みのないものにしつつ、ユーザが意図する部分については継ぎ目のないパノラマ合成画像を得ることができる。
なお、各実施の形態においては、フレームの中心点を通る直線である中心線Cを基準に合成する部分画像の抽出を行うようにしたが、基準線は中心線Cに限ることなく、中心部付近であれば、側部に若干ずれた位置であってもよい。特に、ユーザに電子カメラを回動させる方向を予め定めていて、更に、上述したように、今フレーム画像における特徴量を用いて次フレーム内を探索した移動ベクトルに基づいて今フレーム画像内から部分画像を抽出するような場合には、基準線は、電子カメラの回動方向とは逆方向にずれた位置に予め設定しておくことが好ましい。つまり、今フレーム画像から部分画像を抽出する場合には、中心線Cを基準として、移動ベクトルとは逆方向(電子カメラ1の回動方向)に部分画像XPを抽出するため、基準線を電子カメラの回動方向とは逆方向にずれた位置に予め設定しておけば、フレーム画像の中心領域を部分画像に含むように抽出することができる。
なお、ユーザに電子カメラを回動させる方向は、ユーザがキー入力部7により予め任意に設定できる構成としていてもよい。
また、本実施の形態においては、今フレーム画像Xから合成する部分画像の抽出を行うようにしたが、次フレーム画像X+1から前記抽出幅で抽出してもよい。なお、次フレーム画像X+1から前記抽出幅で抽出する場合には、次フレーム画像X+1の所定の中心線を基準として、次フレーム画像X+1から前記抽出幅で画像を抽出するが、このとき、次フレーム画像X+1において前記中心線Cから、移動ベクトルの方向、即ち、電子カメラ1の回動方向とは逆方向(ここでは左方向)に前記抽出幅W分の画像の部分画像XPを抽出する。そして、特に、ユーザに電子カメラを回動させる方向を予め定めている場合には、基準線は、電子カメラの回動方向にずれた位置に予め設定しておくことが好ましい。つまり、次フレーム画像から部分画像を抽出する場合には、中心線Cを基準として、移動ベクトルの方向(電子カメラ1の回動方向とは逆方向)に部分画像XPを抽出するため、基準線を電子カメラの回動方向にずれた位置に予め設定しておけば、フレーム画像の中心領域を部分画像に含むように抽出することができる。なお、ユーザに電子カメラを回動させる方向は、ユーザがキー入力部7により予め任意に設定できる構成としていてもよい。
また、上述の各実施の形態においては、左右方向のパノラマ合成画像を生成するものとして説明したが、上下方向のパノラマ合成画像を生成する場合にも適用できる。
また、各実施の形態においては、図4及び図10のフローチャートに示したように、DRAM10に記憶された最初のフレーム画像から合成対象として画像合成処理を開始するようにした。しかし、画像合成処理の冒頭において特徴量の算出及び移動ベクトルの算出を実行し、所定以上の移動ベクトルが最初に算出されたことを条件として、ステップS201以降の処理、あるいはステップS251以降の処理を実行するようにしてもよい。
これにより、ユーザが電子カメラ1を回動させたか否か、つまりユーザがパノラマ撮影を開始する意図を持って電子カメラ1を回動し始めたか検出することができる。よって、ユーザがパノラマ撮影を開始する意図を持って電子カメラ1を回動し始める前の不要な画像を用いてパノラマ画像合成処理等が実行される不都合を未然に防止することができる。
なお、このとき、検出された所定以上の移動ベクトルの方向に基づいて、電子カメラの回動方向が、上下左右方向の何れであるかを検出し、この検出された電子カメラの回動方向に応じたパノラマ合成画像の生成処理を行う構成としてもよい。つまり、例えば、電子カメラの回動方向が左方向または右方向であったときには、左右方向のパノラマ合成画像を生成し、上方向または下方向であったときには、上下方向のパノラマ合成画像を生成する構成としてもよい。
また、各実施の形態においては、図4及び図10のフローチャートに示したように、最後−1のフレーム画像を選択した時点で画像合成処理を終了するようした。しかし、前記最初に算出された移動ベクトルを記憶しておき、この移動ベクトルとは異なる方向(例えば、反対方向)の移動ベクトルが検出された時点で、画像合成処理を終了するようにしてもよい。
これにより、前記ステップS106で説明したパノラマ撮影終了キーの操作や、前記ステップS134で説明したシャッターキーの操作を解除せずとも、パノラマ撮影を行うべく回動させた電子カメラ1を当該回動方向とは異なる方向に回動させる簡単な操作により、実質的にパノラマ撮影を終了させることができる。
さらに、各実施の形態においては、撮影処理を実行してDRAMに複数のフレーム画像を記憶させた後、画像合成処理を実行するようにしたが、撮影処理によりフレーム画像が取得される都度、順次画像合成処理を実行し、しかる後に選択フレーム画像の上書きを行うようにしてもよい。