(57)【要約】【解決手段】  実施形態は、ビデオイメージのマクロブロックに対する幾つかの候補モーションベクトルのリストを決定しそして多重計算パスを介してそれらを保持する並列処理システム内で実行されるモーション推定方法を含む。全ての候補モーションベクトルは潜在的な近隣予測因子として用いられ、その結果、差分ベクトルの最良の組み合わせが候補リストのトップに上がる。単純にマクロブロックのペアの間での代わりに、８つまでの近隣マクログロックの間でモーションベクトルを比較するプロセスの間、差分モーションベクトルの多くの組み合わせが考慮される。モーション推定システムは、高度に並列的なＧＰＵプラットフォーム上でのような多数の計算エンジンを用いるように構成される。このことは、パス毎に１つを除いてマクロブロックの間での従属性を有していないことによって達成される。これにより、パス毎の計算の数を極めて大きくすることができる。【選択図】図２
2012514429.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ符号器においてモーション推定を実行する方法であって、
ビデオイメージの各マクロブロックに対する１つ以上の候補モーションベクトルを計算して候補モーションベクトルのリストを形成することと、
各候補モーションベクトルに対するコストを計算することと、
最低コストから最高コストまでのコストで候補モーションベクトルの前記リストを並べ替えることと、
最低コスト候補モーションベクトルを当該コスト計算の基本として用いて第１のマクロブロックの前記計算された候補モーションベクトルを複数の近隣マクロブロックの前記計算された候補モーションベクトルと比較することとを備えた方法。
【請求項２】
各マクロブロックに対する各候補モーションベクトルにベーススコアを割り当て、各マクロブロックに対する最低コスト候補モーションベクトルが増加させられたベーススコアを受け取るようにすることと、
それぞれの候補モーションベクトルの前記ベーススコア又は増加させられたベーススコアを、近隣マクロブロック内の候補モーションベクトルとのその類似性に依存するポイントで増加させることとを備えた請求項１の方法。
【請求項３】
前記複数の近隣マクロブロックは２乃至８のマクロブロックを備えている請求項２の方法。
【請求項４】
最高スコアから最低スコアまでのスコアに基き候補モーションベクトルの前記リストを再並び替えして候補モーションベクトルの新たなリストを作成することと、
候補モーションベクトルの前記新たなリストの各候補モーションベクトルを前記複数の近隣マクロブロックの前記計算された候補モーションベクトルと再比較することと、
前記候補モーションベクトルを再スコアリングして最高スコアリング候補モーションベクトルを決定することとを更に備えた請求項２の方法。
【請求項５】
再並び替えすること、再比較すること、及び再スコアリングすることの前記ステップは、規定された最小スレッショルドを前記最高スコアリング候補ベクトルの変化の回数が下回るまで反復的に繰り返される請求項４の方法。
【請求項６】
前記最高スコアリング候補ベクトルの変化の回数をトラックするためのフラグ値を設定することを更に備えた請求項５の方法。
【請求項７】
前記規定された最小スレッショルドは、最大フラグ値、反復の規定された回数、及び前記回数の反復を実行するための処理時間の最大量からなる群から選択される請求項６の方法。
【請求項８】
各マクロブロックに対してそれぞれのマクロブロックに対するモーションベクトルとなるべき前記最高スコアリング候補モーションベクトルを規定することを更に備えた請求項５の方法。
【請求項９】
各マクロブロックに対するモーションベクトルに空間フィルタリングステップを実行して前記マクロブロックに対する前記モーションベクトルの間での小さな差を調整することを更に備えた請求項８の方法。
【請求項１０】
前記空間フィルタリングステップは前記モーションベクトルの１つ以上の係数ビットを潜在的に増加させることによって前記モーションベクトル間の前記差をゼロに低減する請求項９の方法。
【請求項１１】
前記コストは正規化値を乗ぜられた差分モーションベクトルと合算される計量値を利用して計算される請求項１０の方法。
【請求項１２】
前記計量は差分絶対値和（ＳＡＤ）、差分絶対値の二乗和（ＳＳＡＤ）、又は変換差分和（ＳＡＴＤ）の１つである請求項１１の方法。
【請求項１３】
多重プロセッサシステムの専用の処理エンジンが、それぞれのマスクブロックの１つ以上の候補モーションベクトルを計算するステップを実行する請求項１の方法。
【請求項１４】
前記多重プロセッサシステムは多重コア中央処理ユニット（ＣＰＵ）、多重コアグラフィカル処理ユニット（ＧＰＵ）、又はハイブリッドＣＰＵ／ＧＰＵシステムの１つを備えている請求項１３の方法。
【請求項１５】
前記多重プロセッサシステムはＧＰＵシェーダシステムを備えている請求項１４の方法。
【請求項１６】
ビデオ符号化パイプラインにおける使用のためのモーション推定システムであって、
ビデオイメージの各マクロブロックに対して１つ以上の候補モーションベクトルを計算して候補モーションベクトルのリストを形成する第１の回路と、
各候補モーションベクトルに対するコストを計算すると共に最低コストから最高コストまでのコストで候補モーションベクトルの前記リストを並べ替える第２の回路と、
最低コスト候補モーションベクトルを当該コスト計算の基本として用いて第１のマクロブロックの前記計算された候補モーションベクトルを複数の近隣マクロブロックであって２乃至８のマクロブロックを備えている複数の近隣マクロブロックの前記計算された候補モーションベクトルと比較する比較回路と、
各マクロブロックに対する各候補モーションベクトルにベーススコアを割り当て、各マクロブロックに対する最低コスト候補モーションベクトルが増加させられたベーススコアを受け取るようにすると共に、それぞれの候補モーションベクトルの前記ベーススコア又は増加させられたベーススコアを、近隣マクロブロック内の候補モーションベクトルとのその類似性に依存するポイントで増加させるスコアラ回路とを備えたモーション推定システム。
【請求項１７】
各マクロブロックに対する最良の候補モーションベクトルは反復処理方法を通して決定され、上記反復処理方法においては、規定された最小スレッショルドを最高スコアリング候補ベクトルの変化の回数が下回るまで、最高スコアから最低スコアまでのスコアに基き候補モーションベクトルの前記リストは再並び替えされて候補モーションベクトルの新たなリストを作成し、候補モーションベクトルの前記新たなリストの各候補モーションベクトルは前記複数の近隣マクロブロックの前記計算された候補モーションベクトルと再比較され、候補モーションベクトルは再スコアリングされて最高スコアリング候補モーションベクトルを決定する請求項１６のモーション推定システム。
【請求項１８】
前記最高スコアリング候補ベクトルの変化の前記回数をトラッキングすると共に変化の前記回数がいつ規定されたスレッショルド値を超えるかを決定するグローバルカウンタを更に備えた請求項１７のモーション推定システム。
【請求項１９】
各マクロブロックに対するモーションベクトルに空間フィルタリングステップを実行して前記マクロブロックに対する前記モーションベクトルの間での小さな差を調整する空間フィルタ回路を更に備えた請求項１８のモーション推定システム。
【請求項２０】
前記ビデオ符号器パイプラインは多重プロセッサシステムの一部分を備えており、前記第１の回路及び前記第２の回路はそれぞれのマスクブロックの１つ以上の候補モーションベクトルを計算する前記多重プロセッサシステムの専用の処理エンジンの一部を備えている請求項１６のモーション推定システム。
【請求項２１】
前記多重プロセッサシステムは多重コア中央処理ユニット（ＣＰＵ）、多重コアグラフィカル処理ユニット（ＧＰＵ）、又はハイブリッドＣＰＵ／ＧＰＵシステムの１つを備えている請求項２０のモーション推定システム。
【請求項２２】
前記多重プロセッサシステムはＧＰＵシェーダシステムを備えている請求項１４のモーション推定システム。
【請求項２３】
多重プロセッサ計算システム内のビデオ符号器においてモーション推定を実行する方法であって、
各処理エンジンは単一のそれぞれのマクロブロックに専用である複数の処理エンジン内でビデオイメージの各マクロブロックに対する複数の候補モーションベクトルのコストを計算して候補モーションベクトルのリストを形成することと、
第１のマクロブロックの計算された候補モーションベクトルを８つまでの近隣マクロブロックの計算された候補モーションベクトルと比較して各候補モーションベクトルに対する相対スコアを生成することと、
最高スコアリング候補モーションを用いて１つ以上の後続のコスト計算ステップにおける各マクロブロックに対する候補モーションベクトルのコストを決定することと、
各マクロブロックに対して最良の候補モーションベクトルが決定されるまで前記候補モーションベクトルを反復的に比較及び再スコアリングすることとを備えた方法。
【請求項２４】
前記最良の候補モーションベクトルは規定されたスレッショルドに到達した後の最高のスコアを伴う候補モーションベクトルである請求項２３の方法。
【請求項２５】
各マクロブロックに対する前記最良のモーションベクトルに空間フィルタリングステップを実行して前記マクロブロックに対するモーションベクトルの間での小さな差を調整することを更に備えた請求項２３の方法。
【請求項２６】
前記多重プロセッサシステムは多重コア中央処理ユニット（ＣＰＵ）、多重コアグラフィカル処理ユニット（ＧＰＵ）、又はハイブリッドＣＰＵ／ＧＰＵシステムの１つを備えている請求項２３の方法。
【請求項２７】
前記多重プロセッサシステムはＧＰＵシェーダシステムを備えている請求項２６の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される実施形態は、概してビデオ圧縮技術に関し、更に特定的には並列処理システムを用いるモーション推定及び補償のための方法及びシステムに関する。
本出願は、タイトルが「差分モーションベクトルの進歩的な空間フィルタリングを伴う多重候補モーション推定」で２００８年１２月３１日出願の米国出願番号１２／３４７，９３２の利益を宣言する。
【背景技術】
【０００２】
ビデオシステムにおいて伝送されるデータの量を低減するために、ビデオデータはしばしば符号化スキーム(coding scheme)によって圧縮される。ビデオコーデック(video codec)は、デジタルビデオのためにビデオ圧縮及び／又は復元を可能にするデバイス又はファームウエア／ソフトウエアプログラムである。モーションを伴うビデオの分野においては、多数の画素が１つのフレームから次のフレームへ変化するので、ビデオ圧縮スキームは、変化しつつある多数の画素に遅れをとらないように、より多くのデータを送る必要がある。高周波数細部変化の極端な場合には、ビデオ品質は劣化するかもしれない。ビデオ品質を維持し、更に送信されるデータの量を低減するために、種々の圧縮技術が開発されてきた。例えば、ＭＰＥＧベースのビデオ圧縮は、典型的には、マクロブロックと称される隣接画素の正方形群上で動作する。画素のこれらのブロックは、１つのフレームから次のフレームへと比較され、そしてビデオ圧縮コーデックはそれらブロック内での差分のみを送信する。モーションを有していないビデオの分野は、従って極めて少ない送信データを必要とする。
【０００３】
ビデオ圧縮システムにおいては、効率的な符号化を可能にするために、予測技術もまた用いられる。ＭＰＥＧビデオにおいて用いられる時間予測技術は、モーション推定に基いている。モーション推定は、連続するビデオフレームは多くの場合フレーム内での目標物の動きに起因する変化を除いて相似するであろうという前提に基いている。モーション推定プロセスにおいては、モーションベクトルが重要な要素である。モーションベクトルは、復号化された画像(picture)内の座標から参照画像と称される他の画像内の座標へのオフセットを提供する相互予測(inter prediction)のために用いられる二次元ベクトルである。モーションベクトルは、ある画像内のマクロブロックを、参照画像内におけるこのマクロブロック（又は類似のマクロブロック）の位置に基いて表すために用いられる。一般に、モーション推定は、１つの二次元イメージから他のイメージへの変換を通常はビデオシーケンス内の隣接フレームから記述するモーションベクトルを決定するプロセスである。モーションベクトルは、全体のイメージ（グローバルモーション推定）又は長方形ブロック、任意の形状のパッチ若しくは単なる個別の画素のような特定の部分に関連するであろう。モーションベクトルは、並進モデル(translational model)又は実際のビデオカメラのモーションを近似することができる他のモデルによって表され得る。
【０００４】
モーションベクトルをイメージに適用して次のイメージへの変換を合成することはモーション補償と称される。モーション推定とモーション補償の組み合わせは、ＭＰＥＧ１、２及び４の規格の他、多くの他のビデオコーデックによって用いられるビデオ圧縮方法の重要な部分である。
【０００５】
上述したように、ビデオコーデックの設計は、一般的に、ビデオフレームのシーケンスにおける多くの画素は著しい量では変化することがなく、あるいはそれらが変化する場合それらはそれらの隣接画素に対して空間的に又は時間的にそれでもなお類似しているという統計上の事実に基いている。モーションベクトルの使用は時間的な類似性を活用し（複数画素の１つのブロックはフレームからフレームへと同じままである）、またモーションベクトルを差動符号化することは、空間的な類似性を活用する（あるフレーム内の複数画素の１つのブロックはその近隣と同じモーションを有する）。ＭＰＥＧ−２及びＨ．２６４のようなコーデックは、差動符号化を利用することによってモーションベクトルの空間的類似性を活用する。図１は現在の既知の方法に従い近隣の複数のマクロブロック上で実行される空間フィルタリングの概念を示している。図１において、各ブロック１０２は、多数の行へと組織化された１６×１６画素の１つのマクロブロックを表している。処理の間、近隣の複数のブロックはペア毎に互いに比較され、また各ブロックをそれに隣接する単一又は複数のブロックと比較するためには少なくとも２つのパスが必要である。各ブロックはその２つの隣のブロックの各々と比較される。従って、マクロブロック２に対しては、図１に矢印で示されるように、マクロブロック１に対する第１の比較が実行され、そしてマクロブロック３に対する第２の比較が実行される。イメージ内のマクロブロックの全てのセットの処理は、既知の空間フィルタリングスキームに従って、奇数・偶数ペア上で進行し、次いで偶数・奇数ペア上で進行する。従って、図１のフレーム構造例に対しては、画像フレームブロックの左端に対して相対的に、処理は以下のように進行する。
第１のパス：１−２、３−４、５−６、７−８、…、４６−４７、４８−４９、５０−５１、５２−５３、…、９１−９２、９３−９４、９５−９６、９７−９８、…
第２のパス：２−３、４−５、６−７、…、４７−４８、４９−５０、５１−５２、…、９２−９３、９４−９５、９６−９７、…
【発明の概要】
【０００６】
モーション検出システムにおけるこの現行の空間フィルタリング方法は、２つ以上の連続する直列のパスを実行するので、各パスに対して余分な処理オーバヘッド(processing overhead)を消費する。この方法は、ある程度の並列処理を利用するではあろうが、一般的には、多重計算パスを介してのビデオイメージのマクロブロックのための幾つかの候補モーションベクトルに対してデータを保たないので、最新の多重プロセッサ設計を完全に活用することができない。
【０００７】
そこで、より高い品質のビデオ及び低減された処理オーバヘッドでのより低いビットレートを提供するために、現行のグラフィックス処理ユニットの並列処理能力を完全に利用するモーション推定システムが望まれている。
【図面の簡単な説明】
【０００８】
添付図面の図において実施形態は例示のために示されており限定のためではなく、図面において同様の参照符号は同様の要素を示す。
【０００９】
【図１】図１は現在の既知の方法に従い近隣の複数のマクロブロック上で実行される空間フィルタリング方法を示す図である。
【図２】図２は実施形態の下でモーション推定コンポーネントの実施形態を実装する符号器パイプラインのブロック図である。
【図３】図３は実施形態の下でモーション推定プロセスが実行されるイメージ又はイメージ断片に対する一連のマクロブロックの例を示す図である。
【図４】図４は実施形態の下でマクロブロックに対するモーションベクトルを決定する主たるステップを示すフローチャートである。
【図５】図５は実施形態の下で各マクロブロックに対する候補モーションベクトルを計算する方法を示す図である。
【図６】図６は実施形態の下で候補モーションベクトルを比較してマクロブロックに対する最良のモーションベクトルを決定する方法を示すフローチャートである。
【図７】図７は実施形態の下でモーションベクトル間の差分を微調整する方法を示すフローチャートである。
【発明を実施するための形態】
【００１０】
ここに説明される本発明の実施形態は、上述した従来の方法の問題の解決法を提供する。以下の説明においては種々の例が例示のために供されるが、限定を意図したものではない。実施形態は、ソフトウエア又はハードウエア符号器パイプラインに組み込まれるモーション推定コンポーネントを含み、このモーション推定コンポーネントは、より低いビットレート（より高い圧縮比）で符号器が同一の又は同様のビデオ品質の相対的レベルを維持することを可能にする。モーション推定コンポーネントは、現在知られている符号器において用いられている他の方法よりも少ない計算を実行しながらより低いビットレートを得る。
【００１１】
ＭＰＥＧベースのビデオ圧縮システムにおいては、フレーム上で独立に符号化される最小の長方形は、マクロブロックと称され、そして１秒の１／３０の周期を有する各フレームを伴って１６×１６画素のサイズを有している。特定のシステムは、１６×１６画素の全体フレームを統計的に解析して、ゼロ又は破棄されることになる極めて小さいアクティビティ(activity)から拡がっているアクティビティのレベルを決定する（このことは空間的アクティビティに対してのみ真実である）。標準的な圧縮システムは、一般に、比較的小さなアクティビティを呈する画素を破棄する。フルモーションビデオに対して、この種の解析は、知覚的に有意でない情報は破棄され且つ圧縮されたイメージが元の圧縮されていないバージョンと同じに見えるように人間の知覚が欠損データを補充することを当てにしている圧縮を実行するのには通常は適切である。一般的には、どのようなコーデックであっても、ビデオシーケンス内での所与の一連のフレームに対して、ある程度変化する品質を与え得る。典型的には、品質は、フレーム毎ベースでビットレート及び品質を設定するビットレート制御メカニズム（ビットレート割り当て）を介して制御される。
【００１２】
一般的な設計目標は、デジタルビデオデータを符号化することが可能な最も低いビットレートを用いることである。設計の複雑性を過度に高めることなしに、かつての標準よりも実質的に低いビットレートで良好なビデオ品質を提供するために、ビデオ圧縮のためのＨ．２６４標準が開発された（例えばＭＰＥＧ−２、Ｈ．２６３、又はＭＰＥＧ−４パート２のビットレートの半分以下）。Ｈ．２６４（ＭＰＥＧ−４パート１０又はＭＰＥＧ−４ＡＶＣとしても知られている）仕様は、ビデオ圧縮のための標準になってきており、ビデオを古い標準よりも更に効率的に圧縮することを可能にし且つ多種多様なネットワーク環境に対する応用のための更なる柔軟性を提供することを可能にするという多くの特徴を含んでいる。これらの特徴は、大きくて１６×１６から小さくて４×４のブロックサイズを伴う可変ブロックサイズモーション補償（モーション推定）を含んでおり、動いている領域の正確な断片化及びマクロブロック毎に多重モーションベクトルを使用する能力を可能にしている。
【００１３】
この説明の目的のために、「Ｈ．２６４」は、ＭＰＥＧ−４パート１０又はＭＰＥＧ−４ＡＶＣ（進歩的ビデオ符号化(Advanced Video Coding)）としても知られるビデオ圧縮のための標準を参照する。Ｈ．２６４は、ＩＳＯ／ＩＥＣ動画専門家グループ(Moving Picture Experts Group)（ＭＰＥＧ）と共にＩＴＵ−Ｔビデオ符号化専門家グループ(Video Coding Experts Group)（ＶＣＥＧ）によって展開されるブロック指向モーション推定ベースのコーデック(block-oriented motion-estimation-based codecs)の１つである。
【００１４】
Ｈ．２６４コーデックのような多くの現行のビデオコーデックは、イメージ内の近隣のマクロブロックの間での時間的及び空間的な類似性を活用するために差分符号化の形態を利用する。符号化システムの実施形態は、図１に示されるような近隣のマクロブロックに対して実行される現行の空間的フィルタリング技術を凌駕する改善を提供する。図２は実施形態の下でモーション推定コンポーネントの実施形態を実装する符号器パイプラインのブロック図である。モーション推定コンポーネントは、高度に並列的な計算環境における多重処理エンジンの使用を通して多重近隣マクロブロックに対する反復的な比較ステップ及びスコアリングステップを実行することにより各マクロブロックに対する最良のモーションベクトルを探し出すことによって、ビデオ品質を最大化するように構成される。
【００１５】
図２のシステム２００は、入力ビデオフレーム２０２を受信すると共に符号化ビデオビットストリーム２１６を生成する符号器パイプラインの実施形態である。入力ビデオフレーム２０２は、モーション推定コンポーネント２０４及び内部予測ユニット(intra-prediction unit)２０６へ入力される。これらのコンポーネントの出力は次いでオリジナル入力ビデオフレームと結合されて、正離散コサイン変換（ｆＤＣＴ）モジュールのような変換プロセス（Ｔ）、及び量子化プロセス（Ｑ）を通過する。量子化されたデータは次いで、逆量子化プロセス（Ｑ−１）及びｉＤＣＴのような逆変換プロセス（Ｔ−１）を介して処理される。逆変換されたデータは次いで、内部予測ユニット２０６及び随意的インループ非ブロック化フィルタ(optional in-loop deblocking filter)２１０のためにモーション推定出力と結合され、参照フレーム２０８を生成する。ビットレート制御ユニット２１２は量子化（Ｑ）プロセスに対する制御を提供し、ビットレート制御ユニット２１２はまた、出力ビットストリーム２１６を生成する可逆(lossless)エントロピ符号化モジュール２１４からの入力を取り込む。ビットレート制御ユニット２１２は、圧縮されていないビデオデータ２０２をソースから受信し、そして標準Ｈ．２６４符号化のような符号化方法に従って圧縮化されたビデオ信号２１６を生成する。レート制御器コンポーネントは、符号器パラメータを動的に調節して、ビットレートパラメータによって指定される目標ビットレートを獲得する。レート制御器は、ビデオシーケンス内の各領域、個々の画像、画像の群、及び／又はサブ画像にビットの割当量(a budget of bits)を配分する。
【００１６】
１つの実施形態においては、モーション推定コンポーネント２０４は、大きな処理ステップ又はパス内で複数の近隣計算の間に従属関係がなんら要求されない方法で、提議されている近隣モーションベクトル(proposed neighboring motion vectors)のフィルタリング及び解析を実行する方法を実装している。このことは、マクロブロック毎の個別の計算エンジンの使用を容易にする。そのような計算エンジンは、グラフィックス処理ユニット（ＧＰＵ）内の個々のシェーダ(shader)プロセッサ又はモーション推定のための専用のハードウエア回路であってよい。従って、図２のシステムは、多重中央処理ユニット（ＣＰＵ）コア、多重ＧＰＵコア、又はハイブリッド多重コアＣＰＵ／ＧＰＵシステムを含むシステムのような並列プロセッサ計算環境において実装され得る。モーション推定コンポーネントの実施形態はまた、ＧＰＵシェーダシステム内においても用いられ得る。一般に、シェーダは一連のソフトウエア命令であり、主として描画効果(rendering effects)を実行するためにグラフィック資源によって用いられる。シェーダは、同時に大きなセットの要素に変換を適合させるため、例えば場面の区域内の各画素又はモデルの全ての頂点に対して変換を適合させるために書かれている。このようにシェーダは、本多重コアＧＰＵシステムにおけるような並列処理に特に適している。
【００１７】
コンポーネント２０４によって実行されるモーション推定方法は、幾つかの候補モーションベクトルのリストを決定し、そして多重計算パスを介してそれらを保持する。この方法は、最初のパス内の単一の最良のコストスコア(cost score)がそのマクロブロックに対する結果を早々に独占してしまうことを回避する。全ての候補モーションベクトルは潜在的な近隣予測因子(neighboring predictors)として用いられ、その結果、差分ベクトルの最良の組み合わせが候補リストのトップに上がる。マクロブロックのペアの間でとは対照的に、８つまでの近隣マクログロックの間でモーションベクトルを比較するプロセスの間、差分モーションベクトルの多くの組み合わせが考慮される。モーション推定システムは、高度に並列的なＧＰＵプラットフォーム上でのような多数の計算エンジンを用いるように構成される。このことは、パス毎に１つを除いてマクロブロックの間での従属性を有していないことによって達成される。これにより、パス毎の計算の数を極めて大きくすることができる。
【００１８】
１つの実施形態においては、多重並列プロセッサを用いる多重パスプロセスが一連のマクロブロックに対して実行されて、最良のモーションベクトルが決定される。図１に示されるようにマクロブロックの個々のペアを比較することの代わりに、当該方法は、単一のマクロブロックの可能性のある幾つかの直近の近隣、例えば８つまでの近隣に対する差分を比較する。図３は、実施形態の下でモーション推定プロセスが実行されるイメージ又はイメージ断片(image fragment)に対する一連のマクロブロック例を示している。図３のイメージ断片は多数のマクロブロックを含んでおり、それらは１６×１６ブロック又はそれよりも小さくてよい。図３のビデオイメージパターンに対しては、多くのマクロブロックは８つまでの近隣を有している。従って、例としてマクロブロック４７に対しては、図３に矢印で示されるように、差分比較は８つの近隣１、２、３、４６、４８、９１、９２、及び９３に対して実行される。
【００１９】
図４は実施形態の下でマクロブロックに対するモーションベクトルを決定する主たるステップを示すフローチャートである。１つの実施形態では、プロセスは３つのパスで進行し、ここでは、ブロック４０２の第１のパスは、ビデオイメージの多数のマクロブロックの各マクロブロックに対して候補モーションベクトルをおおまかに決定し、そして並べ替える(sorts)。ブロック４０４の第２のパスは、各候補モーションベクトルを近隣モーションベクトルと比較し、そして最良のモーションベクトルが決定されるまで反復スコアリングプロセス(iterative scoring process)を実行する。ブロック４０６の第３のパスは、複数のマクロブロックモーションベクトルの間での任意の差分を微調整する空間フィルタリングステップを実行することを備えた随意的なステップである。これらのパスの各々のための詳細な処理ステップは、以下のフローチャートにおいて説明される。
【００２０】
図５は実施形態の下に各マクロブロックに対して候補モーションベクトルを計算する方法を示している。ブロック５０２においては、各マクロブロックに対する１つ以上の候補モーションベクトル（ＣＭＶ）が計算される。候補モーションベクトルは、数ある既知の従来の方法の１つを用いて計算することができる。このプロセスの例は４つの候補、及び最小差分絶対値和（ＳＡＤ）プロセスを用いて提供されるであろうが、任意の類似の計量(metric)が用いられてもよい。
【００２１】
モーション推定プロセスにおけるブロック整合のためのＳＡＤ計量は、元のブロック内の各画素と比較のために用いられているブロック内の対応する画素との間の差の絶対値を取ることによって機能する。これらの差は合算されて、類似性の単純な計量、即ち差分イメージ(difference image)のＬ１ノルムを生成する。代替的な実施形態では、差分絶対値の二乗和（ＳＳＡＤ）のような他の計量が用いられてよい。他の可能な計量は変換差分絶対値和(sum of absolute transformed difference)（ＳＡＴＤ）であり、これは、元のブロック内の画素と比較のために用いられているブロック内の対応する画素との間の差の周波数変換、通常はアダマール変換(Hadamard transform)（ＳＡＨＤ）を取ることによって機能する。変換それ自身は、多くの場合マクロブロック全体よりもむしろ小さいブロックのものである。例えば、完全１６×１６変換よりもむしろ一連の４×４ブロックが変換されてよい。一般に、ＳＡＴＤはその増大された複雑性に起因してＳＡＤよりも時間がかかるが、客観的計量及び主観的計量の両方の観点からすると、より正確に品質を予測することが可能であるという利点を有している。
【００２２】
１つの実施形態においては、各マクロブロックに対するＣＭＶを計算するために階層的検索方法が用いられる。当該ブロックの周りに１つのボックス区域(box area)が定義され、そしてボックス区域は次いで多重領域(multiple regions)へと分割される。プロセスは次いで、各領域をそれがあたかも注目の領域であるかのように検索する。１つの例においては、４つの領域が定義され、そして４つのＣＭＶ値が決定される。これらの値はＣＭＶ１、ＣＭＶ２、ＣＭＶ３、及びＣＭＶ４で示される。この方法においては、各次元における２分の１のような定義された比率で区域がダウンサンプリングされる。従って、領域のサイズが１００×１００である場合には、ダウンサンプリング動作は、１００×１００の領域内での１６×１６ブロックの検索の代わりに、２５×２５の領域内での４×４ブロックの検索を生み出す。
【００２３】
各マクロブロックはＣＭＶ１−４のようなＣＭＶのリストを有することになる。各マクロブロックに対する候補モーションベクトルのリストは、次いでブロック５０４において、コストの順で並べ替えられる(sorted by cost)。最小のコストが一般的には最良の候補を生み出す。１つの実施形態においては、コストは以下の式によって計算される。
Ｃｏｓｔ＝ＳＡＤ＋λ（ｄＭＶ）
上式において、ｄＭＶは予測されるモーションベクトルからの差分を伴う差分モーションベクトルである。予測されるモーションベクトルは０，０又は何らかの他のモーションベクトルであってよい。ラムダ（λ）ファクタは、その値がシステムの要求に応じて選択され得る正規化ファクタである。
【００２４】
図５のブロック５０６に示されるように、最低コスト（最良の）候補が次のパスのための予測因子として用いられる。即ち、最低コストＣＭＶがコスト式内のｄＭＶ値と置き換わる。非選択の候補はブロック５０８において将来の使用のために保持され、そしてプロセスの第１のパスの出力は、ブロック５１０に示されるように、ＳＡＤ及びコストを伴う並べ替えられたリストである。
【００２５】
図６は実施形態の下で候補モーションベクトルを比較してマクロブロックに対する最良のモーションベクトルを決定する方法を示すフローチャートである。ブロック６０２に示されるように、各候補モーションベクトルのその８つの近隣の各々との比較を実行することによってプロセスは開始し、例えば図３においては、単一のマクロブロック４７はその８つの近隣１、２、３、４６、４８、９１、９２、及び９３の各々と比較される。端の周囲では、幾つかのマクロブロックはより少ない近隣を有しているであろうから、これらのマクロブロックに対する比較ステップは、８つの近隣よりも少ないものを伴うであろう。比較ステップは、各近隣マクロブロックの並べ替えられたリスト内で候補モーションベクトルのリスト全体を照査し、そしてそのコストを例えば上記コスト式を用いることによって計算する。パス１プロセスからの最良のＣＭＶは、コスト式における差分モーションベクトルに対して参照として置換され、従ってこのプロセスにおいては、Ｃｏｓｔ＝ＳＡＤ＋λ（ＣＭＶｂｅｓｔ）である。第２のパスの比較ステップは、複数のＣＭＶの間での類似性の程度を本質的に決定する。ＣＭＶ値が同一である場合には、比較されたマクロブロック間でビットが変化させられることはない。候補モーションベクトルは、あるブロックから８つの周囲のブロックの各々までの可能な差分である差分モーションベクトル（ｄＭＶ）の群から選択される。
【００２６】
ブロック６０４においては、各近隣のリスト内の単一の最小ＣＭＶに対するスコアが増加させられる。単純な実装においては、各近隣のリスト内の単一の最小コストＣＭＶは、そのスコアに追加されるスコアリング値１を得る。つまり、単一のマクロブロックに対する計算は、その８つの近隣の各々における１つのＣＭＶに１スコアリングポイントを加える。代替的には、重み付けされたスコアが各リスト内の多重ＣＭＶに加えられる。
【００２７】
１つの実施形態においては、ブロック６０４に対して、最高スコアのＣＭＶが変化するたびに、パス毎の変化の回数がいつ少ないかの表示を提供するために変化の総数が累積され得るように、フラグがセットされてよく（又は何らかの共有可能なグローバルカウンタがインクリメントされてよく）、その結果、過剰なパスは使用されない。代替的には、幾つかの固定された数のパスが、試験、利用可能な時間、品質設定、等に基いて用いられ得る。
【００２８】
全てのスコアリングが完了した後、各マクロブロックに対するＣＭＶのリストは、リストのトップに位置する最高スコアと共にブロック６０６で記憶される。尚、最高スコアは最低コストとは異なる。一般的に、並べ替えるステップは、幾つかのマクロブロックに対する「最良の」モーションベクトルを変化させてよい。最良はスコアリング計算に対して用いられるから、幾つかの新たな最良ＣＭＶが存在することがある。ブロック６０８では、最適な結果に到達したか否かが決定される。１つの実施形態においては、このことは、更なる反復が有意な改善を付加しない相対的均衡点(relative equilibrium point)を規定する。そのような最適結果を決定するために、漸進的改善値(incremental improvement value)が規定されてよい。最適結果に到達していない場合には、最適結果又は最適に近い結果が相対的均衡に到達するまでプロセスはブロック６０２から繰り返す。最高スコア及び記憶されたＣＭＶは次いで、各マクロブロックに対する最終的な結果としてのモーションベクトルとしてブロック６１０でセットされる。
【００２９】
図７は実施形態の下でモーションベクトル間の差分を微調整する方法を示すフローチャートである。ブロック７０２に示されるように、候補モーションベクトルのリストから最良のモーションベクトルが決定される。この最良のモーションベクトルは、一般的には、空間的に同様であることに関して全ての近隣が有益であると見出すであろうモーションベクトルを代表する。ブロック７０４では、プロセスは、ベクトル間の差分を微調整する空間フィルタリングステップ（ＳＦＯＤＭＶ）を実行する。このことは、係数ビットにおけるいくらか小さな増加でゼロに低減され得る小さな差分を調整することに役立つ。このステップは、システムの品質及び性能の設定に応じて随意的なものであると考えられてよく、幾つかの場合には、そのような微調整は不要である。
【００３０】
概して、図５〜７に示されるビデオイメージの各マクロブロックに対して最良のモーションベクトルを計算する全体的なモーション推定プロセスは、従来の方法よりも低いビットレートでより良好なイメージを生成する。方法は、幾つかの候補モーションベクトルのリストを含み、そして多重計算パスを介してそれらを保持し、これにより、最初のパス内の単一の最良のＳＡＤがそのマクロブロックに対する結果を早々に独占してしまうことを回避する。また、全ての候補モーションベクトルは潜在的な近隣予測因子(neighboring predictors)として用いられ、その結果、差分ベクトルの最良の組み合わせがリストのトップに上がる。更に、差分モーションベクトルの多くの組み合わせが試みられるが、マクロブロックの個々のペアを単に比較することの代わりに、プロセスは、差分を全部で８つの可能な直近の近隣と比較する。
【００３１】
実施形態においては、全ての可能な近隣は、たとえ特定のコーデックがそのような近隣を予測因子として支持していないであろうとしても、照査される。これが行われる理由は、逆方向予測因子(inverse predictor)が有効であろうし、また予測因子の方向は、イメージ全体に対して平均における最小のｄＭＶを決定することを試みる場合にほとんど差をもたらさないところにある。
【００３２】
１つの実施形態においては、方法は、高度に並列的なＧＰＵプラットフォームのような多数のコンピュータエンジンを用いるコンピュータプラットフォーム内に実装される。これにより、方法が比較的多数の必要な計算を妥当な時間内で実行することが可能になる。このことは、概して、パス毎の１つを除きマクロブロック間に従属性を有していないことによって達成される。パス毎の計算の回数は多いであろうが、マクロブロック間には従属性はない。
【００３３】
使用されるプロセッサの数は、システムの制約及びビデオストリーム圧縮アプリケーションの要求に依存する。例えば典型的な場合には、１０，０００マクロブロックを処理するために約５，０００スレッドが同時に用いられてよい。このことは、１６０の個別プロセッサを有し且つ式１６０（４（Ｎ））を介して決定されるシステムによってもたらすことができ、ここで４は１つの群内の１つのプロセッサ上で同時に処理されるスレッドの数を表し、またＮ（＝２、４、又は８）はメモリ待ち時間を克服するように同時にスケジューリングされ得る群の数を表している。
【００３４】
説明されているモーション推定プロセスにおいては、提議された複数の近隣モーションベクトルのフィルタリング及び解析は、たとえ「最良の」提議されたベクトルが同一でなかったとしても、２つのベクトルを同一にすることを試みる。このことは、幾らかの割合の場合に、ベクトルを同一にすることによって節約されるビットは、それよりも僅かに大きい圧縮すべき残留データを有することによるビット損失よりも多いであろうから、ビデオ品質を改善し且つ／又はビットレートを低下させることに役立つ。この種のフィルタリングは、ＣＰＵ上で行われるシーケンシャルブロック処理よりもむしろ、ＧＰＵシェーダモデルの計算において全てのブロックが並列的に考慮され且つ比較されるＧＰＵ処理に極めて適している。しかし、この概念はＣＰＵ、ＧＰＵ及び専用のハードウエア符号器に適用可能である。用いられる特定のフィルタリングは、使用中の実際のコーデックに基いて選択されてよい。
【００３５】
概して、ここに説明される実施形態は、ビデオ符号器においてモーション推定を実行する方法に向けられており、方法は、ビデオイメージの各マクロブロックに対する１つ以上の候補モーションベクトルを計算して候補モーションベクトルのリストを形成することと、各候補モーションベクトルに対するコストを計算することと、最低コストから最高コストまでのコストで候補モーションベクトルのリストを並べ替えることと、最低コスト候補モーションベクトルを当該コスト計算の基本として用いて第１のマクロブロックの計算された候補モーションベクトルを複数の近隣マクロブロックの計算された候補モーションベクトルと比較することと、各マクロブロックに対する各候補モーションベクトルにベーススコアを割り当て、各マクロブロックに対する最低コスト候補モーションベクトルが増加させられたベーススコアを受け取るようにすることと、それぞれの候補モーションベクトルのベーススコア又は増加させられたベーススコアを、近隣マクロブロック内の候補モーションベクトルとのその類似性に依存するポイントで増加させることとを備えている。反復プロセスを通して、方法は、最低スコアから最高スコアまでのスコアに基き候補モーションベクトルのリストを再並び替えして候補モーションベクトルの新たなリストを作成し、候補モーションベクトルの新たなリストの各候補モーションベクトルを複数の近隣マクロブロックの計算された候補モーションベクトルと再比較し、そして候補モーションベクトルを再スコアリングして最高スコアリング候補モーションベクトルを決定し、更に規定された最小スレッショルドを最高スコアリング候補ベクトルの変化の回数が下回るまでこれらのステップを繰り返す。方法はまた、各マクロブロックに対するモーションベクトルに空間フィルタリングステップを実行してマクロブロックに対するモーションベクトルの間での小さな差を調整する。方法は、多重プロセッサシステムの専用の処理エンジンが、それぞれのマスクブロックの１つ以上の候補モーションベクトルを計算するステップを実行する多重プロセッサ計算環境において実行されてよい。
【００３６】
ここに説明されるモーション推定プロセスの実施形態は、内部予測ブロック２０６及び関連する回路が含まれる図２の回路に対するような標準的な予測ＭＰＥＧスキームに適用することができる。ビデオストリームを処理する場合、ＭＰＥＧ符号器は３種類の符号化されたフレームを生成する。第１の種類のフレームは「Ｉ」フレーム又は内部符号化フレーム(intra-coded frame)と称される。これは最も単純な種類のフレームであり、そして静止画像の符号化された表現である。一般的にＩフレームに対してはモーション推定処理は実行されず、それらの目的は、次の一連のフレームを復号化するための開始点を復号器に提供することである。第２の種類のフレームは「Ｐ」フレーム又は予測されたフレームと称される。復号化に際して、Ｐフレームは、複数の先行するＰフレーム又はＩフレームに含まれる情報から生成される。第３の種類のフレームは「Ｂ」フレーム又は双方向性フレームであり、最もありふれた種類のものである。Ｂフレームは前方及び後方の両方へ予測されるものであり、そして最後の及びその次のＰ又はＩフレームから構成される。Ｐフレーム及びＢフレームは両方ともフレーム間符号化フレーム(inter-coded frames)である。コーデック符号器は、ストリームをＩＢＢＰ…のシーケンスのように符号化することがある。デジタルビデオ伝送においては、Ｂフレームはしばしば用いられない。この場合、シーケンスは、Ｉフレームとこれらに続く幾つかのＰフレームとのみから構成されてよい。
【００３７】
実施形態はＨ．２６４標準に関連して説明されてきたが、他の同様の標準もまた図２の符号器回路のための基準として用いられてよいことに留意されたい。実施形態はまた、大きくて１６×１６及び小さくて４×４のようなブロックサイズ、あるいは１６×８、８×１６、８×８、８×４、及び４×８のような中間サイズを伴う可変ブロックサイズモーションシステムに向けられてもよい。
【００３８】
実施形態は符号変換(transcoding)システムにおいて用いられ得る。符号変換は、１つのデジタル的に符号化されたフォーマットの他のフォーマットへの直接的なデジタル―デジタル変換である。符号変換は、コンテンツ適合の多くの分野において見出すことができ、そして互換性のない又は旧式のデータをより適切なフォーマットへ変換するためにしばしば用いられる。符号変換はまた、例えば歌曲をＣＤフォーマットからコンピュータ及びＭＰ３プレーヤでの再生のためのＭＰ３フォーマットへ変換する場合のように、異なる再生デバイスにおける使用のための異なる種類のデジタルメディア上でコンテンツをアーカイブし又は配布するためにも用いられる。符号変換は更に、携帯電話コンテンツ適合の分野においても標準的に用いられる。この場合、携帯デバイス及びそれらの能力の多様性(diversity)に起因して符号変換が必要である。この多様性は、ソースコンテンツが目標デバイス上で適切に再生することを確実にするために、コンテンツ適合の中間状態を必要とする。
【００３９】
モーション推定システム及びプロセスの実施形態は、ＧＰＵシェーダのようなＧＰＵコンポーネントに向けられているが、方法は、何らかの形態の並列計算を実装している任意の計算デバイス上で用いられ得る。また、処理システムに対して専用の又は集積化されたグラフィックス描画デバイスであるＧＰＵデバイス又はビジュアル処理ユニット（ＶＰＵ）を備えたグラフィックスシステムを参照して実施形態が説明されてきたが、そのような実施形態は、並列で用いられる他の多くの種類のビデオ生成エンジンに対しても用いられ得ることに留意されたい。そのようなビデオ生成エンジンは、デジタルプロジェクタのようなディスクリートビデオジェネレータの形態で実装されてよく、あるいは個別のＩＣ（集積回路）デバイスの形態で提供される電子回路又はビデオベースのコンピュータシステムのためのアドオン(add-on)カードとして提供される電子回路であってよい。１つの実施形態においては、ＧＰＵ制御システムを含むシステムは、パーソナルコンピュータ、ワークステーション、携帯型計算デバイス、デジタルテレビジョン、メディア再生デバイス、高機能(smart)通信デバイス、及びゲーム機、又は任意の他の類似の処理デバイスからなる群から選択される計算デバイスを備えている。
【００４０】
ここに説明されるシステム及び／又はコンポーネントは、１つ以上の電子回路として実装されてよい。ここに説明されるそのような回路は、製造プロセス及びマスクワークの制御を通して実装されてよく、これらは次いで関連する回路を製造するために使用されてよい。当業者に知られるそのような製造プロセス制御及びマスク生成は、例えばＶｅｒｉｌｏｇ、ＶＨＤＬ、又は他のハードウエア記述言語での命令を含むコンピュータ可読媒体上のコンピュータ命令の記憶を含んでいる。
【００４１】
ここに説明されるシステムの種々の側面は、任意の種類の回路内にプログラムされる機能性として実装されてよく、そのような回路は、プログラム可能論理デバイス（「ＰＬＤ」）、例えばフィールドプログラム可能ゲートアレイ（「ＦＰＧＡ」）、プログラム可能アレイ論理（「ＰＡＬ」）デバイス、電気的にプログラム可能な論理デバイス及びメモリデバイス、並びに標準的なセルベースのデバイスの他に、特定用途向け集積回路を含む。種々の側面を実装するための幾つかの他の可能性は、メモリデバイス、メモリ（例えばＥＥＰＲＯＭ）を伴うマイクロコントローラ、組み込み型マイクロプロセッサ、ファームウエア、ソフトウエア、等を含む。また、ビデオストリームマイグレーション(migration)システムの種々の側面は、ソフトウエアベースの回路エミュレーション、個別論理（シーケンシャル及び組み合わせの）、特別注文デバイス、ファジー（ニューラル）論理、量子デバイス、及び上述のデバイス種類の任意の混成を有するマイクロプロセッサ内で具現化され得る。基本となるデバイス技術は、種々のコンポーネント種類、例えば相補型金属酸化物半導体（「ＣＭＯＳ」）のような金属酸化物半導体電界効果トランジスタ（「ＭＯＳＦＥＴ」）技術、エミッタ結合論理（「ＥＣＬ」）のようなバイポーラ技術、ポリマー技術（例えば、シリコン共役ポリマー（silicon-conjugated polymer）構造及び金属共役ポリマー金属（metal-conjugated polymer-metal）構造）、アナログ及びデジタル混合、等において提供され得る。
【００４２】
ここに開示される種々の機能は、ハードウエア、ファームウエアの任意の数の組み合わせを用いて、且つ／又は種々の機械可読媒体又はコンピュータ可読媒体において具現化されるデータ及び／又は命令として、それらの挙動、レジスタ転送、論理コンポーネント、及び／又は他の特性に関して説明され得ることにも留意されたい。そのようなフォーマットされたデータ及び／又は命令が具現化され得るコンピュータ可読媒体は、限定はされないが、種々の形態にある不揮発性記憶媒体（例えば、光学的な、磁気的な、又は半導体の記憶媒体）、及びワイヤレスな、光学的な、若しくは有線の信号媒体又はそれらの任意の組み合わせを介してそのようにフォーマットされたデータ及び／又は命令を転送するために用いられ得る搬送波を含む。そのようなフォーマットされたデータ及び／又は命令の搬送波による転送の例は、限定はされないが、１つ以上のデータ転送プロトコル（例えば、ＨＴＴＰ、ＦＴＰ、ＳＭＰＴ、等）によるインターネット及び／又は他のコンピュータネットワークを介した転送（アップロード、ダウンロード、ｅメール、等）を含む。加えて、実施形態は、ビデオ符号化を可能にするアプリケーション（例えばビデオ編集ソフトウエア、コンテンツ作成ソフトウエア、等）を備えていてよい。そのようなアプリケーションは、汎用プロセッサ及び／又は専用プロセッサ（例えばＣＰＵ及び／又はＧＰＵあるいはそれらの組み合わせ）をプログラムしてここに説明される本発明の種々の側面を実装する命令を含んでいてよい。そのようなアプリケーションは、ここに説明される方法で作成された符号化されたビデオデータを生成してよい。
【００４３】
明細書及び特許請求の範囲を通して、「備える(comprise)」、「備えている(comprising)」等の語は、文脈が明らかに別のものを必要としていない限り、排他的又は網羅的な意味とは対照的な包括的な意味、即ち、「限定されないが、〜を含んでいる(including, but not limited to)」の意味で解釈されるべきである。単数又は複数を使用する語はまた、複数又は単数をそれぞれ含む。また、「ここに」、「以下に」、「上記の、上述の」、「以下の」という語及び類似の意味の語は、この出願のいずれか特定の部分ではなくこの出願を全体として参照している。「又は、若しくは、あるいは(or)」の語が、２つ又はそれより多い項目のリストを参照して用いられている場合、当該語は、当該語の以下の解釈、即ちリスト内の任意の項目、リスト内の全ての項目、及びリスト内の項目の任意の組み合わせの全てを網羅する。
【００４４】
モーション推定方法及びシステムの例示された実施形態の上記説明は、網羅的であることを意図されておらず、あるいは開示される厳密な形態又は指示に本発明を限定することを意図されていない。グラフィック処理ユニット又はＡＳＩＣの具体的な実施形態、及びそのための例が例示を目的としてここに説明されるが、関連分野を含む当業者が認識するであろうように、種々の均等な修正が、開示される方法及び構造の範囲内で可能である。
【００４５】
上述の種々の実施形態の要素及び作用(acts)は、更なる実施形態を提供するために組み合わされ得る。これらの及び他の変更は、上述の詳細な説明を考慮して、開示されるシステムに対してなされ得る。
【００４６】
一般に、以下の特許請求の範囲では、使用される用語は、開示される方法を明細書及び特許請求の範囲に開示される特定の実施形態に限定するように解釈されるべきではない一方で、特許請求の範囲の下で動作する全ての動作及びプロセスを含むように解釈されるべきである。従って、開示される構造及び方法は開示によって限定されるものではなく、その代わり、記載されている方法の範囲はもっぱら特許請求の範囲によって決定されることになる。
【００４７】
開示される実施形態の特定の側面が特定の請求項の形態で以下に提供されるが、発明者は、方法論の種々の側面を任意の数の請求項の形態で検討している。例えば、１つの側面のみが機械可読媒体において具現化されるものとして記載されているかもしれないが、他の側面も同様に機械可読媒体において具現化され得る。従って、発明者は、本出願の出願後に追加的な請求項を加えて他の側面に対するそのような追加的な請求項の形態を追求する権利を留保する。
【図１】
2012514429.tif 000003
【図２】
2012514429.tif 000004
【図３】
2012514429.tif 000005
【図４】
2012514429.tif 000006
【図５】
2012514429.tif 000007
【図６】
2012514429.tif 000008
【図７】
2012514429.tif 000009
【国際調査報告】
2012514429.tif 000010
2012514429.tif 000011
2012514429.tif 000012