説明

画像処理装置、画像処理方法、プログラム

【課題】パノラマ合成の品質を落とさずに、処理過程で保存する画像データ量を削減し、必要なメモリ容量を低減できるようにする。
【解決手段】パノラマ画像生成に用いる一連のn個のフレーム画像データの入力過程で、つなぎ目(シーム)を順次確定させていく。このときに、(m+1)個(但しm<n)のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各つなぎ目の位置を、各フレームの被写体情報を用いた最適位置判定処理によって求め、m個以下のつなぎ目を確定させる。この確定したつなぎ目に基づいてフレーム画像データを合成する。

【発明の詳細な説明】
【技術分野】
【0001】
本開示はパノラマ画像生成のための画像処理装置、画像処理方法、及びそれらを実現するプログラムに関する。
【先行技術文献】
【特許文献】
【0002】
【特許文献1】特開2010−161520号公報
【背景技術】
【0003】
上記特許文献1に示されるように、複数枚の画像から1枚のパノラマ画像を生成する画像処理が知られている。
【0004】
複数枚の撮像画像(複数のフレーム画像データ)を合成してパノラマ画像を生成する処理において、撮像シーンに動被写体が存在すると、動被写体の一部が分断されたり、ぼやけるなどの画像の破綻や画質の低下の原因となる。
そのため従来より動被写体を検出した上で、動被写体を避けて、パノラマ画像を形成するためのつなぎ目(シーム)を決定するなどの手法が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
特定の被写体を避けてシームを決定し、各画像を合成する場合、以下のような問題があった。
パノラマ画像全体として最適なつなぎ目を決定するためには、合成する全画像フレームの情報(位置、画素、動被写体、顔検出などの少なくとも1つ)を参照して、つなぎ目を決定することとなる。このため、全画像フレームに対しての処理(撮像、位置合わせ、各種検出処理等)が終了するまではつなぎ目を決定する処理が開始できない。
【0006】
これは撮像装置内でパノラマ合成を行うシステムにおいては、最終撮像画像についての処理が完了するまで、全画像の画素情報を含めた全情報を保存しておかなければならないことを意味する。
一般的にパノラマ合成時には広範囲の重なり領域を持った、多数の静止画像を合成するため、撮像画像のデータ量は、最終的なパノラマ画像のデータ量の数倍〜数10倍にも達する。
従って特にメモリ容量の制約が厳しい組み込み機器にとっては、パノラマ画質の低下や、パノラマ画角の狭小化を引き起こす要因となる。
例えば撮像画像の解像度を下げたり、撮像画像枚数を減らすなどの対応をしなければパノラマ画像の生成が実現不可能な場合も多く、高解像度、高画質、広画角のパノラマ画像を生成することが困難であった。
また全画像の撮像終了までシーム決定が開始できないということは、同時にパノラマ合成時間の増大を引き起こしていた。
【0007】
本開示では、このような問題に鑑みて、パノラマ画像生成において、動被写体を避けたつなぎ目での合成を行う処理を、低メモリ容量で、かつ短い処理時間で実現することを目的とする。
【課題を解決するための手段】
【0008】
本開示の画像処理装置は、パノラマ画像生成に用いる一連のn個のフレーム画像データの入力過程で、フレーム画像データについての被写体情報を検出する被写体情報検出部と、(m+1)個(但しm<n)のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、m個以下のつなぎ目を確定させる処理を、上記入力過程で順次行うシーム確定処理部とを備える。
またさらに、上記シーム確定処理部で確定されたつなぎ目に基づいて、各フレーム画像データを合成していくことで、上記n個のフレーム画像データを用いたパノラマ画像データを生成する画像合成部を備えるようにしても良い。
【0009】
本開示の画像処理方法は、フレーム画像データについての被写体情報を検出する処理と、(m+1)個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、m個以下のつなぎ目を確定させる処理とを、パノラマ画像生成に用いる一連のn個(但しm<n)のフレーム画像データの入力過程において順次行う。
【0010】
本開示のプログラムは、フレーム画像データについての被写体情報を検出する処理と、(m+1)個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、m個以下のつなぎ目を確定させる処理とを、パノラマ画像生成に用いる一連のn個(但しm<n)のフレーム画像データの入力過程において演算処理装置に順次実行させるプログラムである。
【0011】
これらの本開示の技術によれば、n個のフレーム画像データを合成してパノラマ画像を生成する際に、そのn個のフレーム画像データの入力過程で、順次つなぎ目(シーム)を確定させていく。即ち(m+1)個のフレーム画像データ群毎に、その(m+1)個のフレーム画像データの各隣接画像間でのm個のシームについて総合的に最適なつなぎ目位置を求める。そして、m個以下のつなぎ目(少なくとも1つ以上のつなぎ目)を確定させる。この処理をフレーム画像データの入力過程で繰り返し行って、各シームを確定させていく。
このようにすれば、n個の全てのフレーム画像データの入力が完了する前にシーム確定処理を順次進めていくことができる。さらに、シーム確定がされたフレーム画像データでは、すでにパノラマ合成に使用しない画像部分が確定することになるため、記憶しておく画像容量を削減できる。
さらに、(m+1)個のフレーム画像データ群で、各シームを求めることで、その複数のフレーム画像データの全体を考慮したシーム確定がなされる。
【発明の効果】
【0012】
本開示の技術によれば、パノラマ画像生成において、動被写体を避けたつなぎ目での合成を行う処理を、低メモリ容量で、かつ短い処理時間で実現できる。また(m+1)個のフレーム画像データ群で、その複数のフレーム画像データの全体を考慮して最適なシームを求めていくため、確定されるシームがより適切な位置となる。
【図面の簡単な説明】
【0013】
【図1】本開示の実施の形態の撮像装置のブロック図である。
【図2】パノラマ撮像で得られる画像群の説明図である。
【図3】パノラマ撮像のフレーム画像データにおけるシームの説明図である。
【図4】パノラマ画像の説明図である。
【図5】実施の形態のパノラマ合成処理の説明図である。
【図6】実施の形態のコスト関数の説明図である。
【図7】実施の形態のコスト関数への空間的条件の反映の説明図である。
【図8】実施の形態のフレーム間のコスト関数の関係の説明図である。
【図9】実施の形態のパノラマ合成処理例Iのフローチャートである。
【図10】実施の形態のシーム前後のブレンド処理の説明図である。
【図11】実施の形態の入力過程でのシーム確定の説明図である。
【図12】実施の形態のシーム確定後の保存領域の説明図である。
【図13】実施の形態のフレーム順序に応じたつなぎ目設定範囲の説明図である。
【図14】実施の形態のパノラマ合成処理例IIのフローチャートである。
【図15】実施の形態のパノラマ合成処理例IIIのフローチャートである。
【発明を実施するための形態】
【0014】
以下、実施の形態を次の順序で説明する。なお実施の形態では、本開示の画像処理装置を搭載した撮像装置の例を挙げる。

<1.撮像装置の構成>
<2.パノラマ合成機能の概要>
<3.実施の形態のパノラマ合成アルゴリズム>
<4.パノラマ合成処理例I>
<5.パノラマ合成処理例II>
<6.パノラマ合成処理例III>
<7.プログラム>
<8.変形例>
【0015】
<1.撮像装置の構成>

