(57)【要約】      （修正有）【課題】動き予測中に検索範囲及び／又は動きベクトルの範囲を選択する技術及びツールを提供する。【解決手段】ビデオエンコーダは第１の検索範囲により制限される動き予測を実施し、その結果複数の動きベクトルが得られる。エンコーダは動きベクトルに対する動きベクトル分布情報を計算する。分布情報を計算するため、エンコーダは動きベクトルをヒストグラム内で追跡し、何個が分布情報に対する複数区間の各々内かを数える。エンコーダは次いで第２の検索範囲を選択して、第２の検索範囲により制限される動き予測を実施する。第２の検索範囲の選択は動きベクトルの範囲の選択を含むことができ、いくつかの場合では実際に第２の検索範囲を決定する。【選択図】図５
2014147072.tif 000002
【特許請求の範囲】
【請求項１】
エンコード中に：
第１の検索範囲により制限された第１の動き予測を実施するステップであって、複数の動きベクトルとなる、実施するステップと、
前記複数の動きベクトルについて動きベクトル分布情報を計算するステップと、
少なくとも部分的に前記動きベクトル分布情報に基づいて、第２の検索範囲を選択するステップと、
前記第２の検索範囲により制限された第２の動き予測を実施するステップと、
前記第２の動き予測の結果を出力するステップと
を備えたことを特徴とする方法。
【請求項２】
前記動きベクトル分布情報を複数の区間として構成し、前記複数区間の少なくとも２個は重複することを特徴とする請求項１に記載の方法。
【請求項３】
前記計算ステップは、
前記複数の動きベクトルの各々をヒストグラム内で追跡するステップと、
前記ヒストグラムを用いて、前記複数区間の各々内の前記複数の動きベクトルの数を数えるステップと
を備えたことを特徴とする請求項２に記載の方法。
【請求項４】
前記第１の検索範囲を示す第１の動きベクトルの範囲を信号送信するステップと、
前記第２の検索範囲を示す第２の動きベクトルの範囲を信号送信するステップと
をさらに備え、前記信号送信するステップにより、前記第１の動き予測及び第２の動き予測から動きベクトル情報のエントロピーエンコードの効率性を改善することを特徴とする請求項１に記載の方法。
【請求項５】
前記第１の動きベクトルの範囲は前記第２の動きベクトルの範囲と同一であることを特徴とする請求項４に記載の方法。
【請求項６】
前記第２の検索範囲を選択するステップは動きベクトルの範囲を選択するステップを含み、実質的に前記動きベクトルの範囲の選択は前記第２の検索範囲を決定することを特徴とする請求項１に記載の方法。
【請求項７】
前記第２の検索範囲を選択するステップは、サイズが増えて増加する複数の利用可能な検索範囲の間で選択するステップを備え、前記第２の検索範囲は１サイズ大きくなるか、１サイズ小さくなるか、又は第１の検索範囲と同一サイズになるように制限されることを特徴とする請求項１に記載の方法。
【請求項８】
前記第１の動き予測を第１の予測された画像について実施し、前記第２の動き予測を前記第１の予測された画像とは異なる第２の予測された画像について実施することを特徴とする請求項１に記載の方法。
【請求項９】
前記第２の動き予測を、再生順序で前記第１及び第２の予測された画像間の１又は複数の追加予測された画像についてさらに実施することを特徴とする請求項８に記載の方法。
【請求項１０】
エンコード中に：
第１の動きベクトルの範囲及び第１の検索範囲により制限された第１の動き予測を実施するステップと、
前記第１の動きベクトルの範囲をビデオビットストリームで信号送信するステップと、
前記第１の動き予測の結果を前記ビデオビットストリームで信号送信するステップと、
第２の動きベクトルの範囲を選択するステップと、
前記第２の動きベクトル及び第２の検索範囲により制限された第２の動き予測を実施するステップと、
前記第２の動きベクトルの範囲をビデオビットストリームで信号送信するステップと、
前記第２の動き予測の結果を前記ビデオビットストリームで信号送信するステップと
を備えたことを特徴とする方法。
【請求項１１】
前記第１の動き予測から生ずる複数の動きベクトルについて動きベクトル分布情報を計算するステップをさらに備え、前記第２の動きベクトルの範囲を選択するステップは少なくとも部分的に前記動きベクトル分布情報に基づくことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記分布情報を複数の区間として構成し、前記複数区間の少なくとも２個は重複することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記計算するステップは、
前記複数の動きベクトルの各々をヒストグラム内で追跡するステップと、
前記ヒストグラムを使用するステップであって、動きベクトル分布の複数区間の各々内の前記複数の動きベクトルの数を数える、使用するステップと
を備えたことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記第１の動き予測からの動きベクトル情報のエントロピーエンコードにおいて、前記第１の動きベクトルの範囲を使用するステップと、
前記第２の動き予測からの動きベクトル情報のエントロピーエンコードにおいて、前記第２の動きベクトルの範囲を使用するステップと
をさらに備えたことを特徴とする請求項１０に記載の方法。
【請求項１５】
前記第１の動きベクトルの範囲は前記第２の動きベクトルの範囲と同一であることを特徴とし、前記第１の検索範囲は前記第２の検索範囲と同一又は異なることを特徴とする請求項１０に記載の方法。
【請求項１６】
動き予測を実施するための動き予測部と、
予測残差を変換係数に変換するための周波数変換部と、
前記変換係数を量子化するための量子化部と、
動きベクトル情報と前記量子化変換係数とをエントロピーエンコードするためのエントロピーエンコーダと、
前記動き予測を制限する検索範囲を選択するための動き予測コントローラであって、現在の画像を選択することは、少なくとも部分的に複数の前の動きベクトルについての動きベクトル分布情報に基づくことを特徴とする動き予測コントローラと
を備えることを特徴とするエンコーダ。
【請求項１７】
前記検索範囲を前記選択することは動きベクトルの範囲を選択することを含むことを特徴とし、実質的に前記動きベクトルの範囲の選択は前記検索範囲を決定することを特徴とする請求項１６に記載のエンコーダ。
【請求項１８】
前記動き予測コントローラは動きベクトル分布の複数区間の各々内の前記複数の前の動きベクトルの数を数えることを特徴とし、前記複数区間の少なくとも２個は重複することを特徴とする請求項１６に記載のエンコーダ。
【請求項１９】
前記動き予測コントローラは、
前記複数の前の動きベクトルの各々を、水平及び垂直コンポーネントの絶対値の和に基づいてヒストグラム内で追跡し、
前記ヒストグラムを用いて、動きベクトル分布の複数区間の各々内の前記複数の前の動きベクトルの数を数える
ことを特徴とする請求項１６に記載のエンコーダ。
【請求項２０】
前記複数の前の動きベクトルは前の画像からであることを特徴とする請求項１６に記載のエンコーダ。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタルビデオは大量のストレージ及び送信容量を消費する。一般的な生の（row：ロー）デジタルビデオシーケンスは１秒あたり１５又は３０フレームを含む。それぞれのフレームは何十又は何百又は何千もの画素（ペル(pel)とも呼ばれる）を含み、それぞれの画素（pixel:ピクセル）は画像の微小の要素を表す。生モードでは、コンピュータは一般的に画素を合計２４ビットである３つのサンプル集合として表す。従って、生のデジタルビデオシーケンスの１秒当りのビット数、又はビットレートは１秒当り５百万ビット以上である可能性がある。
【０００２】
多数のコンピュータ及びコンピュータネットワークには生のデジタルビデオを処理するリソースが不足している。この理由のためエンジニアはデジタルビデオのビットレートを削減するため圧縮（コーディング又はエンコーディングとも呼ばれる）を使用する。圧縮により、ビデオを低ビットレートの形態に変換することで、ビデオの格納及び送信コストが減少する。解凍（又は復号化、デコーディングとも呼ばれる）は元のバージョンのビデオを圧縮形から再構築する。「コーデック」はエンコーダ／デコーダシステムである。圧縮は可逆（lossless）であることができる。この場合、ビデオの品質は失われないが、ビデオデータの変動量（エントロピーとも呼ばれる場合がある）によりビットレートの減少は限られる。又は、圧縮は不可逆（lossy）であることができる。この場合、ビデオの品質は失われるが、実現可能なビットレートの減少はより劇的である。不可逆圧縮は可逆圧縮とともに使用されることがよくある。この場合、不可逆圧縮は情報の近似を確立し、可逆圧縮はその近似を表すために適用される。
【０００３】
不可逆圧縮の基本的な目標は、良いレート歪み性能を提供することである。従って、特定のビットレートに対して、エンコーダは最高品質のビデオを提供することを試みる。又は、元のビデオに対する特定レベルの品質／忠実度に関して、エンコーダは最低ビットレートのエンコードビデオを提供することを試みる。実際には、エンコード時間、エンコードの複雑度、エンコードリソース、デコード時間、デコードの複雑度、デコードリソース、全体遅延、及び／又は品質／ビットレート変化における平滑度のような検討事項も、コーデック設計で行う決定及び実際のエンコーディング中の決定に影響を及ぼす。
【０００４】
一般に、ビデオ圧縮技術には「画像内」圧縮と「画像間」圧縮が含まれる。画像内圧縮技術は個々の画像を圧縮し、画像間圧縮技術は１又は複数の先行及び／又は後続の画像（しばしばリファレンス又はアンカー画像と呼ばれる）を参照して画像を圧縮する。
【０００５】
画像間圧縮技術はビデオシーケンス内の時間的冗長性を利用することにより、動き(motion：モーション)予測及び動き補正を使用してビットレートを削減することがよくある。動き予測は画像間の動きを予測するプロセスである。１つの一般的な技術では、動き予測を用いるエンコーダは、現在の画像内の現在のサンプルブロックを、別の画像、参照画像内の検索エリア内の同一サイズの候補ブロックとマッチすることを試みる。エンコーダが参照画像内の検索エリア内で正確又は「十分に近い」マッチを見つけると、エンコーダは現ブロック及び候補ブロックの間の位置における変化を（動きベクトル（「ＭＶ」）のような）動きデータとしてパラメータ化する。動きベクトルは、従来は２次元の値であり、左又は右の空間的変位を示す水平コンポーネント（component:構成要素）と上又は下の空間的変位を表す垂直コンポーネントとを有する。一般に、動き補正は動きデータを用いて参照画像（複数）から画像を再構築するプロセスである。
【０００６】
図１はエンコーダの例における予測された画像の一部に対する動き予測を示す。８×８のサンプルブロック、１６×１６のブロック（しばしば「マクロブロック」と呼ばれる）、又は他の現在の画像ユニットに対して、エンコーダは参照画像内の類似ユニットを見つけて予測部として使用する。図１では、エンコーダは現在の予測された画像（１１０）における１６×１６のマクロブロック（１１５）に対して動きベクトルを計算する。エンコ−ダは参照画像（１３０）の検索エリア（１３５）を検索する。検索エリア（１３５）内で、エンコーダは予測された画像（１１０）からのマクロブロック（１１５）を様々な候補マクロブロックと比較して、良くマッチする候補マクロブロックを見つける。エンコーダは動きベクトルを特定する情報を予測部のマクロブロックに出力する。
【０００７】
エンコーダは、現在のユニットとその動き補正予測との間のサンプル毎の差分を計算して、残差（誤り信号とも呼ばれる）を決定する。残差（Residual:差）は周波数変換、量子化、及びエントロピー符号化される。線形エネルギー圧縮変換として、周波数変換は、エネルギーが低周波数係数に集中した変換係数を生成する傾向がある。予測された画像の全体ビットレートは大部分が残差のビットレートに依存する。残差が単純（即ち、正確又は良いマッチを動き予測が見つけたため）又は不可逆圧縮が残差の複雑性を劇的に削減する場合は、残差のビットレートは低い。成功した動き予測により節約したビットを使用して、他所の品質を向上させるか又は全体ビットレートを削減することができる。他方、複雑な残差のビットレートは、その残差の複雑性を削減するために適用した不可逆圧縮の程度に依存して、より高い可能性がある。
【０００８】
予測された画像を後続の動き補正に対する参照画像として使用する場合、エンコーダは予測された画像を再構築する。残差を再構築するとき、エンコーダは、逆量子化を用いて量子化した変換係数を再構築し、逆周波数変換を実施する。エンコーダは動き補正を実施して動き補正予測部を計算し、予測部を再構築した残差と結合する。
【０００９】
エンコーダは一般にエンコード時間の大半を費やして動き予測を実施し、良いマッチを発見してそれによりレート歪み性能を改善することを試みる。一般に、参照画像内の大きな検索範囲を使用するとエンコーダが良いマッチを見つける可能性が向上する。しかしながらエンコーダは現ブロックを、大きな検索範囲内で空間的に変位した全ての可能なブロックに対して比較する。大部分のシナリオでは、エンコーダは、エンコードすべき全てのブロック又はマクロブロックに対して、大きな検索範囲内の全ての可能な動きベクトルをチェックする時間又はリソースが不足している。特にコーデックにより大幅な変位に対する動きベクトルが可能であるとき、大きな検索範囲を検索して最良の動きベクトルを求める計算コストは、特にエンコードすべきコンテンツが高解像度ビデオであるとき、非常に高い恐れがある。様々な技術が、エンコーダが動き予測を高速化することを支援する。
【００１０】
ある種の技術により、ユーザ設定、プロフィール設定、又はレベル設定は動きベクトルの範囲を特定のサイズに設定する。動きベクトルの範囲は動きベクトルの許容サイズを示す。そうでなければ参照画像に渡って完全検索を実施するエンコーダに対して、動きベクトルの範囲は実際に動きベクトルの範囲外の動きベクトルを排除することで検索範囲を制限する。ユーザは動きベクトルの範囲をコマンドラインパラメータ、ユーザインタフェースコントロール等で設定しデフォルト値を上書きする。例えば、高品質のオフラインエンコーディングに対しては、大きな動きベクトルの範囲（従って大きな検索範囲）を使用する。又は低品質のリアルタイムエンコーディングに対しては、より小さな動きベクトルの範囲（従って、より小さな検索範囲）を使用する。これらの設定はエンコード時間及びリソースに関する問題に対処するが、それらは、エンコードしているビデオコンテンツの動き特性の変化に対して動きベクトルの範囲又は検索範囲を適応させないという点で、柔軟ではない。結果として、いくつかのシナリオでは、大きな動きベクトルの範囲及び検索範囲は動きが少ない一連の画像に対して不要である。又は、小さな動きベクトルの範囲及び検索範囲は一連の大きな動きの画像には不適当である。
【００１１】
階層的な動き予測では、エンコーダは１又は複数の動きベクトルを低解像度で（例えば、４：１のダウンサンプル画像を用いて）見つけ、その動きベクトル（複数）を高解像度（例えば、整数画素）に拡大し、拡大した動きベクトル（複数）の周りの近傍（複数）における１又は複数の動きベクトルを高解像度で見つける等である。これによりエンコーダは高解像度での大量の検索を飛ばすことができるが、上記の検索を正当化する動きが殆ど又は全くないとき、低解像度で無駄に長い検索となる恐れがある。上記の階層的な動き予測はさらに、エンコードしているビデオコンテンツ内の動き特性の変化に対して動きベクトルの範囲又は検索範囲を適応させることができない。
【００１２】
他のエンコーダは、画像の現ブロック又はマクロブロックに対して動き予測を実施するときに、同一画像内で直接空間的に隣接するブロックの動きベクトルを考慮することで、検索範囲を動的に調整する。上記エンコーダは現ブロック又はマクロブロックに対する動きベクトル検索プロセスに強く集中することで、動き予測を劇的に高速化する。しかしながら、ある特定のシナリオ（例えば、強く局所化した動き、不連続な動き又は他の複雑な動き）では、上記の動き予測は適切な性能を提供できない恐れがある。
【００１３】
一般に、エンコーダは動き予測中に歪み(distortion)メトリック(metric)を使用する。歪みメトリックは、動き予測の選択において候補ブロックを用いることに関連する品質コスト及びレートコストをエンコーダが評価することを支援する。
【００１４】
１つの一般的な歪みメトリックはＳＡＤ（「ｓｕｍ ｏｆ ａｂｓｏｌｕｔｅ ｄｉｆｆｅｒｅｎｃｅ」：絶対値差分和）である。参照画像内の候補ブロックに対してＳＡＤを計算するために、エンコーダは現ブロックと候補ブロックとの間の残差の絶対値の和を計算する。ここで残差は現ブロックと候補ブロックとの間のサンプル毎の差分である。低い演算複雑性がＳＡＤの利点である。しかしながらＳＡＤはいくつかの場合で全体のレート歪みコストの近似が不十分である。特に、現ブロックと候補ブロックとの間に大きいが均一なサンプルの差分があると、ＳＡＤは実際の歪みみを不十分に近似する。ＳＡＤは、残差上で実施した周波数変換のエネルギー圧縮効果を説明できない。現ブロックが候補ブロックと比較して、サンプル値に大きいが均一な差分を有すると仮定する。大概、エンコーディング中の周波数変換は、ゼロでないＤＣ係数値における均一なサンプル差分をキャプチャ及び分離する（ＤＣ係数は最小の周波数変換係数である）。エネルギー圧縮効果のため、候補ブロックを選択する全体のレート歪みコストは小さいであろう。しかしながらＳＡＤは誤って大きなコストを示す。
【００１５】
いくつかのビデオエンコーダは従ってＳＡＨＤ（“ｓｕｍ ｏｆ ａｂｓｏｌｕｔｅ Ｈａｄａｍａｒｄ−ｔｒａｎｓｆｏｒｍｄｉｆｆｅｒｅｎｃｅ）を歪みメトリックとして使用するか、又は別のＳＡＴＤ（“ｓｕｍｏｆ ａｂｓｏｌｕｔｅ ｔｒａｎｓｆｏｒｍ ｄｉｆｆｅｒｅｎｃｅ）メトリックを使用する。参照画像内の候補ブロックに対してＳＡＨＤを計算するために、エンコーダは現ブロックをアダマール変換（Hadamard transform）して候補ブロックをアダマール変換し、次いでアダマール変換ブロック間の差分の絶対値の和を計算する。又は、エンコーダは残差を計算してその残差をアダマール変換し、そのアダマール変換残差の絶対値の和を計算する。後に圧縮の際に使用する周波数変換はアダマール変換ではないことがよくある。むしろ、アダマール変換は、エンコーダが残差上で後に使用する周波数変換のエネルギー圧縮を近似するが、アダマール変換は計算がより簡単である。ＳＡＨＤを動き予測に使用すると、ＳＡＨＤは均−な全体のサンプル値シフトを説明するのでＳＡＤを用いるよりも良いレート歪み性能になることがよくあるが、ＳＡＨＤを用いると演算複雑性も増加する。単一アダマール変換は相対的に単純であるが、歪みメトリックの計算時にアダマール変換を実施すると、動き予測の計算複雑性の総計が大幅に増加する。なぜならば、エンコーダは一般に動き予測中にエンコード時間の大部分を、異なる候補ブロックの評価に費やすからである。
【００１６】
誤差二乗和（「ＳＳＥ（Ｓｕｍ ｏｆ Ｓｑｕａｒｅｄ Ｅｒｒｏｒｓ）」）、平均二乗誤差（「ＭＳＥ（ｍｅａｎｓｑｕａｒｅｄ ｅｒｒｏｒｓ）」）、及び平均分散は他の歪みメトリックである。ＳＳＥでは、エンコーダは残差値を二乗し、次いでその二乗値を合計する。ＭＳＥでは、エンコーダは二乗値の平均を計算する。平均分散の１つの定義は、
【００１７】
【数１】
2014147072.tif 000003
【００１８】
である。ここで、
【００１９】
【数２】
2014147072.tif 000004
【００２０】
は残差
【００２１】
【数３】
2014147072.tif 000005
【００２２】
におけるＩ番目の残差値の平均である。平均分散はある程度、現ブロックと候補ブロックとの間の全体の差分を説明する。ＳＳＥ、ＭＳＥ及び平均分散はいくつかの場合では許容範囲のレート歪み性能を生成するが、歪みの演算複雑性を増加させる。
【００２３】
いくつかのエンコーダは動き予測中にレート歪みコストを歪みメトリックとして計算する。レート歪みコストは歪み項及びレート項を有し、因子（しばしばラグランジュ乗数と呼ばれる）がレート項を歪み項に対して拡大させる。レート項は、動きベクトル情報及び／又は残差情報に対する予測ビットレートコスト又は実ビットレートコストであることができる。歪み項は元のサンプルの、再構築したサンプル（周波数変換、量子化、逆量子化、及び逆周波数変換を経て再構築したサンプル）に対する比較（例えば、ＳＡＤ）に基づくことができる。又は、歪み項は何らかの他の歪みメトリック又は予測値であることができる。レート歪みコストは通常、異なる動き予測の選択に対するレート歪み性能を最も正確に評価するが、特に異なる量子化パラメータをそれぞれの異なる動き予測の選択に対して評価する場合には、演算複雑性も最大である。
【００２４】
大抵の場合、エンコーダは動き予測に渡って同一の歪みメトリックを使用する（例えば、ＳＡＤのみ、ＳＡＨＤのみ）。これは柔軟ではなく、使用したメトリックに依存して、計算上非効率的であるか又は不十分なレート歪み性能になる恐れがある。
【００２５】
別のアプローチは、ＳＡＤを使用して動き予測における上位ｘ個の候補動きベクトルを見つけ、次いでレート歪みコストを使用してその上位ｘ個の候補動きベクトルを評価することである。例えば、上位３個の候補をレート歪みコストで評価する。これにより動き予測の最初からレート歪みコストを用いる計算コストが回避されるが、いくつかの場合ではエンコーダはＳＡＤの欠点のため良い候補を逃し、代わりに内部の候補を決める。エンコーダが始めにＳＡＨＤを使用し、続いて上位ｘ個の候補に対するレート歪みコストを使用する場合、エンコーダは良い候補を見つける可能性がより高いが、演算複雑性は劇的に増加する。
【００２６】
さらに別のアプローチでは、エンコーダは階層的動き予測の整数画素段階でＳＡＤを使用し、ＳＡＨＤを階層的動き予測の１／２画素及びｌ／４画素段階で使用する。再度、これにより動き予測の始めからＳＡＨＤを用いる計算コストが回避されるが、多くの場合、エンコーダはＳＡＤの欠点のため良い候補を逃す。
【００２７】
これらの技術は別として、多数のエンコーダは、許容範囲の時間量で良いマッチを見つけると思われる特殊動きベクトル検索パターン又は他の戦略を使用する。動き予測を高速化又は改善する様々な他の技術が開発されている。デジタルビデオへビデオを圧縮する決定的な重要性を鑑みると、動き予測が十分に発展した領域であることは当然である。しかしながら、以前の動き予測技術にどのような利益があろうとも、以下のような技術及びツールの利点を持ち合わせてはいない。
【先行技術文献】
【特許文献】
【００２８】
【特許文献１】米国特許第２００５／００１３３７２号明細書
【特許文献２】米国特許第２００５／００５８２０５号明細書
【発明の概要】
【００２９】
本出願は、動き予測中に検索範囲及び／又は動きベクトルの範囲を選択する技術及びツールに関する。例えば、ビデオエンコーダは、前の画像の動きベクトルに対する動きベクトル分布情報を用いて現在の画像に対する動きベクトルの範囲を選択する。多くの場合、動きベクトルの範囲は実際に現在の画像に対する動き予測の検索範囲を制限する。このように、ビデオエンコーダは様々な動きレベルを有するビデオシーケンスに対して動き予測の性能を改善する。
【００３０】
説明する技術及びツールの第１の態様によるとビデオエンコーダは第１の検索範囲により制限される動き予測を実施し、その結果複数の動きベクトルが得られる。エンコーダは動きベクトルに対する動きベクトル分布情報を計算する。例えば、エンコーダは動きベクトルをヒストグラムで追跡(track：トラック)し、何個が分布情報に対する複数区間の各々内かを数える。エンコーダは次いで第２の検索範囲を選択して、その第２の検索範囲により制限される動き予測を実施する。
【００３１】
説明する技術及びツールの第２の態様によると、ビデオエンコーダは第１の動きベクトルの範囲及び第１の検索範囲により制限される動き予測を実施する。エンコーダは第１の動きベクトルの範囲と動き予測の結果とをビデオビットストリームで信号送信する。第２の動きベクトルの範囲を選択した後、エンコーダは第２の動きベクトルの範囲と第２の検索範囲とにより制限される動き予測を実施する。エンコーダは第２の動きベクトルの範囲と第２の動き予測の結果とをビデオビットストリームで信号送信する。
【００３２】
説明する技術及びツールの第３の態様によると、エンコーダは動き予測を実施するための動き予測部、周波数変換部、量子化部、エントロピーエンコーダ、及び動き予測を制限する検索範囲を選択するための動き予測コントローラを含む。現在の画像に対し上記の選択は少なくとも部分的に複数の前の動きベクトルに対する動きベクトル分布情報に基づく。
【００３３】
本要約は選択した概念を簡潔な形態で導入する。本概念を以下の「発明を実施するための最良の形態」でさらに詳細に説明する。本要約は特許請求された主題の主要な特徴又は本質的な特徴を特定するようには意図しておらず、特許請求された主題の範囲を制限するために使用するようにも意図していない。
【００３４】
前述及び他の目的、特徴及び利点は、添付の図面を参照して進める以下の詳細な説明からより明らかになるであろう。
【図面の簡単な説明】
【００３５】
【図１】先行技術による動き予測を示す図である。
【図２】いくつかの説明された実施形態の実装に適した適切なコンピューティング環境のブロック図である。
【図３】いくつかの説明された実施形態の実装と関連するビデオエンコーダシステムのブロック図である。
【図４】動き予測での動きベクトルの範囲と検索範囲との間の関係を示す図である。
【図５】動きベクトル分布情報に基づいて動きベクトルの範囲及び／又は検索範囲を動的に切り替える汎用的な技術のフローチャートである。
【図６】ヒストグラムの１又は複数の特徴を用いて動きベクトルの範囲及び／又は検索範囲を選択する技術のフローチャートである。
【図７】ヒストグラム計算ルーチンの例に対する擬似コードリストの図である。
【図８】図７、９及び１１の例で使用する値の表である。
【図９】ヒストグラム特徴抽出ルーチンの例に対する擬似コードリストの図である。
【図１０】図９のヒストグラム特徴抽出ルーチンの例に対する所定の動き区間を示すチャートである。
【図１１】範囲選択ルーチンの例に対する擬似コードリストの図である。
【図１２】歪みメトリックを複数の利用可能な歪みメトリックから選択する汎用的な技術のフローチャートである。
【図１３】歪みメトリック選択基準及び選択閾値に依存して歪みメトリックを選択する技術のフローチャートである。
【発明を実施するための形態】
【００３６】
本出願は動き予測を実施するための技術及びツールに関する。説明する様々な実施形態では、ビデオエンコーダは動き予測を実施する。
【００３７】
本明細書で説明する実装に対する様々な代替手段が可能である。例えば、フローチャート図を参照して説明するある特定の技術を、フローチャートに示す段階の順序を変更すること、ある特定の段階を反復又は省略すること等により変更することができる。
【００３８】
本明細書で説明する様々な技術及びツールは組み合わせて、又は独立して使用することができる。異なる実施形態は、１又は複数の説明する技術及びツールを実装する。本明細書で説明する様々な技術及びツールを、ビデオエンコーダ以外のツール、例えばイメージ合成又は補間(interpolation)ツールにおける動き予測に使用することができる。
【００３９】
本明細書で説明する技術及びツールのいくつかは「背景技術」で述べた１又は複数の問題を解決する。一般に、所与の技術／ツールは上記問題の全てを解決しない。むしろ、エンコード時間、リソース、及び／又は品質における制約及び代償を考慮すると、所与の技術／ツールは特定の動き予測の実装又はシナリオに対する性能を改善する。
【００４０】
Ｉ．コンピューティング環境
図２は、説明するいくつかの実施形態の実装に適したコンピューティング環境（２００）の汎用的な例を示す。コンピューティング環境（２００）は使用又は機能性の範囲に関する限定を示唆するようには意図していない。なぜならば、上記の技術及びツールを多様な汎用目的又は特殊目的コンピューティング環境で実装できるからである。
【００４１】
図２を参照して、コンピューティング環境（２００）は少なくとも１つの処理ユニット（２１０）とメモリ（２２０）を含む。図２では、この最も基本的な構成（２３０）を点線内に含まれる。演算装置（２１０）はコンピュータ実行可能命令を実行し、実プロセッサ又は仮想プロセッサであることができる。マルチプロセッシングシステムでは、複数の演算装置がコンピュータ実行可能命令を実行して処理能力を向上させる。メモリ（２２０）は揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ等）、又はその２つの何らかの組合せであることができる。メモリ（２２０）は、説明する動き予測に関する技術及びツールのうち１又は複数でエンコーダを実装するソフトウェア（２８０）を格納する。
【００４２】
コンピューティング環境は追加の特徴を有してもよい。例えば、コンピューティング環境（２２０）はストレージ（２４０）、１又は複数の入力デバイス（２５０）、１又は複数の出力デバイス（２６０）、及び１又は複数の通信接続（２７０）を含む。バス、コントローラ、又はネットワークのような相互接続メカニズム（図示せず）はコンピューティング環境（２００）のコンポーネントを相互接続する。一般に、オペレーティングシステムソフトウェア（図示せず）はコンピューティング環境（２００）において実行されている他のソフトウェアに対して動作環境を提供し、コンピューティング環境（２００）のコンポーネントの活動を調整する。
【００４３】
ストレージ（２４０）は取り外し可能又は取り外し不能であることができ、磁気ディスク、磁気テープ又はカセット、ＣＤ−ＲＯＭ、ＤＶＤ、又は情報の格納に使用でき且つコンピューティング環境（２００）内でアクセス可能な任意の他の媒体を含む。ストレージ（２４０）はビデオエンコーダを実装するソフトウェア（２８０）に対する命令を格納する。
【００４４】
入力デバイス（複数）（２５０）はキーボード、マウス、ペン、又はトラックボール、音声入力デバイス、スキャン装置、又は入力をコンピューティング環境（２００）に提供する別の装置のようなタッチ入力デバイスであることができる。オーディオ又はビデオエンコーダに対して、入力デバイス（複数）（２５０）はサウンドカード、ビデオカード、ＴＶチューナカード、あるいはオーディオ又はビデオ入力をアナログ又はデジタル形式で受け取る同様な装置、あるいはオーディオ又はビデオサンプルをコンピューティング環境（２００）に読み込むＣＤ−ＲＯＭ又はＣＤ−ＲＷであることができる。出力デバイス（複数）（２６０）はディスプレイ、プリンタ、スピーカ、ＣＤライタ(CD-WRITER)、又は出力をコンピューティング環境（２００）から提供する別の装置であることができる。
【００４５】
通信接続（複数）（２７０）により、通信媒体上で別のコンピューティングエンティティと通信することができる。通信媒体はコンピュータ実行可能命令、オーディオ又はビデオ入力又は出力、あるいは他のデータのような情報を変調されたデータ信号で伝達する。変調されたデータ信号は、１又は複数の特性集合を有するか又は信号内の情報をエンコードするように変化した信号である。限定ではなく例として、通信媒体には電気、光学、ＲＦ、赤外線、音響、又は他のキャリアで実装した有線又は無線技術が含まれる。
【００４６】
上記の技術及びツールをコンピュータ読取可能媒体の一般的なコンテクストで説明することができる。コンピュータ読取可能媒体はコンピューティング環境内でアクセスできる任意の利用可能な媒体である。限定ではなく例として、コンピューティング環境（２００）、コンピュータ読取可能媒体にはメモリ（２２０）、ストレージ（２４０）、通信媒体、及び上記の任意の組合せが含まれる。
【００４７】
上記の技術及びツールを、プログラムモジュールに含まれるもののような、対象の実プロセッサ又は仮想プロセッサ上のコンピューティング環境で実行されているコンピュータ実行可能命令の一般的な背景で説明することができる。一般に、プログラムモジュールには、特定のタスクを実施するか又は特定の抽象データ型を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等が含まれる。プログラムモジュールの機能性を、様々な実施形態で望ましいようにプログラムモジュール間で組合せ又は分割することができる。プログラムモジュールに対するコンピュータ実行可能命令をローカル又は分散コンピューティング環境内で実行することができる。
【００４８】
表示の便宜上、「発明を実施するための最良の形態」では「決定する」及び「分析する」のような用語を使用してコンピューティング環境内のコンピュータ動作を説明する。これらの用語はコンピュータにより実施する動作に対する高レベルの抽象化であり、人間が実施する動作と混同すべきではない。これらの用語に対応する実際のコンピュータ動作は実装に依存して変化する。
【００４９】
ＩＩ．汎用的なビデオエンコーダ
図３は、説明するいくつかの実施形態の実装に適したものと関連する汎用的なビデオエンコーダ（３００）のブロック図である。エンコーダ（３００）は現在の画像（３０５）を含むビデオ画像シーケンスを受信して、圧縮されたビデオ情報（３９５）を出力としてストレージ、バッファ、通信接続に出力する。出力ビットストリームの形式はＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ Ｖｉｄｅｏ又はＶＣ−１形式、ＭＰＥＧ−ｘ形式（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、又はＭＰＥＧ−４）、Ｈ．２６ｘ形式（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ２６３、又はＨ．２６４）、又は他の形式であることができる。
【００５０】
エンコーダ（３００）はビデオ画像を処理する。画像という用語は一般に元の、符号化又は再構築したイメージデータに関する。プログレッシブビデオ(progressive video)については、画像はプログレッシブビデオフレームである。インタレースビデオ(interlaced video)については、画像はコンテクストに依存してインタレースビデオフレーム、そのフレームのトップフィールド、又はそのフレームのボトムフィールドに関することができる。エンコーダ（３００）はブロックベースであり、フレームに対して４：２：０のマクロブロックを使用し、それぞれのマクロブロックは４個の８×８の輝度ブロック（１個の１６×１６マクロブロックとして処理する場合もある）と２個の８×８のクロミナンスブロックを含む。領域に対して、同一又は異なるマクロブロック構成及び形式を使用することができる。８×８のブロックをさらに異なる段階、例えば周波数変換及びエントロピーエンコード(entropy encode)段階でさらに分割することができる。エンコーダ（３００）は８×８のブロック及び１６×１６のマクロブロックと異なるサイズ又は構成のサンプル集合上で動作を実施することができる。あるいは、エンコーダ（３００）はオブジェクトベースであるか、又は異なるマクロブロック又はブロック形式を使用する。
【００５１】
図３に戻り、エンコーダシステム（３００）は予測された画像及びフレーム内符号化キー画像を圧縮する。表示の便宜上、図３はエンコーダシステム（３００）を通るキー画像向けのパスと予測された画像向けのパスとを示す。エンコーダシステム（３００）のコンポーネントの多くをキー画像及び予測された画像の両方を圧縮するために使用する。これらのコンポーネントにより実施する厳密な動作は、圧縮する情報の種類に依存して変化することができる。
【００５２】
予測された画像（例えば、プログレッシブＰフレーム又はＢフレーム、インタレースＰ領域又はＢ領域、あるいはインタレースＰフレーム又はＢフレーム）を（一般に参照画像又はアンカーと呼ばれる）１又は複数の他の画像からの予測の観点から表す。予測残差は予測情報と対応するオリジナル情報との間の差分である。対照的に、キー画像（例えば、プログレッシブＩフレーム、インタレースＩ領域、又はインタレースＩフレーム）は他の画像を参照せずに圧縮される。
【００５３】
現在の画像（３０５）が予測された画像である場合、動き予測部（３１０）はマクロブロック又は他の現在の画像（３０５）のサンプル集合の動きを１又は複数の参照画像に関して予測する。画像格納（３２０）は、再構築した前画像（３２５）を、参照画像として使用するためにバッファする。複数の参照画像を使用するとき、複数の参照画像は異なる時間方向又は同一の時間方向からのものであることができる。エンコーダシステム（３００）は別々のストレージ（３２０）及び（３２２）を複数の参照画像に対して使用することができる。
【００５４】
動き予測部（３１０）は動きをフルサンプル、１／２サンプル、１／４サンプル、又は他の増分で予測することができ、動き予測の精度を画像毎ベース又は他のベースで切り替える(switch)ことができる。動き予測部（３１０）（及び補正部（３３０））も、画像毎又は他のベースで、参照画像サンプル補間の種類を（例えば、双三次と双一次の間で）切り替えることができる。動き予測の精度は水平及び垂直に、同一又は異なることができる。動き予測部（３１０）はサイド情報として動き情報（３１５）を出力する。エンコーダ（３００）は動き情報（３１５）を、例えば、動きベクトルに対する１又は複数の動きベクトル予測部を計算すること、動きベクトルと動きベクトル予測部との間の差分を計算すること、及びその差分をエントロピー符号化することにより、エンコードする。動きベクトルを再構築するため、動き補正部（３３０）は動きベクトル予測を差分動きベクトル情報と結合する。
【００５５】
動き補正部（３３０）は、動き補正した現在の画像（３３５）を形成するとき、再構築した動きベクトルを、再構築した（参照）画像（複数）（３２５）に適用する。動き補正した現在の画像（３３５）と元の現在の画像（３０５）の対応するブロックとの間の差分（もしあれば）は、そのブロックに対する予測残差（３４５）である。後に現在の画像を再構築する間に、再構築した予測残差を動き補正した現在の画像（３３５）に追加して、元の現在の画像（３０５）により近い再構築画像を得る。しかしながら、不可逆圧縮では一部の情報がなお元の現在の画像（３０５）から失われている。代替として、動き予測部及び動き補正部は別の種類の動き予測／補正を適用する。
【００５６】
周波数変換部（３６０）は空間領域ビデオ情報を周波数領域（即ち、スペクトル、変換）データに変換する。ブロックベースのビデオ画像に対して、周波数変換部（３６０）はＤＣＴ（「ｄｉｓｃｒｅｔｅｃｏｓｉｎｅ ｔｒａｎｓｆｏｒｍ」）、ＤＣＴの変形、又は他の前方ブロック変換を、サンプルブロック又は予測残差データに適用して、周波数変換係数のブロックを生成する。あるいは、周波数変換部（３６０）はフーリエ変換のような別の従来の周波数変換を適用するか、あるいはウェーブレット又はサブバンド分析を使用する。周波数変換部（３６０）は８×８、８×４、４×８、４×４又は他のサイズの周波数変換を適用する。
【００５７】
次いで量子化部（３７０）が変換係数のブロックを量子化する。量子化部（３７０）は均一でスカラの量子化を、画像毎ベース又は他のベースで変化するステップサイズでスペクトルデータに適用する。量子化部（３７０）はさらに、例えば不均一でベクトル形式の、又は非適応型の量子化のような別の種類の量子化をスペクトルデータ係数に適用することができる。適応量子化に加えて、エンコーダ（３００）はフレームドロップ(frame dropping)、適応フィルタリング(adaptive filtering)、又は他の技術をレート(rate：率)の制御に使用することができる。
【００５８】
再構築した現在の画像が後の動き予測／圧縮に必要であるとき、逆量子化部（３７６）は逆量子化を量子化スペクトルデータ係数に実施する。逆周波数変換部（３６６）は逆周波数変換を実施して、（予測された画像に対して）再構築した予測残差又は（キー画像に対して）サンプルを生成する。現在の画像（３０５）がキー画像であった場合、再構築したキー画像を再構築した現在の画像（図示せず）として取る。現在の画像（３０５）が予測された画像であった場合、再構築した予測残差を動き補正予測部（３３５）に追加して再構築した現在の画像を形成する。画像格納（３２０、３２２）のうち一方又は両方は再構築した現在の画像を、後の動き補正予測で使用するためにバッファする。いくつかの実施形態では、エンコーダはデブロッキングフィルタ(de-blocking filter)を再構築画像に適用して画像内の不連続性及び他のアーチファクトを適応的に平滑化(smooth)する。
【００５９】
エントロピー符号化部（３８０）は量子化部（３７０）の出力とある特定のサイド情報（例えば、動き情報（３１５）、量子化ステップサイズ）を圧縮する。一般的なエントロピー符号化技術には算術符号化、差分符号化(differential coding)、ハフマン符号化(Huffman coding)、ランレングス符号化(run length coding)、ＬＺ符号化、辞書符号化(dictionary coding)、及び上記の組合せが含まれる。エントロピー符号化部（３８０）は一般に異なる種類の情報に対して異なる符号化技術を使用し、特定の符号化技術内における複数の符号表から選択することができる。
【００６０】
エントロピー符号化（３８０）は圧縮されたビデオ情報（３９５）をＭＵＸ（「ｍｕｌｔｉｐｌｅｘｅｒ」:マルチプレクサ）（３９０）に提供する。ＭＵＸ（３９０）はバッファを含むことができ、バッファレベルインジケータをコントローラにフィードバックすることができる。ＭＵＸ（３９０）の前後に、ネットワーク上で通信するために圧縮されたビデオ情報（３９５）をチャネル符号化することができる。チャネル符号化は誤り検出及び補正データを圧縮されたビデオ情報（３９５）に適用することができる。
【００６１】
コントローラ（図示せず）は情報を、動き予測部（３１０）、周波数変換部（３６０）、量子化部（３７０）、逆量子化部（３７６）、エントロピー符号化部（３８０）、及びバッファ（３９０）のような様々なモジュールから受信する。コントローラはエンコード中に例えば、歪みを予測すること、レート歪み分析を実施することのような、中間結果の評価を行う。コントローラは動き予測部（３１０）、周波数変換部（３６０）、量子化部（３７０）、及びエントロピー符号化部（３８０）のようなモジュールと動作して、エンコード中の符号化パラメータを設定及び変更する。エンコーダがエンコード中に異なる符号化パラメータの選択を評価するとき、エンコーダは反復的にある特定の段階（例えば、量子化及び逆量子化）を実施して異なるパラメータ設定を評価することができる。エンコーダは次の段階に進む前のある段階でパラメータを設定することができる。又は、エンコーダは異なる符号化パラメータを纏めて評価すること、例えば、ブロック内／外の決定を纏めて行うこと、及び動きベクトル値がある場合はその動きベクトル値をブロックに対して選択することができる。評価すべき符号化パラメータ決定のツリー、及び対応するエンコードのタイミングは実装に依存する。
【００６２】
エンコーダ（３００）内のモジュール間に示す関係は、エンコーダ内の情報の一般的なフローを示し、他の関係は簡潔にするため図示していない。特に、図３は通常、ビデオシーケンス、画像、マクロブロック、ブロック等に使用されるエンコーダ設定、モード、テーブル等を示すサイド情報は示さない。上記のサイド情報は、一旦完成すると、一般にそのサイド情報のエントロピーエンコード後に出力ビットストリームに送信する。
【００６３】
ビデオエンコーダの特定の実施形態は一般に汎用的なエンコーダ（３００）の変形又は補完版を使用する。実装と望ましい圧縮の種類とに依存して、エンコーダのモジュールを追加、省略、複数モジュールへの分割、他モジュールと組合せ、及び／又は類似モジュールで置換することができる。例えば、コントローラを、異なるエンコーダモジュールと関連付けた複数のコントローラモジュールに分割することができる。代替の実施形態では、異なるモジュールを有するエンコーダ及び／又は他のモジュール構成は、説明した技術の１又は複数を実施する。
【００６４】
ＩＩＩ．拡張動きベクトルで符号化するための動的動き検索範囲
予測された画像をエンコードするとき、ある特定のビデオエンコーダにより「大きな」動きベクトルが可能となる。「大きな」動きベクトルは、水平方向及び／又は垂直方向の大量変位を指定する動きベクトルを意味する。大きな動きベクトルは、極端で、複雑又は不連続である動きをエンコーダがキャプチャすることを支援する。しかしながら、特に高解像度ビデオコンテンツをエンコードするとき、動きベクトルに対する広範囲の可能性を検索する計算コストは非常に高い可能性がある。
【００６５】
本節では、ビデオコンテンツのエンコード中に異なる動きベクトルの範囲及び／又は検索範囲の間でエンコーダが動的に選択及び切り替えることができる技術を説明する。例えば、エンコーダは、大きな動きがあり得るが他の時点ではあり得ないときに、選択的に大きな動きベクトルの範囲を使用する。これにより、動き予測に関連付けた計算コストを大幅に削減することができ、大きな動きベクトルの範囲が定常的に全ての予測された画像に適用される動き予測と比較可能な結果を生成する。
【００６６】
エンコーダは複数の所定の動きベクトルの範囲を切り替える。例えば、エンコーダは以下の範囲で切り替える。
【００６７】
【表１】
2014147072.tif 000006
【００６８】
あるいは、エンコーダは他の動きベクトルの範囲及び／又は追加の動きベクトルの範囲を切り替える。又は、エンコーダは動きベクトルの範囲を動的に計算及び調整して動き予測において使用する。
【００６９】
動きベクトルの範囲はいくつかの方法で動き予測において使用する検索範囲に影響を及ぼすことができる。エンコーダがデフォルトで動き予測における参照画像の完全検索を使用する場合、動きベクトルの範囲はどの動きベクトル値が可能か（及び、従ってどの動きベクトルが動き予測において評価される可能性があるか）を制限することができる。図４は動き予測における現在の画像（４００）及び参照画像（４１０）を示す。現在の画像（４００）の現ブロック（４０５）に対し、エンコーダがデフォルトで参照画像（４１０）の完全検索又は無制限検索を実施する場合、動きベクトルの範囲（４２０）は効率的に動きベクトルの範囲（４２０）内の動きベクトル値に対する検索範囲を制限する。その動きベクトル値は、現ブロック（４０５）と同じ場所に配置した参照画像ブロック（４１５）の周りに中央寄せされる。エッジ拡張を使用しない場合、画像境界も、検索範囲が過去の参照画像境界を拡張しないとき検索範囲を制限することができる。
【００７０】
エンコーダが参照画像（４１０）の部分検索を実施するときでも、動きベクトルの範囲（４２０）はさらに検索範囲を、動きベクトルの範囲（４２０）内で動きベクトルを生み出す部分検索範囲の領域にさらに制限することができる。エンコーダがデフォルトの部分検索範囲（４３０）内で検索すると仮定する。デフォルトの部分検索範囲（４３０）は、参照画像（４１０）内の予測された動きベクトル位置（４３５）周りに中央寄せされる。デフォルトの部分検索範囲（４３０）の領域が動きベクトルの範囲（４２０）の外部にある場合、これらの領域は実際に、動き予測において用いる検索範囲から除外される。しかしながら、デフォルトの検索範囲（４３０）が動きベクトルの範囲（４２０）内の唯一の動きベクトルを生み出す場合、動きベクトルの範囲（４２０）は実際には動き予測において用いる検索範囲をさらに制限することはしない。
【００７１】
（ＶＣ−１エンコーダの実装のような）いくつかの実装ではエンコーダは動きベクトルに対する動きベクトルの範囲情報を送信する。例えば、エンコーダは画像層で動きベクトルの範囲情報を、「特許文献１」又は「特許文献２」に説明されるようなビットストリームシンタックスで、又は何らかの他のメカニズムを用いて信号送信（signaling:シグナリング）する。動きベクトルの範囲情報の送信により、エスケープ符号化した動きベクトル情報の信号送信に用いるビットの数を調整することで、いくつかのシナリオにおけるエントロピーエンコードの効率が向上する。信号送信した動きベクトルの範囲は用いた検索範囲と同一であることができる。又は、信号送信した動きベクトルの範囲は、用いた検索範囲よりも広いことができる。他の実装では、動きベクトルの範囲は、エントロピーエンコードの目的で（検索範囲が変化する場合でも）事前定義されているか又は効率的に無制限であり、エンコーダは動きベクトルの範囲情報を信号送信しない。
【００７２】
いくつかの実装では、Ｗｉｎｄｏｗｓ（登録商標） Ｍｅｄｉａ Ｖｉｄｅｏのメイン又は高度なプロフィールあるいはＶＣ−１プロフィールに対してビデオをエンコードするエンコーダは、エンコード中に適切な動きベクトルの範囲及び／又は検索範囲を動的に検索する。あるいは、別の形式又はプロフィールに対してビデオをエンコードするエンコーダは、エンコード中に動きベクトルの範囲及び／又は検索範囲の動的な選択を実施する。
【００７３】
いくつかの実装では、エンコーダはヒストグラムにおける動きベクトル分布情報又は他の表現を、適切な動きベクトルの範囲及び／又は検索範囲を決定するときに使用する。分布情報は複数の区間を含み、その区間のいくつかは重複する。エンコーダは区間内の動きベクトルの数を、範囲決定時の基準と見なす。これにより、適切な範囲を決定するための計算的にシンプルだが正確な方法を提供する。
【００７４】
Ａ．動き範囲及び／又は検索範囲の動的な切り替え
図５は、動きベクトルの範囲及び／又は検索範囲を動的に切り替える汎用的な技術（５００）を示す。図３に示すもののようなエンコーダが本技術（５００）を実施する。あるいは、別のエンコーダ又は動き予測ツールが本技術（５００）を実施する。
【００７５】
エンコーダは先ず、動きベクトルの範囲及び／又は検索範囲により制限される動き予測を実施する（５１０）。動きベクトルの範囲は完全検索又は部分検索を制限することができ、又は検索範囲は完全に動きベクトルの範囲内にあることができる。例えば、エンコーダは現在の動きベクトルの範囲及び検索範囲を用いて第１のＰ画像に対して動き予測を実施する。又は、エンコーダは現在の動きベクトルの範囲及び検索範囲を用いて予測された画像の第１の部分に対して動き予測を実施する。最初に、現在の動きベクトルの範囲は、特定のユーザ設定、プロフィール設定、レベル設定、又は他のエンコーダ設定に従って定義した値を有することができ、あるいは最大動きベクトルの範囲のようなデフォルト設定で開始することができる。検索パターン（複数）、歪みメトリック（複数）、終了条件（複数）、サブピクセル補間（１画素以下）及び他の動き予測の詳細は実装に依存して変化する。
【００７６】
第１の動き予測を実施（５１０）した後、エンコーダは第１の動き予測の結果を信号送信する。例えば、エンコーダは第１の動き予測から生ずる動きベクトルに対する動きベクトル情報を信号送信する。いくつかの実装では、エンコーダは動きベクトルに対する動きベクトル情報を信号送信する前に、動きベクトルの範囲情報を信号送信する。
【００７７】
エンコーダは次いで、動きベクトルの範囲及び／又は検索範囲に対して更新チェックを実施すべきかどうかを決定する。例えば、エンコーダはそれぞれの新規Ｐ画像に対して動きベクトルの範囲を更新する可能性があるが、Ｐ画像の間に介在するＢ画像に対しては更新しない。このように、動きベクトルの範囲はＰ画像からＰ画像への動き特性における変化に適応する。一連のフレーム内（Ｉ）、単一予測（Ｐ）、及び双方向予測（Ｂ）画像が以下の再生順序及び符号化順序を有するとする。
再生：Ｉ1 Ｂ1 Ｂ2 Ｐ1 Ｂ3 Ｂ4 Ｐ2 Ｂ5 Ｂ6 Ｐ3．．．
符号化：Ｉ1 Ｐ1 Ｂ1 Ｂ2 Ｐ2 Ｂ3 Ｂ4 Ｐ3 Ｂ5 Ｂ6．．．
【００７８】
Ｐ2に対する動きベクトルの範囲はＰ1からの動きベクトルの分布に依存し、Ｐ2に対する動きベクトルの範囲はＢ3及びＢ4に対しても使用する。Ｐ3に対する動きベクトルの範囲はＰ2からの動きベクトルの分布に依存し、Ｐ3に対する動きベクトルの範囲はＢ5及びＢ6に対しても使用する等である。あるいは、エンコーダは（Ｐ画像であろうとＢ画像であろうと）それぞれの新規予測された画像に対して更新チェックを実施し、必要に応じて予測方向における変化を考慮し、時間的変位を拡大する。Ｂ画像に対して、エンコーダは最近傍のＰ画像からの、又はＢ画像の前後にあるＰ画像からの動きベクトル分布情報を考慮して、Ｂ画像のＰ画像（複数）からの相対的時間変位に依存して動きベクトル情報を拡大することができる。又は、エンコーダは単一の予測された画像内の異なる部分に対して更新チェックを実施する。
【００７９】
エンコーダが更新チェックを実施するとき、エンコーダは現在の動きベクトルの範囲及び／又は検索範囲を、前の動きベクトルに対する動きベクトル分布情報を用いて更新する（５３０）。例えば、エンコーダが新規Ｐ画像に対して更新した動きベクトルの範囲を選択するとき、分布情報は先行Ｐ画像からの複数の動きベクトルを特徴付ける。又は、エンコーダが更新した動きベクトルの範囲を予測された画像の新規部分に対して選択するとき、分布情報は同一画像内に以前からあった複数の動きベクトルを特徴付ける。又は、エンコーダは、動きベクトルの範囲自体に無関係に、動きベクトル分布情報を用いて新規検索範囲を選択する。更新した検索範囲は、前の動き予測において使用した検索範囲と同一又は異なることができ、更新した動きベクトルの範囲は前の動き予測において使用した動きベクトルの範囲と同一又は異なることができる。図６は、前の動きベクトルに対する動きベクトル情報のヒストグラムを用いて、更新した動きベクトルの範囲及び／又は検索範囲を選択する技術の例（６００）を示す。あるいは、エンコーダは別のメカニズムを使用して、更新した動きベクトルの範囲及び／又は検索範囲を選択する。そのメカニズムには例えば、前の動きベクトルに対する別形態の動きベクトル分布情報を使用するものがある。更新した動きベクトルの範囲及び／又は検索範囲を次いで現在の動きベクトルの範囲及び／又は検索範囲として使用する。
【００８０】
エンコーダは、現在の（部分的に更新した）動きベクトルの範囲及び／又は検索範囲により制限された追加の動き予測を実施する（５４０）。例えば、エンコーダは新規の動きベクトルの範囲と対応する検索範囲とを用いて第２のＰ画像に対して動き予測を実施する。又は、エンコーダは更新した検索範囲を用いて予測された画像の第２の部分に対して動き予測を実施する。再度、追加の動き予測の検索パターン（複数）、歪みメトリック（複数）、終了条件（複数）、サブピクセル補間及び他の詳細は実装に依存して変化する。
【００８１】
追加の動き予測を実施（５４０）した後、エンコーダはその追加の動き予測の結果を信号送信する。例えば、エンコーダはその追加の動き予測から生ずる動きベクトルに対する動きベクトル情報を信号送信する。いくつかの実装では、エンコーダは動きベクトルに対する動きベクトル情報の信号送信前に動きベクトルの範囲情報を信号送信する。
【００８２】
エンコーダは、自身が終了したかどうかを決定する（５５０）。そうでなければ、エンコーダは動きベクトルの範囲及び／又は検索範囲に対して更新チェックを実施すべきかどうかを決定する（５２０）。例えばエンコーダは、次の予測された画像、又は同一予測された画像の次の部分で継続する。
【００８３】
Ｂ．動き予測分布情報を用いた範囲選択
図６は、動きベクトル分布情報を用いて動きベクトルの範囲及び／又は検索範囲を選択する技術（６００）を示す。図３に示すもののようなエンコーダは図５の動的切り替え技術（５００）の更新段階（５３０）の一部として本技術（６００）を実施する。あるいは、エンコーダは何らかの他の時点で選択技術（６００）を実施するか、あるいは別のエンコーダ又は動き予測ツールが本技術（６００）を実施する。図７、９、及び１１は実装例において本技術（６００）で使用する擬似コードを示し、図８は実装例において使用する値の表を示す。
【００８４】
始めに、エンコーダは前の動きベクトルに対するヒストグラムを計算する（６１０）。例えば、エンコーダは先行Ｐ画像の動きベクトルの一部又は全部に対してヒストグラムを計算する。
【００８５】
図７は、以前に計算した動きベクトルの水平及び垂直ベクトルコンポーネントからヒストグラムを計算するルーチンの例を示す擬似コードリスト（７００）である。ルーチンＣａｌｃｕｌａｔｅＭＶＨｉｓｔｏｇｒａｍ（ルーチン計算ＭＶヒストグラム）は２個の配列を入力として受け取る。配列ＭＶ＿ｘ及びＭＶ＿ｙはそれぞれ、以前に計算した動きベクトルについて、符号付きの水平及び垂直の動きベクトルコンポーネント値を格納する。配列ＭＶ＿ｘ及びＭＶ＿ｙはブロック毎ベースで値を格納し、エンコーダは配列内の値を前処理することができる。例えば、配列が８×８のブロックに対するコンポーネント値を格納するが特定の１６×１６のマクロブロックが単一の動きベクトルを有する場合、その単一の動きベクトルに対するコンポーネント値を、そのマクロブロックの４個の連続した８×８のブロックに対して繰り返す。一般に、異なるブロックサイズ（例えば、１６×１６、８×８、１６×８、８×１６、８×４、４×８、又は４×４）及び異なる種類の予測された画像（例えば、プログレッシブフレーム、インタレースフィールド、又はインタレースフレーム）に対して前に計算した動きベクトルを、ヒストグラム計算のために均一な表現（例えば、８×８の非インタレースブロック）に変換する。異なるブロックサイズに対して、これは均一な表現サイズよりも大きいブロックからの動きベクトルコンポーネントの繰り返しを含むことができ、又は均一な表現サイズよりも小さな隣接ブロックからの動きベクトルコンポーネント値の組合せを含むことができる。インタレースされた（interlaced：組み合わされた）コンテンツに対し、これはインタレースタイミングに対する調整を含むことができる。図７はＭＶ＿ｘ及びＭＶ＿ｙを１次元配列として示すが、それらを２次元配列で構成してブロック構成を反映することができる。ＭＶ＿ｘ及びＭＶ＿ｙのサイズは、表現する動きベクトル数に依存する。
【００８６】
出力配列ＭＶＨｉｓｔｏｇｒａｍ（ＭＶヒストグラム）は出力ヒストグラムを格納する。図７では、ＭＶＨｉｓｔｏｇｒａｍは、水平及び垂直の動きベクトルコンポーネントの絶対値の和により、前の動きベクトルを追跡する。具体的には、ヒストグラムはそれぞれの可能な動きベクトルコンポーネントの絶対値の和に対するカウンタを含む。図１に示す動きベクトルの範囲の各々に対して、図８の表（８００）は最大和、従って動きベクトルの範囲に対するＭＶＨｉｓｔｏｇｒａｍ内のカウンタ数を示す。図８において、ＭＶＲａｎｇｅＸ［ｉ］は範囲ｉに対する水平動きベクトルコンポーネントの最大許容絶対値を示し、ＭＶＲａｎｇｅＹ［ｉ］は範囲ｉに対する垂直動きベクトルコンポーネントの最大許容絶対値を示す。ＭＡＸ＿ＭＶＳｕｍ［ｉ］は範囲ｉに対するＭＶＲａｎｇｅＸ［ｉ］とＭＶＲａｎｇｅＹ［ｉ］の和である。
【００８７】
図７に戻る。ＭＶＨｉｓｔｏｇｒａｍをゼロの値に初期化する。ブロック毎ベースで、エンコーダはＭＶ＿ｘ及びＭＶ＿ｙの配列を通して繰り返す。ブロックをフレーム内符号化する場合、エンコーダは動き無し（水平及び垂直コンポーネントがゼロに等しい）に対するカウンタを増加させる。そうでなければ、エンコーダはブロックに対する水平及び垂直動きベクトルコンポーネントの絶対値を決定し、ＭＶＨｉｓｔｏｇｒａｍカウンタをその絶対値の和に対して増加させる。
【００８８】
あるいは、エンコーダはいくつかの他のメカニズムを使用して、前の動きベクトルを用いてヒストグラムを計算する。例えば、エンコーダは動きベクトルのコンポーネント又はヒストグラムに対して異なるデータ構造を使用し、フレーム内符号化ブロックを無視し、ヒストグラムに対して絶対値の和以外のメトリックを使用し、又は水平及び垂直コンポーネントに対して異なる重みを使用して水平動きベクトルコンポーネントにより大きな重みを与えるか又は逆を行う。
【００８９】
図６に戻る。エンコーダはヒストグラムの１又は複数の特徴を抽出する（６２０）。本質的には、エンコーダはヒストグラム内の情報を、後の意思決定で用いる１又は複数のパラメータとして集約する。
【００９０】
図９は、ヒストグラムの特徴を抽出するルーチンの例を示し、ヒストグラムは図７の擬似コード（７００）に従って生成してある。ＥｘｔｒａｃｔＨｉｓｔｏｇｒａｍＦｅａｔｕｒｅ（ヒストグラムの特徴の抽出）により、エンコーダはヒストグラムの異なる区間内の動きベクトルを数える。ＥｘｔｒａｃｔＨｉｓｔｏｇｒａｍＦｅａｔｕｒｅは入力としてヒストグラムを受入れ、出力として４個の動き区間数の合計、即ち低、中、オーバフロー、高を生成する。
【００９１】
次の表は、任意の所与のｉのＭＶＲａｎｇｅＩｎｄｅｘ（ＭＶ範囲インデックス）に対する４個の所定の動き区間を示す。
【００９２】
【表２】
2014147072.tif 000007
【００９３】
図１０は表２の４個の動き区間をｉ＞０に対して図示する。例えば、ｉ＝２に対して、区間はそれぞれ、２から５１１、５１２から７６７、７６８から２５６０、及び２０４８から２５６０である。最初の２個の動き区間はｉ＝０に対して未定義である。ｉ＝０の場合、オーバフローの区間は２に拡張する。
【００９４】
ｉ＞０に対してオーバフローの動き区間は、次のより小さな範囲が前の動きベクトルについて使用されていたならば、動きを有した動きベクトルの範囲ｉの部分はキャプチャされなかったであろうことを示す。オーバフローの動き区間は高い動き区間に重複し、エンコーダが上記オーバフローを動きベクトルの範囲内の大きな動きから区別する簡単な方法を提供する。
【００９５】
ＥｘｔｒａｃｔＨｉｓｔｏｇｒａｍＦｅａｔｕｒｅでは、エンコーダは、絶対値の和が上記の４個の動き区間に入るような前の動きベクトルの数を計算する。エンコーダは上記の４個の区間に対するカウンタをゼロに初期化する。前の動きベクトルに対する動きベクトルの範囲ｉがゼロより大きい場合、エンコーダは低、中、及び高の区間内のヒストグラムカウンタを通ってループし、ヒストグラムカウンタをそれぞれの区間で合計する。エンコーダは高の区間に重複しないオーバフロー区間の一部に対するヒストグラムカウンタを通ってループし、次いで高の区間のカウント合計をオーバフロー区間のカウント合計に足す。高の区間を２回通ってループしないことでヒストグラム合計操作における時間を少し節約する。
【００９６】
動きベクトルの範囲ｉがゼロである場合、エンコーダは高の区間のヒストグラムカウンタを通ってループし、高の区間と重複しない拡張オーバフロー区間の一部に対するヒストグラムカウンタを通ってループし、次いで高の区間のカウント合計をオーバフロー区間のカウント合計に足す。
【００９７】
あるいは、エンコーダはいくつかの他のメカニズムを使用してヒストグラムから特徴を抽出する。例えば、エンコーダは他の絶対値の和区間及び／又は追加の絶対値の和区間を使用する。又は、エンコーダは区間に対する平均絶対値の和のような他のパラメータ値又は統計値を用いてヒストグラム情報を集約する。又は、ヒストグラム内の異なるメトリックに対して、エンコーダは異なる範囲、例えば、複数次元での範囲を使用する。
【００９８】
図６に戻る。エンコーダは次に更新した動きベクトルの範囲及び／又は検索範囲を選択する（６３０）。例えば、ヒストグラムの特徴（複数）を用いると、エンコーダは現在のＰ画像と前のＰ画像及び現在のＰ画像の間にある（再生順序での）任意のＢ画像とに対して新規の動きベクトルの範囲を選択する。更新した動きベクトルの範囲は前の動きベクトルの範囲と同一又は異なることができ、更新した検索範囲は前の検索範囲と同一又は異なることができる。
【００９９】
図１１は、図９の擬似コード（９００）に従って抽出したヒストグラムの特徴を用いた移動ベクトル範囲選択のルーチンの例を示す擬似コードリスト（１１００）である。ルーチンＤｅｃｉｄｅＲａｎｇｅでは、エンコーダは前の（及びデフォルトの現在の）動きベクトルの範囲ｉを＋１又は−１だけ調整するか、あるいはｉを全く変更しない。ＤｅｃｉｄｅＲａｎｇｅは入力としてヒストグラムの特徴を低、中、オーバフロー、及び高で受け入れ、出力として新規の動きベクトルの範囲を生成する。一般に、動きベクトルの数が４個の上述の区間で与えられると、エンコーダは新規の動きベクトルの範囲を以下の基準に基づいて決定する。
１．ゼロでない動きベクトルを有するブロックの数は、動きベクトルの範囲を１だけ増加させるために第１の閾値を満たすべきである（図９−１１の例では、１の絶対値の和を有する動きベクトルをゼロ値の動きベクトルのように扱っている）。
２．高い動き区間における動きベクトルの数は、動きベクトルの範囲を１だけ増加させるために第２の閾値を満たすべきである。
３．オーバフロー動き区間における動きベクトルの数は、動きベクトルの範囲を１だけ減少させるために第３の閾値を満たすべきである。
４．中の動き区間における動きベクトルの数は、動きベクトルの範囲を１だけ減少させるために第４の閾値を満たすべきである。
【０１００】
図１１を参照する。ルーチンＤｅｃｉｄｅＲａｎｇｅはこれらの４個の基準を条件チェックにおいて実装する。先ず、エンコーダはゼロでない動きベクトルの数、ＮｏｎＺｅｒｏＭｏｔｉｏｎを計算する。４個の動き区間である低、中、オーバフロー、及び高に対して、これは低、中及びオーバフローの区間カウントの合計の和である。エンコーダは更新した動きベクトルの範囲をデフォルトの現範囲に等しいように設定する。この範囲は、その範囲を増加又は減少させない限り最終的な範囲である。
【０１０１】
エンコーダは、（１）ＮｏｎＺｅｒｏＭｏｔｉｏｎがα＊前の動きベクトルを収集したブロックの数より大きい場合、且つ（２）高の区間における動きベクトル数がβ＊ＮｏｎＺｅｒｏＭｏｔｉｏｎより大きい場合に、動きベクトルの範囲ｉを増加させる。チェック（１）では、ブロック数は、フレーム内又はフレーム間符号化した、前の動きベクトルを収集したブロックの数である。例えば、前の動きベクトルが前のＰ画像の動きベクトルである場合、上記の数は前のＰ画像におけるブロックの数であり、上記の数を動きベクトル表現の均一なブロックサイズに調整する。チェック（１）の背後にある動機は、全体の動きアクティビティが何らかの閾値に達したときにのみ動きベクトルの範囲を増加させることであり、大きな動きアクティビティが少数のブロックに存在する場合だけではない。チェック（２）の背後にある動機は、大きな動きアクティビティが何らかの閾値に達したときにのみ動きベクトルの範囲を増加させることである。α及びβの値は実装に依存する。
【０１０２】
エンコーダは（３）オーバフロー区間における動きベクトルの数がγ＊ＮｏｎＺｅｒｏＭｏｔｉｏｎ未満であり、且つ（４）中区間における動きベクトルの数がβ＊ＮｏｎＺｅｒｏＭｏｔｉｏｎ未満である場合に動きベクトルの範囲を減少させる。チェック（３）の背後にある動機は、動きインアクティビティがオーバフロー区間で何らかの閾値に達したときにのみ動きベクトルの範囲を減少させることである。γの値は実装に依存する。チェック（４）の背後にある動機は、中区間が動きアクティビティの大部分を有さないことをさらに検証することである。エンコーダは異なる重みをチェック（２）及び（４）で使用することができる。
【０１０３】
ＤｅｃｉｄｅＲａｎｇｅでは、エンコーダは新規の範囲を切り取って、それが０及び３を含めてそれらの間にあることを保証する。又は、切り取りの代わりに、エンコーダは増加条件においてｉ＜３であることを検証し、減少条件においてｉ＞０であることを検証することができる。 
α、β及びγの値の例は
α＝０．１、β＝０．１及び
γ＝０．０２
である。動きベクトルの範囲をＰ画像毎に更新し、介在するＢ画像の数が２以下である様々なエンコードシナリオに渡って、これらの設定は良い性能を提供する。これらの設定では、エンコーダは範囲のサイズを減少させるよりも少々積極的に範囲のサイズを増加させ、計算コストを犠牲にして動き予測の品質を優先する傾向がある。
【０１０４】
あるいは、エンコーダはいくつかの他のメカニズムを使用して動きベクトルの範囲及び／又は検索範囲をヒストグラムの特徴から選択する。例えば、エンコーダは異なる閾値及び／又は異なる選択条件を使用する。又は、異なるヒストグラムの特徴に対して、エンコーダは異なる範囲選択論理を使用する。又は、エンコーダは動きベクトルの範囲自体に無関係に、ヒストグラムの特徴を用いて新規の検索範囲を選択する。
【０１０５】
ＩＶ．動き予測における歪みメトリック選択
ブロックベースの動き予測中に、エンコーダは一般に現在の画像からの現サンプルブロックを、参照画像における同一サイズの１又は複数の候補ブロックと比較する。エンコーダは歪みメトリックを使用して、現ブロックと候補ブロックとの間のマッチを評価する。ＳＡＤ、ＳＡＨＤ、及びラグランジュレート歪みコストは一般的な歪みメトリックである。他の歪みメトリックにはＳＳＥ、ＭＳＥ、及び平均分散が含まれる。
【０１０６】
どの歪みメトリックをエンコーダ内で使用するかを決定するとき、１つの目標は特定の動き予測選択に対する全体のレート歪みコストを正確に説明することである。良い動き予測選択を特定すると、レート歪みコストの正確な予測によりレート歪み性能が改善される。良い動き予測選択を動き予測の早い段階で特定すると、その正確な予測によりエンコーダ性能も改善することができる。
【０１０７】
別の目標は、歪みメトリックが低い複雑度であることである。動き予測はエンコード時間の大部分を消費し、歪みメトリックの演算複雑性における増分変化は集計におけるエンコーダ性能に劇的に影響を及ぼす可能性がある。低い複雑度且つ高い正確性という目標は相反することがよくある。ＳＡＤのような低複雑度の歪みメトリックと比較して、ＳＡＨＤのような高複雑度の歪みメトリックはより正確に、大部分の時間、全体のレート歪みコストを説明する。
【０１０８】
本節は、エンコーダ又は他のツールが、動き予測の実施時に異なる歪みメトリックを動的に切り替えできる技術を説明する。利用可能な歪みメトリック、選択基準及び閾値、歪みメトリック切り替えのタイミング、及び他のエンコードの詳細は実装に依存する。いくつかの実装では、Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ Ｖｉｄｅｏのメイン又は高度なプロフィールあるいはＶＣ−１プロフィールに対してビデオをエンコードするエンコーダは、動的に歪みメトリックを選択してレート歪み性能を改善しつつ、全体の演算複雑性も削減する。あるいは、別の形式又はプロフィールに対してビデオをエンコードするエンコーダは歪みメトリックを動的に選択する。
【０１０９】
Ａ．理論及び説明
歪みメトリックの切り替えによりエンコーダは、異なる歪みメトリックを用いて動き予測中のレート歪みコストをより正確に説明することで、レート歪み性能を改善することができる。同時に、歪みメトリックの切り替えによりエンコーダは、より単純な歪みメトリックを用いることに対してペナルティがない（又は軽い、許容範囲のペナルティだけである）場合にその単純な歪みメトリックを用いることで、動き予測の全演算複雑性を削減することができる。例えば、エンコーダはＳＡＤとＳＡＨＤを切り替える。
【０１１０】
ＳＡＨＤは一般に、量子化に続くゼロでない変換係数が存在するとき、全体のレート歪みコストをＳＡＤより正確に近似する。上記の場合、ＳＡＨＤは周波数変換のエネルギー圧縮効果を考慮する。ＳＡＤはこれを無視する。従って、エンコーダは、周波数変換から残差の歪みコストに影響するエネルギー圧縮が期待されるとき、ＳＡＨＤを使用する。
【０１１１】
他方、ＳＡＨＤは、ＳＡＨＤ内のアダマール変換のためＳＡＤより計算が複雑となる。及び、少数の状況では、ＳＡＤはＳＡＨＤより正確にレート歪み性能を説明する（周波数変換のエネルギー圧縮効果は現実的に無意味なものであるので、ＳＡＤは、ゼロでない量子化変換係数が存在するときにレート歪みコストをより良く近似する）。従って、エンコーダは、残差エネルギーが量子化後の変換領域内で不足すると期待されるとき、ＳＡＤを使用する。ＳＡＤを選択的に用いることで、動き予測の全演算複雑性を大幅に削減することができる。
【０１１２】
例えば、エンコーダは現ブロックと参照画像の初期候補ブロックとの間の残差を計算する。初期候補ブロックは、参照画像内の予測された動きベクトルの位置にある候補ブロックであることができる。予測された動きベクトルを計算する１つの一般的なメカニズムは、現ブロックの左、上、及び右上の近傍動きベクトルのコンポーネント毎中央値を使用するが、別のメカニズムを代わりに使用してもよい。エンコーダは残差値の絶対値を加え、このＳＡＤinitialを閾値と比較する。閾値を、残差がゼロ値の量子化変換係数のみを必然的に生成する値より下に設定する。ＳＡＤinitialが閾値未満である場合、エンコーダはＳＡＤを現ブロックに対する動き予測において使用する。そうでなければ、エンコーダはＳＡＨＤを現ブロックに対する動き予測において使用する。
【０１１３】
選択的にＳＡＤとＳＡＨＤを切り替えることで、動き予測中にＳＡＤのみ又はＳＡＨＤのみを使用するよりも優れたレート歪み性能を提供する。いくつかの場合、ＳＡＨＤはＳＡＤより良いレート歪み性能を提供する。他の場合では、ＳＡＤがＳＡＨＤより良いレート歪み性能を提供する。
【０１１４】
加えて、ＳＡＤ−ＳＡＨＤ切り替えでの動き予測の演算複雑性は、常にＳＡＨＤを使用する動き予測より少ない。エンコーダは、ＳＡＤがより良いレート歪み性能を提供するか又は十分であるとき、低い演算複雑性のＳＡＤを使用する。特に、低いビットレートのエンコードシナリオでは、多数の残差は粗い量子化のためゼロ値の係数のみを生成する。結果として、動き予測の演算複雑性を、ＳＡＨＤの代わりにＳＡＤを選択的に使用することで大幅に削減することができる。同様に、小さな動きのビデオでは、多数の残差は効果的な動き予測のためゼロ値の係数のみを生成し、動き予測の演算複雑性をＳＡＨＤの代わりにＳＡＤを選択的に使用することで大幅に削減することができる。
【０１１５】
Ｂ．閾値関数の例
所与の量子化パラメータＱＰ及び量子化部に対して、ある特定の変換係数値をエンコード中にゼロに量子化する。そのＱＰ及び量子化部に対して、ゼロに量子化される最大振幅変換係数がある。次の最大振幅を有する変換係数を、最小のゼロでない量子化値に量子化する。
【０１１６】
さらに、所与の周波数変換に対して、変換において使用する行列値を定義する。これらの値のいくつかは正であり、その他は負である。最大振幅を有する行列値は、変換における値の拡張を引き起こす可能性が最も高い。
【０１１７】
所与のＳＡＤ値を有する残差を変換するとき、１又は複数の変換係数は他より大きな振幅を有する。残差値のいくつかのパターンは、大きな最大振幅値を有する変換係数となる。（同一の所与のＳＡＤを有する残差に対する）他の残差値パターンは、小さな最大振幅値を有する変換係数となる。特に、ゼロでない残差値が残差に渡って広がるとき、結果の変換係数間の最大振幅は通常は小さい。他方、残差内のある特定の位置に単一のゼロでない残差値がある場合、孤立残差値に及ぼす最大振幅の行列値の影響のため、結果の変換係数間の最大振幅は非常に大きい可能性がある。
【０１１８】
これらの要因を考慮すると、閾値未満のＳＡＤを有する任意の残差ブロックがゼロ値の量子化変換係数のみを有するように、閾値を設定することができる。閾値は現在の量子化パラメータＱＰと量子化部に依存する。最大振幅の行列値は異なる変換では異なるので、閾値は使用中の周波数変換にも依存する。
【０１１９】
いくつかの実装では、閾値は現在の量子化パラメータＱＰの関数ｆ（ＱＰ）であり、これは現在の量子化ステップサイズを示す。関数ｆ（ＱＰ）は量子化デッドゾーンに依存する。そのデッドゾーンは、ゼロに量子化されるゼロ周りの値の範囲である。ＳＡＤinitial＜ｆ（ＱＰ）である場合にＳＡＤinitialを計算した残差がゼロ値の量子化変換係数のみを有するように、関数ｆ（ＱＰ）を設定する。関数ｆ（ＱＰ）は量子化デッドゾーン、量子化及び再構築ルール、ならびにエンコード中に使用した周波数変換に依存し、ＶＣ−１、Ｈ．２６４等に対しては異なる。関数ｆ（ＱＰ）を所与の周波数変換及び量子化方式に対してオフラインで計算して配列又は他のデータ構造に格納し、次いでエンコード中に使用することができる。
【０１２０】
実装に依存して、量子化パラメータＱＰを画像、スライス、マクロブロック、ブロック、あるいはビデオ画像又はシーケンスの他の部分に対して設定することができる。例えば、エンコーダは画像に対して量子化ステップサイズを設定するが、それをスライス、マクロブロック、及び／又はブロックレベルで修正する可能性がある。量子化パラメータＱＰは、整数の量子化ステップサイズ増分又は分数（例えば、１／２ステップの）量子化ステップサイズ増分を示すことができる。
【０１２１】
量子化デッドゾーンは量子化パラメータＱＰに関連する。ＱＰが小さいとき、デッドゾーンは効率的により小さく、ＱＰが大きいときデッドゾーンは効率的により大きい。エンコーダは異なるデッドゾーン比を有する量子化部を切り替えることができる。その量子化部には例えば、現在の量子化ステップ範囲と同じ幅のデッドゾーンを有する「均一な」量子化部、及び現在の量子化ステップ範囲の約２倍の幅であるデッドゾーンを有する「不均一な」量子化部がある。
【０１２２】
実際には、エンコーダは、対応する再構築ルールより少々より積極的な量子化を使用することがよくある。例えば、再構築後の２個の可能な値の間にある中点と比較して、エンコーダはゼロから少々さらに離れた量子化閾値を適用する。結果として、その中点の周りの値を、より近い、大きい方の量子化値にマップするのではなく２個の量子化値の小さい方に量子化する。特に、エンコーダはデッドゾーンの幅を少々増加させて、ゼロに量子化する値を増やすことがよくある。
【０１２３】
１．量子化部デッドゾーンの例
ＶＣ−１のある特定のプロフィールにおいて、量子化パラメータＭＱＵＡＮＴは１から３１の間の値を有し、量子化ステップサイズが整数の増分であることを示す。ＭＱＵＡＮＴは画像レベルの量子化パラメータＰＱＵＡＮＴに基づくが、特定のマクロブロック又は画像領域に対する後の量子化パラメータにより修正（又は置換）することができる。情報の超過ビットＨＡＬＦＱＰは半ステップの増分を示すことができる。
【０１２４】
「均一な」量子化部に対して、ゼロでないＡＣ係数に対する再構築ルールは
ｄｅｑｕａｎｔ＿ＡＣｃｏｅｆｆ＝ＡＣＣｏｅｆｆＱ＊ｄｏｕｂｌｅ＿ｑｕａｎｔ
である。ここで、ＡＣｃｏｅｆｆは量子化ＡＣ係数であり、ｄｅｑｕａｎｔ＿ＡＣｃｏｅｆｆは逆量子化ＡＣ係数である。ブロックをＰＱＵＡＮＴで符号化する場合、
ｄｏｕｂｌｅ＿ｑｕａｎｔ＝２＊ＭＱＵＡＮＴ＋ＨＡＬＦＱＰ
である。
【０１２５】
ブロックを他の量子化シンタックス要素で符号化する場合、
ｄｏｕｂｌｅ＿ｑｕａｎｔ＝２＊ＭＱＵＡＮＴ
である。
【０１２６】
「不均一な」量子化部に対して、ゼロでないＡＣ係数に対する再構築ルールは
ｄｅｑｕａｎｔ＿ＡＣｃｏｅｆｆ＝ＡＣＣｏｅｆｆＱ＊ｄｏｕｂｌｅ＿ｑｕａｎｔ＋ｓｉｇｎ（ＡＣＣｏｅｆｆＱ）＊Ｑｓｃａｌｅ
である。ここで、Ｑ＿ｓｃａｌｅ＝ＭＱＵＡＮＴである。
【０１２７】
これらのＶＣ−１再構築ルールを適用して再構築後の可能な逆量子化値間の中点を決定し、デッドゾーン閾値ＤＺを第１のゼロでない逆量子化値未満の同一オフセットに設定することで、以下の表に、ＭＱＵＡＮＴ及びＨＡＬＦＱＰの異なる値に対するデッドゾーン閾値ＤＺの例をＶＣ−１内の均一な量子化部及び不均一な量子化部とともに示す。デッドゾーン閾値ＤＺは、ゼロに量子化される値より下の絶対値を示す。
【０１２８】
【表３】
2014147072.tif 000008
【０１２９】
実際には、ＶＣ−１エンコーダは異なるデッドゾーン閾値、例えば、より積極的に値をゼロに量子化するデッドゾーン閾値を使用することができる。その場合、デッドゾーン閾値は表３に示すものよりも少々大きいであろう。また、ＤＣ係数を、特により大きな量子化ステップサイズで、ＡＣ係数より少々非積極的に量子化することができる。この要素を念頭において、ＶＣ−１エンコーダは、特に大きなＱＰ値に対して、ある特定のデッドゾーン閾値を少々削減することができる。
【０１３０】
Ｈ．２６３標準によると、画像層の値ＱＵＡＮＴは１から３１の間であり、半ステップの量子化サイズ増分を示す。ＱＵＡＮＴの値を、ＤＱＵＡＮＴのような後のシンタックス要素により変更することができる。ゼロでないＡＣ係数に対する再構築ルールは、
ＱＵＡＮＴが奇数の場合、
｜ＲＥＣ｜＝ＱＵＡＮＴ・（２・｜ＬＥＶＥＬ｜＋１）、及び
ＱＵＡＮＴが偶数の場合、
｜ＲＥＣ｜＝ＱＵＡＮＴ・（２・｜ＬＥＶＥＬ｜＋１）−１
ここで、ＲＥＣは再構築ＡＣ係数であり、ＬＥＶＥＬは量子化ＡＣ係数である。｜ＲＥＣ｜を計算した後、ｓｉｇｎを取り込む。即ち、
ＲＥＣ＝ｓｉｇｎ（ＬＥＶＥＬ）・｜ＲＥＣ｜
である。
【０１３１】
これらのＨ．２６３再構築ルールと一貫して、以下の表はＨ．２６３におけるＱＵＡＮＴの異なる値に対するデッドゾーン閾値ＤＺの例を示す。
【０１３２】
【表４】
2014147072.tif 000009
【０１３３】
実際には、Ｈ．２６３エンコーダは異なるデッドゾーン閾値、例えば、量子化値をより積極的にゼロに量子化するデッドゾーン閾値を使用することができる。
【０１３４】
他のエンコーダは同様に、量子化部と一貫したデッドゾーン閾値、量子化及び再構築ルール、及びこれらのエンコーダで可能な量子化ステップサイズを有する。一般に、デッドゾーン閾値はＱＰが増加すると単調に増加するが、デッドゾーン閾値が増加するステップとデッドゾーン閾値のＱＰに対する比率とは、量子化の実装に依存して変化する。
【０１３５】
２．変換拡大因子の例
デッドゾーン閾値を変換係数に適用し、一方でＳＡＤinitialをサンプル領域の値から計算する。従って倍率ｋを閾値に取り込む。即ち、
ＳＡＤinitial＜ＤＺ／ｋ
である。ここで、
ｆ（ＱＰ）＝ＤＺ／ｋ
である。倍率ｋは所与のＳＡＤ値に対する最大可能拡張（ｇｒｅａｔｅｓｔｐｏｓｓｉｂｌｅ ｅｘｐａｎｓｉｏｎ）に依存する。次のＶＣ−１からの１次元８点変換Ｔ8及び１次元４点変換Ｔ4を考える。
【０１３６】
【数４】
2014147072.tif 000010
【０１３７】
【数５】
2014147072.tif 000011
【０１３８】
ＶＣ−１エンコーダは（ｉ行及びｊ列を有する）残差データブロックＤi×j上の前方４×４、４×８、８×４、及び８×８の変換を次のように実施することができる。
４×４変換に対して、
【０１３９】
【数６】
2014147072.tif 000012
【０１４０】
８×４変換に対して、
【０１４１】
【数７】
2014147072.tif 000013
【０１４２】
４×８変換に対して、
【０１４３】
【数８】
2014147072.tif 000014
【０１４４】
及び、８×８変換に対して、
【０１４５】
【数９】
2014147072.tif 000015
【０１４６】
ここで、・は行列乗算を示し、
【０１４７】
【数１０】
2014147072.tif 000016
【０１４８】
は正規化因子によるコンポーネント毎の乗算を示し、Ｔ´は行列Ｔの逆行列を示し、
【０１４９】
【数１１】
2014147072.tif 000017
【０１５０】
は変換係数ブロックを表す。正規化行列Ｎi×jを次のように与える。
【０１５１】
【数１２】
2014147072.tif 000018
【０１５２】
ここで、
【０１５３】
【数１３】
2014147072.tif 000019
【０１５４】
、及び
【０１５５】
【数１４】
2014147072.tif 000020
【０１５６】
である。
【０１５７】
異なる正規化因子は、前方変換における変換行列値により生成した異なる量の拡張に関連する。それらの因子はさらに、逆変換において右シフトにより単純な正規化を設定する。
【０１５８】
１次元８点ＶＣ−１変換を残差の列と結果の行とに適用するとき、第２の変換行の第１の行列値（即ち、１６）は、拡張を引き起こす可能性が最も高いものである。正規化を考慮すると、その行列値は
１６2＊（８／２８９）2＝．１９８
又は約１６／８１だけの拡大を引き起こす。
【０１５９】
ＳＡＤinitialが所与の初期候補ブロックに対して２５であると仮定する。次の２個のブロックは、ＳＡＤinitialが２５である可能な残差を示す。
【０１６０】
【数１５】
2014147072.tif 000021
【０１６１】
【数１６】
2014147072.tif 000022
【０１６２】
第１のブロックでは、ＳＡＤinitial＝２５であるエネルギーを単一の残差値に分離する。その残差値を、水平及び垂直変換における高振幅の変換行列値に公開する。８点変換を垂直及び水平に適用するとき、
【０１６３】
【数１７】
2014147072.tif 000023
【０１６４】
である係数値が
【０１６５】
【数１８】
2014147072.tif 000024
【０１６６】
の第２行の第２の位置に現れる。対照的に、第２のブロックでは、ＳＡＤinitial＝２５であるエネルギーは１４個の残差値に渡って広がる。結果として、８点変換を垂直及び水平に適用し、５以上の係数値はない。小さい振幅行列値と負の行列値の影響として、変換係数の値は小さい。従って、問題が全ての変換係数がゼロに量子化されるかどうかである場合、最大振幅の変換行列係数に公開した単一の残差値に所与のＳＡＤinitialのエネルギーが分離されるパターンは最悪のケースを与える。このパターンの結果、ＳＡＤinitialの値を有する残差からの個々の変換係数値が最大になる。
【０１６７】
この理由のため、閾値関数ｆ（ＱＰ）に対して、倍率ｋは周波数変換に対する最大振幅変換行列値に依存する。一般に、これは１次元変換の第２行の最初の係数であり、最小ＡＣベース関数の最初の係数に対応する。ＶＣ−１における４×８又は８×４の変換に対して、拡大因子ｋは１６＊（８／２８９）＊２２＊（８／２９２）＝．２６７である。４×４の変換に対して、拡大因子ｋは２２2＊（８／２９２）2．＝．３６３である。
【０１６８】
所与のＱＰ及び量子化部に対するデッドゾーン区間をＤＺ（ＱＰ）で表す場合、ＶＣ−１における前方変換に対する閾値関数ｆ（ＱＰ）はＤＺ（ＱＰ）／ｋであり、ここでｋは変換サイズに依存する。
【０１６９】
Ｈ．２６３では、正規化後、１次元ＤＣＴに対する最大振幅変換行列値は．４９である。再度、これは最小ＡＣベース関数の最初の係数である。２次元ＤＣＴに対して、拡大因子ｋは（．４９）2＝．２４である。Ｈ．２６３における前方変換に対する閾値関数ｆ（ＱＰ）はＤＺ（ＱＰ）／．２４、又は大まかに４＊ＤＺ（ＱＰ）である。
【０１７０】
３．代替手段
代替手段として、所与の量子化部及び周波数変換に対する閾値ｆ（ＱＰ）を決定する強力なアプローチは以下の通りである。関数ｆ（ＱＰ）において可能な量子化パラメータＱＰに対して、ＳＡＤの値ｍを評価する。特に、振幅がｍである単一のゼロでない値を有する残差を周波数変換する（値ｍは残差の上、左の位置にあるか、又は最大の単一変換係数値の生成テストにおいて示した何らかの他の位置にある）。変換係数をＱＰで量子化する。ゼロでない量子化変換係数がある場合、次に小さなｍの値を評価する。全ての量子化変換係数がゼロの値を有する場合、次に大きなｍの値を評価する。これを、全てのゼロ値の量子化変換係数を生成するｍの最大値がＱＰに対して見つかるまで続ける。異なるＱＰ値を次いで評価する。ｆ（ＱＰ）において可能なＱＰの値を評価すると、異なる周波数変換又は量子化部に対する閾値関数ｆ（ＱＰ）を決定することができる。
【０１７１】
閾値関数ｆ（ＱＰ）の前述の使用及び定義は、いくつかの点で保守的である。閾値を（予測された動きベクトル又はゼロ値の動きベクトルの位置にある）初期候補ブロックに対してチェックすると仮定する。初期候補ブロックに対する残差は、最終候補ブロックに対する残差より大きいことが期待される。しかしながら、初期候補ブロックのみに対して閾値をチェックすると、より良いマッチへの収束を説明できない。
【０１７２】
さらに、ｆ（ＱＰ）の保守的な定義では、閾値ｆ（ＱＰ）より大きいＳＡＤinitialを有する多数の残差ブロックはなおゼロ値の量子化変換係数のみを生成する。これは、例えばゼロでない残差値が残差ブロック周りに広がるときに生ずることがよくある。
【０１７３】
あるいは、エンコーダはそれ程保守的ではない閾値関数を使用して、正確により「全ゼロ値」である場合を特徴付けるが、少数の「ゼロでない値」である場合を見逃す可能性がある。例えば、あまり保守的でない閾値テストでは、エンコーダは残差ブロックの平均値又はＤＣコンポーネントを考慮する。残差のＤＣコンポーネント／平均値が（例えば、負の残差値のため）０又はゼロに近い場合、ＳＡＤの性能は十分である可能性があり、従って閾値が満たされる。
【０１７４】
又は、エンコーダはあまり保守的でない閾値テストにおいてＳＡＤinitialに寄与する残差値の数を考慮する。少なくともｘ個のゼロでない値（ｘは５、６等である）がある場合に閾値は満たされる。
【０１７５】
又は、エンコーダは任意のゼロでない残差値の絶対値がＳＡＤinitial／２より大きいかどうかを考慮する。そうでない場合、エンコーダは閾値が満たされると見なす。
【０１７６】
Ｃ．歪みメトリックの動的な切り替え
図１２は動き予測中に歪みメトリックを動的に切り替える汎用的な技術（１２００）を示す。図３を参照して上述したもののようなエンコーダは本技術（１２００）を実施する。あるいは、別のツールが本技術（１２００）を実施する。
【０１７７】
始めに、エンコーダは歪みメトリック選択基準を計算する（１２３０）。例えば、エンコーダは現ブロックと初期候補ブロックとの間の残差に対するＳＡＤを、検索パターンの開始時に計算する。初期候補ブロックはゼロ値の動きベクトルにあるブロック、予測された動きベクトル位置にあるブロック、又は何らかの他の初期候補ブロックであることができる。あるいは、歪みメトリック選択基準は残差の平均値又はＤＣコンポーネント、ゼロでない残差値の数及び／又は任意のゼロでない残差値がその残差に対するＳＡＤのある特定の分数（例えば、１／２）を超えるかどうか、のような他の因子及び／又は追加の因子を取り込む。
【０１７８】
エンコーダは次いで歪みメトリック選択基準を評価する（１２４０）。例えば、エンコーダはその基準を閾値（又は複数の因子を選択基準に取り込む場合は複数の閾値）と比較する。又は、エンコーダは何らかの他の方法、例えば、選択基準の因子に依存して異なる決定につながる決定木を用いて、基準を評価する。
【０１７９】
エンコーダは歪みメトリックを複数の利用可能な歪みメトリックから選択する（１２６０）。例えば、エンコーダはＳＡＤ及びＳＡＨＤの間で選択する。あるいは、エンコーダは他の歪みメトリック及び／又は追加の歪みメトリックの間で選択する。そのメトリックは１又は複数のレート歪みコストメトリック、ＳＳＥ、ＭＳＥ、平均分散、及びＳＡＨＤ以外のＳＡＴＤを含むことができる。
【０１８０】
エンコーダは次いで、動き予測において選択した歪みメトリックを使用する（１２７０）。具体的には、エンコーダは選択した歪みメトリックを使用して、１又は複数の動き予測の選択結果の適合性を評価する。動き予測ベクトル範囲（複数）、検索範囲（複数）、検索パターン（複数）、終了条件（複数）、サブピクセル（１画素以下）補間及び動き予測の他の詳細は実装に依存して変化する。例えば、エンコーダは完全検索、部分検索、又は動き予測における他の検索範囲を使用し、（３×３又は５×５のような）ブロック検索パターン、スパイラル検索パターン、又は他の検索パターンを使用し、予測された動きベクトル位置又はゼロ値の動きベクトル位置の周りで開始する。動き予測は階層的、例えば、４：１のサブサンプル、整数画素、及び１／４画素段階、又は何らかの他の段階構成であることができる。
【０１８１】
動き予測の最中又は後の何らかの時点で（１２７０）、エンコーダは継続するかしないかを決定する（１２９０）。例えば、エンコーダは現ブロック又はマクロブロックに対する選択基準を、その現ブロック／マクロブロックに対する動き予測における初期チェックの一部として計算する（１２３０）。これにより、エンコーダは動き予測の最初から演算複雑性を選択的に削減することができる。エンコーダは選択した歪みメトリックを、動き予測が現ブロック／マクロブロックに対して完了するまで使用する。エンコーダは次いで次のブロック又はマクロブロックで継続するかどうかを決定し（１２９０）、そうであれば、次のブロック／マクロブロックに対する選択基準を計算する（１２３０）。
【０１８２】
又は、エンコーダは現ブロック又はマクロブロックに対する選択基準を初期チェックの一部として計算し（１２３０）、動き予測における歪みメトリックを選択（１２６０）及び使用（１２７０）するが、引き続いて現ブロック／マクロブロックに対する同一の歪みメトリックで継続するかしないかを決定する（１２９０）。エンコーダがＳＡＨＤのような第１のメトリックで開始するがＳＡＤのような第２のメトリックが好ましいであろうポイントに残差値が近づく場合、エンコーダは現ブロック／マクロブロックに対する第２のメトリックに切り替える。
【０１８３】
階層的動き予測に対して、エンコーダは選択基準を段階における初期及び／又は中間チェックとして計算する（１２３０）。例えば、最初の最低解像度の段階に対して、エンコーダは選択基準を計算し（１２３０）、その段階に対する動き予測における歪みメトリックを選択（１２６０）及び使用（１２７０）する。エンコーダは次いで第２のより高い解像度段階で継続し、選択基準を計算して（１２３０）、その段階に対する動き予測における歪みメトリックを選択（１２６０）及び使用（１２７０）する。それぞれの段階で利用可能な歪みメトリックは、段階から段階で同一又は異なることができる。エンコーダはより高い解像度段階では歪みメトリック選択を省略することができる（例えば、レート歪みコストメトリックのみを使用する）。
【０１８４】
図１３は、歪みメトリック選択基準及び選択閾値を用いて歪みメトリックを選択する技術（１３００）を示す。図３を参照して上述したもののようなエンコーダは本技術（１３００）を実施する。あるいは、別のツールが本技術（１３００）を実施する。
【０１８５】
始めに、エンコーダは歪みメトリック選択閾値を更新するかしないかを決定する（１３１０）。例えば、閾値が現在の量子化ステップサイズ、量子化デッドゾーン区間、及び周波数変換に依存する場合、エンコーダはこれらの何れかが変化したかどうかをチェックする。又は、閾値が現在の量子化ステップサイズのみに依存する場合、エンコーダは量子化ステップサイズが変化したかどうかをチェックする。
【０１８６】
閾値を更新するため、エンコーダは歪みメトリック選択閾値を設定する（１３２０）。例えば、所与の量子化部及び周波数変換に対する量子化パラメータ値に閾値を関連付けるデータ構造を用いて、現在の量子化パラメータが与えられるとエンコーダはその閾値を設定する。データ構造は配列又は他のデータ構造であることができる。閾値は上述のように閾値関数ｆ（ＱＰ）から、又は別の閾値関数からのものであることができる。
【０１８７】
エンコーダは歪みメトリック選択基準も計算する（１３３０）。例えば、エンコーダは現ブロック及び初期候補ブロックの間の残差に対するＳＡＤinitialを計算する。閾値と併せて、ＳＡＤinitialは、残差がゼロ値の量子化変換係数のみを有するかどうかを単純で少ない演算複雑性で示す。又は、エンコーダは図１２を参照して説明したもののような何らかの他の選択基準を使用する。
【０１８８】
エンコーダは次いでその基準を閾値と比較する（１３４０）。例えば、エンコーダはＳＡＤinitialが閾値ｆ（ＱＰ）未満であるかどうかをチェックする。平均残差値、残差のＤＣコンポーネント、ゼロでない残差値の数、及び／又はＳＡＤinitialの分数のような因子を取り込む選択基準に対して、エンコーダはその因子を対応する閾値部分と比較する。
【０１８９】
エンコーダは次いで第１の歪みメトリックを選択する（１３５０）か又は第２の歪みメトリックを選択する（１３６０）。例えば、ＳＡＤinitialを保守的な閾値関数ｆ（ＱＰ）と比較した後に、ＳＡＤinitial＜ｆ（ＱＰ）である場合、残差に対する量子化変換係数がゼロの量子化値を有することになるので、エンコーダはＳＡＤを選択する。そうでなければ、残差に対する１又は複数の量子化変換係数がゼロでない量子化値を有する可能性があるので、エンコーダはＳＡＨＤを選択する。あるいは、エンコーダは他の歪みメトリック及び／又は追加の歪みメトリックの間で選択する。
【０１９０】
エンコーダは選択した歪みメトリックを使用して、１又は複数の動き予測の選択結果の適合性を評価する（１３７０）。動き予測の詳細は、図１２を参照して説明したように、実装に依存して変化する。
【０１９１】
動き予測の最中又は後の何らかの時点で（１３７０）、エンコーダは継続するかしないかを決定する（１３９０）。例えば、エンコーダは画像内のそれぞれの新規ブロック又はマクロブロックに対する選択基準を、ブロック／マクロブロックに対する動き予測における初期チェックの一部として計算し（１３３０）、選択閾値を必要に応じて更新し、画像内に新規ブロック／マクロブロックがある限り継続することを決定する（１３９０）。あるいは、エンコーダは現ブロック又はマクロブロックに対する歪みメトリック選択基準を初期チェックの一部として計算し（１３３０）、現ブロック／マクロブロックに対する動き予測中に選択基準及び／又は閾値を選択的に更新するかどうかを決定する（１３９０）。
【０１９２】
本発明の原理を様々な実施形態を参照して説明及び図示したが、様々な実施形態を上記原理から逸脱することなく配置及び詳細において修正できることを認識されたい。本明細書で説明したプログラム、プロセス、又は方法は、特に示さない限り特定の種類のコンピューティング環境には関連せず、又はそれに限定されないことを理解されたい。様々な種類の汎用目的又は特殊コンピューティング環境を本明細書で説明した教示で使用するか、又はその教示に従ってその環境を実施することができる。ソフトウェアにおいて示した実施形態の要素をハードウェアで実装することができ、逆も真である。本発明の原理を適用可能な多数の可能な実施形態を考慮して、我々は全ての上記実施形態が添付請求項及びその均等物の範囲及び精神内として本発明を特許請求する。
【図１】
2014147072.tif 000025
【図２】
2014147072.tif 000026
【図３】
2014147072.tif 000027
【図４】
2014147072.tif 000028
【図５】
2014147072.tif 000029
【図６】
2014147072.tif 000030
【図７】
2014147072.tif 000031
【図８】
2014147072.tif 000032
【図９】
2014147072.tif 000033
【図１０】
2014147072.tif 000034
【図１１】
2014147072.tif 000035
【図１２】
2014147072.tif 000036
【図１３】
2014147072.tif 000037