(57)【特許請求の範囲】
【請求項１】
現在フレームの動きパラメータを特定し、前記現在フレームにおけるブロックについてＳＡＤ（sum of absolute difference）を求めるフレーム間支配的動き推定ロジックと、
前記ＳＡＤに一部基づいて、前記現在フレームがシーン切り替わりフレームであるかを判断するショット境界判断ロジックと、
前記動きパラメータに一部基づいて、前記現在フレームのシーケンスの安定化バージョンを提供する動画安定化ブロックと
を備え、
前記ショット境界判断ロジックは、
前記現在フレームにおける全てのブロックに対する前記ＳＡＤの平均を求め、
前記ＳＡＤの前記平均を第１の閾値と比較し、
前記ＳＡＤの前記平均が前記第１の閾値よりも小さい場合には、前記現在フレームはショット境界フレームではないと判断し、
前記ＳＡＤの前記平均が前記第１の閾値よりも小さくない場合には、前記ＳＡＤが第２の閾値よりも大きいブロックの数に基づいて、前記現在フレームがショット境界フレームであるかを判断する装置。
【請求項２】
前記フレーム間支配的動き推定ロジックは、ハードウェアに実装される請求項１に記載の装置。
【請求項３】
前記フレーム間支配的動き推定ロジックは、
前記現在フレームをダウンスケールし、
ダウンスケールした前記現在フレームを、バッファの一部分に格納し、
参照フレームにおけるブロックと現在フレームにおけるブロックとの間のＳＡＤを求め、
前記ダウンスケールした現在フレームのフレーム間支配的動きパラメータを求め、
前記フレーム間支配的動きパラメータをアップスケールする請求項１または２に記載の装置。
【請求項４】
前記ダウンスケールした現在フレームのフレーム間支配的動きパラメータを特定するロジックは、
対象ブロックを基準として最も小さいＳＡＤを有する参照フレームの一致ブロックを検索窓内において特定し、
前記一致ブロックのローカル動きベクトルを求め、
前記ローカル動きベクトルに一部基づいて、前記一致ブロックの座標を求め、
前記一致ブロックの前記座標及び前記対象ブロックの座標に一部基づいて前記支配的動きパラメータを求めるべく、類似度動きモデルを適用する請求項３に記載の装置。
【請求項５】
前記ダウンスケールした現在フレームのフレーム間支配的動きパラメータを特定するロジックは、
異常ローカル動きベクトルを考慮しない請求項４に記載の装置。
【請求項６】
前記動画安定化ブロックは、
前記動きパラメータに一部基づいて、前記現在フレームの軌跡を求める軌跡計算ブロックと、
前記現在フレームの軌跡の平滑性を向上させる軌跡平滑化ブロックと、
前記現在フレームの軌跡におけるジッタを低減させるジッタ補償ブロックとを有する請求項１から５のいずれか１項に記載の装置。
【請求項７】
前記動画安定化ブロックは、
前記現在フレームの軌跡と平滑化された前記軌跡との差分に一部基づいて、ジッタ動きパラメータを求め、
前記ジッタ動きパラメータを使用して、前記現在フレームをワープする請求項６に記載の装置。
【請求項８】
現在フレームの動きパラメータを求め、前記現在フレームにおけるブロックについてＳＡＤ（sum of absolute difference）を求めるハードウェアに実装されたフレーム間支配的動き推定器と、
前記ＳＡＤに一部基づいて、前記現在フレームが、シーン切り替わりフレームであるかを判断するロジックと、
前記動きパラメータに一部基づいて、前記現在フレームの安定化バージョンを提供するロジックと、
動画を受信及び表示するディスプレイと
を備え、
前記現在フレームがシーン切り替わりフレームであるかを判断する前記ロジックは、
前記現在フレームにおける全てのブロックに対する前記ＳＡＤの平均を求めるロジックと、
前記ＳＡＤの前記平均を第１の閾値と比較するロジックと、
前記ＳＡＤの前記平均が前記第１の閾値よりも小さい場合には、前記現在フレームはショット境界フレームではないと判断するロジックと、
前記ＳＡＤの前記平均が前記第１の閾値よりも小さくない場合には、前記ＳＡＤが第２の閾値よりも大きいブロックの数に基づいて、前記現在フレームがショット境界フレームであるかを判断するロジックとを有するシステム。
【請求項９】
前記判断するロジック及び前記提供するロジックは、コンピュータ可読媒体に格納され、プロセッサによって実行される請求項８に記載のシステム。
【請求項１０】
前記フレーム間支配的動き推定器は、
前記現在フレームをダウンスケールし、
ダウンスケールした前記現在フレームを、バッファの一部分に格納し、
参照フレームにおけるブロックと現在フレームにおけるブロックとの間のＳＡＤを求め、
前記ダウンスケールした現在フレームのフレーム間支配的動きパラメータを求め、
前記フレーム間支配的動きパラメータをアップスケールする請求項８または９に記載のシステム。
【請求項１１】
前記現在フレームの安定化バージョンを提供する前記ロジックは、
前記動きパラメータに一部基づいて、前記現在フレームの軌跡を求めるブロックと、
前記現在フレームの軌跡の平滑性を向上させる軌跡平滑化ブロックと、
前記現在フレームの軌跡におけるジッタを低減させるロジックと、
前記軌跡と平滑化された前記軌跡との差分に一部基づいて、ジッタ動きパラメータを求めるロジックと、
前記ジッタ動きパラメータを使用して、前記現在フレームをワープするロジックとを有する請求項８から１０のいずれか１項に記載のシステム。
【請求項１２】
動画の現在フレームを受信する段階と、
前記現在フレームをダウンスケールする段階と、
ダウンスケールされた前記現在フレームを、バッファの一部に格納する段階と、
ダウンスケールされた参照フレームにおけるブロックと、前記ダウンスケールされた現在フレームにおける対象ブロックとの間のＳＡＤを求める段階と、
前記ダウンスケールされた現在フレームのフレーム間支配的動きパラメータを求める段階と、
前記フレーム間支配的動きパラメータ及び前記ＳＡＤのうちの少なくとも1つに一部基づいて、動画安定化及びショット境界検出のうちの少なくとも１つを実行する段階と
を備え、
前記ショット境界検出を実行する段階は、
前記現在フレームにおける全てのブロックに対する前記ＳＡＤの平均を求める段階と、
前記ＳＡＤの前記平均を第１の閾値と比較する段階と、
前記ＳＡＤの前記平均が前記第１の閾値よりも小さい場合には、前記現在フレームはショット境界フレームではないと判断する段階と、
前記ＳＡＤの前記平均が前記第１の閾値よりも小さくない場合には、前記ＳＡＤが第２の閾値よりも大きいブロックの数に基づいて、前記現在フレームがショット境界フレームであるかを判断する段階とを含む、コンピュータに実装される方法。
【請求項１３】
前記フレーム間支配的動きパラメータをアップスケールする段階を更に備える請求項１２に記載の方法。
【請求項１４】
前記ダウンスケールされた現在フレームのフレーム間支配的動きパラメータを求める段階は、
前記対象ブロックを基準として最も小さいＳＡＤを有する参照フレームの一致ブロックを検索窓内において特定する段階と
前記一致ブロックのローカル動きベクトルを求める段階と
異常ローカル動きベクトルを考慮しない段階と、
前記ローカル動きベクトルに一部基づいて、前記一致ブロックの座標を求める段階と、
前記一致ブロックの前記座標及び前記対象ブロックの座標に一部基づいて前記支配的動きパラメータを求めるべく、類似度動きモデルを適用する段階とを有する請求項１２または１３に記載の方法。
【請求項１５】
前記動画安定化を実行する段階は、
前記動きパラメータに一部基づいて、前記現在フレームの軌跡を求める段階と、
前記現在フレームの軌跡の平滑性を向上させる段階と、
前記現在フレームの軌跡におけるジッタを低減させる段階と、
前記現在フレームの軌跡と平滑化された前記軌跡との間の差分に一部基づいて、ジッタ動きパラメータを求める段階と、
前記ジッタ動きパラメータを使用して、前記現在フレームをワープする段階とを含む請求項１２から１４のいずれか１項に記載の方法。
【請求項１６】
前記ダウンスケールする段階、前記格納する段階、前記ＳＡＤを求める段階、及び、前記フレーム間支配的動きパラメータを求める段階は、ハードウェアに実装される請求項１２から１５のいずれか１項に記載の方法。
【請求項１７】
前記動画安定化及び前記ショット境界検出のうちの少なくとも１つを実行する前記段階は、プロセッサ実行ソフトウェア命令として実装される請求項１２から１６のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示される特徴は、概して、共通処理要素使用した動画安定化及び動画ショット境界検出に関する。
【背景技術】
【０００２】
動画安定化（Video stabilization）は、デジタルビデオカメラで撮像された動画シーケンスの視覚的品質を改善することを目的としている。カメラを手に持って、又は、不安定なプラットフォームに搭載して撮像を行うと、望ましくないカメラの動きにより撮像された動画が揺れてしまうことがあり、この場合、視聴者の満足度を下げてしまう。動画安定化技術を採用して、撮像された動画フレームから望ましくない動きを取り除く又は低減させることができる。
【０００３】
動画は通常、複数のシーンから構成され、シーン各々は、１以上のショット（shot）を含む。１ショットは、１つの連続的な動きの間に、１つのカメラによって撮像されたフレームの１シーケンスとして定義される。ショット遷移とも称される、１のショットから別のショットへの変化は、２種類存在し、急激な遷移（カット）（abrupt transition（CUT））と段階的遷移（gradual transition：GT）がある。動画ショット境界検出は、ショット境界のフレームを検出することを目的とする。動画ショット境界検出は、ビデオコーディング、ビデオインデキシング（video indexing）、動画検索及び動画編集におけるフレーム間特定（intra frame identification）のように、様々なアプリケーションで使用される。
【０００４】
本発明の実施形態は、例示を目的として、発明を限定することを意図せずに示されており、同様な要素には同様な参照番号を付して図面を参照して以下で説明する。
【図面の簡単な説明】
【０００５】
【図１】一実施形態に係る動画安定化システムのブロック図である。
【図２】一実施形態に係るフレーム間支配的動き推定モジュールのブロック図である。
【図３】一実施形態に係る動画安定化の改善を実行するプロセスのフローチャートである。
【図４】一実施形態に係るショット境界検出システムのブロック図である。
【図５】一実施形態に係るショット境界判断スキームのプロセスを示した図である。
【図６】一実施形態に係る動画安定化及びショット境界検出を実行するシステムのブロック図である。
【図７】一致ブロックが現在フレームにおける対象ブロックに対応するように、検出ウィンドウを使用して、参照フレームにおける一致ブロックを特定する例を示した図である。
【発明を実施するための形態】
【０００６】
本明細書において、本発明の「一実施形態」又は「ある実施形態」と呼ぶものは、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている「一実施形態において」又は「ある実施形態では」という表現は、必ずしも同一の実施形態を示していない。また、特定の特徴、構造又は特性は、１以上の実施形態において組み合わせられてもよい。
【０００７】
グラフィックス処理システムは、複数の動画処理機能、及び、様々なビデオ（動画）エンコーディング又はデコーディング規格をサポートする必要がある場合が存在する。様々な実施形態では、グラフィックス処理システムは、動画安定化及び動画ショット境界検出特徴の両方をサポートすることを可能にする。具体的には、様々な実施形態において、グラフィックス処理システムが、動画安定化及びショット境界検出の両方に、特定の処理能力を使用することを可能とする。ある実施形態では、グラフィックス処理システムのダウンサンプリング機能及びブロック動き検索機能が、動画安定化及び動画ショット境界検出の両方に対して使用される。これらの機能を再利用することによって、グラフィックス処理システムの製造コストを下げることができ、グラフィックス処理システムのサイズを小さくすることが可能となる。
【０００８】
様々な実施形態は、これらに限定するわけではないが、例えば、ＭＰＥＧ−４パート１０アドバンストビデオコーデック（ＡＶＣ）／Ｈ．２６４等の様々な規格に従って、静止画又は動画をエンコーディング又はデコーディングすることができる。Ｈ．２６４規格は、Joint Video Team (ＪＶＴ)によって規定された規格であり、ＶＣＥＧ（Video Coding Expert Group）とも称されるＩＴＵ−Ｔ  ＳＧ１６Ｑ．６、及び、ＭＰＥＧ（Motion Picture Expert Group）とも称されるＩＳＯ−ＩＥＣ ＪＴＣ１／ＳＣ２９／ＷＧ１１（２００３年）が含まれる。また、実施形態は、様々な静止画及び動画圧縮システムで使用することができ、これに限定されないが、例えば、オブジェクト指向ビデオコーディング、モデルベースビデオコーディング、スケーラブルビデオコーディング、及び、ＭＰＥＧ−２（スイス、ジュネーブの国際標準化機構から入手可能なＩＳＯ／ＩＥＣ １３８１８−１（２０００年））、ＶＣ１（ニューヨーク、ホワイトプレーンズ１０６０１のＳＭＰＴＥから入手可能なＳＭＰＴＥ  ４２  ＩＭ（２００６年））、並びに、ＭＰＥＧ−４、ＭＰＥＧ−２及びＶＣ１のバリエーションで使用することができる。
【０００９】
図１には、一実施形態に係る動画安定化システム１００のブロック図が示されている。動画安定化システム１００は、フレーム間支配的動き推定（ＤＭＥ）ブロック１０２、軌跡計算ブロック１０４、軌跡平滑化ブロック１０６、及び、ジッタ補償ブロック１０８を備える。フレーム間ＤＭＥブロック１０２は、動画シーケンスにおける、２つの連続したフレーム間におけるカメラの振動を検出する。フレーム間ＤＭＥブロック１０２は、ローカル動きベクトルを特定し、ローカル動きベクトルに基づいて支配的な動きパラメータを決定する。軌跡計算ブロック１０４は、決定された支配的動きベクトルを使用して、動き軌跡を計算する。軌跡平滑化ブロック１０６は、計算された動き軌跡を平滑化して、平滑な軌跡を提供する。ジッタ補償モジュール１０８は、平滑化された軌跡におけるジッタを低減させる。
【００１０】
図２には、一実施形態に係るフレーム間支配的動き推定モジュール２００のブロック図が示されている。モジュール２００は、フレームダウンサンプリングブロック２０２、参照バッファ２０４、ブロック動き検索ブロック２０６、逐次最小二乗法ソルバ（iterative least square solver）ブロック２０８、及び、動きアップスケールブロック２１０を含む。
【００１１】
ダウンサンプリングブロック２０２は、入力フレームを小さなサイズへとダウンスケールする。例えば、約４〜５のダウンサンプリング係数が使用されてもよく、その他の値を使用することもできる。ある実施形態では、ダウンサンプリングブロック２０２は、約１６０×１２０ピクセルの大きさの小型フレームを提供する。ダウンサンプリングされたフレームは、少ない数のブロックを有する。１つのブロックは、８×８、１６×１６、又は、共通処理要素の設計に応じてその他のサイズであってもよい。一般的には、１６×１６の大きさのブロックが使用される。また、ダウンスケールプロセスでは、ブロック動きベクトルがダウンスケールされる。様々な実施形態において、動きベクトルは、フレーム間の、画素、ブロック又は画像の垂直方向及び水平方向の変位（displacement）を表す。フレームをダウンスケールすると、２つのフレーム間のｘ軸及びｙ軸に沿った動きもダウンスケールされる。例えば、ダウンサンプリング係数が４であり、動きベクトルが（２０，２０）である場合、ダウンスケールされたフレームにおけるダウンスケールされた動きベクトルは、およそ（５，５）となる。その結果、小さな画像上でのウィンドウ／領域限定のブロック動き検索は、元のフレームにおける動きよりも大きな動きを含むことができるようになる。このようにして、処理ブロックを特定するのに使用される処理速度及びプロセッシングリースを低減することができる。
【００１２】
ダウンサンプリングブロック２０２は、ダウンサンプルされたフレームを参照バッファ２０４に格納する。参照バッファ２０４は、少なくとも動画安定化及びショット境界検出を実行に利用可能なメモリにおける１領域であってもよい。領域は、バッファ又はバッファの一部であってもよい。例えば、領域がバッファの一部である場合、同じバッファのその他の部分を、同時に又は別の時に、その他のアプリケーション又はプロセスが使用してもよい。様々な実施形態において、動画安定化及びショット境界検出には、１つの参照（reference）フレームが使用される。この場合、参照バッファのサイズは、１フレームを格納するように設定することができる。参照フレームが更新される都度、参照フレームは、別の参照フレームで置き換えられてもよい。
【００１３】
ブロック動き検索ブロック２０６は、ダウンサンプリングブロック２０２からダウンサンプルされた現在のフレーム、及び、参照バッファ２０４からダウンサンプルされた１つ前の参照フレームを受信する。ブロック動き検索ブロック２０６は、予め規定された検索ウィンドウ内に、選択されたブロックのローカル動きベクトルを特定する。例えば、特定された動きベクトルは、現在のフレームにおけるターゲットのブロックを基準として、検索ウィンドウ内でＳＡＤ（sum of absolute difference）の最小値を有するブロックと関連付けられた動きベクトルであってもよい。検索ウィンドウにおけるブロックは、マクロブロックであってもよいし、８×８ピクセルのような小ブロックであってもよく、その他のサイズを使用することができる。ある実施形態では、ブロックサイズは、１６×１６ピクセルであり、検索ウィンドウは、４８×３２ピクセルに設定される。様々な実施形態では、ブロック動き検索ブロック２０６は、フレーム境界におけるブロックと関連付けられた動きベクトルを検索しない。
【００１４】
ある実施形態では、ブロック動き検索ブロック２０６は、各フレームのマクロブロックのＳＡＤ（sum of absolute difference）を算出する。例えば、あるフレームにおけるマクロブロック各々のＳＡＤの算出は、参照フレームにおける１６×１６ピクセルのマクロブロック各々と、現在のフレームにおける１６×１６ピクセルのマクロブロックを比較することを含む。例えば、ある実施形態では、参照フレームの４８×３２ピクセルの検索ウィンドウ内の全てのマクロブロックについて、現在のフレームにおける対象の１６×１６ピクセルのマクロブロックとの比較を行ってもよい。対象のマクロブロックは、１つ１つ選択してもよいし、チェス盤のパターンのように選択してもよい。完全な検索を行うためには、４８×３２検索ウィンドウ内の全てのマクロブロックと、対象のマクロブロックとの比較を行ってもよい。この場合、３２×１６（＝５１２）個のマクロブロックの比較が行われてもよい。４８×３２検索ウィンドウ内の１６×１６マクロブロックを移動させる場合、移動させる位置が３２×１６個存在する。したがって、この例では、５１２個のＳＡＤが算出される。
【００１５】
図７は、マッチングを行うブロックが現在のフレームにおける対象のブロックに対応する場合の検出ウィンドウを使用して、参照フレームにおける一致ブロックの特定を行う例を示した図である。ブロック動き検索の例は、以下のような段階を含んでもよい。（１）現在のフレームにおいて、複数の対象ブロックを選択する。対象のブロックの座標を、（ｘ＿ｉ，ｙ＿ｉ）とし、ここでｉは、ブロックのインデックス（添え字）である。現在のフレームにおける対象のブロックは、１つ１つ選択することができる。また、チェス盤のパターンのように選択することもでき、その他の選択方法を使用することもできる。（２）現在のフレームにおける対象のブロックｉについて、一致ブロックを特定するべく、ブロック動き検索を検索ウィンドウ内で使用して、ローカル動きベクトル（ｍｖｘ＿ｉ，ｍｖｙ＿ｉ）を取得する。対象のブロックｉについて、参照フレームにおける検索ウィンドウ内の一致ブロックを見つけることは、参照フレームの検索ウィンドウ内の対象となるブロック全てと、対象のブロックとの比較を行い、最小ＳＡＤを有するブロックを一致したブロックと見なすことを含んでもよい。（３）ブロックｉに対するブロック動き検索の後、次の式を計算する。ｘ'＿ｉ＝ｘ＿ｉ＋ｍｖｘ＿ｉ  及び  ｙ'＿ｉ＝ｙ＿ｉ＋ｍｖｙ＿ｉそして、（ｘ＿ｉ，ｙ＿ｉ）及び（ｘ'＿ｉ，ｙ'＿ｉ）を対と見なす。（４）現在のフレームにおいて選択された対象のブロックの全てに対するブロック動き検出を実行して、複数の対（ｘ＿ｉ，ｙ＿ｉ）及び（ｘ'＿ｉ，ｙ'＿ｉ）を取得する。
【００１６】
図７に示すように、現在フレームにおける１つの対象ブロック（ｘ，ｙ）について、４８×３２検索ウィンドウが参照フレームに規定され、検索ウィンドウの位置を、（ｘ，ｙ）にセンタリングすることができる。ブロック動き検索によって、検索ウィンドウ内に一致するブロックを見つけた後で、対象のブロックに対するローカル動きベクトル（ｍｖｘ，ｍｖｙ）を求める。一致ブロック（ｘ'，ｙ'）の座標は、ｘ'＝ｘ＋ｍｖｘ、ｙ'＝ｙ＋ｍｖｙと表される。そして、（ｘ，ｙ）及び（ｘ'，ｙ'）を対と見なす。
【００１７】
図２を再び参照して、逐次最小二乗法ソルバ２０８は、特定された少なくとも２つのローカル動きベクトルに基づいて、支配的な動きパラメータを決定する。ある実施形態では、逐次最小二乗法ソルバ２０８は、図２に示した類似度動きモデルを適用して、支配的なフレーム間動きパラメータを近似する。類似度動きモデルは、次の式（１）のような形式で表すことができる。
【数１】
0005435518.tif 000002
ここで、（ｘ'，ｙ'）は、参照フレームにおける一致ブロックの座標であり、（ｘ，ｙ）は、現在フレームにおけるブロックの座標であり、（ａ，ｂ，ｃ，ｄ）は、支配的動きパラメータであり、ここで、パラメータａ及びｂは、回転に関係し、パラメータｃ及びｄは、並進関係している。例えば、ブロックの座標（ｘ'，ｙ'）及び（ｘ，ｙ）は、一貫して使用されている限り、ブロックの左上隅、右下隅又は中心に規定することができる。座標が（ｘ，ｙ）であり、（ブロック２０６から）特定されたローカル動きベクトルが（ｍｖｘ，ｍｖｙ）であるブロックの場合、一致ブロックの座標（ｘ'，ｙ'）は、ｘ'＝ｘ＋ｍｖｘ、ｙ'＝ｙ＋ｍｖｙで算出される。様々な実施形態において、１つのフレームの（ｘ，ｙ）及び（ｘ'，ｙ'）の全ての対が式（１）で使用される。逐次最小二乗法ソルバ２０８は、最小二乗法（ＬＳ）を使用して式（１）を解くことによって、動きパラメータ（ａ，ｂ，ｃ，ｄ）を決定する。
【００１８】
逐次最小二乗法ソルバ２０８が、異常ローカル動きベクトル（outlier local motion vector）を含めて計算してしまうと、支配的動きの算出に悪影響を与える可能性がある。現在フレームにおける幾つかのブロックが、前景（foreground）オブジェクトを含む、又は、同じパターンが繰り返されている領域から選択された場合には、異常ローカル動きベクトルは、ブロック動き検索ブロック２０６によって特定されてもよい。様々な実施形態において、逐次最小二乗法ソルバ２０８は、逐次最小二乗法（ＩＬＳ）ソルバを使用して、異常ローカル動きベクトルを特定して計算から除外することによって、異常ローカル動きベクトルの影響を低減する。このような実施形態において、上記の式（１）を使用して支配的動きパラメータを決定した後、逐次最小二乗法ソルバ２０８は、現在のフレームにおける残りのブロック位置（ｘｉ，ｙｉ）の二乗推定誤差（ＳＥＥ）を求める。ブロック位置（ｘｉ，ｙｉ）は、一貫して使用されている限り、ブロックの左上隅、右下隅又はブロック中心であってもよい。
【数２】
0005435518.tif 000003
ローカル動きベクトルは、対応する二乗推定誤差（ＳＥＥ）が次の式（３）を満たす場合には、異常値であると見なされる。
【数３】
0005435518.tif 000004
ここで、Ｔは定数であり、経験的に１．４に設定することができるが、その他の値を使用してもよい。ｎは、現在フレームにおける残りのブロックの数である。
【００１９】
異常ローカル動きベクトルが検出されなくなるまで、又は、残りのブロックの数が所定の閾値数未満となるまで、上記の式（１）−（３）を繰り返す。例えば、閾値数を１２とすることができるが、その他の数を使用してもよい。式（１）−（３）のイタレーション各々において、異常ローカル動きベクトル及びこの異常ローカル動きベクトルと関連付けられたブロックは、計算から除外される。残りのブロックと関連付けられた動きベクトルを対象とする。異常ローカル動きベクトルを計算から除外した後、逐次最小二乗法ブロック２０８は、動きパラメータ算出するべく、式（１）を実行する。
【００２０】
動きアップスケールブロック２１０は、並進動きパラメータｃ及びｄを、ダウンスケールブロック２０２によって適用されたダウンサンプリング係数の逆数によって、アップスケールする。ダウンサンプリングプロセスは、回転、及び、２つのフレーム間のスケーリングの動きに影響を与えないことから、パラメータａ及びｂは、アップスケールされなくてもよい。
【００２１】
図１を再び参照し、軌跡計算ブロック１０４が、軌跡を算出する。例えば、軌跡計算ブロック１０４は、以下の式（４）で規定される累積動きを使用して、フレームｊの動きの軌跡、Ｔｊを求める。
【数４】
0005435518.tif 000005
ここで、Ｍｊは、フレームｊとフレームｊ−１との間のグローバル動き行列であり、支配的動きパラメータ（ａ，ｂ，ｃ，ｄ）に基づく。式（４）において、支配的動きパラメータ（ａ，ｂ，ｃ，ｄ）は、現在のフレーム（フレームｊと称される）に対するものである。
【００２２】
フレーム間グローバル動きベクトルは、カメラ意図した動きと、カメラのジッタの動きとを含む。軌跡平滑化ブロック１０６は、フレーム間グローバル動きベクトルから、カメラジッタの動きを低減させる。様々な実施形態において、軌跡平滑化ブロック１０６は、動き軌跡平滑化を使用して、カメラジッタの動きを低減させる。動き軌跡の低周波数成分は、カメラが意図した動きであると見なされる。軌跡計算ブロック１０４が、各フレームの動き軌跡を算出し、軌跡平滑化ブロック１０６が、これに限定されないが、例えば、ガウシアンフィルタのようなローパスフィルタを使用して、動き軌跡の平滑度を高める。ガウシアンフィルタの窓は、２ｎ＋１個のフレームに設定することができる。フィルタリングプロセスでは、ｎ個のフレーム分の遅延が生じる。経験的に、ｎを５に設定することができ、その他の値を使用してもよい。より平滑な動き軌跡Ｔ'ｊを、式（５）を使用して求めることができる。
【数５】
0005435518.tif 000006
ここで、ｇ（ｋ）は、ガウシアンフィルタのカーネルである。ガウシアンフィルタは、ローパスフィルタであり、
0005435518.tif 000007
である。変化量の値δを規定した後で、フィルタの係数を計算することができる。ある実施形態では、変化量の値は、１．５に設定されるが、その他の値を設定してもよい。変化量の値を大きくすると、より平滑な動き軌跡が生成される。
【００２３】
ジッタ補償モジュール１０８は、平滑化されていない元の軌跡におけるジッタを補償する。カメラのジッタの動きは、軌跡の高周波数成分である。軌跡の高周波数成分は、元の軌跡と平滑化された軌跡との間の差分である。ジッタ補償モジュール１０８は、高周波数成分を補償し、より安定化された現在のフレームを提供する。例えば、現在フレームに対する、より安定化されたフレーム表現であるフレームＦ'（ｊ）は、ジッタ動きパラメータを使用して、現在フレームＦ（ｊ）をワープ（warp）することによって求めてもよい。
【００２４】
ｊ番目の現在フレームＦ（ｊ）に対する軌跡平滑化を実行した後、Ｔ（ｊ）とＴ'（ｊ）との間の動き差分（式（４）及び式（５）に示される）が、ジッタの動きであると見なされる。ジッタの動きは、ジッタ動きパラメータ（ａ'，ｂ'，ｃ'，ｄ'）によって表すことができる。以下に、Ｔ（ｊ）とＴ'（ｊ）との間の差分から、（ａ'，ｂ'，ｃ'，ｄ'）を求める態様を説明する。Ｔ（ｊ）のジッタ動きパラメータが（ａ１，ｂ１，ｃ１，ｄ１）であり、Ｔ'（ｊ）の平滑化されたジッタ動きパラメータが（ａ２，ｂ２，ｃ２，ｄ２）であると仮定する。θ１＝ａｒｃｔａｎ（ｂ１／ａ１）、及び、θ２＝ａｒｃｔａｎ（ｂ２／ａ２）とし、ジッタ動きパラメータは、以下のように求められる。
ａ'＝ｃｏｓ（θ１−θ２），ｂ'＝ｓｉｎ（θ１−θ２），ｃ'＝ｃｌ−ｃ２，ｄ'＝ｄ１−ｄ２ワーププロセスは、例えば、以下のように行われる。（１）より安定化されたフレームＦ'（ｊ）における任意の画素位置（ｘ，ｙ）について、画素値をＦ'（ｘ，ｙ，ｊ）と表す。（２）現在フレームＦ（ｊ）における対応する位置（ｘ'，ｙ'）は、ｘ'＝ａ'＊ｘ＋ｂ'＊ｙ＋ｃ１、及び、ｙ'＝−ｂ'＊ｘ＋ａ'＊ｙ＋ｄ'で求められる。（３）ｘ'及びｙ'が整数の場合、Ｆ'（ｘ，ｙ，ｊ）＝Ｆ（ｘ'，ｙ'，ｊ）とする。それ以外の場合には、位置（ｘ'，ｙ'）付近のＦ（ｊ）における画素を使用して、双線形補間法（bi-linear interpolation）を適用し、Ｆ'（ｘ，ｙ，ｊ）を計算する。（４）（ｘ'，ｙ'）が、現在フレームＦ（ｊ）の外側である場合、Ｆ'（ｘ，ｙ，ｊ）を黒色画素に設定する。
【００２５】
図３は、一実施形態に係る動画安定化の改善を実行するプロセスのフローチャートである。ブロック３０２は、フレームサイズ・ダウンスケーリングを実行する。例えば、ダウンサンプリングブロック２０２を参照して説明した上記の方法を使用して、フレームサイズ・ダウンスケーリングを実行してもよい。
【００２６】
ブロック３０４は、２つ以上のローカル動きベクトルを特定するべく、ブロック動き検索を実行することを含む。例えば、ブロック動き検索ブロック２０６を参照して説明した上記の方法を用いて、１以上のローカル動きベクトルを特定してもよい。
【００２７】
ブロック３０６は、支配的な動きパラメータを求めることを含む。例えば、逐次最小二乗法ブロック２０８を参照して説明した上記の方法を使用して、支配的動きパラメータを求めてもよい。
【００２８】
ブロック３０８は、アップスケール支配的動きパラメータを含む。例えば、アップスケールブロック２１０を参照して説明した上記の方法を使用して、支配的動きパラメータをアップスケールしてもよい。
【００２９】
ブロック３１０は、軌跡を算出することを含む。例えば、軌跡計算ブロック１０４を参照して説明した上記の方法を使用して、軌跡を求めてもよい。
【００３０】
ブロック３１２は、軌跡の平滑性を改善することを含む。例えば、軌跡平滑化ブロック１０６を参照して説明した上記の方法を使用して、軌跡平滑化を実行してもよい。
【００３１】
ブロック３１４は、現在フレームの安定化したバージョンを提供するべく、現在フレームをワープすることによって、ジッタ補償を実行することを含む。例えば、ジッタ補償モジュール１０８を参照して説明した上記の技術を使用して、ジッタを低減してもよい。
【００３２】
図４は、一実施形態に係るショット境界検出システムのブロック図である。様々な実施形態において、動画安定化システム１００が使用したフレーム間支配的動き推定ブロック１０２から得られた結果の一部を、ショット境界検出システム４００が使用する。例えば、ダウンサンプリングブロック２０２、参照バッファ２０４及びブロック動き検索２０６から取得可能な情報と同じ情報を、動画安定化及びショット境界検出の両方又は何れかにおいて使用することができる。ある実施形態では、ショット境界検出システム４００は、急なシーン遷移（すなわち、カット（CUT）シーン）を検出する。ショット境界判定ブロック４０２は、フレームが、シーン切り替わりフレームであるか否かを判断する。例えば、ショット境界判定ブロック４０２は、図５を参照して説明したプロセスを使用して、現在フレームがシーン切り替わりフレームであるかを判断してもよい。
【００３３】
図５は、一実施形態に係るショット境界判断スキームのプロセスを示した図である。ブロック５０２及び５０４は実質的に、ブロック３０２及び３０４とそれぞれ同じである。
【００３４】
ブロック５０６は、現在フレームについて、ＳＡＤ（sum of absolute difference）の平均を求めることを含む。ここで、現在フレームは、ダウンスケールされたフレームである。例えば、ブロック５０６は、ブロック動き検索ブロック２０６から、現在フレームにおけるマクロブロック各々に対するＳＡＤを受信することを含んでもよく、現在フレームにおける全てのマクロブロックのＳＡＤ平均を求めることを含んでもよい。
【００３５】
ブロック５０８は、平均ＳＡＤが、閾値Ｔ０より小さいかを判断する。経験的に、１６×１６のブロックの場合には、Ｔ０を約１６００に設定することができ、その他の値を使用してもよい。平均ＳＡＤが閾値よりも小さい場合には、フレームは、ショット境界フレームではない。平均ＳＡＤが閾値よりも小さくない場合には、ブロック５０８からブロック５１０に移る。
【００３６】
ブロック５１０は、閾値Ｔ１よりも大きいＳＡＤを有するブロックの数を求めることを含む。閾値Ｔ１は、経験的に、平均ＳＡＤの４倍の値に設定することができるが、その他の値を採用してもよい。
【００３７】
ブロック５１２は、閾値Ｔ１よりも大きなＳＡＤを有するブロックの数が、別の閾値であるＴ２よりも少ないかを判断する。閾値Ｔ２は、経験的に、フレーム内の対象となるブロック全数の２／３に設定することができるが、その他の値をＴ２に使用してもよい。閾値Ｔ１よりも大きなＳＡＤを有するブロックの数が、閾値Ｔ２よりも少ない場合、現在フレームは、ショット境界フレームとは見なされない。閾値Ｔ１よりも大きなＳＡＤを有するブロックの数が、閾値Ｔ２以上である場合、現在フレームは、ショット境界フレームと見なされる。
【００３８】
図６は、一実施形態に係る動画安定化及びショット境界検出を実行するシステムのブロック図である。様々な実施形態において、フレームダウンサンプリングオペレーション及びブロック動き検索オペレーションは、ハードウェアに実装される。フレームダウンサンプリングオペレーション及びブロック動き検索オペレーションは、動画安定化アプリケーション及びショット境界検出アプリケーションの両方によって共有される。様々な実施家形態において、動画安定化（ＶＳ）、軌跡計算、軌跡平滑化、ジッタ動き算出及びジッタ補償オペレーションは、プロセッサによって実行されるソフトウェアで実行される。様々な実施形態において、ショット境界検出（ＳＢＤ）は、プロセッサによって実行されるソフトウェアにおいて実行され、ショット境界検出は、ハードウェア実装された、フレームダウンサンプリングオペレーション及びブロック動き検索オペレーションで得られた結果を使用する。その他の動画又は画像処理技術において、ダウンサンプリング又はブロック動き検索によって得られた結果を使用してもよい。
【００３９】
処理が行われた画像及び動画を、トランジスタベースのメモリ又は磁気メモリのようなあらゆる種類のメモリに格納しておくことができる。
【００４０】
フレームバッファは、メモリ内の１領域であってもよい。メモリは、これに限定されるわけではないが、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）のような揮発性メモリデバイス、又は、その他の種類の半導体ベースのメモリ、又は磁気記憶デバイスのような磁気メモリとして実装することができる。
【００４１】
例えば、ビデオエンコーディング、順次走査変換（de-interlacing）、超解像（super-resolution）、フレームレート変換等の複数の動画処理機能を有するメディアプロセッサを設計する際に、ハードウェアを再利用することは、コスト削減及びデバイスの小型に非常に有用である。様々な実施形態は、動画安定化機能及び動画ショット境界検出機能の両方を同じメディアプロセッサに実装する複雑性を低減する。特に、メディアプロセッサがブロック動き推定機能をサポートする場合には、この効果が顕著となる。
【００４２】
本明細書に記載されるグラフィックス及び／又は動画処理技術は、様々なハードウェアアーキテクチャに実装されてもよい。例えば、グラフィックス及び／又は動画機能は、チップセット内に集積化されてもよい。これに替えて、別個にグラフィックス及び／又はビデオプロセッサを使用してもよい。別の実施形態として、グラフィックス及び／又は動画機能は、マルチコアプロセッサを含む汎用プロセッサによって実装されてもよい。また、別の実施形態では、機能は、静止画又は動画を表示可能なディスプレイを備えるポータブルコンピュータ及び携帯電話のような家庭用電子機器に実装されてもよい。家庭用電子機器はまた、イーサーネット（登録商標）（例えば、ＩＥＥＥ８０２．３）又は無線規格（例えば、ＩＥＥＥ８０２．１１又は１６）といった任意の規格を使用して、インターネットのようなネットワークと接続可能なネットワークインターフェースを有してもよい。
【００４３】
本発明の実施形態は、マザーボードを使用して接続された１以上のマイクロチップ又は集積回路、ハードワイヤード・ロジック、メモリデバイスに格納され、マイクロプロセッサによって実行されるソフトウェア、ファームウェア、特定用途向け集積回路（ＡＳＩＣ）、及び／又は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）のうちの何れか又はこれらの組み合わせとして実装されてもよい。"ロジック（logic）"という言葉は、例えば、ソフトウェア又はハードウェア、及び／又は、ソフトウェアとハードウェアとの組み合わせを含んでもよい。
【００４４】
本発明の実施形態は、例えば、機械実行可能命令を格納する１以上の機械可読媒体を含むコンピュータプログラム物品として提供されてもよく、機械実行可能命令は、コンピュータ、コンピュータネットワーク又はその他の電子デバイスといった１以上の機械によって実行されると、本発明の実施形態に係るオペレーションを１以上の機械に実行させる。記憶媒体としては、特にこれに限定されないが、フロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、磁気光学ディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能−プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、電気的消去可能−プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、磁気又は光学カード、フラッシュメモリ、又は、その他の種類の機械実行可能命令を格納するのに好適なメディア／機械可読媒体を含んでもよい。
【００４５】
添付の図面及び上記の説明は、本発明の例について記載したものである。複数の異なる機能項目が示されたが、当業者であれば、このような構成要素の１以上を、１つの機能要素として組み合わせてもよいことは明らかである。これに替えて、特定の要素を、複数の機能要素に分割してもよい。１つの実施形態からの要素を、別の実施形態に付加してもよい。例えば、上記したプロセスの順番を変更してもよく、明細書で説明された態様に限定されない。更に、フローチャートに記載されたアクションは、図示された順番で必ずしも実装する必要はなく、全てのアクションを必ずしも実行する必要はない。別の動作に依存しない動作は、別の動作と平行して実行してもよい。本発明の範囲は、これら特定の例に決して限定されない。明細書に明示的に記載されているか否かに関わらず、構造、寸法、使用する材料等において様々な変形例が可能である。本発明の範囲は、少なくとも、添付の特許請求の範囲で与えられる範囲と同じ広さである。
【図１】
0005435518.tif 000008
【図２】
0005435518.tif 000009
【図３】
0005435518.tif 000010
【図４】
0005435518.tif 000011
【図５】
0005435518.tif 000012
【図６】
0005435518.tif 000013
【図７】
0005435518.tif 000014