説明

汎用プラットフォーム・ビデオ画像安定化

ビデオ画像安定化は、利用可能なマルチメディア・ディジタル信号処理コンポーネントを評価し、ビデオ安定化の処理部分に対するビデオ安定化性能についての階層構造にしたがって、利用する利用可能なコンポーネントを選択することによって、計算デバイスの汎用プラットフォーム上において性能向上を図る。ビデオ安定化は、ビデオ・フレームのダウンサンプルした解像度のバージョンから開始するピラミッド・ブロック構造関係にしたがって、精細動きベクトル検索を採用して、動きベクトル推定を改善する。また、ビデオ安定化は、局所動きベクトルを処理するためにランダム・サンプル・コンセンサス手法を実行することによって、そして動きベクトルの信頼性に対する選択規準によって、全域動き変換の推定も改善する。ビデオ安定化は、誤差検出および訂正を用いたリアル・タイムの一パス時間スムージングまたはオフラインの二パス時間スムージングによって、手ぶれの除去を滑らかに行う。

【発明の詳細な説明】
【背景技術】
【0001】
[0001] 移動体電話機、小型カメラ、およびマルチメディア・プレーヤーのような多目的軽量ハンドヘルド電子デバイスにビデオ・カメラ能力を組み込むことは、増々普通のことになりつつある。多目的ハンドヘルド・デバイスのようなもっと大きな専用目的ビデオ・カムコーダーとは異なり、このような多目的ハンドヘルド・デバイスは、通例、手ぶれ即ち不安定な手による、震動動画(jittery video motion)を低減するための機械的または光学的メカニズムを全く備えていない。多目的ハンドヘルド・デバイスの方が軽量であるため、そして通例広角レンズを用いているため、これらのデバイスの方が手ぶれによる震動動画の影響を受け易い可能性がある。更に、これら安価な多目的ハンドヘルド・デバイスが入手可能になったことによって、アマチュアおよびプロのビデオ撮影者の共同体を超えてシューティング・ビデオの人気が広がったため、高品質のビデオをどのようにして撮影するかについて殆ど訓練も体験もないユーザーによって、消費者ビデオを制作することが増々広まりつつある。また、消費者間で、電子メール、ブログ、ビデオ共有ウェブ・サイト、およびソーシャル・ネットワーキング・サイトを通じてインターネット上で短いビデオ・クリップを共有することも、増々広まりつつある。特にビデオ撮影の専門家ではないこれらのユーザー、即ち、愛好家にとって、これらのビデオ・クリップは、編集やその他の処理が全く行われずに、ウェブ・サイトに(ときとして、ビデオ・キャプチャー・デバイスから直接)アップロードされることが多い。これら種々の理由のために、ウェブ上で共有されるビデオ・クリップの品質は、非常に劣ることがとても多く、ビデオ・クリップは、共通して手ぶれによる震動動画があるという欠点がある。
【0002】
[0002] ディジタル・ビデオ画像の安定化は、手ぶれによる震動動画を補正するために、ビデオに応用することができるディジタル信号処理技法である。一実施態様例では、この技法は、ビデオ・シーケンスの各画像のその直前の画像に対する、マクロ・ブロック毎の局所動き推定を計算し、これらのマクロ・ブロックの局所動きベクトルを処理して、ジッターによる全域的な動きの推定値を求め、次いで推定した震動とは逆方向に、画像をデジタル・シフトまたはワープすることによって、震動動画を補償することを伴う。
【0003】
[0003] 既知のディジタル・ビデオ画像安定化の欠点の1つは、この技法が非常に計算集約的であるということである。ビデオをブログ、ビデオ共有ウェブ・サイト、またはソーシャル・ネットワーキング・サイトにアップロードするとき、ビデオは、処理能力が異なるデバイスからアップロードされることがある。更に、時間のかかるビデオの処理はいずれも望ましくないため、気楽なユーザー程、彼らのビデオをビデオ共有サイトまたはソーシャル・ネットワーキング・サイトに素早くポストする即時性に大きな関心を示すと考えられる。例えば、ビデオは、セルラ・ネットワークを通じてというようにして、多目的ハンドヘルド・デバイスから直接アップロードされることもある。しかしながら、(移動体電話機のような)多目的ハンドヘルド・デバイスは、処理リソースが限られていることが多く、または多目的デバイスの他の能力と処理リソースを共有しなければならない。あるいは、ハンドヘルド・デバイスを、インターネット接続機能を有するPC、ラップトップ、ネットブック等に接続して、ビデオをビデオ共有サイトまたはソーシャル・ネットワーキング・サイトにアップロードすることもできる。しかしながら、これらのインターネット接続PCも、処理能力に大きな差がある。また、即時性の有り難味については、インターネット接続デバイスを介したポスティングの間における処理の遅延はいずれも、望ましくないはずである。
【0004】
[0004] これらの理由のため、種々の利用可能な計算プラットフォームに跨がって有効に動作するビデオ画像安定化技法があれば、有用であり、望まれるであろう。
【発明の概要】
【0005】
[0005] 要約すると、詳細な説明は、概して言えば、ビデオ・シーケンスの画像安定化のためのディジタル・ビデオ処理に関する。
[0006] 以下の詳細な説明は、汎用プラットフォーム上においてビデオ安定化を実現するシステムおよび方法に関し、性能向上を図るために利用可能なマルチメディア・ディジタル信号処理コンポーネントを有効に利用する。例えば、汎用プラットフォーム上におけるビデオ安定化は、実行可能ライブラリーにおいてプログラミングされる。この実行可能ライブラリーは、汎用プラットフォームを有する計算機上に設けることができる種々のマルチメディア・ディジタル信号処理コンポーネントであればいずれでも利用するプログラミング機能を与える。このビデオ安定化の実施態様は、汎用プラットフォーム上で動作し、それが実行されている計算機を評価して、計算機上で利用可能なあらゆるマルチメディア・ディジタル信号処理コンポーネントを得る。次いで、この汎用プラットフォーム上におけるビデオ安定化の実施態様は、利用可能なマルチメディア・ディジタル信号処理コンポーネントの内、ビデオ画像安定化についての少なくとも性能を含む規準によってマルチメディア・ディジタル信号処理コンポーネントを順番に並べる階層構造にしたがって、ビデオ安定化の1つ以上の部分を処理するために利用する1つまたは複数のコンポーネントを決定する。次いで、この実施態様は、ビデオ画像安定化のためにビデオを処理する。これには、ビデオ画像安定化処理のこれらの部分に、決定したマルチメディア・ディジタル信号処理コンポーネントを利用して、実行可能ライブラリー機能を実行することを含む。
【0006】
[0007] 以下の詳細な説明において紹介する実施態様の中には、ビデオ画像安定化が、ビデオ・フレームの近隣ブロック間において動きベクトルの一貫性を強調する、局所動きベクトル推定の一形態を使用するものがある。この局所動きベクトル推定では、フレームおよびその基準フレームを1回以上ダウン・サンプルして、複数の解像度でこのフレームおよび基準フレームの複数のバージョンを形成する。このフレームの最も解像度が低いバージョンは、当該フレームのそれよりも解像度が高い各バージョンにおける対応する位置において連続的に大きくなる数のブロックに、ピラミッド構造として関連付けられた複数のブロックを有する。動きベクトル推定プロセスは、フレームの最も解像度が低いバージョンから開始し、関連のある最も解像度が低いバージョンの基準フレームの完全な検索を用いて、最も解像度が低いバージョンのフレームのブロックの動きベクトルを推定する。次いで、このフレームの連続的に解像度が高くなる各バージョンについて、ピラミッド構造にしたがって、1つ前の解像度が低いバージョンのフレームの関連のあるブロックについて推定された動きベクトルから開始する精細検索を用いて、その解像度が高いバージョンのフレームのブロックについて、動きベクトルを推定する。フレームの最大解像度バージョンまで、解像度が高くなる各バージョンについて繰り返した後、これは、近隣ブロック間で一貫性を一層強調する、最大解像度バージョンのフレームのブロックに対する推定局所動きベクトルを生成する。この局所動きベクトルの推定値は、一貫性が更に高いので、フレームの全域的な動きを一層強調する。
【0007】
[0008] 以下の詳細な説明において紹介する実施態様の中には、ビデオ画像安定化が、ビデオにおけるフレームの全域的な動きを一層信頼性高く推定するために、動きベクトルを処理する方法を含むものがある。これらは、ピクチャー境界上の動きベクトルを除外し、高い動き補償残差(residual)を生ずる動きベクトル、および変動(variance)が低いブロックの動きベクトルを除外することによってというようにして、フレームの全域的な動きを一層信頼性高く反映する1組の動きベクトルを選択することを含む。また、このビデオ画像安定化は、ランダム・サンプル・コンセンサス手法(random sample consensus approach)を用いて全域動き変換のパラメーターを推定することによる、動きベクトル異常値の検出および除去も含むことができる。また、このビデオ画像安定化は、手ぶれからの震動動画をより良くモデル化することができる類似性動きモデルに基づいて、全域動き変換を推定することもできる。
【0008】
[0009] 以下の詳細な説明において紹介する実施態様の中には、ビデオ画像安定化が、震動動画に対応する全域動き変換の推定に、全域動き推定における誤差の検出および補正に対する制限閾値をかけることができるものもある。このビデオ画像安定化では、推定した全域動き変換のパラメーターを2つの限度と比較する。上限を超えている場合、全域動き変換の推定値をリセットする。パラメーターが下限を超えている場合、推定した全域動き変換のパラメーターをそれらの下限に限定する。そうでない場合、推定した全域動き変換を、変更せずに用いる。
【0009】
[0010] 以下の詳細な説明において紹介する実施態様の中には、ビデオ画像安定化が、フレームに対して推定された全域動き変換の時間スムージング(time smoothing)を実行するものがある。
【0010】
[0011] 以下の詳細な説明では、リアル・タイム再生またはコード変換(transcoding)のシナリオにおいて採用することができるビデオ画像安定化の変形、およびオフライン・ビデオ安定化に適した変形も紹介する。リアル・タイム・モードでは、フレームの全域的な動きの推定値を生成するために局所動きベクトルの単一パス処理を用いて、ビデオ画像安定化を実行することができる。オフライン・モードでは、ビデオ画像安定化は、2回のパスで動きベクトル処理を実行することができる。例えば、最初の動きベクトル処理パスは、ビデオ・セグメントの場面のフレームに亘る動きベクトルの確率分布のような、動きベクトルについての統計的情報を収集するために用いることができる。この統計的情報は、全域動き変換推定に適用される限度を適応的に決定するために用いることができる。最初のパスからの情報は、全域動き変換の時間スムージングにおいて用いるとよい。例えば、この情報は、時間スムージングの全域最適化を抑制するための抑制限度を決定するために用いることができる。加えて、オフライン・モードにおける最初のパスは、ビデオ・セグメントにおける場面変化を検出するために用いることもできる。
【0011】
[0012] この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを紹介するために、設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を決定する際に補助として用いられることを意図するのでもない。添付図面を参照しながら進める以下の実施形態の詳細な説明から、本発明の追加の特徴および利点が明白となろう。
【図面の簡単な説明】
【0012】
【図1】図1は、計算性能階層にしたがって、利用可能なマルチメディア・ディジタル信号処理コンポーネントを最も効果的に利用するための、汎用プラットフォーム・ディジタル・ビデオ画像安定化方法の流れ図である。
【図2】図2は、図1の階層利用プロセスにしたがって、目標計算機の利用可能なマルチメディア・ディジタル信号処理コンポーネントを利用する、三部分ディジタル・ビデオ画像安定化プロセスの流れ図である。
【図3】図3は、ピラミッド・ブロックに基づく局所動き推定のためのビデオ・フレームのダウン・サンプリングを示す図である。
【図4】図4は、ピラミッド・ブロックに基づく、局所動き推定のためのビデオ・フレーム例の処理を示す図である。
【図5】図5は、ピラミッド・ブロックに基づく、局所動き推定のためのビデオ・フレーム例の処理を示す図である。
【図6】図6は、ピラミッド・ブロックに基づく、局所動き推定のためのビデオ・フレーム例の処理を示す図である。
【図7】図7は、ピラミッド・ブロックに基づく、局所動き推定のためのビデオ・フレーム例の処理を示す図である。
【図8】図8は、ディジタル・ビデオ画像安定化に用いられる全域動き変換の類似性モデルを含む、全域動き変換モデルを示す図である。
【図9】図9は、リアル・タイム・モードのディジタル・ビデオ画像安定化における使用のためというような、手ぶれによる震動の全域動き変換を推定するための、ビデオ・フレームに対する動きベクトルの単一パス処理を示す流れ図である。
【図10】図10は、オフライン・モードのディジタル・ビデオ画像安定化における使用のためというような、手ぶれによる震動の全域動き変換を推定するための、ビデオ・フレームに対する動きベクトルの二パス処理を示す流れ図である。
【図11】図11は、ディジタル・ビデオ画像安定化を実施することができる計算環境のブロック図である。
【図12】図12は、ディジタル・ビデオ画像安定化技法を実施することができるクラウド計算ネットワーク環境のブロック図である。
【図13】図13は、ディジタル・ビデオ画像安定化技法を実施することができるクラウド計算ネットワーク環境のブロック図である。
【発明を実施するための形態】
【0013】
[0022] 以下の詳細な説明は、ディジタル・ビデオ画像安定化を設けるシステムおよび技法に関し、更に特定すれば、利用可能なマルチメディア・ディジタル信号処理(DSP)ハードウェア・コンポーネントを効果的に利用しつつ、汎用計算ハードウェア・プラットフォーム上において動作可能なディジタル・ビデオ画像安定化技法に関する。ディジタル・ビデオ画像安定化技法は、ハンドヘルドおよび携帯用計算機、ビデオ・カメラ、移動体電話機、娯楽用コンソール(例えば、ビデオ・ゲーム・コンソールおよびテレビジョン・セットトップ・ボックス)、種々のネットワーク・クライアント・コンピューター(例えば、パーソナル・コンピューター、ラップトップ、ネットブック、およびタブレット・コンピューター)、ならびにサーバー・コンピューターを含む、種々のハードウェア・デバイスに跨がって実施することができる。また、このディジタル・ビデオ画像安定化技法は、専用ビデオ・キャプチャー・デバイス上におけるビデオ処理、スタンド・アロン・コンピューター上におけるビデオ処理、ネットワーク・クライアント・コンピューター上におけるビデオ処理、およびサーバー・コンピューター上におけるビデオ処理を含む、種々の使用シナリオおよび計算シナリオでも用いることができる。更に、このディジタル・ビデオ画像安定化技法の種々の部分を並列に、あるいは、とりわけ、クライアント/サーバー、ネットワーク「クラウド」サービス、またはピア計算構成におけるというような、多数の計算機において協同して実行することもできる。したがって、本技法は、エンド・ユーザー消費者が動作させるデバイス、および顧客へのサービス提供の一部として本技法を提供することができるサーバー・コンピューター双方を含む、種々の異なる電子デバイスおよび計算機において実現できることは、認められてしかるべきである。
<ディジタル・ビデオ画像安定化のための汎用プラットフォーム上におけるマルチメディアDSPコンポーネントの階層的選択>
[0023] ビデオの処理、特に本明細書において記載するディジタル・ビデオ画像安定化技法の処理は、計算集約的になるのは不可避である。他方で、本ディジタル・ビデオ画像安定化技法は、マルチメディア処理ハードウェア・コンポーネントの構成が互いに多様に異なる可能性がある、種々の計算機上において実施することができる。より良い潜在的性能および品質を達成するために本明細書において記載するディジタル・ビデオ画像安定化技法の一方法では、本技法は、これらが実行される目標計算機を評価し、性能、品質、電力消費、順応性、およびロバスト性という1つ以上の側面を考慮する方法で構築された階層にしたがって、利用可能なマルチメディア処理コンポーネントを利用することを選択する。このように、本ディジタル・ビデオ画像安定化技法は、汎用動作プラットフォームに合わせて開発され、これらが実行される実際の目標計算ハードウェアのマルチメディア処理能力を最良に利用するように適合する(adapt)。
【0014】
[0024] 一実施態様例では、以下で説明するディジタル・ビデオ画像安定化技法は、ダイナミック・リンク・ライブラリー・ファイル(DLL)のような、計算機(以下で更に詳しく説明する)上で実行される実行可能プログラムで、またはアプリケーション・プログラム実行可能ファイルとして実現される。DLLまたはその他の実行可能ライブラリー・ファイルとして実現される場合、実行可能プログラムは、ディジタル・ビデオ画像安定化を1組のライブラリー機能として実現し、この実行可能プログラムによって実現されるディジタル・ビデオ画像安定化機能をプログラムとして利用するために、アプリケーション・プログラムにプログラム・インターフェースを設ける。実行可能プログラムは、汎用プラットフォームまたは計算環境上で実行し、この実行可能プログラムは、多様なマルチメディア・ディジタル信号処理(DSP)コンポーネントを含むことができる種々のコンピューターおよび計算機上で実行できると言うべきものである。
【0015】
[0025] 図1を参照すると、ディジタル・ビデオ画像安定化ライブラリー・プログラムは、このプログラムを実行する目標計算機上で潜在的に利用可能と考えられる種々のマルチメディアDSPコンポーネントを用いて、ディジタル・ビデオ画像安定化のためのビデオ処理を実行するプログラミングを含む。次いで、このプログラムは、マルチメディア利用階層プロセス100によってマルチメディアDSPコンポーネントを最良に利用するように適合する。このプロセス100の第1動作110では、ライブラリー・プログラムは、それがインストールされ実行している目標計算システムまたはデバイスのマルチメディアDSPコンポーネントを評価する。ライブラリー・プログラムは、システム情報を問い合わせるオペレーティング・システム・サービスへのコールを行うことによって、レジストリーまたはその他のシステム・データーベースに記録されているシステム情報を調べることによって、マルチメディアDSPコンポと関連のあるプログラミング・インターフェースをコールすることによって、マルチメディアDPSコンポーネントへのアクセスを試すことによって、あるいはシステム情報にアクセスするおよび/またはハードウェア・コンポーネントの存在を問い合わせる他の同様の方法によって、この評価を実行することができる。
【0016】
[0026] 動作110における評価の結果に基づいて、ライブラリー・プログラムは次に、処理階層にしたがって、目標計算機上で利用可能であると判定されたマルチメディアDSPコンポーネントから選択を行う。図示した例では、ライブラリー・プログラムは最初に、動作120〜121に示すように、目標計算機におけるマルチメディアDSPに合わせて適応化された利用可能ないずれかのASICユニットを利用することを選択する。現在入手可能なこのようなASICユニットの例には、Intel社のビデオ・カード(Larrabeeという名称で知られている)、およびNvidia社のビデオ・カード(Teslaと名付けられている)が含まれる。このようなASICユニットが目標デバイス上で利用できない場合、ライブラリー・プログラムは、次に、動作130〜131に示すように、目標デバイス上でシェーダー(shader)能力を有する、いずれかの利用可能なグラフィクス処理ユニットを利用することを選択する。ASICまたはGPUシェーダー・コンポーネントがない場合、ライブラリー・プログラムは、高度マルチメディア命令集合(例えば、SSEx命令)を有するいずれかの利用可能なマルチコア・プロセッサーまたは中央演算装置を利用することを選択する。最後に、これら性能が高い方のマルチメディアDSPコンポーネントがいずれも目標デバイス上で利用可能でない場合、ライブラリー・プログラムは、動作150に示すように、C/C++プログラミングを用いて、単一コアCPU上においてディジタル・ビデオ画像安定化技法のビデオ処理実行に戻る。他の代替実施態様では、市販されている汎用プラットフォームの計算機ハードウェアにおいて利用可能なマルチメディアDSPコンポーネントに対する、性能、品質、電力消費、順応性、およびロバスト性といった前述の側面の考慮に基づいて、マルチメディアDSPコンポーネントの他の階層を用いることができる。このような代替実施態様は、図示されている階層マルチメディアDSP利用プロセス100におけるよりも少ないまたは多いマルチメディアDSPコンポーネントの利用を含むことができる。
<汎用プラットフォーム上におけるディジタル・ビデオ画像安定化>
[0027] 図2に示すように、ディジタル・ビデオ画像安定化技法は、概略的に3つの部分を含む、主題ビデオ処理を実行する。3つの部分とは、局所動き推定210、手ぶれによるビデオ震動に対応する全域動き変換を推定するための動きベクトル処理220、およびビデオの震動を補償するための画像ワーピングである。局所動き推定210および画像ワーピング230は計算集約的であり、図1に示し先に論じた階層DSP利用にしたがって選択された、目標計算機上で利用可能ないずれかのマルチメディアDSPコンポーネントからの選択を用いて行われることが最も望ましい。例えば、GPUシェーダーを利用する処理に特に適している局所動き推定210の形態は、ライブラリー・プログラムにおいて実装し、目標計算機がその利用可能なマルチメディアDSPコンポーネントの中でGPUシェーダー能力を有するときに、ディジタル・ビデオ画像安定化の局所動き推定の部分を遂行するために用いることができる。一方、ライブラリー・プログラムは、評価された目標計算機がその利用可能なマルチメディアDSPコンポーネントの中でその能力を所持すると判定されたとき、D3D APIコールを用いて画像ワーピング230を実行する機能を含むことができる。第2部分220、即ち、全域動き変換を推定するために局所動きベクトルを処理する部分は、この実施態様例では、CPU上で行われる。
<GPGPU上におけるピラミッド・ブロックに基づくME>
[0028] 一実施態様例では、ディジタル・ビデオ画像安定化のライブラリー・プログラムは、GPUシェーダー(前述したプロセス100によって、目標計算機上において利用可能であると判定されたとき)における処理に特に非常に適している、図3〜図7に示すプラミッド・ブロックに基づく動き推定技法を用いて、局所動き推定210を実施するプログラミングを含む。最大解像度のビデオ・フレームのブロックについて個別に局所的動きを推定することと比較すると、ピラミッド・ブロックに基づく動き推定技法は、ビデオ・フレームの全域的な動きも強調し、ディジタル・ビデオ画像安定化のためにビデオ・フレームの全域的な動き全体を推定するには非常に適している。
【0017】
[0029] ピラミッド・ブロックに基づく動き推定は、基準フレームに対するビデオのフレーム毎に動き推定を実行する。一般に、基準フレームは、ビデオ・シーケンスにおける連続フレーム(例えば、直前または直後のフレーム)である。あるいは、3つ毎のフレームを、次の2フレームのビデオの基準として用いることができ、基準フレームには、他の選択を行うこともできる。動き推定のために、ビデオ・フレームを規則的なブロックの格子に分割し、動き推定は、動きベクトル、即ち、ビデオ・フレームの各ブロックの、基準フレームにおける非常に近い(closely matching)画像コンテンツに対する変位を計算する。
【0018】
[0030] ピラミッド・ブロックに基づく動き推定が開始すると、計算機のダウン・サンプリング・シェーダーまたはGPUを用いて、ビデオ・フレームおよびその基準フレームの双方の解像度を半分に、繰り返しダウン・サンプルする。図3に示す例では、ビデオ・フレームおよび基準フレームを3回半分にダウン・サンプルして、最大解像度、1/2解像度、1/4解像度、および1/8解像度のビデオ・フレームならびに基準フレームのバージョンを生成する。ビデオ・フレームおよび基準フレームは、固定回数だけ、解像度をダウン・サンプルすることができ、または計算機の利用可能な画像バッファ空間および処理リソースにしたがって、ビデオ・フレームのサイズおよび元の解像度に応じた可変回数だけダウン・サンプルすることもできる。あるいは、ビデオ・フレームおよび基準フレームは、図3に示す例よりも少ない回数または多い回数だけダウン・サンプルすることもできる。尚、図3に示す例は例示に過ぎず、ディジタル・ビデオ画像安定化技法によって処理される実際のビデオ・フレームは、一般に、図示した例よりも多い数の画素、および高い元の解像度を有することは言うまでもない。
【0019】
[0031] ビデオ・フレームの解像度毎に、ピラミッド・ブロックに基づく動き推定では、ビデオ・フレームをブロックの格子に分割する。各解像度では、同じサイズのブロックが用いられる。好ましくは、16×16または8×8画素のような、比較的大きなブロック・サイズが用いられる。このように、最も解像度が低い画像の各ブロックを、次に解像度が高い画像における対応する位置に、同じブロック・サイズの4ブロックに分割され、これによって、最も解像度が低い画像におけるブロックの、それよりも解像度が高い画像における対応する位置におけるそれらに対するピラミッド構造、または階層関係を効果的に与える。例示の目的のために、図3における太字の境界内部には、1/8解像度の画像の左上のブロックに対してピラミッド構造関係にある、それよりも解像度が高いバージョン(即ち、1/1、1/2、および1/4の解像度)のビデオ・フレームにおけるブロックが示されている。
【0020】
[0032] 次に、ピラミッド・ブロックに基づく動き推定は、最大基準フレームに対する最も解像度が低い画像における各ブロックに対する絶対差の和(SAD)に基づいて、完全検索(full search)を実行して、基準フレームにおいて一致する画像コンテンツの位置を発見する。これによって、基準フレームにおける一致する画像コンテンツからのその変位に対応する、最も解像度が低いビデオ・フレームにおける各ブロックの局所動きベクトルを生成する。この完全検索は、図4に示すように、ビデオ・フレームおよび基準フレームの最も解像度が低いバージョンのみで実行する。
【0021】
[0033] 図5〜図7に示すように、ピラミッド・ブロックに基づく動き推定は、次に、元の解像度のビデオ・フレームまで、基準フレームに対するビデオ・フレームの連続的に高くなる各解像度で、精細動き推定を実行する。前述のように、解像度が低い方の画像の各ブロックは、解像度が次に高いバージョンのビデオ・フレームの対応する位置において、4つのブロックに分割する。解像度が低い方の画像におけるブロックに対する動き推定検索によって計算された動きベクトルは、ビデオ・フレームの解像度が次に高いバージョンにおけるピラミッド構造における4つのブロックの各々を求める精細動き推定検索の開始点として用いられる。解像度が低い方のビデオ・フレームにおけるブロックの、解像度が次に高いビデオ・フレームにおける4つの対応するブロックに対するピラミッド構造関係を用いたこの精細検索は、近隣ブロック間での動き推定計算において一貫性を強調する。ビデオ・フレームの連続的に高くなる解像度のバージョン毎に、この精細検索を繰り返すので、近隣間で強調されるこの一貫性のために、元の解像度の画像におけるブロックに対して、増々一貫性が高くなる1組の局所動きベクトルが得られ、以下で論ずる全域動き変換推定の基準となる。
【0022】
[0034] 一旦GPUシェーダーが元のビデオ・フレームの解像度において局所動き推定を終了すると、元の解像度のビデオ・フレームのブロック毎の差の和の結果および変動と共に、動きベクトルが、全域動き変換推定のために、CPUにコピーされる。
<全域動き変換推定のための動きベクトル処理>
[0035] 再度図2を参照して、一実施態様例におけるディジタル・ビデオ画像安定化プロセス200の全域動き変換部分220を推定するための動きベクトル処理を、計算機の中央演算装置(CPU)上で実行する。ディジタル・ビデオ画像安定化技法は、動きベクトル処理の単一パス・モードを用いることができる。これは、ビデオ再生、ビデオ・ストリーミング、または送信の間におけるリアル・タイム処理に適している。あるいは、計算時間の延長を犠牲にして、ビデオ安定化品質の向上を図る動きベクトル処理の二パス・モードも用いることができる。したがって、二パス・モードは、リアル・タイム・ビデオ再生に時間制約を受けず、高いビデオ安定化品質が望まれる、オフライン・ビデオ処理のシナリオには一層適していると考えられる。
【0023】
[0036] 図8は、手ぶれのために震動動画を推定するために用いることができる種々の全域動き変換モデルを示し、並進類似性(translation similarity)、ユークリッド、投射およびアフィン変換モデルが含まれる。ここで紹介する一実施態様例では、動きベクトル処理は、以下の式(1)に示すような、並進、回転、およびズーム・パラメーターを有する類似性全域変換モデルを用いる。
【0024】
【数1】

