(1)実施例の構成
図2は、本発明の実施例1の画像処理装置である手振れ補正装置を示すブロック図である。この手振れ補正装置1は、ビデオカメラ2で撮影したビデオ信号SVをダウンロードしてハードディスク装置(HDD)3に記録する。またこのハードディスク装置3に記録したビデオ信号SVを手振れ補正して外部機器に出力する。
ここでこの手振れ補正装置1において、中央処理ユニット(CPU)4は、リードオンリメモリ(ROM)5の記録に従ってランダムアクセスメモリ(RAM)6にワークエリアを確保してハードディスク装置3に記録された所定の処理プログラムを実行し、ビデオ信号SVの手振れ補正処理を実行する。またこの一連の処理において、モニタ9にグラフカルユーザーインターフェースを表示してユーザーの操作を受け付け、さらには手振れ補正結果を表示する。インターフェース(I/F)10は、このビデオ信号SVの入出力に係る入出力回路である。なおこの中央処理ユニット4が実行するプログラムは、この手振れ補正装置1に事前にインストールして提供するようにしてもよく、またこれに代えて光ディスク、磁気ディスク、メモリカード等の各種記録媒体に記録して提供するようにしてもよく、さらにはインターネット等のネットワークを介したダウンロードにより提供するようにしてもよい。
図3は、この中央処理ユニット4の処理手順を示すフローチャートである。中央処理ユニット4は、オペレータの操作に従ってこの処理手順を開始し、ステップSP1からステップSP2に移る。このステップSP2で、中央処理ユニット4は、ユーザーの指示したビデオ信号SVのファイルをビデオカメラ2からダウンロードしてハードディスク装置3に格納する。
また中央処理ユニット4は、続くステップSP3のフレーム間カメラ動き算出処理により、ハードディスク装置3にダウンロードしたビデオ信号SVを処理し、ビデオカメラ2の動きをビデオ信号SVの画像上で示すカメラ動きベクトルMVCTを検出する。すなわち中央処理ユニット4は、ハードディスク装置3にダウンロードしたビデオ信号SVをIP変換して順次フレーム単位で読み出しながら、フレーム間で動きベクトルを検出する。なおここでIP変換は、インターレーススキャンからプログレッシブスキャンへの変換であり、ハードディスク装置3へのダウンロード時に実行してもよい。
さらに中央処理ユニット4は、検出した動きベクトルを処理して、図4に示すように、ビデオ信号SVによる入力画像21上でカメラの動きを示すカメラ動きベクトルMVCを検出する。なお図4は、入力画像21、処理結果である出力画像24におけるカメラの動きを水平方向のみについて示す図である。このカメラ動きベクトルMVCは、手振れとカメラワークとによるテレビジョンカメラの動きをビデオ信号SVの画像上で示すことになる。
さらに中央処理ユニット4は、続くステップSP4において、この検出したカメラ動きベクトルMVCを処理して、カメラ動きベクトルMVCから手振れ成分を除いたカメラワークのみによるカメラ動きベクトルMVCTを計算する。中央処理ユニット4は、手振れとカメラワークとによるカメラ動きベクトルMVCと、カメラワークのみによるカメラ動きベクトルMVCTとをカメラ動き情報としてメモリに記録して保持する。なおこの図4は、カメラ動きベクトルMVCを平滑化してカメラワークのみによるカメラ動きベクトルMVCTを求めた例であり、この実施例におけるカメラワークのみによるカメラ動きベクトルMVCTの求め方の詳細は、後述する。
このステップSP4において、中央処理ユニット4は、さらにカメラ動きベクトルMVC、MVCTを用いて、手振れ補正用の補正ベクトルΔMVを順次計算する。また図5に示すように、ハードディスク装置3に記録したビデオ信号SVを順次読み出して補正ベクトルΔMVで動き補正し、出力画像24を生成する。なお中央処理ユニット4は、この動き補正処理によって入力画像21を割り当てることが困難となった部位(図5でハッチングで示す領域)については、この部位を切り捨て、出力画像24のサイズに合うようにスケーリングする。なおこの場合、この部位を黒レベルに設定し、違和感を防止するようにしてもよい。
中央処理ユニット4は、このステップSP4の処理により手振れ補正したビデオ信号を生成し、続くステップSP5で、このビデオ信号をモニタ装置等の外部機器に出力した後、ステップSP6に移ってこの処理手順を終了する。
この図2に示す処理手順の実行により、中央処理ユニット4は、図6に示す機能ブロックを構成する。なおここでフレーム間カメラ動き情報検出部22は、ステップSP3の処理に対応する機能ブロックであり、ビデオ信号SVによる入力画像21から手振れ及びカメラワークによるカメラ動きベクトルMVCを検出し、カメラ動きベクトルMVCをカメラ動き情報としてメモリ23に格納する。また手振れ補正補間部25は、ステップSP4の処理に対応する機能ブロックであり、メモリ23に格納したカメラ動き情報MVCを用いて補正ベクトルΔMVを計算して入力画像21を手振れ補正する。なお図6との対比により図7に示すように、ビデオ信号SVによる入力画像21の全フレームからカメラ動きベクトルMVCを検出した後、改めて入力画像21の手振れを補正する代わりに、カメラ動きベクトルMVCを検出した入力画像21をフレームメモリ26に保持して手振れ補正するようにして、所定フレーム数単位で、カメラ動きベクトルMVCを検出しながら入力画像21を手振れ補正してもよい。
図8は、図3のステップSP3の処理手順を詳細に示すフローチャートである。中央処理ユニット4は、この処理手順を開始すると、ステップSP11からステップSP12に移り、動きベクトル算出処理を実行する。中央処理ユニット4は、この動きベクトル算出処理により、IP変換しながら入力画像21を入力し、KLT法を利用した特徴点の追跡により入力画像21の各部で動きベクトルを検出する。
また続くステップSP13における動きベクトル解析処理により、中央処理ユニット4は、ステップSP12で検出した動きベクトルを解析する。中央処理ユニット4は、この動きベクトルの解析において、ステップSP12で検出した1フレームの動きベクトルを集計して2次元のヒストグラムを求める。
また中央処理ユニット4は、このヒストグラムから、背景に相当する動きベクトルのグループを検出する。具体的に、中央処理ユニット4は、このヒストグラムから度数分布のピーク値の個所を検出することにより、最もサンプル数が多く集中している動きベクトルのグループを検出し、このグループを背景のグループとする。中央処理ユニット4は、続くステップSP14のカメラ動き計算処理で、この背景のグループに属する動きベクトルを平均値化し、手振れ及びカメラワークによるカメラ動きベクトルMVCを計算する。従ってこの実施例では、入力画像中で背景が最も大きな面積を占めるとの仮定に基づいて背景を検出し、この背景の動きからカメラ動きベクトルMVCを検出する。
続いて中央処理ユニット4は、ステップSP15に移り、全てのフレームの処理を完了したか否か判断する。ここで否定結果が得られると、中央処理ユニット4は、ステップSP16に移り、動きベクトルの検出対象を次フレームに設定した後、ステップSP12に戻り、動きベクトル検出処理を実行する。これに対してステップSP15で肯定結果が得られると、ステップSP15からステップSP17に移ってこの処理手順を終了する。
この図8の処理手順の実行により、中央処理ユニット4は、図9に示す機能ブロックを構成する。ここで動きベクトル算出部31は、ステップSP12の処理に対応する機能ブロックであり、入力画像21の各部で動きベクトルを検出する。また動きベクトル解析部32は、ステップSP13に対応する機能ブロックであり、動きベクトル算出部31で算出した動きベクトルを解析してヒストグラムを計算し、背景の動きベクトルを検出する。カメラ動き算出部33は、ステップSP14に対応する機能ブロックであり、手振れ及びカメラワークによるカメラ動きベクトルMVCを計算する。
(1−1)動きベクトル算出処理
図10は、図8におけるステップSP12の動きベクトル算出処理を詳細に示すフローチャートである。中央処理ユニット4は、この処理手順を開始すると、ステップSP21からステップSP22に移る。ここで中央処理ユニット4は、ハードディスク装置3から1フレーム分のビデオ信号SVを入力して現フレームに設定する。
また続くステップSP23において、中央処理ユニット4は、ブロックリストを作成する。ここで図12(A)に示す入力画像21との対比により図12(B)に示すように、中央処理ユニット4は、この動きベクトル算出処理において、入力画像を水平方向及び垂直方向に複数のブロックに分割し、各ブロックに設定した特徴点の追跡により動きベクトルを検出する。より具体的に、中央処理ユニット4は、1つのブロックにNfp個の特徴点を設定し、1フレームでNtot個の特徴点を設定する。入力画像21がVGA(Video Graphics Array)サイズの場合、各ブロックの特徴点数Nfp及び1フレームの特徴点数Ntotは、それぞれ20個及び300個に設定される。従って中央処理ユニット4は、入力画像21がVGAサイズの場合、この入力画像を水平方向及び垂直方向にそれぞれ5分割及び3分割して15(=300/20)個のブロックを設定する。なお図面上では、水平方向及び垂直方向に6個及び4個に分割して示す。
ブロックリストは、このようにして設定した各ブロックに関する情報を記録したリストであり、この実施例では各ブロックの位置情報、大きさの情報、特徴点の数等が含まれる。なおここで各ブロックの位置情報は、例えば各ブロックのラスタ操作開始端の座標Ci(x、y)であり、大きさの情報は、水平方向及び垂直方向の画素数Si(x、y)である。なおここで(x、y)は、ラスタ走査の開始端のブロックを基準にして水平方向及び垂直方向のブロックの位置を示す変数である。
従ってビデオ信号SVの先頭1フレームを処理する場合、ブロックリストには、分割した各ブロックに何ら特徴点が設定されていないことが記録される。これに対して先頭1フレーム以外では、現フレームで各ブロックに含まれている特徴点の数がそれぞれ各ブロックに記録されてブロックリストが作成される。
なお中央処理ユニット4は、先頭1フレーム以外のフレームでは、前フレームのブロックリストのコピーを取り、このブロックリストの内容を更新してブロックリストを作成する。
続いて中央処理ユニット4は、ステップSP24に移り、現フレームが初期フレームか否か、すなわち現フレームが先頭1フレームか否か判断する。
ここで肯定結果が得られると、中央処理ユニット4は、ステップSP24からステップSP25に移り、特徴点選択処理を実行する。ここで特徴点選択処理は、全体の特徴点数が1フレームの特徴点数Ntotを越えない範囲で、特徴点数の少ないブロックから順次特徴点を設定する処理である。従って初期フレームでは、何れのブロックにも特徴点が設定されておらず、また全体の特徴点数も0個であることから、中央処理ユニット4は、各ブロックにそれぞれNfp個の特徴点を設定する。従って初期フレームの場合、特徴点選択処理は、各ブロックに一定数Nfpの特徴点を設定する特徴点初期設定処理を構成する。
これに対して先頭1フレーム以外のフレームでは、既に特徴点が存在することから、中央処理ユニット4は、このステップSP25において、このように全体の特徴点数が1フレームの特徴点数Ntotを越えない範囲で、特徴点数の少ないブロックから順次特徴点を設定することにより、ブロック間における特徴点の分布の偏りを補正する。すなわち例えば図13において、矢印Aにより示すように画面左側から右側に移動する人物を追跡するように、矢印Bにより示すようにカメラ全体をパンさせたとする。この場合、図13との対比により図14に示すように、画面左隅の符号PAで示す特徴点は、カメラのパンにより現フレームで検出できなくなる。またこの画面左隅では、それまで人物に隠れていた背景が現れることなる。従ってこの画面左隅のブロックでは、続くフレームで特徴点を追跡できなくなり、続くフレームを現フレームとして処理する際に特徴点の数が減少することになる。
また符号PBで示す画面中央の特徴点は、人物の移動により人物によって隠れるようになり、これらの特徴点も現フレームでは検出できなくなる。またこの場合、人物の移動によりこの人物で隠される部分のブロックでは、人物の移動に伴って前フレームの特徴点が含まれるようになる。その一方で、カメラのパンにより背景側の特徴点が、この人物で隠された部分のブロックに含まれるようになり、この部分のブロックでは前フレームより特徴点が増大することになる。また画面右隅のブロックも、それまで前フレームでは画面の外側に位置していた背景が現フレームで撮影されることになることから、特徴点の数が減少することになる。これにより特徴点の空間的な分布に偏りが生じ、動きベクトルの検出に偏りが発生する。
そこで中央処理ユニット4は、追跡困難となった特徴点を削除し、またKLT法による特徴点の追跡により隣接する特徴点との間の距離が短くなった特徴点を削除する。またこれらの削除により1フレームの特徴点数Ntotに不足する特徴点を追加設定するようにして、この特徴点の追加設定において、特徴点の分布の偏りを補正する。具体的に、図14との対比により図15に示すように、例えば各ブロックの特徴点数Nfpが値2の場合に、特徴点数が1以下のブロックについて、中央処理ユニット4は、図16に示すように、特徴点を追加設定する。これにより各ブロックは、特徴点数が元の数2に近づくように特徴点が追加設定され、特徴点の分布の偏りが補正される。なおこの図16では、特徴点を追加設定するブロックをハッチングにより示す。なおKLT法による隣接する特徴点との間の距離が短くなった特徴点の削除は、事前に、ステップSP28の特徴点追跡、動きベクトル計算処理により実行する。この特徴点の削減手法は、現フレームに一定距離以上近接した特徴点が複数存在する場合、特徴度の低い側の特徴点を削除する処理である。特徴度については、特徴点抽出処理で詳述する。
中央処理ユニット4は、処理対象画像をブロックに分割して各ブロックに特徴点を設定して動きベクトルを検出するようにして、この特徴点選択処理により各ブロックで変化する特徴点数を補正し、特徴点の分布の偏りを補正する。中央処理ユニット4は、このステップSP25の処理を実行すると、ステップSP26に移り、現フレームを前フレームに設定した後、ステップSP27に移ってこの処理手順を終了する。
これに対して先頭1フレーム以外では、ステップSP24で否定結果が得られることにより、中央処理ユニット4は、ステップSP24からステップSP28に移る。
このステップSP28で、中央処理ユニット4は、前フレームの各ブロックに設定されている特徴点を追跡して現フレーム上で対応する特徴点を検出する。また図14に示すように、この対応する特徴点と前フレームの特徴点との間の差分値を検出することにより、各特徴点の動きベクトルMVを計算し、この動きベクトルMVをメモリ23に記録して保持する。このとき特徴点の追跡により、現フレームに一定距離以上近接した特徴点が存在する場合、特徴度の低い側の特徴点を削除する。なお特徴度に代えて、特徴点としての信頼性を示す信頼度を基準にして削除してもよく、ランダムに削除してもよい。また追跡困難な特徴点についても、削除する。
続いて中央処理ユニット4は、ステップSP25に移り、各ブロックにおける特徴点の分布の偏りを補正した後、ステップSP26の処理手順を実行し、ステップSP27に移ってこの処理手順を終了する。
この図10に示す処理手順の実行により、中央処理ユニット4は、図11に示す機能ブロックを構成する。ここでフレーム読み込みモジュール41は、図10のステップSP22に対応する機能ブロックであり、新たに取得した処理対象のフレームを現フレームに設定する。ブロック分割モジュール42は、ステップSP23に対応する機能ブロックであり、現フレームの画像を複数のブロックに分割し、ブロックリストを作成する。特徴点総合モジュール44は、ステップSP25及びSP28に対応する機能ブロックであり、特徴点抽出手段43は、特徴度に基づいて特徴点を選択する機能ブロックである。反復準備モジュール45は、ステップSP26に対応する機能ブロックである。なおここで特徴点情報は、各特徴点の現フレームにおける座標、動きベクトル等の情報である。
また特徴点総合モジュール44は、図17に示すように、ステップSP28における特徴点追跡処理と動きベクトル計算処理とにそれぞれ対応する特徴点追跡手段46及び特徴点動きベクトル算出手段47の機能ブロックと、ステップSP25の処理に対応する特徴点選択手段48の機能ブロックとを構成する。この実施例ではこの特徴点総合モジュール44における処理に、KLT法が利用される。
図18及び図19は、図10のステップSP25で説明した特徴点選択処理を詳細に示すフローチャートである。中央処理ユニット4は、この処理手順を開始すると、ステップSP31からステップSP32に移る。ここで中央処理ユニット4は、現フレームの特徴点数が1フレームの特徴点数Ntot未満か否か判断する。ここで中央処理ユニット4は、特徴点追跡、動きベクトル計算処理で特徴点が削除されている場合、このステップSP32で肯定結果を得ることができる。
これにより中央処理ユニット4は、このステップSP32で否定結果が得られると、ステップSP32からステップSP33に移ってこの処理手順を終了する。
これに対してステップSP32で肯定結果が得られると、中央処理ユニット4は、ステップSP32からステップSP34に移る。ここで中央処理ユニット4は、ブロックリストから所定の項目をコピーして、特徴点選択処理の作業用リストを作成する。ここでこの作業用リストは、各ブロックを特定する情報、各ブロックの特徴点数、全体の特徴点数を記録して作成される。中央処理ユニット4は、メモリ23に記録して保持した特徴点の座標値を判定してこの作業用リストを作成する。
中央処理ユニット4は、作業用リストを作成すると、ステップSP35に移り、特徴点の数が当初の設定数であるNfp個以上のブロックを、この作業用リストから削除し、このブロックを処理対象から除外する。これにより図20(A)に示すように、例えばブロックb1〜b9の特徴点数がそれぞれ10、0、8、1、5、4、3、5、1個の場合であって、当初の設定数Nfpが6個の場合、図20(B)に示すように、ブロックb1、b3の記録を作業用リストから削除する。なおこの例では、総合の個数Ntotを60個とする。従って現在、23個の特徴点が全体として不足していることになる。なお当然のことながら先頭1フレームでは、各ブロックの特徴点数は、0個であり、この場合、全体として特徴点が60個不足していることになる。
続いて中央処理ユニット4は、ステップSP36に移り、この作業用リストに記録されたブロックを、特徴点数でグループ化し、ソート処理により特徴点数が少ないグループの順に配列を変更する。中央処理ユニット4は、この特徴点数が少ないグループの順に配列を変更することにより、処理の優先順位を設定する。すなわち図20(B)の例によれば、図20(C)に示すように、特徴点数が0個のブロックb2による第1のグループG1、特徴点数が1個のブロックb4、b9による第2のグループG2、特徴点数が3個のブロックb7による第3のグループG3、特徴点数が4個のブロックb6による第4のグループG4、特徴点数が5個のブロックb5、b8による第5のグループG5にグループ化する。
続いて中央処理ユニット4は、ステップSP37に移り、各グループ内の配列をランダマイズする。続いて中央処理ユニット4は、ステップSP38に移り、現在の特徴点数が総合の個数Ntot以上か否か判断する。ここで肯定結果が得られると、中央処理ユニット4は、ステップSP38からステップSP33に移ってこの処理手順を終了する。
これに対してステップSP38で否定結果が得られると、ステップSP38からステップSP39に移る。
このステップSP39で、中央処理ユニット4は、作業用リストの先頭に記録されているブロックを特徴点の設定対象に設定する。また続くステップSP40において、この設定対象のブロックに特徴点を1つ設定する。なおこの特徴点の設定は、特徴点抽出処理により1つの特徴点を抽出して実行される。
続いて中央処理ユニット4は、ステップSP41に移り、当該ブロックの特徴点数が当初の設定数Nfpとなったか否か判断する。ここで特徴点を1個追加したにも係わらず、特徴点数が当初の設定数Nfpより小さい場合、中央処理ユニット4は、ステップSP41で否定結果が得られ、ステップSP41からステップSP42に移る。
このステップSP42で、中央処理ユニット4は、特徴点の追加設定に対応するように当該ブロックの特徴点数を更新し、作業用リストにおけるグループ分けを更新する。従って当該ブロックは、特徴点の追加設定により、特徴点数が次のグループに属するように作業用リストの記録が更新される。中央処理ユニット4は、この特徴点数が次のグループに属するように、当該グループの記録を作業用リスト上で更新する際に、当該ブロックについては、次のグループの末尾に配置する。従って図20(C)の例では、図20(D)に示すように、それまで特徴点が0個の第1のグループG1に属していたブロックb2に特徴点を追加設定し、このブロックb2の記録を、続く特徴点数が1個の第2のグループG2の末尾に記録する。
このようにして1つのブロックに特徴点を1個追加設定すると、中央処理ユニット4は、ステップSP38に戻る。これに対してステップSP41で肯定結果が得られると、この場合、当該ブロックの記録を作業用リストから削除した後、ステップSP38に戻る。これにより中央処理ユニット4は、全体の特徴点数が総合の個数Ntotとなるまで、特徴点数が少ないグループからランダムに、順次ブロックを選択して特徴点を追加設定する。
従って図20(D)の例では、続く第2のグループG2の先頭ブロックb4に特徴点を追加設定し、このブロックb4の記録を続く第3のグループG4のブロックb7の次に配置する。
なお中央処理ユニット4は、ステップSP40の処理により特徴点抽出処理で特徴点を抽出できなかった場合、ステップSP41からステップSP43に移り、当該ブロックを作業用リストから削除してステップSP38に戻る。
この図18及び図19の処理により、中央処理ユニット4は、図21に示す機能ブロックを構成する。ここでランダムシャッフル49は、作業リストにおける各グループの配列をランダマイズさせる機能ブロックである。
図22は、特徴点抽出処理を示すフローチャートである。なお中央処理ユニット4は、この特徴点抽出処理を実行するために、別途、各フレームで特徴点リスト、特徴点マップを作成する。ここで特徴点リストは、特徴点の候補のリストであり、特徴点の候補の特徴度と座標値のリストで形成される。ここで特徴度は、特徴点らしさを示す変数である。中央処理ユニット4は、KLT法により入力画像の各画素で特徴度を検出し、所定値以上の特徴度を有する画素の座標値を検出して特徴点の候補を選択する。さらにこの座標値を特徴度の大きい順にソートして特徴点リストを作成する。
具体的に、中央処理ユニット4は、次式の演算処理により得られる固有値α1、α2から値の小さい固有値を選択して特徴度とする。なおここでIxは、画素値の水平方向の微分値であり、Iyは、画素値の垂直方向の微分値である。また(1)式における演算範囲は、処理対象の画素を中心にした垂直方向、水平方向に所定範囲であり、この所定範囲は、例えば7×7画素の範囲である。この(1)式の処理により、中央処理ユニット4は、特徴点近辺における画素値の勾配のばらつきを計算し、このばらつきの激しさを示す変数を特徴度に設定する。従って例えば輝度変化の無い平坦な部分では、特徴点リストに特徴点が記録されないことになる。なおここでこの(1)式における(x、y)は、画素の座標である。
これに対して特徴度マップは、入力画像の画素の配列に対応するように特徴度を配列したマップである。特徴度マップは、特徴点リストに登録されていない、一定値以上、特徴度が小さい画素については、特徴度が値0に丸めて記録される。特徴点リストは、特徴点に適した画素を優先的に選択するために使用され、特徴度マップは、特徴点リストで選択した候補を特徴点と設定する際の、周囲の状況を判定するために使用される。
中央処理ユニット4は、特徴点選択処理(図19、ステップSP40)からの要求によりこの処理手順を開始してステップSP51からステップSP52に移り、特徴点リストが空か否か判断する。ここで肯定結果が得られると、中央処理ユニット4は、ステップSP52からステップSP53に移り、特徴点の抽出不成功を特徴点選択処理に通知した後、ステップSP54に移ってこの処理手順を終了する。
これに対して特徴点リストに特徴点の候補が残っている場合、中央処理ユニット4は、ステップSP52で否定結果が得られ、ステップSP55に移る。ここで中央処理ユニット4は、特徴点リストの先頭に記録された特徴点の候補を選択する。また続くステップSP56において、ブロックリストを参照し、当該特徴点の候補が、特徴点を設定するブロックに存在するか否か判断する。ここで否定結果が得られると、中央処理ユニット4は、ステップSP56からステップSP57に移り、さらに特徴点の候補が特徴点リストに存在するか否か判断する。ここで否定結果が得られると、中央処理ユニット4は、ステップSP53に移って特徴点の抽出不成功を特徴点選択処理に通知した後、ステップSP54に移ってこの処理手順を終了する。
これに対してさらに特徴点の候補が特徴点リストに残っている場合、中央処理ユニット4は、ステップSP57で肯定結果が得られ、ステップSP57からステップSP58に移る。ここで中央処理ユニット4は、特徴点リストに記録された次の候補を選択し直し、ステップSP56に戻る。これにより中央処理ユニット4は、特徴点リストの記録を特徴度の高い順に順次スキャンして、特徴点を設定するブロックに属する特徴点の候補を検出する。
またこのような特徴点の候補が検出されると、中央処理ユニット4は、ステップSP56で肯定結果が得られ、ステップSP56からステップSP59に移る。ここで中央処理ユニット4は、特徴点追跡、動きベクトル計算処理で追跡に成功して、現フレームに既に存在する特徴点が、この候補を中心にした周囲、一定距離Δfpの範囲に存在するか否か判断する。ここで肯定結果が得られると、この場合、既存の特徴点の近傍に、特徴点を設定してしまうことになる。従ってこのステップSP59で肯定結果が得られると、中央処理ユニット4は、ステップSP57に移り、さらに特徴点の候補が特徴点リストに残っているか否か判断する。
これに対して特徴点の候補の周囲、一定の範囲に既存の特徴点が存在しない場合、中央処理ユニット4は、ステップSP59で否定結果が得られ、ステップSP60に移る。ここで中央処理ユニット4は、この特徴点候補の選択に対応するように特徴点リスト、特徴度マップの記録を更新する。具体的に、中央処理ユニット4は、当該特徴点の候補を中心にした、一定距離Δfpの範囲で、特徴度マップにおける特徴度を無効に設定する。なおこの無効に設定する処理は、特徴度マップ上でこの範囲の特徴度を負の値に設定して実行される。またこの無効の設定に対応するように、この一定範囲に含まれている特徴点の候補を特徴点リストから除外する。これにより中央処理ユニット4は、選択した特徴点の候補の周囲、一定の距離Δfpの範囲では、さらなる特徴点を選択できないように設定する。
続いて中央処理ユニット4は、ステップSP61に移り、ここで当該特徴点の候補を特徴点選択処理に通知し、ステップSP54に移ってこの処理手順を終了する。なお中央処理ユニット4は、この図22のステップSP61で通知された特徴点の候補を、図19のステップSP40で特徴点に設定する。
この図22の処理により、中央処理ユニット4は、図23に示すように、特徴点リスト52、特徴度マップ53を用いて特徴点を検出する特徴点抽出手段43を構成する。
なおステップSP59の処理において、周囲に特徴点が存在するか否かを判定するためには、この図22の処理手順を実行する毎に、既存の特徴点の記録を検索することになる。従ってこの図22の処理を繰り返す場合に、中央処理ユニット4は、処理の負担が大きくなる。従ってこの既存の特徴点の情報を特徴度マップ、特徴点リストの記録に反映させるようにして、処理の負担を軽減するようにしてもよい。具体的には、ステップSP60における特徴点リスト、特徴度マップの更新処理と同一の処理を、既存の特徴点に適用することが考えられ、このようにすれば処理を高速度化することができる。
(1−2)動きベクトル解析処理
図24は、上述の動きベクトル算出処理で検出されて、動きベクトル解析処理に渡される特徴点情報を示す図表である。この特徴点情報は、特徴点毎に、特徴点の座標P(x,y)、特徴度、有効無効フラグ、動きベクトル、分類情報等の属性情報が割り当てられて形成される。
ここで特徴点の座標P(x,y)は、特徴点の位置を示す位置情報であり、最初に特徴点が設定された時点で初期値が設定され、動きベクトル算出処理で特徴点の追跡が成功する毎に、最新の値に更新される。なお特徴点の座標P(x,y)は、画素値以下の少数点精度で割り当てられる。特徴度は、最初に特徴点が設定された時点で検出された値が適用される。有効無効フラグは、特徴点の座標P(x,y)等が有効か無効かを示すフラグであり、特徴点が最初に抽出された時点で有効にセットされる。動きベクトルは、対応する特徴点の動きベクトルが記録され、追跡が成功する毎に最新の値に更新される。上述の動きベクトル算出処理は、遮蔽などの影響で特徴点を追跡できなかった場合、有効無効フラグを無効にセットし、特徴点の座標P(x,y)等の他の属性情報をゼロにセットする。また特徴点を追加設定した場合、有効無効フラグが無効にセットされた特徴点の情報を検出し、この検出した特徴点の情報に追加登録した特徴点の情報をセットする。なお有効無効フラグが無効にセットされた特徴点の情報を検出できない場合には、特徴点の情報を追加する。
分類情報は、動きベクトル解析処理によって特徴点の所属を示す情報が設定される。分類情報は、特徴点が背景から検出されて背景に属するものであることを示す「背景特徴点」、特徴点が被写体から検出されて背景以外に属するものであることを示す「非背景特徴点」、これら「背景特徴点」、「非背景特徴点」の分類前であることを示す「分類前」の何れかに設定され、最初に特徴点が設定された時点では、「分類前」に設定される。
図25は、この特徴点情報を用いた動きベクトル解析処理を詳細に示すフローチャートである。なおこの図25に示す処理手順は、特徴点分類更新処理ステップSP65を除いて、有効無効フラグが有効に設定された特徴点情報のみを用いて実行される。中央処理ユニット4は、この処理手順を開始すると、ステップSP61からステップSP62に移り、動きベクトル算出処理から通知される特徴点情報に基づいて、動きベクトルの分布を示す2次元のヒストグラムを作成する。ここでこのヒストグラムは、動きベクトルの水平方向成分及び垂直方向成分をそれぞれx座標及びy座標に割り当て、度数をz軸方向に設定して作成される。なお中央処理ユニット4は、ヒストグラムの解像度rezで動きベクトルの水平方向成分及び垂直方向成分をそれぞれ割り算して四捨五入することにより、浮動小数点で得られる動きベクトルを量子化してヒストグラムを作成する。
なおこここで分類情報の確からしさを示す信頼度に応じて、各動きベクトルの度数を重み付けしてヒストグラムを作成するようにしてもよい。なおこのような信頼度は、連続して追跡に成功した回数を適用することができる。また近傍の特徴点との間の距離の変化度合を信頼度に適用することができる。従って背景として連続して追跡した回数が多い程、また近傍の特徴点との間の距離の変化度合が小さい場合程、大きな重みを設定して、背景である確率が高い山程、高さが高くなるように、ヒストグラムを作成して、背景の検出精度を向上することができる。なおこの重み付けの処理は、重み付け対象がヒストグラム化する際の度数である点を除いて、後述するピーク度合の重み付け処理と同一に実行することができる。但し、このように重み付けした場合、以降の処理における特徴点数等は、このヒストグラム上で現されている数となる。
続いて中央処理ユニット4は、ステップSP63において、画像領域分割法を適用して、ステップSP62で作成したヒストグラムにおける山を区分する。なおここでこの実施例では、watershed法が適用される。すなわち中央処理ユニット4は、図26(A)に示すように、ヒストグラム算出処理(ステップSP62)で作成されたヒストグラムから度数の最大値maxHistを検出する。また続いて図26(B)に示すように、この検出したこの度数の最大値maxHistから度数が立ち下がるように、ヒストグラムを反転させて反転ヒストグラムを作成する。
中央処理ユニット4は、続いて図26(C)に示すように、この反転ヒストグラムから局所最小値を順次検出する。なおこの図26(C)では、検出した局所最小値を白丸により示す。中央処理ユニット4は、このようにして各山のピーク値を検出する。またこの検出した各山による局所最小値をwatershedのシーズに設定し、図26(D)に示すように、watershedにより各山の境界を設定する。なおここで図26(D)では、破線により各山の境界を示し、ハッチングにより示す領域は、度数が分布していない領域である。
中央処理ユニット4は、図26(E)により示すように、このようにして検出した各山の境界でヒストグラムを構成する動きベクトルを分類し、ヒストグラムから各山を分離する。この実施例は、この画像領域分割法により境界を設定して山を分離することにより、背景の動きと被写体の動きとが似通っている場合でも、確実に背景の山と被写体の山とを分離して、カメラ動きベクトルの検出精度を確保する。
続いて中央処理ユニット4は、ステップSP64に移り、このようにして分離した山から背景による山を検出する。中央処理ユニット4は、この背景による山の検出を、特徴点情報に設定した分類情報に基づいて実行する。
図27は、このステップSP64の背景ピーク検出処理を詳細に示すフローチャートである。この処理手順を開始すると、中央処理ユニット4は、ステップSP71からステップSP72に移る。ここで中央処理ユニット4は、現在のフレームが、動きベクトルを検出した先頭フレームか否か判断する。ここで肯定結果が得られると、中央処理ユニット4は、ステップSP72からステップSP73に移る。ここでこの場合、動きベクトルを検出した先頭フレームであって、全ての動きベクトルの分類情報が「分類前」に設定されていることにより、中央処理ユニット4は、最も高さの高い山を背景による山に設定した後、ステップSP74に移ってこの処理手順を終了する。なおこのようにして背景に設定された山に属する動きベクトルの特徴点は、後述する特徴点分類更新処理により分類情報が「背景特徴点」に設定され、それ以外は「非背景特徴点」に設定される。
これに対してステップSP72で否定結果が得られると、中央処理ユニット4は、ステップSP72からステップSP75に移る。中央処理ユニット4は、このステップSP75において、特徴点情報に設定された分類情報に基づいて、各ピークで、背景ピーク度合を計算する。ここで背景ピーク度合は、背景である確からしさを示す変数である。
ここでこの場合、入力画像に設定されている特徴点は、動きベクトル算出処理における特徴点の追跡、追加設定により、図28(A)に示すように、分類情報が「背景特徴点」、「非背景特徴点」、「分類前」に設定されたものが混在することになる。なお以下において、分類情報が「背景特徴点」、「非背景特徴点」、「分類前」に設定されている特徴点を、それぞれ四角の印、白抜きの丸印、黒丸により示す。
ここで図28(B)に示すように、カメラがパンし、このカメラのパンとは大きく異なって「非背景特徴点」に設定された特徴点を有する被写体が移動しているとする。この場合、図29に示すように、ヒストグラム上で、背景による山と被写体による山とは明確に分離されて検出されることから、ステップSP73と同一の処理により最も高さの高い山を検出して背景の山を検出するようにしても、正しく背景の山を検出することができる。
しかしながら被写体が移動して、画面上における被写体の面積が背景に比して大きくなる場合もあり、この場合には、最も高さの高い山を検出したのでは、背景を誤って検出することになる。従ってカメラ動きベクトルを誤検出することになる。
これに対して他の山に比して高さが低い場合でも、分類情報が「背景特徴点」に設定された特徴点による動きベクトルが支配的な山にあっては、「背景特徴点」に設定された特徴点が支配的であればある程、背景の山である可能性が高い。またこれとは逆に、「非背景特徴点」に設定された特徴点による動きベクトルが支配的な山にあっては、「非背景特徴点」に設定された特徴点が支配的であればある程、高さが高い場合でも、背景の山である可能性が低いと言える。すなわち各ピークにおいて、分類情報が「背景特徴点」に設定された特徴点による動きベクトルの割合が多くなればなる程、背景の山である可能性が高いと言える。
従って各山における「背景特徴点」に設定された特徴点の割合を計算し、最も割合の多い山を検出すれば、被写体が移動して、画面上における被写体の面積が背景に比して大きくなった場合でも、背景の山を検出することができる。
しかしながら図28との対比により図30に示すように、静止していた他の被写体2が移動を開始する場合もある。この場合、この被写体2から検出される特徴点は、図31(A)に示すように、それまで静止して背景として検出されていることにより、分類情報は「背景特徴点」に設定されていることになる。従って図31(B)に示すように、ヒストグラム上では、分類情報が「背景特徴点」に設定された2つの山が検出されることになる。従って単に、「背景特徴点」に設定された特徴点の割合により背景の山を検出していたのでは、何れの山が正しい背景の山なのかを検出できなくなる。
しかしながらこの場合に、このようにそれまで静止していて背景と判断されていた特徴点にあっては、本来の背景に比して面積が小さいと言え、山を構成する特徴点数が少ないと言える。これにより中央処理ユニット4は、背景特徴点の相対的な多さと、特徴点数の絶対的な多さとから、背景の山である確かしさを示す背景ピーク度合RPを計算し、この背景ピーク度合RPを判定して背景の山を検出する。具体的に、中央処理ユニット4は、山毎に、RP=RH×Kの演算処理を実行し、各山の背景ピーク度合RPを計算する。なおここでRHは、背景ピーク度合RPを計算する山全体の動きベクトル数に対する背景特徴点の動きベクトル数の割合である。またKは、係数であり、背景ピーク度合RPを計算する山の動きベクトル数が所定のしきい値thfp以上の場合、値1が適用され、背景ピーク度合RPを計算する山の動きベクトル数が所定のしきい値thfpより少ない場合、値0が適用される。なおKは、3値以上の値を適用するようにしてもよい。なおこのように背景ピーク度合RPを計算して背景を求めることは、画像領域分割法により境界を設定して山を分離したことによる、本来、背景以外から検出した動きベクトルが背景側の山に分類されることによる不都合を回避する意味もある。
なおこの背景ピーク度合RPを検出する際に、ヒストグラムを作成する際に上述したと同様に、分類情報の確からしさを示す信頼度に応じて、背景ピーク度合RPを重み付けして作成するようにしてもよい。なおこのような信頼度は、背景として連続して追跡に成功した回数、背景以外として連続して追跡に成功した回数を適用することができる。また背景として連続して追跡に成功した回数を適用する場合には、例えば連続した追跡成功回数を例えば5回程度の一定回数で制限するようにして、1回から一定回数までの中間値である追跡成功回数3回で重み係数を値1に設定し、これより追跡回数が増加、減少する程に、重み係数が値1から増大及び減少するように設定する。また処理対象を構成する山の動きベクトルのうちで属性情報により背景と分類されている動きベクトルで、この重み係数の平均値を計算し、この平均値を最終的な重み係数として上述した背景ピーク度合RPに乗算する。また背景以外として連続して追跡に成功した回数を適用する場合には、同様に追跡回数を制限するようにして、背景の場合とは逆に、追跡回数が増加、減少する程に、重み係数が値1から減少及び増大するように設定し、同様の処理を実行する。
またこのような信頼度として、近傍の特徴点との間の距離の変化度合いを信頼度に適用することもできる。この場合、近傍の特徴点との間の距離の変化度合いが大きい場合には、背景である場合の確からしさが低いと言える。これによりこの変化度合いに応じて、例えば背景以外として連続して追跡に成功した回数を適用する場合と同様に重み係数を計算して背景ピーク度合RPを重み付けすることができる。
中央処理ユニット4は、背景ピーク度合RPの値が最も大きな山を背景の山に設定し、それ以外を非背景の山に設定する。
続いて中央処理ユニット4は、ステップSP65(図25)に移り、図30の対比により図32に示すように、特徴点分類処理により、背景の山に分類された特徴点の分類情報を「背景特徴点」に設定し、背景の山に分類されなかった特徴点の属性情報を「非背景特徴点」に設定する。
続いて中央処理ユニット4は、ステップSP66において、背景部動きベクトル算出処理により、背景の山に分類された動きベクトルから背景の動きを計算した後、ステップSP67に移ってこの処理手順を終了する。中央処理ユニット4は、この図25の処理手順の実行により、図33に示す機能ブロックを構成する。なおここでヒストグラム算出部51、ピーク抽出部52、背景ピーク検出部53、特徴点分類更新部54、背景動きベクトル算出部55は、それぞれステップSP62、SP63、SP63、SP63、SP63の処理手順に対応する機能ブロックである。
図34は、ステップSP66の背景動きベクトル算出処理の処理手順を示すフローチャートである。中央処理ユニット4は、この処理手順を開始すると、ステップSP81からステップSP82に移り、特徴点分類更新処理ステップSP65で分類情報を「背景特徴点」に設定した特徴点で検出された動きベクトルから、信頼性の低い動きベクトルを除外し、処理対象を整理する。
すなわち中央処理ユニット4は、分類情報を「背景特徴点」に設定した特徴点で検出された動きベクトルの分布を統計学的に解析する。またこの分布の解析から分布中心を検出し、この分布中心からの各動きベクトルの距離が所定の判定基準値より大きいものを、処理対象から除外する。
より具体的に、中央処理ユニット4は、分類情報を「背景特徴点」に設定した特徴点で検出された動きベクトルを平均値化して平均ベクトルを計算する。またこれらの動きベクトルからこの標準偏差行列を生成する。なおここでこの標準偏差行列は、動きベクトルの水平方向成分、垂直方向成分の標準偏差による対角行列であり、以下、適宜、標準偏差ベクトルとも呼ぶ。
中央処理ユニット4は、この標準偏差ベクトルの水平方向成分Sx及び垂直方向成分Syにそれぞれ所定のしきい値thを乗算して水平方向成分の判定基準Sx×th及び垂直方向成分の判定基準Sy×thを計算する。また検査対象の動きベクトルVの水平方向成分Vxから平均ベクトルの水平方向成分Mxを減算した減算値Vx−Mxの絶対値を、水平方向成分の判定基準Sx×thで判定し、分布中心からの動きベクトルの水平方向の距離が判定基準値Sy×thより大きいものを、処理対象から除外する。
また残った各動きベクトルの垂直方向成分Vyから平均ベクトルの垂直方向成分Myを減算した減算値Vy−Myの絶対値を、垂直方向成分の判定基準Sy×thで判定し、分布中心からの動きベクトルの垂直方向の距離が判定基準値Sy×thより大きいものを、処理対象から除外する。
なおこの判定基準値は、時間方向の動きベクトルの分布の変化を反映させるようにしてもよい。具体的には、標準偏差の時間変動を検出し、この時間変動に応じて判定基準値の生成に使用したしきい値thの大きさを変化させる等である。
このようにして中央処理ユニット4は、処理対象の動きベクトルを整理すると、続くステップSP83において、残った動きベクトルを用いて平均値を計算し、背景の動きベクトルを計算する。中央処理ユニット4は、この背景の動きベクトルの符号を反転させて、カメラ動きベクトルMVCを計算する。
この図34の処理により、中央処理ユニット4は、図35に示す機能ブロックを構成する。なおここで動きベクトル整理部71、背景部の平均ベクトル算出部72は、それぞれ図34のステップSP82、ステップSP83の処理手順に対応する機能ブロックである。
(1−3)カメラ動きベクトルの処理
図36は、図3のステップSP4の処理手順を詳細に示すフローチャートである。中央処理ユニット4は、この処理手順の実行によりカメラ動きベクトルMVCからカメラワークのみのカメラ動きベクトルMVCTを求める。すなわち中央処理ユニット4は、この処理手順を開始すると、ステップSP91からステップSP92に移り、カメラワーク成分抽出処理を実行し、カメラワークのみのカメラ動きベクトルMVCTを求める。このとき中央処理ユニット4は、知識データベースの記録に基づいて、カメラワークのみのカメラ動きベクトルMVCTによるビデオカメラの動きが、ユーザーが意図したと推定されるカメラワークの動きとなるように、カメラ動きベクトルMVCTを求める。
ここで図1は、このカメラワーク成分抽出処理を詳細に示すフローチャートである。中央処理ユニット4は、この処理手順を開始すると、ステップSP95からステップSP96に移り、手振れ補正の許容範囲を取得する。ここでこの実施例では、図5について上述した補正ベクトルΔMVの最大値を事前に設定できるように構成され、中央処理ユニット4は、この事前に設定されて記録された最大値をこのステップSP96で取得する。
ここでこの実施例では、図5について上述したように、この動き補正処理によって入力画像21を割り当てることが困難となった部位を切り捨て、出力画像24のサイズに合うようにスケーリングすることから、このスケーリングの処理における拡大率が一定値となるように、図37に示すように、一定の領域ARを入力画像21から切り出し、この切り出した領域ARを拡大して出力画像24を生成する。またこの一定の領域ARを補正ベクトルΔMVで可変して手振れ補正する。
入力画像21がVGAの場合、図38に示すように、入力画像21は、水平方向及び垂直方向にそれぞれ720画素及び480画素の大きさとなる。ここで入力画像21から切り出す領域ARのアスペクト比は、元の入力画像21のアスペクト比と一致することが処理を簡略化する点で望ましい。そこでこの実施例では、ディフォルトでは、切り出す領域ARが水平方向及び垂直方向にそれぞれ630画素及び420画素の大きさに設定され、対応する許容値は、水平方向の許容値thδxが(720画素−630画素)/2=45画素、垂直方向の許容値thδyが、(480画素−420画素)/2=30画素に設定される。従ってユーザーは、このディフォルト値の許容値を基準にして所望する許容値を設定することができる。
続いて中央処理ユニット4は、ステップSP97に移り、ハードディスク装置3に記録したビデオ信号SVを解析してシーンチェンジを検出し、ビデオ信号SVの入力画像21をシーンチャンジで区切って入力画像21を各シーンに分割する。
続いて中央処理ユニット4は、ステップSP98に移る。ここで中央処理ユニット4は、ステップSP97で分割したシーンの1つについて、このシーンを形成する連続する入力画像で検出されたカメラ動きベクトルMVCによる動きの軌跡を作成する。またこの軌跡を構成する直線の数に比して少ない数の直線によりこのカメラ動きベクトルMVCによる動きの軌跡を近似し、この動きの軌跡を折れ線化する。
中央処理ユニット4は、この折れ線化の処理をDouglas-Peucker 法で実行する。ここで図39は、1つのシーンを構成する複数フレームで順次検出されたカメラ動きベクトルMVCから求められるカメラの動きの軌跡であり、カメラの向き等の変化を示すものである。なおここでこのカメラの動きの軌跡は、当然のことながら撮像結果における動きの軌跡をも示すことになる。この図39は、先頭フレームのカメラ動きベクトルMVCを0とおいて、このカメラ動きベクトルMVCによる座標CAM〔0〕を基準位置に設定し、この基準位置から連続する各フレームにおけるカメラ動きベクトルMVCの値を順次プロットしたものである。従って符号CAM〔N〕が、対象シーンの先頭フレームからN+1番目のフレームにおけるカメラの向きを、基準位置の座標CAM〔0〕を基準にして示す座標である。従ってこの図39において、CAM〔N〕x、CAM〔N〕yは、それぞれX方向及びY方向へのカメラの動き(向き)の変化量を示し、符号Eは、この軌跡を部分的に拡大して示す図である。この図39の例では、細かく上下動しながらカメラが左から右にパンした後、細かく左右にぶれながら上方向に向きが変化し、さらに左から右にパンした後、上方向に向きが変化していることが判る。
中央処理ユニット4は、図39との対比により図40に示すように、初めにこの1つのシーンの先頭及び末尾のフレームにおける座標CAM〔0〕、CAM〔36〕を結ぶ直線L1を設定する。また符号Fにより部分的に拡大して示すように、この直線L1の両端の座標CAM〔0〕、CAM〔36〕に対応するフレーム間の各フレームの座標CAM〔1〕〜CAM〔35〕とこの直線L1との距離δをそれぞれ計算する。またこの距離δの最大値を検出し、この距離δの最大値のX成分が、ステップSP96で取得した許容値のX成分以下であり、かつこの距離δの最大値のY成分が、ステップSP96で取得した許容値のY成分以下であるか否か判断する。
ここで最大値のX成分及びY成分が共に許容値以下の場合、中央処理ユニット4は、この直線L1をユーザーが意図したカメラワークによるカメラの軌跡に仮設定する。
これに対して最大値のX成分又はY成分が許容値より大きい場合、中央処理ユニット4は、図40との対比により図41に示すように、この先頭及び末尾のフレームの座標CAM〔0〕、CAM〔36〕を結ぶ直線L1に代えて、この直線L1の両端の座標CAM〔0〕、CAM〔36〕と、距離δが最大値の座標CAM〔13〕とをそれぞれ結ぶ2つの直線L2及びL3を設定する。従ってこの場合、先頭のフレームの座標CAM〔0〕と座標CAM〔13〕とを結ぶ直線L2、この座標CAM〔13〕と末尾のフレームの座標CAM〔36〕とを結ぶ直線L3を設定する。
また各直線L2及びL3毎に、直線の両端の座標に対応するフレーム間の各フレームの座標と直線との距離δをそれぞれ計算する。従ってこの場合、直線L2については、座標CAM〔1〕〜CAM〔12〕とこの直線L2との距離δを順次計算し、また直線L3については、座標CAM〔14〕〜CAM〔35〕と直線L3との距離δを計算する。
なおこのような距離δの計算では、図42に示すように、座標A、B間のフレームの座標Dから、この座標A、Bを結ぶ直線LAに垂線を下ろせない場合もあるが、この場合は、点線により示す座標A、Bを結ぶ直線LAの延長線に対して垂線を下ろすようにして、この座標Dと直線LAとの距離δを計算する。
このようにして直線L2、L3毎に、それぞれ各座標の点との間の距離δが検出されると、中央処理ユニット4は、直線L2、L3毎に、距離δの最大値を検出する。またこの距離δの最大値がそれぞれ許容値を満足するか否か判定し、許容値を満足しない直線については、さらに同様の処理を繰り返す。中央処理ユニット4は、この処理の繰り返しにより、図43に示すように、許容値で決まる手振れ補正可能な範囲で、1つのシーンを形成する複数フレーム間の動きを、少ない数の直線で表現する。
なおここで図43は、図41に示す例において、座標CAM〔13〕、CAM〔36〕を結ぶ直線L3側で、各座標までの距離δの最大値が許容値を満足しない場合であって、この座標CAM〔13〕、CAM〔36〕の間のフレームの座標CAM〔27〕を用いて、座標CAM〔13〕、座標CAM〔27〕間、座標CAM〔27〕、CAM〔36〕間にそれぞれ直線L4、L5を設定し、さらにこの2つの直線L4、L5のうちの直線L4の側が許容値を満足せず、さらに座標CAM〔13〕、座標CAM〔27〕間に直線L6、L7を設定した場合である。これによりこの図43の例では、このシーンにおけるカメラの動きが、4つの直線L2、L6、L7、L5で構成される折れ線で表現される。
このようにして許容値を満足するようにカメラ軌跡を折れ線化すると、中央処理ユニット4は、ステップSP99に移る。ここで中央処理ユニット4は、知識データベースの記録に基づいて、ステップSP98で求めた折れ線による軌跡を評価する評価値を計算する。ここでこの評価値は、ステップSP98で求めた折れ線による軌跡が、ユーザーの意図したものである程度を示す評価値である。
ここでユーザーは、当然のことながらプロのカメラマンが撮影したように巧く撮影されていることを意図する。これに対してプロのカメラマンが撮影する場合、パン、チルトは、それぞれ水平線、垂直線に沿ってカメラの向きが変化する場合が殆どである。従ってステップSP98で設定した折れ線を構成する直線(線分)が水平線及び垂直線に対して何ら傾いていない場合、プロが撮影した場合のようにパン、チルトのカメラワークが実行されており、ステップSP98で検出した折れ線は、ユーザーの意図したままのカメラの動きを表していると言える。これに対してステップSP98で設定した折れ線を構成する直線(線分)が水平線及び垂直線に対して傾いている場合、この傾きが大きくなればなる程、パン、チルトのカメラワークが巧く実行されていないと言える。従ってこの場合、ステップSP98で検出した折れ線は、ユーザーの意図したカメラワークを表していない可能性が高くなる。
また短い期間でカメラの動きが頻繁に切り換わる場合、目障りであって、一般に、巧く撮影されているとは言えないことになる。従ってステップSP98で設定した折れ線を構成する直線(線分)に対応するフレーム数が少ない場合、巧く撮影されていないと言え、この場合も、ステップSP98で検出した折れ線は、ユーザーの意図したカメラワークを表していない可能性が高くなる。
またカメラの動きが滑らかに切り換わっている場合、一般に、巧く撮影されていると言える。従ってステップSP98で検出した折れ線において、隣接する直線の成す角度が鋭角の場合、巧く撮影されていない可能性が高いと言え、この場合、この隣接する直線による軌跡は、ユーザーの意図したカメラワークを表していない可能性が高くなる。
中央処理ユニット4は、これらの評価基準に基づいて、ステップSP98で検出した折れ線による軌跡を数値化して評価値を検出する。
すなわちデータベースには、評価基準の直線の傾きが記録されており、中央処理ユニット4は、ステップSP98で検出した折れ線の直線毎に、最も傾きの近い評価基準の直線の傾きを検出し、この検出した評価基準の直線の傾きに対して、対応する直線の傾きが大きくなるに従って値が小さくなるように、各直線の評価値を計算する。なおここで評価基準の直線は、例えば水平線、垂直線である。
またデータベースには、カメラの動きが切り換わった場合に、目障りとならない範囲の連続したフレーム数が基準の連続フレーム数として記録されている。中央処理ユニット4は、ステップSP98で検出した折れ線の直線毎に、各直線の対応するフレーム数をこの基準の連続フレーム数と比較し、基準の連続フレーム数に対して、各直線の対応するフレーム数が低下するに従って値が小さくなるように、また各直線の対応するフレーム数が基準の連続フレーム数以上の場合、一定値となるように、各直線の評価値を計算する。
またデータベースには、カメラの滑らかな動きに違和感を感じる基準角度が記録されており、中央処理ユニット4は、各直線毎に、隣接する直線との間の角度をこの基準角度と比較する。また隣接する直線との間の角度が、この基準角度より小さくなるに従って当該直線の評価値が小さくなるように、また隣接する直線との間の角度が、この基準角度より大きい場合には、一定値となるように評価値を計算する。
中央処理ユニット4は、ステップSP98で検出した折れ線を構成する直線毎に、このようにして評価値を計算し、この計算した評価値を折れ線を構成する直線で平均値化し、折れ線の軌跡全体がユーザーの意図するカメラワークを表している程度を示す総合評価値を計算する。
なお評価基準は、これら以外にも、例えば1つのシーンを構成する直線の数等、種々の基準を設定することができる。
続いて中央処理ユニット4は、ステップSP100に移り、ステップSP98で求めた折れ線を構成する直線の中に、複数の直線で表現した場合に、評価値が増大する直線が存在するか否か判断することにより、総合評価値が高くなる可能性の有無を判断する。ここでこの実施例では、水平方向、垂直方向の傾き、フレーム数、隣接する直線との角度を基準にして評価値を計算していることから、このような直線は、水平線、垂直線に対してそれぞれ一定角度以上傾いており、対応するフレーム数がデータベースに記録された連続フレーム数の2倍以上の直線が該当することになる。
中央処理ユニット4は、このような直線が存在しない場合、ステップSP100からステップSP101に移り、ステップSP98で求めた折れ線をユーザーの意図したカメラワークによる軌跡に設定する。
これに対して評価値が増大する可能性のある直線が存在する場合、中央処理ユニット4は、ステップSP100からステップSP102に移る。ここで中央処理ユニット4は、この可能性のある直線をさらに2つの直線に分割する。なおここでこの直線の分割は、上述のステップSP98の場合と同様に、それまでの直線に対して距離が最も遠い座標とそれまでの直線の両端の座標とを結ぶように直線を設定して実行される。
続いて中央処理ユニット4は、ステップSP103に移り、この分割した2つの直線について、ステップSP99と同様にして評価値を計算し、この計算結果からこの2つの直線を有する折れ線の総合評価値を計算する。また続くステップSP104でこのステップSP103で計算した総合評価値が先に計算した評価値より劣化したか否か判断する。
ここで2つの直線に分割して隣接する直線との成す角度が鋭くなった場合、さらには2つの直線のうちの1つの直線の対応するフレーム数が基準フレーム数以下となる場合等にあっては、総合の評価値が劣化することになる。そこでこの場合、中央処理ユニット4は、ステップSP104からステップSP105に移り、直前の折れ線をユーザーの意図したカメラワークによる軌跡に設定する。
これに対してステップSP104で否定結果が得られると、中央処理ユニット4は、ステップSP104からステップSP100に戻る。これにより中央処理ユニット4は、許容量を逸脱しない範囲で、背景から検出したカメラの動きの軌跡を複数の直線で表して細かな手振れ成分を除去するようにして、この複数の直線による軌跡を評価値で判定してユーザーの意図したカメラワークによる軌跡を推定する。
しかしてステップSP101の処理を完了すると、中央処理ユニット4は、ステップSP101からステップSP105に移り、他の未処理のシーンの有無を判定する。また他に未処理のシーンが残っている場合には、ステップSP105からステップSP106に移り、この他のシーンに処理対象シーンを切り換えた後、ステップSP98に戻る。これに対してステップSP105で否定結果が得られると、ステップSP105からステップSP107に移ってこの処理手順を終了する。
このようにしてユーザーが意図したと推定されるカメラワークの軌跡を求めると、中央処理ユニット4は、ステップSP110に移る(図36)。ここでこのステップSP92で求めた軌跡となるように、各フレームのカメラ動きベクトルMVCTを計算する。ここで中央処理ユニット4は、図44に示すように、各フレームの座標CAM〔1〕〜CAM〔7〕から対応する直線L上に垂線を下ろし、この垂線が直線L1と交差する点の座標PAN〔1〕〜PAN〔7〕を手振れ補正後の各フレームの座標に設定する。またこのようにして設定した各フレームの座標PAN〔1〕〜PAN〔7〕、直線L1の両端の座標〔CAM〔0〕、CAM〔8〕を直前の座標PAN〔−1〕〜PAN〔7〕から指し示すベクトルを各フレームのカメラワークのみによる動きベクトルMVCTに設定する。
これにより図45に示すように、折れ線の始点CAM〔0〕では、カメラワークのみによるカメラ動きベクトルMVCT〔1〕は、カメラ動きベクトルMVC〔1〕と、手振れ補正用の補正ベクトルΔMV〔1〕を用いて、MVCT〔1〕=MVC〔1〕+ΔMV〔1〕で表すことができ、補正ベクトルΔMV〔1〕は、カメラワークのみによる動きベクトルMVCT〔1〕からカメラ動きベクトルMVC〔1〕を減算して求めることができる。またカメラワークのみによるカメラ動きベクトルMVCT〔N〕からカメラ動きベクトルMVC〔N〕を減じたベクトルMVCT〔N〕−MVC〔N〕が手振れ成分となる。また以降の各座標CAM〔N〕では直前の座標CAM〔N−1〕における補正ベクトルΔMV〔N−1〕を用いて補正ベクトルΔMV〔N〕は、MVCT〔N〕−MVC〔N〕+ΔMV〔N−1〕で表されることになる。
従って中央処理ユニット4は、折れ線を構成する直線の各始点を基準にして各フレーム毎に、この演算処理を実行して、図44との対比により図46に示すように、各フレームの手振れ補正用の補正ベクトルΔMV〔N〕を計算し、入力画像21から切り出す領域をこの手振れ補正用の補正ベクトルΔMV〔N〕で算出する。
なおこの各フレームの直線L1上の座標を求める処理は、図44との対比により図47に示すように、1つの直前上における隣接する座標間の距離L〔N〕が等しくなるように設定してもよい。なおこの場合、元の座標CAM〔1〕〜CAM〔7〕から対応する直線上の座標PAN〔1〕〜PAN〔7〕までの距離δが許容値以下か否か改めて確認し、許容値より距離δが大きい場合には、改めて折れ線を設定し直すことが必要になる。
続いて中央処理ユニット4は、ステップSP111に移り(図36)、ステップSP110で計算した手振れ補正用の補正ベクトルΔMV〔N〕を用いて、手振れ補正したビデオ信号を生成する。
ここで中央処理ユニット4は、入力画像21の画面中央を基準位置に設定し、図48に示すように、各シーンの先頭フレームでは、この基準位置が切り出す領域の中央位置となるように、切り出す領域ARを設定する。また続くフレームからは、図48及び図49に示すように、手振れ補正用の補正ベクトルΔMV〔N〕の分、基準位置から変位した位置を中心位置に設定して切り出す領域ARを設定する。またこの切り出す領域ARの画素値の補間演算処理により、この切り出す領域ARの画像をスケーリングして出力画像データを生成する。
この一連の処理において、図50により部分的に拡大して示すように、切り出す領域AR上における1画素の位置が、入力画像21における画素の位置とずれている場合、中央処理ユニット4は、内装演算処理により切り出す領域ARの各画素値を生成する。なおこの図50において、Ω1〜Ω4は入力画像の各画素値であり、ω1〜ω4は、内装演算に使用する重み付け係数である。このω1〜ω4は、入力画像21の隣接する画素間の間隔を、切り出す領域の対応する画素が内分する内分比である。
このようにして出力画像データを生成すると、中央処理ユニット4は、ステップSP111からステップSP112に移ってこの処理手順を終了する。中央処理ユニット4は、この図36の処理手順の実行により、図51に示す機能ブロックを構成する。ここでこの図51において、知識データベース(DB)81は、評価値生成用の各種評価基準を保持し、補正補間部82は、カメラ動きベクトルMVCによるカメラ動き情報23に基づいて手振れ補正した出力画像24を生成する。またこの補正補間部82において、カメラワーク成分抽出部83、切り出し位置算出部84、出力フレーム算出部85は、それぞれ図36のステップSP92、SP110、SP111の処理を実行する。
(2)実施例の動作
以上の構成において、この手振れ補正装置1では(図2)、ビデオカメラ2で撮影したビデオ信号SVがハードディスク装置3にダウンロードされた後、ハードディスク装置3に格納された処理プログラムに従った中央処理ユニット4の処理により、手振れ補正処理されて外部機器に出力される(図3〜図7)。
この手振れ補正処理において、ビデオ信号SVは、IP変換処理されてフレーム単位で処理され、連続するフレームの各部で動きベクトルが検出される。またこの動きベクトルの解析により、手振れとカメラワークとによるカメラの動きを入力画像上で表すカメラ動きベクトルMVCが検出され、またさらにこのカメラ動きベクトルMVCの解析により、カメラワークのみによるカメラの動きを入力画像上で表すカメラ動きベクトルMVCTが検出される。ビデオ信号SVは、これらのカメラ動きベクトルMVC、MVCTに基づいて、手振れ補正用の補正ベクトルΔMVが順次計算され、この補正ベクトルΔMVで各フレームの動きが補正されて手振れ補正処理される(図8、図9)。
この手振れとカメラワークとによるカメラ動きベクトルMVCの検出では、入力画像中で背景が最も大きな面積を占めるとの仮定に基づいて、初めに、入力画像の各部で検出した動きベクトルでヒストグラムが作成され、このヒストグラム上で、最もサンプル数の集中する動きベクトルのグループが背景のグループとして検出される。またこの背景のグループに属する動きベクトルが処理されて、カメラ動きベクトルMVCTが検出される。
従ってこの実施例では、入力画像における各部の面積に比例するように、入力画像の各部から動きベクトルが均等に検出されないと、正しく背景を検出できなくなり、正しくカメラワークのみによるカメラ動きベクトルMVCTを検出できなくなる。そこで入力画像中で偏りなく、万遍に、動きベクトルを検出することが必要になる。
そこでこの手振れ補正装置1では、KLT法の特徴点抽出、追跡法を利用して入力画像の各部で動きベクトルを検出するようにして、ビデオ信号SVによる入力画像の各フレームが複数ブロックに分割される(図10、ステップSP23)。また先頭フレームでは各ブロックにそれぞれ一定数Nfpの特徴点が設定される(図10、ステップSP25)。また先頭フレームに続く連続するフレームの入力画像において、この特徴点の追跡により動きベクトルが検出される(図10、ステップSP28)。またこの続く連続するフレームの入力画像において、追跡困難な特徴点、隣接する特徴点に一定距離以上接近した特徴点が削除される。また各ブロックの特徴点の数が初めに設定した一定数Nfpとなるように、各ブロックに特徴点が追加設定され(図10、ステップSP25)、特徴点の分布の偏りが補正される。
この一連の処理により、この手振れ補正装置1では、背景が前景により遮蔽された場合、背景の一部がフレームアウトした場合等にあっても、概ね初めに設定した特徴点の数Nfpだけ各ブロックから動きベクトルを検出することができ、これにより偏り無く動きベクトルを検出することができる(図10〜図17)。またKLT法の特徴点抽出、追跡法を利用して動きベクトルを検出することから、ブロックマッチング法による場合に比して高い精度で動きベクトルを検出することができる。これにより画面全体から偏りなく高い精度で動きベクトルを検出することができる。
すなわちビデオ信号SVによる入力画像は、KLTの追跡法により、連続するフレームで各特徴点が追跡され、2つの特徴点が一定距離以上、近づくと、特徴点らしさを示す特徴度の低い側の特徴点が削除され、これにより特徴点の集中が防止されて特徴点の偏りが防止される(図10、ステップSP28)。またこのとき追跡困難な特徴点も削除される。
またビデオ信号SVによる入力画像は、各フレームで、特徴点らしさを示す特徴度の高い順に、各画素の座標値が対応する特徴度と共に順次リスト化され、特徴点の候補を特徴度の高い順に示す特徴点リストが作成される(図23)。また入力画像の画素の配列に対応するように特徴度を配列した特徴点マップが作成される(図23)。
ビデオ信号SVによる入力画像は、先頭フレーム以外の連続するフレームにおいて、特徴点の削除により当初の設定数に対して不足する特徴点が発生すると、初めに設定した特徴点の数Nfpに特徴点数が満たないブロックに、特徴度が高い順に特徴点が追加設定される(図22、ステップSP55−SP56−SP57−SP55)。またこのとき、既存の特徴点に対して一定距離以上離れていることが確認される(図22、ステップSP59)。
これにより特徴点の密度の低下が防止されて特徴点の偏りが防止される。このとき既存の特徴点から一定の距離だけ離れている個所で、特徴度が大きな順に特徴点を追加することにより、追加して設定した特徴点についても、KLTの追跡法により追跡して、十分に高い精度の動きベクトルを検出することができる。
より具体的に、手振れ補正装置1では、分割したブロックの情報を記録したブロックリストから、ブロック毎の特徴点数を示す作業用リストが作成され(図18、ステップSP34)、初めに設定した特徴点の数Nfpを特徴点数が満たすブロックがこの作業用リストから除外され(図18、ステップSP35)、これにより一定数Nfpに特徴点が不足するブロックが検出される。
またこの作業用リストに記録されたブロックが、不足する特徴点数毎にグループ化され、不足する特徴点数が順次少なくなるように、ソート処理により各グループ内の配列が変更される(図18、ステップSP36)。これによりこの手触れ補正装置1では、グループ単位で、特徴点を追加する処理順序が作業用リストに設定される。手触れ補正装置1では、作業用リストに記録された処理順序に従って、順次、不足する特徴点が対応するブロックに追加設定される。
これによりこの手振れ補正装置1では、種々の条件で、この追加設定の処理を制限して処理の高速化を図るようにしても、真に特徴点が不足するブロックに優先的に特徴点を設定して、動きベクトルの偏りを防止することができる。またこのように特徴点の不足するブロックをリスト化して、ソートすることにより、簡易な処理で処理順序を設定することができる。
具体的に、この手振れ補正装置1では、この処理を制限する条件が、1フレームの総合の特徴点数が、当初の設定値Ntotを越えない範囲で、特徴点を追加するとの条件であり、これにより実用上十分に、動きベクトルの偏りを防止して、特徴点の追加設定処理を必要最小限度に止めることができ、その結果、処理を簡略化して動きベクトルの偏りを防止することができる。
またこのとき作業用リストの各グループでは、ブロックの処理順序がランダマイズされ、これにより1フレームの総合の特徴点数が、当初の設定値Ntotを越えない範囲で、特徴点を追加するようにして、例えば画面左側等の、特定の個所への偏った特徴点の追加を防止することができ、これによっても動きベクトルの偏りを防止することができる。
またこの特徴点の追加は、1個、特徴点を追加する毎に、作業用リストが更新され、これによっても1フレームの総合の特徴点数が、当初の設定値Ntotを越えない範囲で、特徴点を追加するようにして、特徴点の偏りを防止して、動きベクトルの偏りを防止することができる。またランダマイズした配列の末尾に、特徴点を追加設定したブロックの記録を変更することによっても、特徴点の偏りを防止して、動きベクトルの偏りを防止することができる。
しかしながら入力画像では、被写体の動きにより背景の面積が被写体以上に小さくなる場合もある。また背景の動きを被写体の動きとが似通っている場合もある。このような場合、入力画像上で偏りなく動きベクトルを検出しても、ヒストグラム上で、最もサンプル数の集中する動きベクトルのグループを背景のグループとして検出してカメラ動きベクトルを検出していたのでは、背景の動きを正しく検出できなくなる。すなわちこの場合、背景の動き検出精度が劣化し、カメラの動きを正しく検出できなくなる。
このためこの手振れ補正装置1では、先頭1フレームで背景を検出する場合に限って、ヒストグラム上で動きベクトルの分布が集中して形成される山において、最も高さの高い山が検出され(図27、ステップSP73)、背景から検出した動きベクトルによるものと判定される。またこの背景の山に属する動きベクトルから平均値が求められてカメラ動きベクトルMVCが検出される。
またこのようにして背景から検出した動きベクトルによるものと判定された山に属する特徴点については、背景に属することが分類情報に記録され、また他の特徴点の分類情報には、背景に属しないことが記録される(図24、図25、ステップSP65)。
また以降のフレームでは、このようにして選定された分類情報を基準にして、背景から検出した動きベクトルによる山が検出される。またこの山の検出により属性情報が設定し直され、途中で追加設定された特徴については分類情報が設定される(図27、ステップSP75、SP76)。
これによりこの手振れ補正装置1では、過去に背景と判定されて、その後、背景の面積が小さくなって、背景から検出される動きベクトルの数が低下した場合でも、正しくヒストグラム上における背景の山を追跡して背景による山を検出することができる。従って、背景の面積が小さくなった場合にあっても、背景の誤検出を有効に回避して正しくカメラ動きベクトルを検出することができる。
また手振れ補正装置1では、ヒストグラムから背景による山を検出する際に、ヒストグラム上に現れた複数の山が、画像領域分割法により区切られ、複数の山に分割される(図25、ステップSP63及び図26)。またこのようにして分割した複数の山から背景の山が検出される(図25、ステップSP64)。従ってこの手振れ補正装置1では、背景の動きに被写体の動きが似通っていて、ヒストグラム上で背景の山と被写体の山とが部分的に重なり合っている場合でも、これらの山を区別して処理することができ、これによって背景の動きに被写体の動きが似通っている場合の、背景の動き検出精度の劣化が防止される。
より具体的に、この手振れ補正装置1では、入力画像の各部で検出された動きベクトルの大きさが、ヒストグラムの解像度rezで正規化されてヒストグラムが生成され、これにより所望する分解能でカメラ動きベクトルを簡易に検出することができるように設定される。
またこの山の分離に、watershed法が適用され(図26)、ヒストグラムが反転されて反転ヒストグラムが作成された後、この反転ヒストグラムにおける局所最小値がwatershedのシーズに設定されて各山が区分される。その結果、この手振れ補正装置1では、被写体の動きが種々に変化する場合にあっても、確実に山を分離して各部の動きを正確に検出することが可能になる。
またこのようにして分離した複数の山から背景の山を検出する場合には、初めの1フレームは山の高さにより背景の山が検出された後、以降のフレームでは、分類情報に基づいて背景の山である確からしさを示す背景ピーク度合RPを各山で計算し(図27、ステップSP75)、この背景ピーク度合RPの値が最も大きな山が背景による山と判定される(図27、ステップSP75)。
すなわち手振れ補正装置1では、背景の山における背景に分類された動きベクトル数の割合に、所定の係数Kを乗算して背景ピーク度合RPが計算される。これにより分類情報に基づいて、背景特徴点の相対的な多さにより背景ピーク度合RPが計算され、過去に背景と判定された可能性の高い特徴点が支配的な山が背景の山として検出され、種々に被写体の動きが変化した場合にあっても、背景の動きを正しく検出することが可能となる。
またこのとき山全体の動きベクトルの数が所定のしきい値thfp以上の場合、係数Kが値1に設定され、山全体の動きベクトルの数が所定のしきい値thfpより少ない場合、係数Kが値0に設定され、これにより山の高さを所定のしきい値thfpで量子化した係数Kにより背景の山検出に特徴点数が反映され、例えば静止していた被写体が動き出した場合(図32)等に、この動き出した被写体の動きを背景の動きとして誤検出することが防止される(図30、図31)。
なおこのように背景特徴点の相対的な多さと、特徴点数の絶対的な多さとから背景ピーク度合RPを計算し、この背景ピーク度合RPを判定して背景の山を検出していることから、動きベクトルのヒストグラムを作成する際に、動きベクトルの検出基準である特徴点の特質を利用して、背景の特徴点である確からしさを示す信頼度を計算し、この信頼度で背景ピーク度合RPが変化するように各動きベクトルのヒストグラム上における度数を重み付けしてヒストグラムを作成すれば、一段と確実に背景の山を検出することができる。
具体的に、背景として分類されて連続して追跡に成功した回数の多い特徴点は、追跡に成功した回数が多ければ多い程、背景に存在する可能性が高い。またこれとは逆に、背景で無いと分類されて連続して追跡に成功した回数の多い特徴点は、追跡に成功した回数が多ければ多い程、背景に存在する可能性が低い。従って対応する特徴点の追跡を連続して成功した回数を信頼度に設定して重み付け処理することにより、一段と確実に背景の山を検出することができる。
また背景は、背景の他の部位に対して異なる動きを呈する部位が少ない、一般に硬いものである。従って背景に存在する特徴点は、背景に分類された周辺特徴点との距離が、各フレームで変化しない可能性が高い。従って対応する特徴点の周辺特徴点との距離の変化度合を信頼度に設定し、重み付け処理することにより、一段と確実に背景の山を検出することができる。なおこのようにヒストグラムに信頼度を反映させた場合、ヒストグラムから背景の山を検出する等の一連の処理においては、このヒストグラム上における動きベクトルの分布を一連の計算の処理に適用することになる。
なおこのような信頼度による重み付け処理は、ヒストグラムを作成する際に、各動きベクトルの度数を重み付けしてもよく、またこれに代えて背景の山を検出する検出基準である各山の背景ピーク度合を重み付けするようにしてもよい。
この手振れ補正装置1では、このようにして検出した背景の山から、この山を構成する動きベクトルを平均化して、背景の動きベクトルが検出され、この背景の動きベクトルの符号が反転されて、カメラ及び手振れによるカメラの動きを入力画像上で表すカメラ動きベクトルMVCが計算される。
この平均化の際に、手振れ補正装置1では、統計的手法を適用して、背景の山に分類された動きベクトルから、誤って分類された可能性の高い動きベクトルを除外して平均値を計算し、これによってもカメラ動きベクトルの検出精度を向上する。
具体的に、手振れ補正装置1では、背景とされた山に属する動きベクトルの平均値が計算されて、この山の中心が計算される。またこの山の中心からの距離が所定の判定基準値で判定され、この距離が大きな動きベクトルが処理対象から除外され、これにより背景の動き検出精度が増大し、カメラ動きベクトルの検出精度が向上する。
このときこの距離の判定基準にあっては、背景とされた山に属する動きベクトルの標準偏差が計算され、この標準偏差に応じて設定される。これにより例えば風に木々が揺らめくような背景にあっては、判定基準値が大きな値に設定されるのに対し、建築物の壁のように硬い背景にあっては、判定基準値が小さな値に設定されて、処理対象が除外される。これによりこの手振れ補正装置1では、背景に応じて判定基準を可変して誤って分類された可能性の高い動きベクトルが処理対象から除外され、一段と高い精度で背景の動きを検出することができる。
なおこの判定基準値に、時間方向の動きベクトルの分布の変化を反映させるようにすれば、一段と検出精度を向上することができる。すなわち風に木々が揺らめく背景では、風の強さの時間変化によって揺らめきの大きさが変化し、この場合、背景から検出される動きベクトルの基準偏差が時間軸方向で変化することになる。従ってこの場合、この時間軸方向の分布の変化に対応するように、判定基準値を変化させて、検出精度を向上することができる。また連続した追跡回数、周辺画素との距離の変化度合による信頼度で判定基準値を補正するようにしても、連続した特徴点の追跡結果を平均値化の処理に反映させて検出精度を向上することができる。
ところでこのようにして検出したカメラ動きベクトルMVCを単に平滑化処理して高周波成分を取り除き、手振れ補正したのでは、細かな手振れは補正できるものの、大きなうねりが残ってしまう(図54、符号D)。これに対してユーザーは、プロのカメラマンが撮影したようなカメラワークを意図して撮影し、このプロのカメラマンが撮影したような場合には、このようなうねりが存在しなくなる。
そこでこの実施例では、シーンチェンジにより撮像結果がシーン毎に区切られ(図1、ステップSP97)、シーンチェンジの先頭フレームを基準にしてカメラ動きベクトルMVCにより撮像結果の動きの軌跡が検出される(図1、ステップSP98、図39)。またこの撮像結果の動きの軌跡から、ユーザーが意図したと推定されるカメラワークの軌跡が検出され(図1、ステップSP101、図43)、このカメラワークの軌跡となるように、撮像結果のフィールド間又はフレーム間の動きが補正されて手振れ補正される(図36、ステップSP110、SP111)。
これによりこの手振れ補正された撮像結果は、図54において符号Eで示すように、大きなうねり等が取り除かれて、ユーザーの意図したカメラワークによるもののように手振れ補正されて出力され、これにより手振れ補正装置1では、ユーザーの意図したカメラワークとなるように手振れ補正することができる。
具体的に、この手振れ補正装置1では、撮像結果の各部で検出された動きベクトルMVを処理して得られるカメラ動きベクトルMVCにより撮像結果の動きが検出され、これにより例えばジャイロセンサ等の動き検出機構が設けられていない一般の撮像装置による撮像結果を処理対象として、ユーザーの意図したカメラワークとなるように手振れ補正することができる。なおこれによりこの撮像結果の動きの検出では、ジャイロセンサ等の動き検出手段による動き検出結果を使用するようにしてもよく、この場合、この動き検出手段による動き検出結果を別途、記録して保持し、この手振れ補正装置1に入力することが必要になる。
手振れ補正処理では、この動きベクトルMVから求めた撮像結果の動きの軌跡とユーザーが意図したと考えられるカメラワークの軌跡とから手振れ補正用ベクトルが検出され(図45、図46)、この手振れ補正用ベクトルで各フィールド又は各フレームの表示位置を変位され(図48〜図50)、これにより確実に手振れ補正することができる。
なお撮像結果の動きは、動きベクトルを検出してパン、チルト等による撮像装置の向き、位置の変化による箇所の変化を適用する場合に限らず、例えば撮影している倍率の変化を適用するようにしてもよい。なおこの場合、動きベクトルを適用した場合には動きの軌跡が動きベクトルに対応する2次元空間での軌跡となるものが、さらに撮影している倍率の変化を適用した場合には、動きベクトルによる2次元に、倍率に対応する1次元を加えた3次元空間における軌跡が動きの軌跡となる。なおこの倍率にあっては、撮像結果から検出してもよく、撮像装置から別途、取得するようにしてもよい。またこれによりこれら撮影している箇所の変化、倍率の変化以外の状態の変化を動きの軌跡に適用するようにしてもよい。
より具体的に、撮像結果は、Douglas-Peucker 法により、手振れ補正に許容される許容値を越えない範囲で、動きの軌跡を折れ線近似してカメラワークの軌跡が作成され(図40〜図43)、このDouglas-Peucker 法では簡易な処理により折れ線近似することができることから、簡易な処理によりカメラワークの軌跡を生成して手振れ補正することができる。
また折れ線近似により作成した折れ線を、知識データベースに記録された評価基準で評価して評価値が作成され(図1、ステップSP103)、この評価値が増大するように折れ線を補正してカメラワークの軌跡が作成され(図1、ステップSP100−SP102−SP103−SP104−SP101)、これにより可能な限りユーザーの意図したカメラワークにより手振れ補正することができる。
またこの評価値検出用の評価基準の1つが垂直線、水平線であり、この垂直線、水平線に対する傾きが増大するに従って評価値が低下するように設定され、これによりパン、チルトの操作にあっては、プロのカメラマンが操作したようなカメラワークにより手振れ補正した撮像結果を得ることができる。
またさらにこの評価値検出用の評価基準の1つが折れ線における隣接する直線と成す角度であり、この角度が鋭角になるに従って評価値が低下するように設定され、これにより急激な動きの変化を防止するようにカメラワークの軌跡が作成される。ここで動きの変化は滑らかである方が巧く撮影されていると言え、これによってもユーザーの意図したカメラワークによる撮像結果を得ることができる。
(3)実施例の効果
以上の構成によれば、撮像結果のフィールド間又はフレーム間の動きから検出される撮像結果の動きの軌跡からユーザーが意図したカメラワークの軌跡を推定し、このカメラワークの軌跡となるように、撮像結果のフィールド間又はフレーム間の動きを補正することにより、ユーザーの意図したカメラワークとなるように手振れ補正することができる。
また撮像結果の各部の動きベクトルを処理して、撮像結果のフィールド間又はフレーム間の動きを検出したことにより、ジャイロセンサ等の動き検出機構が設けられていない一般の撮像装置による撮像結果を処理対象として、ユーザーの意図したカメラワークとなるように手振れ補正することができる。
また撮像結果の動きの軌跡とカメラワークの軌跡とから手振れ補正用ベクトルを検出し、この手振れ補正用ベクトルで各フィールド又は各フレームの表示位置を変位させることにより、簡易な構成で確実に手振れ補正することができる。
またフィールド間又はフレーム間の撮像結果の動きが、撮像装置の向き、位置の変化による撮影している箇所の変化であることから、パン、チルト等の操作に関して、ユーザーの意図したカメラワークによる撮像結果を出力することができる。
また手振れ補正に許容される許容値を越えない範囲で、撮像結果の動きの軌跡を折れ線に近似してカメラワークの軌跡を推定することから、種々の近似手法を適用してカメラワークの軌跡を簡易に作成することができる。
また折れ線化により近似するようにして、データベースに記録された巧いカメラワークであるとされる評価基準に基づいて評価値を検出し、この評価値が増大するように折れ線を補正してカメラワークの軌跡を生成することにより、可能な限りユーザーの意図したカメラワークにより手振れ補正することができる。
具体的に、折れ線の直線のうちで、水平方向及び又は垂直方向に延長する直線の水平線及び又は垂直線に対する傾きが増大するに従って評価値が低下するように、評価値を生成することにより、パン、チルト等の操作に関して、ユーザーの意図したカメラワークによる撮像結果を出力することができる。
また折れ線における直線の隣接する直線との成す角度が鋭角になるに従って評価値が低下するように評価値を生成することにより、急激な動きの変化が少なくなるようにカメラワークの軌跡を生成して手振れ補正することができる。
1……手振れ補正装置、2……テレビジョンカメラ、4……中央処理ユニット、22……フレーム間カメラ動き算出部、25……手振れ補正補間部、31……動きベクトル算出部、32……動きベクトル解析部、33……カメラ動き算出部、43……特徴点抽出手段、44……特徴点統合モジュール、46……特徴点追跡手段、47……特徴点動きベクトル算出手段、51……ヒストグラム算出部、52……ピーク抽出部、53……背景ピーク検出部、54……特徴点分類更新部、55……背景部動きベクトル検出部、71……動きベクトル整理部、72……背景部の平均ベクトル計算部、82……補正補間部、83……カメラワーク成分抽出部、64……切り出し位置算出部、85……出力フレーム算出部