(57)【要約】【課題】パノラマ合成の品質を落とさずに、処理過程で保存する画像データ量を削減し、必要なメモリ容量を低減できるようにする。【解決手段】パノラマ画像生成に用いる一連のｎ個のフレーム画像データの入力過程で、つなぎ目（シーム）を順次確定させていく。このときに、（ｍ＋１）個（但しｍ＜ｎ）のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各つなぎ目の位置を、各フレームの被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のつなぎ目を確定させる。この確定したつなぎ目に基づいてフレーム画像データを合成する。【選択図】図１０
2012222674.tif 000002
【特許請求の範囲】
【請求項１】
パノラマ画像生成に用いる一連のｎ個のフレーム画像データの入力過程で、フレーム画像データについての被写体情報を検出する被写体情報検出部と、
（ｍ＋１）個（但しｍ＜ｎ）のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のつなぎ目を確定させる処理を、上記入力過程で順次行うシーム確定処理部と、
を備えた画像処理装置。
【請求項２】
上記シーム確定処理部で確定されたつなぎ目に基づいて、各フレーム画像データを合成していくことで、上記ｎ個のフレーム画像データを用いたパノラマ画像データを生成する画像合成部を、さらに備えた請求項１に記載の画像処理装置。
【請求項３】
上記画像合成部は、上記シーム確定処理部によって（ｎ−１）個のつなぎ目が確定された後に、上記ｎ個のフレーム画像データを用いたパノラマ画像データを生成する請求項２に記載の画像処理装置。
【請求項４】
上記画像合成部は、上記入力過程において上記シーム確定処理部が１以上のつなぎ目を確定させる毎に、当該確定されたつなぎ目に基づく複数のフレーム画像データの合成を行う請求項２に記載の画像処理装置。
【請求項５】
上記シーム確定処理部は、上記最適位置判定処理として、上記被写体情報から被写体情報を反映したコスト関数値を算出し、該コスト関数値を最適化する演算を行って上記ｍ個の各つなぎ目の位置を求める請求項１に記載の画像処理装置。
【請求項６】
上記コスト関数を最適化する演算は、
それぞれが、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲内で上記コスト関数値に基づいて選択されるつなぎ目位置である上記ｍ個の各つなぎ目について、各つなぎ目のコスト関数値の総計が最小となる上記ｍ個の各つなぎ目を求める演算である請求項５に記載の画像処理装置。
【請求項７】
上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、画像の空間的条件を反映する関数とする請求項５に記載の画像処理装置。
【請求項８】
上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、上記被写体情報の信頼度を反映する関数とする請求項５に記載の画像処理装置。
【請求項９】
上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、上記（ｍ＋１）個のフレーム画像データ群内のフレーム順序を反映する関数とする請求項５に記載の画像処理装置。
【請求項１０】
上記シーム確定処理部は、上記（ｍ＋１）個のフレーム画像データ群において、上記コスト関数値に基づいて各隣接フレーム画像データ間でのつなぎ目を求める際の拘束条件を、上記（ｍ＋１）個のフレーム画像データ群内のフレーム順序に応じて変化させる請求項５に記載の画像処理装置。
【請求項１１】
上記拘束条件は、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲の設定である請求項１０に記載の画像処理装置。
【請求項１２】
上記被写体情報検出部は、上記被写体情報の検出として、動被写体検出を行う請求項１に記載の画像処理装置。
【請求項１３】
上記被写体情報検出部は、上記被写体情報の検出として、顔検出を行う請求項１に記載の画像処理装置。
【請求項１４】
上記被写体情報検出部は、上記被写体情報の検出として、人体検出を行う請求項１に記載の画像処理装置。
【請求項１５】
フレーム画像データについての被写体情報を検出する処理と、
（ｍ＋１）個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のつなぎ目を確定させる処理とを、
パノラマ画像生成に用いる一連のｎ個（但しｍ＜ｎ）のフレーム画像データの入力過程において順次行う画像処理方法。
【請求項１６】
フレーム画像データについての被写体情報を検出する処理と、
（ｍ＋１）個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のつなぎ目を確定させる処理とを、
パノラマ画像生成に用いる一連のｎ個（但しｍ＜ｎ）のフレーム画像データの入力過程において演算処理装置に順次実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はパノラマ画像生成のための画像処理装置、画像処理方法、及びそれらを実現するプログラムに関する。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】特開２０１０−１６１５２０号公報
【背景技術】
【０００３】
上記特許文献１に示されるように、複数枚の画像から１枚のパノラマ画像を生成する画像処理が知られている。
【０００４】
複数枚の撮像画像（複数のフレーム画像データ）を合成してパノラマ画像を生成する処理において、撮像シーンに動被写体が存在すると、動被写体の一部が分断されたり、ぼやけるなどの画像の破綻や画質の低下の原因となる。
そのため従来より動被写体を検出した上で、動被写体を避けて、パノラマ画像を形成するためのつなぎ目（シーム）を決定するなどの手法が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特定の被写体を避けてシームを決定し、各画像を合成する場合、以下のような問題があった。
パノラマ画像全体として最適なつなぎ目を決定するためには、合成する全画像フレームの情報（位置、画素、動被写体、顔検出などの少なくとも１つ）を参照して、つなぎ目を決定することとなる。このため、全画像フレームに対しての処理（撮像、位置合わせ、各種検出処理等）が終了するまではつなぎ目を決定する処理が開始できない。
【０００６】
これは撮像装置内でパノラマ合成を行うシステムにおいては、最終撮像画像についての処理が完了するまで、全画像の画素情報を含めた全情報を保存しておかなければならないことを意味する。
一般的にパノラマ合成時には広範囲の重なり領域を持った、多数の静止画像を合成するため、撮像画像のデータ量は、最終的なパノラマ画像のデータ量の数倍〜数１０倍にも達する。
従って特にメモリ容量の制約が厳しい組み込み機器にとっては、パノラマ画質の低下や、パノラマ画角の狭小化を引き起こす要因となる。
例えば撮像画像の解像度を下げたり、撮像画像枚数を減らすなどの対応をしなければパノラマ画像の生成が実現不可能な場合も多く、高解像度、高画質、広画角のパノラマ画像を生成することが困難であった。
また全画像の撮像終了までシーム決定が開始できないということは、同時にパノラマ合成時間の増大を引き起こしていた。
【０００７】
本開示では、このような問題に鑑みて、パノラマ画像生成において、動被写体を避けたつなぎ目での合成を行う処理を、低メモリ容量で、かつ短い処理時間で実現することを目的とする。
【課題を解決するための手段】
【０００８】
本開示の画像処理装置は、パノラマ画像生成に用いる一連のｎ個のフレーム画像データの入力過程で、フレーム画像データについての被写体情報を検出する被写体情報検出部と、（ｍ＋１）個（但しｍ＜ｎ）のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のつなぎ目を確定させる処理を、上記入力過程で順次行うシーム確定処理部とを備える。
またさらに、上記シーム確定処理部で確定されたつなぎ目に基づいて、各フレーム画像データを合成していくことで、上記ｎ個のフレーム画像データを用いたパノラマ画像データを生成する画像合成部を備えるようにしても良い。
【０００９】
本開示の画像処理方法は、フレーム画像データについての被写体情報を検出する処理と、（ｍ＋１）個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のつなぎ目を確定させる処理とを、パノラマ画像生成に用いる一連のｎ個（但しｍ＜ｎ）のフレーム画像データの入力過程において順次行う。
【００１０】
本開示のプログラムは、フレーム画像データについての被写体情報を検出する処理と、（ｍ＋１）個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のつなぎ目を確定させる処理とを、パノラマ画像生成に用いる一連のｎ個（但しｍ＜ｎ）のフレーム画像データの入力過程において演算処理装置に順次実行させるプログラムである。
【００１１】
これらの本開示の技術によれば、ｎ個のフレーム画像データを合成してパノラマ画像を生成する際に、そのｎ個のフレーム画像データの入力過程で、順次つなぎ目（シーム）を確定させていく。即ち（ｍ＋１）個のフレーム画像データ群毎に、その（ｍ＋１）個のフレーム画像データの各隣接画像間でのｍ個のシームについて総合的に最適なつなぎ目位置を求める。そして、ｍ個以下のつなぎ目（少なくとも１つ以上のつなぎ目）を確定させる。この処理をフレーム画像データの入力過程で繰り返し行って、各シームを確定させていく。
このようにすれば、ｎ個の全てのフレーム画像データの入力が完了する前にシーム確定処理を順次進めていくことができる。さらに、シーム確定がされたフレーム画像データでは、すでにパノラマ合成に使用しない画像部分が確定することになるため、記憶しておく画像容量を削減できる。
さらに、（ｍ＋１）個のフレーム画像データ群で、各シームを求めることで、その複数のフレーム画像データの全体を考慮したシーム確定がなされる。
【発明の効果】
【００１２】
本開示の技術によれば、パノラマ画像生成において、動被写体を避けたつなぎ目での合成を行う処理を、低メモリ容量で、かつ短い処理時間で実現できる。また（ｍ＋１）個のフレーム画像データ群で、その複数のフレーム画像データの全体を考慮して最適なシームを求めていくため、確定されるシームがより適切な位置となる。
【図面の簡単な説明】
【００１３】
【図１】本開示の実施の形態の撮像装置のブロック図である。
【図２】パノラマ撮像で得られる画像群の説明図である。
【図３】パノラマ撮像のフレーム画像データにおけるシームの説明図である。
【図４】パノラマ画像の説明図である。
【図５】実施の形態のパノラマ合成処理の説明図である。
【図６】実施の形態のコスト関数の説明図である。
【図７】実施の形態のコスト関数への空間的条件の反映の説明図である。
【図８】実施の形態のフレーム間のコスト関数の関係の説明図である。
【図９】実施の形態のパノラマ合成処理例Ｉのフローチャートである。
【図１０】実施の形態のシーム前後のブレンド処理の説明図である。
【図１１】実施の形態の入力過程でのシーム確定の説明図である。
【図１２】実施の形態のシーム確定後の保存領域の説明図である。
【図１３】実施の形態のフレーム順序に応じたつなぎ目設定範囲の説明図である。
【図１４】実施の形態のパノラマ合成処理例IIのフローチャートである。
【図１５】実施の形態のパノラマ合成処理例IIIのフローチャートである。
【発明を実施するための形態】
【００１４】
以下、実施の形態を次の順序で説明する。なお実施の形態では、本開示の画像処理装置を搭載した撮像装置の例を挙げる。
＜１．撮像装置の構成＞
＜２．パノラマ合成機能の概要＞
＜３．実施の形態のパノラマ合成アルゴリズム＞
＜４．パノラマ合成処理例Ｉ＞
＜５．パノラマ合成処理例II＞
＜６．パノラマ合成処理例III＞
＜７．プログラム＞
＜８．変形例＞
【００１５】
＜１．撮像装置の構成＞
図１は撮像装置１の構成例を示している。
撮像装置１はレンズユニット１００、撮像素子１０１、画像処理部１０２、制御部１０３、表示部１０４、メモリ部１０５、記録デバイス１０６、操作部１０７、センサー部１０８を備える。
【００１６】
レンズユニット１００は、被写体の光画像を集光する。レンズユニット１００は制御部１０３からの指示に従い、適切な画像を得られるように、焦点距離、被写体距離、絞りなどを調整する機構を持つ。
撮像素子１０１は、レンズユニット１００で集光された光画像を光電変換して電気信号に変換する。具体的には、ＣＣＤ（Charge Coupled Device）イメージセンサやＣＭＯＳ（Complementary Metal Oxide Semiconductor）イメージセンサなどにより実現される。
【００１７】
画像処理部１０２は、撮像素子１０１からの電気信号をサンプリングするサンプリング回路、アナログ信号をデジタル信号に変換するＡ／Ｄ変換回路、デジタル信号に所定の画像処理を施す画像処理回路などから構成される。ここでは、この画像処理部１０２は、撮像素子１０１での撮像によるフレーム画像データを得る処理を行うとともに、後述するパノラマ画像を合成する処理も行うものとして示している。
この画像処理部１０２は、専用のハードウェア回路のみではなく、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）を備え、柔軟な画像処理に対応するためにソフトウェア処理を行うことができる。
【００１８】
制御部１０３は、ＣＰＵ及び制御プログラムからなり、撮像装置１の各部の制御を行う。制御プログラム自体は実際にはメモリ部１０５に格納され、ＣＰＵによって実行される。
本実施の形態のパノラマ画像を合成する処理（後述するパノラマ合成処理Ｉ、II、III等）は、制御部１０３と画像処理部１０２によって実行される。その処理の詳細については後述する。
【００１９】
表示部１０４は、画像処理部１０２によって処理された、メモリ部１０５に格納されている画像データをアナログ化するＤ／Ａ変換回路と、アナログ化された画像信号を後段の表装置に適合する形式のビデオ信号にエンコードするビデオエンコーダと、入力されるビデオ信号に対応する画像を表示する表示装置とから構成される。
表示装置は、例えば、ＬＣＤ（Liquid Crystal Display）や有機ＥＬ（Electroluminescence）パネル等により実現され、ファインダとしての機能も有する。
【００２０】
メモリ部１０５は、ＤＲＡＭ（Dynamic Random Access Memory）などの半導体メモリから構成され、画像処理部１０２で処理された画像データ、制御部１０３における制御プログラム及び各種データなどが一時記録される。
【００２１】
記録デバイス１０６は、フラッシュメモリ（Flash Memory）メモリなどの半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクなどの記録媒体と、それらの記録媒体に対する記録再生系回路・機構により構成される。
撮像装置１による撮像時には、画像処理部１０２でＪＰＥＧ（Joint Photographic Experts Group）形式にエンコードされ、メモリ部１０５に格納されたＪＰＥＧ画像データを記録メディアに記録する。
再生時には、記録メディアに保存されたＪＰＥＧ画像データをメモリ部１０５に読み込み、画像処理部１０２でデコード処理を行う。デコードされた画像データは、表示部１０４で表示させたり、或いは図示しない外部インターフェースにより外部機器に出力することも可能である。
【００２２】
操作部１０７は、シャッターボタンなどのハードウェアキー、操作ダイアル、タッチパネルなどの入力デバイスを備え、撮像者（ユーザ）の入力操作を検出し、制御部１０３に伝達する。制御部１０３はユーザの入力操作に応じて撮像装置１の動作を決定し、各部が必要な動作を行うように制御する。
センサー部１０８は、ジャイロセンサー、加速度センサー、地磁気センサー、ＧＰＳ（Global Positioning System）センサーなどで構成され、各種情報の検出を行う。これらの情報は、撮像された画像データに対して、メタデータとして付加されるほか、各種画像処理、制御処理にも利用される。
【００２３】
画像処理部１０２、制御部１０３、表示部１０４、メモリ部１０５、記録デバイス１０６、操作部１０７、及びセンサー部１０８は、バス１０９を介して相互に接続され、画像データや制御信号等がやりとりされる。
【００２４】
＜２．パノラマ合成機能の概要＞
次に、撮像装置１が備えるパノラマ合成機能についての概要を説明する。
本実施の形態の撮像装置１は、撮像者がある回転軸で撮像装置１を回転運動させながら撮像して得られた複数枚の静止画像（フレーム画像データ）に対し、合成処理を行うことによってパノラマ画像を生成することができる。
【００２５】
図２Ａは、パノラマ撮像時の撮像装置１の動きを示したものである。パノラマ撮像時には遠景、近景の視差が合成時のつなぎ目の不自然さを生じさせるため、撮像時の回転中心は、ノーダルポイント（Nodal Point）と呼ばれる視差を生じないレンズ固有の点を回転中心にすることが望ましい。
パノラマ撮像時の撮像装置１の回転運動のことを「スイープ」と呼ぶことにする。
【００２６】
図２Ａは、撮像装置１のスイープによって得られた複数枚の静止画像に対して、適切に位置合わせを行ったときの概念図である。撮像で得られる各静止画像を、撮像の時間的な順序で、時刻０〜時刻（ｎ−１）までに撮像されたフレーム画像データを、フレーム画像データＦＭ＃０、ＦＭ＃１・・・ＦＭ＃（ｎ−１）として示す。ｎ枚の静止画像からパノラマ画像を生成する場合は、図示するように連続して撮像された一連のｎ個のフレーム画像データＦＭ＃０〜ＦＭ＃（ｎ−１）について合成処理を行うこととなる。
【００２７】
この図２Ａに示すように、撮像された各フレーム画像データは隣接するフレーム画像データと必ず重なり部分を持つ必要があるので、撮像装置１の各フレーム画像データの撮像時間間隔と、撮像者がスイープする速度の上限値は適切に設定しなければならない。
そして、このように位置合わせされたフレーム画像データ群は多くの重なり部分を持つため、各フレーム画像データに対して最終的なパノラマ画像に使用する領域を決定する必要がある。これは言い換えると、パノラマ合成処理における画像の接合部分（シーム：seam)を決めていることと同一である。
【００２８】
図３Ａ、図３Ｂでは、シームＳＭの例を示している。
シームには、図３Ａに示すようにスイープ方向に垂直な直線や、図３Ｂに示すように非直線（曲線など）とすることができる。
この図３Ａ、図３Ｂにおいて、シームＳＭ０はフレーム画像データＦＭ＃０，ＦＭ＃１間のつなぎ目、シームＳＭ１はフレーム画像データＦＭ＃１，ＦＭ＃２間のつなぎ目、・・・シームＳＭ（ｎ−２）はフレーム画像データＦＭ＃（ｎ−２），ＦＭ＃（ｎ−１）間のつなぎ目として示している。
なお、これらシームＳＭ０〜ＳＭ（ｎ−２）が合成時の隣接画像間のつなぎ目とされることで、各フレーム画像データにおいて斜線部とした部分は、最終的なパノラマ画像に使用されない画像領域となる。
【００２９】
また、パノラマ合成を行う際には、シーム付近の画像の不自然さを低減することを目的とし、シーム前後の画像領域についてブレンド処理することも行われる場合もある。ブレンド処理については図９で後述する。
そして、各フレーム画像データの共通部分を広範囲にブレンド処理することによって接合させる場合や、パノラマ画像に寄与する画素を共通部分から画素毎に選択する場合もあり、これらの場合には、つなぎ目は明確には存在しないが、本明細書においてはこの広範囲な接合部分もシームとして同一視するものとする。
【００３０】
また図２Ｂに示したように、各フレーム画像データの位置合わせの結果、一般的にスイープ方向だけでなく、スイープと垂直な方向にも若干の移動が認められる。これは撮像者のスイープ時の手振れ等によって生じるズレである。
【００３１】
各フレーム画像データのシームを決定し、その境界領域をブレンド処理することによって接合を行い、最終的に手振れ量を考慮してスイープと垂直な方向な不要な部分をトリミングすることによって、図４に示すような、スイープ方向を長辺方向とする、広画角のパノラマ画像を得ることができる。
図４では縦線がシームを示しており、ｎ個のフレーム画像データＦＭ＃０〜ＦＭ＃（ｎ−１）がシームＳＭ０〜ＳＭ（ｎ−２）でそれぞれ接合されてパノラマ画像が生成されている状態を模式的に示している。
【００３２】
＜３．実施の形態のパノラマ合成アルゴリズム＞
次に、本実施の形態の撮像装置１のパノラマ合成処理についての詳細を説明する。
図５はパノラマ合成処理のために画像処理部１０２及び制御部１０３において実行される処理を、機能構成として示し、それらの機能構成部位によって実行される処理を示している。
【００３３】
機能構成としては、一点鎖線でそれぞれ示すように、被写体情報検出部２０、シーム確定処理部、画像合成部２２、パノラマ合成準備処理部２３を備える。
【００３４】
被写体情報検出部２０は、パノラマ画像生成に用いる一連のｎ個のフレーム画像データの入力過程で、各フレーム画像データ毎に被写体情報を検出する。
この例では動被写体検出処理２０２、検出・認識処理２０３を行う。
【００３５】
シーム確定処理部２１は、（ｍ＋１）個（但しｍ＜ｎ）のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各シームの位置を、被写体情報検出部２０で検出された被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のつなぎ目を確定させる処理（シーム確定処理２０５）を行う。このシーム確定処理２０５を、一連のｎ個のフレーム画像データの入力過程で順次行う。
【００３６】
画像合成部２２は、シーム確定処理部２１で確定されたシームに基づいて、各フレーム画像データを合成していくことで、ｎ個のフレーム画像データを用いたパノラマ画像データを生成するスティッチ処理２０６を行う。
【００３７】
パノラマ合成準備処理部２３は、パノラマ合成を精度良く行うために必要な準備処理として、例えば前処理２００、画像レジストレーション処理２０１、再投影処理２０４を行う。
【００３８】
本実施の形態の特徴的な動作を実現するには、被写体情報検出部２０、シーム確定処理部２１、画像合成部２２を有することが必要となる。但し、画像合成部２２の動作は、外部機器で行うようにしてもよく、この場合、本実施の形態の画像処理装置としては被写体情報検出部２０、シーム確定処理部２１を少なくとも備えることが必要となる。
【００３９】
各処理について説明する。
前処理２００の対象となる入力画像群とは、撮像者が撮像装置１でパノラマ撮像を実行しているときに順次得られるフレーム画像データＦＭ＃０、ＦＭ＃１、ＦＭ＃２・・・である。
まずパノラマ合成準備処理部２３では、撮像者のパノラマ撮像操作によって撮像された画像（各フレーム画像データ）に対して（ここでの画像は通常の撮像時と同様の画像処理は行われているものとする）、パノラマ合成処理に対する前処理２００を行う。
入力された画像はレンズユニット１００の特性に基づく収差の影響を受けている。特にレンズの歪曲収差は、画像レジストレーション処理２０１に悪影響を与え、位置合わせの精度を低下させる。さらに合成されたパノラマ画像のシーム付近にアーティファクトも発生させるため、この前処理２００において歪曲収差の補正を行う。歪曲収差の補正によって、動被写体検出処理２０２、検出・認識処理２０３の精度を向上させる効果もある。
【００４０】
次にパノラマ合成準備処理部２３は、前処理２００を行ったフレーム画像データに対して、画像レジストレーション処理２０１を行う。
パノラマ合成時には複数のフレーム画像データを単一の座標系に座標変換する必要があるが、この単一の座標系をパノラマ座標系と呼ぶことにする。
画像レジストレーション処理２０１は、２枚の連続するフレーム画像データを入力し、パノラマ座標系での位置合わせを行う処理である。２枚のフレーム画像データについての画像レジストレーション処理２０１によって得られる情報は、あくまで２枚の画像座標間の相対関係であるが、複数枚の画像座標系のうち一つ（例えば最初のフレーム画像データの座標系）を選び、パノラマ座標系に固定することによって、すべてのフレーム画像データの座標系をパノラマ座標系に変換することができる。
【００４１】
画像レジストレーション処理２０１で行う具体的な処理は、以下の二つに大別される。
１．画像内のローカルな動きを検出する。
２．上記で求めたローカルな動き情報から、画像全体のグローバルな動きを求める。
【００４２】
上記１の処理では一般的に、
・ブロックマッチング
・Ｈａｒｒｉｓ，Ｈｅｓｓｉａｎ，ＳＩＦＴ，ＳＵＲＦ，ＦＡＳＴなどの特徴点抽出及び特徴点マッチング
などが用いられ、画像の特徴点のローカルベクトルを求める。
【００４３】
上記２の処理では、上記１の処理で求められたローカルベクトル群を入力として、
・最小二乗法
・Ｍ−Ｅｓｔｉｍａｔｏｒ
・最小メジアン法（ＬＭｅｄＳ）
・ＲＡＮＳＡＣ（RANdom SAmple Consensus）
などのロバスト推定手法が用いられ、２枚間の座標系の関係を記述する最適なアフィン変換行列や射影変換行列（Homography）を求める。本明細書では、これらの情報を画像レジストレーション情報と呼ぶことにする。
【００４４】
またパノラマ合成準備処理部２３は再投影処理２０４を行う。
再投影処理２０４では、画像レジストレーション処理２０１によって得られた画像レジストレーション情報に基づき、すべてのフレーム画像データを単一の平面、あるいは円筒面、球面などの単一の曲面に投影処理を行う。また同時に、動被写体情報、検出・認識情報についても同一平面もしくは曲面に投影処理を行う。
フレーム画像データの再投影処理２０４は、ピクセル処理の最適化を考慮して、スティッチ処理２０６の前段処理として、もしくはスティッチ処理２０６の一部として行ってもよい。また簡易的に画像レジストレーション処理２０１の前、例えば前処理２００の一部として行ってもよい。またさらに簡略化して、処理そのものを行わず円筒投影処理の近似として扱ってもよい。
【００４５】
被写体情報検出部２０は、前処理２００が行われた各フレーム画像データについて、動被写体検出処理２０２、検出・認識処理２０３を行う。
パノラマ合成処理は、複数枚のフレーム画像データを合成するという特性上、撮像シーンに動被写体が存在すると動被写体の一部が分断されたり、ぼやけるなどの画像の破綻や画質の低下の原因となる。そのため動被写体を検出した上で、動被写体を避けてパノラマのシームを決定することが好ましい。
【００４６】
動被写体検出処理２０２では、２枚以上の連続するフレーム画像データを入力し、動被写体の検出を行う処理である。具体的な処理の例は、画像レジストレーション処理２０１によって得られた画像レジストレーション情報により、実際に位置合わせを行った２枚のフレーム画像データの画素の差分値がある閾値以上の場合に、その画素を動被写体と判定するものである。
あるいは、画像レジストレーション処理２０１のロバスト推定時に外れ値（アウトライア）として判断された、特徴点情報を利用して判定を行っても良い。
【００４７】
検出・認識処理２０３では、撮像されたフレーム画像データ内の人間の顔や身体、動物などの位置情報を検出する。人間や動物は動被写体である可能性が高く、仮に動いていなかったとしても、その被写体上にパノラマのシームが決定された場合、他の物体と比べて視感上の違和感を感じることが多いので、これらの物体を避けてシームを決定することが好ましい。つまりこの検出・認識処理２０３で得られた情報は、動被写体検出処理２０２の情報を補うために利用される。
【００４８】
シーム確定処理部２１によるシーム確定処理２０５は、再投影処理２０４からの画像データ、画像レジストレーション処理２０１からの画像レジストレーション情報、動被写体検出処理２０２からの動被写体情報、検出・認識処理２０３からの検出・認識情報を入力とし、パノラマ画像として破綻の少ない、適切なシームを確定する処理である。
【００４９】
ここでは、求めるシームは図３Ａで示したような、スイープ方向に垂直な直線に限定した手法の説明を行う。
まず図６により、重なり領域におけるコスト関数の定義について説明する。
パノラマ座標系においてスイープ方向の座標軸をｘ軸、ｘ軸と垂直な軸をｙ軸とする。そして図６Ａのように、ａk≦ｘ≦ｂkの領域において時刻ｋに撮像したフレーム画像データＦＭ＃（ｋ）と、時刻ｋ＋１に撮像したフレーム画像データＦＭ＃（ｋ＋１）が重なり合っているとする。
【００５０】
この重なり領域（ａk〜ｂk）における、動被写体検出処理２０２からの動被写体情報、検出・認識処理２０３からの検出・認識情報のそれぞれに対して適当な重みをつけ、ｘ軸方向に射影した上で、全情報について積分したものをコスト関数ｆk (x)と定義する。  すなわち、
【数１】
2012222674.tif 000003
但し、
・ｍｏi＝｛０，１｝：動被写体検出情報（０≦ｉ≦Ｎmo−１)
・ｗｍｏi：動被写体検出情報に対する重み関数（０≦ｉ≦Ｎmo−１)
・ｄｓｔj＝｛０，１｝：検出・認識情報（０≦ｊ≦Ｎdet−１)
・ｗｄｓｔj：検出・認識情報に対する重み関数（０≦ｊ≦Ｎdet−１)
と定義する。
【００５１】
コスト関数値が高いほど、そのライン上には動被写体や人体などの物体が多く存在することを意味する。前述の通り、パノラマ画像における破綻を最小限に抑えるためには、シームはこれらの物体を避けて決めるべきであるので、コスト関数値の低いｘ座標値をシームの位置とすればよい。
【００５２】
動被写体検出処理２０２、検出・認識処理２０３は、通常数〜数十画素を一辺にもつブロック単位で行われるため、コスト関数ｆk (x)はｘが整数値で定義された離散関数である。
動被写体検出情報に対する重み関数ｗｍｏiは、例えばその動被写体における動き量の大きさとすれば、動き量の大きい物体のある領域ほどシームになりにくくなる。
【００５３】
図６Ａにおいては、フレーム画像データＦＭ＃（ｋ）、ＦＭ＃（ｋ＋１）の重なり領域（ａk〜ｂk）における、動被写体情報、検出・認識情報の該当画素ブロックを例示している。この場合、例えばｘ軸上のａｋ≦ｘ≦ｂｋの範囲で上記（数１）のコスト関数ｆk (x)で求められるコスト値は例えば図６のようになる。
そして、コスト値の最も低いｘ座標値（ｘk）が、２つのフレーム画像データＦＭ＃（ｋ）、ＦＭ＃（ｋ＋１）間のシームとして適切な位置となる。
シーム確定処理２０５では、このようにコスト関数を用いて、シームとして適切なｘ座標値を算出する。
但し、ここでの説明はあくまでも２つのフレーム画像データ間のコスト関数でみた場合である。本実施の形態では、ｍ個のシームの組み合わせを最適化するものであり、シーム確定処理２０５では、単にこのように２枚のフレーム画像データ間で、シームを確定させるものではない。詳しくは後に述べる。
【００５４】
なお、検出・認識情報に対する重み関数ｗｄｓｔjは、例えば顔検出、人体検出など検出器の種別において変更したり、あるいは検出時の信頼性（スコア値）としたり、検出された座標によって変更するなどによって、コスト関数値を調整することが考えられる。
さらに動被写体検出処理２０２と検出・認識処理２０３の検出精度、信頼度が異なる場合、検出精度、信頼度が高い方の重み関数を、低い方の重み関数に比べて、相対的に高く設定することによって、検出精度、信頼度をコスト関数に反映することができる。
このようにシーム確定処理部２１は、コスト関数ｆk (x)を、被写体情報の信頼度を反映する関数としてもよい。
【００５５】
またシーム確定処理部２１は、コスト関数を、画像の空間的条件を反映するコスト関数ｆ’k (x)としてもよい。
即ち上記（数１）式では、動被写体情報、検出・認識情報のみからコスト関数ｆk (x)を定義したが、さらにこのコスト関数ｆk (x)に対して、ｇ(x, ｆk (x))によって、新たなコスト関数ｆ’k (x)を定義する。
【数２】
2012222674.tif 000004
【００５６】
この新たなコスト関数ｆ’k (x)を使用することによって、動被写体情報、検出・認識情報だけでは表現できない、空間的なコスト値の調整を行うことができる。
一般的に、レンズの収差の影響で画像周辺部の画質は、中心部の画質よりも劣る傾向がある。そのため、画像周辺部をパノラマ画像になるべく使用しないようにしたい。このためには、シームを重なり領域の中央付近で決定すればよい。
そこで、例えば以下のようなｇ(x, ｆk (x))を用いて、コスト関数ｆ’k (x)を定義すればよい。
【数３】
2012222674.tif 000005
但しｔ0、ｔ1は正の定数値である。
【００５７】
空間的条件を反映するコスト関数ｆ’k (x)を図７で模式的に説明する。
図７Ａは、重なり領域（ａk〜ｂk）において、上記（数１）のコスト関数ｆk (x)で与えられるコスト値を示している。図６Ｂではコスト値を曲線で示したが、コスト関数ｆk (x)はｘが整数値で定義された離散関数であることから、実際には図７Ａのように棒グラフ状となる。
この場合、図中のｘ座標値のｘｐ〜ｘｑの範囲でコスト値が最小となっているため、この座標値ｘｐ〜ｘｑの範囲であれば、ｘ座標値をシームとしても良い。しかし、上記のようになるべくシームを重なり領域の中央付近としたい。
【００５８】
ここで、上記（数３）の、ｔ0・｜ｘ−（ｂk−ａk）／２｜の項は、図７Ｂのような係数を与えることを意味する。即ち画像の中央に行くほどコストが低くなるような係数である。なお、（数３）のｔ1はコスト関数ｆk (x)によるコスト値が０となる場合（動被写体が存在しない部分など）で係数によってコスト値の差が無くなってしまうことを避けるためのオフセット値である。
結局図７Ｂのような係数成分が反映されることで、重なり領域（ａk〜ｂk）において、上記（数３）のコスト関数ｆ’k (x)で与えられるコスト値は、図７Ｃのようになる。すると、座標値ｘｐが、シームとして選択される。これはつまり、なるべく重なり領域の中央付近でシームが決められるという関数となる。
【００５９】
例えば以上のように、コスト関数を適切に設計することにより、各種の条件を織り込んだ最適なシームを選択することができる。
【００６０】
ここまで２つのフレーム画像データ間の重なり領域において、最適なシームを決めるためにはコスト関数値が最小になる位置を求めれば良いことを説明した。
次にｎ（ｎ＞２）枚のフレーム画像データを合成するときの最適なシームの組み合わせを求める手法について説明する。
ｎ個のフレーム画像データを考えた場合、その重なり領域の数はｎ−１個になり、コスト関数もｎ−１個定義されることになる。
【００６１】
図８はｎ個のフレーム画像データを考えた場合のコスト関数の関係を示したものである。即ちフレーム画像データＦＭ＃０、ＦＭ＃１間のコスト関数ｆ0、フレーム画像データＦＭ＃１、ＦＭ＃２間のコスト関数ｆ1、・・・フレーム画像データＦＭ＃（ｎ−２）、ＦＭ＃（ｎ−１）間のコスト関数ｆn-2を示している。
ｎ個のフレーム画像データをパノラマ合成し、全体として最適なシームを選ぶためには、
【数４】
2012222674.tif 000006
を最小にするｘ0、ｘ1・・・ｘn-2を求めれば良い。
ただしｘkは以下を満たす整数値である。
・ｘk-1＋α≦ｘk≦ｘk+1＋α  （シームの拘束条件）
・ａk≦ｘk≦ｂk  （コスト関数の定義域）
【００６２】
ここでαは隣接するシームの最低間隔を定義する定数値である。
上記（数４）を最小化する問題は、一般に組み合わせ最適化問題と呼ばれ、以下のような解法が知られている。
・厳密解を求める解法
−分枝限定法
−Memoization
−動的計画法(Dynamic Programming)
−グラフカット
・近似解を求める解法
−局所探索法（山登り法）
−焼きなまし法(Simulated Annealing)
−タブーサーチ
−遺伝的アルゴリズム(Genetic Algorithm)
【００６３】
以上のいずれかの手法により（数４）の最小化問題を解く事が可能である。
ここでは、パノラマ合成を行うｎ個の全フレーム画像データＦＭ＃０〜ＦＭ＃（ｎ−１）を対象として、各隣接フレーム画像データ間のｎ−２個のシームを求める場合を述べたが、本実施の形態では、ｍ＋１個のフレーム画像データ（但しｍ＜ｎ）について、ｍ個のシームを求める処理を順次行う。この場合、上記（数４）を最小とするｍ個のシーム（例えばｘ0、ｘ1・・・ｘm）を求めれば良いものとなる。
【００６４】
図５の画像合成部２２ではスティッチ処理２０６を行う。
スティッチ処理２０５では、シーム確定処理２０５で確定した全てのシームの情報と、各フレーム画像データを使用して、最終的にパノラマ画像を生成する。
【００６５】
この場合、隣接するフレーム画像データ間を、単純にシームで接続させるようにしてもよいが、上述したブレンド処理を行うことが画質上好ましい。
図９でブレンド処理の一例を説明する。図９は、フレーム画像データＦＭ＃（ｋ）とＦＭ＃（ｋ＋１）の合成を模式的に示している。確定されたシームＳＭｋ（座標値ｘk）を太線で示している。
図示のように、シーム前後の領域ｘk−β≦ｘ≦ｘk＋βをブレンド対象の領域ＢＬとして、つなぎ目の不自然さを低減するためにブレンド処理を行う。それ以外の領域ｘ＞ｘk＋β、ｘk−β＞ｘに対しては、単純な画素値のコピー、あるいはパノラマ座標系への再サンプリングのみを行い、すべての画像を接合する。
【００６６】
ブレンド処理は以下の演算で行う。
【数５】
2012222674.tif 000007
ＰＩk（ｘ，ｙ）：パノラマ座標（ｘ，ｙ）におけるパノラマ画像の画素値
Ｉk（ｘ，ｙ）：パノラマ座標（ｘ，ｙ）におけるフレーム画像データＦＭ＃（ｋ）の画素値
【００６７】
以上の図５の各処理によって、ｎ個のフレーム画像データに対して、スイープ方向に垂直な直線に限定した場合の最適なシームが求まり、最終的にパノラマ合成画像を得ることができる。
【００６８】
＜４．パノラマ合成処理例Ｉ＞
以下では、図６のような機能構成で実行される、本実施の形態のパノラマ合成処理例を説明していく。
以下に例示する処理例では、ｎ個のフレーム画像データを合成してパノラマ画像を生成する際に、そのｎ個のフレーム画像データの入力過程で、順次シームを確定させていく。即ち（ｍ＋１）個のフレーム画像データ群毎に、その（ｍ＋１）個のフレーム画像データの各隣接画像間でのｍ個のシームについて総合的に最適なシームを求める。そして、ｍ個以下のｌ個のシーム（ｍ≧ｌ：ｌは少なくとも１以上）を確定させる。この処理をフレーム画像データの入力過程で繰り返し行って、各シームを確定させていく。
つまり、ｎ個の全てのフレーム画像データの入力が完了する前にシーム確定処理を順次進めていく。さらに、シーム確定がされたフレーム画像データでは、すでにパノラマ合成に使用しない画像部分が確定する。これにより、必要な画像部分のみを、その後のパノラマ合成に用いる画像データとして記憶し、不要な部分は記憶しない。これにより、処理過程での記憶しておく画像容量を削減する。
さらに、（ｍ＋１）個のフレーム画像データ群で、各シームを求めることで、その複数のフレーム画像データの全体を考慮したシーム確定がなされるようにする。
【００６９】
まず、図１０でパノラマ合成処理例Ｉを説明する。なお図１０（及び後述する図１４、図１５）は、主に図５に示した各機能構成で実行される処理要素に、いくつかの制御要素を付加してフローチャート化したものである。図１０の処理において図５の処理要素と同名の処理については,以下の説明で図５の対応する処理を付記するのみとし、重複した詳しい説明は避ける。
【００７０】
ステップＦ１００の画像撮像は、パノラマ撮像モードにて１枚の静止画像を撮像し、撮像装置１内で１枚のフレーム画像データとして取り込む処理を意味する。即ち制御部１０３の制御により、撮像素子部１０１で得られる撮像信号が画像処理部１０２で撮像信号処理され、１枚のフレーム画像データとなる。
このフレーム画像データは、そのまま画像処理部１０２でのパノラマ合成処理（図５の各部によるステップＦ１０１以降の処理）に供されても良いし、一旦メモリ部１０５に取り込まれた後、１個のフレーム画像データとして画像処理部１０２でのパノラマ合成処理に供されてもよい。
【００７１】
画像処理部１０２及び制御部１０３によって実現される図５の各部（パノラマ合成準備処理部２３、被写体情報検出部２０、シーム確定処理部２１、画像合成部２２）では、ステップＦ１００に基づくフレーム画像データの入力に応じて、ステップＦ１０１以降の処理を行う。
ステップＦ１０１でパノラマ合成準備処理部２３は、前処理を行う（図５の前処理２００）。
ステップＦ１０２でパノラマ合成準備処理部２３は、画像レジストレーション処理を行う（図５の画像レジストレーション処理２０１）。
ステップＦ１０３で被写体情報検出部２０は、動被写体検出処理を行う（図５の動被写体検出処理２０２）。
ステップＦ１０４で被写体情報検出部２０は、検出・認識処理を行う（図５の検出・認識処理２０３）。
ステップＦ１０５でパノラマ合成準備処理部２３は、再投影処理を行う（図５の再投影処理２０４）。
【００７２】
ステップＦ１０６では、ステップＦ１０５までの処理データのメモリ部１０５への一時保存を行う。即ち、画像のピクセル情報、画像レジストレーション情報、動被写体検出情報、検出・認識情報などのパノラマ合成に用いる処理データを一時保存する。またフレーム画像データ自体も、この時点で保存されていなければ、メモリ部１０５に一時保存する。
これはパノラマ合成準備処理部２３及び被写体情報検出部２０がシーム確定処理部２１に受け渡す各種データや画像を一時記憶させる処理となる。
【００７３】
その後、ステップＦ１０７で未確定のシーム数がｍ個以上となるまで、ステップＦ１００で得られるフレーム画像データの入力毎に、ステップＦ１０１〜Ｆ１０６の処理を繰り返す。
【００７４】
シーム確定処理部２０５はステップＦ１０７の判断に応じて処理を実行する。
即ちステップＦ１０７において、未確定のシームがｍ個以上になったと判断される場合、つまり、一時保存したシーム確定されていないフレーム画像データがｍ＋１個となった場合、シーム確定処理部２１が、ステップＦ１０８においてｍ個のシームに対して前述の手法で（数４）の最適化を行う。その最適化結果のｍ個の解のうち撮像開始順からｌ（ｌ≦ｍ）個のシームを確定させる。
さらにステップＦ１０９でシーム確定処理部２１は、シームを確定したフレーム画像データについてメモリ部１０５に保存させる。この場合、シームが確定しているため、最終的にパノラマ画像に寄与しない画素データ部分を保存する必要はなく、必要な部分のみを保存すればよい。また動被写体検出情報、検出・認識情報も保存する必要もない。ステップＦ１０６で一時保存したデータとして、シーム確定したフレーム画像データに関するデータは、この時点で捨てれば良い。
【００７５】
以上のステップＦ１００〜Ｆ１０９の処理を、ステップＦ１１０での撮像終了判定が成立するまで繰り返す。ステップＦ１１０の撮像終了とは、制御部１０３がパノラマ撮像モードでの撮像終了の判定を行う処理である。撮像終了の条件は、
・撮像者がシャッターボタンを離した
・規定の画角の撮像が終了した
・規定の撮像枚数を超過した
・規定のスイープ方向と垂直方向の手振れ量を超過した
・その他のエラー
などがある。
【００７６】
上記ステップＦ１０７，Ｆ１０８，Ｆ１０９の処理を図１１，図１２で説明する。
なお、一例としてステップＦ１０７における未確定シーム数の判断基準のｍ＝５とする。またステップＦ１０８で確定させるシーム数ｌ＝１とする。
図１１は、順次入力されてくるフレーム画像データＦＭ＃０、ＦＭ＃１・・・を示している。
ステップＦ１００で最初のフレーム画像データＦＭ＃０が入力された後、５番目のフレーム画像データＦＭ＃４が入力された時点までの期間は、未確定のシーム数は４以下であるため、各フレーム画像データ（ＦＭ＃０〜ＦＭ＃４）の入力毎にステップＦ１０１〜Ｆ１０６が繰り返される。
６番目（つまりｍ＋１個目）のフレーム画像データＦＭ＃５が入力され、ステップＦ１０６までの処理が行われた時点で、ステップＦ１０７では、未確定のシーム数が５であるため、未確定シーム数≧ｍとなり、ステップＦ１０８に進むことになる。
【００７７】
この場合、シーム確定処理部２１はステップＦ１０８で、（ｍ＋１）個のフレーム画像データ群（つまりフレーム画像データＦＭ＃０〜ＦＭ＃５）について、隣接フレーム画像データ間のつなぎ目となるｍ個の各つなぎ目の位置を、それぞれのフレーム画像データについての動被写体検出処理２０２（ステップＦ１０３）及び検出・認識処理２０３（ステップＦ１０４）で検出された被写体情報を用いた最適位置判定処理によって求める。そしてｌ個（例えば１個）のつなぎ目を確定させる。
このときの最適位置判定処理は、フレーム画像データＦＭ＃０とＦＭ＃１間、ＦＭ＃１とＦＭ＃２間、ＦＭ＃２とＦＭ＃３間、ＦＭ＃３とＦＭ＃４間  ＦＭ＃４とＦＭ＃５間の５つのシームを最適化する処理である。即ち、各隣接フレーム画像データについての上記（数１）のコスト関数ｆk （又は上記（数３）のｆ’k）で求められる５つのシームについて、上記（数４）により最適化されるようにする。
そして最適化された５つのシームの内、順番が早い方からのｌ個、例えば１個のシームを確定させる。
図１２Ａで模式的に示す。図１２Ａには、フレーム画像データＦＭ＃０〜ＦＭ＃５をパノラマ座標上に重ねた状態で示しているが、各隣接フレーム画像データ間のシームＳＭ０〜ＳＭ４としてのｘ座標値ｘ0〜ｘ4を上記（数４）により最適化する。
そして先頭の１個のシームＳＭ０が、ｘ座標値ｘ0であるとして確定させる。
【００７８】
ステップＦ１０９ではシームが確定されたフレーム画像データの保存を行うが、この場合、図１２Ｂに示すようにフレーム画像データＦＭ＃０の一部を保存することとなる。つまりシームＳＭ０が確定されることで、フレーム画像データＦＭ＃０の画像領域は、パノラマ画像に使用する領域ＡＵと、パノラマ画像に使用しない領域ＡＮＵに分けられることとなる。ステップＦ１０９では、領域ＡＵのみを保存すればよい。
そしてステップＦ１０６で一時保存したフレーム画像データＦＭ＃０の全体の画像データや、シーム確定に用いるフレーム画像データＦＭ＃０の関連データはこの時点で消去すれば良い。
【００７９】
例えば以上のように、最初のステップＦ１０８，Ｆ１０９では、図１１Ａに示すように、フレーム画像データＦＭ＃０〜ＦＭ＃５を対象として５つのシームの最適化を行い、１つのシーム、即ちフレーム画像データＦＭ＃０とＦＭ＃１間のシームＳＭ＃０を確定させ、必要な画像領域を保存する。
その後、さらに後続のフレーム画像データＦＭ＃６が入力され、ステップＦ１０１〜Ｆ１０６が行われる。
上記の最初のステップＦ１０８では、１つのシームＳＭ０を確定させたのみであるため、フレーム画像データＦＭ＃６が入力後のステップＦ１０７では、再び未確定のシーム数が５となる。
【００８０】
そこで今度は図１１Ｂに示すように、ステップＦ１０８で、フレーム画像データＦＭ＃１〜ＦＭ＃６を対象として５つのシームの最適化を行い、１つのシーム、即ちフレーム画像データＦＭ＃１とＦＭ＃２間のシームＳＭ＃１を確定させる。そしてステップＦ１０９でフレーム画像データＦＭ＃１について必要な画像領域を保存する。
さら同様に、フレーム画像データＦＭ＃７の入力後は、図１１Ｃに示すように、ステップＦ１０８で、フレーム画像データＦＭ＃２〜ＦＭ＃７を対象として５つのシームの最適化を行い、１つのシーム、即ちフレーム画像データＦＭ＃２とＦＭ＃３間のシームＳＭ＃２を確定させる。そしてステップＦ１０９でフレーム画像データＦＭ＃２について必要な画像領域を保存する。
【００８１】
このように、シーム確定処理部２１は、（ｍ＋１）個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各シームを最適位置判定処理によって求め、ｍ個以下のｌ個のシームを確定させる処理を、フレーム画像データの入力過程で順次実行していく。
なお、ここではｌ＝１として１個のシームを確定させていったが、ｍ＝５の場合、確定させるシーム数ｌは２個〜５個であってもよい。
【００８２】
図１０のステップＦ１００〜Ｆ１０９の処理は、その後もステップＦ１１０で撮像終了と判断されるまで継続される。
撮像終了となったら、ステップＦ１１１で、シーム確定処理部２１が、その時点で未確定のシームを、上記同様に確定させていく。結果として、全部でｎ個のフレーム画像データＦＭ＃０〜ＦＭ＃（ｎ−１）に関し、図３Ａに示したような全てのシームＳＭ０〜ＳＭ（ｎ−２）が確定されることになる。
【００８３】
ステップＦ１１２では画像合成部２２がスティッチ処理２０６を実行する。即ち各シームＳＭ０〜ＳＭ（ｎ−２）で、各フレーム画像データをつなぎ合わせる。つなぎ合わせる際にはブレンド処理も行う。
以上で、図４に示したような１つのパノラマ画像データが生成される。
【００８４】
この図１０のパノラマ合成処理例Ｉによれば、全フレーム画像データの撮像終了を待たずに、シーム確定処理２０５が順次行われていく。
そして全画像データを保存するのはステップＦ１０６における一時保存で最大でフレーム画像データのｍ＋１枚分のみである。ｎ−ｍ−１個分のフレーム画像データは、パノラマ画像に寄与する部分の画素データのみ保存すれば良いことになり、必要なメモリ容量が大幅に削減される。
【００８５】
例えば通常のパノラマ合成処理の場合で、単に２枚間のシームをコスト関数で決めるだけでなく、全フレーム画像データを考慮して各シームを最適化するには、ｎ個のフレーム画像データが全て入力された後に、各シームを確定させる必要がある。すると、処理過程で全画像の撮像が終了するまで、ｎ個のフレーム画像データを保存しておく必要があり、一時保存に必要なメモリ容量が大きくなる。特に高解像度化が進み、１枚のフレーム画像データのデータサイズが大きくなると、ｎ個のフレーム画像データの保存に必要なメモリ容量は膨大となる。これはメモリの利用効率の悪化が生じ、またメモリ制約の大きい組み込み機器においては、撮像画像の解像度を下げたり、撮像画像枚数を減らすなどの対応をしなければ実現不可能な場合もある。
【００８６】
本実施の形態の場合、上記のように必要なメモリ容量が大幅に削減されるため、メモリ制約の大きい撮像装置１等でも、解像度を下げたり、撮像画像枚数を少なくするということなく、高画質なパノラマ合成の生成が可能となる。
即ち本実施の形態としてパノラマ合成処理例Ｉを行うようにすれば、撮像、位置合わせ、各種検出処理などの処理が終了した少数の画像群（ｍ＋１枚：例えば数枚）から徐々にシーム確定を行い、これを繰り返すことにより漸進的にパノラマ画像全体のシームを決定することにより、すでに必要なくなった画像データ、付随する情報を消去することが可能になり、メモリ効率が大幅に向上する。特に搭載メモリが限られている組み込み機器においては、従来では不可能であった高解像度、広画角でのパノラマ合成が可能になる。
また、シーム確定処理が撮像中にも順次行われることで、パノラマ合成の完了までの全体の処理時間も短縮できる。
【００８７】
ただし、全フレーム画像データを取り込んだ後にｎ個の全フレーム画像データを対象としてシームを最適化するわけではないので、その点でパノラマ画質が低下する可能性がある。
そこで次のような工夫で、なるべく全体の画像からみても順次確定されるシームが最適化されるようにするとよい。
即ちステップＦ１０８においてシームを最適化する際に、ｍ個のシームのうち、時間的に時間的に先のフレーム画像データのシームほど、コスト関数の定義域ａk≦ｘ≦ｂk内の、よりスイープ方向と逆方向寄りの位置、すなわち図８におけるｘ座標の小さい位置で最適化を行うようにする。こうすることによって、次回以降に最適化を行うシームに対しての自由度を残すことになり、パノラマ画質の性能低下を低減することができる。
【００８８】
このための１つの手法としては、シーム確定処理部２１が、コスト関数値を求めるコスト関数を、（ｍ＋１）個のフレーム画像データ群内のフレーム順序を反映する関数とする。
或いは別の手法としては、シーム確定処理部２１は、（ｍ＋１）個のフレーム画像データ群において、コスト関数値に基づいて各隣接フレーム画像データ間でのシームを求める際の拘束条件を、（ｍ＋１）個のフレーム画像データ群内のフレーム順序に応じて変化させる。例えば拘束条件として、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲（つまり重なり領域ａk〜ｂk）の設定を変化させる。
【００８９】
まずコスト関数をフレーム順序を反映する関数とする手法について述べる。
この場合、コスト関数ｆ’k(x)（又はｆk(x)）の調整を行えばよい。
例えば下記の式で、既存のコスト関数ｆ’k(x)から、調整されたコスト関数ｆ''k(x)を求める。
【数６】
2012222674.tif 000008
なお、ｔ2は正の定数値である。
【００９０】
この場合、ｔ2・ｋ（ｘ−ａk）の項により、重なり領域ａk〜ｂkの範囲で、左側（ａk側）でのｘ座標でのコスト値が低くなるように調整され、かつ、そのコスト値の度合いが時間的に早いフレーム画像データほど大きくなるようにする。
従って、ｍ個のシームのうち、時間的に先のフレームのシームほど、コスト関数の定義域ａk≦ｘ≦ｂk内で、ｘ座標の小さい位置でシームが最適化されやすい傾向とすることができる。
【００９１】
また、拘束条件をフレーム順序に応じて変化させる場合は、次のようにする。
コスト関数の定義域ａk≦ｘ≦ｂkを、
ａk≦ｘ≦ｂk−ｔ3・ｋ
とする。−ｔ3 は正の定数値である。
【００９２】
このようにすると、コスト関数の定義域が、時間的に早いフレーム画像データほど左側（ａk側）での狭い範囲となる。
図１３に模式的に示すと、フレーム画像データＦＭ＃０とＦＭ＃１の間のコスト関数の定義域は範囲ＣＡ０、フレーム画像データＦＭ＃１とＦＭ＃２の間のコスト関数の定義域は範囲ＣＡ１、フレーム画像データＦＭ＃２とＦＭ＃３の間のコスト関数の定義域は範囲ＣＡ２というようになる。結果として、時間的に先のフレームのシームほど、ｘ座標の小さい位置でシームが最適化されやすい傾向となる。
【００９３】
以上のように、コスト関数を調整するようにしたり、制約条件を調整すること、或いはその両方を行うことにより、ｎ個の全撮像画像によるシーム最適化時と同一の最適化アルゴリズムで、ｍ＋１個のフレーム画像データ群による性能劣化の少ない最適化が可能である。
従って図１０の処理によって、パノラマ画質の性能低下を極力抑えた上で、大幅なメモリ使用量の削減が可能である。
【００９４】
＜５．パノラマ合成処理例II＞
実施の形態のパノラマ合成処理例IIを図１４で説明する。
この図１４のパノラマ合成処理例IIは、図５のパノラマ合成準備処理部２３及び被写体情報検出部２０の処理と、シーム確定処理部２１及び画像合成部２２の処理を並列処理としたものである。実質的な処理内容は図１０と同様である。
【００９５】
図１４Ａは、撮像によってステップＦ２００で入力される各フレーム画像データについて、パノラマ合成準備処理部２３と被写体情報検出部２０で実行される処理を示している。
即ちフレーム画像データの入力毎に、パノラマ合成準備処理部２３による前処理（ステップＦ２０１）、画像レジストレーション処理（ステップＦ２０２）、被写体情報検出部２０による動被写体検出処理（ステップＦ２０３）、検出・認識処理（ステップＦ２０４）、パノラマ合成準備処理部２３による再投影処理（ステップＦ２０５）が行われる。そしてそのフレーム画像データ及び関連情報がメモリ部１０５に一時記憶される。
以上の処理は図１０のステップＦ１００〜Ｆ１０６と同様である。
この処理が、ステップＦ２０７で撮像終了と判断されるまで繰り返される。
【００９６】
図１４Ｂはシーム確定処理部２１、画像合成部２２の処理を示している。
シーム確定処理部２１は、ステップＦ２２０で未確定のシーム数を確認する。即ち図１４Ａの処理でメモリ部１０５に一時記憶されるフレーム画像データ群による未確定のシーム数を確認する。そして未確定のシーム数≧ｍであれば、ステップＦ２２１でシーム確定処理、ステップＦ２２２で画像データの保存処理を行う。以上は図１０のステップＦ１０７、Ｆ１０８、Ｆ１０９と同様である。
この図１４Ｂの処理は、図１４Ａの処理において撮像終了、つまり新規なフレーム画像データの入力が終了となるまでは、ステップＦ２２０〜Ｆ２２２を繰り返す。
【００９７】
新規なフレーム画像データの入力が終了となったら、ステップＦ２２３からＦ２２４に進み、シーム確定処理部２１が、その時点で未確定のシームを、上記同様に確定させていく。結果として、全部でｎ個のフレーム画像データＦＭ＃０〜ＦＭ＃（ｎ−１）に関し、図３Ａに示したような全てのシームＳＭ０〜ＳＭ（ｎ−２）が確定されることになる。
ステップＦ２２５では画像合成部２２が、確定された全シームを用いてパノラマ画像データを生成するスティッチ処理を行う。
【００９８】
以上の図１４Ａ、図１４Ｂの処理が並列に実行されることで、図１０のパノラマ合成処理例Ｉの場合と同様の効果を得ることができる。
【００９９】
＜６．パノラマ合成処理例III＞
実施の形態のパノラマ合成処理例IIIを図１５により説明する。
このパノラマ合成処理例IIIは、全画像の撮像終了を待たずに、シーム確定処理だけでなくシームが確定した画像についてのスティッチ処理まで行うものである。
【０１００】
図１５においてステップＦ３００〜Ｆ３０８は、図１０のステップＦ１００〜Ｆ１０８と同様であるため繰り返しの説明は避ける。
この図１５の場合、シーム確定処理部２１がステップＦ３０８でｌ個のシームを確定させる毎に、ステップＦ３０９で画像合成部２２がスティッチ処理を行う。この処理を撮像終了まで繰り返す。
【０１０１】
ステップＦ３１０で撮像終了と判断された後は、ステップＦ３１１でシーム確定処理部２１が残りのシームを確定させ、ステップＦ３１２で画像合成部２２が確定された残りのシームに基づくスティッチ処理を行って、パノラマ画像データを完成させる。
【０１０２】
この図１５の処理によっても図１０の処理と同様な効果が得られる。その上でこの図１５の処理の場合、図１０の処理では必要だったｎ−ｍ−１枚分のフレーム画像データの、パノラマ画像に使用する画素部分の画像データの記憶も必要無くなり、さらなるメモリ量の削減が可能となる。
さらに画像撮像中にスティッチ処理までをも開始するため、全体のパノラマ合成処理時間をさらに短くすることもできる。
【０１０３】
＜７．プログラム＞
実施の形態のプログラムは、各フレーム画像データ毎に被写体情報を検出する処理と、（ｍ＋１）個のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各シームを、被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のｌ個のシームを確定させる処理とを、パノラマ画像生成に用いる一連のｎ個のフレーム画像データの入力過程において演算処理装置に順次実行させるプログラムである。
即ち、上記図１０、又は図１４、又は図１５の処理を画像処理部１０２や制御部１０３に実行させるプログラムとなる。
【０１０４】
実施の形態のプログラムは、上記の撮像装置１や、その他の情報処理装置、画像処理装置において内蔵されている記録媒体としてのＨＤＤ（Hard Disk Drive）や、ＣＰＵを有するマイクロコンピュータ内のＲＯＭ等に予め記録しておくことができる。
あるいはまた、プログラムは、フレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＭＯ(Magnet optical)ディスク、ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。
このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。例えばＣＤ−ＲＯＭにより提供されることで、パーソナルコンピュータ等の情報処理装置ではプログラムをインストールし、上述したパノラマ合成処理を実行できるものとなる。
なお、プログラムは、リムーバブル記録媒体からインストールする他、ダウンロードサイトから、ＬＡＮ(Local Area Network)、インターネットなどのネットワークを介してダウンロードすることもできる。
このようなプログラムのインストールによって、例えば汎用のパーソナルコンピュータを本開示の画像処理装置として機能させることも可能となる。
またプログラム、又はそのプログラムを記録した記録媒体によれば、上述した効果を実現する記録装画像処理装置を容易に実現することができる。
【０１０５】
＜８．変形例＞
以上、実施の形態について説明してきたが、本開示の画像処理装置は多様な変形例が考えられる。
本開示の画像処理装置は、上述の撮像装置１に搭載するほか、パーソナルコンピュータ、ＰＤＡ（Personal Digital Assistant）等の情報処理装置に搭載することもできる。また撮像機能を有する携帯電話機、ゲーム機、ビデオ機器、撮像機能を有さないがフレーム画像データを入力する機能を有する携帯電話機、ゲーム機、ビデオ機器、情報処理装置でも、本開示の画像処理装置を搭載することは有用である。
例えば撮像機能を有さない機器の場合、入力されてくる一連のフレーム画像データに対し、図１０，図１４，図１５のような処理を行うことで、上述した効果を奏するパノラマ合成処理を実現できる。
また被写体情報とともにフレーム画像データが入力される機器を考えれば、少なくとも図１４Ｂの処理を行うようにすればよい。
【０１０６】
さらに、図１０のステップＦ１１２、図１４のステップＦ２２４を除いた処理を行う画像処理装置も想定される。
即ち撮像によって得る一連のフレーム画像データ、もしくは外部機器から供給される一連のフレーム画像データについて、シーム確定までの処理を行う機器である。確定したシームの情報を外部機器に出力することで。外部機器側でパノラマ合成処理を行うことができる。
【０１０７】
また実施の形態では、図３Ａに示した直線状のシームを用いる場合の例で述べたが、図３Ｂのような非直線状のシームを設定する場合でも本開示の図１０，図１４，図１５のような処理は適用できる。
【０１０８】
なお本技術は以下のような構成も採ることができる。
（１）パノラマ画像生成に用いる一連のｎ個のフレーム画像データの入力過程で、フレーム画像データについての被写体情報を検出する被写体情報検出部と、
（ｍ＋１）個（但しｍ＜ｎ）のフレーム画像データ群毎に、隣接フレーム画像データ間のつなぎ目となるｍ個の各つなぎ目の位置を、上記被写体情報検出部で検出された被写体情報を用いた最適位置判定処理によって求め、ｍ個以下のつなぎ目を確定させる処理を、上記入力過程で順次行うシーム確定処理部と、
を備えた画像処理装置。
（２）上記シーム確定処理部で確定されたつなぎ目に基づいて、各フレーム画像データを合成していくことで、上記ｎ個のフレーム画像データを用いたパノラマ画像データを生成する画像合成部を、さらに備えた上記（１）に記載の画像処理装置。
（３）上記画像合成部は、上記シーム確定処理部によって（ｎ−１）個のつなぎ目が確定された後に、上記ｎ個のフレーム画像データを用いたパノラマ画像データを生成する上記（２）に記載の画像処理装置。
（４）上記画像合成部は、上記入力過程において上記シーム確定処理部が１以上のつなぎ目を確定させる毎に、当該確定されたつなぎ目に基づく複数のフレーム画像データの合成を行う上記（２）に記載の画像処理装置。
（５）上記シーム確定処理部は、上記最適位置判定処理として、上記被写体情報から被写体情報を反映したコスト関数値を算出し、該コスト関数値を最適化する演算を行って上記ｍ個の各つなぎ目の位置を求める上記（１）乃至（４）のいずれかに記載の画像処理装置。
（６）上記コスト関数を最適化する演算は、
それぞれが、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲内で上記コスト関数値に基づいて選択されるつなぎ目位置である上記ｍ個の各つなぎ目について、各つなぎ目のコスト関数値の総計が最小となる上記ｍ個の各つなぎ目を求める演算である上記（５）に記載の画像処理装置。
（７）上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、画像の空間的条件を反映する関数とする上記（５）又は（６）に記載の画像処理装置。
（８）上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、上記被写体情報の信頼度を反映する関数とする上記（５）乃至（７）のいずれかに記載の画像処理装置。
（９）上記シーム確定処理部は、上記コスト関数値を求めるコスト関数を、上記（ｍ＋１）個のフレーム画像データ群内のフレーム順序を反映する関数とする上記（５）乃至（８）のいずれかに記載の画像処理装置。
（１０）上記シーム確定処理部は、上記（ｍ＋１）個のフレーム画像データ群において、上記コスト関数値に基づいて各隣接フレーム画像データ間でのつなぎ目を求める際の拘束条件を、上記（ｍ＋１）個のフレーム画像データ群内のフレーム順序に応じて変化させる上記（５）乃至（９）のいずれかに記載の画像処理装置。
（１１）上記拘束条件は、隣接フレーム画像データ間で被写体が重複したつなぎ目設定範囲の設定である上記（１０）に記載の画像処理装置。
（１２）上記被写体情報検出部は、上記被写体情報の検出として、動被写体検出を行う上記（１）乃至（１１）のいずれかに記載の画像処理装置。
（１３）上記被写体情報検出部は、上記被写体情報の検出として、顔検出を行う上記（１）乃至（１２）のいずれかに記載の画像処理装置。
（１４）上記被写体情報検出部は、上記被写体情報の検出として、人体検出を行う上記（１）乃至（１３）のいずれかに記載の画像処理装置。
【符号の説明】
【０１０９】
１  撮像装置、２０  被写体情報検出部、２１  シーム確定処理部、２２  画像合成部、２３  パノラマ合成準備処理部、１００  レンズユニット、１０１  撮像素子、１０２  画像処理部、１０３  制御部、１０４  表示部、１０５  メモリ部、１０６  記録デバイス、１０７  操作部、１０８  センサー部
【図１】
2012222674.tif 000009
【図２】
2012222674.tif 000010
【図３】
2012222674.tif 000011
【図４】
2012222674.tif 000012
【図５】
2012222674.tif 000013
【図６】
2012222674.tif 000014
【図７】
2012222674.tif 000015
【図８】
2012222674.tif 000016
【図９】
2012222674.tif 000017
【図１０】
2012222674.tif 000018
【図１１】
2012222674.tif 000019
【図１２】
2012222674.tif 000020
【図１３】
2012222674.tif 000021
【図１４】
2012222674.tif 000022
【図１５】
2012222674.tif 000023