【0025】
ここで、xおよびyは、元の位置であり、x’およびy’は変換された位置であり、s、β、t、tは、それぞれ、ズーム、回転、および並進パラメーターである。
[0037] 一般に、殆どのユーザーは、並進、回転、およびズームのみに対して、震動の影響(shaky motion effect)を体験する。したがって、類似性動き変換モデルは、カメラ操作者の手ぶれを正しくモデル化するためのビデオ安定化の適用に当てはまる。しかしながら、全域動き変換推定の代替実施態様では、他のモデルを用いることもでき、モデル化する手ぶれによるビデオの震動の態様を多くすることまたは少なくすることもできる。
<リアル・タイム・モードにおける一パス動きベクトル処理>
[0038] 図9は、ビデオ・フレームの全域動き変換を推定する一パス動きベクトル処理900の一実施態様例であり、リアル・タイム処理モードに適している。この動きベクトル処理は、前述のピラミッド・ブロックに基づく動き推定によって生成される動きベクトルのような、ビデオ・シーケンスにおける場面のビデオ・フレーム毎に動きベクトルに適用される。この実施態様例は、動作910において開始して、ビデオ・フレームに対する動きベクトルの情報を受ける。加えて、動きベクトル処理例900は、ブロック毎に、基準フレーム内の動きベクトル位置におけるその一致ブロックの情報に対する残差値の情報も受ける。この情報は、動きベクトル推定の間に計算された絶対差の和(SAD)である。更に、動きベクトル処理例900は、ビデオ・フレームにおける元のブロックの画像コンテンツにおける変動の値を受ける。これも、動きベクトル推定の間に計算することができる。
【0026】
[0039] 動作920において、一パス動きベクトル処理900は、全域動き変換推定の基準とすべき、より信頼性が高い1組の動きベクトルを選択する。一実施態様例では、一パス動きベクトル処理900は、3つの規則に基づいて、動きベクトルを選択する。最初に、ピクチャー境界上における動きベクトルは信頼性がない可能性があるので、したがって選択されない。例えば、フレーム間のカメラの動きの後では、境界ブロックにおけるピクチャー・コンテンツが部分的に失われることがある。第2に、ブロックの動き補償後における大きな残差誤差(例えば、ブロックに対するSAD値は大きい)、信頼性のない動き推定を示すことができる。大きな動き補償残差があるブロックに対する動きベクトル(そのブロックに対して動き推定の間に計算された大きなSAD値によって示される)も、したがって、選択されない。第3に、元の変動が低いブロックに対する動き推定は信頼性がない可能性があるので、このようなブロックに対する動きベクトルも選択されない。代替実施態様では、処理900は、1組の動きベクトルの選択を、これらよりも少ないまたは多い信頼性の規準に基づくことができる。
【0027】
[0040] 動作930において、動きベクトル処理900は、動作920において選択した動きベクトルに基づいて、各フレームの全域動き変換の推定値を計算する。一実施態様例では、全域動き変換は、先に論じた類似性全域動きモデルについての式(1)を用いて推定される。あるいは、全域動き変換は、他の動きモデルに基づいて推定することもできる。全域動き変換を推定するために、動きベクトル処理900はランダム・サンプル・コンセンサス(RANSAC)方法を用いて、異常である動きベクトルを検出し除外する。更に特定すると、RANSAC方法では、動作920において選択した1組の動きベクトルから、ランダムに2つの動きベクトルを選択する。次いで、動きベクトル処理は、最小二乗誤差(LMSE)当てはめを用いて式(1)を解き、2つのランダムに選択した動きベクトルに対するs、β、t、tパラメーターの値を決定する。次いで、RANSAC方法は、全域動き変換式のパラメーターのこの解と一貫性のある、ある数の他の動きベクトルを判定する。RANSAC方法は、この解と一貫性がある最も大きなグループの動きベクトルが発見されるまで、他の対の動きベクトルのランダムな選択を繰り返す。これによって、異常であると見なされる動きベクトル、または全域動き変換のパラメーターに対するコンセンサスLMSE解と一貫性のない動きベクトルを除外する。
【0028】
[0041] 動作940〜944では、動きベクトル処理は、誤差検出および訂正を実行する。全域動き変換のパラメーターの推定値を、ズーム、回転、および並進という動きの各々に対する2つの限度と突き合わせる。流れ図では、これら2つの限度は下限(T1x)および上限(T2x)として示されており、T1x<T2xであり、およびzはズーム、回転、または並進を表す。2つの限度は、震動動画を呈するビデオの代表的な大きなサンプルに対する実験を通じて経験的に導き出すことができ、震動動画を表す全域的な動きであるとして、統計的確率を表す。動作940〜944に示すように、全域動き変換パラメーター(s、β、t、t)がそれらの下限よりも小さい場合、動作930において推定された全域動き変換を用いる。そうでない場合、ズーム、回転、および並進に対する全域動き変換パラメーターが下限を超えるが上限未満に留まる場合、動きベクトル処理は、動作943に示すように、全域動き変換を下限に制限する。動作930において推定した全域動き変換が上限を超える場合、全域動き変換をリセットする。つまり、これらの動作は、振れる手による震動動画に特徴的でない過度な全体的な動きを検出し、次いで過剰補償から訂正することを意図している。
【0029】
[0042] 動きベクトル処理900の最後の動作950では、時間スムージングを全域動き変換に適用する。一実施態様例では、1つの場面のビデオ・フレームのシーケンスに対する全域動き変換推定値に、以下の式(2)に示すように、31−タップ・ガウス・フィルターによってフィルター処理を行う。
【0030】
【数2】

