次に本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の実施の形態における画像処理装置100の機能構成例を示すブロック図である。画像処理装置100は、動画入力部110と、カメラワーク検出部120と、記録制御部130と、ファイル取得部140と、画像変換部150と、透明度変換部160と、画像合成部170と、画像メモリ180と、インデックス画像抽出部190と、動画記憶部200と、メタデータ記憶部210と、インデックス情報記憶部230と、パノラマ画像記憶部240と、一定区間動画音声情報抽出部250と、パノラマ画像配置位置決定部260と、選択部270と、操作受付部280と、表示制御部291と、表示部292と、音声制御部293と、音声出力部294とを備える。画像処理装置100は、例えば、デジタルビデオカメラ等の撮像装置で撮影された動画について、映像解析により特徴量を抽出し、この抽出された特徴量を用いて各種画像処理を施すことが可能なパーソナルコンピュータによって実現することができる。
動画入力部110は、デジタルビデオカメラ等の撮像装置(以下では、単に「カメラ」と称する。)により撮像された動画を入力する動画入力部であり、入力された動画をカメラワーク検出部120に出力する。
カメラワーク検出部120は、動画入力部110から出力された動画を解析して、撮影時におけるカメラの動き情報(カメラワーク)を検出するものであり、このカメラの動き情報に基づいて算出されたアフィン変換パラメータ(カメラワークパラメータ)を記録制御部130に出力する。すなわち、カメラワーク検出部120は、動画を構成する各画像から特徴点を抽出するとともに、この特徴点に対するオプティカルフロー(動きベクトル)を抽出し、この抽出された特徴点に対するオプティカルフローを解析して支配的な動きを見せた特徴点を選択し、この支配的な動きを見せた特徴点に対するオプティカルフローに基づいてカメラの動きを推定する。ここで、支配的な動きとは、複数の特徴点に対するオプティカルフローの中で、比較的多数のオプティカルフローが示す規則的な動きを意味する。なお、カメラワーク検出部120については、図2を参照して詳細に説明する。
記録制御部130は、動画入力部110から出力された動画を動画ファイルとして動画記憶部200に記録するとともに、カメラワーク検出部120から出力されたアフィン変換パラメータを、対応する動画およびフレームに関連付けてメタデータファイルとしてメタデータ記憶部210に記録するものである。
動画記憶部200は、記録制御部130の制御に基づいて動画入力部110から出力された動画を動画ファイルとして記憶するものである。また、動画記憶部200は、ファイル取得部140からの要求に応じて動画ファイルをファイル取得部140に供給し、表示制御部291からの要求に応じて動画ファイルを表示制御部291に供給する。なお、動画記憶部200に記憶される動画ファイルについては、図3を参照して詳細に説明する。なお、本発明の実施の形態では、音声情報が関連付けられている動画ファイルを例にして説明するが、音声情報が関連付けられていない動画ファイルについても本発明の実施の形態を適用することができる。
メタデータ記憶部210は、記録制御部130の制御に基づいてカメラワーク検出部120から出力されたアフィン変換パラメータをメタデータファイルとして記憶するものである。また、メタデータ記憶部210は、ファイル取得部140からの要求に応じてメタデータファイルをファイル取得部140に供給する。なお、メタデータ記憶部210に記憶されるメタデータファイルについては、図3を参照して詳細に説明する。
ファイル取得部140は、動画記憶部200に記憶されている動画ファイル、この動画ファイルに関連付けられてメタデータ記憶部210に記憶されているメタデータファイルを取得し、取得された各ファイルの情報を各部に供給するものである。具体的には、ファイル取得部140は、動画記憶部200に記憶されている動画ファイルと、この動画ファイルに関連付けられてメタデータ記憶部210に記憶されているメタデータファイルとを取得し、取得された動画ファイルの動画およびメタデータファイルのアフィン変換パラメータを画像変換部150に出力する。ここで、ファイル取得部140から出力される動画を構成する各フレームの出力については、操作受付部280からの操作入力に応じて、最後のフレームから先頭のフレームに向かっての出力、または、先頭のフレームから最後のフレームに向かっての出力の何れかの出力にも変更することができる。また、ファイル取得部140は、取得された動画ファイルを、フレーム毎に一定区間動画音声情報抽出部250に出力し、取得された動画ファイルを構成するフレームの数を透明度変換部160に出力する。
画像変換部150は、ファイル取得部140から出力された動画ファイルの動画を構成する画像について、この画像に対応するアフィン変換パラメータを用いてフレーム毎にアフィン変換を施し、アフィン変換された画像を透明度変換部160に出力するものである。具体的には、画像変換部150は、ファイル取得部140から出力された現フレームに対応する画像を、メタデータ記憶部210から供給されたアフィン変換パラメータを用いてアフィン変換する。すなわち、画像変換部150は、ファイル取得部140からの動画の出力が、最後のフレームから先頭のフレームに向かっての出力である場合には、アフィン変換パラメータの行列に対する逆行列を用いてアフィン変換する。一方、画像変換部150は、ファイル取得部140からの動画の出力が、先頭のフレームから最後のフレームに向かっての出力である場合には、アフィン変換パラメータの行列を用いてアフィン変換する。なお、この画像変換については、図9乃至図21等を参照して詳細に説明する。
透明度変換部160は、ファイル取得部140から出力された動画ファイルを構成するフレームの数に基づいて、画像変換部150によりアフィン変換された画像について、時系列で透明度を変換させるものであり、透明度が変換された画像を画像合成部170に出力する。なお、画像の透明度の変換については、図22および図23を参照して詳細に説明する。
画像合成部170は、透明度変換部160から出力された画像および画像メモリ180に保持されている合成画像を合成し、合成された新たな合成画像を画像メモリ180に保持させるものである。具体的には、画像合成部170は、画像メモリ180に保持されている直前までの各フレームに対応する合成画像に、画像変換部150によりアフィン変換され、透明度変換部160により透明度が変換された画像を上書きすることにより画像を合成する。また、1つの動画を構成する各フレームについての画像合成が終了した場合には、画像合成部170は、画像メモリ180に保持されている合成画像をパノラマ画像としてパノラマ画像記憶部240に出力して記録させる。このパノラマ画像は、動画記憶部200に記憶されている動画ファイルの動画を表す代表画像であり、この動画に含まれる各撮影空間の大部分が含まれるように作成される画像である。なお、これらの画像合成については、図9乃至図21等を参照して詳細に説明する。
画像メモリ180は、画像合成部170により合成された合成画像を保持するワークバッファであり、保持されている合成画像を画像合成部170に供給するものである。すなわち、画像メモリ180は、履歴画像を保持する画像メモリである。
インデックス画像抽出部190は、画像変換部150から出力された変換画像およびインデックス情報記憶部230に記憶されているインデックス画像に基づいて、ファイル取得部140から出力された動画ファイルの動画を構成する画像の中からインデックス画像を抽出するものであり、抽出されたインデックス画像を、これに対応するフレーム番号および位置情報とともにインデックス情報記憶部230に出力する。具体的には、インデックス画像抽出部190は、ファイル取得部140から出力された動画ファイルの動画を構成する画像のうちの先頭の画像をインデックス画像とし、このインデックス画像(先頭の画像)を、これに対応するフレーム番号および位置情報とともにインデックス情報記憶部230に記憶させる。そして、インデックス画像抽出部190は、先頭の画像以外の画像については、インデックス情報記憶部230に記憶されているインデックス画像と、アフィン変換された現フレームに対応する画像との重複率に基づいてインデックス画像を抽出する。また、インデックス画像抽出部190は、インデックス画像を抽出した場合には、現フレームに対応する画像がインデックス画像である旨を一定区間動画音声情報抽出部250に出力する。なお、このインデックス画像の抽出方法については、図25を参照して詳細に説明する。
一定区間動画音声情報抽出部250は、現フレームに対応する画像がインデックス画像である旨をインデックス画像抽出部190から受け取ると、ファイル取得部140から出力された動画のうちから、インデックス画像に対応するフレームから一定区間内の動画情報および音声情報を取得し、取得された一定区間内の動画情報および音声情報をそのインデックス画像に関連付けてインデックス情報記憶部230に記録させる。
インデックス情報記憶部230は、インデックス画像抽出部190から出力されたインデックス画像、このインデックス画像に対応するフレーム番号および位置情報と、一定区間動画音声情報抽出部250から出力された、このインデックス画像に対応する一定区間内の動画情報および音声情報とを関連付けて記憶するものであり、記憶されているインデックス画像、フレーム番号、動画ID、動画情報を表示制御部291に出力し、フレーム番号および位置情報を選択部270に出力する。また、インデックス情報記憶部230は、記憶されている位置情報をインデックス画像抽出部190に出力する。さらに、インデックス情報記憶部230は、記憶されている音声情報を音声制御部293に出力する。なお、インデックス情報記憶部230に記憶されている各情報については、図4を参照して詳細に説明する。
パノラマ画像記憶部240は、画像合成部170から出力された合成画像を、動画記憶部200に記憶されている動画に関するパノラマ画像(代表画像)として記憶するものであり、記憶されているパノラマ画像をパノラマ画像配置位置決定部260および表示制御部291に供給する。なお、パノラマ画像記憶部240に記憶されている各情報については、図5を参照して詳細に説明する。
パノラマ画像配置位置決定部260は、操作受付部280により受け付けられた操作入力の内容に応じて、表示部292に表示される表示領域におけるパノラマ画像記憶部240に記憶されている各パノラマ画像の配置位置を決定するものであり、決定された各パノラマ画像の配置位置を選択部270および表示制御部291に出力する。なお、この配置位置の決定については、図26乃至図33等を参照して詳細に説明する。
選択部270は、操作受付部280によりカーソルを移動させる操作入力、左クリック操作の操作入力、ダブルクリックの操作入力が受け付けられた場合には、カーソルの位置と、インデックス情報記憶部230に記憶されているインデックス画像の位置情報と、パノラマ画像配置位置決定部260により決定されたパノラマ画像の配置位置とに基づいて、インデックス情報記憶部230に記憶されているフレーム番号の中から1つのフレーム番号および動画IDを選択して、選択されたフレーム番号および動画IDを表示制御部291および音声制御部293に出力する。なお、この選択については、図37を参照して詳細に説明する。
操作受付部280は、各種入力キーからなるキーボードやマウス(ポインティングデバイス)を備え、これらのマウス等から操作入力を受け付けると、受け付けた操作入力の内容をファイル取得部140、パノラマ画像配置位置決定部260、選択部270および表示制御部291に出力するものである。なお、操作受付部280の少なくとも一部と表示部292とをタッチパネルとして一体として構成するようにしてもよい。また、マウスからの操作入力に応じて移動するカーソル(マウスポインタ)が表示部292に表示される。カーソルは、表示部292に表示される画面上において、指示や操作の対象を指し示すために用いられるマウスポインタである。マウスの操作として、例えば、「左クリック」とは、マウスの左側ボタンを1回だけ押すことを意味し、「ダブルクリック」とは、マウスの左側ボタンを連続して2回押すことを意味する。
表示制御部291は、操作受付部280の操作入力に応じて、パノラマ画像記憶部240に記憶されているパノラマ画像、動画記憶部200に記憶されている動画等を表示部292に表示させる制御を行うものである。また、表示制御部291は、選択部270からフレーム番号および動画IDが入力されると、インデックス情報記憶部230に記憶されているインデックス画像または動画情報を検索するとともに、この検索されたインデックス画像または動画情報を表示部292に表示させる。
表示部292は、表示制御部291からの制御に基づいて、パノラマ画像記憶部240に記憶されているパノラマ画像、動画記憶部200に記憶されている動画、または、インデックス情報記憶部230に記憶されているインデックス画像または動画情報を表示するものである。例えば、パーソナルコンピュータやテレビジョンのディスプレイにより実現することができる。なお、合成画像の表示例については、図23、図35等を参照して詳細に説明する。
音声制御部293は、カーソルの移動または左クリック操作に応じた選択部270からの指示に基づいて、インデックス情報記憶部230に記憶されている音声情報を音声出力部294に出力させる制御を行うものである。なお、動画記憶部200に記憶されている動画ファイルを再生させる場合についても音声出力を行うが、ここでの説明は省略する。
音声出力部294は、音声制御部293からの制御に基づいて、インデックス情報記憶部230に記憶されている音声情報を出力するものである。例えば、スピーカにより実現することができる。
図2は、本発明の実施の形態におけるカメラワーク検出部120の機能構成例を示すブロック図である。カメラワーク検出部120は、特徴点抽出部121と、オプティカルフロー計算部122と、カメラワークパラメータ算出部123とを備える。
特徴点抽出部121は、動画入力部110から出力された動画を構成するフレームに対応する画像から特徴点を抽出し、抽出された特徴点をオプティカルフロー計算部122に出力するものである。ここで、特徴点抽出部121は、動画入力部110から出力された動画を構成するフレームのうちの先頭のフレームについては、画像全体から特徴点を抽出し、先頭以外のフレームについては、直前のフレームに対応する画像と比較して新しく撮影された領域部分から特徴点を抽出する。なお、特徴点として、例えば、縦方向または横方向にエッジの勾配が強い点(一般に「コーナー点」と呼ばれている。以下では、「コーナー点」と称する。)を抽出することができる。このコーナー点は、オプティカルフローの計算に強い特徴点であり、エッジ検出を用いて求めることができる。なお、このコーナー点の抽出については、図6乃至図8を参照して詳細に説明する。また、この例では、特徴点抽出部121は、先頭のフレームについては画像全体から特徴点を抽出し、先頭以外のフレームについては直前の画像と比較して新しく撮影された領域部分から特徴点を抽出するが、処理能力等に応じて、先頭以外の各フレームについても、画像全体から特徴点を抽出するようにしてもよい。
オプティカルフロー計算部122は、特徴点抽出部121から出力された各特徴点に対するオプティカルフローを計算するものであり、計算して求められたオプティカルフローをカメラワークパラメータ算出部123に出力する。具体的には、動画入力部110から出力された動画を構成する連続する2つのフレーム(現フレームおよびこの直前のフレーム)に対応する各画像を比較することにより、直前のフレームに対応する画像における各特徴点に対応するオプティカルフローを、現フレームのオプティカルフローとして求める。また、オプティカルフローは、動画を構成するフレーム毎に求められる。なお、オプティカルフローを検出する検出方法として、勾配法やブロックマッチング方法等の検出方法を用いることができる。なお、このオプティカルフローの計算については、図6乃至図8を参照して詳細に説明する。
カメラワークパラメータ算出部123は、オプティカルフロー計算部122から出力された各特徴点に対応するオプティカルフローを用いて、カメラワークパラメータを抽出するカメラワークパラメータ算出処理を行うものであり、算出されたカメラワークパラメータを記録制御部130に出力する。ここで、本発明の実施の形態では、再生の対象となる動画を構成する画像をカメラの動きに合わせて変換して合成する。この画像の変換を行うため、オプティカルフロー計算部122により計算されたオプティカルフローを用いてカメラの動きが抽出され、この抽出された動きに基づいて、カメラワークパラメータ(変換パラメータ)が計算される。なお、本発明の実施の形態では、再生の対象となる動画を構成する画像を変換する画像変換方法として、アフィン変換を用いる例について説明する。また、カメラワークパラメータとして、オプティカルフローに基づいて算出されたアフィン変換パラメータの行列の逆行列に対応するアフィン変換パラメータを用いる例について説明する。なお、射影変換等の他の画像変換方法を用いるようにしてもよい。なお、アフィン変換パラメータは、3点のオプティカルフローを用いて計算して求めることができる。また、射影変換パラメータは、4点のオプティカルフローを用いて計算して求めることができる。ここで、カメラワークパラメータは、撮像動画を構成する撮像画像のうちの少なくとも1つの撮像画像を基準にして他の撮像画像を変換するための変換情報であり、少なくともカメラの座標系で記述される位置情報および姿勢情報を含むものである。すなわち、カメラワークパラメータは、撮影者により撮影されている場合におけるカメラの位置や姿勢に関する情報を含むものである。また、カメラワークパラメータ算出部123により求められたアフィン変換パラメータに基づいて、例えば、ズームイン、ズームアウト、パン、チルト、ローテーション等の撮影者の操作によるカメラの動きを推定することができる。なお、アフィン変換パラメータの計算については、図6乃至図8を参照して詳細に説明する。
図3は、本発明の実施の形態における動画記憶部200およびメタデータ記憶部210に記録されている各ファイルを模式的に示す図である。図3(a)では、動画記憶部200に記憶されている動画ファイル201乃至204と、動画ファイル201乃至204に関連付けてメタデータ記憶部210に記憶されているメタデータファイル211乃至213とを示す。ここで、動画記憶部200に記憶されている各動画ファイルを識別するための識別情報である動画IDが、各動画ファイルに付与されているものとする。例えば、動画ファイル201には「#1」が付与され、動画ファイル202には「#2」が付与され、動画ファイル204には「#n」が付与されている。
図3(b)では、動画記憶部200に記憶されている動画ファイル201と、動画ファイル201に関連付けてメタデータ記憶部210に記憶されているメタデータファイル211とを模式的に示す図である。ここで、動画ファイル201は、n枚のフレームで構成された動画のファイルであり、これらのn枚のフレームをフレーム「1」205乃至「n」208として示す。
また、メタデータファイル211には、動画ID214と、フレーム番号215と、アフィン変換パラメータ216とが関連付けて格納されている。
動画ID214は、対応する動画ファイルに付与されている動画IDであり、例えば、動画ファイル201に付与されている「#1」が格納される。
フレーム番号215は、対応する動画ファイルの動画を構成する各フレームの通し番号であり、例えば、動画ファイル201の動画を構成するフレーム「1」205乃至「n」208に対応する「1」乃至「n」が格納される。
アフィン変換パラメータ216は、フレーム番号215に対応する動画の各フレームについて計算されたアフィン変換パラメータである。なお、フレーム番号215の「1」に対応するアフィン変換パラメータ216「a1,b1,c1,d1,e1,f1」は、単位行列のアフィン変換パラメータである。また、フレーム番号215の「m(mは2以上の整数)」に対応するアフィン変換パラメータ216の「am,bm,cm,dm,em,fm」は、フレーム「m」の直前フレーム「m−1」に対するアフィン変換パラメータである。
図4は、本発明の実施の形態におけるインデックス情報記憶部230に記憶されている内容を概略的に示す図である。
インデックス情報記憶部230には、インデックス画像抽出部190により抽出されたインデックス画像に関する情報がフレーム毎に時系列で記憶されるとともに、一定区間動画音声情報抽出部250により抽出された一定区間内の音声情報および動画情報がインデックス画像に関連付けて記憶されている。具体的には、インデックス情報記憶部230には、動画ID231と、フレーム番号232と、位置情報233と、インデックス画像234と、音声情報235と、動画情報236とが関連付けて記憶されている。
動画ID231は、動画記憶部200に記憶されている各動画ファイルに対応するIDである。
フレーム番号232は、インデックス画像抽出部190により抽出されたインデックス画像に対応するフレームの識別番号である。
位置情報233は、画像メモリ180のワークバッファ上におけるインデックス画像抽出部190により抽出されたインデックス画像の位置を示すものである。例えば、画像メモリ180のワークバッファ上をxy座標とした場合には、インデックス画像抽出部190により抽出されたインデックス画像の4頂角に対応する座標の値が記録される。すなわち、インデックス画像抽出部190により抽出されたインデックス画像の位置として、撮像動画の撮像時におけるカメラの動き情報により定められる撮像空間上の座標位置が記録される。この撮像空間は、例えば、動画入力部110から入力された撮像動画の撮像時におけるカメラの動き量に基づいて算出されるアフィン変換パラメータを用いて、画像合成部170により作成される代表画像に対応する画像空間である。なお、本発明の実施の形態では、インデックス画像抽出部190により抽出されたインデックス画像の位置情報として、その4頂角に対応する座標の値を用いる例について説明するが、そのインデックス画像の位置情報として、その画像の中心位置および大きさ等の他の位置情報を用いるようにしてもよい。
インデックス画像234は、インデックス画像抽出部190により抽出されたインデックス画像である。
音声情報235は、一定区間動画音声情報抽出部250により抽出された一定区間内の音声情報であり、インデックス画像に対応する一定区間内の音声を音声出力部294から出力させるための情報である。
動画情報236は、一定区間動画音声情報抽出部250により抽出された一定区間内の動画情報であり、インデックス画像に対応する一定区間内の動画を表示部292に表示させるための情報である。
図5は、本発明の実施の形態におけるパノラマ画像記憶部240に記憶されている内容を概略的に示す図である。
パノラマ画像記憶部240には、動画記憶部200に記憶されている各動画ファイルについて画像合成部170により作成された合成画像がパノラマ画像として記憶されている。具体的には、パノラマ画像記憶部240には、動画ID241およびパノラマ画像242が関連付けて記憶されている。例えば、1つの動画ファイルについて1つのパノラマ画像が記憶される。
動画ID241は、動画記憶部200に記憶されている各動画ファイルに対応するIDである。
パノラマ画像242は、動画記憶部200に記憶されている各動画ファイルについて画像合成部170により合成された合成画像である。なお、図5では、パノラマ画像記憶部240に記憶されている各パノラマ画像を簡略化して示す。
次に、画像変換に用いられるアフィン変換パラメータを検出する検出方法について図面を参照して詳細に説明する。
図6(a)乃至(c)は、動画を構成するフレームに対応する画像の一例を示す図である。図7(a)は、図6に示す画像300に対応するフレームの1つ前のフレームに対応する画像について背景等を省略して簡略化した画像を示す図である。また、図7(b)および(c)は、図6に示す画像300について背景等を省略して簡略化した画像を示す図である。
図6および図7に示す画像300、320、330には、人が跨っている馬の像301、321、331と、この馬の像301、321、331の手前に設置されている蛇の像302、322、332とが含まれている。また、図6に示すように、これらの像の背景には旗や椅子等が存在し、この旗が風になびいている。
図7(a)に示す画像320は、図6(a)乃至(c)および図7(b)および(c)に示す画像300、330に対応するフレームの1つ前のフレームに対応する画像を簡略化した画像である。また、2つの連続するフレームに対応する画像320および330は、画面内の被写体が次第に大きくなる場合における遷移を示す画像である。すなわち、この撮像時には、画面内の被写体を次第に大きくする操作であるズームイン操作がされている。
本発明の実施の形態では、動画を構成する画像から特徴点を検出し、この特徴点に対応するオプティカルフローを用いてアフィン変換パラメータを計算する方法を例にして説明する。また、この例では、特徴点としてコーナー点を用いる場合について説明する。
ここで、図7(a)乃至(c)では、画像320および330から検出された3つのコーナー点に対応するオプティカルフローを用いてアフィン変換パラメータを計算する方法を例にして説明する。
例えば、図7(a)に示す画像320において、特徴点として、馬の像321における口付近のコーナー点323と、馬の像321における人のお尻付近のコーナー点324と、蛇の像322の口付近のコーナー点325とが検出されているものとする。この場合において、図7(b)に示す画像330において、勾配法やブロックマッチング法等により、画像320におけるコーナー点323、324および325に対するオプティカルフロー337、338および339が検出される。そして、この検出されたオプティカルフロー337、338および339に基づいて、画像320におけるコーナー点323、324および325に対応するコーナー点333、334および335が検出される。
ここで、例えば、図7(a)および(b)に示す画像320および330に含まれる馬の像321、331や蛇の像322、332は、地面に設置されているものであるため、カメラの動きとは無関係に動くものではない。このため、馬の像321、331や蛇の像322、332について検出されたコーナー点に対して求められたオプティカルフローに基づいて、カメラの動きを正確に推定することができる。例えば、図7(c)に示すように、画像330において検出された3つのオプティカルフロー337乃至339に基づいて、画像330が、点336を中心にして画像320を拡大したものであることを推定することができる。これにより、画像330の撮影時におけるカメラの動きは、点336を中心とするズームイン動作であると判断することができる。このように、カメラの動きとは無関係に動くものではない物体についてコーナー点を検出し、このコーナー点に対して求められたオプティカルフローに基づいて、一定の規則性を備えるカメラの動きを正確に検出することができる。このため、これらのコーナー点に対して求められたオプティカルフローを用いて、アフィン変換パラメータを計算して求めることができる。
しかしながら、風になびいている旗等のように、カメラの動きとは無関係に動く物体が画像内に含まれる場合が考えられる。例えば、図6に示す画像300には、風になびいている旗が含まれている。このようなカメラの動きとは無関係に動く物体についてコーナー点が検出され、このコーナー点に対して求められたオプティカルフローを用いてカメラの動きを推定する場合には、カメラの動きを正確に推定することができない。
例えば、図6(b)に示す画像300において検出されたオプティカルフローを矢印で示すとともに、このオプティカルフローにより検出されたコーナー点を矢印の先端に白抜きの丸で示す。ここで、コーナー点303乃至305は、図7(b)および(c)に示すコーナー点333乃至335に対応するコーナー点である。また、コーナー点306乃至311は、馬の像301の背景に存在する旗について検出されたコーナー点である。そして、これらの旗が風になびいているため、風の影響による旗の動きがオプティカルフローとして検出されている。すなわち、コーナー点306乃至311に対応する各オプティカルフローは、カメラの動きとは無関係に動く旗について検出されたものである。このため、アフィン変換パラメータを計算する場合に用いられる3つのオプティカルフローに、コーナー点306乃至311のうちの少なくとも1つのコーナー点に対応するオプティカルフローが含まれている場合には、正確なカメラの動きを検出することができない。この場合には、正確なアフィン変換パラメータを計算することができない。
以上で示したように、例えば、カメラの動きとは無関係に動く物体に対するオプティカルフロー(図6(b)に示すコーナー点306乃至311に対応する各オプティカルフロー)と、カメラの動きとの関係で一定の規則性を備えるオプティカルフロー(図6(b)に示すコーナー点306乃至311に対応する各オプティカルフロー以外のオプティカルフロー)とが、撮影画像から検出されることがある。
そこで、本発明の実施の形態では、3個のオプティカルフローに基づいてアフィン変換パラメータを計算するアフィン変換パラメータ計算処理を複数回行い、複数のアフィン変換パラメータを求め、これらの複数のアフィン変換パラメータの中から最適なアフィン変換パラメータを選択する例について説明する。なお、この例では、動画を構成する各画像に含まれている動物体の大きさが、画像の面積に対して比較的小さいものとする。
ここで、アフィン変換について簡単に説明する。2次元上において、移動元の位置を(x,y)とし、アフィン変換後の移動先の位置を(x´,y´)とした場合に、アフィン変換の行列式は、式1で表すことができる。
ここで、a乃至fは、アフィン変換パラメータである。また、このアフィン変換パラメータによるアフィン行列AMを次の式で表すことができる。この場合に、X方向のズーム成分XZ、Y方向のズーム成分YZ、X方向の並進成分XT、Y方向の並進成分YT、回転成分Rについては、それぞれ次の式で求めることができる。なお、単位行列の場合には、a=e=1、b=c=d=f=0となる。
次に、アフィン変換パラメータの計算方法について説明する。
最初に、動画を構成するフレームの中の1つのフレームである現フレームに対応する画像において、オプティカルフローが検出された特徴点の中から3個の特徴点が選択される。例えば、図6(b)に示す画像300において検出されたコーナー点(白抜きの丸で示す)の中からランダムに3個のコーナー点が選択される。なお、カメラワークパラメータとして、射影変換パラメータを用いる場合には、4個の特徴点がランダムに選択される。
続いて、選択された3個の特徴点に対応する3個のオプティカルフローを用いてアフィン変換パラメータが計算される。例えば、図6(b)に示す画像300におけるコーナー点(白抜きの丸で示す)の中から選択された3個のコーナー点に対応するオプティカルフロー(白抜きの丸に接続される矢印で示す)を用いてアフィン変換パラメータが計算される。このアフィン変換パラメータは、式1を用いて求めることができる。
続いて、求められたアフィン変換パラメータに基づいて、アフィン変換パラメータのスコアが計算される。具体的には、求められたアフィン変換パラメータを用いて、現フレームの直前のフレームに対応する画像における全ての特徴点の移動先の位置を求める。そして、このアフィン変換パラメータを用いて求められた特徴点の位置と、現フレームにおいて検出された特徴点の位置とを比較して、互いに対応する2つの特徴点の位置の差分値が特徴点毎に計算される。差分値として、例えば、互いに対応する2つの特徴点の位置間の絶対距離が計算される。続いて、計算された差分値と、予め設定されている閾値とを特徴点毎に比較して、その差分値が閾値よりも小さい特徴点の個数をアフィン変換パラメータのスコアとして求める。このように、オプティカルフローが検出された特徴点の中から3個の特徴点をランダムに選択し、これらの特徴点に対応するオプティカルフローに基づいてアフィン変換パラメータのスコアを算出する処理を所定回数繰り返し、アフィン変換パラメータのスコアを複数算出する。この所定回数は、比較の対象となる画像の種類や画像処理装置100の処理能力等に応じて適宜設定するようにしてもよく、固定値を用いるようにしてもよい。この所定回数として、例えば、画像処理装置100の処理能力を考慮して20回程度と設定することができる。
例えば、図6(b)に示す画像300において検出されたコーナー点の中から、コーナー点306乃至311以外のコーナー点が3個選択された場合を考える。このように選択された3個のコーナー点に対応する3個のオプティカルフローを用いてアフィン変換パラメータが計算されると、上述したように、この3個のオプティカルフローは一定の規則性を備えているため、直前のフレームに対応する画像を一定の規則に従って変換させるアフィン変換パラメータが求められる。このため、アフィン変換パラメータを用いて求められたコーナー点の位置と、現フレームにおいて検出されたコーナー点の位置とについて、コーナー点306乃至311以外のコーナー点に関して求められる差分値は、比較的小さい値が算出される。このため、アフィン変換パラメータのスコアは、大きい値になる。
一方、図6(b)に示す画像300において検出されたコーナー点の中から、コーナー点306乃至311のうちの少なくとも1個を含む3個のコーナー点が選択された場合を考える。このように選択された3個のコーナー点に対応する3個のオプティカルフローを用いてアフィン変換パラメータが計算されると、上述したように、この3個のオプティカルフローには、一定の規則性を備えていないオプティカルフローが含まれるため、直前のフレームに対応する画像を一定の規則に従って変換させるものではないアフィン変換パラメータが求められる。このため、アフィン変換パラメータを用いて求められたコーナー点の位置と、現フレームにおいて検出されたコーナー点の位置とについて求められる差分値は、任意のコーナー点で比較的大きい値が算出される。このため、アフィン変換パラメータのスコアは、小さい値になる。
続いて、求められた複数のアフィン変換パラメータのスコアの中で、スコアの値が最も大きいアフィン変換パラメータを代表アフィン変換パラメータとして選択する。そして、選択された代表アフィン変換パラメータに対応する行列の逆行列に対応するアフィン変換パラメータを、現フレームに関連付けて動画記憶部200に記録する。これにより、動画を構成する画像をアフィン変換する場合に、最適なアフィン変換パラメータを用いてアフィン変換することができる。
以上で示したように、動画を構成する各画像に人物や車等の動いている物体(動物体)が含まれている場合でも、画像の面積に対するその動物体の大きさが比較的小さい場合には、動物体の影響を受けずにカメラの動きを抽出することができる。
また、カメラの動きを抽出することによって、ズームイン、ズームアウト、パン、チルト、ローテーション等の意図的に撮影者が移動させたと思われる動きを推定することができる。なお、式1において、a=e、d=−bとして、2個のオプティカルフローに基づいてアフィン変換パラメータを算出することができる。例えば、3個のオプティカルフローに基づいて計算されたアフィン変換パラメータを用いて、画像をアフィン変換する場合には、長方形の画像が平行四辺形に変形される場合がある。これに対して、2個のオプティカルフローに基づいて計算されたアフィン変換パラメータを用いて、画像をアフィン変換する場合には、並進移動、回転、ズーム(xy方向のズーム率が同じもの)の少なくとも1つの変換を長方形の画像の状態で行うことができる。本発明の実施の形態では、3個のオプティカルフローに基づいて計算されたアフィン変換パラメータを用いて画像を変換する例について説明するが、2個のオプティカルフローに基づいて計算されたアフィン変換パラメータを用いて画像を変換する場合についても同様に適用することができる。
次に、本発明の実施の形態における画像処理装置100の動作について図面を参照して説明する。
図8は、本発明の実施の形態における画像処理装置100によるアフィン変換パラメータ検出処理の処理手順を示すフローチャートである。
最初に、動画入力部110に動画ファイルが入力される(ステップS900)。続いて、動画入力部110に入力された動画ファイルがデコードされ、時系列の順序で1つのフレームの画像が取得される(ステップS901)。続いて、取得された1つのフレームが動画入力部110に入力された動画ファイルの先頭のフレームであるか否かが判断される(ステップS902)。取得された1つのフレームが、先頭のフレームである場合には(ステップS902)、この先頭のフレームに対応する画像の全体から特徴点が抽出される(ステップS903)。例えば、図6(b)に示すように、画像において複数のコーナー点が抽出される。続いて、アフィン変換パラメータとして単位行列のアフィン変換パラメータが選択され(ステップS904)、ステップS914に進む。
一方、取得された1つのフレームが、先頭のフレームではない場合には(ステップS902)、直前のフレームに対応する画像を基準として新たに撮影された領域から特徴点が抽出される(ステップS905)。すなわち、直前のフレームに対応する画像において既に抽出されている特徴点については、この特徴点に対応するオプティカルフローにより求めることができるため、現フレームに対応する画像においては抽出されない。
続いて、直前のフレームに対応する画像から抽出された各特徴点に対するオプティカルフローが計算される(ステップS906)。すなわち、図6(b)に示すように、各コーナー点に対するオプティカルフローが計算される。
続いて、変数iが「1」に初期化される(ステップS907)。続いて、オプティカルフローが検出された特徴点の中から、M個の特徴点が選択される(ステップS908)。例えば、カメラワークパラメータとして、アフィン変換パラメータを用いる場合には、3個の特徴点がランダムに選択される。また、カメラワークパラメータとして、射影変換パラメータを用いる場合には、4個の特徴点がランダムに選択される。続いて、選択されたM個の特徴点に対応して計算されたM個のオプティカルフローに基づいて、アフィン変換パラメータが計算される(ステップS909)。
続いて、計算して求められたアフィン変換パラメータに基づいて、アフィン変換パラメータのスコアが計算される(ステップS910)。具体的には、計算して求められたアフィン変換パラメータを用いて、直前のフレームに対応する画像における全ての特徴点の移動先の位置を求める。そして、このアフィン変換パラメータを用いて求められた特徴点の位置と、ステップS906でオプティカルフローを計算した際に求められた現フレームに対応する画像における特徴点の位置とを比較して、互いに対応する2つの特徴点の位置の差分値が特徴点毎に計算される。差分値として、例えば、互いに対応する2つの位置間の絶対距離が計算される。続いて、計算された差分値と、予め設定されている閾値とを特徴点毎に比較して、その差分値が閾値よりも小さい特徴点の個数をアフィン変換パラメータのスコアとして求める。
続いて、変数iに「1」が加算され(ステップS911)、変数iが、定数Nよりも大きいか否かが判断される(ステップS912)。変数iが、定数N以下である場合には(ステップS912)、ステップS908に戻り、アフィン変換パラメータのスコア算出処理を繰り返す(ステップS908乃至S910)。例えば、定数Nとして、20を用いることができる。
一方、変数iが定数Nよりも大きい場合には(ステップS912)、求められたアフィン変換パラメータのスコアのうちで、スコアの値が最も大きいアフィン変換パラメータが代表アフィン変換パラメータとして選択される(ステップS913)。続いて、選択された代表アフィン変換パラメータの行列の逆行列に対応するアフィン変換パラメータが、現フレームに関連付けて動画記憶部200に記録される(ステップS914)。なお、現フレームが先頭のフレームである場合には、選択された単位行列のアフィン変換パラメータが、先頭のフレームに関連付けて動画記憶部200に記録される。続いて、現フレームに対応する画像と、この画像における特徴点とが上書き保存される(ステップS915)。
続いて、現フレームが、動画入力部110に入力された動画ファイルの最後のフレームであるか否かが判断される(ステップS916)。現フレームが、最後のフレームではない場合には(ステップS916)、ステップS901に戻り、アフィン変換パラメータ検出処理を繰り返す(ステップS901乃至S915)。一方、現フレームが、最後のフレームである場合には(ステップS916)、アフィン変換パラメータ検出処理を終了する。
本発明の実施の形態では、カメラワークパラメータの検出として、動画を構成する画像において検出されたオプティカルフローに基づいてアフィン変換パラメータを検出する例について説明したが、加速度センサやジャイロセンサ等のセンサやズーム操作をする際に用いられるズームボタンをカメラに設け、このセンサやズームボタンによって撮影時におけるカメラの移動量を検出し、このカメラの移動量に基づいてカメラワークパラメータを求めるようにしてもよい。なお、これらの撮影時において検出されたカメラの移動量については、カメラワークパラメータ算出部123により求められたカメラワークパラメータが正しいか否かを判断する際に用いることができる。また、カメラワークパラメータ算出部123により複数のカメラワークパラメータを検出しておき、撮影時において検出されたカメラの移動量に基づいて、この複数のカメラワークパラメータの中から1つのカメラワークパラメータを選択するようにしてもよい。
次に、上述したアフィン変換パラメータを用いて動画を合成する場合について図面を参照して詳細に説明する。なお、図9乃至図17に示す各画像は、説明のため、簡略化するとともに、連続する2つのフレーム間の移動量を大きくして示している。また、図9乃至図17では、動画を構成する先頭のフレームから最後のフレームに向かって画像を合成する場合を例にして説明する。
最初に、カメラの撮影時において、倍率が変更されないものの、カメラの位置を中心として、カメラのレンズの方向が上下左右の何れかに移動されている場合について説明する。
図9は、カメラにより撮影された動画の遷移の一例を示す図である。図9には、山を背景にして人400を撮影した場合における動画に含まれる連続するフレームに対応する画像401乃至403を示す図である。この例では、カメラのレンズの方向を右および上側に移動しながら、撮影者が撮影を行っている場合を示す。この場合には、カメラにより撮影される動画に含まれる人400が、その動画を構成する画像において右側から左側に移動するとともに下側に移動する。
図10は、図9に示す各画像において、直前のフレームに対応する画像を破線で示すとともに、検出されるオプティカルフローの一例を示す図である。図10(a)に示す画像401は、図9(a)に示す画像401と同じものである。また、図10(b)に示す画像402のうちの実線の部分は、図9(b)に示す画像402と同じものであり、図10(b)に示す画像402のうちの破線の部分は、図10(a)に示す画像401の実線の部分と同じものである。また、図10(b)に示す画像402における矢印404乃至406は、画像402から検出されたオプティカルフローの一例を示す。同様に、図10(c)に示す画像403のうちの実線の部分は、図9(c)に示す画像403と同じものであり、図10(c)に示す画像403のうちの破線の部分は、図10(b)に示す画像402の実線の部分と同じものである。また、図10(c)に示す画像403における矢印407乃至409は、画像403から検出されたオプティカルフローの一例を示す。
図10(b)および(c)に示すように、カメラの移動に合わせて、画像に含まれる人400および背景の山が移動する。この移動により検出されるオプティカルフローに基づいてアフィン変換パラメータをフレーム毎に求めることができる。
図11は、図9に示す画像401乃至403を含む動画を合成する場合における画像合成例を示す図である。
図11(a)に示すように、最初は、先頭のフレームに対応する画像401のみであるため合成はされない。ここで、画像401に対応するアフィン変換パラメータの行列(3×3の行列)をA1とする場合に、A1の値が求められ、先頭のフレームの画像401の位置および大きさを基準にして、求められたA1の行列により画像401がアフィン変換される。なお、A1は単位行列であるため、画像401の位置および大きさは変換されない。続いて、次のフレームに対応する画像402が合成される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像402がアフィン変換される。具体的には、画像402に対応するアフィン変換パラメータの行列をA2とし、画像401に対応するアフィン変換パラメータの行列をA1とする場合において、A2×A1の値が求められ、先頭のフレームの画像401の位置および大きさを基準にして、求められたA2×A1の行列により画像402がアフィン変換される。図11(b)に示す画像においては、画像402の位置のみが変換される。そして、アフィン変換パラメータによりアフィン変換された画像402が、直前のフレームに対応する画像401に重なるように上書きされる。すなわち、画像401の領域のうちで、画像402と重複する領域410については、画像402の画像が上書きされる。また、画像401の領域のうちで、画像402と重複しない領域411については、画像401の画像が合成される。すなわち、2つ目のフレームに対応する画像402が合成される場合には、図11(b)に示すように、画像402の全体部分と、画像401のうちの領域411に対応する部分とが合成される。また、画像402をアフィン変換したアフィン変換パラメータが画像変換部150に保持される。
続いて、次のフレームに対応する画像403が合成される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像403がアフィン変換される。すなわち、画像403に対応するアフィン変換パラメータの行列と、直前のアフィン変換に用いられた画像402に対応するアフィン変換パラメータの行列とを用いて求められたアフィン変換パラメータにより画像403がアフィン変換される。具体的には、画像403に対応するアフィン変換パラメータの行列をA3とし、画像402に対応するアフィン変換パラメータの行列をA2とし、画像401に対応するアフィン変換パラメータの行列をA1とする場合において、A3×A2×A1の値が求められ、先頭のフレームの画像401の位置および大きさを基準にして、求められたA3×A2×A1の行列により画像403がアフィン変換される。図11(c)に示す画像においては、画像403の位置のみが変換される。そして、アフィン変換パラメータによりアフィン変換された画像403が、前のフレームに対応する画像401および402の合成画像に重なるように上書きされる。すなわち、画像401および402の合成画像の領域のうちで、画像403と重複する領域413および414については、画像403の画像が上書きされる。また、画像401および402の合成画像の領域のうちで、画像403と重複しない領域411および412については、画像401および402の合成画像が合成される。すなわち、3つ目のフレームに対応する画像403が合成される場合には、図11(c)に示すように、画像403の全体部分と、画像401のうちの領域411に対応する部分と、画像402のうちの領域412に対応する部分とが合成される。また、画像403をアフィン変換したアフィン変換パラメータが画像変換部150に保持される。すなわち、画像402および403のそれぞれに対応するアフィン変換パラメータの行列の乗算により求められたアフィン変換パラメータが画像変換部150に保持される。このように、現フレームに対応する画像をアフィン変換する場合には、現フレームに対応するアフィン変換パラメータの行列と、この直前までの各フレームに対応するアフィン変換パラメータの行列とを用いて求められたアフィン変換パラメータにより、現フレームに対応する画像がアフィン変換される。このアフィン変換の際に求められたアフィン変換パラメータが画像変換部150に保持され、次のアフィン変換で用いられる。また、画像メモリ180のワークバッファ上におけるアフィン変換された画像の中心位置に対応する座標の値と、画像の大きさを示す画像サイズとがインデックス情報記憶部230に記録される。また、図14および図17の場合についても同様である。
次に、カメラの撮影時において、カメラのレンズの方向は移動されないものの、倍率が変更されている場合について説明する。
図12は、カメラにより撮影された動画の遷移の一例を示す図である。図12には、山を背景にして人420を撮影した場合における動画に含まれる連続するフレームに対応する画像421乃至423を示す図である。この例では、カメラのレンズの倍率を上げながら、撮影者が撮影を行っている場合を示す。この場合には、カメラにより撮影される動画に含まれる人420が、その動画を構成する画像において次第に大きくなる。なお、倍率を上げる際にカメラの位置が多少移動する場合があるものの、この例では、カメラの位置の移動については考慮せずに説明する。
図13は、図12に示す各画像において、直前のフレームに対応する画像を破線で示すとともに、検出されるオプティカルフローの一例を示す図である。図13(a)に示す画像421は、図12(a)に示す画像421と同じものである。また、図13(b)に示す画像422のうちの実線の部分は、図12(b)に示す画像422と同じものであり、図13(b)に示す画像422のうちの破線の部分は、図12(a)に示す画像421の実線の部分と同じものである。また、図13(b)に示す画像422における矢印424乃至426は、画像422から検出されたオプティカルフローの一例を示す。同様に、図13(c)に示す画像423のうちの実線の部分は、図12(c)に示す画像423と同じものであり、図13(c)に示す画像423のうちの破線の部分は、図12(b)に示す画像422の実線の部分と同じものである。また、図13(c)に示す画像423における矢印427乃至429は、画像423から検出されたオプティカルフローの一例を示す。
図13(b)および(c)に示すように、倍率の変更に合わせて、画像に含まれる人420および背景の山の大きさが変更する。この変更により検出されるオプティカルフローに基づいてアフィン変換パラメータをフレーム毎に求めることができる。
図14は、図12に示す画像421乃至423を含む動画を合成する場合における合成例を示す図である。
図14(a)に示すように、最初は、先頭のフレームに対応する画像421のみであるため合成はされない。続いて、次のフレームに対応する画像422が合成される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像422がアフィン変換される。図14(b)に示す画像においては、画像422の大きさのみが変換される。そして、アフィン変換パラメータによりアフィン変換された画像422が、直前のフレームに対応する画像421に重なるように上書きされる。すなわち、画像421の領域のうちで、画像422と重複する領域については、画像422の画像が上書きされる。この場合には、画像421は、画像422の全ての領域と重複しているため、画像421に画像422の全ての画像が上書きされる。また、画像421の領域のうちで、画像422と重複しない領域431については、画像421の画像が合成される。すなわち、2つ目のフレームに対応する画像422が合成される場合には、図14(b)に示すように、画像422の全体部分と、画像421のうちの領域431に対応する部分とが合成される。また、画像422をアフィン変換したアフィン変換パラメータが画像変換部150に保持される。
続いて、次のフレームに対応する画像423が合成される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像423がアフィン変換される。すなわち、画像423に対応するアフィン変換パラメータの行列と、直前のアフィン変換に用いられた画像422に対応するアフィン変換パラメータの行列とを用いて求められたアフィン変換パラメータにより画像423がアフィン変換される。図14(c)に示す画像においては、画像423の大きさのみが変換される。そして、アフィン変換された画像423が、前のフレームに対応する画像421および422の合成画像に重なるように上書きされる。すなわち、画像421および422の合成画像の領域のうちで、画像423と重複する領域については、画像423の画像が上書きされる。この場合には、画像423は、画像421および422の全ての領域と重複しているため、画像421および422の合成画像に画像423の全ての画像が上書きされる。また、画像421および422の合成画像の領域のうちで、画像423と重複しない領域432および433については、画像421および422の合成画像が合成される。すなわち、3つ目のフレームに対応する画像423が合成される場合には、図14(c)に示すように、画像423の全体部分と、画像421のうちの領域432に対応する部分と、画像422のうちの領域433に対応する部分とが合成される。また、画像423をアフィン変換したアフィン変換パラメータが画像変換部150に保持される。すなわち、画像422および423のそれぞれに対応するアフィン変換パラメータを用いて求められたアフィン変換パラメータが画像変換部150に保持される。
次に、カメラの撮影時において、カメラのレンズの方向や倍率は変更されないものの、撮影方向を回転中心にしてカメラが回転されている場合について説明する。
図15は、カメラにより撮影された動画の遷移の一例を示す図である。図15には、山を背景にして人440を撮影した場合における動画に含まれる連続するフレームに対応する画像441乃至443を示す図である。この例では、撮影方向を回転中心にしてカメラを回転しながら、撮影者が撮影を行っている場合を示す。この場合には、カメラにより撮影される動画に含まれる人440が、その動画を構成する画像において回転していく。なお、カメラの回転によりカメラの位置が多少移動する場合があるものの、この例では、カメラの位置の移動については考慮せずに説明する。
図16は、図15に示す各画像において、直前のフレームに対応する画像を破線で示すとともに、検出されるオプティカルフローの一例を示す図である。図16(a)に示す画像441は、図15(a)に示す画像441と同じものである。また、図16(b)に示す画像442のうちの実線の部分は、図15(b)に示す画像442と同じものであり、図16(b)に示す画像442のうちの破線の部分は、図15(a)に示す画像441の実線の部分と同じものである。また、図16(b)に示す画像442における矢印444乃至446は、画像442から検出されたオプティカルフローの一例を示す。同様に、図16(c)に示す画像443のうちの実線の部分は、図15(c)に示す画像443と同じものであり、図16(c)に示す画像443のうちの破線の部分は、図15(b)に示す画像442の実線の部分と同じものである。また、図16(c)に示す画像443における矢印447乃至449は、画像443から検出されたオプティカルフローの一例を示す。
図16(b)および(c)に示すように、カメラの回転に合わせて、画像に含まれる人440および背景の山が回転移動する。この回転移動により検出されるオプティカルフローに基づいてアフィン変換パラメータをフレーム毎に求めることができる。
図17は、図15に示す画像441乃至443を含む動画を合成する場合における合成例を示す図である。
図17(a)に示すように、最初は、先頭のフレームに対応する画像441のみであるため合成はされない。続いて、次のフレームに対応する画像442が合成される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像442がアフィン変換される。図17(b)に示す画像においては、画像442の角度のみが変換される。そして、アフィン変換パラメータによりアフィン変換された画像442が、直前のフレームに対応する画像441に重なるように上書きされる。すなわち、画像441の領域のうちで、画像442と重複する領域450については、画像442の画像が上書きされる。また、画像441の領域のうちで、画像442と重複しない領域451および452については、画像441の画像が合成される。すなわち、2つ目のフレームに対応する画像442が表示される場合には、図17(b)に示すように、画像442の全体部分と、画像441のうちの領域451および452に対応する部分とが合成される。また、画像442をアフィン変換したアフィン変換パラメータが画像変換部150に保持される。
続いて、次のフレームに対応する画像443が合成される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像443がアフィン変換される。すなわち、画像443に対応するアフィン変換パラメータの行列と、直前のアフィン変換に用いられた画像442に対応するアフィン変換パラメータの行列とを用いて求められたアフィン変換パラメータにより画像443がアフィン変換される。図17(c)に示す画像においては、画像443の角度のみが変換される。そして、アフィン変換された画像443が、前のフレームに対応する画像441および442の合成画像に重なるように上書きされる。すなわち、画像441および442の合成画像の領域のうちで、画像443と重複する領域453乃至457については、画像443の画像が上書きされる。また、画像441および442の合成画像の領域のうちで、画像443と重複しない領域458乃至461については、画像441および442の合成画像がさらに合成される。すなわち、3つ目のフレームに対応する画像443が合成される場合には、図17(c)に示すように、画像443の全体部分と、画像441のうちの領域459に対応する部分と、画像442のうちの領域458および460に対応する部分とが合成される。また、画像443をアフィン変換したアフィン変換パラメータが画像変換部150に保持される。すなわち、画像442および443のそれぞれに対応するアフィン変換パラメータを用いて求められたアフィン変換パラメータが画像変換部150に保持される。
以上では、動画を構成する各画像の位置、倍率および角度が順次変更される場合についてそれぞれ説明したが、これらの変更が組み合わされている場合についても同様に適用することができる。
次に、実際にカメラにより撮影された動画を合成する場合における合成例を示す。以下に示す画像合成例では、現フレームおよび前のフレームに対応する画像が合成された領域のみに合成画像を表示し、その他の領域を黒くして示す。また、現フレームに対応する画像の周りには枠を付す。さらに、以下に示す画像合成例では、作成されている途中の合成画像を例にして示す。また、図18乃至図21では、動画を構成する先頭のフレームから最後のフレームに向かって画像を合成する場合を例にして説明する。
図18乃至図21は、カメラにより撮影された動画の遷移の一例を示す図である。図18および図19は、マンションの広場で遊んでいる親子を、カメラを移動させながら撮影した場合における動画を構成する画像500乃至505を示す図である。
図18および図19に示す画像500乃至505において、現フレームに対応する画像は、画像506乃至511である。また、前の各フレームに対応して合成された画像である合成画像は、画像512乃至517である。図18および図19に示すように、撮影された画像に含まれる撮影対象物(マンションの広場等)が画面に固定され、現フレームに対応する画像506乃至511がカメラの動きに合わせて画面上を移動する。
図20および図21は、マンションの広場で遊んでいる親子を、ズームイン操作をしながら撮影した場合における動画を構成するフレームに対応する画像520乃至525を示す図である。
図20および図21に示す画像520乃至525において、現フレームに対応する画像は、画像526乃至531である。また、前の各フレームに対応して合成された画像である合成画像は、画像532乃至537である。図20および図21に示すように、撮影された画像に含まれる撮影対象物(マンションの広場等)が画面に固定され、現フレームに対応する画像526乃至531がカメラの動きに合わせて画面上を移動する。
このように、図18乃至図21に示す画像合成例では、現フレームに対応する画像が拡大縮小を伴いながらディスプレイ上を動き回り、広大な画像が作成されていく。なお、以上では、動画を構成する先頭のフレームから最後のフレームに向かって画像合成処理を繰り返すことにより合成画像を作成する例について説明したが、動画を構成する最後のフレームから先頭のフレームに向かって画像合成処理を繰り返すことにより合成画像を作成する場合についても同様に適用することができる。このように、動画を構成する最後のフレームから先頭のフレームに向かって画像合成処理を繰り返す場合には、各フレームに関連付けられているアフィン変換パラメータの行列ではなく、各フレームに関連付けられているアフィン変換パラメータの行列に対する逆行列を用いてアフィン変換を行う。
次に、画像変換部150によりアフィン変換された画像の透明度を変換する画像透明度変換方法について図面を参照して詳細に説明する。
図22は、画像変換部150によりアフィン変換された画像の透明度を変更する場合に用いられるα値(アルファ値)と、撮像時刻との関係を示す図である。ここで、α値は、透明度を表す数値であり、RGB(赤(Red)、緑(Green)、青(Blue))の透明度を0〜255の範囲内で変更するものである。例えば、最大値の255が設定されている場合には、対象画像が不透明となり、数値が小さくなるに応じて対象画像の透明度が上がる。そして、α値として0が設定された場合には、対象画像が完全な透明となる。すなわち、画像の透明度を変更する場合に、このα値を変更することにより所望の透明度に変更することができる。この例では、動画を構成する最後のフレームから先頭のフレームに向かって画像合成処理を繰り返す場合において、撮影時刻が古い画像の透明度を上げるとともに、撮影時刻が新しい画像の透明度を下げて画像を合成する場合について説明する。なお、撮影時刻が新しい画像の透明度を上げるとともに、撮影時刻が古い画像の透明度を下げて画像を合成するようにしてもよい。また、撮像時刻については、動画を構成するフレームに応じて特定される。
同図に示すグラフにおいて、x軸は、撮像時刻を示す軸であり、y軸は、α値の数値を示す軸である。ここで、先頭のフレームの撮像時刻をt0(=0)とし、最後のフレームの撮像時刻をtnとし、透明度を変更する対象となるフレームの撮像時刻をtmとした場合に、透明度を示すα値を次の式で定義する。
α=(OF−255)/tn×tm+255
ここで、OFは、画像が完全に透明になることを防ぐためのオフセット(offset)成分である。また、この透明度の変更は、フレーム毎に透明度変換部160により順次行われる。このように、透明度が変更されて作成されたパノラマ画像の例を図23に示す。
図23および図24は、画像合成部170により合成されたパノラマ画像の一例を示す図である。図23および図24に示すパノラマ画像は、動画を構成する最後のフレームから先頭のフレームに向かって画像合成処理を繰り返す場合において、撮影時刻が古い画像の透明度を上げるとともに、撮影時刻が新しい画像の透明度を下げて画像を合成した場合におけるパノラマ画像である。
図23(a)に示すパノラマ画像は、街中において、カメラを左右に移動させながら撮影された動画について作成されたパノラマ画像である。同図に示すパノラマ画像に対応する動画は、同図に示す左側の透明度が高く、右側に向かうに従って透明度が低くなる。このため、同図に示す左側の撮像時刻が古く、右側に向かうに従って撮像時刻が新しいことを容易に認識することができる。
図23(b)に示すパノラマ画像は、結婚式場において、カメラを左右に移動させながら撮影された動画について作成されたパノラマ画像である。同図に示すパノラマ画像に対応する動画は、同図に示す右側の透明度が高く、左側に向かうに従って透明度が低くなる。このため、同図に示す右側の撮像時刻が古く、左側に向かうに従って撮像時刻が新しいことを容易に認識することができる。
図24に示すパノラマ画像は、山において、カメラを左右に移動させながら撮影された動画について作成されたパノラマ画像である。同図に示すパノラマ画像に対応する動画は、左右方向の移動が何度か繰り返したため、左側の透明度が低くなるとともに、右端側の一部でも透明度が低くなっている。このように、パノラマ画像に対応する動画の内容の把握が容易であるとともに、撮影された空間についても速やかに把握することができる。また、撮像時刻に応じて透明度を変更することにより、パノラマ画像上に表示されている画像が記録された撮像時刻を視覚的に容易に認識することができる。これらの例では、撮像時刻に応じて透明度を変更する例について説明したが、他の方法を用いて撮像時刻に応じて画像の色情報を変更するようにしてもよい。例えば、撮影時刻に応じて、モノクロやセピアの濃淡を変更するようにしてもよい。例えば、最後のフレームから先頭のフレームに向かうに従って解像度を落とす方法や、カラーから白黒に変更する方法等がある。また、例えば、対象となる画像の色情報を変更する以外に、他の方法を用いて撮像時刻に応じた変更を施すようにしてもよい。例えば、所定間隔のフレームに対応する画像の周囲に枠を付して、この枠の種類(例えば、色、太さ、透過率)をα値に応じて変更するようにしてもよい。なお、インデックス画像の周りに枠を付して表示する例については、図44を参照して詳細に説明する。
次に、インデックス画像を抽出するインデックス画像抽出方法について図面を参照して詳細に説明する。
図25は、本発明の実施の形態におけるインデックス画像を抽出する場合における抽出方法の一例を概略的に示す図である。図25に示す合成画像640は、画像合成部170により作成されている途中の合成画像を簡略化して示すものである。この例では、合成画像640において、インデックス画像として画像641乃至643が抽出されているものとする。
インデックス画像を抽出する場合には、インデックス情報記憶部230に記憶されているインデックス画像(既にインデックス画像として抽出されている画像)と、アフィン変換された現フレームに対応する画像との重複率に基づいて判断される。具体的には、インデックス情報記憶部230に記憶されているインデックス画像(既にインデックス画像として抽出されている画像)と、アフィン変換された現フレームに対応する画像との重複率が計算される。例えば、図25に示す画像644は、アフィン変換された現フレームに対応する画像であるものとする。この場合には、画像644と、インデックス画像である画像641乃至643との重複率が計算される。画像644については、画像641のみとの重複領域645と、画像641および642との重複領域646と、画像642のみとの重複領域647とが、画像641乃至643と重複している領域である。図25では、重複領域645乃至647を斜線で示す。そして、重複領域645乃至647の面積が加算され、この加算された面積(重複領域645乃至647の合計面積)の値と、予め設定されている閾値とを比較して、画像644全体の面積に対する重複領域645乃至647の合計面積の割合である重複率の値が閾値以下であれば、他のインデックス画像との重複が少ない画像である。このように、他のインデックス画像との重複が少ない画像がインデックス画像として抽出される。そして、抽出されたインデックス画像に対応するフレーム番号と、インデックス画像の4頂角に対応する座標の値と、インデックス画像とが動画IDに関連付けられてインデックス情報記憶部230に記憶される。
このように、インデックス画像が抽出された場合には、インデックス画像抽出部190が、現フレームに対応する画像がインデックス画像である旨を一定区間動画音声情報抽出部250に出力する。本発明の実施の形態では、既にインデックス画像として抽出されている全ての画像と、アフィン変換された現フレームに対応する画像との重複率に基づいて、新たなインデックス画像を抽出する例について説明するが、例えば、直前に抽出された1または所定数のインデックス画像と、アフィン変換された現フレームに対応する画像との重複率に基づいて、新たなインデックス画像を抽出するようにしてもよい。このように、直前に抽出された1または所定数のインデックス画像を比較の対象として用いることにより、撮像空間上において比較的近い位置に存在する画像について、撮影時刻が比較的早い画像と、撮影時刻が比較的遅い画像とをインデックス画像として抽出することができる。
なお、現フレームに対応する画像がインデックス画像である旨を示すインデックス画像マーカを、画像合成部170により合成される合成画像における現フレームに対応する画像の周りに付するようにしてもよい。例えば、図25に示すように、合成画像640における画像644の周りに太線の枠を付することができる。なお、複数のインデックス画像が重なる場合には、例えば、撮影時刻が最も遅いインデックス画像マーカを、他のインデックス画像マーカに上書きするようにする。例えば、インデックス画像641乃至643のインデックス画像マーカに、画像644のインデックス画像マーカを上書きする。また、例えば、各インデックス画像のインデックス画像マーカについては、上書きせずに異なる画像レイヤに描画して、パノラマ画像上に各インデックス画像マーカが表示されるようにしてもよい。
次に、パノラマ画像記憶部240に記憶されている各パノラマ画像を表示部292に一覧表示させる場合におけるパノラマ画像の配置位置決定方法について図面を参照して詳細に説明する。
図26は、パノラマ画像の一覧を表示する場合におけるパノラマ画像配置領域、および、パノラマ画像の一覧が表示される表示部292における表示画面を模式的に示す図である。図26(b)に示すように、パノラマ画像の一覧が表示部292に表示される場合には、表示の対象となるパノラマ画像を配置すべき領域であるパノラマ画像配置領域550が設定され、パノラマ画像配置領域550上に各パノラマ画像が配置される。また、パノラマ画像配置領域550上に配置された各パノラマ画像が表示部292に表示される場合には、パノラマ画像配置領域550上の表示対象領域551に含まれるパノラマ画像が表示される。
図26(b)には、パノラマ画像の一覧が表示部292に表示される場合における表示画面の一例を示す図である。なお、同図では、パノラマ画像の表示を省略して示す。同図に示す表示画面560には、パノラマ画像の一覧が表示されるパノラマ画像一覧表示領域561と、拡大縮小バー562と、上下スクロールバー563と、左右スクロールバー564とが含まれる。これらの各バーについては、例えば、操作受付部280においてマウス操作によるカーソルを用いた操作によって移動させることができる。
パノラマ画像一覧表示領域561は、図26(a)に示す表示対象領域551に含まれるパノラマ画像が表示される領域である。また、上下スクロールバー563または左右スクロールバー564を移動させることにより、表示対象領域551を移動させることが可能であり、表示対象領域551の移動に応じて、パノラマ画像一覧表示領域561に表示されるパノラマ画像が変更される。また、拡大縮小バー562を移動させることにより、パノラマ画像一覧表示領域561に表示されるパノラマ画像の大きさが変更される。このように、拡大縮小バー562の移動によりパノラマ画像の大きさが変更される場合には、パノラマ画像の配置が変更され、配置変更後の各パノラマ画像がパノラマ画像一覧表示領域561に再表示される。
拡大縮小バー562は、パノラマ画像一覧表示領域561に表示されるパノラマ画像の大きさを変更する場合に用いられるものである。例えば、パノラマ画像一覧表示領域561に表示されるパノラマ画像の大きさを縮小させる場合には、拡大縮小バー562を左側に移動させる。また、パノラマ画像一覧表示領域561に表示されるパノラマ画像の大きさを拡大させる場合には、拡大縮小バー562を右側に移動させる。
上下スクロールバー563は、パノラマ画像一覧表示領域561に表示されるパノラマ画像を上下方向に移動させるためのスクロールバーである。すなわち、上下スクロールバー563の上下方向の移動に応じて、図26(a)に示す表示対象領域551が上下方向に移動する。
左右スクロールバー564は、パノラマ画像一覧表示領域561に表示されるパノラマ画像を左右方向に移動させるためのスクロールバーである。すなわち、左右スクロールバー563の左右方向の移動に応じて、図26(a)に示す表示対象領域551が左右方向に移動する。
図27は、縦幅を合わせた各パノラマ画像を配置する場合におけるパノラマ画像配置領域550を模式的に示す図である。このパノラマ画像配置領域550は、図26(a)に示すパノラマ画像配置領域550と同様であり、縦幅を合わせた各パノラマ画像を配置する場合に用いられる最大横幅閾値w1、横幅閾値w2、改行閾値w3、縦幅h1が設定される。最大横幅閾値w1、横幅閾値w2および改行閾値w3は、各パノラマ画像を配置すべき位置を決定する場合に用いられる閾値である。
最大横幅閾値w1は、パノラマ画像配置領域550の横幅と同じ値であり、同一行に各パノラマ画像を並べて配置する場合において、同一行に並べて配置可能な各パノラマ画像の横幅の合計値を規定する閾値である。
横幅閾値w2は、表示対象領域551の横幅と同じ値であり、同一行に各パノラマ画像を並べて配置する場合において、同一行に並べて配置するか否かを判断する場合に用いられる閾値である。
改行閾値w3は、表示対象領域551の横幅よりも短い値であり、同一行に各パノラマ画像を並べて配置する場合において、配置すべき行を変更するか否かを判断する場合に用いられる閾値である。なお、これらの各閾値については、図29および図30を参照して詳細に説明する。ここで、縦幅h1は、パノラマ画像配置領域550に配置される各パノラマ画像を縮小または拡大する場合における基準となる長さであり、それぞれ同じ値が設定される。
図28は、パノラマ画像記憶部240に記憶されているパノラマ画像を模式的に示すとともに、これらのパノラマ画像を、図27に示す縦幅h1の縦幅に合わせて、縦幅および横幅の比率を一定にして縮小または拡大させた場合における各パノラマ画像を示す図である。同図に示すように、画像合成部170により作成されるパノラマ画像570乃至574は、縦幅(上下方向の長さ)および横幅(左右方向の長さ)の比率が一定でない場合が多い。例えば、ユーザがカメラを左右方向に移動しながら撮像動画が記録された場合には、横幅が長く縦幅が短いパノラマ画像が作成される。しかしながら、ユーザによりカメラの姿勢が多様に変化したような場合には、横幅が長く縦幅が短いパノラマ画像以外のパノラマ画像が作成される。そこで、以下では、各種の形状からなるパノラマ画像570乃至574の縦幅を合わせた後に、パノラマ画像配置領域550に配置する例について説明する。
同図に示すように、パノラマ画像570乃至574が、縦幅h1の縦幅に合わせて縮小または拡大されて、パノラマ画像575乃至579が作成される。そして、縮小または拡大後の各パノラマ画像の横幅が、パノラマ画像575乃至579の左右方向の両端の値に基づいて算出される。例えば、パノラマ画像575乃至579の横幅を横幅w11乃至w15とする。
図29および図30は、図27に示すパノラマ画像配置領域550にパノラマ画像575乃至579を配置する場合における配置例を示す図である。パノラマ画像配置領域550にパノラマ画像575乃至579が配置される場合には、パノラマ画像575乃至579の中から1つのパノラマ画像が順次選択され、この選択されたパノラマ画像がパノラマ画像配置領域550の各行において、左端から順番に並べて配置される。この場合に、一番上の行から順次配置されるものの、最大横幅閾値w1、横幅閾値w2および改行閾値w3を用いて、何れの行に配置するかが判断される。
例えば、一番上の行に配置されたパノラマ画像のうちで右端に配置されたパノラマ画像の右隣に、配置位置決定の対象となる1つのパノラマ画像である対象パノラマ画像が配置され、この同一行に並べて配置された対象画像を含む各パノラマ画像の横幅の合計値が横幅閾値w2を超えているか否かが判断される。そして、この同一行に並べて配置された各パノラマ画像の横幅の合計値が横幅閾値w2を超えていない場合には、この位置が対象パノラマ画像の配置位置として決定される。一方、この同一行に並べて配置された各パノラマ画像の横幅の合計値が横幅閾値w2を超えている場合には、その合計値が最大横幅閾値w1を超えているか否かが判断される。そして、その合計値が最大横幅閾値w1を超えている場合には、対象パノラマ画像の配置位置が現在配置されている行の1つ下の行に変更される。一方、その合計値が最大横幅閾値w1を超えていない場合には、対象パノラマ画像の左側に存在する各パノラマ画像の横幅の合計値が、改行閾値w3を超えているか否かが判断される。対象パノラマ画像の左側に存在する各パノラマ画像の横幅の合計値が、改行閾値w3を超えていない場合には、この位置が対象パノラマ画像の配置位置として決定される。一方、対象パノラマ画像の左側に存在する各パノラマ画像の横幅の合計値が、改行閾値w3を超えている場合には、対象パノラマ画像の配置位置が現在配置されている行の1つ下の行に変更される。そして、対象パノラマ画像の配置位置が現在配置されている行の1つ下の行に変更された場合には、変更後の行に配置されたパノラマ画像のうちで右端に配置されたパノラマ画像の右隣に対象パノラマ画像が配置され、上記と同様の処理が行われ、対象パノラマ画像の配置位置が順次決定される。
例えば、対象パノラマ画像として、パノラマ画像575乃至579の順序で選択された場合について説明する。この場合には、図29(a)に示すように、パノラマ画像575乃至577が一番上の行に並べて順次配置される。ここで、パノラマ画像配置領域550上のパノラマ画像577の右隣りにパノラマ画像578が配置される場合には、パノラマ画像578の右端が最大横幅閾値w1および横幅閾値w2を超えている。このため、パノラマ画像578の配置位置が1つ下の行に変更される。このように、変更された場合には、変更後の行において、同様の配置位置決定が行われる。続いて、パノラマ画像配置領域550上のパノラマ画像577の右隣りにパノラマ画像579が配置される場合には、パノラマ画像579の右端が横幅閾値w2を超えているものの、最大横幅閾値w1を超えていない。また、パノラマ画像579の左側に存在するパノラマ画像575乃至577の横幅の合計値が、改行閾値w3を超えていない。このため、パノラマ画像579の配置位置として、パノラマ画像配置領域550上のパノラマ画像577の右隣りの位置が決定される。すなわち、図29(b)に示すように、配置位置が決定される。
また、例えば、対象パノラマ画像として、パノラマ画像575、578、577、576、579の順序で選択された場合について説明する。この場合には、図30(a)に示すように、パノラマ画像575、578が一番上の行に並べて順次配置される。ここで、パノラマ画像配置領域550上のパノラマ画像578の右隣りにパノラマ画像577が配置される場合には、パノラマ画像577の右端が横幅閾値w2を超えているものの、最大横幅閾値w1を超えていない。この場合には、パノラマ画像577の左側に存在するパノラマ画像575および578の横幅の合計値が、改行閾値w3を超えているか否かが判断される。この場合には、パノラマ画像577の左側に存在するパノラマ画像575および578の横幅の合計値が、改行閾値w3を超えていないため、この位置がパノラマ画像577の配置位置として決定される。なお、パノラマ画像576および579については、一番上の右端が最大横幅閾値w1および横幅閾値w2を超えるため、パノラマ画像578の配置位置が1つ下の行に変更され順次配置される。すなわち、図30(a)に示すように、配置位置が決定される。
また、例えば、対象パノラマ画像として、パノラマ画像578、576、579、577、575の順序で選択された場合について説明する。この場合には、図30(b)に示すように、パノラマ画像578、576が一番上の行に並べて順次配置される。ここで、パノラマ画像配置領域550上のパノラマ画像576の右隣りにパノラマ画像579が配置される場合には、パノラマ画像579の右端が横幅閾値w2を超えていないため、この位置がパノラマ画像579の配置位置として決定される。続いて、パノラマ画像配置領域550上のパノラマ画像579の右隣りにパノラマ画像577が配置される場合には、パノラマ画像577の右端が横幅閾値w2を超えていて、最大横幅閾値w1も越えている。このため、パノラマ画像577の配置位置が1つ下の行に変更され順次配置される。また、パノラマ画像配置領域550上のパノラマ画像579の右隣りにパノラマ画像575が配置される場合には、パノラマ画像575の右端が最大横幅閾値w1および横幅閾値w2を超えるため、パノラマ画像575の配置位置が1つ下の行に変更される。すなわち、図30(b)に示すように、配置位置が決定される。
このように、最大横幅閾値w1、横幅閾値w2および改行閾値w3を用いて配置すべき行を決定するため、表示部292にパノラマ画像一覧表示領域561に各パノラマ画像が表示される場合に、同一行の右側のパノラマ画像の少なくとも一部を表示させることができる。これにより、一覧性を向上させることができる。
次に、各パノラマ画像の大きさを変更せずに各パノラマ画像を配置する場合における配置位置決定方法について図面を参照して詳細に説明する。
図31は、パノラマ画像記憶部240に記憶されているパノラマ画像を模式的に示すとともに、これらのパノラマ画像における縦幅および横幅を示す図である。同図に示すように、各種の形状からなるパノラマ画像580乃至584について、横幅w21乃至w25および縦幅h11乃至h15が算出される。また、パノラマ画像580乃至584により形成される矩形(点線で示す)の4つの頂点を用いて以下で示す配置位置が決定される。
図32および図33は、図26(a)に示すパノラマ画像配置領域550にパノラマ画像580乃至584が配置される場合における配置例を示す図である。この例は、パノラマ画像配置領域550における表示対象領域551内に各パノラマ画像の全部が表示されるように配置する例について説明する。
パノラマ画像配置領域550にパノラマ画像580乃至584が配置される場合には、パノラマ画像580乃至584の中から1つのパノラマ画像が選択され、この選択されたパノラマ画像がパノラマ画像配置領域550の左上隅から順番に配置される。このように、少なくとも1つのパノラマ画像がパノラマ画像配置領域550に配置された場合において、これ以降に配置されるパノラマ画像の配置位置は、既に配置されたパノラマ画像により形成される矩形の4つの頂点のうちの左下の頂点および右上の頂点の何れかが配置位置候補とされる。そして、一番上に存在する配置位置候補から順次選択され、パノラマ画像の配置位置の決定の判定が行われる。すなわち、配置位置候補が上に存在するに従って優先度が高くなる。
ここで、配置位置候補からパノラマ画像の配置位置を決定する場合において、3つの条件を満たす必要がある。第1の条件は、選択された配置位置候補に対象パノラマ画像を配置した場合に、既に配置位置が決定されたパノラマ画像により形成される矩形領域と、対象パノラマ画像により形成される矩形領域とが重複しないことである。また、第2の条件は、選択された配置位置候補に対象パノラマ画像を配置した場合に、対象パノラマ画像が表示対象領域551の右端からはみ出ないことである。さらに、第3の条件は、選択された配置位置候補に対象パノラマ画像を配置した場合において、対象パノラマ画像の左下の頂点が、既に配置位置が決定された各パノラマ画像の左下の頂点のうちで、一番下に存在することになる場合には、対象パノラマ画像の左下の頂点が、表示対象領域551の左端に位置するようになることである。
これらの3つの条件を満たない場合には、配置位置候補として存在する頂点のうちで、上から二番目に存在する配置位置候補を選択して、パノラマ画像の配置位置が判定される。そして、上記の3つの条件を満たす場合には、この二番目の配置位置候補がパノラマ画像の配置位置として決定される。一方、上記の3つの条件を満たさない場合には、上から三番目以降に存在する配置位置候補を順次選択して、同様の決定処理を繰り返す。
例えば、パノラマ画像580乃至584の順序で選択され、配置位置が判定される場合を例にして説明する。
図32(a)に示すように、パノラマ画像580により形成される矩形の左上の頂点がパノラマ画像配置領域550の左上隅651に位置するように、パノラマ画像580が配置される。この場合は、パノラマ画像580により形成される矩形の左下の頂点653および右上の頂点652の何れかが配置位置候補とされる。続いて、パノラマ画像581が配置される場合には、図32(b)に示すように、パノラマ画像581により形成される矩形の左上の頂点が、パノラマ画像580により形成される矩形の左下の頂点653および右上の頂点652の何れかに位置するように、パノラマ画像581が配置される。このように、配置位置候補が複数存在する場合には、複数の配置位置候補のうちから一番上側に存在する配置位置候補が選択される。すなわち、図32(b)に示す場合には、パノラマ画像581により形成される矩形の左上の頂点が、パノラマ画像580により形成される矩形の右上の頂点652に位置するように、パノラマ画像581が配置される。
また、パノラマ画像により形成される矩形状の4つの頂点のうちの左下の頂点または右上の頂点の何れかにパノラマ画像が配置された場合には、パノラマ画像が配置された頂点は、これ以降の配置位置候補から除かれる。すなわち、図32(b)に示す場合には、パノラマ画像580により形成される矩形の右上の頂点652に位置するように、パノラマ画像581が配置されるため、右上の頂点652が、これ以降の配置位置候補から除かれる。このため、これ以降の配置位置候補として、頂点653乃至655が残ることになる。以下は、同様に、配置位置候補として存在する頂点のうちで、一番上に存在する配置位置候補から順次選択され、パノラマ画像の配置位置が判定される。
例えば、パノラマ画像580乃至584の順序で選択された場合を、図33に示す。図32(b)に示すように、パノラマ画像580、581については、表示対象領域551の上端に位置するように配置位置が決定される。続いて、パノラマ画像582については、配置位置候補として存在する頂点653乃至655のうちの一番上に存在する頂点654を選択して、パノラマ画像581の右隣に配置すると、表示対象領域551の右端からはみ出る。このため、配置位置候補として存在する頂点653乃至655のうちで、上から二番目に存在する頂点653を選択して、パノラマ画像の配置位置が決定される。
続いて、パノラマ画像583については、配置位置候補として存在する頂点654乃至657のうちの一番上に存在する頂点654を選択して、パノラマ画像581の右隣に配置すると、表示対象領域551の右端からはみ出る。また、配置位置候補として存在する頂点654乃至657のうちで、上から二番目に存在する頂点655を選択すると、パノラマ画像582により形成される矩形領域と、パノラマ画像583により形成される矩形領域とが重複する。また、配置位置候補として存在する頂点654乃至657のうちで、上から三番目に存在する頂点656を選択して、パノラマ画像582の右隣に配置すると、縦幅h14は縦幅h13よりも長いため、パノラマ画像583の左下の頂点が、既に配置位置が決定されたパノラマ画像580乃至582の左下の頂点のうちで、一番下に存在することになるとともに、パノラマ画像583の左下の頂点が、表示対象領域551の左端に位置しない。このため、配置位置候補として存在する頂点654乃至657のうちで、上から四番目に存在する頂点657を選択して、パノラマ画像の配置位置が決定される。また、パノラマ画像584についても同様に配置位置が決定される。このように、表示対象領域551により特定される略矩形において、この略矩形の上側を優先度の高い配置位置としてパノラマ画像を順次配置していき、対象パノラマ画像が最も上になる位置で他のパノラマ画像の下隣または右隣に配置した際に、既に配置された各パノラマ画像の下側の頂点のうちで最も下の頂点が、対象パノラマ画像の下の頂点よりも上に存在するときには、対象パノラマ画像の左下の頂点が表示対象領域551の左端に接する位置を、対象パノラマ画像の配置位置として決定することができる。
以上では、各パノラマ画像の大きさを変更せずに、各パノラマ画像を配置する場合について説明したが、例えば、上述した3つの条件を満たない場合には、対象パノラマ画像を所定角度(例えば、90度)回転させ、この回転後の対象パノラマ画像が3つの条件を満すか否かを判断して、3つの条件を満す場合には、その位置を配置位置として決定するようにしてもよい。この場合には、90度回転されたパノラマ画像が表示される。
また、特定フレームの位置に基づいて、対象パノラマ画像を回転させ、この回転後の対象パノラマ画像について配置位置の決定をするようにしてもよい。例えば、特定フレームを先頭フレームとし、この先頭フレームの撮像時の上下方向に基づいて対象パノラマ画像を回転させることができる。
図34(a)は、動画を構成する最後のフレームから先頭フレームに向かって画像を合成されてパノラマ画像が作成された場合におけるパノラマ画像673および先頭フレームの位置674を示す図である。また、図34(b)は、先頭フレームの撮像時における上下方向に基づいて回転させた後のパノラマ画像673を示す図である。このように、パノラマ画像673において、先頭フレームの撮像時における上下方向が変換されている場合には、先頭フレームの撮像時における上下方向に基づいて、パノラマ画像673を回転させ、回転後のパノラマ画像を一覧表示させることができる。また、加速度センサ等の各種センサにより検出された撮像時におけるカメラの向き情報を動画に関連付けて記憶させるとともに、パノラマ画像の作成時において、このカメラの向き情報をパノラマ画像に関連付けて記憶し、パノラマ画像の表示位置決定時には、このカメラの向き情報に基づいて、パノラマ画像を変換させるようにしてもよい。
図35は、上述した配置位置決定方法により決定された配置位置に各パノラマ画像が配置されている表示例を示す図である。図35(a)に示す表示画面は、比較的大きなパノラマ画像を表示させるように拡大縮小バー676が移動された場合における表示画面である。この表示画面に含まれるパノラマ画像一覧表示領域675には、各パノラマ画像が表示される。また、図35(b)に示す表示画面は、比較的小さなパノラマ画像を表示させるように拡大縮小バー678が移動された場合における表示画面である。この表示画面に含まれるパノラマ画像一覧表示領域677には、各パノラマ画像が表示される。
次に、パノラマ画像上においてインデックス画像を表示させる場合について図面を参照して詳細に説明する。
図36は、表示部292に表示されるパノラマ画像と、インデックス画像との関係を示す図である。本発明の実施の形態では、表示部292に表示されるパノラマ画像上において、所定の操作に応じて、インデックス情報記憶部230に記憶されているインデックス画像を表示させる。図36(a)は、パノラマ画像680上にインデックス画像681を表示させた場合における表示例を示す図である。また、図36(b)は、図36(a)に示すパノラマ画像680が描画されるレイヤであるパノラマ画像レイヤ682と、図36(a)に示すインデックス画像681が描画されるレイヤであるインデックス画像レイヤ683とを模式的に示す図である。ここで、本発明の実施の形態では、インデックス画像レイヤ683と、パノラマ画像レイヤ682とに描画された各画像を重ねられて表示させる場合について説明する。なお、インデックス画像レイヤ683は、インデックス情報記憶部230に記憶されているインデックス画像が描画されるレイヤであり、パノラマ画像レイヤ682は、パノラマ画像配置位置決定部260により配置位置が決定されたパノラマ画像が描画されるレイヤである。ここで、インデックス画像レイヤ683には、インデックス情報記憶部230に記憶されているインデックス画像のうちで、操作受付部280における操作入力に応じて、選択部270により選択されたインデックス画像が描画される。この選択方法については、図37を参照して詳細に説明する。
図37(a)は、表示部292に表示されているパノラマ画像上に表示すべきインデックス画像を選択する場合における選択方法を概略的に示す図である。図37(b)は、インデックス画像を含む動画における記録位置を概略的に示す図である。図37(a)に示すパノラマ画像690は、表示部292に表示されているパノラマ画像であり、例えば、表示部292における上下方向をx軸とし、左右方向をy軸とする。
表示部292に表示されているパノラマ画像690において、操作受付部280からの操作入力によりユーザがカーソル691を移動させる。この移動操作による移動後のカーソル691の位置に基づいて、インデックス画像が選択される。
具体的には、インデックス情報記憶部230の位置情報233に記録されている座標により特定される中心座標の中で、パノラマ画像690上における移動後のカーソル691の位置から最短距離に存在する座標点が検出され、この座標点に対応するフレーム番号232および動画ID231が選択される。例えば、パノラマ画像690においてインデックス画像692および693に対応する位置にカーソル691が移動された場合には、カーソル691の位置とインデックス画像692の中心座標の位置694との距離D1が算出されるとともに、カーソル691の位置とインデックス画像693の中心座標の位置695との距離D2が算出される。そして、算出された距離D1および距離D2が比較されると、距離D2が短いため、表示すべきインデックス画像としてインデックス画像693が選択される。続いて、この選択されたフレーム番号232および動画ID231が表示制御部291に出力されると、表示制御部291は、この選択されたフレーム番号232および動画ID231に関連付けてインデックス情報記憶部230に記憶されているインデックス画像を検索し、この検索されたインデックス画像をインデックス画像レイヤに描画する。この場合に、検索されたインデックス画像に関連付けてインデックス情報記憶部230に記憶されている位置情報233に基づいて、インデックス画像レイヤに描画される位置が決定される。また、インデックス情報記憶部230の位置情報233に記録されている座標により特定される中心座標の中で、パノラマ画像690上の選択操作により選択された位置から最短距離に存在する座標点が複数検出された場合には、例えば、位置情報233に記録されている座標により算出されるインデックス画像の面積が大きいものが選択されるようにすることができる。また、フレーム番号が大きいものが選択されるようにしてもよい。なお、他の評価関数に基づいて適切なフレーム番号および動画IDを選択するようにしてもよい。
また、上述したように、インデックス画像693が選択されている状態で、例えば、操作受付部280からの操作入力によりユーザがカーソル691を操作して、マウスにより、インデックス画像693上において左クリック操作がされた場合には、選択されたフレーム番号232および動画ID231に関連付けてインデックス情報記憶部230に記憶されている音声情報235を音声制御部293が取得し、この取得された音声情報を音声出力部294から出力する。また、この選択されたフレーム番号232および動画ID231に関連付けてインデックス情報記憶部230に記憶されている動画情報236を表示制御部291が取得し、この取得された動画情報を表示部292に再生させる。この再生は、例えば、パノラマ画像の近くに表示させるようにしてもよく、パノラマ画像一覧表示領域の外に動画再生領域を設け、この動画再生領域に再生表示をさせるようにしてもよい。
さらに、上述したように、インデックス画像693が選択されている状態で、例えば、操作受付部280からの操作入力によりユーザがカーソル691を操作して、マウスにより、インデックス画像693上においてダブルクリック操作がされた場合には、インデックス画像693に対応する動画695の記録位置からの再生を開始させることができる。この再生は、選択されたフレーム番号232および動画ID231に基づいて、動画記憶部200に記憶されている動画ファイルの中からインデックス画像693に対応する動画695の位置を表示制御部291が検索し、この検索された動画の位置から動画を再生させる。例えば、インデックス画像693に対応する動画695の記録位置を697とし、インデックス画像692に対応する動画695の記録位置を696とした場合に、動画695の記録位置697から動画が再生される。
図38乃至図42は、選択されたインデックス画像がパノラマ画像上に表示される場合における表示例を示す図である。図38および図39のそれぞれに示すパノラマ画像は、スキー場を滑走するスノーボーダーを撮像した動画により作成されたパノラマ画像であり、撮像時刻の新しい画像から古い画像に向かって透明度を高めて作成されたパノラマ画像である。このパノラマ画像上において、各部にカーソル706を移動させることにより、インデックス画像701乃至705を表示させることができる。
図40乃至図42は、パノラマ画像一覧表示領域において、図38および図39に示すパノラマ画像を表示させた場合の一例を示す図である。このように、パノラマ画像一覧表示領域に表示されているパノラマ画像710上において、各部にカーソル716を移動させることにより、インデックス画像711乃至715を表示させることができる。
図43は、表示部292がタッチパネルで構成されている場合におけるインデックス画像の表示例を示す図である。同図に示すように、表示部292がタッチパネルで構成されている場合には、ユーザが指により所望の部分を押下することにより、各操作入力を行うことができる。例えば、表示部292にパノラマ画像736が表示されている場合において、所望の部分を指737で押下する。この場合には、上述したように、押下された位置に応じてインデックス画像を表示させることができる。しかしながら、上述した表示方法では、表示されたインデックス画像がユーザの指737の下になってしまい、見え難くなるおそれがある。このため、この例では、選択されたインデックス画像738をインデックス画像の位置に応じて、パノラマ画像736の上部分に表示させる。このように表示させることによって、表示部292がタッチパネルで構成されている場合でも、インデックス画像を見やすく表示させることができる。なお、インデックス画像を表示させる位置は、パノラマ画像の下部分等の他の領域に表示させるようにしてもよく、予め決められた表示領域に表示させるようにしてもよい。
次に、インデックス画像に関連付けられてインデックス情報記憶部230に記憶されているフレーム番号および位置情報に基づいて、パノラマ画像において撮像時間を表現させる例について図面を参照して詳細に説明する。
図44は、パノラマ画像上において、インデックス画像に対応する位置に枠を付すとともに、撮像時刻に応じて枠の太さを変更して表示する例を示す図である。同図に示すパノラマ画像は、図38乃至図42に示すパノラマ画像と同じものである。図44に示すように、インデックス画像に関連付けられてインデックス情報記憶部230に記憶されている位置情報に基づいて、表示制御部291は、図38乃至図42に示すパノラマ画像上に表示されるインデックス画像の位置に枠を付すことができる。また、インデックス画像に関連付けられてインデックス情報記憶部230に記憶されているフレーム番号に基づいて、表示制御部291は、パノラマ画像の付される枠の太さを変更することができる。例えば、図44に示すように、撮像時刻が古いインデックス画像に対応する枠731を太くし、撮像時刻が新たしいインデックス画像に対応する枠735を細くすることができる。なお、枠の太さを変更する以外に、撮像時刻に応じて枠の色を変更させるようにしてもよく、枠の透過率を変更させる等、その他の変更を施すようにしてもよい。また、パノラマ画像に対応する動画を構成する各フレームの位置情報およびフレーム番号を順次記録しておき、これらの情報に基づいて、各フレームに対応する枠表示をするようにしてもよい。また、パノラマ画像作成時において、フレーム毎に、または、インデックス画像毎に枠を付すようにしてもよい。
また、複数の動画によりパノラマ画像を作成することができる。このように作成されたパノラマ画像を表示させる場合には、複数の動画により作成された旨を示す標識をパノラマ画像に関連付けて表示させることができる。
図45は、複数の動画により作成されたパノラマ画像の付近に、作成の対象となった動画の数を示す標識を付加して表示させる場合の表示例を示す図である。例えば、パノラマ画像761乃至763の付近に、これらのパノラマ画像が2つの動画により作成されたものである旨を示す標識764乃至766を表示する。ここで、標識764乃至766は、動画の数をカメラの数により表現する標識である。この例では、2台のカメラにより、2つの動画により作成されたパノラマ画像である旨を表現する。
次に、本発明の実施の形態における画像処理装置100の動作について図面を参照して説明する。
図46は、本発明の実施の形態における画像処理装置100によるパノラマ画像作成処理の処理手順を示すフローチャートである。この例では、動画を構成する先頭のフレームから最後のフレームに向かって各画像を合成してパノラマ画像を作成する場合を例にして説明する。
最初に、動画を構成する画像のサイズよりも大きいワークバッファが画像メモリ180に確保される(ステップS921)。続いて、動画記憶部200に記憶されている動画ファイルが取得されるとともに、この動画ファイルに関連付けてメタデータ記憶部210に記憶されているメタデータファイルが取得される(ステップS922)。続いて、取得された動画ファイルがデコードされ、1つのフレームである現フレームが取得されるとともに、取得された現フレームに対応するアフィン変換パラメータがメタデータファイルから取得される(ステップS923)。
続いて、取得された現フレームが、動画を構成するフレームの中の先頭のフレームであるか否かが判断される(ステップS924)。現フレームが先頭のフレームである場合には(ステップS924)、画像メモリ180のワークバッファ上における現フレームに対応する画像の位置情報が取得され、この画像(単位行列により変換された画像)と、この画像の位置情報と、フレーム番号「1」と、動画IDとがインデックス情報記憶部230に記録される(ステップS925)。この場合には、この先頭のフレームから一定区間内に存在する動画情報および音声情報が抽出され、先頭のフレームに対応する画像に関連付けてインデックス情報記憶部230に記録される。続いて、先頭のフレームに対応する画像について透明度の変換が施され、先頭のフレームに対応する画像が画像メモリ180に保存される(ステップS926)。一方、現フレームが先頭のフレームではない場合には(ステップS924)、ステップS927に進む。
続いて、取得されたアフィン変換パラメータを用いて、現フレームに対応する画像がアフィン変換される(ステップS927)。続いて、アフィン変換された現フレームに対応する画像について、透明度の変換が施される(ステップS928)。続いて、アフィン変換された現フレームに対応する画像と、インデックス情報記憶部230に記憶されているインデックス画像との重複率が計算される(ステップS929)。続いて、計算して求められた重複率の値が、閾値以下であるか否かが判断される(ステップS930)。そして、計算して求められた重複率の値が、閾値以下である場合には(ステップS930)、この現フレームから一定区間内に存在する動画情報および音声情報が抽出される(ステップS931)。続いて、画像メモリ180のワークバッファ上における現フレームに対応する画像の位置情報が取得され、この画像と、この画像の位置情報と、フレーム番号と、動画IDと、抽出された動画情報および音声情報とがインデックス情報記憶部230に記録される(ステップS932)。この記録が終了した場合(ステップS932)、または、計算して求められた重複率の値が、閾値以下ではない場合には(ステップS930)、アフィン変換され、透明度の変換が施された現フレームに対応する画像が、この現フレームよりも前のフレームに対応する各画像の合成画像に上書きして合成され、この現フレームに対応する画像が合成された画像が画像メモリ180に保存される(ステップS933)。
続いて、入力された動画ファイルを構成するフレームの中で、現フレームが最後のフレームであるか否かが判断される(ステップS934)。現フレームが最後のフレームではない場合には(ステップS934)、ステップS923に戻り、合成画像作成処理を繰り返す(ステップS923乃至S933)。
一方、現フレームが最後のフレームである場合には(ステップS934)、画像メモリ180に保持されている合成画像をパノラマ画像記憶部240に出力して記録させる(ステップS935)。続いて、確保されているワークバッファを解放して(ステップS936)、パノラマ画像作成処理を終了する。
図47は、本発明の実施の形態における画像処理装置100によるパノラマ画像表示処理の処理手順を示すフローチャートである。この処理手順では、パノラマ画像記憶部240に記憶されているパノラマ画像を表示させ、このパノラマ画像上におけるカーソル移動によりインデックス画像を表示させ、クリック操作により動画および音声を再生させる場合を例にして説明する。
最初に、パノラマ画像一覧表示画面を表示する旨の操作入力が操作受付部280により受け付けられたか否かが判断される(ステップS941)。パノラマ画像一覧表示画面を表示する旨の操作入力が受け付けられた場合には(ステップS941)、パノラマ画像の配置位置決定処理が行われる(ステップS950)。なお、このパノラマ配置位置決定処理については、図48乃至図50を参照して詳細に説明する。
続いて、決定された配置位置に配置された各パノラマ画像を含む各パノラマ画像一覧表示画面が表示部292に表示される(ステップS942)。一方、パノラマ画像一覧表示画面を表示する旨の操作入力が受け付けられていない場合には(ステップS941)、パノラマ画像一覧表示画面が表示部292に表示されているか否かが判断される(ステップS943)。パノラマ画像一覧表示画面が表示されている場合には(ステップS943)、ステップS944に進み、パノラマ画像一覧表示画面が表示されていない場合には(ステップS943)、ステップS941に戻る。
続いて、表示部292に表示されているパノラマ画像一覧表示画面に含まれるパノラマ画像の拡大縮小を指示する操作入力がされたか否かが判断される(ステップS944)。パノラマ画像一覧表示画面に含まれるパノラマ画像の拡大縮小を指示する操作入力がされた場合には(ステップS944)、ステップS950に戻り、パノラマ画像の配置位置決定処理が行われる。一方、パノラマ画像一覧表示画面に含まれるパノラマ画像の拡大縮小を指示する操作入力がされない場合には(ステップS944)、表示部292に表示されているパノラマ画像上にカーソルが存在するか否かが判断される(ステップS945)。表示部292に表示されているパノラマ画像上にカーソルが存在しない場合には(ステップS945)、パノラマ画像表示処理の動作を終了する。
一方、表示部292に表示されているパノラマ画像上にカーソルが存在する場合には(ステップS945)、カーソルの位置に基づいて、インデックス画像が選択される(ステップS946)。続いて、選択されたインデックス画像がパノラマ画像上に表示される(ステップS947)。続いて、インデックス画像が表示されている状態で、左クリック操作がされたか否かが判断される(ステップS948)。左クリック操作がされない場合には(ステップS948)、パノラマ画像表示処理の動作を終了する。ここで、表示されているインデックス画像に対応する位置からカーソルが移動された場合には、表示されているインデックス画像が消去される。
インデックス画像が表示されている状態で、左クリック操作がされた場合には(ステップS948)、表示されているインデックス画像に対応する動画情報および音声情報が再生される(ステップS949)。なお、インデックス画像が表示されている状態で、ダブルクリック操作がされた場合には、表示されているインデックス画像に対応する記録位置から動画が再生される。
図48は、本発明の実施の形態における画像処理装置100によるパノラマ画像表示処理の処理手順のうちのパノラマ画像の配置位置決定処理(図47に示すステップS950)の処理手順を示すフローチャートである。この処理手順では、パノラマ画像の縦幅が一定になるように各パノラマ画像を縮小または拡大させた後に配置位置を決定する場合を例にして説明する。
最初に、パノラマ画像配置領域および表示対象領域の縦幅および横幅が取得される(ステップS951)。続いて、取得された各縦幅に基づいて、各パノラマ画像の縦幅が算出される(ステップS952)。続いて、取得された各横幅に基づいて、最大横幅閾値、横幅閾値、改行閾値が算出される(ステップS953)。続いて、パノラマ画像記憶部240から1つのパノラマ画像が取得される(ステップS954)。続いて、算出された縦幅になるように、取得されたパノラマ画像が拡大または縮小される(ステップS955)。
続いて、拡大または縮小されたパノラマ画像である対象パノラマ画像が、一番上の行に並べて配置されているパノラマ画像のうちの右端のパノラマ画像の右隣に配置された場合に、同一行に配置されている各パノラマ画像の横幅の合計値が、横幅閾値を越えているか否かが判断される(ステップS956)。同一行に配置されている各パノラマ画像の横幅の合計値が、横幅閾値を越えていない場合には(ステップS956)、現在の位置が対象パノラマ画像の配置位置に決定される(ステップS960)。
一方、同一行に配置されている各パノラマ画像の横幅の合計値が、横幅閾値を越えている場合には(ステップS956)、同一行に配置されている各パノラマ画像の横幅の合計値が、最大横幅閾値を越えているか否かが判断される(ステップS957)、同一行に配置されている各パノラマ画像の横幅の合計値が、最大横幅閾値を越えている場合には(ステップS957)、現在の位置の1つ下の行に、配置位置が変更され(ステップS959)、ステップS956に進む。一方、同一行に配置されている各パノラマ画像の横幅の合計値が、最大横幅閾値を越えていない場合には(ステップS957)、対象パノラマ画像の左隣までの各パノラマ画像の横幅の合計値が、改行閾値を越えているか否かが判断される(ステップS958)。
対象パノラマ画像の左隣までの各パノラマ画像の横幅の合計値が、改行閾値を越えている場合には(ステップS958)、現在の位置の1つ下の行に、配置位置が変更され(ステップS959)、ステップS956に進む。対象パノラマ画像の左隣までの各パノラマ画像の横幅の合計値が、改行閾値を越えていない場合には(ステップS958)、現在の位置が対象パノラマ画像の配置位置に決定される(ステップS960)。続いて、パノラマ画像記憶部240に記憶されている全てのパノラマ画像が取得されたか否かが判断される(ステップS961)。パノラマ画像記憶部240に記憶されている全てのパノラマ画像が取得されていない場合には(ステップS961)、ステップS954に戻り、パノラマ画像の配置位置決定処理を繰り返す(ステップS954乃至S960)。パノラマ画像記憶部240に記憶されている全てのパノラマ画像が取得された場合には(ステップS961)、パノラマ画像の配置位置決定処理の動作を終了する。
図49は、本発明の実施の形態における画像処理装置100によるパノラマ画像表示処理の処理手順のうちのパノラマ画像の配置位置決定処理(図47に示すステップS950)の処理手順を示すフローチャートである。この処理手順では、パノラマ画像の大きさを変更せずに各パノラマ画像の配置位置を決定する場合を例にして説明する。
最初に、表示対象領域の大きさが取得される(ステップS971)。続いて、パノラマ画像記憶部240から1つのパノラマ画像が取得される(ステップS972)。続いて、取得されたパノラマ画像である対象パノラマ画像により形成される矩形の大きさが算出される(ステップS973)。続いて、優先度の高い配置位置候補に対象パノラマ画像が配置される(ステップS974)。
続いて、配置位置候補に配置された対象パノラマ画像により形成される矩形領域と、既に配置位置が決定されたパノラマ画像により形成される矩形領域とが重複するか否かが判断される(ステップS975)。配置位置候補に配置された対象パノラマ画像により形成される矩形領域と、既に配置位置が決定されたパノラマ画像により形成される矩形領域とが重複する場合には(ステップS975)、次に優先度の高い配置位置候補が選択され(ステップS979)、ステップS975に戻る。
配置位置候補に配置された対象パノラマ画像により形成される矩形領域と、既に配置位置が決定されたパノラマ画像により形成される矩形領域とが重複しない場合には(ステップS975)、配置位置候補に配置された対象パノラマ画像が表示対象領域の右端からはみ出すか否かが判断される(ステップS976)。配置位置候補に配置された対象パノラマ画像が表示対象領域の右端からはみ出す場合には(ステップS976)、ステップS979に進む。
配置位置候補に配置された対象パノラマ画像が表示対象領域の右端からはみ出さない場合には(ステップS976)、配置位置候補に配置された対象パノラマ画像の左下の頂点が、既に配置位置が決定された各パノラマ画像の左下の頂点のうちで一番下に存在し、かつ、対象パノラマ画像の左下の頂点が、表示対象領域の左端に接しないか否かが判断される(ステップS977)。配置位置候補に配置された対象パノラマ画像の左下の頂点が、既に配置位置が決定された各パノラマ画像の左下の頂点のうちで一番下に存在し、かつ、対象パノラマ画像の左下の頂点が、表示対象領域の左端に接しない場合には(ステップS977)、ステップS979に進む。
配置位置候補に配置された対象パノラマ画像の左下の頂点が、既に配置位置が決定された各パノラマ画像の左下の頂点のうちで一番下に存在しない場合、または、対象パノラマ画像の左下の頂点が、表示対象領域の左端に接する場合には(ステップS977)、現在の配置位置候補が、対象パノラマ画像の配置位置として決定される(ステップS798)。続いて、パノラマ画像記憶部240に記憶されている全てのパノラマ画像が取得されたか否かが判断される(ステップS980)。パノラマ画像記憶部240に記憶されている全てのパノラマ画像が取得されていない場合には(ステップS980)、ステップS972に戻り、パノラマ画像の配置位置決定処理を繰り返す(ステップS972乃至S979)。パノラマ画像記憶部240に記憶されている全てのパノラマ画像が取得された場合には(ステップS980)、パノラマ画像の配置位置決定処理の動作を終了する。
図50は、本発明の実施の形態における画像処理装置100によるパノラマ画像表示処理の処理手順のうちのパノラマ画像の配置位置決定処理(図47に示すステップS950)の処理手順を示すフローチャートである。この処理手順は、図49に示す処理手順において、ステップS991およびS992を行う以外の処理手順は、図49に示す処理手順と同様である。このため、ステップS991およびS992以外の処理手順についての説明を省略する。
配置位置候補に配置された対象パノラマ画像により形成される矩形領域と、既に配置位置が決定されたパノラマ画像により形成される矩形領域とが重複する場合(ステップS975)、または、配置位置候補に配置された対象パノラマ画像が表示対象領域の右端からはみ出す場合には(ステップS976)、または、配置位置候補に配置された対象パノラマ画像の左下の頂点が、既に配置位置が決定された各パノラマ画像の左下の頂点のうちで一番下に存在し、かつ、対象パノラマ画像の左下の頂点が、表示対象領域の左端に接しない場合には(ステップS977)、対象パノラマ画像が、回転処理された後に現在の配置位置候補においてパノラマ画像の配置位置決定処理(ステップS975乃至S977)がされたか否かが判断され(ステップS991)、回転処理された後に現在の配置位置候補においてパノラマ画像の配置位置決定処理がされていない場合には、対象パノラマ画像に回転処理が施され(ステップS992)、ステップS975に戻る。例えば、対象パノラマ画像が90度回転される。
次に、本発明の実施の形態における特徴点抽出処理およびオプティカルフロー計算処理をマルチコアプロセッサにより行う場合について図面を参照して詳細に説明する。
図51は、本発明の実施の形態におけるマルチコアプロセッサ800の一構成例を示す図である。マルチコアプロセッサ800は、1つのCPU(Central Processing Unit)パッケージ上に異なる種類のプロセッサコアが複数搭載されているプロセッサである。すなわち、マルチコアプロセッサ800には、各プロセッサコア単体の処理性能を維持するとともに、シンプルな構成にするため、あらゆる用途(アプリケーション)に対応する1種類のコアと、所定の用途にある程度最適化されている他の種類のコアとの2種類のプロセッサコアが複数搭載されている。
マルチコアプロセッサ800は、制御プロセッサコア801と、演算プロセッサコア(#1)811乃至(#8)818と、バス802とを備え、メインメモリ781と接続されている。また、マルチコアプロセッサ800は、例えば、グラフィックスデバイス782やI/Oデバイス783等の他のデバイスと接続される。マルチコアプロセッサ800として、例えば、本願出願人等により開発されたマイクロプロセッサである「Cell(セル:Cell Broadband Engine)」を採用することができる。
制御プロセッサコア801は、オペレーティング・システムのような頻繁なスレッド切り替え等を主に行う制御プロセッサコアである。なお、制御プロセッサコア801については、図52を参照して詳細に説明する。
演算プロセッサコア(#1)811乃至(#8)818は、マルチメディア系の処理を得意とするシンプルで小型の演算プロセッサコアである。なお、演算プロセッサコア(#1)811乃至(#8)818については、図53を参照して詳細に説明する。
バス802は、EIB(Element Interconnect Bus)と呼ばれる高速なバスであり、制御プロセッサコア801および演算プロセッサコア(#1)811乃至(#8)818のそれぞれが接続され、各プロセッサコアによるデータアクセスはバス802を経由して行われる。
メインメモリ781は、バス802に接続され、各プロセッサコアにロードすべき各種プログラムや、各プロセッサコアの処理に必要なデータを格納するとともに、各プロセッサコアにより処理されたデータを格納するメインメモリである。
グラフィックスデバイス782は、バス802に接続されているグラフィックスデバイスであり、I/Oデバイス783は、バス802に接続されている外部入出力デバイスである。
図52は、本発明の実施の形態における制御プロセッサコア801の一構成例を示す図である。制御プロセッサコア801は、制御プロセッサユニット803および制御プロセッサストレージシステム806を備える。
制御プロセッサユニット803は、制御プロセッサコア801の演算処理を行う核となるユニットであり、マイクロプロセッサのアーキテクチャをベースとする命令セットを備え、一次キャッシュとして命令キャッシュ804およびデータキャッシュ805が搭載されている。命令キャッシュ804は、例えば、32KBの命令キャッシュであり、データキャッシュ805は、例えば、32KBのデータキャッシュである。
制御プロセッサストレージシステム806は、制御プロセッサユニット803からメインメモリ781へのデータアクセスを制御するユニットであり、制御プロセッサユニット803からのメモリアクセスを高速化させるために512KBの二次キャッシュ807が搭載されている。
図53は、本発明の実施の形態における演算プロセッサコア(#1)811の一構成例を示す図である。演算プロセッサコア(#1)811は、演算プロセッサユニット820およびメモリフローコントローラ822を備える。なお、演算プロセッサコア(#2)812乃至(#8)818は、演算プロセッサコア(#1)811と同様の構成であるため、ここでの説明を省略する。
演算プロセッサユニット820は、演算プロセッサコア(#1)811の演算処理を行う核となるユニットであり、制御プロセッサコア801の制御プロセッサユニット803とは異なる独自の命令セットを備える。また、演算プロセッサユニット820には、ローカルストア(LS:Local Store)821が搭載されている。
ローカルストア821は、演算プロセッサユニット820の専用メモリであるとともに、演算プロセッサユニット820から直接参照することができる唯一のメモリである。ローカルストア821として、例えば、容量が256Kバイトのメモリを用いることができる。なお、演算プロセッサユニット820が、メインメモリ781や他の演算プロセッサコア(演算プロセッサコア(#2)812乃至(#8)818)上のローカルストアにアクセスするためには、メモリフローコントローラ822を利用する必要がある。
メモリフローコントローラ822は、メインメモリ781や他の演算プロセッサコア等との間でデータのやり取りするためのユニットであり、MFC(Memory Flow Controller)と呼ばれるユニットである。ここで、演算プロセッサユニット820は、チャネルと呼ばれるインタフェースを介してメモリフローコントローラ822に対してデータ転送等を依頼する。
以上で示したマルチコアプロセッサ800のプログラミング・モデルとして、さまざまなものが提案されている。このプログラミング・モデルの中で最も基本的なモデルとして、制御プロセッサコア801上でメインプログラムを実行し、演算プロセッサコア(#1)811乃至(#8)818上でサブプログラムを実行するモデルが知られている。本発明の実施の形態では、このモデルを用いたマルチコアプロセッサ800の演算方法について図面を参照して詳細に説明する。
図54は、本発明の実施の形態におけるマルチコアプロセッサ800の演算方法を模式的に示す図である。この例では、データ785を用いて制御プロセッサコア801がタスク784を実行する場合に、タスク784の一部であるタスク786の処理に必要なデータ787(データ785の一部)を用いて、タスク786を各演算プロセッサコアに実行させる場合を例に図示する。
同図に示すように、データ785を用いて制御プロセッサコア801がタスク784を実行する場合には、タスク784の一部であるタスク786の処理に必要なデータ787(データ785の一部)を用いて、タスク786を各演算プロセッサコアに実行させる。本発明の実施の形態では、動画を構成するフレーム毎に各演算プロセッサコアにより演算処理が行われる。
同図に示すように、マルチコアプロセッサ800が演算を行うことにより、演算プロセッサコア(#1)811乃至(#8)818を並列に利用して、比較的少ない時間で多くの演算を行うことができるとともに、演算プロセッサコア(#1)811乃至(#8)818上でSIMD(Single Instruction/Multiple Data:単一命令/複数データ)演算を利用して、さらに少ない命令数により、比較的多くの演算処理を行うことができる。なお、SIMD演算については、図58乃至図61等を参照して詳細に説明する。
図55は、本発明の実施の形態におけるマルチコアプロセッサ800により演算を行う場合におけるプログラムおよびデータの流れを模式的に示す図である。ここでは、演算プロセッサコア(#1)811乃至(#8)818のうちの演算プロセッサコア(#1)811を例にして説明するが、演算プロセッサコア(#2)812乃至(#8)818についても同様に行うことができる。
最初に、制御プロセッサコア801は、メインメモリ781に格納されている演算プロセッサコアプログラム823を演算プロセッサコア(#1)811のローカルストア821にロードする指示を演算プロセッサコア(#1)811に送る。これにより、演算プロセッサコア(#1)811は、メインメモリ781に格納されている演算プロセッサコアプログラム823をローカルストア821にロードする。
続いて、制御プロセッサコア801は、ローカルストア821に格納された演算プロセッサコアプログラム825の実行を演算プロセッサコア(#1)811に指示する。
続いて、演算プロセッサコア(#1)811は、ローカルストア821に格納された演算プロセッサコアプログラム825の実行処理に必要なデータ824をメインメモリ781からローカルストア821に転送する。
続いて、演算プロセッサコア(#1)811は、ローカルストア821に格納された演算プロセッサコアプログラム825に基づいて、メインメモリ781から転送されたデータ826を加工し、条件に応じた処理を実行して処理結果をローカルストア821に格納する。
続いて、演算プロセッサコア(#1)811は、ローカルストア821に格納された演算プロセッサコアプログラム825に基づいて実行された処理結果をローカルストア821からメインメモリ781に転送する。
続いて、演算プロセッサコア(#1)811は、制御プロセッサコア801に演算処理の終了を通知する。
次に、マルチコアプロセッサ800を用いて行うSIMD演算について図面を参照して詳細に説明する。ここで、SIMD演算とは、複数のデータに対する処理を1つの命令で行う演算方式である。
図56(a)は、複数のデータに対する処理をそれぞれの命令で行う演算方式の概要を模式的に示す図である。図56(a)に示す演算方式は、通常の演算方式であり、例えば、スカラー演算と呼ばれている。例えば、データ「A1」およびデータ「B1」を加算する命令によりデータ「C1」の処理結果が求められる。また、他の3つの演算についても同様に、同一の行にあるデータ「A2」、「A3」、「A4」と、データ「B2」、「B3」、「B4」とを加算する命令がそれぞれの処理について行われ、この命令により、各行の値が加算処理され、この処理結果がデータ「C2」、「C3」、「C4」として求められる。このように、スカラー演算では、複数のデータに対する処理については、それぞれに対して命令を行う必要がある。
図56(b)は、複数のデータに対する処理を1つの命令で行う演算方式であるSIMD演算の概要を模式的に示す図である。ここで、SIMD演算用に1まとまりにしたデータ(点線827および828で囲まれる各データ)は、ベクターデータと呼ばれることがある。また、このようなベクターデータを用いて行われるSIMD演算は、ベクトル演算と呼ばれることがある。
例えば、点線827で囲まれるベクターデータ(「A1」、「A2」、「A3」、「A4」)と、点線828で囲まれるベクターデータ(「B1」、「B2」、「B3」、「B4」)とを加算する1つの命令により「C1」、「C2」、「C3」、「C4」の処理結果(点線829で囲まれているデータ)が求められる。このように、SIMD演算では、複数のデータに対する処理を1つの命令で行うことができるため、演算処理を迅速に行うことができる。また、これらのSIMD演算に関する命令を、マルチコアプロセッサ800の制御プロセッサコア801が行い、この命令に対する複数データの演算処理について演算プロセッサコア(#1)811乃至(#8)818が並列処理を行う。
一方、例えば、データ「A1」と「B1」とを加算し、データ「A2」と「B2」とを減算し、データ「A3」と「B3」とを乗算し、データ「A4」と「B4」とを除算する処理については、SIMD演算では行うことができない。すなわち、複数のデータのそれぞれに対して異なる処理をする場合には、SIMD演算による処理を行うことがではできない。
次に、特徴点抽出処理およびオプティカルフロー算出処理を行う場合におけるSIMD演算の具体的な演算方法について図面を参照して詳細に説明する。
図57は、本発明の実施の形態における制御プロセッサコア801または演算プロセッサコア(#1)811により実行されるプログラムの構成例を示す図である。ここでは、演算プロセッサコア(#1)811についてのみ図示するが、演算プロセッサコア(#2)812乃至(#8)818についても同様の処理が行われる。
制御プロセッサコア801は、デコード851としてデコード852、インターレース853およびリサイズ854を実行する。デコード852は、動画ファイルをデコードする処理である。インターレース853は、デコードされた各フレームについてインターレース除去する処理である。リサイズ854は、インターレース除去された各フレームについて縮小する処理である。
また、制御プロセッサコア801は、演算プロセッサコア管理856として命令送信857および859、終了通知受信858および860を実行する。命令送信857および859は、演算プロセッサコア(#1)811乃至(#8)818に対するSIMD演算の実行命令を送信する処理であり、終了通知受信858および860は、上記命令に対する演算プロセッサコア(#1)811乃至(#8)818からのSIMD演算の終了通知を受信する処理である。さらに、制御プロセッサコア801は、カメラワーク検出861としてカメラワークパラメータ算出処理862を実行する。カメラワークパラメータ算出処理862は、演算プロセッサコア(#1)811乃至(#8)818によるSIMD演算により算出されたオプティカルフローに基づいてフレーム毎にアフィン変換パラメータを算出する処理である。
演算プロセッサコア(#1)811は、特徴点抽出処理863として、ソベルフィルタ(Sobel Filter)処理864、二次モーメント行列(Second Moment Matrix)処理865、セパラブルフィルタ(Separable Filter)処理866、ハリスコーナー点抽出(Calc Harris)処理867、膨張処理(Dilation)868、並べ替え処理(Sort)869を実行する。
ソベルフィルタ処理864は、P2のフィルタ(x方向)を使って得られるx方向の値dxと、Y方向のフィルタを使って得られるy方向の値dyとを算出する処理である。なお、x方向の値dxの算出については、図58乃至図61を参照して詳細に説明する。
二次モーメント行列処理865は、ソベルフィルタ処理864により算出されたdxおよびdyを用いて、dx2,dy2,dx・dyの各値を算出する処理である。
セパラブルフィルタ処理866は、二次モーメント行列処理865により算出されたdx2,dy2,dx・dyの画像に対してガウシアンフィルタ(ぼかし処理)を掛ける処理である。
ハリスコーナー点抽出処理867は、セパラブルフィルタ処理866により、ぼかし処理が施されたdx2,dy2,dx・dyの各値を用いて、ハリスコーナーのスコアを算出する処理である。このハリスコーナーのスコアSは、例えば、次の式により算出される。
S=(dx2×dy2−dx・dy×dx・dy)/(dx2+dy2+ε)
膨張処理868は、ハリスコーナー点抽出処理867により算出されたハリスコーナーのスコアで構成された画像に対してぼかし処理を行う処理である。
並べ替え処理869は、ハリスコーナー点抽出処理867により算出されたハリスコーナーのスコアが高い順に画素を並べ、このスコアが高い方から所定の数だけピックアップし、このピックアップされた点を特徴点として抽出する処理である。
演算プロセッサコア(#1)811は、オプティカルフロー(Optical Flow)演算処理870として、ピラミッド画像(Make Pyramid Image)処理871、オプティカルフロー算出(Calc Optical Flow)処理872を実行する。
ピラミッド画像処理871は、カメラによる撮像時の画サイズから所定数の段階に縮小された画像を順次作成する処理であり、作成された画像は多重解像度画像と呼ばれる。
オプティカルフロー算出処理872は、ピラミッド画像処理871により作成された多重解像度画像のうちで、最も小さい画像についてオプティカルフローを計算し、この計算結果を用いて、1つ上の解像度の画像について再びオプティカルフローを計算する処理であり、この一連の処理を最も大きい画像に辿り着くまで繰り返し行う。
このように、例えば、図1等に示す特徴点抽出部121により行われる特徴点抽出処理と、オプティカルフロー計算部122により行われるオプティカルフロー算出処理とについては、マルチコアプロセッサ800を用いてSIMD演算によって並列処理することにより処理結果を求めることができる。なお、図57等で示す特徴点抽出処理およびオプティカルフロー算出処理は、一例であり、動画を構成する画像に対する各種フィルタ処理や閾値処理等により構成される他の処理を用いて、マルチコアプロセッサ800によるSIMD演算を行うようにしてもよい。
図58は、本発明の実施の形態におけるメインメモリ781に格納されている画像データ(カメラにより撮像された動画を構成する1つのフレームに対応する画像データ)について、ソベルフィルタ830を用いてフィルタリング処理を行う場合におけるデータ構造と処理の流れを概略的に示す図である。なお、同図に示すメインメモリ781に格納されている画像データについては、横の画素数を32画素として簡略化して示す。また、ソベルフィルタ830は、3×3のエッジ抽出フィルタである。同図に示すように、メインメモリ781に格納されている画像データについて、ソベルフィルタ830を用いたフィルタリング処理を行い、このフィルタリング処理の結果が出力される。この例では、SIMD演算を用いて4つ分のフィルタ結果を一度に得る例について説明する。
図59は、本発明の実施の形態におけるメインメモリ781に格納されている画像データについてソベルフィルタ830を用いてSIMD演算を行う場合におけるデータの流れを概略的に示す図である。最初は、メインメモリ781に格納されている画像データのうちの最初のラインを含む所定数のライン(例えば、3ライン)が演算プロセッサコアのローカルストア821に備えられる第一バッファ831にDMA(Direct Memory Access)転送されるとともに、第一バッファ831にDMA転送された各ラインを1つ下にずらした所定数のラインが第二バッファ832にDMA転送される。このように、ダブルバッファを使用することにより、DMA転送による遅延を補うことができる。
図60は、本発明の実施の形態におけるソベルフィルタ830を用いてフィルタリング処理を行う場合において、第一バッファ831に格納されている画像データから9つのベクトルを作成するベクトル作成方法を概略的に示す図である。図59に示すように、DMA転送が行われた後に、第一バッファ831に格納されている画像データから9つのベクトルが作成される。具体的には、第一バッファ831に格納されている画像データの1ラインにおいて左隅から4つのデータによりベクターデータ841が作成され、その4つのデータを右側に1つずらした4つのデータによりベクターデータ842が作成され、同様に、その4つのデータを右側に1つずらした4つのデータによりベクターデータ843が作成される。また、2ラインおよび3ラインにおいても同様に4つのデータによりベクターデータ844乃至849が作成される。
図61は、本発明の実施の形態におけるソベルフィルタ830を用いてフィルタリング処理を行う場合において、ベクターデータ841乃至849についてSIMD演算を用いてベクトル演算を行うベクトル演算方法を概略的に示す図である。具体的には、ベクターデータ841乃至843についてSIMD演算が順次行われ、ベクトルAが求められる。このSIMD演算では、最初に、『「−1」×「ベクターデータ841」』のSIMD演算が実行される。続いて、『「0」×「ベクターデータ842」』のSIMD演算が実行され、『「1」×「ベクターデータ843」』のSIMD演算が実行される。ここで、『「0」×「ベクターデータ842」』については、演算結果が「0」であると確定しているため、省略することが可能である。また、『「1」×「ベクターデータ843」』については、演算結果が「ベクターデータ843」と同じ値であることが確定しているため、省略することが可能である。
続いて、『「−1」×「ベクターデータ841」』の演算結果と、『「0」×「ベクターデータ842」』の演算結果との加算処理がSIMD演算により実行される。続いて、この加算処理の結果と、『「1」×「ベクターデータ843」』の演算結果との加算処理がSIMD演算により実行される。ここで、例えば、「ベクターデータ1」×「ベクターデータ2」+「ベクターデータ3」となるデータ構造の演算については、SIMD演算により実行することが可能である。そこで、ベクトルAの演算については、例えば、『「0」×「ベクターデータ842」』および『「1」×「ベクターデータ843」』についてのSIMD演算を省略し、『「−1」×「ベクターデータ841」+「ベクターデータ843」』を一度のSIMD演算により実行するようにしてもよい。
また、同様に、ベクターデータ844乃至846についてSIMD演算が行われ、ベクトルBが求められ、ベクターデータ847乃至849についてSIMD演算が行われ、ベクトルCが求められる。
続いて、SIMD演算により求められたベクトルA乃至CについてSIMD演算が行われ、ベクトルDが求められる。このように、SIMD演算を行うことにより、ベクトルの要素数分(この例では4つのデータ)の結果をまとめて得ることができる。
ベクトルDが算出された後は、図59に示す第一バッファ831に格納されている画像データにおいて、取り出すデータの位置を右側に1つずらしながら、同様の処理を繰り返し実行して、それぞれのベクトルDの算出を順次行う。そして、図59に示す第一バッファ831に格納されている画像データの右端までの処理が終了した場合には、処理結果をメインメモリ781にDMA転送する。
続いて、メインメモリ781に格納されている画像データのうちで、第二バッファ832にDMA転送された各ラインを1つ下にずらした所定数のラインが第一バッファ831にDMA転送されるとともに、第二バッファ832に格納されている画像データについて、上述した処理を繰り返し行う。そして、メインメモリ781に格納されている画像データの各ラインのうちの下端のラインに達するまで、同様の処理を繰り返し行う。
同様に、特徴点抽出とオプティカルフロー算出の大部分の処理をSIMD演算により行うことによって高速化を実現することができる。
図62は、本発明の実施の形態におけるカメラワークパラメータ算出処理の流れを時系列で概略的に示す図である。上述したように、例えば、マルチコアプロセッサ800を用いてSIMD演算を行うことにより、動画についてのデコードおよび解析処理を並列化して行うことができる。このため、動画を構成する1フレームの解析時間を、デコード時間よりも短縮することが可能である。
例えば、同図において、t1は、制御プロセッサコア801が動画を構成する1フレームのデコード処理に要する時間を示し、t2は、演算プロセッサコア(#1)811乃至(#8)818が動画を構成する1フレームの特徴点抽出処理に要する時間を示し、t3は、演算プロセッサコア(#1)811乃至(#8)818が動画を構成する1フレームのオプティカルフロー算出処理に要する時間を示し、t4は、制御プロセッサコア801が動画を構成する1フレームのカメラワーク検出処理に要する時間を示す。なお、t5は、制御プロセッサコア801および演算プロセッサコア(#1)811乃至(#8)818が動画を構成する1フレームについて、カメラワーク検出処理に要する時間を示す。また、t6は、制御プロセッサコア801が演算プロセッサコア(#1)811乃至(#8)818を管理する処理に要する時間を示す。例えば、t1を「25.0ms」とし、t2を「7.9ms」とし、t3を「6.7ms」とし、t4を「1.2ms」とし、t5を「15.8ms」とすることができる。
次に、本発明の実施の形態におけるメタデータファイルを用いた動画コンテンツを再生する場合について図面を参照して詳細に説明する。
図63(a)は、記録媒体の一例であるブルーレイディスク(Blu-ray Disc(登録商標))880を模式的に示す上面図であり、図63(b)は、ブルーレイディスク880に記録されている各データ881乃至884を模式的に示す図である。ブルーレイディスク880には、例えば、カメラ等により撮像された動画である動画コンテンツ882、動画コンテンツ882の字幕883、および、動画コンテンツ882について解析されて得られたメタデータ(例えば、図3乃至図5に示す各情報)884とともに、本発明の実施の形態における動画再生に係るJava(登録商標)プログラム881が記録されている。
図63(c)は、ブルーレイディスク880を再生可能なブルーレイ再生機(Blu-ray Disc Player)890の内部構成を模式的に示す図である。ここで、ブルーレイディスクを再生可能なブルーレイ再生機890は、CPU891およびOS892とともに、Java VM(Java仮想マシン)およびライブラリ893が標準で搭載されているため、Javaプログラムを実行することが可能である。このため、ブルーレイディスク880をブルーレイ再生機890に装着することにより、ブルーレイ再生機890がJavaプログラム881をロードして実行することが可能である。これにより、ブルーレイ再生機890が動画コンテンツ882を再生する場合に、メタデータ884を用いて、本発明の実施の形態における動画に対応するパノラマ画像の表示や、複数の動画の中からの動画の検索等を行うことが可能である。すなわち、専用のPCソフト等を使わずに、全てのブルーレイ再生機で本発明の実施の形態における動画再生を実現することが可能になる。
以上で示したように、本発明の実施の形態によれば、撮像装置により撮影された動画を閲覧する場合に、動画に対応するパノラマ画像を表示することができるため、各動画の内容を容易に把握することができる。また、複数の動画の中から所望の動画を検索する場合には、パノラマ画像の一覧を参照して検索することができるため、所望の動画を迅速に探すことができる。さらに、パノラマ画像上の任意の位置にカーソルを移動させることによって、カーソルの位置に対応するインデックス画像を表示させることができるため、動画の内容を容易に把握することができる。また、動画から抽出されたインデックス画像をパノラマ画像上に空間的に配置して表示することによって、動画の再生位置の指定をさらに容易に行うことができる。このように、インデックス画像を用いて検索をすることができるため、1つの動画の中の所望のフレームについて撮影空間における場所を指定して迅速に探すことができる。また、パノラマ画像を作成する場合に撮像時刻に応じて画像の色情報を変換させて合成させるため、パノラマ画像により動画全体の時間軸を容易に把握することができる。
また、本発明の実施の形態によれば、マルチコアプロセッサを用いたSIMD演算によりアフィン変換パラメータを算出することにより、1フレームのデコードの処理時間内に、1フレームのアフィン変換パラメータを算出することが可能である。これにより、パノラマ画像の作成やインデックス画像の抽出等を迅速に行うことができる。
なお、合成画像を記録媒体等に記録して、他の再生表示に用いるようにしてもよい。また、本発明の実施の形態では、予め算出されたアフィン変換パラメータを用いて画像合成する例について説明したが、画像合成の際にアフィン変換パラメータを算出し、この算出されたアフィン変換パラメータを用いて画像合成をするようにしてもよい。
また、本発明の実施の形態では、入力された動画ファイルを構成する全てのフレームについて合成画像作成処理を繰り返して合成画像を作成する例について説明したが、入力された動画ファイルを構成するフレームの中の少なくとも一定数のフレームについて合成画像作成処理を繰り返して合成画像を作成し、この合成画像をパノラマ画像記憶部240に記録させるようにしてもよい。
また、本発明の実施の形態では、合成画像またはインデックス画像を表示部に表示する画像処理装置を例にして説明したが、合成画像またはインデックス画像を他の画像表示装置において表示させるための画像情報を出力する画像出力手段を設けた画像処理装置に本発明の実施の形態を適用することができる。さらに、動画を再生することが可能な動画再生装置や撮影された動画を再生することが可能なデジタルビデオカメラ等の撮像装置等に本発明の実施の形態を適用することができる。
また、本発明の実施の形態では、画像処理装置を例にして説明したが、動画を再生することが可能か動画再生装置等に本発明の実施の形態を適用することができる。また、本発明の実施の形態では、カメラにより撮像された動画について説明したが、例えば、カメラにより撮像された動画が編集された場合における編集後の動画やアニメーション等が一部に合成された動画等についても、本発明の実施の形態を適用することができる。
また、本発明の実施の形態では、インデックス画像抽出部190によりアフィン変換された画像がインデックス画像として抽出され、このインデックス画像を表示する例について説明したが、アフィン変換される前の画像をインデックス画像として抽出し、このインデックス画像を表示するようにしてもよい。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。