以下、発明を実施するための形態について説明する。なお、説明は以下の順序で行う。
1.撮像装置の構成
2.撮像装置の動作
3.画像処理部の構成
4.パノラマ画像の生成処理
5.処理をプログラムにより実行する場合
[1.撮像装置の構成]
図2は、本発明を適用した撮像装置の一実施の形態の構成例を示す図である。撮像装置10は、光学系、信号処理系、記録系、表示系、および制御系から構成される。
光学系は、被写体の光画像を集光するレンズ21、レンズ21からの光画像の光量を調整する絞り22、および集光された光画像を光電変換して電気信号に変換する撮像素子23から構成される。撮像素子23は、例えばCCD(Charge Coupled Devices)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどからなる。
信号処理系は、サンプリング部24、A/D(Analog/Digital)変換部25、および画像処理部30から構成される。サンプリング部24は、例えば、相関2重サンプリング部(CDS:Correlated Double Sampling)によって実現され、撮像素子23からの電気信号をサンプリングしてアナログ信号を生成する。これにより、撮像素子23において発生するノイズが軽減される。サンプリング部24において得られるアナログ信号は、撮像された被写体の画像を表示させる画像信号である。
A/D変換部25は、サンプリング部24から供給されるアナログ信号をデジタル信号に変換して、画像処理部30に出力して、画像処理部30は、A/D変換部25から入力されるデジタル信号に所定の画像処理を施す。
また、記録系は、画像信号を符号化または復号する符号化/復号化部41と、画像信号を記録するメモリ42とから構成される。符号化/復号化部41は、画像処理部30によって処理されたデジタル信号である画像信号を符号化してメモリ42に記録させたり、メモリ42から画像信号を読み出して復号し、画像処理部30に出力したりする。
表示系は、D/A(Digital/Analog)変換部43、ビデオエンコーダ44、および表示部45から構成される。
D/A変換部43は、画像処理部30によって処理された画像信号をアナログ化してビデオエンコーダ44に出力して、ビデオエンコーダ44は、D/A変換部43からの画像信号を表示部45に適合する形式のビデオ信号にエンコードする。表示部45は、例えば、LCD(Liquid Crystal Display)等により実現され、ビデオエンコーダ44におけるエンコードで得られたビデオ信号に基づいて、ビデオ信号に対応する画像を表示する。また、表示部45は、被写体の撮像時にはファインダとしても機能する。
制御系は、タイミング生成部46、操作入力部47、ドライバ48、および制御部50から構成される。また、画像処理部30、符号化/復号化部41、メモリ42、タイミング生成部46、操作入力部47、および制御部50は、バス51を介して相互に接続されている。
タイミング生成部46は、撮像素子23、サンプリング部24、A/D変換部25、および画像処理部30の動作のタイミングを制御する。操作入力部47は、ボタンやスイッチなどからなり、ユーザによるシャッタ操作やその他のコマンド入力を受け付けて、ユーザの操作に応じた信号を制御部50に出力する。
ドライバ48には所定の周辺機器が接続され、ドライバ48は接続された周辺機器を駆動する。例えばドライバ48は、周辺機器として接続された磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ等の記録媒体からデータを読み出して制御部50に出力する。
制御部50は、撮像装置10の全体を制御する。例えば、制御部50は、ドライバ48を介して、ドライバ48に接続されている記録媒体から制御用プログラムを読み出して、制御用プログラムや操作入力部47からのコマンド等に基づいて、撮像装置10全体の動作を制御する。
[2.撮像装置の動作]
次に、撮像装置10の動作について説明する。撮像装置10では、被写体からの入射光、すなわち被写体の光画像は、レンズ21および絞り22を介して撮像素子23に入射し、撮像素子23によって光電変換されて電気信号とされる。撮像素子23で得られた電気信号は、サンプリング部24によってノイズ成分が除去され、A/D変換部25によってデジタル化された後、画像処理部30が内蔵する図示せぬ画像メモリに一時的に格納される。
なお、通常の状態、つまりシャッタ操作がされる前の状態では、タイミング生成部46による信号処理系に対するタイミングの制御により、画像処理部30の画像メモリには、一定のフレームレートで、絶えずA/D変換部25からの画像信号が上書きされるようになされている。画像処理部30の画像メモリ内の画像信号は、D/A変換部43によってデジタル信号からアナログ信号に変換され、ビデオエンコーダ44によってビデオ信号に変換されて、ビデオ信号に対応する画像が表示部45に表示される。
この場合において、表示部45は、撮像装置10のファインダとしての機能も担っており、ユーザは、表示部45に表示される画像を見ながら構図を定め、操作入力部47としてのシャッタボタンを押下して、画像の撮像を指示する。シャッタボタンが押下されると、制御部50は、操作入力部47からの信号に基づいて、タイミング生成部46に対し、シャッタボタンが押下された直後の画像信号が保持されるように指示する。これにより、画像処理部30の画像メモリに画像信号が上書きされないように、信号処理系が制御される。
そして、その後、画像処理部30の画像メモリに保持されている画像信号が、符号化/復号化部41によって符号化されてメモリ42に記録される。以上のような撮像装置10の動作によって、1枚の画像信号の取り込みが完了する。
[3.画像処理部の構成]
図3は、画像処理部30の構成を示している。画像処理部30は、撮像画像保持部301、円筒射影部302、動き補償パラメータ算出部303、顔検出部304、人体領域推定部305、被写体情報射影部306、接続ライン設定部307、画像射影部308、および画像合成部309から構成される。
撮像画像保持部301には、撮像装置10により撮像された被写体の画像(以下、撮像画像と称する)が供給される。撮像画像保持部301は、供給された複数の撮像画像を保持する。撮像画像保持部301に供給される撮像画像は、撮像装置10が所定方向に移動(スイープ)している状態で連続して撮像された画像であり、撮像画像の撮像時には、連続して撮像される2つの撮像画像上に同じ被写体が含まれるように、撮像装置10が移動される。
なお、以下、連続して撮像された撮像画像のうち、t番目に撮像された撮像画像をフレームF(t)の撮像画像I(t)とも称することとする。
円筒射影部302は、撮像画像保持部301から撮像画像を読み出して、読み出した撮像画像を円筒面に射影する。円筒射影部302は、円筒面に射影された撮像画像を、動き補償パラメータ算出部303、顔検出部304および画像射影部308に出力する。
動き補償パラメータ算出部303は、円筒射影部302からの撮像画像に基づいて、撮像画像のフレーム間における、撮像装置10の動き(移動)を補償する動き補償パラメータを算出し、被写体情報射影部306と画像射影部308に出力する。例えば、動き補償パラメータは、複数の撮像画像のそれぞれを、同じ被写体がほぼ重なるように並べた場合における、撮像画像同士の相対的な位置関係を示す情報である。
顔検出部304は、円筒射影部302からの撮像画像を用いて顔検出を行い、顔検出結果を示す顔検出情報を人体領域推定部305に出力する。
人体領域推定部305は、顔検出情報を利用して撮像画像における人体領域を推定して、推定結果を示す被写体情報を被写体情報射影部306に出力する。
被写体情報射影部306は、動き補償パラメータ算出部303からの動き補償パラメータに基づき隣接する撮像画像が互いに重なる重複領域を判別する。さらに、被写体情報射影部306は、重複領域における被写体情報を撮像方向の変化方向であるスイープ軸に射影して、その射影結果を接続ライン設定部307に出力する。なお、スイープ軸とは、撮像画像の撮像時に撮像装置10を移動させる方向と同じ方向の軸をいい、スイープ軸の方向は予め定められている。また、スイープ軸の方向は、ユーザが操作入力部47を操作することにより、撮像画像の撮像前または後に、複数の方向のなかから、スイープ軸の方向を選択できるようにしてもよい。また、動き補償パラメータは、撮像装置10の動き(移動)を補償するためのパラメータであることから、この動き補償パラメータに基づき、スイープ軸の方向を自動的に決定するようにしてもよい。
接続ライン設定部307は、連続するフレームの撮像画像を互いに接続するときの接続位置である接続ラインを設定して、接続ラインを示す接続ライン情報を画像合成部309に出力する。また、接続ライン設定部307は、被写体情報射影部306から供給された射影後の被写体情報に基づいて接続ラインを設定する。
画像射影部308は、動き補償パラメータ算出部303からの動き補償パラメータを用いて、円筒射影部302からの撮像画像をパノラマ座標系上に射影し、射影された撮像画像を画像合成部309に出力する。ここで、パノラマ座標系は、スイープ軸に垂直な軸と、スイープ軸とを軸とする2次元座標系、つまり所定の平面とされ、パノラマ座標系は予め定められている。
画像合成部309は、接続ライン設定部307で設定された接続ライン情報が示す接続ラインで、画像射影部308から供給された射影後の撮像画像を互いに接続し、1枚のパノラマ画像を生成する。パノラマ画像は、複数の撮像画像の撮像時に撮像対象となった撮像空間上の全領域を被写体とする画像とされる。
[4.パノラマ画像の生成処理の説明]
撮像装置10は、ユーザが操作入力部47を操作して、パノラマ画像の生成を指示したとき、撮像画像を撮像してパノラマ画像を生成する処理であるパノラマ画像の生成処理を開始する。以下、図4のフローチャートを参照して、撮像装置10によるパノラマ画像の生成処理について説明する。
ステップST11において、撮像素子23は、被写体の撮像を行う。撮像素子23は、撮像装置10の撮像方向が順次変化されている状態で被写体の撮像を行い、複数枚の撮像画像を生成してステップST12に進む。例えば、ユーザは撮像装置10を所定方向に回動させながら、複数枚の撮像画像を連続して撮像装置10に撮像させる。
被写体からの光はレンズ21および絞り22を介して撮像素子23に入射するので、撮像素子23は入射した光を光電変換することにより、撮像画像を撮像する。得られた撮像画像(画像信号)は、撮像素子23から、サンプリング部24、A/D変換部25、画像処理部30、符号化/復号化部41を介してメモリ42に供給され、記録される。このとき、撮像画像は符号化/復号化部41により符号化される。また、メモリ42への記録時において、各撮像画像には撮像順にフレーム番号が付される。
複数の撮像画像がメモリ42に順次記録されると、それらの撮像画像は、符号化/復号化部41によりメモリ42から読み出されて復号され、画像処理部30の撮像画像保持部301に供給されて保持される。
なお、撮像により得られた撮像画像が、メモリ42に記録されずに、直接、撮像画像保持部301に供給されるようにしてもよい。さらに、撮像画像は、撮像された1つの静止画像であってもよいし、撮影された動画像を構成する1フレーム分の画像であってもよい。
ステップST12において、円筒射影部302は、撮像画像を円筒面に射影する。円筒射影部302は、撮像画像保持部301に保持されている撮像画像を順番に読み出して、読み出した撮像画像を、撮像画像の撮像時の焦点距離に基づいて、所定の円筒面に射影する。また、円筒射影部302は、射影された撮像画像を動き補償パラメータ算出部303、顔検出部304、および画像射影部308に出力して、ステップST13に進む。
図5は、撮像画像の円筒面への射影を説明する図である。例えば、撮像画像の撮像時におけるレンズ21の焦点距離FDを半径とする円筒の側面を円筒面CSとして、撮像面PSを撮像して得られた撮像画像が、円筒面CSに射影(投影)される。すなわち、撮像面PSの円筒面投影が行われる。図5の例では、円筒面CSは、撮像面PSの中央に接する面とされている。なお、レンズ21の焦点距離は、撮像画像の撮像時におけるレンズ21の位置等から得られる。
このように撮像画像を円筒面に射影することで、パノラマ画像の生成時に、接続する撮像画像間の被写体の位置ずれ(誤差)をより小さく抑えることができる。
図6は撮像面と円筒面の関係を示している。図6に示すように、光学中心点C11に撮像装置10の光学中心が位置する状態で、光学中心点C11を中心として時計回りの方向に撮像装置10を回動(スイープ)させながら、ユーザが撮像装置10に複数の撮像画像の生成を行わせたとする。なお、図6において図5における場合と対応する部分には同一の符号を付している。
図6において、5つの撮像面PS-0〜PS-4で撮像が行われて、5つの撮像画像が生成される。そして、得られた撮像画像は、それぞれ円筒面CSに射影される。円筒面CSは、光学中心点C11を中心とし、焦点距離を半径とする円筒の側面である。
この場合、撮像された撮像画像を、そのまま合成してパノラマ画像を生成することを考える。図6において、互いに隣接する撮像面の端近傍に位置する画像の重複部分は、空間的に円筒面CSの半径方向にずれている。このため、撮像画像同士をそのまま重ねて並べると、被写体の位置にずれが生じて、同じ被写体が重ならなくなり、パノラマ画像の品質が劣化してしまう。
そこで、各撮像画像を円筒面CSに射影してから、射影された撮像画像同士を重ねて合成してパノラマ画像を生成する。このようにパノラマ画像を生成することで、撮像画像を円筒面に射影することなく合成する場合と比べて、撮像画像間の被写体の位置ずれ(誤差)をより小さく抑えることができる。したがって、撮像画像を円筒面CSに射影して、射影後の画像を合成してパノラマ画像を生成すれば、撮像画像間において生じる被写体の位置の誤差が軽減されて、より高品質なパノラマ画像を得ることができる。
図4のステップST13において、動き補償パラメータ算出部303は、円筒射影部302から供給された各撮像画像について、撮像画像の動き補償パラメータを算出する。動き補償パラメータ算出部303は、算出した動き補償パラメータを被写体情報射影部306と画像射影部308に出力してステップST14に進む。
例えば、動き補償パラメータ算出部303は、連続する2つのフレームの撮像画像を用いて、特徴点の抽出やブロックマッチングにより、撮像画像のグローバルモーションベクトルを動き補償パラメータとして算出する。
グローバルモーションベクトルとは、撮像画像上の被写体全体のフレーム間の動きを示すグローバルな動きベクトルである。撮像画像上の被写体の多くは、実空間上において動きのない静止物体であるので、グローバルモーションベクトルは、撮像画像上の静止物体のフレーム間の動き、つまり撮像画像の撮像時における撮像装置10の動きを示すベクトルであるということができる。
なお、動き補償パラメータは、グローバルモーションベクトルに限らず、撮像装置10の動きを補償可能とするパラメータ例えば平面射影行列やアフィン行列などであってもよい。これらの平面射影行列やアフィン行列も、連続する2つのフレームの撮像画像を用いた、特徴点の抽出やブロックマッチングにより求めることができる。動き補償パラメータとして、グローバルモーションベクトルを採用する場合には、平面射影行列やアフィン行列を採用する場合よりも、より低い計算コストで動き補償パラメータを得ることができる。
ステップST14において顔検出部304は、顔検出を行う。顔検出部304は、円筒射影部302で円筒射影された撮像画像から、人間の顔の検出を各フレームで行い、検出された顔の領域である検出顔領域を示す顔検出情報を生成する。
顔検出部304は、例えば顔の輝度分布情報が記録されているテンプレート群と撮像画像とのマッチングによって顔検出を行う(例えば特開2004−133637号公報参照)。顔検出部304は、3次元直交座標系のXYZ軸の各々に対して傾いたテンプレート群と、撮影画像に縮小処理をかけた縮小画像を複数種類用意する。次に、顔検出部304は、テンプレート群と複数種類用意された縮小画像とを順次マッチングさせて実際の顔の傾きを判定する。また、顔検出部304は、縮小画像に対して2次元平面上をずらしながらテンプレートを順次マッチングさせて、ある領域がテンプレートにマッチしたとき、その領域を顔の存在する位置とする。さらに、顔検出部304は、撮像画像の縮小率から顔の大きさを求める。また、顔検出部304は、マッチしたときに用いたテンプレートから直交3軸周りの顔の回転角(すなわち、ヨー、ピッチ、ロール角)を求める。このようにして、顔検出部304は、顔検出情報例えば顔の位置、大きさ、形状、顔の向き(ロール角・ピッチ角・ヨー角)などを算出できる。
また、顔検出部304は、検出した顔の領域を示す検出顔領域の大きさや位置、検出顔領域の正面度、検出顔領域の顔らしさ等を用いて信頼度の算出を行い(例えば特開2008−277904号公報参照)、算出した信頼度を顔検出情報として用いてもよい。例えば、顔検出部304は、検出顔領域の面積が大きい場合、検出顔領域が中央に近い場合、ヨー角度が0度に近く正面を向いているような場合、基準顔データとの相関が高く人物の顔らしさが高い場合等で、信頼度を高くする。
なお、以下の説明において、顔検出情報は、例えば顔の領域を示す矩形の検出顔領域の左上隅と右下隅の座標を示す。
ステップST15において人体領域推定部305は、人体領域推定を行う。人体領域推定部305は、顔検出部304で生成された顔検出情報を利用して人体領域の推定を行う。例えば、人体領域推定部305は、顔検出部304で検出された検出顔領域の位置や大きさを基準として推定頭部領域の位置と大きさを決定する。また、人体領域推定部305は、検出顔領域や推定頭部領域の位置と大きさに基づき推定胴体部領域の位置や大きさを決定する。このように、人体領域推定部305は、推定頭部領域や推定胴体部領域を推定する。人体領域推定部305は、人体領域の推定結果を被写体情報射影部306に出力してステップST16に進む。
図7は、検出顔領域と推定頭部領域および推定胴体部領域を例示している。顔検出情報は、例えば矩形状の検出顔領域の左上隅の座標「fx0,fy0」と右下隅の座標「fx1,fy1」を示している。また、推定頭部領域は、矩形状領域として左上隅の座標を「hx0,hy0」、右下隅の座標を「hx1,hy1」とする。さらに、推定胴体部領域は、矩形状領域として左上隅の座標を「bx0,by0」、右下隅の座標を「bx1,by1」とする。
このように、検出顔領域と推定頭部領域と推定胴体部領域の座標を定義したとき、推定頭部領域や推定胴体部領域は、検出顔領域を入力として人体領域を推定するための推定関数を用いて推定できる。式(1)〜(8)において、func_hx0〜func_by1は、推定関数を示している。推定頭部領域の座標値は、検出顔領域の座標値を用いて式(1)〜(4)の演算を行うことで決定できる。また、推定胴体部領域の座標値は、検出顔領域の座標値を用いて式(5)〜(8)の演算を行うことで決定できる。
hx0=func_hx0(fx0,fy0,fx1,fy1) ・・・(1)
hy0=func_hy0(fx0,fy0,fx1,fy1) ・・・(2)
hx1=func_hx1(fx0,fy0,fx1,fy1) ・・・(3)
hy1=func_hy1(fx0,fy0,fx1,fy1) ・・・(4)
bx0=func_bx0(fx0,fy0,fx1,fy1) ・・・(5)
by0=func_by0(fx0,fy0,fx1,fy1) ・・・(6)
bx1=func_bx1(fx0,fy0,fx1,fy1) ・・・(7)
by1=func_by1(fx0,fy0,fx1,fy1) ・・・(8)
ここで、推定頭部領域は、例えば矩形の中心が検出顔領域の中心と一致しており、この中心を基準として検出顔領域を拡大した領域とする。このように推定頭部領域を設定する場合、func_hx0〜func_hy1は、検出顔領域の中心を基準として、検出顔領域の左上隅の座標「fx0,fy0」と右下隅の座標「fx1,fy1」をそれぞれx方向にhscale_x倍、y方向にhscale_y倍する関数となる。
推定胴体部領域は、例えば矩形の中心を検出顔領域の中心と一致させて、この中心を基準として検出顔領域を拡大して、この拡大領域を推定頭部領域の下部に接する位置までオフセットさせた領域とする。このように推定胴体部領域を設定する場合、func_bx0〜func_by1は、検出顔領域の中心を基準として、検出顔領域の左上隅の座標「fx0,fy0」と右下隅の座標「fx1,fy1」をそれぞれx方向にbscale_x倍、y方向にbscale_y倍として、さらに推定頭部領域の下部に接する位置までオフセットさせる関数となる。
このように、推定関数を設定しておけば、顔検出によって検出顔領域が決定されたとき、図7に示すように人体領域を推定できる。なお、人体領域の推定では、図7に示すように推定頭部領域と推定胴体部領域を決定する場合に限られるものではない。例えば、手足と胴体を別個に推定する構成であってもよい。また、図7では、各領域を矩形状の領域としたが、領域形状は矩形状に限られるものではない。例えば、推定頭部領域は、検出顔領域の中心を基準とした円状あるいは楕円状の領域としてもよい。この場合、式(1)〜(4)の推定関数は、検出顔領域の中心を基準とした円状あるいは楕円状の領域を検出顔領域の大きさに応じて拡大する関数とすればよい。
なお、人体領域推定部305は、顔検出部304で検出された検出顔領域の位置や大きさを用いて推定頭部領域や推定胴体部領域を決定する場合に限らず、他の方法を用いて人体領域を推定するようにしてもよい。例えば、人物の体に対応するテンプレートを用いたパターンマッチング等によって推定人体領域の検出を行うことも可能である。
図4のステップST16において、被写体情報射影部306は、被写体情報の射影を行う。被写体情報射影部306は、動き補償パラメータ算出部303からの動き補償パラメータを用いて、人体領域推定部305からの被写体情報のスイープ軸への射影を行い、スイープ軸上の位置毎に評価値の総和を算出して人体スコアを生成する。被写体情報射影部306は、生成した人体スコアを接続ライン設定部307に出力してステップST17に進む。
すなわち、被写体情報射影部306は、スイープ軸と垂直な方向にある撮像画像上の各位置の評価値を積分して人体スコアとすることにより、評価値のスイープ軸への射影を行う。射影結果としての人体スコアは、撮像画像の対応する領域における人体の面積(大きさ)に応じて大きくなる。
図8は、撮像画像上の各位置の評価値を例示している。なお、図8の(A)は推定した人体領域を示しており、図8の(B)は「y=Lya」の位置における評価値、図8の(C)は「x=Lxa」の位置における評価値をそれぞれ示している。
ここで、スイープ軸がx軸と平行(x方向)であるとき、スイープ軸の各位置の人体スコアは、x座標が、そのスイープ軸の位置のx座標と同じ値である撮像画像の位置の評価値の総和となる。具体的には、スイープ軸上の所定の位置に対応するxy座標系の値が例えば「x0」であったとする。この場合、重複領域DR上のx座標が「x0」である位置の評価値の総和が、スイープ軸上の所定の位置における人体スコアとして求められる。
図9は、人体スコアの算出を説明する図である。図9の(A)は、撮像画像I(t)における人体領域を示している。また、図9の(B)は、被写体情報をスイープ軸に射影して得られる人体スコアを示している。
図9の(A)に示すように、撮像画像I(t)では、撮像画像I(t)の中央からやや左側に人体が含まれているため、その人体の部分に対応するスイープ軸の位置では、図9の(B)におけるスコア線MSが示すように人体スコアが大きくなっている。逆に、人体の含まれない部分の評価値は「0」であり、また、隣接する撮像画像と重複しない領域では評価値は求められないので、撮像画像I(t)の人体が存在していない領域に対応するスイープ軸の位置では、人体スコアは「0」となっている。
このようにして、被写体情報射影部306は、全ての撮像画像について、被写体情報としての評価値をスイープ軸に射影して、スイープ軸の各位置の人体スコアを求める。なお、被写体情報射影部306において、各撮像画像の領域毎の評価値を、スイープ軸のどの位置に射影させるかは、撮像画像毎の動き補償パラメータにより知ることができる。
被写体情報をスイープ軸に射影して、スイープ軸の各位置における人体スコアを求めることで、接続ラインを定めるのに用いられる2次元の情報を1次元の情報に変換することができる。これにより、接続ラインの設定に必要な情報の量を削減するとともに、その情報の記録のためのメモリ容量を節約することができる。
図4のステップST17において、接続ライン設定部307は、接続ラインの設定を行う。接続ライン設定部307は、被写体情報射影部306からの人体スコアに基づいて撮像画像を接続するときの接続ラインを設定して、この接続ラインを示す接続ライン情報を画像合成部309に出力してステップST18に進む。
図10は、接続ラインの探索について説明する図である。例えば、図10に示すように、撮像画像I(t)から、スコア線MStにより示される人体スコアが得られたとする。なお、図10の(A)は、撮像画像I(t)と撮像画像I(t+1)を示しており、図10の(B)は、人体スコアを示しており、横方向はスイープ軸の方向、縦方向はスイープ軸の各位置における人体スコアの大きさである。
接続ライン設定部307は、撮像画像I(t)と撮像画像I(t+1)とを合成するときの接続ラインを設定するにあたり、撮像画像I(t)と撮像画像I(t+1)が互いに重なる重複領域に対応するスイープ軸上の位置Qx0から位置Qx1までの範囲を探索範囲とする。ここで、位置Qx0は、撮像画像I(t+1)をスイープ軸に射影したときの撮像画像I(t+1)の左端の位置であり、位置Qx1は、撮像画像I(t)をスイープ軸に射影したときの撮像画像I(t)の右端の位置である。
接続ライン設定部307は、スイープ軸上の位置Qx0から位置Qx1を探索範囲として、探索範囲内において最も人体スコアが小さい位置を、撮像画像I(t)と撮像画像I(t+1)を接続する接続ラインとする。
また、撮像画像のスイープ方向の端部側は中央部に比べて歪みが多い。したがって、撮像画像が互いに重なる重複領域に接続ラインを設定して画像の接続を行う場合、接続ラインは、スイープ方向における重複領域の中央位置が好ましい。しかし、人体領域以外の評価値を「0」とすると、人体スコアは人体が含まれていない位置で「0」となり、人体スコアが最小となる範囲に接続ラインを設定すると、接続ラインを中央位置側に設定することができない場合が生じる。したがって、接続ライン設定部307は、図10の(C)に示すように、人体を含まない領域に対して重複領域のスイープ軸の方向における中央位置に近くなるほど小さくなる評価値を設定する。このように、人体を含まない領域に対して評価値の設定を行うと、図10の(B)に示すように、人体を含まない領域では、重複領域の中央に近くなるほどスコア線MStが小さくなる。
なお、図10では、スイープ軸上の探索範囲内の位置SMにおいて、スコア線MStにより示される人体スコアが最小となっているので、位置SMが接続ラインの位置とされる。したがって、接続ライン設定部307は、スイープ軸の位置が位置SMであって、スイープ軸に対して垂直な直線を接続ラインと設定する。
接続ラインの位置SMは、探索範囲内において最も人体スコアが小さい位置である。つまり、位置SMは、撮像画像I(t)と撮像画像I(t+1)を動き補償パラメータに基づいて、同じ被写体がほぼ重なるように所定面上に並べた場合に、人体領域を除いた位置となる。このため、画像のつなぎ目が人体となって視感上の違和感を与えてしまうことを防止できるようになる。また、人体を含まない領域についても、重複領域のスイープ軸の方向における中央位置で評価値が小さくなっているので、接続ラインを重複領域の中央側に設定できるので、歪みの少ない画像部分を用いて撮像画像を接続できる。さらに、接続ライン設定部307では、一次元の探索処理により、分断コストが最小となるスイープ軸上の位置を探索により、簡単かつ迅速に接続ラインを定めることができる。
接続ライン設定部307は、図10を参照して説明した探索処理を行って、全ての撮像画像について、隣接するフレームの撮像画像との接続ラインを定めていく。接続ライン設定部307は、例えば図11に示すように、フレーム番号の小さい順、つまり撮像時刻の古い順に、撮像画像の接続ラインを定めていく。
図11では、3つの連続するフレームF(t-1),フレームF(t),フレームF(t+1)の撮像画像I(t-1),撮像画像I(t),撮像画像I(t+1)のそれぞれが、動き補償パラメータに基づいて並べられている。撮像画像I(t-1),撮像画像I(t),撮像画像I(t+1)のうち、最もフレーム番号が小さいものは撮像画像I(t-1)であるから、接続ライン設定部307は、まず撮像画像I(t-1)と撮像画像I(t)との接続ラインを定める。
すなわち、図11の(A)に示すように、接続ライン設定部307は、互いに隣接する撮像画像I(t-1)と撮像画像I(t)との互いに重なる、スイープ軸上の位置Qx0(t-1,t)から位置Qx1(t-1,t)までの範囲を探索範囲として接続ラインを定める。その結果、探索範囲において人体スコアが最小となる位置SM(t-1,t)が接続ラインとされる。
次に、接続ライン設定部307は、図11の(B)に示すように撮像画像I(t)と撮像画像I(t+1)との接続ラインを定める。撮像画像I(t)と撮像画像I(t+1)が互いに重なる領域の左側の端、つまり撮像画像I(t+1)の左端の位置は、先に定めた撮像画像I(t-1)と撮像画像I(t)の接続ラインの位置SM(t-1,t)よりも左側に位置している。したがって、接続ライン設定部307は、位置SM(t-1,t)よりも左側の領域は、探索範囲から除外して、位置SM(t-1,t)から撮像画像I(t)の右端である位置Qx1(t,t+1)までの範囲を探索範囲として接続ラインを定める。その結果、探索範囲において動被写体スコアが最小となる位置SM(t,t+1)が接続ラインとされる。
このように連続するフレームの撮像画像を接続するための接続ラインが定められると、図11の(C)に示すように、画像合成部309において、接続ラインにより定まる撮像画像上の有効領域が互いに接続されてパノラマ画像とされる。なお、図11の(C)において、撮像画像I(t-1)〜I(t+1)の斜線部分は、パノラマ画像で用いられる有効領域を示している。例えば、撮像画像I(t)については、撮像画像I(t-1)との接続ラインの位置SM(t-1,t)から、撮像画像I(t+1)との接続ラインの位置SM(t,t+1)までの領域が有効領域となる。
このように、各撮像画像の隣接する他の撮像画像との接続ラインを順次、定めていくことにより、各撮像画像の有効領域を順次決定することができる。
ところで、図8に示すように推定した人体領域で評価値を一定とすると、スイープ軸をY軸と平行にした場合、推定頭部領域や推定胴体領域に比べて検出顔領域のサイズが小さいことから、検出顔領域の位置で人体スコアが小さくなって、接続ラインが検出顔領域に設定しまうことがある。したがって、人体領域推定部305は、上述のように人体領域を少なくとも顔領域を含む複数の領域に区分して、領域毎に評価値の重み付けを行うことで、接続ラインが検出顔領域に設定されてしまうことを防止できる。
図12は、評価値の重み付けを行った場合を示している。なお、図12の(A)は推定した人体領域を示しており、図12の(B)は「y=Lya」の位置における重み付け後の評価値、図12の(C)は「x=Lxa」の位置における重み付け後の評価値をそれぞれ示している。この図12に示すように、検出顔領域の評価値を大きくして、推定胴体領域の評価値を小さくする。このように評価値の重み付けを行うと、検出顔領域が含まれるときの人体スコアが大きくすることが可能となり、接続ラインが検出顔領域に設定されてしまうことを防止できる。また、推定胴体領域において、手足の部分では評価値の重みを小さくすれば、接続ラインは重要でない部分の位置に設定されるようになる。
図13は、接続ラインの探索について説明する図であり、スイープ軸はy軸と平行とする。例えば、図13に示すように、撮像画像I(t)から、スコア線MStにより示される人体スコアが得られたとする。なお、図13において、縦方向はスイープ軸の方向を示しており、横方向はスイープ軸の各位置における人体スコアを示している。
接続ライン設定部307は、撮像画像I(t)と撮像画像I(t+1)とを合成するときの接続ラインを定めるにあたり、撮像画像I(t)と撮像画像I(t+1)が互いに重なる重複領域に対応するスイープ軸上の位置Qy0から位置Qy1までの範囲を探索範囲とする。ここで、位置Qy0は、撮像画像I(t+1)をスイープ軸に射影したときの撮像画像I(t+1)の上端の位置であり、位置Qy1は、撮像画像I(t)をスイープ軸に射影したときの撮像画像I(t)の下端の位置である。
接続ライン設定部307は、スイープ軸上の位置Qy0から位置Qy1を探索範囲として、探索範囲内において最も人体スコアが小さい位置を、撮像画像I(t)と撮像画像I(t+1)の接続ラインの位置とする。
なお、図13では、スイープ軸上の探索範囲内の位置SMにおいて、スコア線MStにより示される人体スコアが最小となっているので、位置SMが接続ラインの位置とされる。したがって、接続ライン設定部307は、スイープ軸の位置が位置SMであって、スイープ軸に対して垂直な直線を接続ラインと設定する。
このように、人体領域に含まれる領域について評価値の重み付けを行うことで、推定した人体領域において重要でない部分例えば手足の部分等の位置に接続ラインを設定することができる。
また、評価値の重み付けは、領域毎に行う場合に限られるものではない。顔検出部304で検出顔領域の正面度や検出顔領域の顔らしさ等を用いて信頼度の算出を行ったときは、算出した信頼度を用いて評価値の重み付けを行うようにしてもよい。例えば、顔らしさの確度が高い検出顔領域は、評価値を大きくする。また、顔が正面を向いている検出顔領域は、横を向いている検出顔領域よりも評価値を大きくする。このようにすれば、重複領域に複数の検出顔領域が含まれるような場合でも、検出顔領域の重要度の区分けを行うことが可能となる。したがって、重要な画像領域に接続ラインが設定されてしまうことを防止できる。
図4のステップST18において、画像射影部308は、撮像画像をパノラマ座標系に射影する。画像射影部308は、動き補償パラメータ算出部303からの動き補償パラメータを用いて、円筒射影部302からの撮像画像をパノラマ座標系上に射影する。また、画像射影部308は、射影された撮像画像を画像合成部309に出力してステップST19に進む。
この射影により、撮像画像上の同じ被写体がほぼ重なるように、複数の撮像画像がパノラマ座標系上に並べられることになる。なお、パノラマ座標系は、スイープ方向に垂直な軸と、スイープ軸とを軸とする平面とされる。例えば、スイープ軸が、撮像画像の撮像時における撮像空間の鉛直方向と垂直な方向とされる場合には、スイープ軸に垂直な軸は、鉛直方向とされる。
ステップST19において、画像合成部309は、撮像画像を合成してパノラマ画像を生成する。画像合成部309は、接続ライン選択部307からの接続ライン情報で示された接続ラインで、画像射影部308から供給されたパノラマ座標系に射影された撮像画像の接続を行い、1枚のパノラマ画像を生成する。また、接続ラインで撮像画像を接続した場合、接続ラインの位置で色の違い等が目立ってしまうおそれがある。したがって、画像合成部309は、接続ラインを基準として接続領域を設けて、この接続領域においてブレンディング処理を行い、接続する撮像画像を重み付き加算するようにしてもよい。
図14は、撮像画像の接続について説明する図である。図14は、接続ラインの位置SM(t-1,t)で、撮像画像I(t-1)と撮像画像I(t)を接続する場合を示している。なお、図14において横方向はスイープ方向を示しており、2つの連続するフレームの撮像画像I(t-1)と撮像画像I(t)が、パノラマ座標系上に並べられている。また、図14の(A)は、パノラマ画像に用いられる有効領域を斜線の領域として示している。図14の(B)は、撮像画像I(t-1)に対する重みW(t-1)、図14の(C)は、撮像画像I(t)に対する重みW(t)を示している。
例えば、接続領域は、接続ラインの位置SM(t-1,t)が接続領域の中央位置となるように、位置SL(t-1,t)から位置SR(t-1,t)までの範囲とする。このとき、撮像画像I(t-1)では、位置SR(t-1,t)までの領域が有効領域R(t-1)となる。また、撮像画像I(t)では、位置SL(t-1,t)からの領域が撮像画像I(t)の有効領域R(t)となる。
重み付けは、接続領域における有効領域の端部側で「0」として他方の端部側で「1」とする。また、図14の(B)(C)では、線OMa,OMbによって重み付けが設定される。なお、重み付けは線OMa,OMbによって設定する場合に限られるものではない。重み付けは、接続領域の各位置で撮像画像I(t-1)に対する重み付けと撮像画像I(t)に対する重み付けの和が「1」であって、有効領域の端部側で「0」となるように順次減少させるように設定する。
このように接続ラインを基準として接続領域を設定して、接続領域内で撮像画像I(t-1)と撮像画像I(t)との合成比率を変化させて、撮像画像I(t-1)から撮像画像I(t)への画像の切り換えを順次行う。したがって、より高品質なパノラマ画像を得ることができるようになる。すなわち、接続される2つの有効領域の互いに重なる部分において、被写体の位置にずれがあったり、画素の色が異なったりする場合であっても、重み付き加算によりスムージング効果が得られる。これにより、被写体の一部が欠損したり、パノラマ画像に色のむらが生じたりすることを抑制することができ、自然なパノラマ画像を得ることができる。
画像合成部309は、このようにして、パノラマ座標系上の互いに隣接する撮像画像の有効領域を接続し、1つのパノラマ画像を生成する。さらに、画像合成部309は、トリミングを行い、接続された有効領域からなる1つの画像の一部の領域をパノラマ画像としてもよい。
図15は、パノラマ画像のトリミングについて説明する図である。例えば、撮像装置10をスイープさせて撮像画像を生成すると、撮像装置10がスイープ方向に対して変動すると、図15の(A)に示すように、連続して撮像された撮像画像I(0)〜I(6)は、パノラマ座標系上で上下方向にばらつきを生じる。なお、スイープ軸は、各撮像画像の長手方向となっている。
そのため、各撮像画像の有効領域を接続して得られる1つの画像は、矩形状とはならなくなる。そこで、画像合成部309は、図15の(B)に示すように、撮像画像I(0)〜I(6)の有効領域を接続して得られる画像全体の領域に内接する、最も大きい矩形領域P11を切り出して、パノラマ画像とする。このとき、矩形領域P11の長辺は、スイープ軸と平行になるようにされる。このように、トリミングを行うことにより、矩形状のパノラマ画像を得ることができる。
なお、図15の場合、撮像画像の各領域の被写体情報のスイープ軸への射影方向は、図15の(A)の点線で示されるようにスイープ軸と垂直であり、かつ撮像画像の短手方向と平行な方向となる。したがって、接続ラインも撮像画像の短手方向と平行な方向の直線となる。
また、撮像装置10をスイープさせる場合に、撮像装置10のスイープ方向が、撮像空間の鉛直方向に対して斜めの方向となってしまうこともある。そのような場合、例えば、図16の(A)に示すように、スイープ軸の方向が、撮像画像の長手方向に対して斜めの方向となる。
図16では、連続して撮像された撮像画像I(0)〜I(6)が、右斜め上の方向に並んでおり、これらの撮像画像が並ぶ方向と平行な方向がスイープ軸の方向とされている。この場合、スイープ軸は、各撮像画像の長手方向と平行となっていない。
このような場合、画像合成部309は、図16の(B)に示すように、撮像画像I(0)〜I(6)の有効領域を接続して得られる画像全体の領域に内接する、最も大きい矩形領域P12を切り出して、パノラマ画像とする。このとき、矩形領域P12の長辺は、スイープ軸と平行になるようにされる。
図16では、スイープ軸が斜め方向に設定されているため、スイープ軸を横方向とする場合と比べて、パノラマ画像とする矩形領域をより大きくすることができる。
なお、図16の場合、撮像画像の各領域の被写体情報のスイープ軸への射影方向は、図16の(A)にける点線で示されるようにスイープ軸と垂直であり、かつ撮像画像の短手方向に対して斜めの方向となる。したがって、接続ラインも撮像画像の短手方向に対して斜めの直線となる。
このようにしてパノラマ画像が生成されると、画像合成部309は、生成したパノラマ画像を出力し、パノラマ画像の生成処理は終了する。
例えば、画像合成部309から出力されたパノラマ画像は、符号化/復号化部41で符号化されてメモリ42に記録されたり、D/A変換部43およびビデオエンコーダ44を介して表示部45に供給されて表示されたりする。
以上のように、撮像装置10は、検出顔情報から人体領域を推定して、推定した人体領域で画像の接続が行われることがないように接続ラインを設定する。このため、画像のつなぎ目が人体となってしまうことが防止されて、高品質のパノラマ画像を生成できるようになる。
また、撮像装置10は、被写体情報をスイープ方向に射影して接続ラインを定めるようにしたので、より低い計算コストで、より高品質なパノラマ画像を得ることができる。
すなわち、従来の技術では、図1を参照して説明したように、2次元探索により接続ライン(つなぎ目SJ)を定めれば、人体領域に接続ラインが設けられてしまうという問題を解決して、より高品質なパノラマ画像を得ることができる。しかしながら、2次元探索では計算コストが高く、また2次元探索のために必要なメモリの記録容量も多く必要となってしまう。
これに対して、撮像装置10では、被写体情報からなる2次元の情報をスイープ軸という1次元の軸に射影するため、1次元探索により接続ラインを定めることができる。これにより、より低い計算コストで、より高品質なパノラマ画像を得られるだけでなく、メモリの記録容量も削減することができる。
さらに、人体領域に対して重み付けを行い、その重み付け結果を用いて接続ラインの設定を行うようにしたので、例えばスイープ方向にかかわらず、顔領域を除いて接続ラインを設定することができるようになる。
また、人体領域の推定は、検出顔領域を入力とした推定関数を用いて算出できることから、人体領域の推定も低い計算コストで行うことができる。
[5.処理をプログラムにより実行する場合]
さらに、上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図17は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
コンピュータ60において、CPU(Central Processing Unit)61、ROM(Read Only Memory)62、RAM(Random Access Memory)63は、バス64により相互に接続されている。
バス64には、さらに、入出力インタフェース65が接続されている。入出力インタフェース65には、キーボード、マウス、マイクロホンなどよりなる入力部66、ディスプレイ、スピーカなどよりなる出力部67、ハードディスクや不揮発性のメモリなどよりなる記録部68、ネットワークインタフェースなどよりなる通信部69、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア80を駆動するドライブ71が接続されている。
以上のように構成されるコンピュータでは、CPU61が、例えば、記録部68に記録されているプログラムを、入出力インタフェース65およびバス64を介して、RAM63にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU61)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD−ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア80に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
そして、プログラムは、リムーバブルメディア80をドライブ71に装着することにより、入出力インタフェース65を介して、記録部68にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部69で受信し、記録部68にインストールすることができる。その他、プログラムは、ROM62や記録部68に、予めインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであってもよいし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであってもよい。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であり、本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。