【0031】
表記(W--...W-15)-は、行列反転を示す。この式(2)において、W’は時点tでのスムージング後における全域動き変換であり、W-は時点(t−i)でのスムージング前における全域動き変換である。値C-は、ガウス・フィルター係数であり、Iは単位行列である。リアル・タイムのビデオ再生またはコード変換のシナリオでは、このサイズのフィルターにより15ピクチャーの遅延が生ずる。代替実施態様では、これよりも長いフィルター・サイズまたは短いフィルター・サイズを用いることができ、あるいは適応フィルターを含む他のタイプのフィルターを用いることもできる。
<オフライン・モードにおける二パス動きベクトル処理>
[0043] 全域動き変換の推定は、代わりに、二パス動きベクトル処理(図10に示す二パス動きベクトル処理の例1000のような)を用いて行うことができる。これは、より良い品質のビデオ画像安定化を提供するが、計算時間の著しい延長という犠牲を伴う。二パス処理は、一般に、ユーザーに対して便利さの低下を強いる。何故なら、ユーザーは、ビデオ安定化処理の終了まで、結果を見るのを待たせられるからである。計算負荷が増大することのため、二パス動きベクトル処理は、通例、オフライン・モードとして実行するのに一層適している。動きベクトル処理の二パス構成によって、誤差検出および訂正部、および動きベクトル処理の時間スムージングの最適化向上が可能となる。第1パスにおいて、動きベクトル処理は、これらの処理部において用いるために追加情報を収集することができる。次いで、この情報を第2動きベクトル処理パスに適用することができる。
【0032】
[0044] 図10の動作1005に示すように、二パス動きベクトル処理1000は、第1パスの間にビデオ・セグメント全体における場面変化検出を実行する。この場面変化検出は、従来から知られている方法を用いて実行することができる。次いで、動作1010において、二パス動きベクトル処理1000は、図9の単一パス動きベクトル処理900の動作910、920、および930におけるのと同じ動作を適用することによってというようにして、第1パスに対してこの場面のビデオ・フレーム毎に全域動き変換の推定値を生成する。この第1パスでは、全域動き変換のこれらの推定値を単に収集して、第2パスにおける全域動き変換推定値を更に最適化するための統計情報を生成する。したがって、第1パスにおける全域動き推定値は、震動動画を補償するためにビデオ画像安定化プロセス200の画像ワーピング230において直接用いられない。代わりに、動作1020において、二パス動きベクトル処理1000は最小値および最大値、ならびにビデオ・セグメントの各場面における全てのフレームに跨がる全域動き変換の並進、回転、およびズーム・パラメーター(例えば、smin、smax、βmin、βmax、txmin、txmax、tymin、tymax、p(s)、p(β)、p(t)、およびp(t))の確率分布を計算する。あるいは、確率統計は、個々の場面毎ではなく、ビデオ・セグメント全体に対して収集することもできる。
【0033】
[0045] 場面毎のパラメーターのこれら経験的確率分布に基づいて、二パス動きベクトル処理1000は、動作1030において、全域動き変換パラメーター(s、β、t、t)の各々に対して、各場面における下限および上限(T1xおよびT2x)を決定する。例えば、この下限および上限は、ある種の確率閾値pおよびpに対応するように選択することができる。一例では、確率閾値はpおよびpは、それぞれ、95%および98%である。言い換えると、場面に対して第1パスにおいて観察されたパラメーターの値の95%は限度T1x以内にあり、観察されたパラメーター値の98%は上限T2xよりも下にある。代替実施態様では、二パス動きベクトル処理は、他の確率閾値または他の経験的確率に基づく規準に基づいて、これらの限度を決定することができる。加えて、下限および上限をハード制限によって拘束することもできる。図9における単一パス動きベクトル処理900と比較して、ビデオの経験的確率統計に基づくパラメーター限度(T1xおよびT2x)のこの設定によって、全域動き変換に適用される誤差訂正および検出を、そのビデオの特定的なコンテンツに対して適応的にすることができる。
【0034】
[0046] 動作1030において、二パス動きベクトル処理1000は、次に、動きベクトル処理の第2パスを実行する。この第2パスでは、処理1000は、単一パス動きベクトル処理900の動作910、920、930、および940〜944において行われたように、処理を実行する。この第2パスの動作940〜944において適用される限度(T1xおよびT2x)に対して、二パス・プロセスは、第1パスにおいて収集したビデオの確率統計に基づいて決定した限度を用いる。これらの限度は主題のビデオのコンテンツに合わせて適応されるので、二パス動きベクトル処理1000は、これらの適応的な限度を用いて、品質が向上した誤差検出および訂正を実行するはずである。
【0035】
[0047] また、二パス動きベクトル処理は、ビデオ・セグメントに対して全域的に時間スムージングを同様に実行することによって、ディジタル・ビデオ画像安定化の品質向上も達成することができる(単一パス動きベクトル処理と比較して)。二パス動きベクトル処理1000の一実施形態例では、この処理は、単一パス動きベクトル処理のスライディング・ウィンドウ手法の代わりに、条件付き全域最適化を用いて時間スムージングを実行する。このような制約付き全域最適化の一例では、時間スムージングに対する上限として、ある数Nのビデオ・フレームに対して全域動き変換の平均を取ることによって、全域動き変換の過剰スムージングに対する制約を決定することを含む。ここで、Nは、過剰スムージングに対する範囲[10、15]における値とすることができる。次いで、過剰スムージングの制約の下で、凸最適化を実行する。一実施態様例では、目標関数、例えば、一目標関数を次のように指定することができる。
【0036】
【数3】

