(57)【要約】      （修正有）【課題】補間フィルタとオフセットとを使用してデジタルビデオデータを符号化するための技法を提供する。【解決手段】エンコーダは、フレームまたはスライスなど、以前に符号化されたビデオユニットについて得られた履歴補間結果に基づいて、サブピクセル精度動き推定の補間フィルタを選択するように構成できる。エンコーダはまた、参照ユニットと符号化すべきユニットとの間の差に基づいて、補間後のサブピクセル位置に対するオフセットを計算し割り当てるように構成できる。オフセットの計算および割当ては動き推定の前に実行できる。動き探索が、オフセットが以前に追加されたサブピクセル位置を検討し、０でないオフセットを有するサブピクセル位置を評価するように、動き推定を改良することができる。場合によっては、所与のユニットのための補間フィルタ選択、オフセット計算、および／または改良された動き推定は、シングル符号化パスで実行できる。【選択図】図２
2014042273.tif 000002
【特許請求の範囲】
【請求項１】
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
を備えるビデオ符号化方法。
【請求項２】
前記ブロックを符号化することは、符号化がシングルパスで実行されるように前記ブロックの動き推定を１回のみ実行することを備える、請求項１に記載の方法。
【請求項３】
１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択することをさらに備える、請求項１に記載の方法。
【請求項４】
前記補間フィルタを選択することが、
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断することと、
補間フィルタの第２のセットの第２の補間誤差値を判断することと、
前記第１の誤差値と前記第２の誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと
を備える、請求項３に記載の方法。
【請求項５】
前記補間フィルタを選択することが、
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
を備える、請求項３に記載の方法。
【請求項６】
前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項３に記載の方法。
【請求項７】
前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化することをさらに備える、請求項３に記載の方法。
【請求項８】
前記ビデオブロックを符号化することが、
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
を備える、請求項１に記載の方法。
【請求項９】
動き推定を実行することは、
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
を備える、請求項８に記載の方法。
【請求項１０】
前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの１つを備える、請求項１に記載の方法。
【請求項１１】
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
を行うように構成されたビデオエンコーダを備えるビデオ符号化装置。
【請求項１２】
前記ビデオエンコーダが、符号化がシングルパスで実行されるように前記ブロックの動き推定を１回のみ実行するように構成された、請求項１１に記載の装置。
【請求項１３】
前記ビデオエンコーダが、１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択するように構成された、請求項１１に記載の装置。
【請求項１４】
前記ビデオエンコーダが、
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断することと、
補間フィルタの第２のセットの第２の補間誤差値を判断することと、
前記第１の誤差値と前記第２の誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと
を行うように構成された、請求項１３に記載の装置。
【請求項１５】
前記ビデオエンコーダが、
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
を行うように構成された、請求項１３に記載の装置。
【請求項１６】
前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項１３に記載の装置。
【請求項１７】
前記ビデオエンコーダが、前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化するように構成された、請求項１３に記載の装置。
【請求項１８】
前記ビデオエンコーダが、
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
を行うように構成された、請求項１１に記載の装置。
【請求項１９】
前記ビデオエンコーダが、
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
を行うように構成された、請求項１８に記載の装置。
【請求項２０】
前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの１つを備える、請求項１１に記載の装置。
【請求項２１】
前記ビデオエンコーダがワイヤレス通信デバイスの一部を形成する、請求項１１に記載の装置。
【請求項２２】
前記ビデオエンコーダが集積回路デバイスを備える、請求項１１に記載の装置。
【請求項２３】
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間するための手段と、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用するための手段と、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化するための手段と
を備えるビデオ符号化装置。
【請求項２４】
前記ブロックを符号化するための前記手段は、符号化がシングルパスで実行されるように前記ブロックの動き推定を１回のみ実行するための手段を備える、請求項２３に記載の装置。
【請求項２５】
１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択するための手段をさらに備える、請求項２３に記載の装置。
【請求項２６】
前記補間フィルタを選択するための前記手段が、
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断するための手段と、
補間フィルタの第２のセットの第２の補間誤差値を判断するための手段と、
前記第１の誤差値と前記第２の誤差値を比較するための手段と、
前記比較に基づいて前記補間フィルタを選択するための手段と
を備える、請求項２５に記載の装置。
【請求項２７】
前記補間フィルタを選択するための前記手段が、
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積するための手段と、
前記累積された補間誤差値に基づいて前記補間フィルタを選択するための手段と
を備える、請求項２５に記載の装置。
【請求項２８】
前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項２５に記載の装置。
【請求項２９】
前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化するための手段をさらに備える、請求項２５に記載の装置。
【請求項３０】
前記ビデオブロックを符号化するための前記手段が、
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行するための手段と、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断するための手段と、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断するための手段と
を備える、請求項２３に記載の装置。
【請求項３１】
動き推定を実行するための前記手段は、
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行するための手段と、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制するための手段と
を備える、請求項３０に記載の装置。
【請求項３２】
前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの１つを備える、請求項２３に記載の装置。
【請求項３３】
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
をプロセッサに行わせるための命令で符号化されたコンピュータ可読記憶媒体。
【請求項３４】
前記ブロックを符号化することは、符号化がシングルパスで実行されるように前記ブロックの動き推定を１回のみ実行することを備える、請求項３３に記載の記憶媒体。
【請求項３５】
１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択することを前記プロセッサに行わせるための命令をさらに備える、請求項３３に記載の記憶媒体。
【請求項３６】
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断することと、
補間フィルタの第２のセットの第２の補間誤差値を判断することと、
前記第１の誤差値と前記第２の誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと
を前記プロセッサに行わせるための命令をさらに備える、請求項３５に記載の記憶媒体。
【請求項３７】
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
を前記プロセッサに行わせるための命令をさらに備える、請求項３５に記載の記憶媒体。
【請求項３８】
前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項３５に記載の記憶媒体。
【請求項３９】
前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化することを前記プロセッサに行わせるための命令をさらに備える、請求項３５に記載の記憶媒体。
【請求項４０】
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
を前記プロセッサに行わせるための命令をさらに備える、請求項３５に記載の記憶媒体。
【請求項４１】
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
を前記プロセッサに行わせるための命令をさらに備える、請求項４０に記載の記憶媒体。
【請求項４２】
前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの１つを備える、請求項３３に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その全体が参照により本明細書に組み込まれる、２００８年１０月３日に出願された米国仮特許出願第６１／１０２，７８９号の利益を主張する。
【０００２】
本開示は、デジタルビデオコーディングに関し、より詳細には、補間フィルタおよびオフセットが使用されるビデオコーディング技法に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビ、デジタル直接ブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話などを含む、広範囲にわたるデバイスに組み込むことができる。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、またはＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）によって定義された規格、あるいは他の規格に記載されたビデオ圧縮技法などのビデオ圧縮技法を実装して、デジタルビデオ情報をより効率的に送信および受信する。ビデオ圧縮技法では、ビデオシーケンスに固有の冗長性を低減または除去するために空間的予測および／または時間的予測を実行することができる。
【０００４】
イントラコーディングは、空間的予測に依拠して、所与のコード化ユニット内のビデオブロック間の空間的冗長性を低減または除去する。インターコーディングは、時間的予測に依拠して、ビデオシーケンスの連続したコード化ユニット中のビデオブロック間の時間的冗長性を低減または除去する。インターコーディングの場合、ビデオエンコーダが、符号化すべきユニット中のブロックにぴったり一致する予測ブロックを参照ユニット中で識別し、コード化ブロックと予測ブロックとの間の相対変位を示す動きベクトルを生成するために、動き推定および補償を実行する。コード化ブロックと予測ブロックとの間の差は残差情報を構成する。したがって、インターコード化ブロックは、１つまたは複数の動きベクトルおよび残差情報によって特徴づけることができる。
【０００５】
いくつかのコーディングプロセスでは、動きベクトルは、ビデオコーダが整数ピクセル値よりも高い精度で動きを追跡することを可能にする、分数ピクセル値を有することがある。分数ピクセル値を用いた予測ブロックの識別をサポートするために、エンコーダは、参照ユニットに補間演算を適用して、クォーターピクセル位置またはハーフピクセル位置などのサブピクセル位置において値を生成する。Ｈ．２６４規格は、サブピクセル位置に対して固定補間方式の使用を指定する。場合によっては、コーディング効率および予測品質を改善するために、様々な補間フィルタを選択することができる。たとえば、エンコーダは、固定補間フィルタまたは適応補間フィルタの異なるセットを選択的に適用することができる。また、予測の品質をさらに改善するために、エンコーダは、補間後のサブピクセル位置値にオフセットを追加することができる。
【発明の概要】
【０００６】
一般に、本開示は、補間フィルタとオフセットとを使用してデジタルビデオデータを符号化するための技法について説明する。エンコーダは、フレームまたはスライスなど、以前に符号化されたビデオユニットについて得られた履歴補間結果に基づいて、サブピクセル精度動き推定の補間フィルタを選択するように構成できる。エンコーダはまた、参照ユニットとコーディングすべきユニットとの間のユニットおよび／またはブロック差に基づいて、補間後のサブピクセル位置に対するオフセットを計算し、割り当てるように構成できる。オフセットの計算および割当ては動き推定の前に実行できる。
【０００７】
さらに、動き探索が、オフセットが以前に追加されたサブピクセル位置を検討し、０でないオフセットを有するサブピクセル位置を評価するように、動き推定を改良することができる。場合によっては、所与のユニットのための補間フィルタ選択、オフセット計算、および／または改良された動き推定は、シングル符号化パスで実行できる。エンコーダは、いくつかの例では、１つまたは複数の以前に符号化されたユニットについての履歴情報が与えられれば、各サブピクセル位置において最も低い補間誤差を与える補間フィルタをエンコーダが選択できるように、各ユニット上の各補間フィルタおよび各サブピクセル位置についての誤差を累積することができる。
【０００８】
一例では、本開示は、現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、現在ビデオユニットの動き推定を実行する前に、参照ビデオユニットのサブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、参照ビデオユニットに基づく動き推定を使用して現在ビデオユニットのブロックを符号化することとを備えるビデオ符号化方法を提供する。
【０００９】
別の例では、本開示は、現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、現在ビデオユニットの動き推定を実行する前に、参照ビデオユニットのサブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、参照ビデオユニットに基づく動き推定を使用して現在ビデオユニットのブロックを符号化することとを行うように構成されたビデオエンコーダを備えるビデオ符号化装置を提供する。
【００１０】
追加の例では、本開示は、現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、現在ビデオユニットの動き推定を実行する前に、参照ビデオユニットのサブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、参照ビデオユニットに基づく動き推定を使用して現在ビデオユニットのブロックを符号化することとをプログラマブルプロセッサに行わせるための命令で符号化されたコンピュータ可読記憶媒体を提供する。
【００１１】
場合によっては、ブロックを符号化することは、符号化がシングルパスで実行されるようにブロックの動き推定を１回のみ実行することを備えることができる。１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタのセットを選択することができる。それらの補間フィルタは、それぞれのサブ整数ピクセルに対応し、それらの補間フィルタは、サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む。オフセットは、フレーム単位またはブロック単位で決定できる。
【００１２】
１つまたは複数の例の詳細を添付の図面および以下の説明において示す。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】例示的なビデオ符号化および復号システムを示すブロック図。
【図２】補間およびオフセットを用いたビデオ符号化を実行するように構成されたビデオエンコーダの一例を示すブロック図。
【図３】図２のエンコーダによって符号化されたビデオデータを復号するように構成されたビデオデコーダの一例を示すブロック図。
【図４】予測データに関連する整数ピクセルロケーションと、補間予測データに関連するサブ整数ピクセルロケーションとを示す概念図。
【図５】オフセット値の割当てとともに参照ユニットの整数ピクセルロケーションを示す概念図。
【図６】オフセット値の割当てとともに参照ユニットの整数ピクセルロケーションを示す概念図。
【図７】オフセット値の割当てとともに参照ユニットの整数ピクセルロケーションを示す概念図。
【図８】補間およびオフセットを用いてビデオデータを符号化する際のビデオエンコーダの例示的な動作を示すフローチャート。
【図９】現在ユニットのサブピクセルの補間値を計算するために、履歴ユニットに対する補間フィルタの最適なセットを識別するための例示的な方法を示すフローチャート。
【詳細な説明】
【００１４】
本開示は、補間とオフセットとを使用してデジタルビデオデータを符号化するための技法について説明する。たとえば、エンコーダは、コーディングすべきユニットの動き推定をサポートするために、補間フィルタを選択し、参照ビデオユニット中のサブピクセル位置にオフセットを割り当てるように構成できる。コード化ユニットは、たとえば、マクロブロックなどのビデオブロックを含むビデオフレームまたはスライスとすることができる。フィルタおよびオフセットは、コーディングがシングルパスで実行され得るように、１つまたは複数の以前にコーディングされたユニットの履歴補間結果に基づいて、所与のユニットの動き推定に先だって選択できる。したがって、場合によっては、ブロックを符号化することは、符号化がシングルパスで実行されるように、ブロックの動き推定を１回のみ、すなわち、１度のみ実行することを備えることができる。
【００１５】
ビデオデータをシングルパスで符号化することは、コーディングすべきユニット中の所与のブロックに動き推定を１回のみ適用することを必要とする。動き推定および補償を１回実行してそれぞれのサブピクセル位置の補間フィルタを選択し、次いで選択された補間フィルタを再び適用する代わりに、エンコーダは、１つまたは複数の以前に符号化されたユニットのサブピクセル位置について得られた履歴補間結果に基づいて補間フィルタを選択することができる。
【００１６】
さらに、エンコーダは、コーディングすべきユニットの動き推定が実行される前に、補間サブピクセル位置に対するオフセットを計算し、割り当てるように構成できる。オフセットは、参照ユニットとコーディングすべきユニットとの間のユニットおよび／またはブロック差に基づいて判断できる。いくつかの例では、補間およびオフセットの選択後に、サブピクセル位置に以前に追加されたオフセットを検討し、０でないオフセット値を有するサブピクセル位置を評価するように動き探索が強制されるように、動き推定を改善することができる。いくつかの実装形態では、これらの特徴の組合せにより、向上した処理速度で、ほとんどまたはまったくパフォーマンスロスなしに、符号化をシングルパスで実行することが可能になり得る。
【００１７】
場合によっては、ビデオエンコーダは、現在ユニットＮの参照ユニットとして使用されるコード化ユニットなど、以前にコーディングされたユニット（たとえば、Ｎ−１）の動き推定によって生成された補間誤差に基づいて、現在ユニットＮの動き推定のために使用すべき補間フィルタを選択することができる。一例として、以前にコーディングされた参照ユニットＮ−１が符号化された後、参照ユニットＮ−１中のブロックと以前の参照ユニット（たとえば、Ｎ−２）中のブロックとの間の補間誤差が、サブピクセル位置の各々において判断され得る。ユニットＮ−１のこの履歴誤差情報を使用して、ビデオエンコーダは、誤差値を低減したであろう最適な補間フィルタを選択し、次いでそれらの補間フィルタを使用して、ユニットＮの動き推定において使用するためのユニットＮ−１中のサブピクセル値を補間することができる。
【００１８】
他の場合には、サブピクセル動き推定に使用するために選択され得る補間フィルタのセットを仮定すれば、ビデオエンコーダは、各補間フィルタおよび各サブピクセル位置について、以前に符号化されたユニットとその１つまたは複数の参照ユニットとの間の補間誤差（すなわち、フレームＮ−１、Ｎ−２、Ｎ−３などの上でのサブピクセル位置の累積補間誤差値）を累積することができる。この累積補間誤差値は、コーディングすべき次のユニットの動き推定において使用すべき参照ユニット中のサブピクセル位置の補間のための補間フィルタを選択するために使用され得る履歴補間結果として、役立つことができる。たとえば、所与のサブピクセル位置について、補間のために、最も低い累積誤差値をもつ補間フィルタを選択することができる。
【００１９】
オーバーフローを防止し、より以前にコーディングされたユニットよりもより最近コーディングされたユニットの寄与により重く重み付けするウィンドウ効果をもたらすために、累積誤差値を時間とともにスケールダウンすることができる。たとえば、所与のサブピクセル位置に適用される各補間フィルタの累積誤差値は、一連の複数のコード化ユニット上のそれぞれの補間フィルタおよびサブピクセル位置についての個々の誤差値の重み付け和とし、より最近にコーディングされたユニットの誤差値はより重く重み付けされ得る。エンコーダは、各ユニットのコーディングの後に誤差値を評価し、それぞれのサブピクセル位置について最も低い累積誤差を生じる補間フィルタを選択することができる。
【００２０】
したがって、補間フィルタを選択するために、ビデオエンコーダは、１つの以前にコーディングされたビデオユニットまたは複数の以前にコーディングされたビデオユニットの履歴補間誤差に依拠することができる。特に、上記で説明したように、ビデオエンコーダは、以前にコーディングされたユニットの最適な補間誤差を生成したであろう補間フィルタのセットを選択し、それらの補間フィルタのセットを適用して、現在のコード化ユニットの動き推定を実行することができる。この意味では、以前にコーディングされたユニットの動き推定において、最適な結果を生成したであろう補間フィルタが使用されている場合、現在ユニットの動き推定はそれらの補間フィルタを使用して実行される。代替的に、上記で説明したように、ビデオエンコーダは、一連のユニット上で累積誤差値を生成した補間フィルタを選択することができる。各場合において、ビデオエンコーダは、１つまたは複数の以前にコーディングされたユニットの履歴補間結果に依拠する。
【００２１】
たとえば、異なるビデオコーディングユニット間の照度変化を補償するために、補間ピクセル値にＤＣオフセット値を適用することができる。ＤＣオフセットは、フレーム中のすべてのピクセルが同じＤＣオフセットを使用するようにフレームレベルで適用するか、またはサブピクセル位置レベルで個々に適用することができる。ＤＣオフセット値の計算および割当ては、参照ユニットと符号化すべき現在ユニットとの間のＤＣフレームおよびブロック差に基づくことができる。計算は、符号化すべき現在ユニットの動き推定が実行される前に「アプリオリ（“a priori”）」ベースで実行できる。現在ユニットと参照ユニットとの間のＤＣフレームおよびブロック差を分析することによって、いかなる動きベクトル情報も利用できないとき、現在ユニットを符号化する前にオフセットを適用することができ、シングルパス符号化が可能になる。
【００２２】
Ｈ．２６４規格に従って実行するように構築されたエンコーダなど、いくつかのビデオエンコーダは、複数の以前に符号化され、送信されたフレームからフレームを予測することができる。これらの参照フレームは、一般に１つまたは２つのリスト中に記憶され、各リストは、正の整数でインデックス付けされたいくつかのフレームを含むことができる。一般に、０（２つのリストが使用される場合は各リスト中で１）でインデックス付けされたフレームは、時間的に現在フレームにより近いフレームである。本開示で説明する手順を用いて判断されるサブピクセルオフセットは、一般に、現在フレームに最も近い参照フレーム（インデックス０でインデックス付けされたフレーム）のみに使用される。他のすべてのフレーム上では、サブピクセル位置とは無関係に、単純なＤＣオフセットが使用され得る。このオフセットは、参照フレームと現在フレームとの間の視感度の差として計算でき、現在フレーム上に適用できる。
【００２３】
サブピクセル位置に以前に追加されたＤＣオフセットを考慮に入れ、動き探索において０でないＤＣオフセットを有するサブピクセル位置の評価を強制するように、改良された動き推定プロセスを適用することができる。予測動き推定は、コーディングすべきブロックに対応する可能性がより高いロケーションを予測することと、探索をパターンに構造化することとによって、動き探索の複雑さを低減することができる。しかしながら、予測動き推定プロセスは、ＤＣオフセット値が割り当てられたいくつかのサブピクセル位置をテストすることをスキップし得る。この制限は、ひずみの推定中に定義されたＤＣオフセットをもつサブピクセル位置を明示的に探索する動き探索を行うことによって、克服できる。このようにして、動き探索は、０でないオフセットを有するサブピクセル位置が明示的に探索されることを必要とするように構成できる。
【００２４】
さらに、動き探索は、仮想ブロックＤＣオフセットを計算するように構成できる。たとえば、動き探索中に計算されるＳＡＤ誤差は、すべての可能なオフセットを考慮に入れることができる。動き探索は、オフセットを適用する前にブロックを比較する（ブロック間のＳＡＤ誤差を計算する）。この可能性を考慮に入れるために動き探索を使用できるよう計算されたオフセットを、動き探索に与えることによって、パフォーマンスを改善することが可能であり得る。たとえば、以下の表１に示すように、それぞれの位置に対してサブピクセルオフセットを使用しなければならないとアルゴリズムが判断した場合、毎回、「仮想」オフセット｛−２，−１，０，１，２，３｝のうちの１つを参照ブロックに追加した後に、２つのブロックのＳＡＤの計算を６回計算することができる。
【表１】
2014042273.tif 000003
【００２５】
最小のＳＡＤを有する動きベクトルを選択することができる。２つ以上の位置に現れるオフセット値（たとえば、サブピクセル位置１とサブピクセル位置１１の両方に現れるオフセット「２」）は１回のみ試みることができる。すなわち、動き推定ユニットは、各々が同じ計算されたオフセット値を有している複数のサブピクセルのうちの１つのみを探索することができる。
【００２６】
図１は、本開示の技法を実装することができる例示的なビデオ符号化および復号システム１０を示すブロック図である。図１に示すように、システム１０は、通信チャネル１５を介して符号化ビデオを宛先デバイス１６に送信するソースデバイス１２を含む。ソースデバイス１２および宛先デバイス１６は、ワイヤードデバイスとワイヤレスデバイスとを含む、広い範囲のデバイスのいずれかを備えることができる。場合によっては、ソースデバイス１２および宛先デバイス１６は、いわゆるセルラー無線電話または衛星無線電話のワイヤレスハンドセットなどのワイヤレス通信デバイス、または通信チャネル１５を介してビデオ情報を伝達することができ、その場合、通信チャネル１５がワイヤレス通信媒体を含む任意のワイヤレスデバイスを備えることができる。
【００２７】
図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、変調器／復調器（モデム）２２と、送信機２４とを含むことができる。宛先デバイス１６は、受信機２６と、モデム２８と、ビデオデコーダ３０と、表示デバイス３２とを含むことができる。ソースデバイス１２のビデオエンコーダ２０は、本開示においてビデオ符号化プロセスの一部として説明する１つまたは複数のコーディング技法を適用するように構成できる。同様に、宛先デバイス１６のビデオデコーダ３０は、本開示においてビデオ復号プロセスの一部として説明する１つまたは複数のコーディング技法を適用するように構成できる。
【００２８】
本開示で説明する符号化技法は、サブピクセル解像度への動き補償補間をサポートする任意の符号化デバイスによって実行できる。図１の例では、ソースデバイス１２は、宛先デバイス１６に送信するためのコード化ビデオデータを生成する。デバイス１２、１６は、デバイス１２、１６の各々がビデオ符号化および復号構成要素を含むように実質的に対称的に動作することができる。したがって、システム１０は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話通信のために、ビデオデバイス１２とビデオデバイス１６との間の一方向または双方向のビデオ送信をサポートすることができる。
【００２９】
ソースデバイス１２のビデオソース１８は、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、またはビデオコンテンツプロバイダからのビデオフィードなど、ビデオキャプチャデバイスを含むことができる。さらなる代替として、ビデオソース１８は、ソースビデオとしてのコンピュータグラフィックベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成することができる。場合によっては、ビデオソース１８がビデオカメラである場合、ソースデバイス１２および宛先デバイス１６は、いわゆるカメラ付き携帯電話またはビデオ電話を形成することができる。各場合において、キャプチャされたビデオ、あらかじめキャプチャされたビデオ、またはコンピュータ生成ビデオをビデオエンコーダ２０によって符号化することができる。符号化ビデオデータは、通信規格に従ってモデム２２によって変調し、送信機２４を介して宛先デバイス１６に送信できる。モデム２２は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含むことができる。送信機２４は、増幅器、フィルタ、および１つまたは複数のアンテナを含め、データを送信するために設計された回路を含むことができる。
【００３０】
宛先デバイス１６の受信機２６はチャネル１５を介して情報を受信し、モデム２８はその情報を復調する。ビデオデコーダ３０によって実行されるビデオ復号プロセスは、デバイス１２から受信されたビデオデータを復号し再生するために、補間フィルタ、オフセット値、動きベクトルおよび残差情報を利用することができる。たとえば、チャネル１５を介して通信される情報は、特定のフレーム、スライスおよびブロックについてビデオエンコーダ２０によって定義されたオフセット情報を含むことができる。表示デバイス３２は、復号ビデオデータをユーザに対して表示するもので、陰極線管、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプの表示デバイスなど、様々な表示デバイスのいずれかを備えることができる。
【００３１】
図１の例では、通信チャネル１５は、無線周波数（ＲＦ）スペクトルあるいは１つまたは複数の物理的伝送線路など、ワイヤレスまたは有線の任意の通信媒体、あるいはワイヤレスおよび有線の媒体の任意の組合せを備えることができる。通信チャネル１５は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成することができる。通信チャネル１５は、一般に、ビデオデータをソースデバイス１２から宛先デバイス１６へ送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル１５は、ソースデバイス１２から宛先デバイス１６への通信を可能にするのに有用なルータ、スイッチ、基地局、または任意の他の機器を含むことができる。
【００３２】
ビデオエンコーダ２０およびビデオデコーダ３０は、代替的にＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）として説明されるＩＴＵ−Ｔ  Ｈ．２６４規格など、ビデオ圧縮規格に従って動作することができる。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。図１には示されていないが、いくつかの態様では、ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれオーディオエンコーダおよびデコーダと統合でき、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を扱うことができる。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットはＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠することができる。
【００３３】
ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４（ＡＶＣ）規格は、Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）として知られる共同パートナーシップの成果として、ＩＳＯ／ＩＥＣ  Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）とともにＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）によって策定された。いくつかの態様では、本開示で説明する技法は、一般にＨ．２６４規格に準拠するデバイスに適用できる。Ｈ．２６４規格は、ＩＴＵ−Ｔ  Ｓｔｕｄｙ  Ｇｒｏｕｐによる２００５年３月付けのＩＴＵ−Ｔ勧告Ｈ．２６４「Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  ｆｏｒ  ｇｅｎｅｒｉｃ  ａｕｄｉｏｖｉｓｕａｌ  ｓｅｒｖｉｃｅｓ」に記載されており、本明細書ではＨ．２６４規格またはＨ．２６４仕様、あるいはＨ．２６４／ＡＶＣ規格または仕様と呼ぶ。Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）はＨ．２６４／ＭＰＥＧ−４  ＡＶＣへの拡張の取り組みを続けている。
【００３４】
ビデオエンコーダ２０およびビデオデコーダ３０は、それぞれ、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せとして実装できる。ビデオエンコーダ２０およびビデオデコーダ３０の各々を１つまたは複数のエンコーダまたはデコーダ中に含めることができ、そのいずれも複合エンコーダ／デコーダ（コーデック）の一部としてそれぞれモバイルデバイス、加入者デバイス、ブロードキャストデバイス、サーバなどに統合できる。
【００３５】
ビデオシーケンスは、一般に一連のビデオフレームを含む。ビデオエンコーダ２０は、ビデオデータを符号化するために個々のビデオフレーム内のビデオブロック上で動作する。ビデオブロックは、サイズを固定することも変更することもでき、指定のコーディング規格に応じてサイズが異なることがある。各ビデオフレームは一連のスライスを含む。各スライスは一連のマクロブロックを含むことができ、それらの一連のマクロブロックはサブブロック中に配置できる。一例として、ＩＴＵ−Ｔ  Ｈ．２６４規格は、ルーマ（luma）成分については１６×１６、８×８、または４×４、およびクロマ成分については８×８など、様々なブロックサイズのイントラ予測をサポートし、かつ、ルーマ成分については１６×１６、１６×８、８×１６、８×８、８×４、４×８および４×４、およびクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。ビデオブロックは、ピクセルデータのブロック、または、たとえば離散コサイン変換もしくは概念的に同様の変換プロセスなどの変換プロセスの後の変換係数のブロックを備えることができる。
【００３６】
ビデオブロックは、小さいほどより良い解像度が得られ、高い精細レベルを含むビデオユニットの位置に使用することができる。一般に、マクロブロックおよび様々なサブブロックはビデオブロックであると見なすことができる。さらに、スライスまたはフレームは、マクロブロックおよび／またはサブブロックなどの一連のビデオブロックを備えるビデオユニットであると見なすことができる。各フレームはビデオシーケンスの単独で復号可能なユニットであり、各スライスはビデオフレームの単独で復号可能なユニットであるとすることができる。「コード化ユニット」という用語は、フレーム全体、フレームのスライス、または適用可能なコーディング技法に従って定義された別の単独で復号可能なユニットなど、単独で復号可能な任意のユニットを指す。
【００３７】
予測コーディングの後、およびＨ．２６４／ＡＶＣまたは離散コサイン変換（ＤＣＴ）において使用される４×４または８×８整数変換などの任意の変換に続き、量子化を実行することができる。量子化は、一般に、係数を表すために使用されるデータ量を低減するために係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、量子化中に１６ビット値を１５ビット値に切り詰めることができる。量子化の後、たとえば、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、または別のエントロピーコーディングプロセスに従ってエントロピーコーディングを実行することができる。
【００３８】
本開示の技法によれば、ビデオエンコーダ２０は、補間フィルタとオフセット値とを使用してビデオユニットをシングルパスで符号化することができる。したがって、場合によっては、ブロックを符号化することは、符号化がシングルパスで実行されるようにブロックの動き推定を１回のみ実行することを備えることができる。一例では、ビデオエンコーダ２０は、固定の係数をもつ補間フィルタのセットを含むことができる。すなわち、補間フィルタのセットは、エンコーダが係数を動的に判断するであろう適応フィルタを必ずしも含む必要はない。代わりに、エンコーダ２０は、複数の代替固定補間フィルタから各サブピクセル位置の補間フィルタを選択することができる。
【００３９】
異なるサブピクセル位置の補間には異なる補間フィルタを選択することができる。各サブ整数ピクセル位置は、デフォルト補間フィルタと、履歴補間結果に基づいてそれぞれのサブ整数ピクセル位置を補間するために選択され得る複数の他の補間フィルタとを有することができる。ビデオエンコーダ２０は、それぞれのサブ整数ピクセル位置のデフォルト補間フィルタを使用して最初に参照ユニットのサブ整数ピクセル値を計算することによって、第１のインターコード化ビデオユニット、たとえば、第１のＰフレームのマクロブロックを符号化することができる。
【００４０】
参照ユニット中のサブ整数ピクセル値が補間されると、ビデオエンコーダ２０は、参照ユニットの整数と分数の両方のサブピクセル位置を利用して、符号化されている次のＰフレームのマクロブロックの動きベクトルを計算することができる。特に、ビデオエンコーダ２０は、たとえば、絶対値差分和（ＳＡＤ）、平方差分和（ＳＳＤ）などのピクセル差分計算に基づいて、コーディングされている現在ユニット中のそれぞれのブロックに最もぴったり一致する以前にコーディングされた参照ユニット中のブロックを探索することができる。
【００４１】
参照ユニット中の予測ブロックに対してコーディングすべき第１のＰユニットの各マクロブロックの動きベクトルを生成した後、ビデオエンコーダ２０は、たとえば、予測マクロブロック（すなわち、参照ユニットの参照マクロブロック）とＰユニットの実際のマクロブロックとの間のピクセル値の差に基づいて、第１のＰユニットの各マクロブロックの誤差値を判断することができる。上記で説明したように、誤差値は、たとえば、絶対値差分和（ＳＡＤ）または平方差分和（ＳＳＤ）の値を備えることができる。
【００４２】
次いで、ビデオエンコーダ２０は、補間フィルタの異なるセットがより低い誤差値をもたらしたであろうかどうかを判断することができる。特に、ビデオエンコーダ２０は、それぞれのサブピクセル位置について、参照マクロブロックのサブ整数ピクセル値の値を再計算し、動きベクトルによって識別される再計算マクロブロックの誤差値を計算することによって、最も低い誤差値になったであろう補間フィルタを識別することができる。次いで、ビデオエンコーダ２０は、どの補間フィルタが、各サブ整数ピクセル位置のユニットについての最も低い絶対誤差値または最も低い平均誤差値を与えたかを判断することができる。
【００４３】
このようにして、ビデオエンコーダ２０は、参照ユニットのために最適な結果を生成したであろう補間フィルタに基づいて現在ユニットのために使用される参照ユニットのサブ整数ピクセル位置を補間するための補間フィルタを選択することができる。いくつかの例では、ビデオエンコーダ２０は、さらに、一連の符号ユニットにわたって各サブ整数ピクセル位置における各補間フィルタの累積誤差値を計算することができる。ビデオエンコーダ２０は、累積誤差値を使用して、サブ整数ピクセル位置に履歴的に最適な値を与える補間フィルタを選択することができる。
【００４４】
ビデオエンコーダ２０は、先行フレームについて、または一連の先行フレームにわたって、いずれの補間フィルタが最も低い誤差値を生じたかを識別することができる。誤差値は、フレームの一連にわたって各補間フィルタおよび各サブピクセル位置について追跡できる。各サブピクセル位置はそれぞれの補間フィルタを用いて計算できる。複数の補間フィルタが各サブピクセル位置についての選択に利用できることがある。複数のそれぞれのサブピクセル位置の補間をサポートするために補間フィルタのセットを選択することができる。
【００４５】
一例では、ビデオエンコーダ２０がＰフレームまたはＢフレームなどの次の予測ユニットを符号化する前に、ビデオエンコーダ２０は、以前に符号化されたユニットの（１つまたは複数の）参照ユニットについて最も低い誤差値をもたらしたであろう補間フィルタを使用して、以前に符号化されたユニットのサブ整数ピクセルの値を計算する。同様に、後続の各インターコード化フレームについて、ビデオエンコーダ２０は、いずれの補間フィルタがその参照ユニットの最も低い誤差値をもたらしたであろうかを識別することができ、そして、最も最近符号化されたユニットのサブ整数ピクセルの値を計算するためにそれらの補間フィルタを最も最近符号化されたユニットに適用し、次いで、それらの値が動き推定の参照フレームとして使用されることになる。
【００４６】
場合によっては、ビデオエンコーダ２０は、いずれの補間フィルタが、一連のコード化ユニットにわたって各サブピクセル位置の最も低い履歴累積補間誤差値を有するかを識別することができる。複数の補間フィルタの各々によって各サブピクセル位置について生成された誤差値を追跡することにより、コーディングすべき次のフレームの動き推定をサポートするように、それぞれのサブピクセル位置について最も低い誤差値を生成した補間フィルタを補間のために選択することができる。このようにして、ビデオエンコーダ２０は、以前にコーディングされたフレームの履歴補間結果に基づいてサブピクセル位置の補間フィルタを選択することができる。ビデオエンコーダ２０によって分析される履歴補間結果は、いくつかのユニットの補間誤差を、または、場合によっては単一ユニットの補間誤差のみを考慮に入れることができる。特に、ビデオエンコーダ２０は、複数のフレームにわたる累積誤差結果を分析するか、または単に現在ユニットＮの参照ユニット（たとえば、Ｎ−１）と以前の参照ユニットＮ−２との間の補間誤差を分析することができる。
【００４７】
一例として、補間すべきｎ個のサブピクセル位置と、そのｎ個のサブピクセル位置の各々を補間するために選択され得るｍ個の異なる補間フィルタとがある場合、ビデオエンコーダ２０はｎ×ｍ個の異なる誤差値を計算することができる。各誤差値は、コーディングすべき以前のユニット中の実際のピクセル値に対する、ｍ個の補間フィルタのうちの所与の１つに従って計算されたｎ個のサブピクセル位置値のうちの所与の１つに対する誤差値を表すことができる。ブロック単位で、誤差値は、コーディングすべきブロックのピクセル値と、補間フィルタの所与のセットを使用して生成された補間予測ブロック中のサブピクセル位置のピクセル値との間の、ピクセル値の差に基づくことができる。サブピクセル位置の補間フィルタは、フレーム上のすべての対応するサブピクセル位置に適用できる。同様に、各補間フィルタおよびサブピクセル位置の誤差値がフレーム上で与えられ得る。たとえば、誤差値は、所与のフレームの平均値または中間値あるいは合計値とすることができる。
【００４８】
上述のように、一連のユニットにわたって各サブピクセル位置および補間フィルタの誤差値を累積して、補間フィルタとサブピクセル位置の各組合せの累積誤差値を生成することができる。場合によっては、一連のユニットにわたる誤差値は重み付け和を使用して合計でき、より最近コーディングされたフレームの誤差値が、コーディングすべき現在フレームに対して以前にコーディングされたフレームよりも重く重み付けされる。
【００４９】
一例として、コーディングすべきユニットについて、累積誤差値は、コーディングすべきユニットの直前の、ウィンドウ中の最初のユニットからウィンドウ中の最後のユニットまでの重み付けされた誤差値を合計し、より以前のユニットの誤差値は、より後のユニットの誤差値よりも小さい重み付け係数で重み付けされるように、スライディングウィンドウを使用することができる。重み付け係数は、より初期にコーディングされたユニットからより低いコード化ユニットに漸進的に増加することができる。さらに、累積誤差は、オーバーフローを防止するために周期的にスケールダウンできる。より以前にコーディングされたユニットの誤差値は、ウィンドウ外に出るにつれて最終的にフェーズアウトされ得る。
【００５０】
現在ユニットをコーディングするための特定のサブピクセル位置の特定の補間フィルタを選択するために、ビデオエンコーダ２０は、以前にコーディングされたユニットの範囲にわたってその補間フィルタおよびサブピクセル位置の誤差値の重み付け和を評価することができる。次いで、所与のサブピクセル位置について最も低い累積誤差を生じる補間フィルタを、コーディングすべき次のユニットのためのそのサブピクセル位置の補間に使用すべき補間フィルタとして選択することができる。
【００５１】
所与のサブピクセル位置について選択した補間フィルタは、コーディングユニットにわたってブロック中の対応するサブピクセル位置におけるすべてのピクセルのための補間フィルタとして使用できる。特に、選択したフィルタは、コーディングすべき次のユニットの動き探索をサポートするために、参照ユニット中のそのサブピクセル位置を補間するために使用される。各ブロック中にｎ個のサブピクセル位置がある場合、エンコーダ２０は、それぞれのサブピクセル位置についてｎ個の異なる補間フィルタのセットを選択することができる。ユニットの各ブロック中のサブピクセル位置には補間フィルタの同じセットを使用することができる。
【００５２】
補間の後に、および動き推定より前に、ビデオエンコーダ２０は、補間されたサブピクセル位置におけるピクセル値にオフセット値を適用することもできる。ビデオエンコーダ２０は、フレーム、またはスライスなどのフレームの単独で復号可能な部分など、ビデオデータのコード化ユニットについて複数のオフセット値を計算することができる。異なるオフセット値は、ビデオブロックに関連付けられた複数の異なる整数およびサブ整数ピクセルロケーションに関連し得る。サブ整数ピクセルロケーションは、整数ピクセルロケーションにおけるデータに基づいて、上記で説明したように、補間（interpolated）または外挿（extrapolated）された、一般的には補間された、データのロケーションを定義することができる。ビデオエンコーダ２０は、予測ビデオブロック中の整数ピクセル位置およびサブピクセル位置にオフセット値を適用してオフセット予測ビデオブロックを生成し、そのオフセット予測ビデオブロックに基づいてコード化ユニットのビデオブロックを符号化することができる。
【００５３】
ビデオエンコーダ２０はまた、コード化ユニットのコード化ビデオブロックを含むコード化ビットストリームの一部としてオフセット値を符号化し、ソースデバイス１２の送信機２４は、コード化ビットストリームを宛先デバイス１６の受信機２６に送信することができる。特に、ビデオエンコーダ２０は、予測ビデオブロックのピクセル値を調整することによってオフセット値を適用することができ、オフセット予測ビデオブロックに基づいて残差を生成することによってオフセット予測ビデオブロックに基づいてビデオブロックを符号化することができる。たとえば、残差は、適切なオフセット予測ビデオブロックからコーディングすべきブロックを減算することによって生成できる。オフセットは、予測ビデオブロックのロケーションに基づいて、オフセット予測ビデオブロックのピクセル値に追加されるので、たとえば、フラッシュまたは背景照明の変化中に、コーディング効率を向上させることができる。
【００５４】
コーディングすべきユニットの動き探索を実行するとき、ビデオエンコーダ２０は参照コーディングユニット中の予測ブロックを識別する。場合によっては、動き探索アルゴリズムは、いくつかのサブピクセル値をスキップするように構成できる。特に、一部の予測動き推定は、コーディングすべきブロックに対応する可能性がより高いロケーションを予測することと、探索をパターンに構造化することとによって、動き探索の複雑さを低減することができる。しかしながら、予測動き推定プロセスは、ＤＣオフセット値が割り当てられたいくつかのサブピクセル位置をテストすることをスキップし得る。動き探索は０でないオフセット値を有するサブピクセル位置を明示的に探索するものである、という要件を課すことによって、ビデオエンコーダ２０は、予測動き推定プロセスにおけるこの制限を克服するように構成できる。
【００５５】
宛先デバイス１６において、ビデオデコーダ３０は、ビデオデータと、ビデオデータの各コード化ユニットの複数のオフセット値とを符号化するために使用される補間フィルタの識別子を受信する。たとえば、これらの識別子は、コード化ビットストリーム中に与えられた、フレームヘッダまたはスライスヘッダなどのユニットヘッダ中のシンタックス要素としてビデオエンコーダ２０によってコーディングできる。ビデオデコーダ３０は、ビデオエンコーダ２０と同じ補間フィルタのセットのパラメータを記憶することができる。ビデオデコーダ３０は、ビデオエンコーダ２０によって識別された補間フィルタを適用して予測ビデオブロックのサブ整数ピクセルの値を計算し、オフセット値を予測ビデオブロックに適用してオフセット予測ビデオブロックを生成し、そのオフセット予測ビデオブロックに基づいてコード化ユニットのビデオブロックを復号する。
【００５６】
特に、動きベクトルおよび補間フィルタを使用して、ビデオデコーダ３０は、復号すべきユニット中のそれぞれのブロックの予測ブロックを取得し、予測ブロックに残差情報を加算して、復号ユニット中の所望のブロックを再生することができる。このようにして、補間フィルタおよびオフセット値は、ビデオエンコーダ２０において符号化プロセスの一部として定義され、適用され、次いで、補間フィルタおよびオフセット値を識別する情報がソースデバイス１２から宛先デバイス１６に符号化ビットストリームの一部として通信される。次いで、ビデオユニットのピクセル値を再構成するために、オフセット値は、ビデオデコーダ３０において復号プロセスの一部として補間予測データに適用される。
【００５７】
図２は、本開示で説明する補間およびオフセット技法を適用することができるビデオエンコーダ２０の一例を示すブロック図である。ビデオエンコーダ２０は、フレームまたはスライスなどのビデオユニット内のブロックのイントラコーディングおよびインターコーディングを実行することができる。ただし、説明しやすいように、図２ではビデオエンコーダ２０のイントラコーディング構成要素を詳細に示していない。イントラコーディングは、空間的予測に依拠して、所与のビデオユニット内のビデオの空間的冗長性を低減または除去する。インターコーディングは、時間的予測に依拠して、ビデオシーケンスの隣接ユニット（たとえば、フレーム）内のビデオの時間的冗長性を低減または除去する。イントラモード（Ｉモード）は空間ベースの圧縮モードを指し、予測（Ｐモード）または双方向（Ｂモード）などのインターモードは、時間ベースの圧縮モードを指す。本開示の技法は、ビデオエンコーダ２０によってインター符号化中に適用できる。
【００５８】
図２に示すように、ビデオエンコーダ２０は、符号化すべきビデオフレーム内の現在ビデオブロックを受信する。図２の例では、ビデオエンコーダ２０は、動き推定ユニット３６と、動き補償ユニット３５と、参照フレームストア３４と、加算器４８と、変換ユニット３８と、量子化ユニット４０と、エントロピーコーディングユニット４６とを含む。ビデオブロック再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット４２と、逆変換ユニット４４と、加算器５１とを含む。再構成されたビデオからブロッキネスアーティファクト（blockiness artifacts）を除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図示せず）を含めることもできる。必要な場合、デブロッキングフィルタは加算器５１の出力をフィルタ処理することができる。
【００５９】
符号化プロセス中に、ビデオエンコーダ２０はコーディングすべきビデオブロックを受信し、動き推定ユニット３６および動き補償ユニット３５はインター予測コーディングを実行する。動き推定ユニット３６と動き補償ユニット３５は高度に一体化できるが、概念的な目的のために別々に示している。動き推定は、一般に、ビデオブロックの動きを推定する、動きベクトルを生成するプロセスと見なされ、参照ユニット中の対応する予測ブロックの識別をもたらす。動きベクトルは、たとえば、現在フレーム（または他のコード化ユニット）内のコーディングされている現在ブロックに対する、予測フレーム（または他のコード化ユニット）内の予測ブロックの変位を示すことができる。動き補償は、一般に、動き推定によって判断された動きベクトルに基づいて予測ブロックをフェッチまたは生成するプロセスと見なされる。ここでも、動き推定ユニット３６と動き補償ユニット３５は機能的に一体化できる。例示のために、動き補償ユニット３５は、本開示の補間フィルタおよびオフセット技法の選択を実行するものとして説明する。
【００６０】
例示のために、フレームの形態のコーディングユニットについて説明する。ただし、スライスなどの他のコーディングユニットを使用することもできる。動き推定ユニット３６は、インターコード化フレームのビデオブロックを参照フレームストア３４中の参照フレームのビデオブロックと比較することによって、そのインター符号化フレームのビデオブロックの動きベクトルを計算する。動き補償ユニット３５は、以前に符号化されたフレーム、たとえば、ＩフレームまたはＰフレーム中の複数のサブピクセル位置の各々におけるピクセル値を計算するために適用すべき複数の補間フィルタ３７のうちの１つを選択する。すなわち、ビデオエンコーダ２０は、ブロック中の各サブピクセル位置の補間フィルタを選択することができる。
【００６１】
選択される補間フィルタは、異なるサブピクセル位置に対して異なることができる。ブロック中の異なるサブピクセル位置に適用される補間フィルタのセットは、参照フレーム中のすべてのブロックに対して同じとすることができる。たとえば、補間フィルタＦ１がブロック中のサブピクセル位置ｘ１、ｙ１のために選択された場合、同じ補間フィルタＦ１を同じフレーム中のすべてのブロック中のその同じサブピクセル位置に使用することができる。サブピクセル位置は、代替的に、サブ整数ピクセル、サブピクセルまたはサブペルと呼ばれることがある。
【００６２】
動き補償ユニット３５は、１つまたは複数の以前に符号化されたフレームの補間誤差履歴に基づいて補間フィルタ３７から補間フィルタを選択することができる。特に、フレームが変換ユニット３８および量子化ユニット４０によって符号化された後、逆量子化ユニット４２および逆変換ユニット４４は以前に符号化されたフレームを復号する。一例では、動き補償ユニット３５は、選択された補間フィルタ３７を以前に符号化されたフレームに適用してフレームのサブ整数ピクセルの値を計算し、参照フレームストア３４に記憶される参照フレームを形成する。
【００６３】
後続フレームについて、動き補償ユニット３５は、その後続フレームのサブ整数ピクセル値を計算するために補間フィルタ３７の異なるセットを適用することができる。異なる補間フィルタの選択は、動き補償ユニット３５が、一連のフレームにわたってそれぞれのサブピクセル位置について最も低い累積誤差値をもつ補間フィルタ３７を選択するように、所与のサブピクセル位置における補間フィルタの各々の累積誤差など、以前に符号化されたフレームの履歴に基づくことができる。誤差値は、所与のフレーム中の実際のピクセル値と参照フレーム中の補間ピクセル値との間の差に基づくことができる。
【００６４】
補間フィルタ３７は複数の補間フィルタを備えることができる。潜在的な各サブ整数ピクセル位置は、対応するピクセル値の計算のために補間フィルタ３７のセットのうちの１つにマッピングされ得る。たとえば、動き補償ユニット３５は、整数ピクセル位置の値に基づいてハーフピクセル位置の値を計算するために係数［１，−５，２０，２０，−５，１］をもつ６タップウィーナフィルタを適用し、整数ピクセル位置の値に基づいてクォーターピクセル位置の値を計算するために双１次フィルタを適用することができる。一例では、ハーフピクセル位置について、６タップウィーナフィルタは、ハーフピクセル位置に適用するためのデフォルトフィルタを備え、双１次フィルタは、クォーターピクセル位置に適用するためのデフォルトフィルタを備えることができる。
【００６５】
さらに、各ピクセル位置は、代替補間フィルタ、たとえば、異なる係数をもつ補間フィルタにマッピングできる。他の補間フィルタは様々な係数を使用して構成され得る。概して、固定の補間フィルタは、それらの係数が異なる（異なる係数は異なる周波数応答を指定する）、および／またはそれらのサポートが異なる（これが１次元または２次元、垂直、水平、または対角であるかどうか）、あるいは補間に使用されるタップ（したがってピクセル）の数が異なることがある。サポートがより大きいと、一般により良好に実行できるが、ピクセルを補間するために行う必要がある乗算および加算に関して複雑さがより高まる。
【００６６】
一例では、各サブ整数ピクセルは、ｍ個の可能な異なる補間フィルタにマッピングでき、１つのサブ整数ピクセル位置のためのｍ個の補間フィルタのうちの少なくともいくつかは、異なるサブ整数ピクセル位置のためのｍ個の補間フィルタとは異なり得る。クォーターピクセル精度では、補間フィルタ３７はｍ＊１５個の一意の補間フィルタを備えることができ、ｍはサブピクセル当たりの補間フィルタの数である。代替的に、一部のサブ整数ピクセルは同じ補間フィルタにマッピングできる。各サブ整数ピクセルのための補間フィルタのうちの少なくとも１つは、対応するサブ整数ピクセルのためのデフォルト補間フィルタとして割り当てることができる。たとえば、補間フィルタの信頼できる選択を可能にするのに十分な履歴補間結果が累積されるまで、デフォルト補間フィルタは最初にビデオシーケンス中で使用され得る。
【００６７】
動き推定ユニット３６は、参照フレームストア３４からの参照フレームのブロックを、現在フレーム、たとえば、ＰフレームまたはＢフレームの符号化すべきブロックと比較する。参照フレームストア３４中の参照フレームはサブ整数ピクセルの補間値を含むので、動き推定ユニット３６によって計算される動きベクトルはサブ整数ピクセルロケーションを参照することができる。動き推定ユニット３６は、計算された動きベクトルをエントロピーコーディングユニット４６と動き補償ユニット３５とに送信する。本開示で説明する技法によれば、動き推定ユニット３６は、ブロック当たり１つの動きベクトルを計算し、動き推定の前に選択された補間フィルタおよびオフセットに基づいて動きベクトルを生成することができる。このようにして、ビデオエンコーダ２０は、シングルパスで、すなわち、コード化ユニットのビデオブロックの動き推定を２回実行することなしにフレーム、スライスおよびブロックなどのユニットを符号化することができる。
【００６８】
シングルパスでの符号化は、初期の補間フィルタおよびオフセットを選択することと、初期の補間フィルタおよびオフセットを使用してビデオを符号化することと、符号化結果に基づいて新しい補間フィルタおよびオフセットを選択することと、次いで、新たに選択した補間フィルタおよびオフセットを用いてフレームを再符号化することとを含むマルチパス符号化プロセスとは対照的である。代わりに、エンコーダ２０は、１つまたは複数の先行フレームの履歴補間結果に基づいて補間フィルタを選択し、現在フレームと１つまたは複数の先行フレームとの間の差に基づいてオフセットを選択し、次いで、選択した補間フィルタとオフセットとを使用して動き推定を実行して、各ブロックの動きベクトルおよび残差情報を生成する。したがって、ビデオエンコーダ２０は、第２または後続のパスにおいて動きベクトルを再計算する必要がなく、それによって符号化プロセスの効率を向上させることができる。代わりに、動き推定を１回実行することができる。動き補償ユニット３５は、参照フレームの予測ブロックと符号化されているフレームの実際のブロックとの間の誤差値を計算し、加算器４８を介して残差ブロック値を生成し、それらの残差ブロック値はビデオエンコーダ２０の変換ユニット３８と量子化ユニット４０とによって符号化される。
【００６９】
一例では、上記で説明したように、動き補償ユニット３５は、いずれの補間フィルタ３７が、以前に符号化された参照フレームのブロックについて最も低い誤差を生じたかを判断することができる。たとえば、動き推定のために補間フィルタの選択セットを使用して参照フレームを符号化した後、動き補償ユニット３５は、いずれの補間フィルタ３７がサブピクセル位置の各々において最も低い誤差値を生じたかを識別することができる。そうするために、動き補償ユニット３５は、補間フィルタの異なるセットを使用して参照フレームを符号化するために生成された予測ビデオブロックのサブ整数ピクセルを再計算することができる。特に、動き推定ユニット３６によって計算された動きベクトルが、参照フレームストア３４中の参照フレームのブロックのサブ整数ピクセルロケーションを参照するとき、動き補償ユニット３５は、他の補間フィルタ３７を使用してブロックのサブ整数ピクセルの値を再計算する。次いで、動き補償ユニット３５は、予測ブロックについて補間フィルタ３７の各々に対応する誤差値を計算する。
【００７０】
動き補償ユニット３５は、いずれの補間フィルタ３７が、符号化されたフレームについて最も低い誤差値をもたらすかを判断する。フレームが補間フィルタのセットを使用してすでに符号化されていても、最も低い補間誤差値を生成したであろう補間フィルタを、符号化後に判断することができ、符号化すべき次のフレームの動き推定を実行するために使用することができる。フレームを符号化し、フレームについて最も低い誤差を生じたであろう補間フィルタ３７のセットを識別した後、動き補償ユニット３５は、参照フレームストア３４にフレームを記憶する前に、選択された補間フィルタを再構成されるフレームに適用することができる。このようにして、動き補償ユニット３５は、先行フレームにとって最適であると判断された補間フィルタ３７のセットを使用して、コーディングすべき次のフレームを符号化するために動き推定に使用できる参照フレーム中のサブ整数ピクセル値を計算することができる。
【００７１】
別の例では、上記で説明したように、動き補償ユニット３５は、各サブピクセル位置における補間フィルタ３７の各々の誤差値を累積し、参照フレームストア３４に記憶すべき新しいフレームについて、動き補償ユニット３５は、それぞれのサブピクセル位置のための最も低い累積誤差をもつ補間フィルタ３７を選択する。このようにして、動き補償ユニット３５は、各フィルタおよび各サブピクセル位置について、以前に符号化されたフレームとそれらの参照との間の補間誤差を累積することができる。上述のように、動き補償ユニット３５は、メモリオーバーフローを防ぎ、補間フィルタ３７のより古い履歴使用よりも補間フィルタの最近の使用により重く重み付けするために、補間フィルタ３７の累積誤差を周期的にスケールダウンすることができる。このようにして、動き補償ユニットは、最も最近のフレームの寄与により重み付けし、最も古いフレームを「忘れる」という「ウィンドウ」効果をもたらすことができる。
【００７２】
補間誤差は、符号化すべきフレームの元のピクセル値と、補間によって生成された予測フレームのピクセル値との間に差に基づいて計算できる。予測フレームは、補間によって生成され、コーディングすべきフレーム中のコーディングすべきブロックに対応する予測ブロックを含むことができる。差は、たとえば、ＳＳＤ、ＳＡＤまたは他の差メトリックによって判断されるものとして、予測ブロックとコード化ブロックの間のピクセル値の差として計算できる。全体的な差値、および各サブピクセル位置における差値を計算するために、異なるメトリックをフレーム中のブロックにわたって合計または平均することができる。以前にコーディングされた参照フレームのサブピクセル位置の各々において最も低い差値を生成したであろう補間フィルタのセットを、参照フレームに対してコーディングすべき次のフレームの動き推定に使用される補間フィルタのセットとして選択することができる。代替的に、コード化ビデオフレームの範囲にわたってそれぞれのサブピクセル位置における最も低い累積差値を生成する補間フィルタを、参照フレームに対してコーディングすべき次のフレームの動き推定に使用することができる。
【００７３】
概して、動き補償ユニット３５は、決定ベクトルＤを計算することによって各サブ整数ピクセルロケーションの補間フィルタを選択することができる。Ｄは長さｎのベクトルとすることができ、ｎは各ピクセルのサブ整数ピクセルロケーションの数に対応する。一例では、ビデオエンコーダ２０がクォーターピクセル精度をサポートする場合、ｎは１５に等しい。Ｄの各要素は、対応するサブ整数ピクセル位置の補間フィルタのうちの１つに対応する。したがって、各サブ整数ピクセルがｍ個の異なる可能な補間フィルタを有する場合、Ｄの各要素は０とｍとの間にわたる。第１の参照フレームについて、Ｄの各要素は「０」に初期化でき、「０」は、対応するピクセル位置のためのデフォルト補間フィルタを指す。動き補償ユニット３５は、それぞれのサブピクセル位置のための対応するデフォルト補間フィルタを使用して第１の参照フレームの各サブピクセル位置の値を計算することができる。
【００７４】
動き推定ユニット３６は、決定ベクトルＤによって識別された補間フィルタを使用して動き補償ユニット３５がサブ整数ピクセル値を計算した参照フレームを参照することによって、後にインターコーディングされるフレームの各コード化ユニットの動きベクトルを計算することができる。動き補償ユニット３５はまた、インターコード化フレームのコスト行列Ｃを計算することができる。一例では、予測コード化フレームについて、コスト行列Ｃは、各サブ整数ピクセルのための補間フィルタに対応する第１の次元Ｆと、サブ整数ピクセルに対応する第２の次元Ｉとを含む。したがって、コスト行列はＣ［Ｆ］［ｉ］として定義でき、ただし、Ｆ＝［０，ｍ］およびＩ＝［０，ｎ］である。Ｃの各要素は、最初は０に設定される。
【００７５】
次いで、動き補償ユニット３５は、インターコード化フレームの各ピクセルと、ピクセルの各補間フィルタとについて、ｆがＦ中にあり、ｉがｉ中にある場合、Ｃ［ｆ］［ｉ］＋＝｜ａｃｔｕａｌ（ｉ）−ｐｒｅｄｉｃｔｅｄ（ｉ，ｆ）｜を計算し、ａｃｔｕａｌ（ｉ）は、インターコーディングすべきフレームのピクセル中のサブピクセルｉに対応するピクセルの実際値であり、ｐｒｅｄｉｃｔｅｄ（ｉ，ｆ）は、対応する動きベクトルによって参照される補間フィルタｆを使用して、たとえば、一例ではＳＡＤ計算を使用して計算されたサブピクセルｉの値である。したがって、Ｃの各要素は、サブピクセルの対応する補間フィルタを使用した対応するサブピクセルロケーションの累積誤差に対応する。
【００７６】
双予測フレームに対して、同様のコスト行列Ｃ2［Ｆ１］［Ｆ２］［ｉ］［ｊ］を計算することができ、ただし、ｉは、Ｆ１のサブピクセルを指し、ｊは、Ｆ２のサブピクセルを指し、Ｆ１は、第１の参照フレーム中のサブピクセル位置ｉを計算するために使用される補間フィルタを指し、Ｆ２は、第２の参照フレーム中のサブピクセル位置ｊを計算するために使用される補間フィルタを指す。次いで、動き補償ユニット３５は、インターコード化フレームと参照フレームとの間の誤差値を、たとえば、ＳＡＤ値として計算することができる。コスト行列ＣからＳＡＤ値を計算するために、動き補償ユニット３５は、以下の式に従って、サブピクセルを計算するために使用されたフィルタを用いて、適用された各サブピクセルロケーションの累積誤差値の合計を計算することができる。
【数１】
2014042273.tif 000004
【００７７】
動き補償ユニット３５は、位置とフィルタの組合せがインターコード化フレームと参照フレームとの間の誤差値の最も大きい低減をもたらし得るように、位置と、その位置に対応する補間フィルタとを判断するために、コスト行列中を反復的に進むことができる。すなわち、動き補償ユニット３５は、上記で計算されるＳＡＤ値に最も大きい低減をもたらす値Ｃ［ｆ］［ｐ］を識別することができる。次いで、動き補償ユニット３５は、判断された補間フィルタｆが、判断されたサブ整数ピクセル位置ｐのために将来使用されるように決定ベクトルを変更することができる。特に、決定ベクトルＤ、サブ整数ピクセル位置ｐ、および補間フィルタｆについて、動き補償ユニット３５はＤ［ｐ］＝ｆを実行することができる。次いで、動き補償ユニット３５は、上記で提示した式を使用して位置ｐにおけるサブ整数ピクセル値を計算するためにフィルタｆが使用されていたかのように、差、たとえば、ＳＡＤを再計算することができる。
【００７８】
動き補償ユニット３５は、差が実質的に変化しなくなる（たとえば、いかなる差も最小しきい値未満になる）か、あるいは最大数の繰返しが実行されるまで、このプロセスを繰り返すことができる。以下の擬似コードに上述のプロセスを要約する。
【数２】
2014042273.tif 000005
【００７９】
いくつかの例では、動き補償ユニット３５は、各参照フレームの誤差を累積して、最も最近の参照フレームのほうを選び、より古い参照フレームを「忘れる」ことができる。そうするために、動き補償ユニット３５は、上記で説明したように特定のフレームのコスト行列を計算するが、さらにそのコスト行列に対して、以前にコーディングされたフレームのより以前のコスト行列の値の分数重み付けを加算することができる。たとえば、以前にコーディングされたフレームのコスト行列Ｃと、その参照フレームのコスト行列ＣREFとについて、動き補償ユニット３５は、Ｃ＝Ｃ＋（１／ｎ）＊ＣREFを計算することができる。この場合、ｎは、好ましくは１よりも大きい任意の整数とすることができる。このようにして、動き補償ユニット３５は、オーバーフローを回避し、補間フィルタを選択する際により新しい参照フレームのコスト計算を選好し、より古い参照フレーム、すなわち、符号化すべきフレームから時間的により遠い参照フレームの計算を「忘れる」またはフェーズアウトすることができる。
【００８０】
さらなる例示として、フレームＮがコーディングすべきであり、フレームＮ−１〜Ｎ−Ｍがすでにコーディングされている場合、たとえば、参照フレームＮ−１に対して、フレームＮの動き推定のために選択される補間フィルタは、次のように計算するコスト式に従って選択できる。
【数３】
2014042273.tif 000006
【００８１】
上式で、係数ａ1、ａ2、．．．ａMは、値が漸進的により小さくなる重み付け係数を表す。所与のサブピクセル位置における各補間フィルタの累積コストＣに基づいて、エンコーダ２０は、Ｃの最も低い値を生成する補間フィルタを選択する。
【００８２】
動き補償ユニット３５はまた、ＤＣオフセットなどのオフセット値を補間予測データに、すなわち、参照フレームストア３４中の参照フレームのサブ整数ピクセル値に追加することができる。動き補償ユニット３５は、参照フレームと現在フレームとの間のＤＣ差、または参照フレームのブロックと現在フレームのブロックとの間のＤＣ差に基づいてＤＣオフセットを割り当てることができる。動き補償ユニット３５は、コーディングをシングルパスで実行する能力に一致して、「アプリオリ」に、すなわち、符号化すべき現在フレームの動き探索が実行される前にＤＣオフセットを割り当てることができる。
【００８３】
予測ビデオブロックのピクセル値は、予測ビデオブロックの整数または非整数ピクセルロケーションに関連するオフセットに従って上方または下方にオフセットできる。動き補償ユニット３５によって実行される補間は、異なるビデオブロックのためのいくつかの可能なサブ整数ピクセルロケーションにおける補間データを定義することができる。所与のコード化ユニットのための単一のオフセット値を定義するのではなく、動き補償ユニット３５は、いくつかの実装形態では、それぞれ可能な整数およびサブ整数ピクセルロケーションについて異なるオフセット値を定義することができる。他の場合には、予測ブロック、スライスまたはフレーム中のすべてのピクセル値に単一のオフセット値を適用することができる。動き補償ユニット３５は、いくつかの例では、サブ整数ピクセルのサブセットのみにオフセット値を適用する。次いで、予測データは、予測データに関連するピクセルロケーションに基づいてロケーション固有のオフセットを適用することができる。
【００８４】
一例では、動き補償ユニット３５は、予測ビデオブロックに基づいて符号化すべきコード化フレームのビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第１のセットのメトリック（たとえば、平均値）を計算することができる。動き補償ユニット３５はまた、現在フレームのブロックを符号化するために使用される予測ビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第２のセットのメトリック（たとえば、平均値）を計算することができる。すなわち、第１のセットのメトリックは、コーディングされているデータによって定義され、第２のセットのメトリックは、予測コーディングに使用される参照フレーム中の予測データによって定義される。次いで、動き補償ユニット３５は、第１および第２のセットのメトリックに基づいて複数のオフセット値を計算する。
【００８５】
第１のセットのメトリックは、予測ビデオブロックに基づいてコーディングされるコード化ユニットのビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第１のセットの平均値を備え、第２のセットのメトリックは、予測ビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第２のセットの平均値を備えることができる。この場合、複数のオフセット値は、第１のセットの平均値と第２のセットの平均値との間の差を備えることができる。このようにして、第１のコーディングパス中でコーディングされる実際のデータに基づいて、いくつかの異なる整数およびサブ整数ピクセルロケーションに対していくつかの異なるオフセット値を定義することができる。その差は、たとえば、フレーム間の照度の差を表していることがある。
【００８６】
第１のセットのメトリックは、所与のコード化ユニットのビデオブロックの各整数およびサブ整数ピクセルロケーションにおけるピクセル値の平均に対応する平均値のセットを備えることができる。第２のセットのメトリックは、そのコード化ユニット中でコーディングされている現在ブロックを予測するために使用される予測ブロックの各整数およびサブ整数ピクセルロケーションにおけるピクセル値の平均に対応するセットの平均値を備えることができる。複数のオフセット値は、第１のセットの平均値と第２のセットの平均値との間の差を備えることができる。各マクロブロックロケーションは、単一のピクセル、たとえば、それぞれのマクロブロックの左上コーナー中のそれぞれのピクセルによって定義できる。ただし、各マクロブロックは、第１のセットの平均値中の特定の平均値に寄与する１６個のピクセル値を定義することができる。本開示の技法は、もちろん、他のサイズのビデオブロックにも適用できる。
【００８７】
本開示のオフセット技法は、ルーマブロック、クロマブロック、または両方に対して適用できる。ビデオブロックの各タイプ（たとえば、ルーマブロックおよびクロマブロック）に関連する各整数およびサブ整数ピクセルロケーションに対して異なるオフセットを定義することができる。さらに、各ブロックの特定の各サイズ、パーティションまたはサブパーティションにおいて、各ブロックに異なるオフセットを割り当て得る。いくつかの例では、双予測ブロックをインター符号化するために、特定のピクセルまたはサブ整数ピクセルロケーションについて２つのオフセットを計算することができ、第１のオフセットは、現在フレームの現在ブロックと時間的により近い参照フレームのコロケートブロック（co-located block）との間の平均差（すなわち、リスト０）を表し、第２のオフセットは、現在フレームと時間的により遠い参照フレームとの間の平均差（すなわち、リスト１）を表す。これらの２つのオフセット値を計算した後、ビデオエンコーダ２０は、それらの２つのオフセット値のうちのどちらをピクセルまたはサブ整数ピクセル値に適用すべきかを判断することができ、リスト０に基づいて符号化するときは第１のオフセットを適用し、リスト１に基づいて符号化するときは第２のオフセットを適用する。
【００８８】
ブロックベースのＤＣオフセットを計算することは、現在フレームおよび参照フレームの何らかのサイズ（たとえば、１６×１６ピクセル）のコロケートブロック間のＤＣ差に関する（ヒストグラムの形態の）統計を収集することを必要とする。参照フレーム中のブロックと現在フレーム中のブロックとを比較し、２つのフレームの各コロケートブロックについて、以下の２つの量を計算する。
【００８９】
１）ピクセル差の２乗誤差（例示的な関数ｂｌｏｃｋＤＣ１およびｂｌｏｃｋＤＣ２に関して以下で説明するｅｒｒ０）、および
２）ブロックの平均ＤＣが各ピクセルの値に減算された後のピクセル差の２乗誤差（例示的な関数ｂｌｏｃｋＤＣ１およびｂｌｏｃｋＤＣ２に関して以下で説明するｅｒｒ１）
これらの２つの量を比較することによって（たとえば、１における誤差が２における誤差の２倍よりも大きいかどうかを検査することによって）、ブロックが十分類似しているかどうか（すなわち、コロケートブロック間の差が大部分はＤＣ差によって生じているかどうか）を推定し、これが当てはまる場合、これらの統計値を累積してブロックベースのＤＣ差のヒストグラムを含んでいるベクトルにすることが可能であり得る。実際的な理由のために、ＤＣ差は、たとえば、それらのＤＣ差を整数値に丸めることによって量子化できる。
【００９０】
ヒストグラムビンを検査することによって、ＤＣ差の範囲を導出し、ＤＣｍｉｎおよびＤＣｍａｘを計算することが可能である。いくつかの可能性は以下の通りである。
【００９１】
１）ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを有する正および負のＤＣ値に対応するビンの数を計数する（下記の関数ｂｌｏｃｋＤＣ２において使用する方法）、
２）ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを有する負のおよび正のＤＣ値に対応するビンの数を計数するが、テストが初めて不合格になったときに計数を止める、または  ３）ｎｏＳａｍｐｌｅｓ個より多くのサンプルを含んでいる最左および最右ビンに対応するＤＣ値を発見する（下記のｂｌｏｃｋＤＣ１において使用する方法）
一例として、ｎｏＳａｍｐｌｅｓ＝２０であり、ヒストグラムが以下の表２に示す通りである場合、第１の方法は、ＤＣｍｉｎ＝−２、ＤＣｍａｘ＝２、第２のＤＣｍｉｎ＝−２、ＤＣｍａｘ＝１、および第３のＤＣｍｉｎ＝−２、ＤＣｍａｘ＝４を戻す。
【表２】
2014042273.tif 000007
【００９２】
上記で概説したように現在フレームと参照フレームとの間のブロックベースのＤＣ差の値を推定した後、サブピクセル位置のサブセットにオフセットを割り当てる。使用される機構は、エンコーダとデコーダの両方に知られており、ＤＣｍｉｎおよびＤＣｍａｘの値によって完全に判断される。したがって、他の方法との互換性を維持する必要がなければ、オフセットの送信は、これらの２つの値のみを送信することによって大幅に簡略化できる。
【００９３】
オフセットＯ（１）〜Ｏ（１５）は、５、１５、１３、７、９、６、１１、１４、１、４、３、１２、１０、２、８という所定の順序でサブピクセル位置に割り当てられ得る。割当ての他の順序も可能である。以下の表３に、１／４ピクセル補間において使用されるサブピクセル位置のインデックス付け（位置０はフルピクセルに関連付けられる）と、オフセットの割当てとを示す。１５個よりも少ないオフセットを割り当てている場合、残りの値は０に設定される。本方法は、異なる分数ピクセル補間に拡張できる。これらのサブピクセル位置にＤＣオフセットを適用する例について、図５の例に関して説明する。
【表３】
2014042273.tif 000008
【００９４】
上記の表３において、左の４列はサブピクセル位置を示し、中央の４列は１５個のオフセットの割当てを示し、右の４列は９個のオフセットの割当てを示す。
【００９５】
現在フレームと参照フレームとの間の（フレームベースの）ＤＣ差を使用して、ＤＣｍｉｎおよびＤＣｍａｘの計算において使用されるしきい値ｎｏＳａｍｐｌｅｓと、１／４ピクセル補間のためのオフセットの数の両方を判断することができる。しきい値ｎｏＳａｍｐｌｅｓは、画像のサイズ（したがってブロックの数）を考慮に入れることによって計算することもできる。その場合、ＤＣｍｉｎおよびＤＣｍａｘをさらに改善することができる。これを行うのに可能な方法を以下の擬似コードに例示する。
【数４】
2014042273.tif 000009
【００９６】
上記の擬似コード中の量ｒｏｕｎｄＦａｃｔは、ＤＣ範囲を量子化し、オフセットを１５個以下の値に抑制するために使用される。次いで、範囲［ＤＣｍｉｎ，ＤＣｍａｘ］中のオフセットを、上記で指定した順序でサブピクセル位置に割り当てる。フレームベースのＤＣ差の絶対値が小さい（たとえば、２よりも小さい）場合、ＤＣ差をより小さいステップ（たとえば、０．１）で再量子化し、ｎｏＯｆｆｓｅｔｓ１と呼ばれる新しい量を作り出す。ｎｏＯｆｆｓｅｔｓ１がしきい値（たとえば、８）以下である場合、第１のｎｏＯｆｆｓｅｔ１サブピクセル位置（上記で指定した順序における１番目）を０に設定し、残りの位置に（ＤＣ差の符号に応じて）＋１または−１を入れる。ｎｏＯｆｆｓｅｔ１がしきい値よりも大きい場合、第１のｎｏＯｆｆｓｅｔｓ１位置に＋１または−１を入れ、残りのサブピクセル位置を０に設定する。
【００９７】
図２をさらに参照すると、動き補償ユニット３５は予測ブロックに基づいて予測データを計算する。ビデオエンコーダ２０は、コーディングされている元のビデオブロックから予測データを減算することによって残差ビデオブロックを形成する。加算器４８は、この減算演算を実行する１つまたは複数の構成要素を表す。変換ユニット３８は、離散コサイン変換（ＤＣＴ）または概念的に同様の変換など、変換を残差ブロックに適用し、残差変換ブロック係数を備えるビデオブロックを生成する。変換ユニット３８は、たとえば、概念的にＤＣＴと同様である、Ｈ．２６４規格によって定義される変換など、他の変換を実行することができる。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換を使用することもできる。いずれの場合も、変換ユニット３８は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル領域から周波数領域に変換することができる。
【００９８】
量子化ユニット４０は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、量子化中に１６ビット値を１５ビット値に切り詰めることができる。量子化の後、エントロピーコーディングユニット４６は量子化変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット４６は、コンテンツ適応型可変長コーディング（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ）、または別のエントロピーコーディング方法を実行することができる。エントロピーコーディングユニット４６によるエントロピーコーディングの後、符号化ビデオを、別のデバイスに送信するか、あるいは後で送信または検索するためにアーカイブすることができる。コード化ビットストリームは、エントロピーコード化残差ブロックと、そのようなブロックのための動きベクトルと、特定のフレームのサブ整数ピクセル値を計算するために参照フレームに適用すべき補間フィルタの識別子と、コード化ユニット内の異なる整数およびサブ整数ピクセルロケーションにおける複数の異なるオフセットを識別するオフセット値を含む他のシンタックスとを含むことができる。
【００９９】
逆量子化ユニット４２および逆変換ユニット４４は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット３５は、参照フレームストア３４のフレームのうちの１つの予測ブロックに残差ブロックを加算することによって参照ブロックを計算することができる。動き補償ユニット３５はまた、サブ整数ピクセル値を計算するために、選択された補間フィルタ３７を再構成される残差ブロックに適用することができる。加算器５１は、再構成された残差ブロックを、動き補償ユニット３５によって生成された動き補償された予測ブロックに加算して、参照フレームストア３４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするための参照ブロックとして動き推定ユニット３６および動き補償ユニット３５によって使用され得る。
【０１００】
動き推定ユニット３６は、本開示の技法によれば、動きベクトルを計算すべき予測ブロックを識別するために使用される標準探索アルゴリズムを変更することもできる。本開示の技法によれば、動き推定ユニット３６は、参照フレームに以前に追加されたＤＣオフセットを考慮に入れる改善された動き探索を実行することができる。特に、動き推定ユニット３６は、ＤＣオフセットの追加の結果として０でないＤＣオフセット値を有するサブピクセル位置の評価を強制することによって、動き探索を改善することができる。動き探索中に、動き推定ユニット３６は、たとえば、ブロックのＳＡＤ、ＳＳＤまたは他のピクセル差メトリックに基づいて、符号化すべきブロックに最もぴったり一致する参照フレームの予測ブロックを識別することを試みる。
【０１０１】
動き探索から生じる符号化を改善するために、動き補償ユニット３５が０でないオフセット値を定義した整数またはサブ整数ピクセルロケーションのうちの１つにおいて開始するブロックをスキップすることを標準動き探索アルゴリズムが指図するであろう場合でも、動き推定ユニット３６は、これらのピクセルロケーションにおいて開始する参照フレームの予測ブロックを検査することができる。参照フレームのブロックが、定義されたオフセット値がないか、またはオフセット値が０であるピクセルまたはサブピクセルロケーションにおいて開始し、動き探索アルゴリズムが、そのロケーションにあるブロックをスキップすることを指図しているとき、動き推定ユニット３６は、そのロケーションをスキップし、次のピクセルロケーションに移動することができる。しかしながら、参照フレームのブロックが、動き補償ユニット３５が０でないオフセット値を定義したロケーションにおいて開始し、動き探索アルゴリズムが、そのロケーションにあるブロックをスキップすることを指図しているとき、動き推定ユニット３６は、それにもかかわらず、そのロケーションにおいて開始するブロックを分析し、それにより標準動き探索アルゴリズムを無効にすることができる。特に、動き推定ユニット３６は、ブロックをインターコーディング用の予測ブロックとして選択すべきかどうかを判断するために、参照フレーム中のそのロケーションにおいて開始するブロックを、コーディングすべきブロックと比較することができる。
【０１０２】
一例では、ビデオエンコーダ２０は、１つまたは複数の以前に符号化されたフレームの（単一または累積）履歴に基づいて補間フィルタを選択するための手順と、サブピクセル位置に対するＤＣオフセットを計算し、割り当てるための手順と、ＤＣオフセットをもつサブピクセル位置を考慮に入れるためのする動き探索の改良とを組み合わせて、ほとんどまたはまったくパフォーマンスロスなしに、かなりの速度ゲインで、符号化をシングルパスで実行することができる。他の例では、ビデオエンコーダ２０は、（１）補間フィルタを選択するための手順と、（２）サブピクセル位置に対するＤＣオフセットを計算し、割り当てるための手順と、（３）ＤＣオフセットをもつサブピクセル位置を考慮に入れるための動き探索の改善との任意の組合せまたは置換を実行することができる。
【０１０３】
図３は、本開示で説明する方法で符号化されたビデオシーケンスを復号するビデオデコーダ３０の一例を示すブロック図である。ビデオデコーダ３０は、いくつかの例では、ビデオエンコーダ２０（図２）に関して説明した符号化とは逆の復号パスを実行することができる。ビデオデコーダ３０は、復号中に本開示のオフセット技法を実行する動き補償ユニット５４を含む。特に、復号側で、動き補償ユニット５４はエントロピー復号ユニット５２からシンタックス要素を受信することができ、それは、たとえば整数ピクセルロケーションおよび１つまたは複数の非整数ピクセルロケーションに対して異なるオフセットを定義する、コード化ユニットの複数のオフセット値を識別するものである。
【０１０４】
動き補償ユニット５４は、エントロピー復号ユニット５２から受信した動きベクトルに基づいて予測データを生成することができる。特に、動き補償ユニット５４は、動きベクトルを使用して以前に復号された参照フレーム中の予測ブロックを識別し、（その予測データのピクセルロケーションに基づいて）そのような予測データに適切なオフセットを追加して、オフセット予測データを生成することができる。予測データは補間データとすることができ、その場合、オフセット予測データを生成するために、非整数ロケーションのオフセット値のうちの対応する１つを補間予測データに適用することができる。このオフセット予測データに基づいて、ビデオデータ（たとえば、再構成された残差ビデオブロック）を復号することができる。特に、デコーダは、符号化された元のビデオブロックを生成するために、オフセット予測データを残差ビデオブロックと組み合わせることができる。
【０１０５】
エントロピー復号ユニット５２は、量子化係数およびシンタックス（たとえば、動きベクトル、およびコード化ユニットの複数のオフセット値）を生成するために、受信ビットストリームをエントロピー復号する。シンタックスは、エントロピーコーディングユニット５２から動き補償ユニット５４に転送される。逆量子化ユニット５６は、量子化されたブロック係数を逆量子化（inverse quantize）、すなわち反量子化（de-quantize）する。逆量子化プロセスは、たとえば、Ｈ．２６４復号によって定義された、従来のプロセスとすることができる。逆変換ユニット５８は、ピクセル領域における残差ブロックを生成するために、変換係数に逆変換、たとえば逆ＤＣＴまたは概念的に同様の逆変換プロセスを適用する。動き補償ユニット５４は、動き補償ブロックを生成し、場合によっては補間フィルタ６４を使用して補間を実行する。特定のフレーム中のサブピクセル位置に対して使用すべき特定の補間フィルタ６４を指定する識別子を、エンコーダ２０によって生成されたビットストリーム中にシンタックス要素として含めることもできる。
【０１０６】
動き補償ユニット５４は、ビデオブロックの符号化中にビデオエンコーダ２０によって使用されたのと同じ補間フィルタ６４のセットを選択することができる。特に、動き補償ユニット５４は、参照フレームストア６２から取り出された参照ブロックについてビットストリーム中のシンタックス要素によって示される、補間フィルタ６４のセットを使用してサブ整数ピクセル値を計算する。動き補償ユニット５４が動きベクトルに基づいて予測ブロックを生成した後、動き補償ユニット５４は、予測ブロックに適切なオフセット値を追加して、エンコーダが実行した元の符号化において使用されたオフセット予測ブロックを生成する。
【０１０７】
加算器６４は、動き補償ユニット５４によって生成された対応するオフセット予測ブロックをもつ残差ブロックを合計することによって、残差ブロックからの残差データを加算して、現在フレームのための復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、デブロッキングフィルタを適用して、復号ブロックをフィルタ処理することもできる。次いで、復号ビデオブロックは参照フレームストア６２に記憶され、参照フレームストア６２は、復号すべき後のフレームに対する後続の動き補償のための参照ブロックを供給し、ビデオ表示のための（図１のデバイス２８などの）表示デバイスを駆動する表示バッファに送信するための復号ビデオをも生成する。
【０１０８】
ここでも、本開示の技法は、動き補償予測データへのオフセットの適用に関係し、補間によって定義された整数および異なるサブ整数ピクセルロケーションに対して異なるオフセットを使用する。エンコーダは、本開示の技法を使用して、様々なオフセット値を定義し適用する。また、デコーダは、エンコーダによって定義され使用されたのと同じオフセット値を識別するために、エンコーダから送信されたシンタックス要素を解釈する。予測データのピクセル値に適切なオフセットを適用し、適切なオフセットは、そのような予測データのために定義されたピクセルロケーション、たとえば、整数ピクセルロケーション、またはいくつかの可能な非整数ピクセルロケーションのうちの１つに基づいて選択される。
【０１０９】
図４は、予測データに関連する整数ピクセルロケーションと、補間予測データに関連するサブ整数ピクセルロケーションとを示す概念図である。図４の概念図において、様々なボックスはピクセルを表す。（実線のボックス中の）大文字は整数ピクセルロケーションを表し、（点線のボックス中の）小文字はサブ整数補間ピクセルロケーションを表す。ピクセルロケーション「ａａ」、「ｂｂ」、「ｃｃ」、「ｄｄ」、「ｅｅ」、「ｆｆ」、「ｇｇ」、「ｈｈ」、「ｉｉ」、および「ｊｊ」は、ピクセルロケーション「Ｃ３」に関連する様々な分数ロケーションの分数補間において使用されるハーフピクセルロケーションである。各ピクセルは、そのピクセルがビデオブロックを定義するようにビデオブロックの右上側のピクセルに対応することができる。補間または外挿については、ビデオブロックのピクセルの各々を、それぞれのサブ整数ピクセルから同じ空間距離を有する様々な整数ピクセルに関して同様に補間または外挿することができる。
【０１１０】
あらゆる整数ピクセルロケーションは、関連する１５個の異なる分数（「サブ整数」）ロケーションを有する。図４の例では、ピクセル「Ｃ３」に関連するこれらの１５個の異なる分数ロケーションは、サブ整数ピクセルロケーション「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、「ｍ」、「ｎ」、および「ｏ」として示されている。同様に、ピクセル「Ｅ５」に関連する１５個の異なる分数ロケーションは、サブ整数ピクセルロケーション「ａ’」、「ｂ’」、「ｃ’」、「ｄ’」、「ｅ’」、「ｆ’」、「ｇ’」、「ｈ’」、「ｉ’」、「ｊ’」、「ｋ’」、「ｌ’」、「ｍ’」、「ｎ’」、および「ｏ’」として示されている。簡単のために、（ピクセル「Ｃ３」に関連する１５個の異なる分数ロケーションのうちの１つまたは複数を生成するために使用される、上記の分数ロケーション以外の）他の分数ロケーションのほとんどは図示していない。
【０１１１】
たとえば、ＩＴＵ  Ｈ．２６４／ＡＶＣ規格では、ハーフピクセル位置におけるルーマ信号を得るために、一般に、係数［１，−５，２０，２０，−５，１］をもつ６タップウィーナフィルタ（Wiener filter）を使用する。次いで、クォーターピクセルロケーションにおけるルーマ信号を得るために、双１次フィルタ（bilinear filter）を使用する。双１次フィルタは、Ｈ．２６４／ＡＶＣでは最高１／８ピクセル精度を有し得る、クロマ成分の分数ピクセル補間においても使用できる。
【０１１２】
動き推定の後、コーディングレートとビデオ品質のバランスをとるために、たとえば、レートひずみモデルを使用して、所与のビデオブロックのための最良の動きベクトルを識別することができる。最良の動きベクトルを使用して動き補償中に予測ビデオブロックを形成する。上記で概説したように、元のビデオブロックから予測ビデオブロックを減算することによって残差ビデオブロックを形成する。次いで、残差ブロックに変換を適用し、ビットレートをさらに低減するために変換係数を量子化し、エントロピーコーディングする。
【０１１３】
本開示の技法は、予測ビデオブロックにオフセットを追加することを含む。オフセットの値は、異なる整数およびサブ整数ピクセルロケーションに対して異なるオフセットが定義されるという点で、ロケーション固有であり得る。ピクセル「ｂ」および「ｂ’」は整数ピクセルＣ３およびＥ５に関して同じサブ整数ピクセルロケーションを定義しているので、これらの２つのピクセルによって識別されるビデオブロックに関連するオフセットは同じとすることができる。しかしながら、ピクセル「ｃ」および「ｄ’」は整数ピクセルＣ３およびＥ５に関して異なるサブ整数ピクセルロケーションを定義しているので、ピクセル「ｃ」および「ｄ’」によって識別されるビデオブロックに関連するオフセットは異なることができる。１６個の異なるピクセルロケーション「Ｃ３」、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、「ｍ」、「ｎ」、および「ｏ」の各々は、異なるオフセットを定義することができる。さらに、これらの異なるオフセットは、１６個の異なるピクセルロケーション「Ｅ５」、「ａ’」、「ｂ’」、「ｃ’」、「ｄ’」、「ｅ’」、「ｆ’」、「ｇ’」、「ｈ’」、「ｉ’」、「ｊ’」、「ｋ’」、「ｌ’」、「ｍ’」、「ｎ’」、および「ｏ’」の各々にそれぞれ適用することもできる。オフセットは、オフセット予測ブロックを生成するために、予測ブロックのあらゆるピクセル値を上方または下方に本質的にバイアスする符号付き値を定義することができる。
【０１１４】
オフセットは、すべての対応する予測ピクセルの平均に対して同じサンプルロケーション（整数または特定のサブ整数ロケーション）を有するコード化ユニットのすべてのピクセルの平均差を備え得るので、ＤＣオフセットと呼ばれることがある。すなわち、ブロックのピクセルの各々は同様に同じ程度だけバイアスされるので、オフセットは、たとえば、ＤＣＴ計算から生じる変換データのＤＣ値の変化をもたらし、ただし、ＤＣ値は、変換計算から生じる行列の左上の値である。これは、ＤＣ値がブロックのピクセル値の平均を表すからである。したがって、ピクセルを特定の値だけバイアスすることによって、変換計算から生じるＤＣ値は同様にバイアスされることになる。したがって、いくつかの例では、ＤＣオフセットをブロックの各ピクセルに適用するのではなく、ＤＣオフセットを、変換計算から生じるＤＣ値に適用することができる。
【０１１５】
いくつかの例では、整数およびサブ整数ピクセルロケーションの各々に異なるオフセット値を割り当てることができる。動きベクトルによって参照されるピクセルまたはサブピクセルに対応するオフセット値を、ブロックの各ピクセルに適用する。一例として、ピクセルおよびサブピクセルロケーションに１と８との間にわたるオフセット値を割り当てるために、ピクセルロケーション「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｍ」、「ｎ」、および「ｏ」に対して、それぞれオフセット値｛１，６，４，５，７，３，８，２｝を割り当てることができる。すなわち、オフセット値マッピングは、｛Ｃ３−＞ｎｕｌｌ，ａ−＞ｎｕｌｌ，ｂ−＞ｎｕｌｌ，ｃ−＞ｎｕｌｌ，ｄ−＞ｎｕｌｌ，ｅ−＞１，ｆ−＞６，ｇ−＞４，ｈ−＞ｎｕｌｌ，ｉ−＞５，ｊ−＞ｎｕｌｌ，ｋ−＞７，ｌ−＞ｎｕｌｌ，ｍ−＞３，ｎ−＞８，ｏ−＞２｝とすることができる。別の例では、オフセット値は、参照フレームのピクセルの平均値と現在フレームのピクセルの平均値との間の差を備えることができる。そのような差をＤＣｆｒａｍｅと呼ぶと、一例では、０＜ＤＣｆｒａｍｅ＜１．５であるとき、大きさ１をもつオフセットが、（最も近い整数に丸められた）１０＊ＤＣｆｒａｍｅ個のピクセル位置に割り当てられる。たとえば、ＤＣｆｒａｍｅが０．８３に等しい場合、大きさ１をもつオフセットが、１６個のピクセルロケーションのうちの８つに割り当てられる。
【０１１６】
本開示の技法によれば、動き推定ユニット３６は、定義されたオフセット値が存在するロケーションをもつブロックのうちの１つまたは複数をスキップすることを標準動き探索アルゴリズムが指図するであろうときでも、これらのブロックを評価することもできる。動き推定ユニット３６は、定義されたオフセット値がないピクセルロケーションにおいて開始するブロックをスキップすることを動き探索アルゴリズムが指図しているとき、それらのブロックを評価することをスキップすることができる。ピクセルロケーション「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｍ」、「ｎ」、および「ｏ」にそれぞれオフセット値｛１，６，４，５，７，３，８，２｝が割り当てられる上記の例では、動き推定ユニット３６は、ピクセルロケーション「Ｃ３」、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｈ」、「ｊ」、および「ｌ」をスキップすることを動き探索アルゴリズムが指図しているとき、これらのピクセルロケーションにおいて開始するブロックを評価することをスキップすることができる。しかしながら、動き推定ユニット３６は、ピクセルロケーション「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｍ」、「ｎ」、および「ｏ」において開始するブロックをスキップすることを動き探索アルゴリズムが指図するときでも、ピクセルロケーション「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｍ」、「ｎ」、および「ｏ」は定義されたオフセット値を有しているので、これらのロケーションにおいて開始するブロックを評価するであろう。
【０１１７】
別の例として、ＤＣｍｂが、参照ブロックのピクセルの平均値と現在のブロックのピクセルの平均値との間の差を表すとする。さらに、少なくともしきい値数のマクロブロックに割り当てられたＤＣｍｂの最小値をＤＣｍｉｎとし、少なくともしきい値数のマクロブロックに割り当てられたＤＣｍｂの最大値をＤＣｍａｘとする。一例では、ＤＣｆｒａｍｅ＞１．５であるとき、ＤＣｍｉｎとＤＣｍａｘとの間にわたるオフセット値がピクセル値の各々に割り当てられる。
【０１１８】
ここでも、図４は、上記の場合の文字をもつ実線ボックス中に（フルピクセルとも呼ばれる）整数ピクセルサンプルを示している。任意の所与の整数ピクセルサンプルについて、１５個のサブピクセル位置が存在することができ、図４では、整数ピクセルサンプル「Ｃ３」について示され、「ａ」〜「ｏ」と標示されている。Ｈ．２６４／ＡＶＣに従って、動き補償ユニット３５は、最初に１次元６タップウィーナフィルタを使用してハーフピクセル位置「ｂ」、「ｈ」、および「ｊ」を計算することができる。補間フィルタは、最初は水平方向に、次いで垂直方向に適用でき、またはその逆に適用できる。次いで、動き補償ユニット３５は、双１次フィルタとすでに計算されたハーフピクセルサンプルとを使用して残りのクォーターピクセル位置をフィルタ処理することができる。
【０１１９】
補間データを生成するために適用される実際のフィルタは、多種多様な実装形態が可能である。一例として、動き補償ユニット３５は、補間値を定義するために適応補間フィルタ処理を使用することができる。別の例では、補間フィルタのいくつかのセットを適用し、最良の予測データを生じるセットを選択することができる。いくつかの例では、本開示で説明するように、補間フィルタは、１つまたは複数の参照フレームの履歴補間データに基づいて選択できる。本開示によれば、オフセットの追加が行われるのは、コーディングにおいて使用すべき参照フレームから何らかの補間予測データを生成した後であるが、コーディングすべき現在フレームについて動き推定が実行される前である。
【０１２０】
図２に関して説明したように、動き補償ユニット３５は、オフセット（ＳＩＦＯ）方式を用いた切替え補間フィルタを使用することができる。動き補償ユニット３５は、たとえば、複数の異なるあらかじめ定義された補間フィルタ係数のセットによってそれぞれ定義され得る、複数の固定補間フィルタ３７の間で選択することができる。補間フィルタの選択は、コード化ユニットレベル（たとえば、フレームレベルまたはスライスレベル）ごとに、またはサブピクセル位置（サンプルレベル）ごとに実行できる。さらに、本開示によれば、予測後にＤＣオフセットを追加することもでき、ＤＣオフセットは、本開示で説明するように、可能な整数または分数ピクセルロケーションごとに定義することもできる。
【０１２１】
すなわち、動き補償ユニット３５は、いくつかの可能な代替の補間データを定義するために、固定補間フィルタ３７の異なるセットを使用することができる。例として、動き補償ユニット３５は、標準のＩＴＵ−Ｔ  Ｈ．２６４フィルタセット、Ｈ．２６４／ＡＶＣに基づくが（１／２ピクセル位置に対しては中間丸め、および１／４ピクセル位置に対してはバイアス丸めなしの）より高い精度をもつフィルタセット、またはカスタマイズされた補間フィルタのセットを使用することができる。カスタマイズされた補間フィルタのセットは、トレーニングビデオシーケンスのセットを使用することによってあらかじめ定義できる。
【０１２２】
最良の予測（すなわち、より小さい予測誤差エネルギー）を提供するフィルタセットは、累積ベースでの以前の参照フレームまたは複数の参照フレームの履歴補間誤差によって示されるように、動き補償ユニット３５によって選択され、補間データを生成するために適用され得る。複数の参照フレームを使用するときは、異なる参照フレームに対して異なるフィルタセットを選択することができる。一例では、動き補償ユニット３５は１／２ピクセル位置（位置ｂ、ｈおよびｌ）に対しては標準フィルタを適用し、動き補償ユニット３５は他の１／４ピクセル位置に対してはカスタマイズされたフィルタセットを適用することができる。
【０１２３】
予測データが動き補償ユニット３５によって生成または補間されると、補間（または非補間）されたデータに関連するサンプルロケーションに基づいて予測データにＤＣオフセットを適用することができる。特に、本開示は、異なる整数またはサブ整数ピクセルロケーションに対して異なるＤＣオフセットの使用を与える。ここでも、図４に示す例示的なデータにおいて、これは、１６個の異なるピクセルロケーション「Ｃ３」、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、「ｍ」、「ｎ」、および「ｏ」の各々が、それ自体の異なるオフセットを定義することができることを意味する。したがって、１６個の可能な整数およびサブ整数ロケーションに対して、１６個の異なるオフセットが存在し得る。さらに、これらの異なるオフセットは、１６個の異なるピクセルロケーション「Ｅ５」、「ａ’」、「ｂ’」、「ｃ’」、「ｄ’」、「ｅ’」、「ｆ’」、「ｇ’」、「ｈ’」、「ｉ’」、「ｊ’」、「ｋ’」、「ｌ’」、「ｍ’」、「ｎ’」、および「ｏ’」の各々にそれぞれ適用することもできる。
【０１２４】
予測データのピクセルにＤＣオフセットを追加することは、異なるビデオフレーム間の照度変化の効果を捕捉するのを助けることになり得る。照度変化は、ビデオシーケンス中のフラッシュまたは暮れ行く空などによって生じることがある。Ｈ．２６４／ＡＶＣは、予測ピクセル値にオフセットを追加することを可能にし得る重み付け予測を使用する。しかしながら、Ｈ．２６４／ＡＶＣ重み付け予測によって定義されたＤＣオフセットはフレームレベル上でのみ可能になり、すなわち、ビデオブロックの予測データが補間されるかどうかにかかわらず、所与のフレームに対してただ１つのオフセット値が定義されることを意味する。言い換えれば、フレームレベルオフセットでは、同じフレーム中のすべてのピクセルは同じＤＣオフセットを有する。
【０１２５】
本開示によれば、場合によっては、ＤＣオフセットは、補間および非補間データに関連する異なるサンプル位置に対して異なって定義できる。したがって、図４に示す１５個のサブピクセル位置（「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ、「ｍ」、「ｎ」、および「ｏ」）の各々に対して異なるＤＣオフセットを定義し、整数ピクセル位置に対して別のＤＣオフセットを定義することができる。サンプルベースのＤＣオフセットを使用するときは、合計１６個のＤＣオフセットを、デコーダへのビデオビットストリーム中のシンタックス要素としてコーディングし、送信することができる。サンプルベースのＤＣオフセットを適用することによって、動き補償ユニット３５は、単純であるが効果的な動きセグメンテーションツールを提供することができる。
【０１２６】
一例として、ビデオフレームは、静止背景として暮れ行く空を、前景として移動する物体を含んでいることがある。この場合、背景と前景とは、異なる程度の照度変化を有することができ、所与のビデオブロックを識別するピクセルのロケーションによって定義されたロケーション固有のＤＣオフセット値を使用することによって、動き補償ユニット３５は、そのようなロケーション固有のＤＣオフセット値なしで達成され得るよりも効率的に、前景と背景とにおける異なる程度の照度変化を捕捉することが可能になり得る。
【０１２７】
さらに、コード化ユニットのビデオブロックが、たとえば、双方向予測のために複数の異なる参照フレームを使用するとき、異なる参照フレームに関連する整数およびサブ整数ロケーションごとに異なるＤＣオフセットを計算し、送信することができる。場合によっては、一部の参照フレームは単一のフレームベースのＤＣオフセットを備え、他の参照フレームはいくつかのロケーション固有のＤＣオフセットを有することができる。いくつかの方式は、コーディングされている現在フレームに時間距離的に最も近い参照フレームに対してロケーション固有のＤＣオフセットのみを使用し、他の参照フレームのすべてに対して単一のフレームベースのＤＣオフセットを使用することができる。
【０１２８】
ＤＣオフセットをコーディングするために、単一のフレームベースのＤＣオフセットを使用するかどうか、またはいくつかのロケーション固有のＤＣオフセットを使用するかどうかを示すためにフレーム当たり１ビットを使用することができる。ＤＣオフセットが整数精度のみを有する場合、これらのオフセットの値は、符号付き指数ゴロム符号（signed exponential-Golomb code）を使用してコーディングできる。ＤＣオフセットが分数精度を有する場合、整数オフセットの値は、符号付き指数ゴロム符号を使用してコーディングし、非整数オフセットの値は、符号付き指数ゴロム符号によって定義された整数オフセットに対する残差差分を使用してコーディングできる。
【０１２９】
デコーダ側において、デコーダは、どんな生成された予測ビデオブロックのピクセルにも適切なＤＣオフセット値を単純に適用することができる。デコーダによって使用されるＤＣオフセット値は、各予測ビデオブロックに関連する特定の整数またはサブ整数ピクセルロケーションのシンタックス要素中で定義できる。たとえば、コード化ユニットのヘッダ中のシンタックス要素は、そのコード化ユニットに対する複数のオフセット値の各々を指定するためのフラグまたは値を含むことができる。「オフセット」および「ＤＣオフセット」という用語は、本開示では互換的に使用される。同じそれぞれのピクセルロケーションごとに全体的なオフセットが定義される限り、たとえば、整数ロケーションに対して１つのオフセットが定義され、可能なサブピクセルロケーションごとにいくつかの異なるオフセットが定義される限り、オフセットはＤＣオフセットと呼ばれる。
【０１３０】
本開示の技法によれば、オフセットをシングル符号化パスで整数およびサブ整数ピクセル位置に適用することができる。一例では、ＤＣオフセット値をシングルパスで割り当てるための方法は、以下の演算を含むことができる。
【０１３１】
ａ．  ＤＣＤｉｆｆ［ｉｄｘ］、すなわち、参照フレーム「ｉｄｘ」と現在フレームとの間のＤＣ差を計算する
ｂ．  ｓｇｎ＝ｓｉｇｎ（ＤＣＤｉｆｆ［ｉｄｘ］）をセットし、ただし、ｓｉｇｎ（）は＋１または−１を戻す
ｃ．  参照フレームがｉｄｘ＞０を有する場合、ｆｒｍＯｆｆｓｅｔ［ｉｄｘ］＝ｍｉｎ（ｒｏｕｎｄ（ＤＣＤｉｆｆ［ｉｄｘ］），１）をセットし、戻り、さもなければ、
ｄ．  ｎｕｍＯｆｆｓｅｔｓをｍｉｎ（ｒｏｕｎｄ（ＤＣＤｉｆｆ［ｉｄｘ］），８）として判断する
ｅ．  ｎｕｍＯｆｆｓｅｔｓ≧ｎｕｍＯｆｆｓｅｔｓＭｉｎである場合（たとえば、ｎｕｍＯｆｆｓｅｔｓＭｉｎ＝２である場合）、ｎｕｍＯｆｆｓｅｔｓに等しく、値が｛１，２，３，４，５，６，７，８｝のように増加するいくつかのオフセットを、順に、サブピクセル位置｛５，１５，１３，７，９，６，１１，１４｝に追加する
ｆ．  他の場合、ｎｕｍＯｆｆｓｅｔｓ１をｍｉｎ（ｒｏｕｎｄ（ＤＣＤｉｆｆ［ｉｄｘ］／０．１），１５）として計算する
ｇ．  ｎｕｍＯｆｆｓｅｔｓ１＞０であり、ｎｕｍＯｆｆｓｅｔｓ１＜＝ｔｈＦｕｌｌＰｅｌ０である場合、ｎｕｍＯｆｆｓｅｔｓ１に等しく、値がｓｇｎであるいくつかのオフセットを、順序｛５，１５，１３，７，９，６，１１，１４｝に従ってサブピクセル位置に追加する
ｈ．  そうではなく、ｎｕｍＯｆｆｓｅｔｓ１＞０である場合、値がｓｇｎである８つのオフセットをサブピクセル位置｛０，１，２，３，４，８，１０，１２｝に追加し、ｎｕｍＯｆｆｓｅｔｓ１に等しく、値がｓｇｎであるいくつかのオフセットを順序｛１４，１１，６，９，７，１３，１５，５｝に従ってサブピクセル位置に追加する
いくつかの例では、上記で概説したようにプロセスを使用することによって、動き補償ユニット３５は、オフセット値を整数およびサブ整数ピクセルロケーションにシングルパスで割り当てることができる。次いで、動き補償ユニット３５は、動き推定ユニット３６によって計算された動きベクトルによって識別される、特定の整数またはサブ整数ピクセルロケーションのオフセット値を予測ブロックに適用することができる。
【０１３２】
いくつかの例では、動き補償ユニット３５は、特定のサブ整数ピクセルに割り当てるべきオフセット値を判断するために２つのフレーム間のＤＣ差を計算する。動き補償ユニット３５は、現在フレームのブロックと、現在フレームに対する参照フレームのコロケートブロックとの間のＤＣ差に関するヒストグラムの形態の統計を収集することができる。動き補償ユニット３５は、最初に、現在フレームのブロックと参照フレームのコロケートブロックとの間のピクセル差の２乗誤差を第１の誤差値として計算することができる。動き補償ユニット３５はまた、２つのブロック間の平均ＤＣ差を計算し、現在フレームのブロックのピクセル値からその計算されたＤＣ差を減算し、次いで、平均ＤＣ差を減算した後の現在フレームのブロックのピクセルと参照フレームのコロケートブロックのピクセルとの間の差の２乗誤差を第２の誤差値として比較することができる。
【０１３３】
動き補償ユニット３５は、たとえば、第１の誤差値が第２の誤差値の２倍よりも大きいかどうかを調べることによって、第１の誤差値または第２の誤差値のうちのどちらがより良いかを判断することができる。動き補償ユニット３５は、この比較に基づいて現在フレームのブロックと参照フレームのコロケートブロックとが十分類似しているかどうかを判断することができる。動き補償ユニット３５が、２つのブロックが十分類似していると判断すると、動き補償ユニット３５は、ブロックベースのＤＣ差のヒストグラムを含んでいるベクトル内に誤差値を累積することができる。
【０１３４】
動き補償ユニット３５は、ヒストグラム用に収集されたいくつかのサンプルに基づいて、ＤＣmin値およびＤＣmax値などの値を計算するためにヒストグラムのビン（bins）を様々な方法で分析することができる。一例では、最小のサンプル数「ｎｏＳａｍｐｌｅｓ」について、動き補償ユニット３５は、ＤＣmin値が、ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを有する負のＤＣに対応する数ビンのカウントの−１倍に等しく、ＤＣmax値が、ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを有する正のＤＣに対応する数ビンのカウントに等しいと判断することができる。別の例では、最小のサンプル数「ｎｏＳａｍｐｌｅｓ」について、動き補償ユニット３５は、ＤＣmin値が、ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを有する負のＤＣに対応するビンの数のカウント（カウントはＤＣ差値０において開始する）の−１倍に等しいと判断することができるが、動き補償ユニット３５は、テストが初めて不合格になった後に計数を止めるように構成され、動き補償ユニット３５は、ＤＣmax値が、ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを有する正のＤＣに対応するビンの数のカウントに等しいと判断することができるが、動き補償ユニット３５は、テストが初めて不合格になった後に計数を止めるように構成される。別の例では、最小のサンプル数「ｎｏＳａｍｐｌｅｓ」について、動き補償ユニット３５は、ＤＣmin値が、ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを含んでいる最左ビンに対応するＤＣに等しく、ＤＣmax値が、ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを含んでいる最右ビンに対応するＤＣに等しいと判断することができる。下記の表４は前記の表２と同じであるが、説明しやすいように以下に再掲する。
【表４】
2014042273.tif 000010
【０１３５】
これらの例示的な方法をさらに説明するために、ｎｏＳａｍｐｌｅｓ＝２０であり、ヒストグラムが上記の表４に示す通りであると仮定すると、動き補償ユニット３５は、第１の例示的な方法ではＤＣmin＝−２およびＤＣmax＝２であり、第２の例示的な方法ではＤＣmin＝−２およびＤＣmax＝１であり、第３の例示的な方法ではＤＣmin＝−２およびＤＣmax＝４であると判断することができる。
【０１３６】
ＤＣminおよびＤＣmaxを計算した後、動き補償ユニット３５はサブ整数ピクセルにＤＣオフセット値を割り当てることができる。一例では、動き補償ユニット３５は、サブ整数ピクセルにオフセットＯ（１）〜Ｏ（１５）を１５、１３、７、９、６、１１、１４、１、４、３、１２、１０、２、８という順序（すなわち、サブピクセルインデックス１５、１３、７、など）で割り当てるが、割当ての他の順序も可能である。いくつかの例では、動き補償ユニット３５は、可能なオフセット値の総数を計算することができないことがあり、その場合、動き補償ユニット３５は、計算されたオフセットを上記で提示した順序に従って割り当てることができる。
【０１３７】
動き補償ユニット３５は、ＤＣminおよびＤＣmaxの計算において使用されるしきい値ｎｏＳａｍｐｌｅｓを判断するために、現在フレームと参照フレームとの間のフレームベースのＤＣ差を使用することができる。動き補償ユニット３５はまた、画像中のブロックの数に基づき、画像のサイズに従って、しきい値ｎｏＳａｍｐｌｅｓ値を計算することができる。一例では、動き補償ユニット３５は、割り当てるべきオフセット値の数は、２つのフレーム間のＤＣ差＋０．５に等しいと判断する。
【０１３８】
いくつかの例では、動き補償ユニット３５は、オフセット値の計算された数が計算値ＤＣmaxよりも大きいときはオフセット値の計算された数をＤＣmaxとして使用すべきか、またはオフセット値の計算された数が計算値ＤＣminよりも小さいときはオフセット値の計算された数をＤＣminとして使用すべきかを判断することによって、割り当てるＤＣオフセット値をさらに改善することができる。他の場合、動き補償ユニット３５は、ＤＣmaxおよび／またはＤＣminの最初に計算された値を使用することができる。
【０１３９】
動き補償ユニット３５は、最小値として１を有し、ＤＣmaxの値とＤＣminの値との間の差をサブ整数ピクセル位置の数、たとえば、１５で除算したものに等しい「ｒｏｕｎｄＦａｃｔ」の値を計算することができ、上記の差は、次に最も高い整数値に丸められる。動き補償ユニット３５は、以下を計算することによってＤＣmaxおよび／またはＤＣminの値をさらに改善することができる。
【数５】
2014042273.tif 000011
【０１４０】
以下の擬似コードは、上述したＤＣmaxおよびＤＣminを改善するための例示的な方法を表し、ただし、ｂｌｏｃｋＤＣは、同じく上述した例示的な方法のうちの１つを使用してＤＣminおよびＤＣmaxの初期値を計算し、ｂｌｏｃｋＤＣの後にくる擬似コードは、ＤＣminおよびＤＣmaxの値を改善する。
【数６】
2014042273.tif 000012
【０１４１】
図５は、図４に関して説明した例示的な方法に従って割り当てられたオフセット値をも
つ整数ピクセルロケーションを示す概念図である。特に、図５の例では、整数値に丸められた、参照フレームと現在フレームとの間の差、すなわち、ｒｏｕｎｄ（ＤＣＤｉｆｆ［ｉｄｘ］）は６であると仮定する。したがって、動き補償ユニット３５は、ピクセルロケーション｛５，１５，１３，７，９，６｝にそれぞれオフセット値１〜６を割り当てる。したがって、図５の例では、ピクセル「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｍ」、および「ｏ」にはそれぞれオフセット値１、６、４、５、３、および２が割り当てられる。本開示の技法によれば、動き推定ユニット３６は、動き探索を実行するとき、ピクセル「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｍ」、および「ｏ」のうちの１つまたは複数において開始するブロックをスキップすることを通常の探索アルゴリズムが指図するであろう場合でも、そのようなピクセルは定義されたオフセット値を有するので、ピクセル「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｍ」、および「ｏ」において開始するブロックを分析することができる。
【０１４２】
図６は、図４に関して説明した例示的な方法に従って割り当てられたオフセット値をもつ整数ピクセルロケーションを示す別の概念図である。特に、図６の例では、参照フレームと現在フレームとの間の差、すなわち、ＤＣＤｉｆｆ［ｉｄｘ］は０．７であると仮定する。したがって、図４の例に従ってｎｕｍＯｆｆｓｅｔＭｉｎが２に等しいと仮定すると、ＤＣＤｉｆｆ［ｉｄｘ］は、整数に丸められると、ｎｕｍＯｆｆｓｅｔＭｉｎよりも小さくなる。ＤＣＤｉｆｆ［ｉｄｘ］を０．１で除算すると７になり、したがってｎｕｍＯｆｆｓｅｔ１は７に等しい。図４の例示的な方法によれば、ｎｕｍＯｆｆｓｅｔｓ１に等しく、大きさがｓｇｎであるいくつかのオフセットが｛５，１５，１３，７，９，６，１１，１４｝の順序でピクセルロケーションに追加される。ここで、ｓｇｎは、ｓｉｇｎ（ＤＣＤｉｆｆ［ｉｄｘ］）に等しく、この例では１である。したがって、動き補償ユニット３５は、図６の例に示すように、ピクセル「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｍ」、および「ｏ」に値１のオフセットを割り当てる。本開示の技法によれば、動き推定ユニット３６は、動き探索を実行するとき、ピクセル位置「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｍ」、および「ｏ」のうちの１つまたは複数において開始するブロックをスキップすることを通常の動き探索アルゴリズムが指図するであろう場合でも、ピクセル「ｅ」、「ｆ」、「ｇ」、「ｉ」、「ｋ」、「ｍ」、および「ｏ」において開始するブロックを分析することができる。
【０１４３】
図７は、図４に関して説明した例示的な方法に従って割り当てられたオフセット値をもつ整数ピクセルロケーションを示す別の概念図である。特に、図７の例では、参照フレームと現在フレームとの間の差、すなわち、ＤＣＤｉｆｆ［ｉｄｘ］は１．３であると仮定する。したがって、図４の例に従ってｎｕｍＯｆｆｓｅｔＭｉｎが２に等しいと仮定すると、ＤＣＤｉｆｆ［ｉｄｘ］は、整数に丸められるとｎｕｍＯｆｆｓｅｔＭｉｎよりも小さくなる。ＤＣＤｉｆｆ［ｉｄｘ］を０．１で除算すると１３になり、したがってｎｕｍＯｆｆｓｅｔ１は１３に等しい。図４の例示的な方法によれば、大きさがｓｇｎである８つのオフセットが｛０，１，２，３，４，８，１０，１２｝の順序でピクセルロケーションに追加される。ここで、ｓｇｎは、ｓｉｇｎ（ＤＣＤｉｆｆ［ｉｄｘ］）に等しく、この例では１であり、また、ｎｕｍＯｆｆｓｅｔｓ１−８に等しく（この例では５）、大きさがｓｇｎであるいくつかのオフセットをピクセルロケーション｛１４，１１，６，９，７，１３，１５，５｝に追加する。したがって、動き補償ユニット３５は、図６の例に示すように、ピクセル「Ｃ３」、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、および「ｎ」に値１のオフセットを割り当てる。本開示の技法によれば動き推定ユニット３６は、動き探索を実行するとき、ピクセル「Ｃ３」、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、および「ｎ」のうちの１つまたは複数において開始するブロックをスキップすることを通常の動き探索アルゴリズムが指定している場合でも、ピクセル「Ｃ３」、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｆ」、「ｇ」、「ｈ」、「ｉ」、「ｊ」、「ｋ」、「ｌ」、および「ｎ」において開始するブロックを試みることができる。
【０１４４】
図８は、切替え補間フィルタおよびオフセットを使用してシングルパスでビデオデータを符号化するためのビデオエンコーダ２０の例示的な動作を示すフローチャートである。図８の例示的な方法は、以前に符号化されたフレームの履歴に基づいて補間フィルタを選択するための１つの例示的な方法を示している。説明のためにビデオエンコーダ２０（図２）に関して説明するが、図８に関して説明する方法を他のビデオエンコーダが採用することができることを理解されたい。最初に、ビデオエンコーダ２０は、ビデオソース１８（図１）などのビデオソースからデジタルビデオを受信する（８０）。デジタルビデオは、ビデオソース１８がビデオキャプチャデバイスを備えるときは、新たに記録されたビデオを備え、または他の場合には、あらかじめ記録された非符号化デジタルビデオを備えることができる。デジタルビデオは、一般に、各フレームが複数のスライスおよびマクロブロックを備える、複数のフレームのシーケンスを備える。ビデオエンコーダ２０は、ビデオシーケンス中のフレームをＩフレーム、Ｐフレーム、またはＢフレームとして符号化する。ＰフレームおよびＢフレーム内で、いくつかのマクロブロックはＩマクロブロックとして符号化されることがある。
【０１４５】
ビデオエンコーダ２０は、ピクチャグループ（ＧＯＰ）中の第１のフレームをイントラコード化Ｉフレームとして符号化する（８２）。次いで、参照フレームを再構成するために、符号化Ｉフレームが、たとえば、逆変換ユニット４４によって復号された後、ビデオエンコーダ２０は、Ｉフレームのサブ整数ピクセルの値を計算するために補間フィルタ３７のデフォルトセットを選択する（８４）。動き補償ユニット３５が、Ｉフレームの再構成されたバージョンを受信し、補間フィルタ３７の選択されたセットを使用してＩフレームのサブピクセルの値を計算する（８６）。第１のインターコード化ユニットの場合、フィルタの選択されたセットはフィルタのデフォルトセットであり得る。特に、Ｉフレームの各サブピクセルについて、動き補償ユニット３５は、対応するデフォルト補間フィルタを適用して、そのサブピクセルの値を計算する。いくつかの例では、あるサブピクセルのデフォルト補間フィルタは、同じＩフレームの別のサブピクセルのデフォルト補間フィルタとは異なることがある。設計者は、それらの補間フィルタのうちの１つをサブピクセル位置の各々のデフォルトとして指定し得る。ビデオエンコーダ２０は、サブピクセルのロケーションに最も低い誤差を履歴的に与えた、補間フィルタ３７のうちの１つをデフォルト補間フィルタとして選択することがあり、または、デフォルト補間フィルタは他の方法で選択されることがある。いずれの場合も、動き補償ユニット３５は、補間フィルタ３７のデフォルト補間フィルタを使用してＩフレームのサブピクセルの値を計算し、Ｉフレームを参照フレームストア３４に記憶する。
【０１４６】
動き補償ユニット３５はまた、参照フレームのピクセルおよびサブピクセルロケーションのうちの１つまたは複数についてのオフセット値を計算する（８８）。いくつかの例では、オフセット値は、参照フレームと、符号化すべき次のフレーム、たとえば、ＢフレームまたはＰフレームとの間の平均ピクセル値差を表すことがある。動き補償ユニット３５は、図４に関してまたは本開示の他の場所で説明する方法のいずれかを利用して、参照フレームのピクセルに対するオフセット値を計算し、割り当てることができる。オフセット値を計算した後、動き補償ユニット３５は、オフセット値に従って参照フレームのピクセル値を変更する。
【０１４７】
次いで、ビデオエンコーダ２０は、参照フレームに従って次のフレーム、たとえば、ＰフレームまたはＢフレームを符号化する（９０）。符号化すべき次のフレームがＰフレームであるときは、ビデオエンコーダ２０は、参照フレームストア３４中の最も最近のＩフレームまたはＰフレームに基づいて、そのフレームを符号化することができる。そのフレームがＢフレームであるときは、ビデオエンコーダ２０は、参照フレームストア３４の１つまたは複数のフレームに基づいて、そのフレームを符号化することができる。動き推定ユニット３６は、参照フレームストア３４の１つまたは複数のフレームに基づいて、そのフレームのコード化ユニット、たとえば、ブロックの動きベクトルを計算する。そのブロックの動きベクトルは、参照フレーム中の対応する予測ブロックをポイントする。動きベクトルは、参照フレーム内の整数またはサブ整数ピクセルロケーションを指すことがある。サブ整数精度動きベクトルの場合、上記で説明したように、参照フレームを補間して、サブピクセル位置において値を生成する（８６）。
【０１４８】
動きベクトルを計算するための動き探索中に、動き推定ユニット３６は、動き探索アルゴリズムに従っていくつかの整数またはサブ整数ピクセルの評価をスキップすることがある。ただし、動き推定ユニット３６は、本開示の技法によれば、動き探索アルゴリズムがそのピクセルをスキップすることを指定しているかどうかにかかわらず、動き補償ユニット３５がオフセット値を適用した整数およびサブ整数ピクセルから始まるブロックを評価するように構成できる。これは、動き探索アルゴリズムに従ってこれらの位置をスキップするであろう、いくつかの従来の動き推定ユニットとは反対である。一例では、従来の動き探索アルゴリズムが、動き補償ユニット３５がオフセット値を割り当てたサブ整数ピクセル位置のうちのいずれかまたはすべてをスキップすることを指図しているときでも、動き推定ユニット３６は、それらの位置の各々を明示的に検査するように構成できる。たとえば、動き補償ユニット３５が表５中の以下のオフセット値を以下のサブ整数ピクセル位置に割り当てた場合、表５は前記の表１と同じとなるが、説明しやすいように以下に再掲する。
【表５】
2014042273.tif 000013
【０１４９】
その場合、毎回、「仮想」オフセット｛−２，−１，０，１，２，３｝のうちの１つを参照ブロックに追加した後に、２つのブロックのＳＡＤの計算を６回計算することができる。最小のＳＡＤを有する動きベクトルを選択することができる。２つ以上の位置に現れるオフセット値（たとえば、サブピクセル位置１とサブピクセル位置１１の両方に現れるオフセット「２」）は１回のみ試みることができる。すなわち、動き推定ユニットは、各々が同じ計算されたオフセット値を有している複数のサブピクセルのうちの１つのみを探索することができる。
【０１５０】
動き補償ユニット３５は、符号化されているフレーム中の現在ブロックと参照フレームの予測ブロック中との間の差に基づいて、各ブロックの残差値を計算する。ビデオエンコーダ２０は、たとえば、ＤＣＴ、量子化およびエントロピーコーディングを使用して、動きベクトル、残差、および適用可能な補間フィルタの識別子、およびオフセット値を符号化し、このデータをコード化ビットストリームでデコーダに送信する。
【０１５１】
また、動き補償ユニット３５は、動き推定のために適用された選択された補間フィルタを使用して計算されたサブピクセルをもつ参照フレームを使用して符号化されたフレームの誤差値を判断する（９２）。動き補償ユニット３５はまた、動き推定のために各サブピクセル位置に対して使用され得た他の潜在的な補間フィルタの各々についての誤差値を判断する（９４）。このようにして、動き補償ユニット３５は、様々な残りの補間フィルタに基づいて誤差値を再計算することができる。たとえば、動き補償ユニット３５はコスト行列Ｃ［Ｆ］［Ｉ］を計算することができる。ｉがサブピクセル位置に対応し、ｆがサブピクセル位置ｉに対応する補間フィルタを指す、各（ｆ，ｉ）について、動き補償ユニット３５は、たとえば、図２に関して説明したように、補間フィルタｆを使用して計算された値をもつ各サブピクセル位置ｉについて、フレーム上で累積誤差を計算する。
【０１５２】
次いで、動き補償ユニット３５は、補間フィルタのどのセットが最も低い誤差値を生じたかを判断する（９６）。たとえば、動き補償ユニット３５は、各サブピクセル位置および各未試行のフィルタにわたって反復して、フレームの総誤差を最大量低減する位置とその補間フィルタとを判断することができる。次いで、動き補償ユニット３５は、フレームの総誤差を再計算し、反復の最大数が達せられるまで、または総誤差がしきい値量未満減少するまで、フレームの総誤差を低減する位置と対応する補間フィルタとを識別し続けることができる。この方法の一例は、図９に関して説明する。
【０１５３】
次いで、動き補償ユニット３５は、現在フレームが、ビデオシーケンス、たとえば、ピクチャグループ（ＧＯＰ）、フレームグループ中の、または完全記録ビデオシーケンス中の、最後のフレームであるかどうかを判断する（９８）。そうでない場合（９８の「ＮＯ」分岐）、動き補償ユニット３５は、以前に符号化されたフレームに補間フィルタの選択されたセットを適用して、サブピクセル値を計算し、そのフレームに対する後続フレームを符号化し、後続フレームが双方向符号化フレームであるときは、潜在的に別の参照フレームを符号化する。このプロセスは、補間フィルタが、以前のコーディングユニットまたは一連のコーディングユニットの最も低い誤差を生成することを判断するように、また、現在コーディングユニットの動き推定をサポートするために使用されるように、繰り返し続くことができる。このようにして、現在コーディングユニットの動き推定をサポートするための補間フィルタの選択は、１つまたは複数の以前にコーディングされたユニットについての履歴補間結果に基づく。上記で説明したように、補間フィルタは、より最近のコーディングユニットについての結果に対してより高い重み付けが与えられた累積補間結果に基づいて、選択され得る。
【０１５４】
図９は、現在フレームのサブピクセルの補間値を計算するために、以前にコーディングされたフレームについての履歴補間結果に基づいて補間フィルタの最適なセットを識別するための例示的な方法を示すフローチャートである。最初に、動き補償ユニット３５が、ｎ個のサブ整数ピクセル位置について０からｎ−１までの範囲の要素インデックスをもつ履歴決定ベクトルＤを受信する（１１０）。決定ベクトルＤの各要素は、対応するサブピクセルの値を計算するために使用される補間フィルタに対応する。
【０１５５】
次いで、動き補償ユニット３５は、コスト行列Ｃ［Ｆ］［Ｉ］を計算し、式中で、Ｉ中の各ｉはサブ整数ピクセル位置に対応し、Ｆ中の各ｆは、サブ整数ピクセルｉの値を計算するために使用される補間フィルタに対応し、式中、Ｃ［ｆ］［ｉ］は、補間フィルタｆを使用して計算された値をもつ、現在フレーム中の各サブ整数ピクセル位置ｉの誤差の合計に等しい。したがって、以下の式中、誤差（ｘ，ｉ）は、符号化フレームに対するフレーム中のピクセルｘに対するｉ番目のサブ整数ピクセルに関連する誤差値を指し、式中、各フレームはＭ個のピクセルを有する。
【数７】
2014042273.tif 000014
【０１５６】
動き補償ユニット３５は、各サブ整数ピクセルロケーションの各補間フィルタの誤差値を計算する。一例では、動き補償ユニット３５は、さらに、たとえば、参照フレームのみではなく、複数の履歴フレームについての累積補間誤差結果に基づいて補間フィルタ選択を行うために、現在フレームのコスト行列に先行フレームのコスト行列の分数値を加算することができる。コスト行列を計算した後、動き補償ユニット３５は、先行フレームの補間フィルタによって計算されたサブピクセルに対応する値を加算することによって、（１つまたは複数の）履歴フレームの誤差値を計算する（１１４）。すなわち、動き補償ユニット３５は、Ｉ中の各ｉについて、ｉがサブピクセル位置に対応し、ｆがｉの値を計算するために使用される補間フィルタに対応する、各Ｃ［ｆ］［ｉ］を累積することができる。この値は、一例では、ＳＡＤに対応する。
【０１５７】
次いで、動き補償ユニット３５は、最もＳＡＤ値を低減する位置ｉとｉの補間フィルタｆとを判断する（１１６）。たとえば、動き補償ユニット３５は、参照フレームのサブピクセルを計算するために使用されなかったサブピクセルと補間フィルタとの組合せについて、コスト行列中の各値にわたって反復し、これらの値を、参照フレームのために使用されたサブピクセルと補間フィルタとの組合せについての対応する値と比較することができる。未使用のサブピクセル位置と補間フィルタとの組合せと、対応するサブピクセル位置と、使用された補間フィルタとの間の最大の差は、この組合せである。この差が最小しきい値よりも大きいとき（１１８の「ＹＥＳ」分岐）、動き補償ユニット３５は、決定ベクトルにおいて、そのサブピクセル位置の使用された補間フィルタを、その位置における新たに判断された補間フィルタと交換し（１２０）、この新しい組合せを使用して誤差（たとえば、ＳＡＤ）を再計算する（１２２）。動き補償ユニット３５は、反復の最大数が達せられるまで（１２４の「ＹＥＳ」分岐）、または上記で説明した差が所定のしきい値よりも小さくなるまで（１１８の「ＮＯ」分岐）、このプロセスを反復することができる。次いで、動き補償ユニット３５は、更新された決定ベクトルを出力する（１２６）。次いで、更新された決定ベクトルを使用して、コーディングすべき現在ユニットの補間フィルタのセットを選択することができる。
【０１５８】
以下の擬似コードは、本開示のＤＣオフセット技法を実装するための例を与える。その擬似コードでは、「ｂｌｏｃｋＤＣ１」は、「ｌｉｓｔ」によって識別された参照フレームに基づいて、「ｉｎｐｕｔ」によって識別された１６×１６ピクセルブロックについてのＤＣオフセット値ＤＣｍｉｎおよびＤＣｍａｘを計算するためのプロシージャである。「ｎｏＳａｍｐｌｅｓ」は、ＤＣｍｉｎおよびＤＣｍａｘを計算するために利用可能であるプロシージャのためのサンプル数を定義する整数値である。「ｌｉｓｔ」は、参照フレームを識別する整数値である（ＩＴＵ  Ｈ．２６４用語に従って「ｌｉｓｔ」と呼ぶ）。一般に、ＢｌｏｃｋＤＣ１およびＢｌｏｃｋＤＣ２は、参照フレームの視感度と符号化されているフレーム（または現在フレーム）の視感度との間の差を推定する関数である。推定されたオフセットは、参照フレームに適用することができ、動き補償予測を改善するために使用できる。
【０１５９】
１つの手法は、参照フレームの平均視感度を考慮し、それを現在フレームの平均視感度と比較することであろう。このソリューションは、平均視感度が局所的な変動を表さないという欠点を有する。極めて異なる平均視感度をもつ２つのフレームが、動き補償された後、ほとんど同じマクロブロックになる場合が考えられる。これは、たとえば、明るい物体が遮られていない場合である。第２の可能性は、動き補償ブロック間のＤＣ差を推定するために動きベクトルを使用する。この方法は正確であるが、動きベクトルが利用可能でなければならないという欠点を有することがあり、したがって、現在フレームが複数回符号化されなければならないこと（少なくとも、動きベクトルを推定するための１回と、ＤＣオフセットを予測に適用するための１回があり、新たに計算されたオフセットを考慮に入れるために再計算する必要がある動き情報に影響を及ぼすことが知られている動作）が暗示される。
【０１６０】
ブロックベースのＤＣ差の計算により、動きベクトルを利用することなしに、上記で説明した問題などを克服し得る。ブロックベースのＤＣ差の計算は、何らかのサイズ（たとえば、１６×１６ピクセル）のコロケートブロックの間のＤＣ差に関する統計値の収集に基づき得る。その統計値はヒストグラムの形態で収集され得る。以下で提示する擬似コードでは、ＢｌｏｃｋＤＣ１およびＢｌｏｃｋＤＣ２は、オフセット値の範囲を定義するためのＤＣｍｉｎおよびＤＣｍａｘの値を設定するための技法を表す。参照フレーム中のブロックと現在フレーム中のブロックとを比較し、ピクセルの各ブロックについて、以下の２つの量を計算する。
【０１６１】
１）ピクセル差の２乗誤差（関数ＢｌｏｃｋＤＣ１またはＢｌｏｃｋＤＣ２におけるｅｒｒ０）
２）ブロックの平均ＤＣが各ピクセルの値に減算された後のピクセル差の２乗誤差（関数ＢｌｏｃｋＤＣ１またはＢｌｏｃｋＤＣ２におけるｅｒｒ１）
ブロックが十分類似しているかどうか（すなわち、コロケートブロック間の差が大部分はＤＣ差によって生じているかどうか）の推定は、上記の量１）と量２）との比較に基づき得る。たとえば、１）における誤差（ｅｒｒ０）が、２）における誤差（ｅｒｒ１）の２倍よりも大きい場合は、それらのブロックが十分類似しておらず、その差が大部分はＤＣ差によって生じていないと判断することができる。コロケートブロックが十分類似している場合は、それらの統計値を累積して、ブロックベースのＤＣ差のヒストグラムを含んでいるベクトルにすることができる。場合によっては、ＤＣ差は、それらのＤＣ差を整数値に丸めることによって量子化できる。
【０１６２】
ヒストグラムビンを検査することによって、ＤＣ差の範囲を導出し、ＤＣｍｉｎおよびＤＣｍａｘを計算することが可能である。ＢｌｏｃｋＤＣ１は、ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを含んでいる最左および最右ヒストグラムビンに対応するＤＣ値を判断することによって、ＤＣｍｉｎおよびＤＣｍａｘ値を計算する。ＢｌｏｃｋＤＣ２は、ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを有する正および負のＤＣ値に対応するビンの数を計数することによって、ＤＣｍｉｎおよびＤＣｍａｘ値を計算する。別の手法は、ＢｌｏｃｋＤＣ２の変形体として、ｎｏＳａｍｐｌｅｓ個よりも多くのサンプルを有する負および正のＤＣ値に対応するビンの数を計数するが、テストが初めて不合格になったときに計数を止めることがあり得る。以下の擬似コードでは、ｓｅｔＳｕｂｐｅｌＯｆｆｓｅｔ１およびｓｅｔＳｕｂｐｅｌＯｆｆｓｅｔ２は、関数ＢｌｏｃｋＤＣ１およびＢｌｏｃｋＤＣ２のうちの対応する関数の実行中に実行された計算に従ってフレームのサブ整数ピクセルのオフセット値（たとえば、ＤＣｍｉｎ、ＤＣｍａｘ、および／またはＤＣｍｉｎとＤＣｍａｘとの間の値）を設定する関数である。
【０１６３】
「ＢｌｏｃｋＤＣ１」プロシージャは、以下の擬似コードによって示されるように、「ｉｎｐｕｔ」によって識別された１６×１６ピクセルブロックについてのＤＣｍｉｎおよびＤＣｍａｘの値を設定するためのプロシージャの一例である。
【数８Ａ】
2014042273.tif 000015
【数８Ｂ】
2014042273.tif 000016
【数８Ｃ】
2014042273.tif 000017
【０１６４】
「ｓｅｔＳｕｂｐｅｌＯｆｆｓｅｔ１」は、ＤＣｍｉｎとＤＣｍａｘとの間の範囲において「ＳｕｂｐｅｌＯｆｆｓｅｔ［１６］」によって識別されたブロックのＤＣオフセット値を設定するためのプロシージャである。「ｌｉｓｔ」は、参照フレームを識別する整数値である。「ｉｍｇＯｆｆｓｅｔ」は、０よりも大きいインデックスを有する参照フレーム上で使用されるフレームオフセットを識別する。この例では、ｓｅｔＳｕｂｐｅｌＯｆｆｓｅｔ１がｂｌｏｃｋＤＣをコールし、それにより、上記で提示したｂｌｏｃｋＤＣ１のプロシージャを呼び出すことができる。
【数９Ａ】
2014042273.tif 000018
【数９Ｂ】
2014042273.tif 000019
【数９Ｃ】
2014042273.tif 000020
【０１６５】
「ＢｌｏｃｋＤＣ２」プロシージャは、以下の擬似コードによって示されるように、「
ｉｎｐｕｔ」によって識別された１６×１６ピクセルブロックについてのＤＣｍｉｎおよ
びＤＣｍａｘの値を設定するための別のプロシージャの一例である。ＤＣｍｉｎおよびＤ
Ｃｍａｘは、ＢｌｏｃｋＤＣ２によって計算された値へのポインタであり、別のプロシー
ジャは、それを、ブロックのＤＣ値をＤＣｍｉｎとＤＣｍａｘとの間に設定するための範
囲として使用し得る。「ｎｏＳａｍｐｌｅｓ」は、ＤＣオフセット値を計算するために利
用可能であるプロシージャのためのサンプル数を定義する整数値である。
【数１０Ａ】
2014042273.tif 000021
【数１０Ｂ】
2014042273.tif 000022
【数１０Ｃ】
2014042273.tif 000023
【０１６６】
「ｓｅｔＳｕｂｐｅｌＯｆｆｓｅｔ２」は、ＤＣｍｉｎとＤＣｍａｘとの間の範囲にお
いて「ｉｎｐｕｔ」によって識別されたブロックのサブ整数ピクセル位置のオフセット値
を設定するプロシージャである。この例では、ｓｅｔＳｕｂｐｅｌＯｆｆｓｅｔ１がｂｌ
ｏｃｋＤＣをコールし、それにより、上記で提示したｂｌｏｃｋＤＣ１またはｂｌｏｃｋ
ＤＣ２のいずれかのプロシージャを呼び出すことができる。
【数１１Ａ】
2014042273.tif 000024
【数１１Ｂ】
2014042273.tif 000025
【数１１Ｃ】
2014042273.tif 000026
【数１１Ｄ】
2014042273.tif 000027
【数１１Ｅ】
2014042273.tif 000028
【０１６７】
本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（すなわち、チップセット）を含む、多種多様なデバイスまたは装置において実現できる。機能的態様を強調するために与えられた任意の構成要素、モジュールまたはユニットについて説明したが、異なるハードウェアユニットによる実現を必ずしも必要とするわけではない。
【０１６８】
本開示で説明する技法は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装できる。たとえば、説明する技法の様々な態様は、１つまたは複数のマイクロプロセッサを含む１つまたは複数のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、あるいは他の等価な集積または個別論理回路、ならびにそのような構成要素の任意の組合せ内に実装できる。「プロセッサ」または「処理回路」という用語は、一般に、上記の論理回路のいずれかを、単独で、または他の論理回路と組み合わせて指し、あるいは他の等価な回路を指すことがある。
【０１６９】
そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示で説明する様々な動作および機能をサポートするために、同じデバイス内にまたは別々のデバイス内に実装できる。さらに、説明したユニット、モジュールまたは構成要素のいずれかを、一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装することができる。モジュールまたはユニットとしての様々な機能の図は、様々な機能的態様を強調するものであり、そのようなモジュールまたはユニットが別々のハードウェアまたはソフトウェア構成要素によって実現されなければならないことを必ずしも暗示するわけではない。そうではなく、１つまたは複数のモジュールまたはユニットに関連する機能は、別々のハードウェアまたはソフトウェア構成要素によって実行するか、あるいは共通または別々のハードウェアまたはソフトウェア構成要素内に組み込むことができる。
【０１７０】
また、本明細書で説明する技法は、命令を含んでいるコンピュータ可読記憶媒体などのコンピュータ可読媒体において実施または符号化することができる。コンピュータ可読媒体中に埋め込まれたか、または符号化された命令は、たとえば、その命令が実行されたとき、プログラマブルプロセッサまたは他のプロセッサに方法を実行させることができる。コンピュータ可読記憶媒体は、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、プログラマブル読取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、ハードディスク、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、カセット、磁気媒体、光学媒体、または他のコンピュータ可読媒体を含むことができる。
【０１７１】
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
【図１】
2014042273.tif 000029
【図２】
2014042273.tif 000030
【図３】
2014042273.tif 000031
【図４】
2014042273.tif 000032
【図５】
2014042273.tif 000033
【図６】
2014042273.tif 000034
【図７】
2014042273.tif 000035
【図８】
2014042273.tif 000036
【図９】
2014042273.tif 000037
【手続補正書】
【提出日】平成25年10月24日(2013.10.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択することと
を備えるビデオ符号化方法。
【請求項２】
前記補間フィルタを選択することが、
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断することと、
補間フィルタの第２のセットの第２の補間誤差値を判断することと、
前記第１の誤差値と前記第２の誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと
を備える、請求項１に記載の方法。
【請求項３】
前記補間フィルタを選択することが、
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
を備える、請求項１に記載の方法。
【請求項４】
前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項１に記載の方法。
【請求項５】
前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化することをさらに備える、請求項１に記載の方法。
【請求項６】
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択することと
を行うように構成されたビデオエンコーダを備えるビデオ符号化装置。
【請求項７】
前記ビデオエンコーダが、
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断することと、
補間フィルタの第２のセットの第２の補間誤差値を判断することと、
前記第１の誤差値と前記第２の誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと
を行うように構成された、請求項６に記載の装置。
【請求項８】
前記ビデオエンコーダが、
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
を行うように構成された、請求項６に記載の装置。
【請求項９】
前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項６に記載の装置。
【請求項１０】
前記ビデオエンコーダが、前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化するように構成された、請求項６に記載の装置。
【請求項１１】
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間するための手段と、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用するための手段と、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化するための手段と、
１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択するための手段と
を備えるビデオ符号化装置。
【請求項１２】
前記補間フィルタを選択するための前記手段が、
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断するための手段と、
補間フィルタの第２のセットの第２の補間誤差値を判断するための手段と、
前記第１の誤差値と前記第２の誤差値を比較するための手段と、
前記比較に基づいて前記補間フィルタを選択するための手段と
を備える、請求項１１に記載の装置。
【請求項１３】
前記補間フィルタを選択するための前記手段が、
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積するための手段と、
前記累積された補間誤差値に基づいて前記補間フィルタを選択するための手段と
を備える、請求項１１に記載の装置。
【請求項１４】
前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項１１に記載の装置。
【請求項１５】
前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化するための手段をさらに備える、請求項１１に記載の装置。
【請求項１６】
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択することと
を前記プロセッサに行わせるための命令で符号化されたコンピュータ可読記憶媒体。
【請求項１７】
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断することと、
補間フィルタの第２のセットの第２の補間誤差値を判断することと、
前記第１の誤差値と前記第２の誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと
を前記プロセッサに行わせるための命令をさらに備える、請求項１６に記載の記憶媒体。
【請求項１８】
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
を前記プロセッサに行わせるための命令をさらに備える、請求項１６に記載の記憶媒体。
【請求項１９】
前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項１６に記載の記憶媒体。
【請求項２０】
前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化することを前記プロセッサに行わせるための命令をさらに備える、請求項１６に記載の記憶媒体。
【請求項２１】
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
を前記プロセッサに行わせるための命令をさらに備える、請求項１６に記載の記憶媒体。
【請求項２２】
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
を前記プロセッサに行わせるための命令をさらに備える、請求項１６に記載の記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１７１
【補正方法】変更
【補正の内容】
【０１７１】
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
［１］現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
を備えるビデオ符号化方法。
［２］前記ブロックを符号化することは、符号化がシングルパスで実行されるように前記ブロックの動き推定を１回のみ実行することを備える、［１］に記載の方法。
［３］１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択することをさらに備える、［１］に記載の方法。
［４］前記補間フィルタを選択することが、
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断することと、
補間フィルタの第２のセットの第２の補間誤差値を判断することと、
前記第１の誤差値と前記第２の誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと
を備える、［３］に記載の方法。
［５］前記補間フィルタを選択することが、
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
を備える、［３］に記載の方法。
［６］前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、［３］に記載の方法。
［７］前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化することをさらに備える、［３］に記載の方法。
［８］前記ビデオブロックを符号化することが、
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
を備える、［１］に記載の方法。
［９］動き推定を実行することは、
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
を備える、［８］に記載の方法。
［１０］前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの１つを備える、［１］に記載の方法。
［１１］現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
を行うように構成されたビデオエンコーダを備えるビデオ符号化装置。
［１２］前記ビデオエンコーダが、符号化がシングルパスで実行されるように前記ブロックの動き推定を１回のみ実行するように構成された、［１１］に記載の装置。
［１３］前記ビデオエンコーダが、１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択するように構成された、［１１］に記載の装置。
［１４］前記ビデオエンコーダが、
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断することと、
補間フィルタの第２のセットの第２の補間誤差値を判断することと、
前記第１の誤差値と前記第２の誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと
を行うように構成された、［１３］に記載の装置。
［１５］前記ビデオエンコーダが、
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
を行うように構成された、請求項１３に記載の装置。
［１６］前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、［１３］に記載の装置。
［１７］前記ビデオエンコーダが、前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化するように構成された、［１３］に記載の装置。
［１８］前記ビデオエンコーダが、
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
を行うように構成された、［１１］に記載の装置。
［１９］前記ビデオエンコーダが、
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
を行うように構成された、［１８］に記載の装置。
［２０］前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの１つを備える、［１１］に記載の装置。
［２１］前記ビデオエンコーダがワイヤレス通信デバイスの一部を形成する、［１１］に記載の装置。
［２２］前記ビデオエンコーダが集積回路デバイスを備える、［１１］に記載の装置。
［２３］現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間するための手段と、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用するための手段と、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化するための手段と
を備えるビデオ符号化装置。
［２４］前記ブロックを符号化するための前記手段は、符号化がシングルパスで実行されるように前記ブロックの動き推定を１回のみ実行するための手段を備える、［２３］に記載の装置。
［２５］１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択するための手段をさらに備える、［２３］に記載の装置。
［２６］前記補間フィルタを選択するための前記手段が、
以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断するための手段と、
補間フィルタの第２のセットの第２の補間誤差値を判断するための手段と、
前記第１の誤差値と前記第２の誤差値を比較するための手段と、
前記比較に基づいて前記補間フィルタを選択するための手段と
を備える、［２５］に記載の装置。
［２７］  前記補間フィルタを選択するための前記手段が、
複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積するための手段と、
前記累積された補間誤差値に基づいて前記補間フィルタを選択するための手段と
を備える、［２５］に記載の装置。
［２８］前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、［２５］に記載の装置。
［２９］前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化するための手段をさらに備える、［２５］に記載の装置。
［３０］前記ビデオブロックを符号化するための前記手段が、
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行するための手段と、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断するための手段と、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断するための手段と
を備える、［２３］に記載の装置。
［３１］動き推定を実行するための前記手段は、
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行するための手段と、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制するための手段と
を備える、［３０］に記載の装置。
［３２］前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの１つを備える、［２３］に記載の装置。
［３３］現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
をプロセッサに行わせるための命令で符号化されたコンピュータ可読記憶媒体。
［３４］前記ブロックを符号化することは、符号化がシングルパスで実行されるように前記ブロックの動き推定を１回のみ実行することを備える、［３３］に記載の記憶媒体。
［３５］１つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択することを前記プロセッサに行わせるための命令をさらに備える、［３３］に記載の記憶媒体。
［３６］以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第１のセットの第１の補間誤差値を判断することと、
補間フィルタの第２のセットの第２の補間誤差値を判断することと、
前記第１の誤差値と前記第２の誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと
を前記プロセッサに行わせるための命令をさらに備える、［３５］に記載の記憶媒体。
［３７］複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
を前記プロセッサに行わせるための命令をさらに備える、［３５］に記載の記憶媒体。
［３８］前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、［３５］に記載の記憶媒体。
［３９］前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化することを前記プロセッサに行わせるための命令をさらに備える、［３５］に記載の記憶媒体。
［４０］前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
を前記プロセッサに行わせるための命令をさらに備える、［３５］に記載の記憶媒体。
［４１］オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
を前記プロセッサに行わせるための命令をさらに備える、［４０］に記載の記憶媒体。
［４２］前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの１つを備える、［３３］に記載の記憶媒体。
【外国語明細書】
2014042273000001.pdf