次に本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の実施の形態における画像処理装置100の機能構成例を示すブロック図である。画像処理装置100は、動画入力部110と、カメラワーク検出部120と、記録制御部130と、ファイル取得部140と、特徴量抽出部150と、変換情報補正部160と、合成画像分割判定部170と、画像変換部180と、画像合成部190と、動画記憶部200と、メタデータ記憶部210と、画像メモリ220と、表示領域取出部230と、表示用メモリ240と、表示制御部250と、表示部260と、操作受付部270とを備える。画像処理装置100は、例えば、デジタルビデオカメラ等の撮像装置で撮影された動画について、映像解析により特徴量を抽出し、この抽出された特徴量を用いて各種画像処理を施すことが可能なパーソナルコンピュータによって実現することができる。
動画入力部110は、デジタルビデオカメラ等の撮像装置(以下では、単に「カメラ」と称する。)により撮像された動画を入力する動画入力部であり、入力された動画をカメラワーク検出部120に出力する。
カメラワーク検出部120は、動画入力部110から出力された動画を解析して、撮影時におけるカメラの動き情報(カメラワーク)を検出するものであり、このカメラの動き情報に基づいて算出されたアフィン変換パラメータ(カメラワークパラメータ)を記録制御部130に出力する。すなわち、カメラワーク検出部120は、動画を構成する各画像から特徴点を抽出するとともに、この特徴点に対するオプティカルフロー(動きベクトル)を抽出し、この抽出された特徴点に対するオプティカルフローを解析して支配的な動きを見せた特徴点を選択し、この支配的な動きを見せた特徴点に対するオプティカルフローに基づいてカメラの動きを推定する。ここで、支配的な動きとは、複数の特徴点に対するオプティカルフローの中で、比較的多数のオプティカルフローが示す規則的な動きを意味する。なお、カメラワーク検出部120については、図2を参照して詳細に説明する。
記録制御部130は、動画入力部110から出力された動画を動画ファイルとして動画記憶部200に記録するとともに、カメラワーク検出部120から出力されたアフィン変換パラメータを、対応する動画およびフレームに関連付けてメタデータファイルとしてメタデータ記憶部210に記録するものである。
動画記憶部200は、記録制御部130の制御に基づいて動画入力部110から出力された動画を動画ファイルとして記憶するものである。また、動画記憶部200は、ファイル取得部140からの要求に応じて動画ファイルをファイル取得部140に供給する。なお、動画記憶部200に記憶される動画ファイルについては、図5を参照して詳細に説明する。
メタデータ記憶部210は、記録制御部130の制御に基づいてカメラワーク検出部120から出力されたアフィン変換パラメータをメタデータファイルとして記憶するものである。また、メタデータ記憶部210は、ファイル取得部140からの要求に応じてメタデータファイルをファイル取得部140に供給する。なお、メタデータ記憶部210に記憶されるメタデータファイルについては、図5を参照して詳細に説明する。
ファイル取得部140は、操作受付部270により受け付けられた操作入力に応じて、動画記憶部200およびメタデータ記憶部210に記憶されている各ファイルの少なくとも1つを取得し、取得された各ファイルの情報を各部に供給するものである。具体的には、ファイル取得部140は、動画を合成再生させる指示操作が操作受付部270により受け付けられた場合には、指示された動画記憶部200に記憶されている動画ファイルと、この動画ファイルに関連付けられてメタデータ記憶部210に記憶されているメタデータファイルとを取得し、取得された動画ファイルの動画およびメタデータファイルのアフィン変換パラメータを特徴量抽出部150および画像変換部180に出力するとともに、そのアフィン変換パラメータを変換情報補正部160に出力する。
特徴量抽出部150は、ファイル取得部140から出力された動画を構成する各画像および各画像に関連付けられているアフィン変換パラメータに基づいて特徴量を抽出するものであり、抽出された特徴量を変換情報補正部160および合成画像分割判定部170に出力する。本発明の実施の形態では、特徴量抽出部150が抽出する特徴量として、動画を構成する各画像におけるシーンチェンジスコアと、アフィン変換パラメータから抽出されるカメラワークの各成分(X方向およびY方向のズーム成分、並進成分、回転成分)と、これらの各成分の所定数のフレームに関する平均値と、これらの各成分の先頭のフレームから現フレームまでの積算値とを例にして説明する。ここで、シーンチェンジスコアは、動画を構成する各画像におけるカラーヒストグラムに基づいて算出される値であり、シーンチェンジ点を検出するために用いられる値である。このシーンチェンジ点は、例えば、動画において撮影場面が瞬間的に変化する場合におけるその境界点を示す位置であり、その境界点の直後の画像をシーンチェンジ点に該当する画像とする。なお、特徴量抽出部150については、図3を参照して詳細に説明する。また、カメラワークの各成分については、図6および図7を参照して詳細に説明する。さらに、シーンチェンジ点については、図4を参照して詳細に説明する。
変換情報補正部160は、特徴量抽出部150から出力された特徴量に基づいて、ファイル取得部140から出力されたアフィン変換パラメータを補正するものであり、補正されたアフィン変換パラメータを画像変換部180に出力する。具体的には、変換情報補正部160は、特徴量抽出部150から出力された特徴量と、閾値とを比較することにより、ファイル取得部140から出力されたアフィン変換パラメータの補正の要否を判定し、アフィン変換パラメータの補正が必要であると判定した場合には、このアフィン変換パラメータを補正し、この補正されたアフィン変換パラメータを画像変換部180に出力する。一方、アフィン変換パラメータの補正が不要であると判定した場合には、アフィン変換パラメータを補正せずに、画像変換部180には何も出力しない。ここで、本発明の実施の形態では、アフィン変換パラメータの補正として、アフィン変換パラメータの行列を単位行列とする補正と、現フレームの前後方向に存在するフレームに関連付けられているアフィン変換パラメータを用いて線型補間行列を算出し、この算出された線型補間行列をアフィン変換パラメータの行列と置き換える補正とを例にして説明する。なお、アフィン変換パラメータの補正については、図27を参照して詳細に説明する。
合成画像分割判定部170は、特徴量抽出部150から出力された特徴量に基づいて、現フレームに対応する画像を現在形成されている合成画像から分割して再生させるか否かを判定するものであり、現フレームに対応する画像を分割して再生させると判定した場合には、現フレームに対応する画像を分割して再生させる旨を画像変換部180および画像合成部190に出力するとともに、直前のフレームまでに算出されたカメラワーク成分を消去する指示を特徴量抽出部150に出力する。また、合成画像分割判定部170は、動画の合成再生が開始された場合において、先頭のフレームから現フレームまでの再生時間を計測し、この再生時間に基づいて、現フレームに対応する画像を現在形成されている合成画像から分割して再生させるか否かの判定を行う。さらに、現フレームに対応する画像の分割が行われた場合には、同様に、合成画像分割判定部170は、分割時における先頭のフレームから現フレームまでの再生時間を計測し、この再生時間に基づいて、現フレームに対応する画像を現在形成されている合成画像から分割して再生させるか否かの判定を行う。なお、画像の分割については、図28乃至図30を参照して詳細に説明する。
画像変換部180は、ファイル取得部140から出力された動画ファイルの動画を構成する画像について、この画像に対応するアフィン変換パラメータを用いてフレーム毎にアフィン変換を施し、アフィン変換された画像を画像合成部190に出力するものである。また、画像変換部180は、変換情報補正部160から補正されたアフィン変換パラメータが出力された場合には、この補正されたアフィン変換パラメータを用いてフレーム毎にアフィン変換を施す。さらに、画像変換部180は、現フレームに対応する画像を分割して再生させる旨が合成画像分割判定部170から出力された場合には、現フレームに対応する画像を単位行列によりアフィン変換を施して画像合成部190に出力する。なお、これらの画像変換については、図10乃至図20等を参照して詳細に説明する。
画像合成部190は、画像メモリ220に保持されている直前までの各フレームに対応する合成画像に、画像変換部180によるアフィン変換後の画像を上書きすることにより画像を合成し、合成された新たな合成画像を画像メモリ220に保存するものである。また、画像合成部190は、現フレームに対応する画像を分割して再生させる旨が合成画像分割判定部170から出力された場合には、画像メモリ220に保持されている直前までの各フレームに対応する合成画像を消去して、現フレームに対応する画像を画像メモリ220に保持させる。そして、この現フレーム以降のフレームについては、画像メモリ220に保持されている合成画像に、画像変換部180によるアフィン変換後の画像を上書きすることにより画像を合成する。なお、画像合成部190は、操作受付部270により受け付けられた操作入力に応じて、現フレームに対応する画像を分割して再生させる旨が合成画像分割判定部170から出力された場合には、画像メモリ220に保持されている直前までの各フレームに対応する合成画像を残した状態で、この合成画像が保持されている位置とは異なる位置に、現フレームに対応する画像を画像メモリ220に保持させることができる。これらの現フレームに対応する画像を分割して再生させる場合における画像合成については、図28乃至図30を参照して詳細に説明する。
また、画像合成部190は、表示領域取出部230から出力された表示領域における現画像の位置に基づいて、画像変換部180によるアフィン変換後の現画像を表示用メモリ240に保持される合成画像に上書きすることにより合成する。ここで、表示用メモリ240に合成される現画像の大きさについては、表示倍率の値に応じて決定される。なお、表示用メモリ240における現画像の合成については、図20等を参照して詳細に説明する。ここで、画像合成部190は、画像変換部180によるアフィン変換後の画像を圧縮して画像メモリ220に保持されている合成画像に上書きし、表示用メモリ240に保持される合成画像に上書きされる現画像を非圧縮画像または圧縮された履歴画像よりも高解像度の撮像画像とする。これにより、合成画像を出力する際の履歴画像を圧縮画像とし、現画像を非圧縮画像または圧縮された履歴画像よりも高解像度の撮像画像とすることができる。
画像メモリ220は、画像合成部190により合成された合成画像を保持するワークバッファであり、保持されている合成画像を画像合成部190または表示領域取出部230に供給するものである。すなわち、画像メモリ220は、動画を構成する各画像を履歴画像として保持する画像メモリである。
表示領域取出部230は、画像メモリ220に保持されている合成画像から、表示の対象となる領域である表示領域の範囲内に存在する画像を取り出すものであり、取り出された画像を表示用メモリ240に保持させる。なお、この表示領域の範囲内に含まれる画像の取出しについては、図19および図20等を参照して詳細に説明し、表示領域における現画像の位置の算出については、図20等を参照して詳細に説明する。
表示用メモリ240は、表示領域取出部230により画像メモリ220から取り出された画像を保持する表示用バッファであり、保持されている画像が表示部260に表示される。
表示制御部250は、表示用メモリ240に保持されている合成画像をフレーム毎に表示部260に順次表示させるものである。
表示部260は、表示制御部250の制御に基づいて、表示用メモリ240に保持されている合成画像を表示するものである。例えば、パーソナルコンピュータやテレビジョンのディスプレイにより実現することができる。なお、合成画像の表示例については、図23乃至図26等を参照して詳細に説明する。
操作受付部270は、各種入力キーからなるキーボードやマウス(ポインティングデバイス)を備え、これらのマウス等から操作入力を受け付けると、受け付けた操作入力の内容をファイル取得部140、画像合成部190、または、表示領域取出部230に出力するものである。なお、操作受付部270の少なくとも一部と表示部260とをタッチパネルとして一体として構成するようにしてもよい。
図2は、本発明の実施の形態におけるカメラワーク検出部120の機能構成例を示すブロック図である。カメラワーク検出部120は、特徴点抽出部121と、オプティカルフロー計算部122と、カメラワークパラメータ算出部123とを備える。
特徴点抽出部121は、動画入力部110から出力された動画を構成するフレームに対応する画像から特徴点を抽出し、抽出された特徴点をオプティカルフロー計算部122に出力するものである。ここで、特徴点抽出部121は、動画入力部110から出力された動画を構成するフレームのうちの先頭のフレームについては、画像全体から特徴点を抽出し、先頭以外のフレームについては、直前のフレームに対応する画像と比較して新しく撮影された領域部分から特徴点を抽出する。なお、特徴点として、例えば、縦方向または横方向にエッジの勾配が強い点(一般に「コーナー点」と呼ばれている。以下では、「コーナー点」と称する。)を抽出することができる。このコーナー点は、オプティカルフローの計算に強い特徴点であり、エッジ検出を用いて求めることができる。なお、このコーナー点の抽出については、図6および図7を参照して詳細に説明する。また、この例では、特徴点抽出部121は、先頭のフレームについては画像全体から特徴点を抽出し、先頭以外のフレームについては直前の画像と比較して新しく撮影された領域部分から特徴点を抽出するが、処理能力等に応じて、先頭以外の各フレームについても、画像全体から特徴点を抽出するようにしてもよい。
オプティカルフロー計算部122は、特徴点抽出部121から出力された各特徴点に対するオプティカルフローを計算するものであり、計算して求められたオプティカルフローをカメラワークパラメータ算出部123に出力する。具体的には、動画入力部110から出力された動画を構成する連続する2つのフレーム(現フレームおよびこの直前のフレーム)に対応する各画像を比較することにより、直前のフレームに対応する画像における各特徴点に対応するオプティカルフローを、現フレームのオプティカルフローとして求める。また、オプティカルフローは、動画を構成するフレーム毎に求められる。なお、オプティカルフローを検出する検出方法として、勾配法やブロックマッチング方法等の検出方法を用いることができる。なお、このオプティカルフローの計算については、図6および図7を参照して詳細に説明する。
カメラワークパラメータ算出部123は、オプティカルフロー計算部122から出力された各特徴点に対応するオプティカルフローを用いて、カメラワークパラメータを算出するカメラワークパラメータ算出処理を行うものであり、算出されたカメラワークパラメータを記録制御部130に出力する。ここで、本発明の実施の形態では、再生の対象となる動画を構成する各画像をカメラの動きに合わせてそれぞれ変換して表示する。この画像の変換を行うため、オプティカルフロー計算部122により計算されたオプティカルフローを用いてカメラの動きが抽出され、この抽出された動きに基づいて、カメラワークパラメータ(変換パラメータ)が計算される。なお、本発明の実施の形態では、再生の対象となる動画を構成する画像を変換する画像変換方法として、アフィン変換を用いる例について説明する。また、カメラワークパラメータとして、オプティカルフローに基づいて算出されたアフィン変換パラメータの行列の逆行列に対応するアフィン変換パラメータを用いる例について説明する。すなわち、本発明の実施の形態では、変換情報として用いられるアフィン変換パラメータを、連続する画像間の特徴点の動きを表すアフィン行列ではなく、連続する画像のうちの1つの画像を基準画像とした場合に、この基準画像の次の画像がどこに移動するかを示すアフィン行列に対応するアフィン変換パラメータと定義する。また、カメラワークパラメータとして、アフィン変換パラメータを用いる例について説明するが、射影変換等の他の画像変換方法を用いるようにしてもよい。なお、アフィン変換パラメータは、3点のベクトルを用いて計算して求めることができる。また、射影変換パラメータは、4点のベクトルを用いて計算して求めることができる。ここで、カメラワークパラメータは、撮像動画を構成する撮像画像のうちの少なくとも1つの撮像画像を基準にして他の撮像画像を変換するための変換情報であり、少なくともカメラの座標系で記述される位置情報および姿勢情報を含むものである。すなわち、カメラワークパラメータは、撮影者により撮影されている場合におけるカメラの位置や姿勢に関する情報を含むものである。また、カメラワークパラメータ算出部123により求められたアフィン変換パラメータに基づいて、例えば、ズームイン、ズームアウト、パン、チルト、ローテーション等の撮影者の操作によるカメラの動きを推定することができる。なお、アフィン変換パラメータの計算については、図6および図7を参照して詳細に説明する。
図3は、本発明の実施の形態における特徴量抽出部150の機能構成例を示すブロック図である。特徴量抽出部150は、カラーヒストグラム抽出部151と、連続フレーム間差分値算出部152と、シーンチェンジスコア算出部153と、カメラワーク成分算出部155と、カメラワーク成分保持部156と、カメラワーク成分平均値算出部157と、カメラワーク成分積算値算出部158とを備える。
カラーヒストグラム抽出部151は、ファイル取得部140から出力された動画を構成する画像から、この画像における画面全体のカラーヒストグラムをフレーム毎に抽出するものであり、抽出されたカラーヒストグラムを連続フレーム間差分値算出部152に出力するものである。
連続フレーム間差分値算出部152は、カラーヒストグラム抽出部151から出力されたフレーム毎のカラーヒストグラムについて、連続する2フレーム間におけるカラーヒストグラムの色分布の差分値を算出するものであり、算出された差分値をシーンチェンジスコア算出部153に出力する。ここで、本発明の実施の形態では、連続する2フレーム間におけるカラーヒストグラムの色分布の差分値として、EMD(Earth Movers Distance)を用いて算出される類似度を数値化した値を用いる。なお、EMDは色分布間の距離を表すものであり、類似画像検索等に用いられる(例えば、特開2007−206919号を参照。)。
シーンチェンジスコア算出部153は、連続フレーム間差分値算出部152から出力されたカラーヒストグラムの色分布の差分値について、ハイパス・フィルタを適用することによって、フレーム間の差分値のオフセット分の差を除去(DC成分の除去)し、DC成分の除去後の値をシーンチェンジスコアとして算出するものであり、算出されたシーンチェンジスコアを変換情報補正部160および合成画像分割判定部170に出力する。なお、本発明の実施の形態では、EMDにより算出される類似度を用いて連続する2フレーム間における差分値を算出し、この差分値に基づいてシーンチェンジスコアを算出する例について説明したが、時間軸において動画を構成する各フレーム間の他の差分値を算出し、この差分値に基づいてシーンチェンジスコアを算出するようにしてもよい。
カメラワーク成分算出部155は、ファイル取得部140から出力された現フレームに対応するアフィン変換パラメータから、カメラワークの各成分(x方向およびy方向の各並進成分、ズーム成分、回転成分)を算出するものであり、算出されたカメラワークの各成分を、変換情報補正部160、カメラワーク成分平均値算出部157およびカメラワーク成分積算値算出部158に出力するとともに、カメラワーク成分保持部156に保持させる。
カメラワーク成分保持部156は、カメラワーク成分算出部155により算出された現フレームまでのカメラワークの各成分をフレーム毎に保持するものであり、保持されているカメラワークの各成分をカメラワーク成分平均値算出部157およびカメラワーク成分積算値算出部158に供給する。また、カメラワーク成分保持部156は、直前のフレームまでに算出されたカメラワーク成分を消去する指示が合成画像分割判定部170から出力された場合には、保持されているカメラワークの各成分を消去する。
カメラワーク成分平均値算出部157は、カメラワーク成分算出部155から出力された現フレームに対応するカメラワークの各成分と、カメラワーク成分保持部156に保持されている直前のフレームから所定数前のフレームまでの各フレームに対応するカメラワークの各成分とに基づいて、カメラワーク成分の平均値を算出するものであり、算出されたカメラワーク成分の平均値を合成画像分割判定部170に出力する。このカメラワーク成分の平均値を算出する際に用いられるフレーム数を、例えば5程度とすることができる。
カメラワーク成分積算値算出部158は、カメラワーク成分算出部155から出力された現フレームに対応するカメラワークの各成分と、カメラワーク成分保持部156に保持されている先頭のフレームから直前のフレームまでの各フレームに対応するカメラワークの各成分とに基づいて、カメラワーク成分の積算値を算出するものであり、算出されたカメラワーク成分の積算値を合成画像分割判定部170に出力する。ここで、直前のフレームまでに算出されたカメラワーク成分を消去する指示が合成画像分割判定部170から出力された場合には、カメラワーク成分保持部156に保持されているカメラワークの各成分が消去される。このため、カメラワーク成分積算値算出部158は、その指示がされた次のフレーム以降についてカメラワーク成分の積算値を算出する場合には、カメラワーク成分算出部155から出力された現フレームに対応するカメラワークの各成分と、カメラワーク成分保持部156に保持されているその指示がされた際におけるフレームから直前のフレームまでの各フレームに対応するカメラワークの各成分を用いて、カメラワーク成分の積算値を算出する。
次に、動画におけるシーンチェンジ点について図面を参照して詳細に説明する。
図4は、動画を構成する各フレームに対応する画像を時系列に並べられた場合を模式的に示す図である。同図には、撮像装置により撮影された動画350を構成する各フレームに対応する画像351乃至358を概略的に示す。なお、画像351乃至358については、説明のため、数および被写体等を簡略化して示す。同図に示すように、画像351乃至358は、1つの動画350に含まれる画像ではあるものの、撮影された時刻および場所が異なる3つのシーンが含まれているため、これらのシーンが切り換わるフレームでは被写体の構図や色等が瞬間的に変化する。このように、被写体の構図や色等が瞬間的に変化して、連続する2フレーム間におけるヒストグラム差分値が閾値以上となった場合には、その連続する2フレーム間がシーンチェンジ点であると判定される。このシーンチェンジ点の判定は、変換情報補正部160および合成画像分割判定部170により行われる。ここで、シーンチェンジ点の判定を行う際に用いられる閾値は、変換情報補正部160および合成画像分割判定部170で共通した値を用いるようにしてもよく、異なる値とするようにしてもよい。例えば、頻繁に分割されることを防止するため、合成画像分割判定部170の閾値を変換情報補正部160の閾値よりも高く設定することができる。
例えば、画像351乃至353は、街中を歩いている人物を撮影したものであり、人物が移動しているため、人物の位置が多少異なるものの、画像全体では類似している印象となる。このため、画像351乃至353に関する連続する2フレーム間におけるヒストグラム差分値が閾値を超えず、その連続する2フレーム間はシーンチェンジ点ではないと判定される。
また、画像354乃至356は、山の前の家並みを撮影したものであり、撮像装置を水平方向に移動させて撮影しているため、被写体の位置が水平方向に移動して多少異なるものの、画像全体では類似している印象となる。しかしながら、画像353と画像354とを比較した場合には、撮影された時刻および場所が異なるシーンの切り換え部分に該当するため、画像全体が大きく異なっている。このため、画像353と画像354との境界がシーンチェンジ点と判定される。また、画像356と画像357との境界についても、同様に、シーンチェンジ点であると判定される。このように、シーンチェンジ点であると判定された場合には、本発明の実施の形態では、その境界点の直後の画像をシーンチェンジ点に該当する画像とする。シーンチェンジ点に該当する画像は、例えば、画像354および357である。
図5は、本発明の実施の形態における動画記憶部200およびメタデータ記憶部210に記録されている各ファイルを模式的に示す図である。図5(a)では、動画記憶部200に記憶されている動画ファイル201乃至204と、動画ファイル201乃至204に関連付けてメタデータ記憶部210に記憶されているメタデータファイル211乃至213とを示す。ここで、動画記憶部200に記憶されている各動画ファイルを識別するための識別情報である動画IDが、各動画ファイルに付与されているものとする。例えば、動画ファイル201には「#1」が付与され、動画ファイル202には「#2」が付与され、動画ファイル204には「#n」が付与されている。
図5(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」に対するアフィン変換パラメータである。
次に、画像変換に用いられるアフィン変換パラメータを検出する検出方法について図面を参照して詳細に説明する。
図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、X方向の回転成分θx、Y方向の回転成分θyについては、それぞれ次の式で求めることができる。なお、単位行列の場合には、a=e=1、b=c=d=f=0となる。
このように、アフィン変換パラメータから、カメラワークの各成分(X方向およびY方向のズーム成分、並進成分、回転成分)を求めることができる。なお、回転成分については、図8を参照して説明する。
図8は、所定のアフィン変換パラメータを用いて矩形340が変換された場合を示す図である。同図に示すように、矩形340の1つの頂点を原点とし、この原点に対応する頂点に接する矩形340の2辺のそれぞれをx軸およびy軸とするxy座標において、所定のアフィン変換パラメータを用いて矩形340が変換された後の矩形を矩形341とする。この場合に、矩形340および341のx軸側の辺により形成される角度を回転成分θxとし、矩形340および341のy軸側の辺により形成される角度を回転成分θyとする。
次に、カメラワーク成分の平均値および積算値の算出方法について説明する。
カメラワーク成分の平均値は、所定数のフレームに対応するカメラワークの各成分を加算した値を所定数で除算した値である。例えば、カメラワーク成分のX方向の並進成分の平均値を算出する場合において、所定数を5とし、算出の対象となるフレーム1乃至5のカメラワーク成分のX方向の並進成分をそれぞれXT1乃至5とする場合には、「(XT1+XT2+XT3+XT4+XT5)/5」により求めることができる。なお、カメラワークの各成分の平均値の代わりに、算出の対象となるフレーム間の経過時間でカメラワークの各成分を加算した値を除算することにより求めた平均速度を用いるようにしてもよい。
また、カメラワーク成分の積算値は、先頭のフレームから現フレームまでの各フレームに対応するカメラワークの各成分を加算した値である。例えば、カメラワーク成分のX方向の並進成分の積算値を算出する場合において、先頭のフレームから現フレームまでの各フレーム1乃至5のカメラワーク成分のX方向の並進成分をそれぞれXT1乃至5とする場合には、「XT1+XT2+XT3+XT4+XT5」により求めることができる。
次に、アフィン変換パラメータの計算方法について説明する。
最初に、動画を構成するフレームの中の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個のオプティカルフローには、一定の規則性を備えていないオプティカルフローが含まれるため、直前のフレームに対応する画像を一定の規則に従って変換させるものではないアフィン変換パラメータが求められる。このため、アフィン変換パラメータを用いて求められたコーナー点の位置と、現フレームにおいて検出されたコーナー点の位置とについて求められる差分値は、任意のコーナー点で比較的大きい値が算出される。このため、アフィン変換パラメータのスコアは、小さい値になる。
続いて、求められた複数のアフィン変換パラメータのスコアの中で、スコアの値が最も大きいアフィン変換パラメータを代表アフィン変換パラメータとして選択する。そして、選択された代表アフィン変換パラメータの行列に対する逆行列を算出して、この逆行列のアフィン変換パラメータを現フレームに関連付けてメタデータ記憶部210に記録する。これにより、動画を構成する画像をアフィン変換する場合に、最適なアフィン変換パラメータを用いてアフィン変換することができる。
以上で示したように、動画を構成する各画像に人物や車等の動いている物体(動物体)が含まれている場合でも、画像の面積に対するその動物体の大きさが比較的小さい場合には、動物体の影響を受けずにカメラの動きを抽出することができる。
また、カメラの動きを抽出することによって、ズームイン、ズームアウト、パン、チルト、ローテーション等の意図的に撮影者が移動させたと思われる動きを推定することができる。なお、式1において、a=e、d=−bとして、2個のオプティカルフローに基づいてアフィン変換パラメータを算出することができる。例えば、3個のオプティカルフローに基づいて計算されたアフィン変換パラメータを用いて、画像をアフィン変換する場合には、長方形の画像が平行四辺形に変形される場合がある。これに対して、2個のオプティカルフローに基づいて計算されたアフィン変換パラメータを用いて、画像をアフィン変換する場合には、並進移動、回転、ズーム(xy方向のズーム率が同じもの)の少なくとも1つの変換を長方形の画像の状態で行うことができる。本発明の実施の形態では、3個のオプティカルフローに基づいて計算されたアフィン変換パラメータを用いて画像を変換する例について説明するが、2個のオプティカルフローに基づいて計算されたアフィン変換パラメータを用いて画像を変換する場合についても同様に適用することができる。
次に、本発明の実施の形態における画像処理装置100の動作について図面を参照して説明する。
図9は、本発明の実施の形態における画像処理装置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)。続いて、選択された代表アフィン変換パラメータの行列に対する逆行列のアフィン変換パラメータが、現フレームに関連付けてメタデータ記憶部210に記録される(ステップS914)。なお、現フレームが先頭のフレームである場合には、選択された単位行列のアフィン変換パラメータが、先頭のフレームに関連付けてメタデータ記憶部210に記録される。続いて、現フレームに対応する画像と、この画像における特徴点とが上書き保存される(ステップS915)。
続いて、現フレームが、動画入力部110に入力された動画ファイルの最後のフレームであるか否かが判断される(ステップS916)。現フレームが、最後のフレームではない場合には(ステップS916)、ステップS901に戻り、アフィン変換パラメータ検出処理を繰り返す(ステップS901乃至S915)。一方、現フレームが、最後のフレームである場合には(ステップS916)、アフィン変換パラメータ検出処理を終了する。
本発明の実施の形態では、カメラワークパラメータの検出として、動画を構成する画像において検出されたオプティカルフローに基づいてアフィン変換パラメータを検出する例について説明したが、加速度センサやジャイロセンサ等のセンサやズーム操作をする際に用いられるズームボタンをカメラに設け、このセンサやズームボタンによって撮影時におけるカメラの移動量を検出し、このカメラの移動量に基づいてカメラワークパラメータを求めるようにしてもよい。なお、これらの撮影時において検出されたカメラの移動量については、カメラワークパラメータ算出部123により求められたカメラワークパラメータが正しいか否かを判断する際に用いることができる。また、カメラワークパラメータ算出部123により複数のカメラワークパラメータを検出しておき、撮影時において検出されたカメラの移動量に基づいて、この複数のカメラワークパラメータの中から1つのカメラワークパラメータを選択するようにしてもよい。
次に、カメラワーク検出部120により算出されたアフィン変換パラメータを用いて、1つの動画を合成再生する場合について図面を参照して詳細に説明する。なお、図10乃至図18に示す各画像は、説明のため、簡略化するとともに、連続する2つのフレーム間の移動量を大きくして示している。
最初に、カメラの撮影時において、倍率が変更されないものの、カメラの位置を中心として、カメラのレンズの方向が上下左右の何れかに移動されている場合について説明する。
図10は、カメラにより撮影された動画の遷移の一例を示す図である。図10には、山を背景にして人400を撮影した場合における動画に含まれる連続するフレームに対応する画像401乃至403を示す図である。この例では、カメラのレンズの方向を右および上側に移動しながら、撮影者が撮影を行っている場合を示す。この場合には、カメラにより撮影される動画に含まれる人400が、その動画を構成する画像において右側から左側に移動するとともに下側に移動する。
図11は、図10に示す各画像において、直前のフレームに対応する画像を破線で示すとともに、検出されるオプティカルフローの一例を示す図である。図11(a)に示す画像401は、図10(a)に示す画像401と同じものである。また、図11(b)に示す画像402のうちの実線の部分は、図10(b)に示す画像402と同じものであり、図11(b)に示す画像402のうちの破線の部分は、図11(a)に示す画像401の実線の部分と同じものである。また、図11(b)に示す画像402における矢印404乃至406は、画像402から検出されたオプティカルフローの一例を示す。同様に、図11(c)に示す画像403のうちの実線の部分は、図10(c)に示す画像403と同じものであり、図11(c)に示す画像403のうちの破線の部分は、図11(b)に示す画像402の実線の部分と同じものである。また、図11(c)に示す画像403における矢印407乃至409は、画像403から検出されたオプティカルフローの一例を示す。
図11(b)および(c)に示すように、カメラの移動に合わせて、画像に含まれる人400および背景の山が移動する。この移動により検出されるオプティカルフローに基づいてアフィン変換パラメータをフレーム毎に求めることができる。
図12は、図10に示す画像401乃至403を含む動画を合成しながら再生する場合における画像合成例を示す図である。なお、本発明の実施の形態では、2つの動画を構成する各画像が合成されるため、再生時間の経過とともに、表示部260に表示される画像が通常の画像よりも大きくなる。このため、最初に表示される画像は、表示部260の表示領域の大きさよりも比較的小さくして表示される。なお、最初に表示される画像の大きさや位置等をユーザが指定するようにしてもよい。
図12(a)に示すように、最初は、先頭のフレームに対応する画像401のみが表示される。ここで、画像401に対応するアフィン変換パラメータの行列(3×3の行列)をA1とする場合に、A1の値が求められ、先頭のフレームの画像401の位置および大きさを基準にして、求められたA1の行列により画像401がアフィン変換される。ここで、Aは単位行列であるため、画像401の位置および大きさは変換されない。続いて、次のフレームに対応する画像402が表示される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像402がアフィン変換される。具体的には、画像402に対応するアフィン変換パラメータの行列をA2とし、画像401に対応するアフィン変換パラメータの行列をA1とする場合において、A1×A2の値が求められ、先頭のフレームの画像401の位置および大きさを基準にして、求められたA1×A2の行列により画像402がアフィン変換される。図12(b)に示す画像においては、画像402の位置のみが変換される。そして、アフィン変換パラメータによりアフィン変換された画像402が、直前のフレームに対応する画像401に重なるように上書きされる。すなわち、画像401の領域のうちで、画像402と重複する領域410については、画像402の画像が上書きされる。また、画像401の領域のうちで、画像402と重複しない領域411については、画像401の画像が合成される。すなわち、2つ目のフレームに対応する画像402が表示される場合には、図12(b)に示すように、画像402の全体部分と、画像401のうちの領域411に対応する部分とが合成された画像が表示される。また、表示されている画像のうちで最新の画像であることを示す画像枠を現フレームに対応する画像の周りに表示させることができる。図12(b)では、画像402に画像枠が表示される。また、画像402をアフィン変換したアフィン変換パラメータが画像変換部180に保持される。
続いて、次のフレームに対応する画像403が表示される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像403がアフィン変換される。すなわち、画像403に対応するアフィン変換パラメータの行列と、直前のアフィン変換に用いられた画像402に対応するアフィン変換パラメータの行列とを用いて求められたアフィン変換パラメータにより画像403がアフィン変換される。具体的には、画像403に対応するアフィン変換パラメータの行列をA3とし、画像402に対応するアフィン変換パラメータの行列をA2とし、画像401に対応するアフィン変換パラメータの行列をA1とする場合において、A1×A2×A3の値が求められ、先頭のフレームの画像401の位置および大きさを基準にして、求められたA1×A2×A3の行列により画像403がアフィン変換される。図12(c)に示す画像においては、画像403の位置のみが変換される。そして、アフィン変換パラメータによりアフィン変換された画像403が、前のフレームに対応する画像401および402の合成画像に重なるように上書きされる。すなわち、画像401および402の合成画像の領域のうちで、画像403と重複する領域413および414については、画像403の画像が上書きされる。また、画像401および402の合成画像の領域のうちで、画像403と重複しない領域411および412については、画像401および402の合成画像が合成される。すなわち、3つ目のフレームに対応する画像403が表示される場合には、図12(c)に示すように、画像403の全体部分と、画像401のうちの領域411に対応する部分と、画像402のうちの領域412に対応する部分とが合成された画像が表示される。また、表示されている画像のうちで最新の画像であることを示す画像枠を現フレームに対応する画像の周りに表示させる場合には、図12(c)に示す画像403に画像枠が表示される。また、画像403をアフィン変換したアフィン変換パラメータが画像変換部180に保持される。すなわち、画像402および403のそれぞれに対応するアフィン変換パラメータの行列の乗算により求められたアフィン変換パラメータが画像変換部180に保持される。このように、現フレームに対応する画像をアフィン変換する場合には、現フレームに対応するアフィン変換パラメータの行列と、この直前までの各フレームに対応するアフィン変換パラメータの行列とを用いて求められたアフィン変換パラメータにより、現フレームに対応する画像がアフィン変換される。このアフィン変換の際に求められたアフィン変換パラメータが画像変換部180に保持され、次のアフィン変換で用いられる。また、図15および図18の場合についても同様である。
次に、カメラの撮影時において、カメラのレンズの方向は移動されないものの、倍率が変更されている場合について説明する。
図13は、カメラにより撮影された動画の遷移の一例を示す図である。図13には、山を背景にして人420を撮影した場合における動画に含まれる連続するフレームに対応する画像421乃至423を示す図である。この例では、カメラのレンズの倍率を上げながら、撮影者が撮影を行っている場合を示す。この場合には、カメラにより撮影される動画に含まれる人420が、その動画を構成する画像において次第に大きくなる。なお、倍率を上げる際にカメラの位置が多少移動する場合があるものの、この例では、カメラの位置の移動については考慮せずに説明する。
図14は、図13に示す各画像において、直前のフレームに対応する画像を破線で示すとともに、検出されるオプティカルフローの一例を示す図である。図14(a)に示す画像421は、図13(a)に示す画像421と同じものである。また、図14(b)に示す画像422のうちの実線の部分は、図13(b)に示す画像422と同じものであり、図14(b)に示す画像422のうちの破線の部分は、図13(a)に示す画像421の実線の部分と同じものである。また、図14(b)に示す画像422における矢印424乃至426は、画像422から検出されたオプティカルフローの一例を示す。同様に、図14(c)に示す画像423のうちの実線の部分は、図13(c)に示す画像423と同じものであり、図14(c)に示す画像423のうちの破線の部分は、図13(b)に示す画像422の実線の部分と同じものである。また、図14(c)に示す画像423における矢印427乃至429は、画像423から検出されたオプティカルフローの一例を示す。
図14(b)および(c)に示すように、倍率の変更に合わせて、画像に含まれる人420および背景の山の大きさが変更する。この変更により検出されるオプティカルフローに基づいてアフィン変換パラメータをフレーム毎に求めることができる。
図15は、図13に示す画像421乃至423を含む動画を再生する場合における表示例を示す図である。
図15(a)に示すように、最初は、先頭のフレームに対応する画像421のみが表示される。続いて、次のフレームに対応する画像422が表示される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像422がアフィン変換される。図15(b)に示す画像においては、画像422の大きさのみが変換される。そして、アフィン変換パラメータによりアフィン変換された画像422が、直前のフレームに対応する画像421に重なるように上書きされる。すなわち、画像421の領域のうちで、画像422と重複する領域については、画像422の画像が上書きされる。この場合には、画像421は、画像422の全ての領域と重複しているため、画像421に画像422の全ての画像が上書きされる。また、画像421の領域のうちで、画像422と重複しない領域431については、画像421の画像が合成される。すなわち、2つ目のフレームに対応する画像422が表示される場合には、図15(b)に示すように、画像422の全体部分と、画像421のうちの領域431に対応する部分とが合成された画像が表示される。また、表示されている画像のうちで最新の画像であることを示す画像枠を現フレームに対応する画像の周りに表示させることができる。図15(b)では、画像422に画像枠が表示される。また、画像422をアフィン変換したアフィン変換パラメータが画像変換部180に保持される。
続いて、次のフレームに対応する画像423が表示される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像423がアフィン変換される。すなわち、画像423に対応するアフィン変換パラメータの行列と、直前のアフィン変換に用いられた画像422に対応するアフィン変換パラメータの行列とを乗算して求められたアフィン変換パラメータにより画像423がアフィン変換される。図15(c)に示す画像においては、画像423の大きさのみが変換される。そして、アフィン変換された画像423が、前のフレームに対応する画像421および422の合成画像に重なるように上書きされる。すなわち、画像421および422の合成画像の領域のうちで、画像423と重複する領域については、画像423の画像が上書きされる。この場合には、画像423は、画像421および422の全ての領域と重複しているため、画像421および422の合成画像に画像423の全ての画像が上書きされる。また、画像421および422の合成画像の領域のうちで、画像423と重複しない領域432および433については、画像421および422の合成画像が合成される。すなわち、3つ目のフレームに対応する画像423が表示される場合には、図15(c)に示すように、画像423の全体部分と、画像421のうちの領域432に対応する部分と、画像422のうちの領域433に対応する部分とが合成された画像が表示される。また、表示されている画像のうちで最新の画像であることを示す画像枠を現フレームに対応する画像の周りに表示させる場合には、図15(c)に示す画像423に画像枠が表示される。また、画像423をアフィン変換したアフィン変換パラメータが画像変換部180に保持される。すなわち、画像422および423のそれぞれに対応するアフィン変換パラメータを用いて求められたアフィン変換パラメータが画像変換部180に保持される。
次に、カメラの撮影時において、カメラのレンズの方向や倍率は変更されないものの、撮影方向を回転中心にしてカメラが回転されている場合について説明する。
図16は、カメラにより撮影された動画の遷移の一例を示す図である。図16には、山を背景にして人440を撮影した場合における動画に含まれる連続するフレームに対応する画像441乃至443を示す図である。この例では、撮影方向を回転中心にしてカメラを回転しながら、撮影者が撮影を行っている場合を示す。この場合には、カメラにより撮影される動画に含まれる人440が、その動画を構成する画像において回転していく。なお、カメラの回転によりカメラの位置が多少移動する場合があるものの、この例では、カメラの位置の移動については考慮せずに説明する。
図17は、図16に示す各画像において、直前のフレームに対応する画像を破線で示すとともに、検出されるオプティカルフローの一例を示す図である。図17(a)に示す画像441は、図16(a)に示す画像441と同じものである。また、図17(b)に示す画像442のうちの実線の部分は、図16(b)に示す画像442と同じものであり、図17(b)に示す画像442のうちの破線の部分は、図16(a)に示す画像441の実線の部分と同じものである。また、図17(b)に示す画像442における矢印444乃至446は、画像442から検出されたオプティカルフローの一例を示す。同様に、図17(c)に示す画像443のうちの実線の部分は、図16(c)に示す画像443と同じものであり、図17(c)に示す画像443のうちの破線の部分は、図16(b)に示す画像442の実線の部分と同じものである。また、図17(c)に示す画像443における矢印447乃至449は、画像443から検出されたオプティカルフローの一例を示す。
図17(b)および(c)に示すように、カメラの回転に合わせて、画像に含まれる人440および背景の山が回転移動する。この回転移動により検出されるオプティカルフローに基づいてアフィン変換パラメータをフレーム毎に求めることができる。
図18は、図16に示す画像441乃至443を含む動画を再生する場合における表示例を示す図である。
図18(a)に示すように、最初は、先頭のフレームに対応する画像441のみが表示される。続いて、次のフレームに対応する画像442が表示される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像442がアフィン変換される。図18(b)に示す画像においては、画像442の角度のみが変換される。そして、アフィン変換パラメータによりアフィン変換された画像442が、直前のフレームに対応する画像441に重なるように上書きされる。すなわち、画像441の領域のうちで、画像442と重複する領域450については、画像442の画像が上書きされる。また、画像441の領域のうちで、画像442と重複しない領域451および452については、画像441の画像が合成される。すなわち、2つ目のフレームに対応する画像442が表示される場合には、図18(b)に示すように、画像442の全体部分と、画像441のうちの領域451および452に対応する部分とが合成された画像が表示される。また、表示されている画像のうちで最新の画像であることを示す画像枠を現フレームに対応する画像の周りに表示させることができる。図18(b)では、画像442に画像枠が表示される。また、画像442をアフィン変換したアフィン変換パラメータが画像変換部180に保持される。
続いて、次のフレームに対応する画像443が表示される場合には、このフレームに関連付けられているアフィン変換パラメータを用いて画像443がアフィン変換される。すなわち、画像443に対応するアフィン変換パラメータの行列と、直前のアフィン変換に用いられた画像442に対応するアフィン変換パラメータの行列とを用いて求められたアフィン変換パラメータにより画像443がアフィン変換される。図18(c)に示す画像においては、画像443の角度のみが変換される。そして、アフィン変換された画像443が、前のフレームに対応する画像441および442の合成画像に重なるように上書きされる。すなわち、画像441および442の合成画像の領域のうちで、画像443と重複する領域453乃至457については、画像443の画像が上書きされる。また、画像441および442の合成画像の領域のうちで、画像443と重複しない領域458乃至461については、画像441および442の合成画像がさらに合成される。すなわち、3つ目のフレームに対応する画像443が表示される場合には、図18(c)に示すように、画像443の全体部分と、画像441のうちの領域459に対応する部分と、画像442のうちの領域458および460に対応する部分とが合成された画像が表示される。また、表示されている画像のうちで最新の画像であることを示す画像枠を現フレームに対応する画像の周りに表示させる場合には、図18(c)に示す画像443に画像枠が表示される。また、画像443をアフィン変換したアフィン変換パラメータが画像変換部180に保持される。すなわち、画像442および443のそれぞれに対応するアフィン変換パラメータを用いて求められたアフィン変換パラメータが画像変換部180に保持される。
図19は、本発明の実施の形態における動画記憶部200に記憶されている動画ファイルの各フレームと、表示領域との関係を模式的に示す図である。ここでは、操作受付部270、メタデータ記憶部210および画像メモリ220についてのみ図示し、これら以外の構成についての図示を省略する。また、図5(b)に示す動画ファイル201を構成するフレーム「1」乃至「3」について、メタデータファイル211に記憶されているアフィン変換パラメータ216を用いて画像メモリ220に合成画像が作成される場合を例にして説明する。なお、図19では、1つの動画を画像メモリ220に保持させる場合を例にして示すが、複数の動画を画像メモリ220に保持させる場合についても同様に合成される。
図19(a)には、図5(b)に示す動画ファイル201を構成するフレームのうちの最初のフレームであるフレーム1(205)が画像メモリ220に保存される場合を示す。例えば、図19(a)に示すように、動画ファイル201のフレーム1(205)に対応する画像471が画像メモリ220に保存される。ここで、最初のフレームに対応する画像471が画像メモリ220に保持される位置および大きさは、予め指定されている位置に保存するようにしてもよく、操作受付部270においてユーザにより指定された位置に保存するようにしてもよい。また、例えば、再生の対象となる動画に関連付けられているメタデータファイルを用いて、この動画を構成する各フレームにより作成される合成画像の大きさを計算し、この計算に基づいて画像471が保存される位置を決定するようにしてもよい。なお、以下では、画像メモリ220上に配置された画像471の左上の位置を原点とし、横方向(横軸)をx軸とし、縦方向(縦軸)をy軸として説明する。
図19(a)に示すように、画像メモリ220上に画像471が配置された場合における表示領域を表示領域470とする。表示領域470は、例えば、動画により作成される合成画像の位置および大きさに基づいて、操作受付部270により受け付けられた表示倍率の値に応じて決定するようにしてもよい。例えば、画像471に対する表示領域470の位置は、アフィン変換パラメータにより決定することができる。すなわち、現画像をズームアウトする「0.5倍」の表示倍率が指定されている場合には、x方向およびy方向のズーム成分が2倍となるアフィン変換パラメータを用いて表示領域が設定される。また、現画像に対して表示領域を平行移動させる場合や回転させる場合についても、アフィン変換パラメータを用いることにより表示領域の位置および範囲を決定することができる。
図19(b)には、図5(b)に示す動画ファイル201を構成するフレームのうちのフレーム2(206)が画像メモリ220に保存される場合を示す。この場合には、上述したように、フレーム番号215の「1」および「2」に関連付けてメタデータファイル211に記憶されているアフィン変換パラメータ216を用いてフレーム2(206)に対応する画像472が変換され、画像471に上書き合成される。
図19(c)には、図5(b)に示す動画ファイル201を構成するフレームのうちのフレーム3が画像メモリ220に保存される場合を示す。この場合についても、上述したように、フレーム番号215「1」乃至「3」に関連付けてメタデータファイル211に記憶されているアフィン変換パラメータ216を用いてフレーム3に対応する画像473が変換され、画像471および352に上書き合成される。
以上で示したように、画像メモリ220上に配置される表示領域の範囲内に存在する画像を表示することによって、再生中の合成画像を順次表示させることができる。ここで、現画像がアフィン変換されて画像メモリ220に合成される際には、低い解像度に変換する解像度変換処理や圧縮処理等の画質の変換が施されることがある。このため、表示倍率を高くして現画像を拡大表示させる場合には、現画像を含む合成画像がぼけてしまうことが考えられる。そこで、この例では、現在再生中の現画像については、画像メモリ220に合成される前の画像を用いて合成画像を表示させる。以下では、この表示方法について図面を参照して詳細に説明する。
図20は、本発明の実施の形態における動画記憶部200に記憶されている動画ファイルの各フレームの流れを模式的に示す図である。ここでは、操作受付部270、動画記憶部200、メタデータ記憶部210、画像メモリ220および表示用メモリ240の関係についてのみ図示し、これら以外の構成についての図示を省略する。なお、図20では、1つの動画を表示部260に表示させる場合を例にして示すが、複数の動画を表示部260に表示させる場合についても同様に合成される。
図20(a)には、図5(b)に示す動画ファイル201およびメタデータファイル211を簡略化して示す。以下では、動画ファイル201を構成するフレームi(207)に対応する画像が表示される例について説明する。すなわち、動画ファイル201を構成するフレーム1乃至「i−1」に対応する画像については、合成画像が作成されているものとする。
図20(b)には、動画ファイル201を構成する各フレームに対応する画像が合成された合成画像が保持されている画像メモリ220を模式的に示す。図19(b)に示すように、動画ファイル201を構成するフレーム1(205)に対応する画像471が画像メモリ220に最初に保持される。そして、画像471が画像メモリ220に保持された後に、動画ファイル201を構成するフレーム2乃至「i−1」に対応する各画像が、フレーム2乃至「i−1」のそれぞれに関連付けてメタデータファイル211に記憶されているアフィン変換パラメータ216の値を用いて順次アフィン変換され、アフィン変換された画像が画像メモリ220に順次上書きされて保持される。そして、画像メモリ220に保持されている合成画像から、表示領域取出部230が表示領域内に存在する画像をフレーム毎に取り出す。
フレーム1乃至「i−1」に対応する各画像による合成画像が画像メモリ220に保持されている状態で、動画ファイル201を構成するフレームi(207)に対応する画像が、フレーム1乃至iに関連付けてメタデータファイル211に記憶されているアフィン変換パラメータ216を用いてアフィン変換され、アフィン変換された現画像474が画像メモリ220に上書きされて保持される。そして、画像メモリ220に保持されている合成画像から、表示領域470内に存在する画像を表示領域取出部230が取り出し、取り出された画像を、例えば、図20(c)に示すように表示用メモリ240に保持させる。
図20(c)には、表示領域取出部230により取り出された画像が保持されている表示用メモリ240を模式的に示す。ここで、表示領域取出部230により取り出された画像のうちの現フレームに対応する現画像475は、表示領域取出部230により画像メモリ220から取り出された現画像474ではなく、動画記憶部200から取得されて画像変換部180によりアフィン変換された画像を用いる。ここで、表示用メモリ240における現画像475の保存位置は、画像メモリ220における現画像474の位置および大きさと、画像メモリ220における表示領域470の位置および大きさとに基づいて決定することができる。例えば、フレーム番号215の「1」乃至「i」に関連付けてメタデータファイル211に記憶されているアフィン変換パラメータの行列をそれぞれA1、…、Aiとし、表示領域470を決定するためのアフィン変換パラメータの行列(例えば、画像メモリ220を基準とする行列)をCとする場合には、画像471の位置を基準として、Inv(C)×A1×…×Aiを用いることにより、表示用メモリ240における現画像475の保存位置を決定することができる。
図20(c)に示すように、表示領域取出部230により取り出された画像が表示用メモリ240に保持されるとともに、表示領域取出部230により取り出された画像に、動画記憶部200から取得されて画像変換部180によりアフィン変換された画像が上書きされて表示用メモリ240に保持される。そして、表示用メモリ240に保持されている画像が表示部260に表示される。このように、現画像については、アフィン変換後に縮小等の処理が施されて画像メモリ220に保持される前の状態の画像を用いることによって、比較的綺麗な現画像を表示することができる。また、ユーザの操作により拡大等がされた場合についても現画像を綺麗な状態で表示することができる。
以上で示したように、現画像については、画像メモリ220に保持される合成画像の代わりに、動画記憶部200から取得されてアフィン変換された画像を用いることができるため、比較的綺麗な画像を視聴することができる。この表示例については、図21および図22を参照して詳細に説明する。
図21(a)は、カメラにより撮影された動画を再生する場合における表示例を示す図である。この例では、大きな建物がある芝生の広場で遊んでいる親子を、カメラを主に左右方向に移動させながら撮影した場合の動画を再生中における画像480を示す。ここで、画像480には、動画を構成する各クレームに対応する画像により合成された画像481がパノラマ状に形成されている。また、画像480における現フレームに対応する画像は、現画像482である。
ここで、枠483で囲まれた画像領域を拡大表示する場合について説明する。表示部260に表示されている画像について拡大縮小表示をする場合には、ユーザが操作受付部270において表示倍率指定キーを操作することにより所望の表示倍率を指定することができる。例えば、図21(a)に示すように、表示部260に画像480が表示されている場合において、枠483で囲まれた画像領域を拡大表示する場合には、ユーザが操作受付部270において表示倍率指定キーを操作して表示倍率を指定するとともに、位置を指定することにより、枠483で囲まれた画像領域を拡大表示することができる。
図21(b)は、画像480における現画像482がアフィン変換される前の状態の画像484を示す図である。
図22(a)は、図21(a)に示す枠483で囲まれた画像領域が拡大表示された場合における画像485を示す図である。図22(a)に示す画像485は、アフィン変換後の現画像が画像メモリ220に保存される前の状態で表示用メモリ240に合成された画像である。このように、現画像486の領域には、画像メモリ220に保存される前の状態の比較的精細な画像が表示される。このため、現画像486と、この領域以外の領域とを比較した場合に、他の領域よりも比較的綺麗な現画像486を見ることができる。一方、図22(b)に示す画像487は、アフィン変換後の現画像が画像メモリ220に保存された状態で表示用メモリ240に保存された画像である。このように表示される場合には、現画像488の領域についても、他の領域の画像と同程度の画像が表示される。すなわち、本発明の実施の形態によれば、画像合成表示する際に、表示用メモリ240に保持された履歴画像は圧縮される場合があるものの、現在(カレント)の画像については非圧縮の画像、または、履歴画像よりも高い解像度の画像を使用することができるため、高画質な画像合成表示を実現することができる。
次に、実際にカメラにより撮影された動画を合成再生する場合における表示例を示す。以下に示す表示例では、表示部260の表示領域のうちで、動画の少なくとも何れかを構成する現フレームおよび前のフレームに対応する画像が表示される領域のみに合成画像を表示し、その他の領域を黒くする例を示す。また、現フレームに対応する画像の周りには枠を表示する。なお、以下に示す表示例では、1つの動画が再生されている途中からの表示例を示す。また、実際ではフレーム毎に合成画像が順次表示されるが、同図では、所定数のフレーム間隔毎の表示例を示し、このフレーム間に表示される合成画像の図示を省略する。このため、現フレームに対応する枠の移動が、同図では大きいものとなっている。
図23乃至図26は、カメラにより撮影された動画の遷移の一例を示す図である。同図では、大きな建物がある芝生の広場で遊んでいる親子を、カメラを主に左右方向に移動させながら撮影した場合における動画を構成する画像730乃至741を示す。なお、この動画は、図21および図22に示す動画と同様である。
同図に示す画像730乃至741において、現フレームに対応する画像は、画像750である。なお、同図に示す画像730乃至741においては、合成画像が異なる場合でも現画像を同一の符号750で示す。同図に示すように、撮影された画像に含まれる撮影対象物(芝生の広場等)が画面に固定され、現フレームに対応する画像750がカメラの動きに合わせて画面上を移動する。このように表示することによって、表示部260に黒く表示されている表示領域において、現フレームに対応する現画像がカメラの動きに応じて進んでいくように、閲覧者に見せることができる。また、現画像が合成画像上を移動する場合にも、合成画像上の位置と現画像の位置とが合うように移動していく。
以上では、動画を再生させる場合に、動画を構成する各画像をアフィン変換パラメータを用いて変換させながら合成させる再生例について主に説明した。これにより、あらゆる種類の動画をパノラマ状に展開した状態で動画再生を視聴することができる。
しかしながら、動画の種類や検出されたアフィン変換パラメータによっては、動画をパノラマ状に展開しながら適切に合成再生することができない場合が想定される。例えば、再生の対象となる動画として、カメラにより撮像された状態から編集されていない動画(未編集動画)や、カメラにより撮像された後に編集された動画(編集済動画)等が存在する。この未編集動画については、一部または全部にフォーカスが合っていない部分を含むもの、撮像中にカメラの前を人が急に横切った部分を含むもの、撮像中にカメラ等が激しく変化して、その変化を画像中に含むもの、撮像動画記録指示ボタンを押した状態で別のシーンを撮像しているもの等が考えられる。また、編集済動画については、例えば、編集により異なるシーンが連結されているもの等が考えられる。
例えば、未編集動画についてフォーカスが合っていない場合や撮像中にカメラ等が激しく変化した場合には、アフィン変換パラメータを適切に検出することができず、アフィン変換パラメータを誤検出することが考えられる。このようにアフィン変換パラメータが誤検出された場合には、画像を適切に変換することができない。また、例えば、編集済動画において編集により異なるシーンが連結されている場合に、これらの異なるシーンが1つの合成画像として展開されたり、合成されたりすることが考えられる。そこで、本発明の実施の形態では、動画を合成再生させる場合に、動画を構成する各画像から抽出された特徴量に基づいて、アフィン変換パラメータの補正、または、合成画像の分割等を行うことにより、さらに多くの種類の動画をパノラマ状に展開しながら適切に合成再生して、合成再生を楽しめるようにする。
最初に、アフィン変換パラメータを補正する場合について説明する。本発明の実施の形態では、動画を構成する各画像から抽出された特徴量が所定の条件を満たしている場合に、アフィン変換パラメータを補正する。これにより、カメラの動きとは全く異なる位置に画像が大きく変換されることを抑制するとともに、最終的にパノラマ状に形成される合成画像の品質を向上させることができる。ここで、アフィン変換パラメータの補正に係る所定の条件として、例えば、シーンチェンジスコアが閾値以上である場合、または、カメラワークの各成分のうちの少なくとも1つが閾値以上である場合を条件とすることができる。また、これら双方を満たす場合を条件とするようにしてもよい。ここで、シーンチェンジ点であると判定された位置では、アフィン変換パラメータが誤検出されているおそれがあるため、補正を行うことによって、合成画像としての破綻を避けることができる。
また、アフィン変換パラメータを補正する補正方法として、単位行列と置き換えることにより補正する方法、カメラワークの速度が抑制されるような行列(例えば、線型補間行列)により補正する方法を用いることができる。これにより、高速なカメラワークを抑制することができ、動画の閲覧性を向上させることができる。また、アフィン変換パラメータが誤検出された場合でも、その誤検出に係る画像以降の画像の合成に与える影響を抑制することができる。なお、アフィン変換パラメータの補正方法については、図27を参照して詳細に説明する。
なお、動画としての閲覧性が失われない限り、高速なカメラワークまでも含めて、アフィン変換パラメータをなるべく補正しないことが、アプリケーションによっては望ましい場合も考えられる。そこで、操作受付部270からの操作入力に応じて、補正を禁止する設定をするようにしてもよい。
次に、合成画像を分割する場合について説明する。本発明の実施の形態では、動画を構成する各画像から抽出された特徴量が所定の条件を満たしている場合に、前の各画像により形成された合成画像とは異なる合成画像とする。これにより、不連続な動画を分離することができるため、辻褄の合わない合成画像が形成されることを回避することができる。また、各シーンに対応する画像を分散させることができるため、時間的に広範囲の動画検索を容易に行うことができる。
ここで、合成画像の分割に係る所定の条件として、例えば、シーンチェンジスコアが閾値以上である場合、カメラワークの各成分のうちの少なくとも1つが閾値以上である場合、カメラワーク成分の各平均値のうちの少なくとも1つが閾値以上である場合、カメラワーク成分の各積算値のうちの少なくとも1つが閾値以上である場合(ズームイン・ズームアウト率の閾値判定、パンニングまたはチルチング角度の閾値判定等)、または、先頭のフレーム(ここでは、分割後の最初のフレームを含む)からの再生時間が閾値以上である場合とすることができる。また、これらのうちの少なくとも2つを満たす場合を所定の条件とするようにしてもよい。なお、合成画像の分割方法については、図28乃至図30を参照して詳細に説明する。
次に、上述した合成画像の分割に係る所定の条件について詳細に説明する。
例えば、シーンチェンジスコアが閾値以上である場合には、そのシーンチェンジスコアに対応する位置がシーンチェンジ点であると判定することができる。このように、シーンチェンジ点であると判定された位置は、カット点(編集点)である場合や、同一シーンであるものの被写体が大きく変化した位置である場合が考えられる、そこで、シーンチェンジ点であると判定された位置に対応する画像について分割を行うことによって、全く異なる被写体同士が合成された合成画像が形成されることを防止することができる。
また、合成画像を分割する場合における条件として、カメラワークの成分を用いる場合には、瞬間的なカメラワークの成分よりも、比較的長い時間におけるカメラワークの成分を用いることが好ましい。すなわち、1フレームに係るカメラワークの成分よりも、過去数フレーム分の成分の平均値(ローパス・フィルタが適用された値)を用いて、閾値判定を行うことが好ましい。このようにすることによって、過度な分割を防ぐことができる。また、ある程度連続してカメラワークに動きがある場合には、撮像動画記録指示ボタン(RECボタン)を押した状態で、次のシーンに遷移する等の場合を想定することができるため、分割すべき位置を正しく判断することができる。
また、合成画像を分割する場合における条件として、例えば、シーンチェンジスコアが閾値以上である場合およびカメラワーク成分の各平均値のうちの少なくとも1つが閾値以上である場合とすることによって、過度な分割を防ぐことができる。
また、カメラワーク成分の各積算値のうちのズーム成分の積算値は、動画を構成する先頭のフレーム(ここでは、分割後の最初のフレームを含む)に対する現フレームに対応するカメラワーク成分の拡大・縮小成分の変化量であり、このズーム成分の積算値を閾値判定に用いることができる。例えば、カメラの撮像時においてズームイン操作が過度に施されると、合成再生中の合成画像における現画像が小さくなり過ぎる場合があるため、現画像が見難いおそれがある。そこで、カメラワーク成分の拡大・縮小成分の変化量が大きくなった場合には、合成画像を分割した新たな合成画像とすることによって、合成再生に係る動画を見易くすることができる。また、例えば、ある対象物を背後から長時間に亘って追いかけながら撮像する場合においても、カメラのズームイン操作と同じ効果になる。そこで、同様の分割処理を行うことによって、合成再生に係る動画を見易くすることができる。
また、カメラワーク成分の各積算値のうちの並進成分の積算値は、動画を構成する先頭のフレーム(ここでは、分割後の最初のフレームを含む)に対する現フレームに対応するカメラワーク成分の並進成分の変化量であり、この並進成分の積算値を閾値判定に用いることができる。なお、この並進成分の積算値は、パンニング角度またはチルチング角度と考えることもできる。例えば、実際のカメラの撮像時において、カメラを持った撮影者を中心位置として撮影者が回転しながら撮像が行われる場合と、撮影者が横に移動しながらカメラを一方向に向けた状態で撮像が行われる場合とを区別することは困難である。しかしながら、撮影者が回転しながら撮像が行われる場合におけるカメラの回転角度は合成画像の大きさに反映される。このため、パンニング角度またはチルチング角度と並進成分とを同一と見做して分割処理することができる。例えば、カメラの撮像時においてパンニング操作が過度に施されると、合成再生中の合成画像が極端に横長になる場合がある。一方、カメラの撮像時においてチルチング操作が過度に施されると、合成再生中の合成画像が極端に縦長になる場合がある。このため、現フレームに対応する画像および合成画像が見難いおそれがある。そこで、カメラワーク成分の並進成分の変化量が大きくなった場合には、合成画像を分割した新たな合成画像とすることによって、合成再生に係る動画を見易くすることができる。
次に、先頭のフレーム(ここでは、分割後の最初のフレームを含む)からの再生時間が閾値以上である場合を条件とする場合について説明する。例えば、長時間撮像された動画を一枚のパノラマ状の合成画像として表示させる場合において、特に撮像空間における撮像範囲が狭い場合には、各フレームの重なりが多くなるため、その動画に係る情報量が欠如してしまうおそれがある。例えば、各フレームの重なりが多くなる場合には、再生時刻の比較的古い画像に、再生時刻の比較的新しい画像が上書きされる。このため、再生時刻の比較的古い画像を合成画像に含めて表示させることができないおそれがあり、合成画像のインデックスとしての機能性が劣るとともに、閲覧性が劣ることが考えられる。そこで、一定の時間(例えば、5分)で、合成画像を強制的に分割することによって、合成画像のインデックスとしての機能性、および、合成画像の閲覧性を向上させることができる。
なお、合成画像の分割間隔の時間が短すぎると、動画としての閲覧性が悪くなるおそれがあるため、最低再生時間(例えば、5秒)を設定するようにしてもよい。すなわち、上述した合成画像の分割に係る所定の条件を満たす場合でも、合成画像の分割がされてから最低再生時間の範囲内では分割処理を行わないようにする。
このように、動画におけるシーンの不連続点等において合成画像を分離することによって、表示される合成画像のインデックスとしての機能を向上させることができるとともに、動画としての一貫性を確保して合成画像の閲覧性を向上させることができる。
なお、これらの分割判定をそれぞれの要素に基づいて独立して判定するようにしてもよく、複数の要素が同時に条件を満たす場合にのみ分割するようにしてもよい。また、例えば、動画を構成する各画像についてアフィン変換パラメータを検出する場合に、特徴点の対応が取れない等の検出結果を、フレームに関連付けてメタデータ記憶部210に記憶しておき、この検出結果に基づいて、補正の要否、または、分割の要否を判定するようにしてもよい。すなわち、閾値を超えるものの、検出結果が、正常な検出となっている場合には、補正をしないと判定することができる。
次に、画像に関連付けられているアフィン変換パラメータのうちの一部を補正して合成画像を作成する例について図面を参照して詳細に説明する。
図27は、動画ファイル500を構成する画像501乃至517が合成された場合を模式的に示す図である。図27(a)には、画像501乃至517に関連付けられているアフィン変換パラメータを用いて画像501乃至517が合成された場合を示し、図27(b)および(c)には、画像501乃至517に関連付けられているアフィン変換パラメータのうちの一部が補正されたアフィン変換パラメータを用いて画像501乃至517が合成された場合を示す。
同図では、動画ファイル500を構成する画像501乃至517において、内部を斜線で示す画像508乃至510の区間の撮像中にカメラの前を人が急に横切ったため、画像508乃至510について適切なアフィン変換パラメータが算出されなかった場合を例にして説明する。また、画像501乃至517において、画像508乃至510に対応するカメラワークの各成分のうちの並進成分および回転成分の少なくとも1つが閾値以上となり、画像508乃至510が上述した補正の条件を満たしているものとする。
このように、カメラワークの各成分のうちの並進成分および回転成分の少なくとも1つが閾値以上となる画像508乃至510に関連付けられているアフィン変換パラメータを用いて、画像508乃至510をアフィン変換すると、カメラの動きとは無関係に画像508乃至510が変換されるおそれがある。例えば、図27(a)に示すように、カメラの動きとは無関係に、画像508乃至510が他の画像の変換量よりも大きく変換されてしまう可能性がある。このような場合には、画像501乃至517により形成される合成画像において、画像508乃至510の部分が、実際の被写体の部分と大きく異なることにより、再生中の合成画像および最終的に形成される合成画像が見難い画像となる可能性が高い。そこで、上述した補正の条件を満たす場合には、そのアフィン変換パラメータを補正することにより、合成画像が実際の被写体の部分と大きく異なる画像となることを防止し、再生中の合成画像および最終的に形成される合成画像を見易くすることができる。
このアフィン変換パラメータの補正方法として、本発明の実施の形態では、アフィン変換パラメータの行列を単位行列に補正する補正方法と、前後方向の画像に関連付けられているアフィン変換パラメータの行列に基づいて線型補間を行う補正方法とについて説明する。
最初に、アフィン変換パラメータの行列を単位行列に補正する補正方法について説明する。例えば、連続する3つの画像を画像n−1乃至n+1とし、各画像に関連付けられているアフィン変換パラメータの行列をRn−1、Rn、Rn+1とする場合において、画像nに関する特徴量が補正の条件を満たす場合には、変換情報補正部160が、Rn=E(単位行列)と補正する。例えば、図27(a)に示すように、画像508乃至510に対応するカメラワークの各成分のうちの並進成分および回転成分の少なくとも1つが閾値以上である場合には、変換情報補正部160が、これらのアフィン変換パラメータの行列を単位行列に補正する。そして、補正後の単位行列により画像508乃至510が変換される。
このように、画像508乃至510が単位行列を用いて変換されるため、画像507を基準として見た場合には、画像508乃至510は実際には変換されず、直前の画像507と同じ位置に合成される。すなわち、図27(b)に示すように、内部を斜線で示す画像507の位置に画像508乃至510が上書き合成される。なお、画像510の直後の画像511については、画像511に関連付けられているアフィン変換パラメータを用いて通常の変換が行われる。
次に、前後方向の画像に関連付けられているアフィン変換パラメータの行列に基づいて線型補間を行う補正方法について説明する。例えば、連続する3つの画像を画像n−1乃至n+1とし、各画像に関連付けられているアフィン変換パラメータの行列をRn−1、Rn、Rn+1とする場合において、画像nに関する特徴量が補正の条件を満たし、画像n−1、n+1に関する特徴量が補正の条件を満たさない場合には、変換情報補正部160が、Rn={(Rn−1)+(Rn+1)}/2と補正する。また、例えば、連続する5つの画像を画像n−2乃至n+2とし、各画像に関連付けられているアフィン変換パラメータの行列をRn−2乃至Rn+2とする場合において、画像n−1、n、n+1に関する特徴量がそれぞれ補正の条件を満たし、画像n−2、n+2に関する特徴量がそれぞれ補正の条件を満たさない場合には、変換情報補正部160が、Rn−1、Rn、Rn+1={(Rn−2)+(Rn+2)}/2と補正する。すなわち、線型補間行列として、例えば、特徴量が補正の条件を満たす画像の前後に位置する2つの画像に関連付けられているアフィン変換パラメータの行列の平均値を用いて補正が行われる。また、特徴量が補正の条件を満たす画像が連続している場合には、これらの連続する画像の前に位置する画像である前側画像と、これらの連続する画像の後に位置する画像である後側画像とが抽出される。なお、前側画像および後側画像は、特徴量が補正の条件を満たさない画像のうちの、上述した連続する画像の前後方向に隣接する画像である。そして、抽出された前側画像および後側画像に関連付けられているアフィン変換パラメータの行列の平均値を用いて補正が行われる。
例えば、画像507乃至511に関連付けられているアフィン変換パラメータの行列をA7乃至A11とする場合において、図27(a)に示すように、画像508乃至510に対応するカメラワークの各成分のうちの並進成分および回転成分の少なくとも1つが閾値以上である場合には、変換情報補正部160が、画像508乃至510の前後に位置する画像507および511に係る行列A7、A11を用いて線型補間行列((A7+A11)/2)を算出し、この線型補間行列により、A8乃至A10=(A7+A11)/2と補正する。そして、補正後の行列((A7+A11)/2)により画像508乃至510が順次変換される。
すなわち、画像508乃至510が線型補間行列を用いて変換されるため、画像508乃至510の前後に位置する画像507および511の変換量の平均値により画像508乃至510が変換され、例えば、図27(c)に示すように、内部を斜線で示す画像507に上書きされて画像508乃至510が順次合成される。続いて、画像510の直後の画像511について、画像511に関連付けられているアフィン変換パラメータを用いて通常の変換が行われる。
このように、補正の条件を満たす画像を変換する場合に、そのアフィン変換行列を補正することにより、再生中の合成画像または作成された合成画像を見易くすることができる。例えば、図27(a)に示す画像501乃至517において、画像508乃至510に関連付けられているアフィン変換パラメータが、確からしくないアフィン変換パラメータである場合(特徴量が閾値以上である場合)には、画像507乃至517が、カメラの動きとは別方向に変換される。これに対して、画像508乃至510に関連付けられているアフィン変換パラメータを補正することにより、図27(b)および(c)に示すように、画像507乃至517がカメラの動きとは別方向に変換されることを防止して、再生中の合成画像または作成された合成画像を見易くすることができる。
なお、本発明の実施の形態では、アフィン変換パラメータを補正する補正方法として、そのアフィン変換行列を単位行列に補正する場合、または、線型補間行列に補正する場合について説明したが、例えば、補正の対象となる画像の所定数前までの画像に関連付けられているアフィン変換パラメータの行列を順次加算して加算後の行列の平均値を算出し、この平均値の行列に補正するようにしてもよい。
次に、分割が必要と判定された場合に、前の画像により作成された合成画像とは異なる合成画像を作成する例について図面を参照して詳細に説明する。
図28は、動画を構成する各フレームと、これらのフレームについて算出されたシーンチェンジスコアとの関係を模式的に示す図である。図28(a)に示すグラフは、動画を構成する各フレームについて算出されたシーンチェンジスコアを時系列で示すグラフであり、横軸は撮像時刻を示し、縦軸はシーンチェンジスコアを示す。また、点線533は、図28(a)に示すグラフにおいて、各フレームに対応する画像がシーンチェンジ点に該当するか否かを判定するための閾値を示す点線である。すなわち、シーンチェンジスコアが点線533以上である場合に、このシーンチェンジスコアに対応する画像が、シーンチェンジ点に該当する画像と判定される。例えば、動画530を構成するフレーム1乃至20のうちで、フレーム11(531)について算出されたシーンチェンジスコアを示す位置を点532で示す。この場合に、点532は、点線533を超えているため、フレーム11(531)に対応する画像は、シーンチェンジ点に該当する画像と判定される。なお、フレーム1乃至20のうちで、フレーム11(531)以外のシーンチェンジスコアは、点線533以下であるため、シーンチェンジ点に該当する画像とは判定されない。なお、このシーンチェンジスコアの判定は、変換情報補正部160および合成画像分割判定部170により行われる。
図29は、図28(b)に示す動画530を構成する画像551乃至567が合成された場合を模式的に示す図である。図29(a)には、画像551乃至567に関連付けられているアフィン変換パラメータを用いて画像551乃至567が合成された場合を示し、図29(b)および(c)には、画像551乃至567のうちの一部が分割されて合成される場合の遷移を示す。なお、図29に示す動画530を構成する画像551乃至567は、図28(b)に示すフレーム1乃至17に対応する画像であり、内部を斜線で示す画像561は、図28(b)に示すフレーム11(531)に対応する画像である。すなわち、画像561は、シーンチェンジ点に該当する画像である。また、画像561に対応するカメラワーク成分の各平均値のうちの少なくとも1つが閾値以上であるものとする。ここで、この例では、現画像に対応するシーンチェンジスコアが閾値以上であるとともに、カメラワーク成分の各平均値のうちの少なくとも1つが閾値以上である場合に、この現画像に関連付けられているアフィン変換パラメータを用いて現画像を変換させず、現在の合成画像と分離して新たに合成画像を作成する例を示す。
図28(a)に示すように、フレーム11(531)において算出されたシーンチェンジスコアが閾値以上であり、画像561がシーンチェンジ点に該当する画像であると判定される場合には、画像561は動画530に含まれるものの、画像551乃至560とは異なるシーンで撮像された画像である可能性が高い。また、画像561以降の画像562乃至567については、画像561と同じシーンで撮像されたものであるものの、画像551乃至560とは異なるシーンで撮像された画像である可能性が高い。この場合に、図29(a)に示すように、画像551乃至560とは異なるシーンで撮像された画像561乃至567を、画像551乃至560に上書きして合成すると、異なる2つのシーンを含む合成画像が形成されるため、異なる2つのシーンが無関係な位置で合成されてしまい、視聴者が見難いことになるおそれがある。また、画像561に対応するカメラワーク成分の各平均値のうちの少なくとも1つが閾値以上であるため、所定数のフレームに関して、一定以上の動きが検出されている。
そこで、図29(b)に示すように、画像560までの合成再生が行われた後に、現画像が分割の条件を満たす画像561となった場合には、図29(c)に示すように、画像551乃至560が消去され、先頭のフレームの保持位置に画像561が保持される。そして、画像561以降の画像562乃至567が順次合成される。この例では、現画像が分割の条件を満たす場合には、現画像の前の各画像により形成された合成画像を消去して、現画像からの合成再生を行う例について説明するが、現画像の前の各画像により形成されている合成画像を表示させたままの状態で、現画像からの合成再生を行うようにしてもよい。すなわち、シーンが変更される毎に、動画を合成する位置を変更して、合成画像を順次作成するようにしてもよい。この分割例を図30に示す。
図30は、図28(b)に示す動画530を構成する画像551乃至567が合成された場合を模式的に示す図である。なお、図30(a)に示す合成画像は、図29(a)に示す合成画像と同様である。図30(b)および(c)には、画像551乃至567のうちの一部が分割されて合成される場合であって、分割前の合成画像を残す場合の遷移を示す。なお、分割前の合成画像を残して、分割前の合成画像の位置とは異なる位置に現画像を配置する以外は、図29に示す場合と同様である。
図30(b)に示すように、動画を構成する先頭のフレームに対応する画像の配置位置がxy座標上の原点に設定されるとともに、分割の条件を満たす画像の配置位置がxy座標上に配置位置580として設定される。そして、図30(b)に示すように、画像560までの合成再生が行われた後に、現画像が分割の条件を満たす画像561となった場合には、図30(c)に示すように、画像551乃至560により形成された合成画像の位置とは異なる配置位置580に画像561が保持される。続いて、画像551乃至560により形成された合成画像を残した状態で、画像561以降の画像562乃至567が順次合成される。なお、分割の条件を満たす画像の保持位置として、予め設定しておくようにしてもよく、既に形成されている合成画像とは異なる配置位置となるように、合成画像の大きさに基づいて決定するようにしてもよい。また、図30では、分割の条件を満たす画像の保持位置として、既に形成されている合成画像の右側を設定する例について説明したが、他の方向を保持位置として設定するようにしてもよい。
次に、実際にカメラにより撮影された動画により形成された合成画像の表示例を示す。
図31および図32は、カメラにより撮影された動画により形成された合成画像の一例を示す図である。図31では、ビルの中にいる撮影者がビルの窓から屋外を撮影している状態で、比較的速いパンニング動作によりカメラの向きを左側方向に変化させ、ビルの室内を撮影した場合における動画により形成された合成画像590、592、593を示す。すなわち、合成画像590において、右側の画像が比較的古い画像であり、左側に進むに従って新しい画像となる。また、図31(a)に示す点線の丸591で囲まれている画像の部分は、比較的速いパンニング動作によりカメラの向きが変更された部分である。このように、比較的速いパンニング動作によりカメラの向きが変更された場合には、そのパンニング動作がされた位置におけるアフィン変換パラメータを適切に検出することが困難である場合があるため、そのパンニング動作がされる前後の被写体が撮像空間とは無関係に合成される場合がある。例えば、図31(a)に示すように、実際は離れているはずの屋外の被写体と室内の被写体とが、点線の丸591で囲まれている部分で合成される。そこで、上述した合成画像の分割、または、アフィン変換パラメータの補正を行うことにより、被写体に応じた合成画像を作成することができる。なお、この例では、図31(a)に示す点線の丸591で囲まれている画像の部分で、アフィン変換パラメータの補正の条件および合成画像の分割の条件を満たすものとする。
図31(b)および(c)では、上述した合成画像の分割を行った場合における表示の遷移を示す。なお、図31(b)に示す合成画像592は、図31(a)に示す合成画像590の右側部分に対応する合成画像である。ここで、図31(b)に示す合成画像592が形成されていく途中で、図31(a)に示す点線の丸591で囲まれている画像の部分で、合成画像の分割の条件を満たすため、図31(b)に示す合成画像592が消去される。そして、合成画像の分割の条件を満たす画像が、先頭のフレームの配置位置に表示され、これ以降の画像が順次合成されて合成画像593が形成される。このように、異なるシーンを含む動画を合成再生する場合において、最初のシーンから他のシーンに変化した場合に、最初のシーンとは異なる他の合成画像の再生を行うことにより、シーンに応じた合成画像をユーザが見ることができる。なお、この例では、既に形成された合成画像を消去してから他の合成画像を再生させる例に説明したが、既に形成された合成画像を残した状態で、他の合成画像を再生させる場合についても同様に適用することができる。
図32では、図31と同様に、ビルの中にいる撮影者がビルの窓から外を撮影している状態で、比較的速いパンニング動作によりカメラの向きを左側方向に変化させ、ビルの室内を撮影した場合における動画により形成された合成画像590、594、595を示す。なお、図32(a)に示す合成画像590および点線の丸591は、図31(a)に示すものと同様である。
図32(b)および(c)では、上述したアフィン変換パラメータの補正、および合成画像の分割を行った場合における表示の遷移を示す。なお、図32(b)に示す合成画像594は、図32(a)に示す合成画像590の右側部分に対応する合成画像である。ここで、図32(b)に示す合成画像594が形成されていく途中で、図32(a)に示す点線の丸591で囲まれている画像の部分で、アフィン変換パラメータの補正の条件、および合成画像の分割の条件を満たすため、アフィン変換パラメータの補正が行われるものの、図32(b)に示す合成画像594が消去される。そして、合成画像の分割の条件を満たす画像が、先頭のフレームの配置位置に表示され、これ以降の画像が順次合成されて合成画像593が形成される。この場合に、分割直後については、合成画像の分割の条件を満たす場合でも分割が行われないものの、アフィン変換パラメータの補正の条件を満たす場合には、アフィン変換パラメータについて順次補正が行われる。このように、図32(c)に示す合成画像595については、アフィン変換パラメータの補正が順次行われているため、図31(c)に示す合成画像593と異なっている。すなわち、図32(a)に示す点線の丸591で囲まれている画像の左側部分で、アフィン変換パラメータの補正が行われているため、図31(c)に示す合成画像593よりも左右方向における変化を少なくすることができ、比較的速いパンニング動作が行われた画像部分を適切に補正することができる。
なお、図31(c)および図32(c)に示す合成画像593、595では、屋外の被写体の一部が右側に合成されているものの、閾値等の調整を行うことにより、屋外の被写体と室内の被写体とを分割することが可能である。なお、動画の再生時には、時間軸において新しい画像が古い画像の上に順次重ねて合成される。このため、分割が行われた付近では、分割直前のシーンに分割後のシーンの画像が順次重ねられるため、分割直前のシーンを目立たなくさせることができる。このように、異なるシーンを含む動画を合成再生する場合において、最初のシーンから他のシーンに変化した場合に、最初のシーンとは異なる合成画像として他のシーンの合成画像の再生を行うことにより、シーンに応じた合成画像をユーザが見ることができる。また、比較的速いパンニング動作により適切に検出されなかったアフィン変換パラメータを補正して、合成画像における不必要な変化を少なくすることができる。なお、この例では、既に形成された合成画像を消去してから他の合成画像を再生させる例に説明したが、既に形成された合成画像を残した状態で、他の合成画像を再生させる場合についても同様に適用することができる。
次に、本発明の実施の形態における画像処理装置100の動作について図面を参照して説明する。
図33は、本発明の実施の形態における画像処理装置100による動画の再生処理の処理手順を示すフローチャートである。なお、この例では、現フレームに対応する画像を分割して再生させる旨が合成画像分割判定部170から出力された場合には、現フレームよりも前のフレームに対応する各画像の合成画像を消去する例について説明する。
最初に、動画を構成する画像のサイズよりも大きいワークバッファが画像メモリ220に確保される(ステップS921)。続いて、ファイル取得部140が、操作受付部270により選択された動画ファイルを動画記憶部200から取得するとともに、これらの動画ファイルに関連付けられているメタデータファイルをメタデータ記憶部210から取得する(ステップS922)。
続いて、ファイル取得部140が、動画ファイルをデコードし、動画ファイルを構成する1つのフレームである現フレームを取得する(ステップS923)。続いて、ファイル取得部140が、取得された現フレームに対応するアフィン変換パラメータをメタデータファイルから取得する(ステップS924)。ここで、現フレームが先頭フレームである場合には、単位行列のアフィン変換パラメータが取得される。
続いて、特徴量抽出部150が、現フレームに対応する画像についてシーンチェンジスコアを算出する(ステップS925)。続いて、カメラワーク成分算出部155が、現フレームに対応するアフィン変換パラメータから、カメラワークの各成分を算出する(ステップS926)。続いて、カメラワーク成分平均値算出部157が、現フレームに対応するカメラワークの各成分と、カメラワーク成分保持部156に保持されている直前のフレームから所定数前のフレームまでの各フレームに対応するカメラワークの各成分とに基づいて、カメラワーク成分の平均値を算出する(ステップS927)。続いて、カメラワーク成分積算値算出部158が、現フレームに対応するカメラワークの各成分と、カメラワーク成分保持部156に保持されている先頭のフレームから直前のフレームまでの各フレームに対応するカメラワークの各成分とに基づいて、カメラワーク成分の積算値を算出する(ステップS928)。
続いて、変換情報補正処理が行われる(ステップS940)。なお、この変換情報補正処理については、図34を参照して詳細に説明する。続いて、合成画像分割判定処理が行われる(ステップS950)。なお、この合成画像分割判定処理については、図35を参照して詳細に説明する。
続いて、画像変換部180が、アフィン変換パラメータを用いて現フレームに対応する画像をアフィン変換する(ステップS929)。ここで、現フレームに対応する画像を分割して再生させる旨が合成画像分割判定部170から出力された場合には、単位行列を用いてアフィン変換がされるため、実際の画像は変換されない。また、現フレームに対応する画像を分割して再生させる旨が合成画像分割判定部170から出力されない場合において、変換情報補正部160によりアフィン変換パラメータが補正された場合には、補正後のアフィン変換パラメータを用いてアフィン変換が施される。一方、現フレームに対応する画像を分割して再生させる旨が合成画像分割判定部170から出力されず、変換情報補正部160によりアフィン変換パラメータが補正されない場合には、現フレームに対応するアフィン変換パラメータを用いてアフィン変換が施される。なお、現フレームが先頭フレームである場合には、単位行列を用いてアフィン変換がされるため、実際の画像は変換されない。
続いて、画像合成部190が、アフィン変換された現フレームに対応する画像を、この現フレームよりも前のフレームに対応する各画像の合成画像に上書きして合成し、この現フレームに対応する画像が合成された画像を画像メモリ220に保存する(ステップS930)。ここで、現フレームに対応する画像を分割して再生させる旨が合成画像分割判定部170から出力された場合には、現フレームよりも前のフレームに対応する各画像の合成画像が消去されているため、現フレームに対応する画像のみが画像メモリ220に保存される。
続いて、表示領域取出部230は、指定された表示倍率および位置に対応するアフィン変換パラメータを用いて表示領域の位置および大きさを決定する(ステップS931)。続いて、表示領域取出部230は、表示領域に含まれる合成画像を画像メモリ220から取り出す(ステップS932)。続いて、表示領域取出部230は、画像メモリ220から取り出された合成画像を表示用メモリ240に保存する(ステップS933)。
続いて、表示領域取出部230は、現画像の変換に用いられたアフィン変換パラメータの行列と、表示領域の決定に用いられたアフィン変換パラメータの行列に対する逆行列とを用いて、表示用メモリ240における現画像の位置を決定する(ステップS934)。続いて、画像合成部190は、表示用メモリ240に保存されている合成画像に、アフィン変換された現画像を上書き合成する(ステップS935)。続いて、表示用メモリ240に保存されている合成画像が表示部260に表示される(ステップS936)。ここで、現フレームに対応する画像を分割して再生させる旨が合成画像分割判定部170から出力された場合には、現フレームよりも前のフレームに対応する各画像の合成画像が消去されているため、現フレームに対応する画像のみが表示部260に表示される
続いて、入力された動画ファイルを構成するフレームの中で、現フレームが最後のフレームであるか否かが判断される(ステップS937)。現フレームが最後のフレームではない場合には(ステップS937)、ステップS923に戻り、動画の合成再生処理を繰り返す(ステップS923乃至S936)。一方、現フレームが最後のフレームである場合には(ステップS937)、確保されているワークバッファを解放して(ステップS938)、動画再生処理を終了する。
図34は、本発明の実施の形態における画像処理装置100による動画の再生処理の処理手順のうちの変換情報補正処理手順(図33に示すステップS940の処理手順)を示すフローチャートである。この例では、現フレームに対応するカメラワークの各成分の少なくとも1つが閾値以上であるか否かと、シーンチェンジスコアが閾値以上であるか否かとに基づいて、現フレームに対応するアフィン変換パラメータを補正する例について説明する。また、補正が必要と判定されたアフィン変換パラメータの行列を単位行列に補正する例について説明する。
最初に、変換情報補正部160が、現フレームに対応するカメラワークの各成分の少なくとも1つが閾値以上であるか否かを判断する(ステップS941)。現フレームに対応するカメラワークの各成分の少なくとも1つが閾値以上でない場合には(ステップS941)、変換情報補正部160が、現フレームについて算出されたシーンチェンジスコアが閾値以上であるか否かを判断する(ステップS942)。現フレームについて算出されたシーンチェンジスコアが閾値以上でない場合には(ステップS942)、現フレームに対応するアフィン変換パラメータの補正が不要であるため、変換情報補正処理の動作を終了する。
一方、現フレームに対応するカメラワークの各成分の少なくとも1つが閾値以上である場合(ステップS941)、または、現フレームについて算出されたシーンチェンジスコアが閾値以上である場合には(ステップS942)、変換情報補正部160が、現フレームに対応するアフィン変換パラメータの行列を単位行列に補正する(ステップS943)。なお、単位行列の代わりに線型補間行列を用いて補正を行う場合には、ステップS941またはS942で閾値以上であると判断された場合に、ステップS943で現フレームの前後方向の各フレームに対応するアフィン変換パラメータを用いて線型補間行列を算出し、この線型補間行列により補正を行う。
図35は、本発明の実施の形態における画像処理装置100による動画の再生処理の処理手順のうちの合成画像分割判定処理手順(図33に示すステップS950の処理手順)を示すフローチャートである。この例では、現フレームに対応するカメラワークの各成分の平均値の少なくとも1つが閾値以上であるとともに、シーンチェンジスコアが閾値以上であるか否かと、現フレームに対応するカメラワークの各成分の積算値の少なくとも1つが閾値以上であるか否かと、再生時間が閾値以上になったか否かとに基づいて、現フレームに対応する画像の分割の要否を判定する例について説明する。
最初に、合成画像分割判定部170が、現フレームに対応するカメラワークの各成分の平均値の少なくとも1つが閾値以上であるか否かを判断する(ステップS951)。現フレームに対応するカメラワークの各成分の平均値の少なくとも1つが閾値以上でない場合には(ステップS951)、ステップS953に進む。一方、現フレームに対応するカメラワークの各成分の平均値の少なくとも1つが閾値以上である場合には(ステップS951)、合成画像分割判定部170が、現フレームについて算出されたシーンチェンジスコアが閾値以上であるか否かを判断する(ステップS952)。
現フレームについて算出されたシーンチェンジスコアが閾値以上でない場合には(ステップS952)、合成画像分割判定部170が、現フレームに対応するカメラワークの各成分の積算値の少なくとも1つが閾値以上であるか否かを判断する(ステップS953)。現フレームに対応するカメラワークの各成分の積算値の少なくとも1つが閾値以上でない場合には(ステップS953)、合成画像分割判定部170が、画像メモリ220に保持されている現在の合成画像に含まれる画像のうちの先頭のフレームからの再生時間が閾値以上経過したか否かを判断する(ステップS954)。画像メモリ220に保持されている現在の合成画像に含まれる画像のうちの先頭のフレームからの再生時間が閾値以上経過していない場合には(ステップS954)、現フレームに対応する画像を分割する必要がないため、合成画像分割判定処理の動作を終了する。
一方、現フレームに対応するカメラワークの各成分の平均値の少なくとも1つが閾値以上であるとともに、現フレームについて算出されたシーンチェンジスコアが閾値以上である場合(ステップS951、S952)、現フレームに対応するカメラワークの各成分の積算値の少なくとも1つが閾値以上である場合(ステップS953)、または、画像メモリ220に保持されている現在の合成画像に含まれる画像のうちの先頭のフレームからの再生時間が閾値以上経過した場合には(ステップS954)、画像合成部190が、画像メモリ220に保持されている合成画像を消去する(ステップS955)。続いて、画像変換部180が、現フレームに対応するアフィン変換パラメータの行列を単位行列に変更する(ステップS956)。
次に、本発明の実施の形態における特徴点抽出処理およびオプティカルフロー計算処理をマルチコアプロセッサにより行う場合について図面を参照して詳細に説明する。
図36は、本発明の実施の形態におけるマルチコアプロセッサ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については、図37を参照して詳細に説明する。
演算プロセッサコア(#1)811乃至(#8)818は、マルチメディア系の処理を得意とするシンプルで小型の演算プロセッサコアである。なお、演算プロセッサコア(#1)811乃至(#8)818については、図38を参照して詳細に説明する。
バス802は、EIB(Element Interconnect Bus)と呼ばれる高速なバスであり、制御プロセッサコア801および演算プロセッサコア(#1)811乃至(#8)818のそれぞれが接続され、各プロセッサコアによるデータアクセスはバス802を経由して行われる。
メインメモリ781は、バス802に接続され、各プロセッサコアにロードすべき各種プログラムや、各プロセッサコアの処理に必要なデータを格納するとともに、各プロセッサコアにより処理されたデータを格納するメインメモリである。
グラフィックスデバイス782は、バス802に接続されているグラフィックスデバイスであり、I/Oデバイス783は、バス802に接続されている外部入出力デバイスである。
図37は、本発明の実施の形態における制御プロセッサコア801の一構成例を示す図である。制御プロセッサコア801は、制御プロセッサユニット803および制御プロセッサストレージシステム806を備える。
制御プロセッサユニット803は、制御プロセッサコア801の演算処理を行う核となるユニットであり、マイクロプロセッサのアーキテクチャをベースとする命令セットを備え、一次キャッシュとして命令キャッシュ804およびデータキャッシュ805が搭載されている。命令キャッシュ804は、例えば、32KBの命令キャッシュであり、データキャッシュ805は、例えば、32KBのデータキャッシュである。
制御プロセッサストレージシステム806は、制御プロセッサユニット803からメインメモリ781へのデータアクセスを制御するユニットであり、制御プロセッサユニット803からのメモリアクセスを高速化させるために512KBの二次キャッシュ807が搭載されている。
図38は、本発明の実施の形態における演算プロセッサコア(#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の演算方法について図面を参照して詳細に説明する。
図39は、本発明の実施の形態におけるマルチコアプロセッサ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演算については、図43乃至図46等を参照して詳細に説明する。
図40は、本発明の実施の形態におけるマルチコアプロセッサ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つの命令で行う演算方式である。
図41(a)は、複数のデータに対する処理をそれぞれの命令で行う演算方式の概要を模式的に示す図である。図41(a)に示す演算方式は、通常の演算方式であり、例えば、スカラー演算と呼ばれている。例えば、データ「A1」およびデータ「B1」を加算する命令によりデータ「C1」の処理結果が求められる。また、他の3つの演算についても同様に、同一の行にあるデータ「A2」、「A3」、「A4」と、データ「B2」、「B3」、「B4」とを加算する命令がそれぞれの処理について行われ、この命令により、各行の値が加算処理され、この処理結果がデータ「C2」、「C3」、「C4」として求められる。このように、スカラー演算では、複数のデータに対する処理については、それぞれに対して命令を行う必要がある。
図41(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演算の具体的な演算方法について図面を参照して詳細に説明する。
図42は、本発明の実施の形態における制御プロセッサコア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の算出については、図43乃至図46を参照して詳細に説明する。
二次モーメント行列処理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つ上の解像度の画像について再びオプティカルフローを計算する処理であり、この一連の処理を最も大きい画像に辿り着くまで繰り返し行う。
このように、例えば、図2等に示す特徴点抽出部121により行われる特徴点抽出処理と、オプティカルフロー計算部122により行われるオプティカルフロー算出処理とについては、マルチコアプロセッサ800を用いてSIMD演算によって並列処理することにより処理結果を求めることができる。なお、図42等で示す特徴点抽出処理およびオプティカルフロー算出処理は、一例であり、動画を構成する画像に対する各種フィルタ処理や閾値処理等により構成される他の処理を用いて、マルチコアプロセッサ800によるSIMD演算を行うようにしてもよい。
図43は、本発明の実施の形態におけるメインメモリ781に格納されている画像データ(カメラにより撮像された動画を構成する1つのフレームに対応する画像データ)について、ソベルフィルタ830を用いてフィルタリング処理を行う場合におけるデータ構造と処理の流れを概略的に示す図である。なお、同図に示すメインメモリ781に格納されている画像データについては、横の画素数を32画素として簡略化して示す。また、ソベルフィルタ830は、3×3のエッジ抽出フィルタである。同図に示すように、メインメモリ781に格納されている画像データについて、ソベルフィルタ830を用いたフィルタリング処理を行い、このフィルタリング処理の結果が出力される。この例では、SIMD演算を用いて4つ分のフィルタ結果を一度に得る例について説明する。
図44は、本発明の実施の形態におけるメインメモリ781に格納されている画像データについてソベルフィルタ830を用いてSIMD演算を行う場合におけるデータの流れを概略的に示す図である。最初は、メインメモリ781に格納されている画像データのうちの最初のラインを含む所定数のライン(例えば、3ライン)が演算プロセッサコアのローカルストア821に備えられる第一バッファ831にDMA(Direct Memory Access)転送されるとともに、第一バッファ831にDMA転送された各ラインを1つ下にずらした所定数のラインが第二バッファ832にDMA転送される。このように、ダブルバッファを使用することにより、DMA転送による遅延を補うことができる。
図45は、本発明の実施の形態におけるソベルフィルタ830を用いてフィルタリング処理を行う場合において、第一バッファ831に格納されている画像データから9つのベクトルを作成するベクトル作成方法を概略的に示す図である。図44に示すように、DMA転送が行われた後に、第一バッファ831に格納されている画像データから9つのベクトルが作成される。具体的には、第一バッファ831に格納されている画像データの1ラインにおいて左隅から4つのデータによりベクターデータ841が作成され、その4つのデータを右側に1つずらした4つのデータによりベクターデータ842が作成され、同様に、その4つのデータを右側に1つずらした4つのデータによりベクターデータ843が作成される。また、2ラインおよび3ラインにおいても同様に4つのデータによりベクターデータ844乃至849が作成される。
図46は、本発明の実施の形態におけるソベルフィルタ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が算出された後は、図44に示す第一バッファ831に格納されている画像データにおいて、取り出すデータの位置を右側に1つずらしながら、同様の処理を繰り返し実行して、それぞれのベクトルDの算出を順次行う。そして、図44に示す第一バッファ831に格納されている画像データの右端までの処理が終了した場合には、処理結果をメインメモリ781にDMA転送する。
続いて、メインメモリ781に格納されている画像データのうちで、第二バッファ832にDMA転送された各ラインを1つ下にずらした所定数のラインが第一バッファ831にDMA転送されるとともに、第二バッファ832に格納されている画像データについて、上述した処理を繰り返し行う。そして、メインメモリ781に格納されている画像データの各ラインのうちの下端のラインに達するまで、同様の処理を繰り返し行う。
同様に、特徴点抽出とオプティカルフロー算出の大部分の処理をSIMD演算により行うことによって高速化を実現することができる。
図47は、本発明の実施の形態におけるカメラワークパラメータ算出処理の流れを時系列で概略的に示す図である。上述したように、例えば、マルチコアプロセッサ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」とすることができる。
次に、本発明の実施の形態におけるメタデータファイルを用いた動画コンテンツを再生する場合について図面を参照して詳細に説明する。
図48(a)は、記録媒体の一例であるブルーレイディスク(Blu-ray Disc(登録商標))880を模式的に示す上面図であり、図48(b)は、ブルーレイディスク880に記録されている各データ881乃至884を模式的に示す図である。ブルーレイディスク880には、例えば、カメラ等により撮像された動画である動画コンテンツ882、動画コンテンツ882の字幕883、および、動画コンテンツ882について解析されて得られたメタデータ(例えば、図5(b)に示すメタデータファイル)884とともに、本発明の実施の形態における動画再生に係るJava(登録商標)プログラム881が記録されている。
図48(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枚のパノラマ状の合成画像を作成することができる。なお、露出補正を画像処理によってキャンセルする場合、例えば、画像が真っ白になってしまう可能性もあるため、動画の内容に応じて補正を行うようにすることが好ましい。
以上で示したように、本発明の実施の形態では、動画を再生する場合に、現在表示されている画像よりも前のフレームに対応する各画像を現在の画像に合成しながら表示するため、撮影の中心となっている対象物とともに、少なくとも一部の時間帯で撮影された背景等を容易に閲覧することができる。このため、例えば、少なくとも一部の時間帯で撮影された背景等を再度見たい場合には、巻き戻し操作や検索操作等をしなくても、現在表示されている画像と同時にその背景等を見ることができる。また、カメラにより撮影された動画を閲覧する場合に、その動画の内容を容易に把握することができる。さらに、動画の相対的な関係を容易に把握することができるとともに、動画の空間的な広がりを閲覧者が容易に認識することができる。
すなわち、過去のフレームを活用して、動画を空間的に展開して鑑賞することができる。これにより、例えば、複数の動画を再生しながらパノラマ画像を完成させていくような鑑賞方法を提供することができるため、閲覧者は面白み豊かに動画を観賞することができる。また、現画像については、画像メモリに220に保存される前の状態の画像を順次表示させることができるため、比較的綺麗な画像を表示させることができる。さらに、シーンが切り換わる場合やアフィン変換パラメータが適切に算出されなかった場合等には、アフィン変換パラメータの補正、または、合成画像の分割を行うため、合成中の動画が破綻することを抑制するとともに、パノラマ状に形成される合成画像の品質を高めることができる。
また、本発明の実施の形態では、予め検出されたアフィン変換パラメータを用いて再生表示をする例について説明したが、再生の際にアフィン変換パラメータを算出し、この算出されたアフィン変換パラメータを用いて再生表示をするようにしてもよい。例えば、マルチコアプロセッサを用いたSIMD演算によりアフィン変換パラメータを算出することにより、1フレームのデコードの処理時間内に、1フレームのアフィン変換パラメータを算出することが可能である。これにより、アフィン変換パラメータが算出されていない動画を再生する場合でも、アフィン変換パラメータを算出しながら動画再生を行うことが可能であるため、動画を空間的に展開する鑑賞を迅速に行うことができる。
また、本発明の実施の形態では、複数の動画ファイルを動画記憶部200に記憶するとともに、この動画に対応するアフィン変換パラメータを、対応する動画およびフレームと関連付けてメタデータファイルとしてメタデータ記憶部210に記憶する例について説明したが、動画と、この動画に対応するアフィン変換パラメータとを関連付けて動画ファイルとして動画記憶部に記録しておき、再生時には、動画ファイルから各情報を抽出して用いるようにしてもよい。
また、例えば、ハイビジョンTV(Television)において、SD(Standard Definition)画質で撮影された動画を鑑賞する場合や、デジタルスチルカメラや携帯電話の動画保存機能等を用いて撮影された動画を鑑賞する場合において、元の画像サイズの状態で表示すると、ハイビジョンTVの画素数を生かせないことがある。また、拡大表示を行うと、画像の粗さが目立つことが多い。そこで、本発明の実施の形態において説明した表示をすることによって、画像の粗さを目立たせることなく、ハイビジョンTVの画素数を生かした鑑賞をすることができる。
なお、画像合成部190により合成された合成画像を記録媒体等に記録して、他の再生表示に用いるようにしてもよい。例えば、合成画像を代表画像としてメタデータ記憶部210のメタデータファイルに記憶しておき、この合成画像を再生時における検索に用いることができる。このように、合成画像を代表画像として用いる場合には、動画ファイルを構成する全てのフレームについて合成画像作成処理を繰り返す代わりに、動画ファイルを構成するフレームの中の少なくとも一定数のフレームについて合成画像作成処理を繰り返して合成画像を作成し、この合成画像を代表画像として用いるようにしてもよい。また、本発明の実施の形態では、動画を構成する先頭のフレームから合成画像作成処理を繰り返して合成画像を作成する例について説明したが、例えば、最後のフレームから先頭のフレームに向かって合成画像作成処理を繰り返して合成画像を作成するようにしてもよい。この場合には、時間軸において古い画像が新しい画像の上に順次重ねて合成される。このため、分割が行われた付近では、分割直前のシーンが目立つおそれがある。そこで、例えば、代表画像として用いられる合成画像を作成する場合には、全てのフレームにより作成しなくてもよいため、分割が行われた際にはこの付近の前後の数フレームを合成の対象から除外するようにしてもよい。
また、形成される合成画像に対応する空間である撮像空間上における重複率に基づいて動画のインデックス画像を抽出する場合についても、本発明の実施の形態を適用することができる。すなわち、補正または分割後の画像を重複率の判断の対象とすることができる。
また、本発明の実施の形態では、現フレームの前のフレームに対応する合成画像を表示させておく例について説明したが、この合成画像については、時間の経過に応じて順次消去するようにしてもよい。この場合に、残像を残して消去するような演出を施すようにしてもよい。また、現フレームに対応する画像についてはカラー表示するとともに、現フレームの前のフレームに対応する合成画像については、時間の経過に応じて、カラー表示からセピア色に変更するような演出を施すようにしてもよい。また、分割後のシーンが再生されると同時に、分割前のシーンの合成画像を少しずつぼかしていくようにしてもよい。これにより、合成画像についてスムーズなシーンの切り替えが可能である。なお、この場合に、新しいシーンの先頭画像が画面上のある固定位置に戻るようにしてもよい。
また、本発明の実施の形態では、画像合成部により合成された画像を表示部に表示する画像処理装置を例にして説明したが、画像合成部により合成された画像を他の画像表示装置において表示させるための画像情報を出力する画像出力手段を設けた画像処理装置に本発明の実施の形態を適用することができる。さらに、動画を再生することが可能な動画再生装置や撮影された動画を再生することが可能なデジタルビデオカメラ等の撮像装置等に本発明の実施の形態を適用することができる。
また、本発明の実施の形態では、カメラにより撮像された動画について説明したが、例えば、カメラにより撮像された動画が編集された場合における編集後の動画やアニメーション等が合成された動画等についても、本発明の実施の形態を適用することができる。また、本発明の実施の形態では、履歴画像の一部または全部を表示する例について説明したが、変換された複数の現画像のみを表示させるようにしてもよい。すなわち、画像メモリに最後に保持された複数の現画像のみを順次表示させるようにしてもよい。
また、本発明の実施の形態では、動画を構成する画像の面積に対する動物体の大きさが比較的小さい場合にカメラの動きを求め、このカメラの動きを利用して動画を再生する場合について説明した。しかしながら、動画を構成する画像の面積に対する動物体の大きさが比較的大きい場合についても、本発明の実施の形態を適用することが可能である。例えば、駅を出発する電車を被写体の中心としてその電車の画像面積に対する割合を大きく撮像した場合に、上述したアフィン変換パラメータを算出すると、電車の動きを算出することになる。この場合に、この電車の動きを利用して、上述した合成画像作成方法により合成画像を作成することができる。このように、動画を構成する画像を変換するための変換情報として、撮像時におけるカメラと被写体との相対的な動き量に関する動き情報を算出して用いることができる。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、以下に示すように特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
すなわち、請求項1において、動画記憶手段は、例えば動画記憶部200に対応する。また、変換情報記憶手段は、例えばメタデータ記憶部210に対応する。また、画像保持手段は、例えば画像メモリ220に対応する。また、特徴量抽出手段は、例えば特徴量抽出部150に対応する。また、画像変換手段は、例えば画像変換部180に対応する。また、判定手段は、例えば合成画像分割判定部170に対応する。また、画像合成手段は、例えば画像合成部190に対応する。
また、請求項8において、動画記憶手段は、例えば動画記憶部200に対応する。また、変換情報記憶手段は、例えばメタデータ記憶部210に対応する。また、画像保持手段は、例えば画像メモリ220に対応する。また、判定手段は、例えば合成画像分割判定部170に対応する。また、画像変換手段は、例えば画像変換部180に対応する。また、画像合成手段は、例えば画像合成部190に対応する。
また、請求項10、11において、動画記憶手段は、例えば動画記憶部200に対応する。また、変換情報記憶手段は、例えばメタデータ記憶部210に対応する。また、画像保持手段は、例えば画像メモリ220に対応する。また、特徴量抽出手段は、例えば特徴量抽出部150に対応する。また、変換情報補正手段は、例えば変換情報補正部160に対応する。また、画像変換手段は、例えば画像変換部180に対応する。また、画像合成手段は、例えば画像合成部190に対応する。
また、請求項13において、特徴量抽出手段は、例えば特徴量抽出部150に対応する。また、判定手段は、例えば合成画像分割判定部170に対応する。また、画像合成手段は、例えば画像変換部180および画像合成部190に対応する。
また、請求項14において、動画記憶手段は、例えば動画記憶部200に対応する。また、変換情報記憶手段は、例えばメタデータ記憶部210に対応する。また、画像保持手段は、例えば画像メモリ220に対応する。また、特徴量抽出手段は、例えば特徴量抽出部150に対応する。また、画像変換手段は、例えば画像変換部180に対応する。また、判定手段は、例えば合成画像分割判定部170に対応する。また、画像合成手段は、例えば画像合成部190に対応する。また、表示制御手段は、例えば表示制御部250に対応する。
また、請求項15または16において、画像変換手順は、例えばステップS929に対応する。また、判定手順は、例えばステップS950に対応する。また、画像合成手順は、例えばステップS930に対応する。
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。