【0037】
[0048] 目標関数の式(3)において、第1項は、最終スムーズ変換(smooth transform)Wが、ウィンドウにおける重み係数Cが異なる元の変換およびその近隣の変換Woiに類似することを意味する。第2項は、最終スムーズ変換Wが、重みρによる制約として、過剰スムージングされたWsiに類似することを意味する。値Dは距離測定メトリックであり、4つの画像の角の変換された座標WおよびWoi間の距離とすることができる。凸最適化は、目標関数を最小化するために適用することができる。
<全域動き変換による画像ワーピング>
[0049] 再度図2を参照すると、ディジタル・ビデオ画像安定化プロセス200は、単一パスまたは二パス動きベクトル処理220のいずれかを用いて生成した全域動き変換に基づいて、画像ワーピング230を最終的に実行する。この画像ワーピングは、単にGPU D3D APIおよび/またはカスタム化されたバイキュービック頂点シェーダー(bi-cubic vertex shader)を用いて、震動のある動画による全域動き変換の推定値から反対方向に画像ワーピングを適用することによって、GPUにおいて行うことができる。画像ワーピングを可能にするだけの十分なビデオ・コンテンツをビデオ・フレームの境界において与えるために、一実施態様例では、境界において約τ%だけビデオ・フレームを切り取る。これは、通例、一パス処理モードでは10%、二パス処理モードでは異なる場面毎に可変(適応的)パーセントとすることができる。これによって、表示ポート(display port)を、画像ワーピングによるビデオ・フレームのコンテンツの中に移動させることが可能となり、画像が安定したビデオを出力のために形成することになる。
【0038】
[0050] 動きベクトル処理における動作944から分かるように、単に振れる手による可能性がある震動動画の量を、全域的な動きが超過するとき、推定した全域動き変換を単にリセットする。このように、手ぶれによる震動を特徴付ける限度を超える全域的な動画には、画像ワーピングを適用しない。代わりに、このビデオ・フレームをその実際の動きで再生し、手ぶれに対する補償を全く行わない。
<計算環境例>
[0051] 図11は、記載した実施形態、技法、および技術を実現することができる、適した計算環境11)00の一般化した例を示す。例えば、計算環境11)00は、図2のディジタル・ビデオ画像安定化プロセス200を実行する計算機(例えば、コンピューター・サーバー、パーソナル・コンピューター、ラップトップまたはその他の計算機)の内の1つとすることができる。
【0039】
[0052] 計算環境11)00は、本技術の使用範囲や機能についていかなる限定をも示唆することは意図していない。何故なら、本技術は、多様な汎用または特殊目的計算環境において実現することができるからである。例えば、開示した技術は、ハンド・ヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサーに基づく消費者用電子機器またはプログラマブルな消費者用電子機器、ネットワークPC、ミニコンピューター、メインフレーム・コンピューター等を含む、他のコンピューター構成でも実現することができる。また、開示した技術は、分散型計算環境においても実施することができ、その場合、通信ネットワークを通じてリンクされている離れた処理デバイスによって、タスクを処理する。分散型計算環境では、プログラム・モジュールは、ローカルおよびリモート双方のメモリー記憶デバイスに配置することができる。
【0040】
[0053] 図11を参照すると、計算環境11)00は、少なくとも1つのCPU11)10および付随するメモリー11)20を含む。図11では、この最も基本的な構成11)30は破線の中に含まれている。中央演算装置11)10は、コンピューター実行可能命令を実行し、実在のプロセッサーまたは仮想プロセッサーであってもよい。マルチ処理システムでは、多数の演算装置が、処理パワーを高めるために、コンピューター実行可能命令を実行し、したがって、多数のプロセッサーを同時に実行することができる。メモリー11)20は、揮発性メモリー(例えば、レジスター、キャッシュ、RAM)、不揮発性メモリー(例えば、ROM、EEPROM、フラッシュ・メモリー等)、またはこれら2つの何らかの組み合わせとすることができる。メモリー11)20は、例えば、本明細書において記載した技術を実現するためのソフトウェア11)80を格納する。
【0041】
[0054] 中央演算装置11)10に加えて、この計算環境は、ディジタル信号処理DSPまたはマルチメディア・コンポーネント11)15というような、他の処理リソースを含むことができる。DSPコンポーネント11)15は、図1に関して先に論じた汎用プラットフォーム・ライブラリーの実施態様によるディジタル・ビデオ画像安定化プロセスに有利に利用することができるリソースであればいずれでもよい。例えば、DSPコンポーネントは、マルチメディアDSP ASICユニット、GPUシェーダー・ユニット、マルチコアCPU、CPUのための高度マルチメディア命令集合等を含むことができる。
【0042】
[0055] 計算環境は、追加の特徴を有してもよい。例えば、計算環境11)00は、ストレージ11)40、1つ以上の入力デバイス11)50、1つ以上の出力デバイス11)60、および1つ以上の通信接続11)70を含む。バス、コントローラー、またはネットワークというような相互接続メカニズム(図示せず)が、計算環境11)00のコンポーネントを相互接続する。通例では、オペレーティング・システム・ソフトウェア(図示せず)が、計算環境11)00において実行する他のソフトウェアに合った動作環境を提供し、計算環境11)00のコンポーネントの動作(activities)を調整する。
【0043】
[0056] ストレージ11)40は、リムーバブルでも非リムーバブルでもよく、磁気ディスク、磁気テープまたはカセット、CD−ROM、CD−RW、DVD、あるいは情報を格納するために用いることができしかも計算環境11)00内においてアクセスすることができるその他のあらゆる媒体も含む。ストレージ11)40は、本明細書において記載した技術を実現することができるソフトウェア11)80の命令を格納する。
【0044】
[0057] 入力デバイス(1つまたは複数)11)50は、キーボード、キーパッド、マウス、ペン、またはトラックボールのような接触入力デバイス、音声入力デバイス、走査デバイス、または計算環境11)00に入力を供給する他のデバイスとすることができる。オーディオについては、入力デバイス11)50は、サウンド・カード、あるいはアナログまたはディジタル形態でオーディオ入力を受け入れる同様のデバイス、あるいはオーディオ・サンプルを計算環境11)00に供給するCD−ROMリーダーとすることができる。出力デバイス(1つまたは複数)11)60は、ディスプレイ、プリンター、スピーカー、CD−ライター、または計算環境11)00からの出力を供給するその他のデバイスとすることができる。
【0045】
[0058] 通信接続(1つまたは複数)11)70は、通信媒体(例えば、接続ネットワーク)を通じたほかの計算エンティティへの通信を可能にする。通信媒体は、コンピューター実行可能命令、圧縮したグラフィック情報、または変調データー信号におけるその他のデーターというような情報を伝達する。
【0046】
[0059] コンピューター読み取り可能媒体は、計算環境内11)00内においてデーターおよびプロセッサー命令にアクセスすることができる、入手可能なあらゆる有形媒体である。一例として、そして限定ではなく、図示した計算環境11)00では、コンピューター読み取り可能媒体は、メモリー11)20および/またはストレージ11)40を含む。容易に理解できるはずであるが、コンピューター読み取り可能記憶媒体という用語は、メモリー11)20およびストレージ11)40のような、変調データー信号だけではない、データーおよびプログラム命令の格納のための媒体を含む。
<クラウド計算ネットワーク環境例>
[0060] 図12および図13は、以上で説明したディジタル・ビデオ画像安定化を実施することができるクラウド計算に適したネットワーキング環境1200の一般化した例を示す。
【0047】
[0061] クラウド計算ネットワーク環境例12)00において、ビデオ共有、格納、または分散のための種々の計算サービス(例えば、ビデオ共有またはソーシャル・ネットワーキング・サイト)が、クラウド12)10と呼ばれる、ネットワーク・アクセス可能な計算および記憶リソースの集合体によって提供される。例えば、クラウド12)10は、サーバー計算機の集合体を備えることができる。これらは、中央にまたは分散された位置に配置することができ、クラウドに基づくサービスを、インターネットのようなネットワークを通じて接続されている種々のタイプのユーザーおよびデバイスに提供する。
【0048】
[0062] 環境例12)00では、クラウド12)10は、ユーザー計算機にサービス(とりわけ、ビデオ格納、ビデオ共有、またはソーシャル・ネットワーキング・サービスのようなサービス)を提供する。クラウド1210内では、クラウド計算サービス・プロバイダーを通じて、または他のオンライン・サービス・プロバイダーを通じて、サービスを提供することができる。例えば、クラウドに基づくサービスは、ビデオ格納サービス、ビデオ共有サイト、ソーシャル・ネットワーキング・サイト、または接続されているデバイス1320A〜1320N上で他のユーザーが見るためにユーザーが供給したビデオを分散するその他のサービスを含むことができる。
【0049】
[0063] ユーザーは、ビデオ・カムコーダー、ビデオ・モードを有するディジタル・カメラ、移動体電話機、およびハンドヘルド計算機というような、ビデオを記録する種々の移動体ビデオ・キャプチャー・デバイスを用いることができる。ユーザーは、ビデオをクラウド1210上のサービスに、直接(例えば、電気通信ネットワークのデーター送信サービスを用いて)またはラップトップ、パーソナル・コンピューター、またはその他のネットワーク接続計算機のような、ローカル・コンピューター1230にビデオを最初に転送することによって、アップロードすることができる。
【0050】
[0064] 図13に示すように、ビデオは、後にダウンロードすること、ストリーミングすること、および/またはそれ以外ではクラウドに基づくビデオ・ストレージまたは共有サイトから、種々の画面表示寸法係数を有することができる他の接続コンピューター・デバイス1230A〜1230Nに再生することができる。接続デバイス1320Aは、パーソナル・コンピューター、ラップトップ、タブレット、またはその他の同様のネットワーク接続デバイス上において利用可能な画面というような、中間サイズの画面を有するデバイスを表す。
【0051】
[0065] 接続デバイス1320Bは、非常に携帯用(例えば、小型サイズの画面)となるように設計された形状係数を有す表示画面のデバイスを表す。例えば、接続デバイス1320Bは、移動体電話機、スマート・フォン、パーソナル・ディジタル・アシスタント等とすることができる。
【0052】
[0066] 接続デバイス1320Nは、大型視聴画面を有するデバイスを表す。例えば、接続デバイス1320Nは、テレビジョン画面(例えば、スマート・テレビジョン)、あるいはテレビジョンまたはプロジェクターにビデオ出力を提供する他のデバイス(例えば、セットトップ・ボックス、ゲーミング・コンソール)、あるいは同様のビデオ表示出力を有するその他のデバイスとすることができる。
【0053】
[0067] 図示したクラウド計算ネットワーク環境1200では、ディジタル・ビデオ画像安定化は、ビデオ共有、格納、および分散の種々の段階において、図示したデバイスによって、所望の使用シナリオに応じて実現することができる。一シナリオ例では、ディジタル・ビデオ画像安定化は、ローカル・コンピューター1230上においてソフトウェアで実現され、ビデオがローカル・コンピューターに最初に転送されるとき、またはクラウドに基づくサービスにアップロードされるときに適応される。他のシナリオでは、ディジタル・ビデオ画像安定化は、クラウドにおいて実現され、ビデオがアップロードされクラウドに格納されるときに、このビデオに適用される。他のシナリオでは、ディジタル・ビデオ画像安定化は、クラウド計算サービスによって実現され、ビデオが再生されるとき、他の接続デバイスまたはサービスに転送されるとき、あるいは分散されるときに適用される。更に他のシナリオでは、ディジタル・ビデオ画像安定化は、クラウド計算サービスによって実現され、適した解像度で提示するため、またはそれを見ようとしている接続デバイスに適した送信帯域幅でストリーミングするためにビデオをコード変換するときに適用される。更に他のシナリオでは、ディジタル・ビデオ画像安定化は、再生時に接続デバイス上で実行することができる。
<代替および組み合わせ例>
[0068] 本明細書において記載した方法はいずれも、1つ以上のコンピューター読み取り可能媒体(例えば、ストレージまたはその他の有形媒体)を介して実行することができる。コンピューター読み取り可能媒体は、このような方法を実行する(例えば、計算機に実行させる)ためのコンピューター実行可能命令を備えている(例えば、有するまたは格納する)。動作は、完全に自動とすること、半自動とすること、または人手の介入を伴うことができる。
【0054】
[0069] 以上、詳細な説明および添付図面において、本発明の原理について説明し図示したが、記載した実施形態は、このような原理から逸脱することなく、その構成および詳細において変更が可能であることは認められよう。尚、本明細書において記載したプログラム、プロセス、または方法は、特に示されていない限り、いずれの特定のタイプの計算環境にも関係付けられることも、限定されることもないことは言うまでもない。種々のタイプの汎用または特殊計算環境を、本明細書において記載した教示と共に使用すること、またはその教示にしたがって動作を実行することができる。記載した実施形態のエレメントの内ソフトウェアで示したものは、ハードアウェアで実現することもでき、その逆も当てはまる。
【0055】
[0070] 本発明の原理を適用することができる実施形態が多くあることに鑑み、以下の請求項の範囲および主旨、ならびにその均等物に該当すると考えられる全てのそのような実施形態を、本発明として特許請求することとする。