図1は撮像装置1の構成例を示している。
撮像装置1はレンズユニット100、撮像素子101、画像処理部102、制御部103、表示部104、メモリ部105、記録デバイス106、操作部107、センサー部108を備える。
【0016】
レンズユニット100は、被写体の光画像を集光する。レンズユニット100は制御部103からの指示に従い、適切な画像を得られるように、焦点距離、被写体距離、絞りなどを調整する機構を持つ。
撮像素子101は、レンズユニット100で集光された光画像を光電変換して電気信号に変換する。具体的には、CCD(Charge Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどにより実現される。
【0017】
画像処理部102は、撮像素子101からの電気信号をサンプリングするサンプリング回路、アナログ信号をデジタル信号に変換するA/D変換回路、デジタル信号に所定の画像処理を施す画像処理回路などから構成される。ここでは、この画像処理部102は、撮像素子101での撮像によるフレーム画像データを得る処理を行うとともに、後述するパノラマ画像を合成する処理も行うものとして示している。
この画像処理部102は、専用のハードウェア回路のみではなく、CPU(Central Processing Unit)やDSP(Digital Signal Processor)を備え、柔軟な画像処理に対応するためにソフトウェア処理を行うことができる。
【0018】
制御部103は、CPU及び制御プログラムからなり、撮像装置1の各部の制御を行う。制御プログラム自体は実際にはメモリ部105に格納され、CPUによって実行される。
本実施の形態のパノラマ画像を合成する処理(後述するパノラマ合成処理I、II、III等)は、制御部103と画像処理部102によって実行される。その処理の詳細については後述する。
【0019】
表示部104は、画像処理部102によって処理された、メモリ部105に格納されている画像データをアナログ化するD/A変換回路と、アナログ化された画像信号を後段の表装置に適合する形式のビデオ信号にエンコードするビデオエンコーダと、入力されるビデオ信号に対応する画像を表示する表示装置とから構成される。
表示装置は、例えば、LCD(Liquid Crystal Display)や有機EL(Electroluminescence)パネル等により実現され、ファインダとしての機能も有する。
【0020】
メモリ部105は、DRAM(Dynamic Random Access Memory)などの半導体メモリから構成され、画像処理部102で処理された画像データ、制御部103における制御プログラム及び各種データなどが一時記録される。
【0021】
記録デバイス106は、フラッシュメモリ(Flash Memory)メモリなどの半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクなどの記録媒体と、それらの記録媒体に対する記録再生系回路・機構により構成される。
撮像装置1による撮像時には、画像処理部102でJPEG(Joint Photographic Experts Group)形式にエンコードされ、メモリ部105に格納されたJPEG画像データを記録メディアに記録する。
再生時には、記録メディアに保存されたJPEG画像データをメモリ部105に読み込み、画像処理部102でデコード処理を行う。デコードされた画像データは、表示部104で表示させたり、或いは図示しない外部インターフェースにより外部機器に出力することも可能である。
【0022】
操作部107は、シャッターボタンなどのハードウェアキー、操作ダイアル、タッチパネルなどの入力デバイスを備え、撮像者(ユーザ)の入力操作を検出し、制御部103に伝達する。制御部103はユーザの入力操作に応じて撮像装置1の動作を決定し、各部が必要な動作を行うように制御する。
センサー部108は、ジャイロセンサー、加速度センサー、地磁気センサー、GPS(Global Positioning System)センサーなどで構成され、各種情報の検出を行う。これらの情報は、撮像された画像データに対して、メタデータとして付加されるほか、各種画像処理、制御処理にも利用される。
【0023】
画像処理部102、制御部103、表示部104、メモリ部105、記録デバイス106、操作部107、及びセンサー部108は、バス109を介して相互に接続され、画像データや制御信号等がやりとりされる。
【0024】
<2.パノラマ合成機能の概要>

次に、撮像装置1が備えるパノラマ合成機能についての概要を説明する。
本実施の形態の撮像装置1は、撮像者がある回転軸で撮像装置1を回転運動させながら撮像して得られた複数枚の静止画像(フレーム画像データ)に対し、合成処理を行うことによってパノラマ画像を生成することができる。
【0025】
図2Aは、パノラマ撮像時の撮像装置1の動きを示したものである。パノラマ撮像時には遠景、近景の視差が合成時のつなぎ目の不自然さを生じさせるため、撮像時の回転中心は、ノーダルポイント(Nodal Point)と呼ばれる視差を生じないレンズ固有の点を回転中心にすることが望ましい。
パノラマ撮像時の撮像装置1の回転運動のことを「スイープ」と呼ぶことにする。
【0026】
図2Aは、撮像装置1のスイープによって得られた複数枚の静止画像に対して、適切に位置合わせを行ったときの概念図である。撮像で得られる各静止画像を、撮像の時間的な順序で、時刻0〜時刻(n−1)までに撮像されたフレーム画像データを、フレーム画像データFM#0、FM#1・・・FM#(n−1)として示す。n枚の静止画像からパノラマ画像を生成する場合は、図示するように連続して撮像された一連のn個のフレーム画像データFM#0〜FM#(n−1)について合成処理を行うこととなる。
【0027】
この図2Aに示すように、撮像された各フレーム画像データは隣接するフレーム画像データと必ず重なり部分を持つ必要があるので、撮像装置1の各フレーム画像データの撮像時間間隔と、撮像者がスイープする速度の上限値は適切に設定しなければならない。
そして、このように位置合わせされたフレーム画像データ群は多くの重なり部分を持つため、各フレーム画像データに対して最終的なパノラマ画像に使用する領域を決定する必要がある。これは言い換えると、パノラマ合成処理における画像の接合部分(シーム:seam)を決めていることと同一である。
【0028】
図3A、図3Bでは、シームSMの例を示している。
シームには、図3Aに示すようにスイープ方向に垂直な直線や、図3Bに示すように非直線(曲線など)とすることができる。
この図3A、図3Bにおいて、シームSM0はフレーム画像データFM#0,FM#1間のつなぎ目、シームSM1はフレーム画像データFM#1,FM#2間のつなぎ目、・・・シームSM(n−2)はフレーム画像データFM#(n−2),FM#(n−1)間のつなぎ目として示している。
なお、これらシームSM0〜SM(n−2)が合成時の隣接画像間のつなぎ目とされることで、各フレーム画像データにおいて斜線部とした部分は、最終的なパノラマ画像に使用されない画像領域となる。
【0029】
また、パノラマ合成を行う際には、シーム付近の画像の不自然さを低減することを目的とし、シーム前後の画像領域についてブレンド処理することも行われる場合もある。ブレンド処理については図9で後述する。
そして、各フレーム画像データの共通部分を広範囲にブレンド処理することによって接合させる場合や、パノラマ画像に寄与する画素を共通部分から画素毎に選択する場合もあり、これらの場合には、つなぎ目は明確には存在しないが、本明細書においてはこの広範囲な接合部分もシームとして同一視するものとする。
【0030】
また図2Bに示したように、各フレーム画像データの位置合わせの結果、一般的にスイープ方向だけでなく、スイープと垂直な方向にも若干の移動が認められる。これは撮像者のスイープ時の手振れ等によって生じるズレである。
【0031】
各フレーム画像データのシームを決定し、その境界領域をブレンド処理することによって接合を行い、最終的に手振れ量を考慮してスイープと垂直な方向な不要な部分をトリミングすることによって、図4に示すような、スイープ方向を長辺方向とする、広画角のパノラマ画像を得ることができる。
図4では縦線がシームを示しており、n個のフレーム画像データFM#0〜FM#(n−1)がシームSM0〜SM(n−2)でそれぞれ接合されてパノラマ画像が生成されている状態を模式的に示している。
【0032】
<3.実施の形態のパノラマ合成アルゴリズム>

次に、本実施の形態の撮像装置1のパノラマ合成処理についての詳細を説明する。
図5はパノラマ合成処理のために画像処理部102及び制御部103において実行される処理を、機能構成として示し、それらの機能構成部位によって実行される処理を示している。
【0033】
機能構成としては、一点鎖線でそれぞれ示すように、被写体情報検出部20、シーム確定処理部、画像合成部22、パノラマ合成準備処理部23を備える。
【0034】
被写体情報検出部20は、パノラマ画像生成に用いる一連のn個のフレーム画像データの入力過程で、各フレーム画像データ毎に被写体情報を検出する。
この例では動被写体検出処理202、検出・認識処理203を行う。
【0035】
シーム確定処理部21は、(m+1)個(但しm<n)のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各シームの位置を、被写体情報検出部20で検出された被写体情報を用いた最適位置判定処理によって求め、m個以下のつなぎ目を確定させる処理(シーム確定処理205)を行う。このシーム確定処理205を、一連のn個のフレーム画像データの入力過程で順次行う。
【0036】
画像合成部22は、シーム確定処理部21で確定されたシームに基づいて、各フレーム画像データを合成していくことで、n個のフレーム画像データを用いたパノラマ画像データを生成するスティッチ処理206を行う。
【0037】
パノラマ合成準備処理部23は、パノラマ合成を精度良く行うために必要な準備処理として、例えば前処理200、画像レジストレーション処理201、再投影処理204を行う。
【0038】
本実施の形態の特徴的な動作を実現するには、被写体情報検出部20、シーム確定処理部21、画像合成部22を有することが必要となる。但し、画像合成部22の動作は、外部機器で行うようにしてもよく、この場合、本実施の形態の画像処理装置としては被写体情報検出部20、シーム確定処理部21を少なくとも備えることが必要となる。
【0039】
各処理について説明する。
前処理200の対象となる入力画像群とは、撮像者が撮像装置1でパノラマ撮像を実行しているときに順次得られるフレーム画像データFM#0、FM#1、FM#2・・・である。
まずパノラマ合成準備処理部23では、撮像者のパノラマ撮像操作によって撮像された画像(各フレーム画像データ)に対して(ここでの画像は通常の撮像時と同様の画像処理は行われているものとする)、パノラマ合成処理に対する前処理200を行う。
入力された画像はレンズユニット100の特性に基づく収差の影響を受けている。特にレンズの歪曲収差は、画像レジストレーション処理201に悪影響を与え、位置合わせの精度を低下させる。さらに合成されたパノラマ画像のシーム付近にアーティファクトも発生させるため、この前処理200において歪曲収差の補正を行う。歪曲収差の補正によって、動被写体検出処理202、検出・認識処理203の精度を向上させる効果もある。
【0040】
次にパノラマ合成準備処理部23は、前処理200を行ったフレーム画像データに対して、画像レジストレーション処理201を行う。
パノラマ合成時には複数のフレーム画像データを単一の座標系に座標変換する必要があるが、この単一の座標系をパノラマ座標系と呼ぶことにする。
画像レジストレーション処理201は、2枚の連続するフレーム画像データを入力し、パノラマ座標系での位置合わせを行う処理である。2枚のフレーム画像データについての画像レジストレーション処理201によって得られる情報は、あくまで2枚の画像座標間の相対関係であるが、複数枚の画像座標系のうち一つ(例えば最初のフレーム画像データの座標系)を選び、パノラマ座標系に固定することによって、すべてのフレーム画像データの座標系をパノラマ座標系に変換することができる。
【0041】
画像レジストレーション処理201で行う具体的な処理は、以下の二つに大別される。
1.画像内のローカルな動きを検出する。
2.上記で求めたローカルな動き情報から、画像全体のグローバルな動きを求める。
【0042】
上記1の処理では一般的に、
・ブロックマッチング
・Harris,Hessian,SIFT,SURF,FASTなどの特徴点抽出及び特徴点マッチング
などが用いられ、画像の特徴点のローカルベクトルを求める。
【0043】
上記2の処理では、上記1の処理で求められたローカルベクトル群を入力として、
・最小二乗法
・M−Estimator
・最小メジアン法(LMedS)
・RANSAC(RANdom SAmple Consensus)
などのロバスト推定手法が用いられ、2枚間の座標系の関係を記述する最適なアフィン変換行列や射影変換行列(Homography)を求める。本明細書では、これらの情報を画像レジストレーション情報と呼ぶことにする。
【0044】
またパノラマ合成準備処理部23は再投影処理204を行う。
再投影処理204では、画像レジストレーション処理201によって得られた画像レジストレーション情報に基づき、すべてのフレーム画像データを単一の平面、あるいは円筒面、球面などの単一の曲面に投影処理を行う。また同時に、動被写体情報、検出・認識情報についても同一平面もしくは曲面に投影処理を行う。
フレーム画像データの再投影処理204は、ピクセル処理の最適化を考慮して、スティッチ処理206の前段処理として、もしくはスティッチ処理206の一部として行ってもよい。また簡易的に画像レジストレーション処理201の前、例えば前処理200の一部として行ってもよい。またさらに簡略化して、処理そのものを行わず円筒投影処理の近似として扱ってもよい。
【0045】
被写体情報検出部20は、前処理200が行われた各フレーム画像データについて、動被写体検出処理202、検出・認識処理203を行う。
パノラマ合成処理は、複数枚のフレーム画像データを合成するという特性上、撮像シーンに動被写体が存在すると動被写体の一部が分断されたり、ぼやけるなどの画像の破綻や画質の低下の原因となる。そのため動被写体を検出した上で、動被写体を避けてパノラマのシームを決定することが好ましい。
【0046】
動被写体検出処理202では、2枚以上の連続するフレーム画像データを入力し、動被写体の検出を行う処理である。具体的な処理の例は、画像レジストレーション処理201によって得られた画像レジストレーション情報により、実際に位置合わせを行った2枚のフレーム画像データの画素の差分値がある閾値以上の場合に、その画素を動被写体と判定するものである。
あるいは、画像レジストレーション処理201のロバスト推定時に外れ値(アウトライア)として判断された、特徴点情報を利用して判定を行っても良い。
【0047】
検出・認識処理203では、撮像されたフレーム画像データ内の人間の顔や身体、動物などの位置情報を検出する。人間や動物は動被写体である可能性が高く、仮に動いていなかったとしても、その被写体上にパノラマのシームが決定された場合、他の物体と比べて視感上の違和感を感じることが多いので、これらの物体を避けてシームを決定することが好ましい。つまりこの検出・認識処理203で得られた情報は、動被写体検出処理202の情報を補うために利用される。
【0048】
シーム確定処理部21によるシーム確定処理205は、再投影処理204からの画像データ、画像レジストレーション処理201からの画像レジストレーション情報、動被写体検出処理202からの動被写体情報、検出・認識処理203からの検出・認識情報を入力とし、パノラマ画像として破綻の少ない、適切なシームを確定する処理である。
【0049】
ここでは、求めるシームは図3Aで示したような、スイープ方向に垂直な直線に限定した手法の説明を行う。
まず図6により、重なり領域におけるコスト関数の定義について説明する。
パノラマ座標系においてスイープ方向の座標軸をx軸、x軸と垂直な軸をy軸とする。そして図6Aのように、ak≦x≦bkの領域において時刻kに撮像したフレーム画像データFM#(k)と、時刻k+1に撮像したフレーム画像データFM#(k+1)が重なり合っているとする。
【0050】
この重なり領域(ak〜bk)における、動被写体検出処理202からの動被写体情報、検出・認識処理203からの検出・認識情報のそれぞれに対して適当な重みをつけ、x軸方向に射影した上で、全情報について積分したものをコスト関数fk (x)と定義する。 すなわち、
【数1】


但し、
・moi={0,1}:動被写体検出情報(0≦i≦Nmo−1)
・wmoi:動被写体検出情報に対する重み関数(0≦i≦Nmo−1)
・dstj={0,1}:検出・認識情報(0≦j≦Ndet−1)
・wdstj:検出・認識情報に対する重み関数(0≦j≦Ndet−1)
と定義する。
【0051】
コスト関数値が高いほど、そのライン上には動被写体や人体などの物体が多く存在することを意味する。前述の通り、パノラマ画像における破綻を最小限に抑えるためには、シームはこれらの物体を避けて決めるべきであるので、コスト関数値の低いx座標値をシームの位置とすればよい。
【0052】
動被写体検出処理202、検出・認識処理203は、通常数〜数十画素を一辺にもつブロック単位で行われるため、コスト関数fk (x)はxが整数値で定義された離散関数である。
動被写体検出情報に対する重み関数wmoiは、例えばその動被写体における動き量の大きさとすれば、動き量の大きい物体のある領域ほどシームになりにくくなる。
【0053】
図6Aにおいては、フレーム画像データFM#(k)、FM#(k+1)の重なり領域(ak〜bk)における、動被写体情報、検出・認識情報の該当画素ブロックを例示している。この場合、例えばx軸上のak≦x≦bkの範囲で上記(数1)のコスト関数fk (x)で求められるコスト値は例えば図6のようになる。
そして、コスト値の最も低いx座標値(xk)が、2つのフレーム画像データFM#(k)、FM#(k+1)間のシームとして適切な位置となる。
シーム確定処理205では、このようにコスト関数を用いて、シームとして適切なx座標値を算出する。
但し、ここでの説明はあくまでも2つのフレーム画像データ間のコスト関数でみた場合である。本実施の形態では、m個のシームの組み合わせを最適化するものであり、シーム確定処理205では、単にこのように2枚のフレーム画像データ間で、シームを確定させるものではない。詳しくは後に述べる。
【0054】
なお、検出・認識情報に対する重み関数wdstjは、例えば顔検出、人体検出など検出器の種別において変更したり、あるいは検出時の信頼性(スコア値)としたり、検出された座標によって変更するなどによって、コスト関数値を調整することが考えられる。
さらに動被写体検出処理202と検出・認識処理203の検出精度、信頼度が異なる場合、検出精度、信頼度が高い方の重み関数を、低い方の重み関数に比べて、相対的に高く設定することによって、検出精度、信頼度をコスト関数に反映することができる。
このようにシーム確定処理部21は、コスト関数fk (x)を、被写体情報の信頼度を反映する関数としてもよい。
【0055】
またシーム確定処理部21は、コスト関数を、画像の空間的条件を反映するコスト関数f’k (x)としてもよい。
即ち上記(数1)式では、動被写体情報、検出・認識情報のみからコスト関数fk (x)を定義したが、さらにこのコスト関数fk (x)に対して、g(x, fk (x))によって、新たなコスト関数f’k (x)を定義する。
【数2】

【0056】
この新たなコスト関数f’k (x)を使用することによって、動被写体情報、検出・認識情報だけでは表現できない、空間的なコスト値の調整を行うことができる。
一般的に、レンズの収差の影響で画像周辺部の画質は、中心部の画質よりも劣る傾向がある。そのため、画像周辺部をパノラマ画像になるべく使用しないようにしたい。このためには、シームを重なり領域の中央付近で決定すればよい。
そこで、例えば以下のようなg(x, fk (x))を用いて、コスト関数f’k (x)を定義すればよい。
【数3】

但しt0、t1は正の定数値である。
【0057】
空間的条件を反映するコスト関数f’k (x)を図7で模式的に説明する。
図7Aは、重なり領域(ak〜bk)において、上記(数1)のコスト関数fk (x)で与えられるコスト値を示している。図6Bではコスト値を曲線で示したが、コスト関数fk (x)はxが整数値で定義された離散関数であることから、実際には図7Aのように棒グラフ状となる。
この場合、図中のx座標値のxp〜xqの範囲でコスト値が最小となっているため、この座標値xp〜xqの範囲であれば、x座標値をシームとしても良い。しかし、上記のようになるべくシームを重なり領域の中央付近としたい。
【0058】
ここで、上記(数3)の、t0・|x−(bk−ak)/2|の項は、図7Bのような係数を与えることを意味する。即ち画像の中央に行くほどコストが低くなるような係数である。なお、(数3)のt1はコスト関数fk (x)によるコスト値が0となる場合(動被写体が存在しない部分など)で係数によってコスト値の差が無くなってしまうことを避けるためのオフセット値である。
結局図7Bのような係数成分が反映されることで、重なり領域(ak〜bk)において、上記(数3)のコスト関数f’k (x)で与えられるコスト値は、図7Cのようになる。すると、座標値xpが、シームとして選択される。これはつまり、なるべく重なり領域の中央付近でシームが決められるという関数となる。
【0059】
例えば以上のように、コスト関数を適切に設計することにより、各種の条件を織り込んだ最適なシームを選択することができる。
【0060】
ここまで2つのフレーム画像データ間の重なり領域において、最適なシームを決めるためにはコスト関数値が最小になる位置を求めれば良いことを説明した。
次にn(n>2)枚のフレーム画像データを合成するときの最適なシームの組み合わせを求める手法について説明する。
n個のフレーム画像データを考えた場合、その重なり領域の数はn−1個になり、コスト関数もn−1個定義されることになる。
【0061】
図8はn個のフレーム画像データを考えた場合のコスト関数の関係を示したものである。即ちフレーム画像データFM#0、FM#1間のコスト関数f0、フレーム画像データFM#1、FM#2間のコスト関数f1、・・・フレーム画像データFM#(n−2)、FM#(n−1)間のコスト関数fn-2を示している。
n個のフレーム画像データをパノラマ合成し、全体として最適なシームを選ぶためには、
【数4】

を最小にするx0、x1・・・xn-2を求めれば良い。
ただしxkは以下を満たす整数値である。
・xk-1+α≦xk≦xk+1+α (シームの拘束条件)
・ak≦xk≦bk (コスト関数の定義域)
【0062】
ここでαは隣接するシームの最低間隔を定義する定数値である。
上記(数4)を最小化する問題は、一般に組み合わせ最適化問題と呼ばれ、以下のような解法が知られている。
・厳密解を求める解法
−分枝限定法
−Memoization
−動的計画法(Dynamic Programming)
−グラフカット
・近似解を求める解法
−局所探索法(山登り法)
−焼きなまし法(Simulated Annealing)
−タブーサーチ
−遺伝的アルゴリズム(Genetic Algorithm)
【0063】
以上のいずれかの手法により(数4)の最小化問題を解く事が可能である。
ここでは、パノラマ合成を行うn個の全フレーム画像データFM#0〜FM#(n−1)を対象として、各隣接フレーム画像データ間のn−2個のシームを求める場合を述べたが、本実施の形態では、m+1個のフレーム画像データ(但しm<n)について、m個のシームを求める処理を順次行う。この場合、上記(数4)を最小とするm個のシーム(例えばx0、x1・・・xm)を求めれば良いものとなる。
【0064】
図5の画像合成部22ではスティッチ処理206を行う。
スティッチ処理205では、シーム確定処理205で確定した全てのシームの情報と、各フレーム画像データを使用して、最終的にパノラマ画像を生成する。
【0065】
この場合、隣接するフレーム画像データ間を、単純にシームで接続させるようにしてもよいが、上述したブレンド処理を行うことが画質上好ましい。
図9でブレンド処理の一例を説明する。図9は、フレーム画像データFM#(k)とFM#(k+1)の合成を模式的に示している。確定されたシームSMk(座標値xk)を太線で示している。
図示のように、シーム前後の領域xk−β≦x≦xk+βをブレンド対象の領域BLとして、つなぎ目の不自然さを低減するためにブレンド処理を行う。それ以外の領域x>xk+β、xk−β>xに対しては、単純な画素値のコピー、あるいはパノラマ座標系への再サンプリングのみを行い、すべての画像を接合する。
【0066】
ブレンド処理は以下の演算で行う。
【数5】

PIk(x,y):パノラマ座標(x,y)におけるパノラマ画像の画素値
k(x,y):パノラマ座標(x,y)におけるフレーム画像データFM#(k)の画素値
【0067】
以上の図5の各処理によって、n個のフレーム画像データに対して、スイープ方向に垂直な直線に限定した場合の最適なシームが求まり、最終的にパノラマ合成画像を得ることができる。
【0068】
<4.パノラマ合成処理例I>

以下では、図6のような機能構成で実行される、本実施の形態のパノラマ合成処理例を説明していく。
以下に例示する処理例では、n個のフレーム画像データを合成してパノラマ画像を生成する際に、そのn個のフレーム画像データの入力過程で、順次シームを確定させていく。即ち(m+1)個のフレーム画像データ群毎に、その(m+1)個のフレーム画像データの各隣接画像間でのm個のシームについて総合的に最適なシームを求める。そして、m個以下のl個のシーム(m≧l:lは少なくとも1以上)を確定させる。この処理をフレーム画像データの入力過程で繰り返し行って、各シームを確定させていく。
つまり、n個の全てのフレーム画像データの入力が完了する前にシーム確定処理を順次進めていく。さらに、シーム確定がされたフレーム画像データでは、すでにパノラマ合成に使用しない画像部分が確定する。これにより、必要な画像部分のみを、その後のパノラマ合成に用いる画像データとして記憶し、不要な部分は記憶しない。これにより、処理過程での記憶しておく画像容量を削減する。
さらに、(m+1)個のフレーム画像データ群で、各シームを求めることで、その複数のフレーム画像データの全体を考慮したシーム確定がなされるようにする。
【0069】
まず、図10でパノラマ合成処理例Iを説明する。なお図10(及び後述する図14、図15)は、主に図5に示した各機能構成で実行される処理要素に、いくつかの制御要素を付加してフローチャート化したものである。図10の処理において図5の処理要素と同名の処理については,以下の説明で図5の対応する処理を付記するのみとし、重複した詳しい説明は避ける。
【0070】
ステップF100の画像撮像は、パノラマ撮像モードにて1枚の静止画像を撮像し、撮像装置1内で1枚のフレーム画像データとして取り込む処理を意味する。即ち制御部103の制御により、撮像素子部101で得られる撮像信号が画像処理部102で撮像信号処理され、1枚のフレーム画像データとなる。
このフレーム画像データは、そのまま画像処理部102でのパノラマ合成処理(図5の各部によるステップF101以降の処理)に供されても良いし、一旦メモリ部105に取り込まれた後、1個のフレーム画像データとして画像処理部102でのパノラマ合成処理に供されてもよい。
【0071】
画像処理部102及び制御部103によって実現される図5の各部(パノラマ合成準備処理部23、被写体情報検出部20、シーム確定処理部21、画像合成部22)では、ステップF100に基づくフレーム画像データの入力に応じて、ステップF101以降の処理を行う。
ステップF101でパノラマ合成準備処理部23は、前処理を行う(図5の前処理200)。
ステップF102でパノラマ合成準備処理部23は、画像レジストレーション処理を行う(図5の画像レジストレーション処理201)。
ステップF103で被写体情報検出部20は、動被写体検出処理を行う(図5の動被写体検出処理202)。
ステップF104で被写体情報検出部20は、検出・認識処理を行う(図5の検出・認識処理203)。
ステップF105でパノラマ合成準備処理部23は、再投影処理を行う(図5の再投影処理204)。
【0072】
ステップF106では、ステップF105までの処理データのメモリ部105への一時保存を行う。即ち、画像のピクセル情報、画像レジストレーション情報、動被写体検出情報、検出・認識情報などのパノラマ合成に用いる処理データを一時保存する。またフレーム画像データ自体も、この時点で保存されていなければ、メモリ部105に一時保存する。
これはパノラマ合成準備処理部23及び被写体情報検出部20がシーム確定処理部21に受け渡す各種データや画像を一時記憶させる処理となる。
【0073】
その後、ステップF107で未確定のシーム数がm個以上となるまで、ステップF100で得られるフレーム画像データの入力毎に、ステップF101〜F106の処理を繰り返す。
【0074】
シーム確定処理部205はステップF107の判断に応じて処理を実行する。
即ちステップF107において、未確定のシームがm個以上になったと判断される場合、つまり、一時保存したシーム確定されていないフレーム画像データがm+1個となった場合、シーム確定処理部21が、ステップF108においてm個のシームに対して前述の手法で(数4)の最適化を行う。その最適化結果のm個の解のうち撮像開始順からl(l≦m)個のシームを確定させる。
さらにステップF109でシーム確定処理部21は、シームを確定したフレーム画像データについてメモリ部105に保存させる。この場合、シームが確定しているため、最終的にパノラマ画像に寄与しない画素データ部分を保存する必要はなく、必要な部分のみを保存すればよい。また動被写体検出情報、検出・認識情報も保存する必要もない。ステップF106で一時保存したデータとして、シーム確定したフレーム画像データに関するデータは、この時点で捨てれば良い。
【0075】
以上のステップF100〜F109の処理を、ステップF110での撮像終了判定が成立するまで繰り返す。ステップF110の撮像終了とは、制御部103がパノラマ撮像モードでの撮像終了の判定を行う処理である。撮像終了の条件は、
・撮像者がシャッターボタンを離した
・規定の画角の撮像が終了した
・規定の撮像枚数を超過した
・規定のスイープ方向と垂直方向の手振れ量を超過した
・その他のエラー
などがある。
【0076】
上記ステップF107,F108,F109の処理を図11,図12で説明する。
なお、一例としてステップF107における未確定シーム数の判断基準のm=5とする。またステップF108で確定させるシーム数l=1とする。
図11は、順次入力されてくるフレーム画像データFM#0、FM#1・・・を示している。
ステップF100で最初のフレーム画像データFM#0が入力された後、5番目のフレーム画像データFM#4が入力された時点までの期間は、未確定のシーム数は4以下であるため、各フレーム画像データ(FM#0〜FM#4)の入力毎にステップF101〜F106が繰り返される。
6番目(つまりm+1個目)のフレーム画像データFM#5が入力され、ステップF106までの処理が行われた時点で、ステップF107では、未確定のシーム数が5であるため、未確定シーム数≧mとなり、ステップF108に進むことになる。
【0077】
この場合、シーム確定処理部21はステップF108で、(m+1)個のフレーム画像データ群(つまりフレーム画像データFM#0〜FM#5)について、隣接フレーム画像データ間のつなぎ目となるm個の各つなぎ目の位置を、それぞれのフレーム画像データについての動被写体検出処理202(ステップF103)及び検出・認識処理203(ステップF104)で検出された被写体情報を用いた最適位置判定処理によって求める。そしてl個(例えば1個)のつなぎ目を確定させる。
このときの最適位置判定処理は、フレーム画像データFM#0とFM#1間、FM#1とFM#2間、FM#2とFM#3間、FM#3とFM#4間 FM#4とFM#5間の5つのシームを最適化する処理である。即ち、各隣接フレーム画像データについての上記(数1)のコスト関数fk (又は上記(数3)のf’k)で求められる5つのシームについて、上記(数4)により最適化されるようにする。
そして最適化された5つのシームの内、順番が早い方からのl個、例えば1個のシームを確定させる。
図12Aで模式的に示す。図12Aには、フレーム画像データFM#0〜FM#5をパノラマ座標上に重ねた状態で示しているが、各隣接フレーム画像データ間のシームSM0〜SM4としてのx座標値x0〜x4を上記(数4)により最適化する。
そして先頭の1個のシームSM0が、x座標値x0であるとして確定させる。
【0078】
ステップF109ではシームが確定されたフレーム画像データの保存を行うが、この場合、図12Bに示すようにフレーム画像データFM#0の一部を保存することとなる。つまりシームSM0が確定されることで、フレーム画像データFM#0の画像領域は、パノラマ画像に使用する領域AUと、パノラマ画像に使用しない領域ANUに分けられることとなる。ステップF109では、領域AUのみを保存すればよい。
そしてステップF106で一時保存したフレーム画像データFM#0の全体の画像データや、シーム確定に用いるフレーム画像データFM#0の関連データはこの時点で消去すれば良い。
【0079】
例えば以上のように、最初のステップF108,F109では、図11Aに示すように、フレーム画像データFM#0〜FM#5を対象として5つのシームの最適化を行い、1つのシーム、即ちフレーム画像データFM#0とFM#1間のシームSM#0を確定させ、必要な画像領域を保存する。
その後、さらに後続のフレーム画像データFM#6が入力され、ステップF101〜F106が行われる。
上記の最初のステップF108では、1つのシームSM0を確定させたのみであるため、フレーム画像データFM#6が入力後のステップF107では、再び未確定のシーム数が5となる。
【0080】
そこで今度は図11Bに示すように、ステップF108で、フレーム画像データFM#1〜FM#6を対象として5つのシームの最適化を行い、1つのシーム、即ちフレーム画像データFM#1とFM#2間のシームSM#1を確定させる。そしてステップF109でフレーム画像データFM#1について必要な画像領域を保存する。
さら同様に、フレーム画像データFM#7の入力後は、図11Cに示すように、ステップF108で、フレーム画像データFM#2〜FM#7を対象として5つのシームの最適化を行い、1つのシーム、即ちフレーム画像データFM#2とFM#3間のシームSM#2を確定させる。そしてステップF109でフレーム画像データFM#2について必要な画像領域を保存する。
【0081】
このように、シーム確定処理部21は、(m+1)個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各シームを最適位置判定処理によって求め、m個以下のl個のシームを確定させる処理を、フレーム画像データの入力過程で順次実行していく。
なお、ここではl=1として1個のシームを確定させていったが、m=5の場合、確定させるシーム数lは2個〜5個であってもよい。
【0082】
図10のステップF100〜F109の処理は、その後もステップF110で撮像終了と判断されるまで継続される。
撮像終了となったら、ステップF111で、シーム確定処理部21が、その時点で未確定のシームを、上記同様に確定させていく。結果として、全部でn個のフレーム画像データFM#0〜FM#(n−1)に関し、図3Aに示したような全てのシームSM0〜SM(n−2)が確定されることになる。
【0083】
ステップF112では画像合成部22がスティッチ処理206を実行する。即ち各シームSM0〜SM(n−2)で、各フレーム画像データをつなぎ合わせる。つなぎ合わせる際にはブレンド処理も行う。
以上で、図4に示したような1つのパノラマ画像データが生成される。
【0084】
この図10のパノラマ合成処理例Iによれば、全フレーム画像データの撮像終了を待たずに、シーム確定処理205が順次行われていく。
そして全画像データを保存するのはステップF106における一時保存で最大でフレーム画像データのm+1枚分のみである。n−m−1個分のフレーム画像データは、パノラマ画像に寄与する部分の画素データのみ保存すれば良いことになり、必要なメモリ容量が大幅に削減される。
【0085】
例えば通常のパノラマ合成処理の場合で、単に2枚間のシームをコスト関数で決めるだけでなく、全フレーム画像データを考慮して各シームを最適化するには、n個のフレーム画像データが全て入力された後に、各シームを確定させる必要がある。すると、処理過程で全画像の撮像が終了するまで、n個のフレーム画像データを保存しておく必要があり、一時保存に必要なメモリ容量が大きくなる。特に高解像度化が進み、1枚のフレーム画像データのデータサイズが大きくなると、n個のフレーム画像データの保存に必要なメモリ容量は膨大となる。これはメモリの利用効率の悪化が生じ、またメモリ制約の大きい組み込み機器においては、撮像画像の解像度を下げたり、撮像画像枚数を減らすなどの対応をしなければ実現不可能な場合もある。
【0086】
本実施の形態の場合、上記のように必要なメモリ容量が大幅に削減されるため、メモリ制約の大きい撮像装置1等でも、解像度を下げたり、撮像画像枚数を少なくするということなく、高画質なパノラマ合成の生成が可能となる。
即ち本実施の形態としてパノラマ合成処理例Iを行うようにすれば、撮像、位置合わせ、各種検出処理などの処理が終了した少数の画像群(m+1枚:例えば数枚)から徐々にシーム確定を行い、これを繰り返すことにより漸進的にパノラマ画像全体のシームを決定することにより、すでに必要なくなった画像データ、付随する情報を消去することが可能になり、メモリ効率が大幅に向上する。特に搭載メモリが限られている組み込み機器においては、従来では不可能であった高解像度、広画角でのパノラマ合成が可能になる。
また、シーム確定処理が撮像中にも順次行われることで、パノラマ合成の完了までの全体の処理時間も短縮できる。
【0087】
ただし、全フレーム画像データを取り込んだ後にn個の全フレーム画像データを対象としてシームを最適化するわけではないので、その点でパノラマ画質が低下する可能性がある。
そこで次のような工夫で、なるべく全体の画像からみても順次確定されるシームが最適化されるようにするとよい。
即ちステップF108においてシームを最適化する際に、m個のシームのうち、時間的に時間的に先のフレーム画像データのシームほど、コスト関数の定義域ak≦x≦bk内の、よりスイープ方向と逆方向寄りの位置、すなわち図8におけるx座標の小さい位置で最適化を行うようにする。こうすることによって、次回以降に最適化を行うシームに対しての自由度を残すことになり、パノラマ画質の性能低下を低減することができる。
【0088】
このための1つの手法としては、シーム確定処理部21が、コスト関数値を求めるコスト関数を、(m+1)個のフレーム画像データ群内のフレーム順序を反映する関数とする。
或いは別の手法としては、シーム確定処理部21は、(m+1)個のフレーム画像データ群において、コスト関数値に基づいて各隣接フレーム画像データ間でのシームを求める際の拘束条件を、(m+1)個のフレーム画像データ群内のフレーム順序に応じて変化させる。例えば拘束条件として、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲(つまり重なり領域ak〜bk)の設定を変化させる。
【0089】
まずコスト関数をフレーム順序を反映する関数とする手法について述べる。
この場合、コスト関数f’k(x)(又はfk(x))の調整を行えばよい。
例えば下記の式で、既存のコスト関数f’k(x)から、調整されたコスト関数f''k(x)を求める。
【数6】

なお、t2は正の定数値である。
【0090】
この場合、t2・k(x−ak)の項により、重なり領域ak〜bkの範囲で、左側(ak側)でのx座標でのコスト値が低くなるように調整され、かつ、そのコスト値の度合いが時間的に早いフレーム画像データほど大きくなるようにする。
従って、m個のシームのうち、時間的に先のフレームのシームほど、コスト関数の定義域ak≦x≦bk内で、x座標の小さい位置でシームが最適化されやすい傾向とすることができる。
【0091】
また、拘束条件をフレーム順序に応じて変化させる場合は、次のようにする。
コスト関数の定義域ak≦x≦bkを、
k≦x≦bk−t3・k
とする。−t3 は正の定数値である。
【0092】
このようにすると、コスト関数の定義域が、時間的に早いフレーム画像データほど左側(ak側)での狭い範囲となる。
図13に模式的に示すと、フレーム画像データFM#0とFM#1の間のコスト関数の定義域は範囲CA0、フレーム画像データFM#1とFM#2の間のコスト関数の定義域は範囲CA1、フレーム画像データFM#2とFM#3の間のコスト関数の定義域は範囲CA2というようになる。結果として、時間的に先のフレームのシームほど、x座標の小さい位置でシームが最適化されやすい傾向となる。
【0093】
以上のように、コスト関数を調整するようにしたり、制約条件を調整すること、或いはその両方を行うことにより、n個の全撮像画像によるシーム最適化時と同一の最適化アルゴリズムで、m+1個のフレーム画像データ群による性能劣化の少ない最適化が可能である。
従って図10の処理によって、パノラマ画質の性能低下を極力抑えた上で、大幅なメモリ使用量の削減が可能である。
【0094】
<5.パノラマ合成処理例II>

実施の形態のパノラマ合成処理例IIを図14で説明する。
この図14のパノラマ合成処理例IIは、図5のパノラマ合成準備処理部23及び被写体情報検出部20の処理と、シーム確定処理部21及び画像合成部22の処理を並列処理としたものである。実質的な処理内容は図10と同様である。
【0095】
図14Aは、撮像によってステップF200で入力される各フレーム画像データについて、パノラマ合成準備処理部23と被写体情報検出部20で実行される処理を示している。
即ちフレーム画像データの入力毎に、パノラマ合成準備処理部23による前処理(ステップF201)、画像レジストレーション処理(ステップF202)、被写体情報検出部20による動被写体検出処理(ステップF203)、検出・認識処理(ステップF204)、パノラマ合成準備処理部23による再投影処理(ステップF205)が行われる。そしてそのフレーム画像データ及び関連情報がメモリ部105に一時記憶される。
以上の処理は図10のステップF100〜F106と同様である。
この処理が、ステップF207で撮像終了と判断されるまで繰り返される。
【0096】
図14Bはシーム確定処理部21、画像合成部22の処理を示している。
シーム確定処理部21は、ステップF220で未確定のシーム数を確認する。即ち図14Aの処理でメモリ部105に一時記憶されるフレーム画像データ群による未確定のシーム数を確認する。そして未確定のシーム数≧mであれば、ステップF221でシーム確定処理、ステップF222で画像データの保存処理を行う。以上は図10のステップF107、F108、F109と同様である。
この図14Bの処理は、図14Aの処理において撮像終了、つまり新規なフレーム画像データの入力が終了となるまでは、ステップF220〜F222を繰り返す。
【0097】
新規なフレーム画像データの入力が終了となったら、ステップF223からF224に進み、シーム確定処理部21が、その時点で未確定のシームを、上記同様に確定させていく。結果として、全部でn個のフレーム画像データFM#0〜FM#(n−1)に関し、図3Aに示したような全てのシームSM0〜SM(n−2)が確定されることになる。
ステップF225では画像合成部22が、確定された全シームを用いてパノラマ画像データを生成するスティッチ処理を行う。
【0098】
以上の図14A、図14Bの処理が並列に実行されることで、図10のパノラマ合成処理例Iの場合と同様の効果を得ることができる。
【0099】
<6.パノラマ合成処理例III>

実施の形態のパノラマ合成処理例IIIを図15により説明する。
このパノラマ合成処理例IIIは、全画像の撮像終了を待たずに、シーム確定処理だけでなくシームが確定した画像についてのスティッチ処理まで行うものである。
【0100】
図15においてステップF300〜F308は、図10のステップF100〜F108と同様であるため繰り返しの説明は避ける。
この図15の場合、シーム確定処理部21がステップF308でl個のシームを確定させる毎に、ステップF309で画像合成部22がスティッチ処理を行う。この処理を撮像終了まで繰り返す。
【0101】
ステップF310で撮像終了と判断された後は、ステップF311でシーム確定処理部21が残りのシームを確定させ、ステップF312で画像合成部22が確定された残りのシームに基づくスティッチ処理を行って、パノラマ画像データを完成させる。
【0102】
この図15の処理によっても図10の処理と同様な効果が得られる。その上でこの図15の処理の場合、図10の処理では必要だったn−m−1枚分のフレーム画像データの、パノラマ画像に使用する画素部分の画像データの記憶も必要無くなり、さらなるメモリ量の削減が可能となる。
さらに画像撮像中にスティッチ処理までをも開始するため、全体のパノラマ合成処理時間をさらに短くすることもできる。
【0103】
<7.プログラム>

実施の形態のプログラムは、各フレーム画像データ毎に被写体情報を検出する処理と、(m+1)個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各シームを、被写体情報を用いた最適位置判定処理によって求め、m個以下のl個のシームを確定させる処理とを、パノラマ画像生成に用いる一連のn個のフレーム画像データの入力過程において演算処理装置に順次実行させるプログラムである。
即ち、上記図10、又は図14、又は図15の処理を画像処理部102や制御部103に実行させるプログラムとなる。
【0104】
実施の形態のプログラムは、上記の撮像装置1や、その他の情報処理装置、画像処理装置において内蔵されている記録媒体としてのHDD(Hard Disk Drive)や、CPUを有するマイクロコンピュータ内のROM等に予め記録しておくことができる。
あるいはまた、プログラムは、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、MO(Magnet optical)ディスク、DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。
このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。例えばCD−ROMにより提供されることで、パーソナルコンピュータ等の情報処理装置ではプログラムをインストールし、上述したパノラマ合成処理を実行できるものとなる。
なお、プログラムは、リムーバブル記録媒体からインストールする他、ダウンロードサイトから、LAN(Local Area Network)、インターネットなどのネットワークを介してダウンロードすることもできる。
このようなプログラムのインストールによって、例えば汎用のパーソナルコンピュータを本開示の画像処理装置として機能させることも可能となる。
またプログラム、又はそのプログラムを記録した記録媒体によれば、上述した効果を実現する記録装画像処理装置を容易に実現することができる。
【0105】
<8.変形例>

以上、実施の形態について説明してきたが、本開示の画像処理装置は多様な変形例が考えられる。
本開示の画像処理装置は、上述の撮像装置1に搭載するほか、パーソナルコンピュータ、PDA(Personal Digital Assistant)等の情報処理装置に搭載することもできる。また撮像機能を有する携帯電話機、ゲーム機、ビデオ機器、撮像機能を有さないがフレーム画像データを入力する機能を有する携帯電話機、ゲーム機、ビデオ機器、情報処理装置でも、本開示の画像処理装置を搭載することは有用である。
例えば撮像機能を有さない機器の場合、入力されてくる一連のフレーム画像データに対し、図10,図14,図15のような処理を行うことで、上述した効果を奏するパノラマ合成処理を実現できる。
また被写体情報とともにフレーム画像データが入力される機器を考えれば、少なくとも図14Bの処理を行うようにすればよい。
【0106】
さらに、図10のステップF112、図14のステップF224を除いた処理を行う画像処理装置も想定される。
即ち撮像によって得る一連のフレーム画像データ、もしくは外部機器から供給される一連のフレーム画像データについて、シーム確定までの処理を行う機器である。確定したシームの情報を外部機器に出力することで。外部機器側でパノラマ合成処理を行うことができる。
【0107】
また実施の形態では、図3Aに示した直線状のシームを用いる場合の例で述べたが、図3Bのような非直線状のシームを設定する場合でも本開示の図10,図14,図15のような処理は適用できる。
【0108】
なお本技術は以下のような構成も採ることができる。
(1)パノラマ画像生成に用いる一連のn個のフレーム画像データの入力過程で、フレーム画像データについての被写体情報を検出する被写体情報検出部と、
(m+1)個(但しm<n)のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、m個以下のつなぎ目を確定させる処理を、上記入力過程で順次行うシーム確定処理部と、
を備えた画像処理装置。
(2)上記シーム確定処理部で確定されたつなぎ目に基づいて、各フレーム画像データを合成していくことで、上記n個のフレーム画像データを用いたパノラマ画像データを生成する画像合成部を、さらに備えた上記(1)に記載の画像処理装置。
(3)上記画像合成部は、上記シーム確定処理部によって(n−1)個のつなぎ目が確定された後に、上記n個のフレーム画像データを用いたパノラマ画像データを生成する上記(2)に記載の画像処理装置。
(4)上記画像合成部は、上記入力過程において上記シーム確定処理部が1以上のつなぎ目を確定させる毎に、当該確定されたつなぎ目に基づく複数のフレーム画像データの合成を行う上記(2)に記載の画像処理装置。
(5)上記シーム確定処理部は、上記最適位置判定処理として、上記被写体情報から被写体情報を反映したコスト関数値を算出し、該コスト関数値を最適化する演算を行って上記m個の各つなぎ目の位置を求める上記(1)乃至(4)のいずれかに記載の画像処理装置。
(6)上記コスト関数を最適化する演算は、
それぞれが、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲内で上記コスト関数値に基づいて選択されるつなぎ目位置である上記m個の各つなぎ目について、各つなぎ目のコスト関数値の総計が最小となる上記m個の各つなぎ目を求める演算である上記(5)に記載の画像処理装置。
(7)上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、画像の空間的条件を反映する関数とする上記(5)又は(6)に記載の画像処理装置。
(8)上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、上記被写体情報の信頼度を反映する関数とする上記(5)乃至(7)のいずれかに記載の画像処理装置。
(9)上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、上記(m+1)個のフレーム画像データ群内のフレーム順序を反映する関数とする上記(5)乃至(8)のいずれかに記載の画像処理装置。
(10)上記シーム確定処理部は、上記(m+1)個のフレーム画像データ群において、上記コスト関数値に基づいて各隣接フレーム画像データ間でのつなぎ目を求める際の拘束条件を、上記(m+1)個のフレーム画像データ群内のフレーム順序に応じて変化させる上記(5)乃至(9)のいずれかに記載の画像処理装置。
(11)上記拘束条件は、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲の設定である上記(10)に記載の画像処理装置。
(12)上記被写体情報検出部は、上記被写体情報の検出として、動被写体検出を行う上記(1)乃至(11)のいずれかに記載の画像処理装置。
(13)上記被写体情報検出部は、上記被写体情報の検出として、顔検出を行う上記(1)乃至(12)のいずれかに記載の画像処理装置。
(14)上記被写体情報検出部は、上記被写体情報の検出として、人体検出を行う上記(1)乃至(13)のいずれかに記載の画像処理装置。
【符号の説明】
【0109】
1 撮像装置、20 被写体情報検出部、21 シーム確定処理部、22 画像合成部、23 パノラマ合成準備処理部、100 レンズユニット、101 撮像素子、102 画像処理部、103 制御部、104 表示部、105 メモリ部、106 記録デバイス、107 操作部、108 センサー部

【特許請求の範囲】
【請求項1】
パノラマ画像生成に用いる一連のn個のフレーム画像データの入力過程で、フレーム画像データについての被写体情報を検出する被写体情報検出部と、
(m+1)個(但しm<n)のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、m個以下のつなぎ目を確定させる処理を、上記入力過程で順次行うシーム確定処理部と、
を備えた画像処理装置。
【請求項2】
上記シーム確定処理部で確定されたつなぎ目に基づいて、各フレーム画像データを合成していくことで、上記n個のフレーム画像データを用いたパノラマ画像データを生成する画像合成部を、さらに備えた請求項1に記載の画像処理装置。
【請求項3】
上記画像合成部は、上記シーム確定処理部によって(n−1)個のつなぎ目が確定された後に、上記n個のフレーム画像データを用いたパノラマ画像データを生成する請求項2に記載の画像処理装置。
【請求項4】
上記画像合成部は、上記入力過程において上記シーム確定処理部が1以上のつなぎ目を確定させる毎に、当該確定されたつなぎ目に基づく複数のフレーム画像データの合成を行う請求項2に記載の画像処理装置。
【請求項5】
上記シーム確定処理部は、上記最適位置判定処理として、上記被写体情報から被写体情報を反映したコスト関数値を算出し、該コスト関数値を最適化する演算を行って上記m個の各つなぎ目の位置を求める請求項1に記載の画像処理装置。
【請求項6】
上記コスト関数を最適化する演算は、
それぞれが、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲内で上記コスト関数値に基づいて選択されるつなぎ目位置である上記m個の各つなぎ目について、各つなぎ目のコスト関数値の総計が最小となる上記m個の各つなぎ目を求める演算である請求項5に記載の画像処理装置。
【請求項7】
上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、画像の空間的条件を反映する関数とする請求項5に記載の画像処理装置。
【請求項8】
上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、上記被写体情報の信頼度を反映する関数とする請求項5に記載の画像処理装置。
【請求項9】
上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、上記(m+1)個のフレーム画像データ群内のフレーム順序を反映する関数とする請求項5に記載の画像処理装置。
【請求項10】
上記シーム確定処理部は、上記(m+1)個のフレーム画像データ群において、上記コスト関数値に基づいて各隣接フレーム画像データ間でのつなぎ目を求める際の拘束条件を、上記(m+1)個のフレーム画像データ群内のフレーム順序に応じて変化させる請求項5に記載の画像処理装置。
【請求項11】
上記拘束条件は、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲の設定である請求項10に記載の画像処理装置。
【請求項12】
上記被写体情報検出部は、上記被写体情報の検出として、動被写体検出を行う請求項1に記載の画像処理装置。
【請求項13】
上記被写体情報検出部は、上記被写体情報の検出として、顔検出を行う請求項1に記載の画像処理装置。
【請求項14】
上記被写体情報検出部は、上記被写体情報の検出として、人体検出を行う請求項1に記載の画像処理装置。
【請求項15】
フレーム画像データについての被写体情報を検出する処理と、
(m+1)個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、m個以下のつなぎ目を確定させる処理とを、
パノラマ画像生成に用いる一連のn個(但しm<n)のフレーム画像データの入力過程において順次行う画像処理方法。
【請求項16】
フレーム画像データについての被写体情報を検出する処理と、
(m+1)個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるm個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、m個以下のつなぎ目を確定させる処理とを、
パノラマ画像生成に用いる一連のn個(但しm<n)のフレーム画像データの入力過程において演算処理装置に順次実行させるプログラム。

【図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


【公開番号】特開2012−222674(P2012−222674A)
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2011−87893(P2011−87893)
【出願日】平成23年4月12日(2011.4.12)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】