【特許請求の範囲】
【請求項1】
ディジタル・ビデオ安定化方法であって、計算機上において、
当該計算機上にある種々のマルチメディア・ディジタル信号処理コンポーネントの各々の可用性を判断するために前記計算機を評価するステップと、
前記評価の結果から、前記ディジタル・ビデオ安定化の少なくとも性能を含む規準によって、マルチメディアDSPコンポーネントを順序付けるための階層構造にしたがって、ディジタル・ビデオ安定化を処理する少なくとも1つの部分を処理するために利用する、利用可能なマルチメディアDSPコンポーネントはどれかを決定するステップであって、前記ディジタル・ビデオ安定化が、局所動きベクトル推定の処理、震動動画を表す全域動き変換の推定のための動きベクトルの処理、および前記震動動画を補償するための前記全域動き変換に基づく画像ワーピングの処理を少なくとも含む、ステップと、
前記ディジタル・ビデオ安定化を処理する前記少なくとも1つの部分のために、前記決定した利用可能なマルチメディアDSPコンポーネントを利用して、前記計算機上において、ビデオ・セグメントのディジタル・ビデオ安定化を処理するステップと、
を実行することを含む、方法。
【請求項2】
請求項1記載の方法において、前記階層構造が、順番に、マルチメディアDSP ASICユニット、GPUシェーダー・ユニット、マルチコアCPU、および単一コアCPUを備えている、方法。
【請求項3】
請求項1記載の方法であって、更に、前記評価するステップにおいて、GPUシェーダーが前記計算機上で利用可能であると判断したとき、前記局所動きベクトル推定の処理に前記GPUシェーダーを利用するために、前記ディジタル・ビデオ安定化を処理するステップを備えている、方法。
【請求項4】
請求項3記載の方法であって、更に、前記評価するステップにおいて、GPUシェーダーが前記計算機上で利用可能であると判断したとき、前記画像ワーピングを処理するために、前記GPUシェーダーを更に利用するために、前記ディジタル・ビデオ安定化を処理するステップを備えている、方法。
【請求項5】
ディジタル・ビデオ安定化方法であって、計算機上において、
前記方法が、ビデオ・セグメントの各場面の複数のフレームの各々について局所動きベクトル推定の処理のステップを実行し、前記局所動きベクトル推定の処理が、前記フレーム毎に、
複数の解像度で前記各フレームの複数のバージョンを形成するために、前記各フレームと当該各フレームと関連のある基準フレームとを1回以上ダウン・サンプリングするステップであって、前記各フレームの最も解像度が低いバージョンが、前記各フレームのそれよりも解像度が高い各バージョンにおける対応する位置にある連続的に多くなる数のブロックに対するピラミッド構造として関連付けられている複数のブロックを有する、ステップと、
前記各フレームの最も解像度が低いバージョンについて、関連のある最も解像度が低いバージョンの基準フレームの最大検索動きベクトル推定処理を用いて、前記最も解像度が低いバージョンのブロックの動きベクトルを推定するステップと、
前記各フレームの連続的に解像度が高くなる各バージョンについて、前記ピラミッド構造にしたがって、次に解像度が低いバージョンのフレームの関連ブロックについて指定した動きベクトルから開始して、精細検索を用いて、前記連続的に解像度が高くなるバージョンのブロックの動きベクトルを推定するステップと、
前記各フレームの元の解像度のバージョンのブロックに対して、推定局所動きベクトルを生成するステップと、
震動動画を表す全域動き変換の推定のために、前記各フレームの推定局所動きベクトルを処理するステップと、
前記震動動画を補償するために、前記全域動き変換に基づいて、前記各々に対して画像ワーピングを処理するステップと、
を備えている、方法。
【請求項6】
請求項5記載の方法において、前記各フレームの推定局所動きベクトルを処理する前記ステップが、
前記各フレームに対して生成された推定局所動きベクトルから、前記全域動き変換の推定に用いるために、1組の動きベクトルを選択するステップと、
ピクチャー境界上にある動きベクトルを除外するステップと、
高い動き補償残差を有する動きベクトルを除外するステップと、
画像コンテンツ変動が少ないブロックの動きベクトルを除外するステップと、
を備えている、方法。
【請求項7】
請求項5記載の方法において、前記全域動き変換を推定するために前記各フレームの推定局所動きベクトルを処理する前記ステップが、異常な動きベクトルの除去のためのランダム・サンプル・コンセンサスを用いて、前記各フレームの局所動きベクトルを処理する、方法。
【請求項8】
請求項5記載の方法において、前記各フレームの推定局所動きベクトルを処理する前記ステップが、
前記各フレームの局所動きベクトルを処理することから推定された前記全域動き変換を、下限および上限と比較するステップと、
前記推定全域動き変換が前記上限を超える場合、前記全域動き変換をリセットするステップと、
前記推定全域動き変換が前記下限を超えるが前記上限を超えない場合、前記全域動き変換を、前記下限に制限するステップと、
それ以外の場合、震動動画を表すために、前記推定全域動き変換を用いるステップと、
を備えている、方法。
【請求項9】
請求項8記載の方法であって、更に、
ビデオ・セグメントの場面におけるフレームに対する第1パスとして、前記フレームに対する全域動き変換を推定するために、前記フレームを処理するステップと、
前記フレームに対する全域動き変換のパラメーターの確率分布を判定するステップと、
前記確率分布に基づいて前記下限および前記上限を決定するステップと、
前記ビデオ・セグメントのフレームを処理する第2パスにおいて、前記全域動き変換の推定値に、前記下限および上限を適用するステップと、
を備えている、方法。
【請求項10】
請求項5記載の方法において、前記各フレームの推定局所動きベクトルを処理する前記ステップが、
類似性動きモデルに基づいて全域動き変換に対してパラメーターを推定するために、ランダム・サンプル・コンセンサスおよび最小二乗誤差を用いて、前記各フレームの動きベクトルを処理するステップと、
前記全域動き変換の推定パラメーターを、前記パラメーターに対する下限および上限と比較するステップと、
前記全域動き変換の推定パラメーターのいずれかがその上限を超えた場合、前記全域動き変換をリセットするステップと、
前記全域動き変換の推定パラメーターのいずれかがその下限を超えたが上限を超えない場合、前記全域動き変換の推定パラメーターをその下限に制限するステップと、
それ以外の場合、震動動画を表すために、前記推定全域動き変換を用いるステップと、
を備えている、方法。
【請求項11】
請求項5記載の方法において、前記各フレームの推定局所動きベクトルを処理する前記ステップが、ガウス・フィルターを用いて、時間スムージングを前記推定全域動き変換に適用するステップを備えており、
前記各フレームの推定局所動きベクトルを処理するステップが、ビデオ・セグメントの場面におけるフレームに対して制約付き全域最適化を用いて、時間スムージングを前記推定全域動き変換に適用するステップを備えている、方法。
【請求項12】
ビデオ画像安定化をビデオに適用するためにビデオを処理するディジタル・ビデオ処理デバイスであって、
汎用プラットフォームのビデオ安定化ライブラリー・プログラムを格納するメモリーと、
少なくとも1つのディジタル信号処理コンポーネントと、
前記メモリーから前記ビデオ安定化ライブラリー・プログラムを実行するように動作する演算装置と、
を備えており、前記ビデオ安定化ライブラリー・プログラムの実行が、
前記ディジタル・ビデオ処理デバイスの前記少なくとも1つのディジタル信号処理コンポーネントを評価し、
前記ディジタル・ビデオ安定化の少なくとも性能を含む規準によって、DSPディジタル信号処理コンポーネントを順序付けるための階層構造にしたがって、ディジタル・ビデオ安定化のためにビデオを処理する少なくとも1つの部分に、前記少なくとも1つのディジタル信号処理コンポーネントの内どれを利用するか決定し、
少なくとも、前記フレームの局所動きベクトルを推定するために前記ビデオのフレームを処理し、前記フレームの震動動画を表す全域動き変換の推定のために前記動きベクトルを処理し、前記震動動画を補償するために前記全域動き変換に基づいて前記フレームの画像ワーピングを処理することによって、ビデオ画像安定化のために前記ビデオを処理し、前記ビデオの処理が、画像安定化のためのビデオ処理の少なくとも一部に、前記決定したディジタル信号処理コンポーネントを利用するために、前記汎用プラットフォーム・ビデオ安定化ライブラリー・プログラムにおけるプログラミング機能を実行する、ディジタル・ビデオ処理デバイス。
【請求項13】
請求項12記載のディジタル・ビデオ処理デバイスにおいて、前記ディジタル信号コンポーネントによって前記フレームの局所動きベクトルを推定するために前記ビデオのフレームを処理する前記部分が、前記ビデオ・セグメントの場面における複数のフレームの各々に対して決定された少なくとも1つのディジタル信号処理コンポーネントに、
複数の解像度で前記各フレームの複数のバージョンを形成するために、前記各フレームと当該各フレームと関連のある基準フレームとを1回以上ダウン・サンプリングする動作であって、前記各フレームの最も解像度が低いバージョンが、前記各フレームのそれよりも解像度が高い各バージョンにおける対応する位置にある連続的に多くなる数のブロックに対するピラミッド構造として関連付けられている複数のブロックを有する動作と、
前記各フレームの最も解像度が低いバージョンについて、関連のある最も解像度が低いバージョンの基準フレームの最大検索動きベクトル推定処理を用いて、前記最も解像度が低いバージョンのブロックの動きベクトルを推定する動作と、
前記各フレームの連続的に解像度が高くなる各バージョンについて、前記ピラミッド構造にしたがって、次に解像度が低いバージョンのフレームの関連ブロックについて推定した動きベクトルから開始して、精細検索を用いて、前記連続的に解像度が高くなるバージョンのブロックの動きベクトルを推定する動作と、
前記各フレームの元の解像度のバージョンのブロックに対して、推定局所動きベクトルを生成する動作と、
を実行させる、ディジタル・ビデオ処理デバイス。
【請求項14】
請求項13記載のディジタル・ビデオ処理デバイスにおいて、前記フレームの震動動画を表す全域動き変換の推定のために動きベクトルを処理する前記部分が、類似性動きモデルに基づいて全域動き変換に対してパラメーターを推定するために、ランダム・サンプル・コンセンサスおよび最小二乗誤差を用いて、前記各フレームの動きベクトルを処理することを含む、ディジタル・ビデオ処理デバイス。
【請求項15】
請求項14記載のディジタル・ビデオ処理デバイスにおいて、前記フレームの震動動画を表す全域動き変換の推定のために動きベクトルを処理する前記部分が、更に、
前記ビデオ・セグメントの場面におけるフレームに対する全域動き変換の推定のために前記動きベクトルを処理する2回のパスを実行し、
前記第1パスにおいて前記フレームについて推定した前記全域動きベクトルを用いて、前記全域動き変換のパラメーターの確率分布を判定し、
前記確率分布に基づいて、下限および上限を決定し、
第2パスにおいて、前記全域動き変換の推定パラメーターを、前記パラメーターに対する下限および上限と比較し、
前記推定全域動き変換パラメーターが前記上限を超える場合、前記全域動き変換をリセットし、
前記推定全域動き変換パラメーターが前記下限を超えるが前記上限を超えない場合、前記全域動き変換を、前記下限に制限し、
それ以外の場合、震動動画を表すために前記推定全域動き変換を用いる、
ことを含む、ディジタル・ビデオ処理デバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公表番号】特表2013−520717(P2013−520717A)
【公表日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2012−552910(P2012−552910)
【出願日】平成23年2月5日(2011.2.5)
【国際出願番号】PCT/US2011/023839
【国際公開番号】WO2011/100174
【国際公開日】平成23年8月18日(2011.8.18)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】