JP2012504904A - 補間フィルタおよびオフセットを用いたデジタルビデオコーディング - Google Patents

補間フィルタおよびオフセットを用いたデジタルビデオコーディング Download PDF

Info

Publication number
JP2012504904A
JP2012504904A JP2011530075A JP2011530075A JP2012504904A JP 2012504904 A JP2012504904 A JP 2012504904A JP 2011530075 A JP2011530075 A JP 2011530075A JP 2011530075 A JP2011530075 A JP 2011530075A JP 2012504904 A JP2012504904 A JP 2012504904A
Authority
JP
Japan
Prior art keywords
interpolation
block
video
sub
offset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011530075A
Other languages
English (en)
Other versions
JP5547198B2 (ja
Inventor
カークゼウィックズ、マルタ
モッタ、ジョバンニ
イエ、ヤン
チェン、ペイソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2012504904A publication Critical patent/JP2012504904A/ja
Application granted granted Critical
Publication of JP5547198B2 publication Critical patent/JP5547198B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/19Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本開示は、補間フィルタとオフセットとを使用してデジタルビデオデータを符号化するための技法について説明する。エンコーダは、フレームまたはスライスなど、以前に符号化されたビデオユニットについて得られた履歴補間結果に基づいて、サブピクセル精度動き推定の補間フィルタを選択するように構成できる。エンコーダはまた、参照ユニットとコーディングすべきユニットとの間の差に基づいて、補間後のサブピクセル位置に対するオフセットを計算し割り当てるように構成できる。オフセットの計算および割当ては動き推定の前に実行できる。動き探索が、オフセットが以前に追加されたサブピクセル位置を検討し、0でないオフセットを有するサブピクセル位置を評価するように、動き推定を改良することができる。場合によっては、所与のユニットのための補間フィルタ選択、オフセット計算、および/または改良された動き推定は、シングル符号化パスで実行できる。

Description

本出願は、その全体が参照により本明細書に組み込まれる、2008年10月3日に出願された米国仮特許出願第61/102,789号の利益を主張する。
本開示は、デジタルビデオコーディングに関し、より詳細には、補間フィルタおよびオフセットが使用されるビデオコーディング技法に関する。
デジタルビデオ機能は、デジタルテレビ、デジタル直接ブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話などを含む、広範囲にわたるデバイスに組み込むことができる。デジタルビデオデバイスは、MPEG−2、MPEG−4、またはITU−T H.264/MPEG−4、Part10、Advanced Video Coding(AVC)によって定義された規格、あるいは他の規格に記載されたビデオ圧縮技法などのビデオ圧縮技法を実装して、デジタルビデオ情報をより効率的に送信および受信する。ビデオ圧縮技法では、ビデオシーケンスに固有の冗長性を低減または除去するために空間的予測および/または時間的予測を実行することができる。
イントラコーディングは、空間的予測に依拠して、所与のコード化ユニット内のビデオブロック間の空間的冗長性を低減または除去する。インターコーディングは、時間的予測に依拠して、ビデオシーケンスの連続したコード化ユニット中のビデオブロック間の時間的冗長性を低減または除去する。インターコーディングの場合、ビデオエンコーダが、符号化すべきユニット中のブロックにぴったり一致する予測ブロックを参照ユニット中で識別し、コード化ブロックと予測ブロックとの間の相対変位を示す動きベクトルを生成するために、動き推定および補償を実行する。コード化ブロックと予測ブロックとの間の差は残差情報を構成する。したがって、インターコード化ブロックは、1つまたは複数の動きベクトルおよび残差情報によって特徴づけることができる。
いくつかのコーディングプロセスでは、動きベクトルは、ビデオコーダが整数ピクセル値よりも高い精度で動きを追跡することを可能にする、分数ピクセル値を有することがある。分数ピクセル値を用いた予測ブロックの識別をサポートするために、エンコーダは、参照ユニットに補間演算を適用して、クォーターピクセル位置またはハーフピクセル位置などのサブピクセル位置において値を生成する。H.264規格は、サブピクセル位置に対して固定補間方式の使用を指定する。場合によっては、コーディング効率および予測品質を改善するために、様々な補間フィルタを選択することができる。たとえば、エンコーダは、固定補間フィルタまたは適応補間フィルタの異なるセットを選択的に適用することができる。また、予測の品質をさらに改善するために、エンコーダは、補間後のサブピクセル位置値にオフセットを追加することができる。
一般に、本開示は、補間フィルタとオフセットとを使用してデジタルビデオデータを符号化するための技法について説明する。エンコーダは、フレームまたはスライスなど、以前に符号化されたビデオユニットについて得られた履歴補間結果に基づいて、サブピクセル精度動き推定の補間フィルタを選択するように構成できる。エンコーダはまた、参照ユニットとコーディングすべきユニットとの間のユニットおよび/またはブロック差に基づいて、補間後のサブピクセル位置に対するオフセットを計算し、割り当てるように構成できる。オフセットの計算および割当ては動き推定の前に実行できる。
さらに、動き探索が、オフセットが以前に追加されたサブピクセル位置を検討し、0でないオフセットを有するサブピクセル位置を評価するように、動き推定を改良することができる。場合によっては、所与のユニットのための補間フィルタ選択、オフセット計算、および/または改良された動き推定は、シングル符号化パスで実行できる。エンコーダは、いくつかの例では、1つまたは複数の以前に符号化されたユニットについての履歴情報が与えられれば、各サブピクセル位置において最も低い補間誤差を与える補間フィルタをエンコーダが選択できるように、各ユニット上の各補間フィルタおよび各サブピクセル位置についての誤差を累積することができる。
一例では、本開示は、現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、現在ビデオユニットの動き推定を実行する前に、参照ビデオユニットのサブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、参照ビデオユニットに基づく動き推定を使用して現在ビデオユニットのブロックを符号化することとを備えるビデオ符号化方法を提供する。
別の例では、本開示は、現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、現在ビデオユニットの動き推定を実行する前に、参照ビデオユニットのサブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、参照ビデオユニットに基づく動き推定を使用して現在ビデオユニットのブロックを符号化することとを行うように構成されたビデオエンコーダを備えるビデオ符号化装置を提供する。
追加の例では、本開示は、現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、現在ビデオユニットの動き推定を実行する前に、参照ビデオユニットのサブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、参照ビデオユニットに基づく動き推定を使用して現在ビデオユニットのブロックを符号化することとをプログラマブルプロセッサに行わせるための命令で符号化されたコンピュータ可読記憶媒体を提供する。
場合によっては、ブロックを符号化することは、符号化がシングルパスで実行されるようにブロックの動き推定を1回のみ実行することを備えることができる。1つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタのセットを選択することができる。それらの補間フィルタは、それぞれのサブ整数ピクセルに対応し、それらの補間フィルタは、サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む。オフセットは、フレーム単位またはブロック単位で決定できる。
1つまたは複数の例の詳細を添付の図面および以下の説明において示す。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
例示的なビデオ符号化および復号システムを示すブロック図。 補間およびオフセットを用いたビデオ符号化を実行するように構成されたビデオエンコーダの一例を示すブロック図。 図2のエンコーダによって符号化されたビデオデータを復号するように構成されたビデオデコーダの一例を示すブロック図。 予測データに関連する整数ピクセルロケーションと、補間予測データに関連するサブ整数ピクセルロケーションとを示す概念図。 オフセット値の割当てとともに参照ユニットの整数ピクセルロケーションを示す概念図。 オフセット値の割当てとともに参照ユニットの整数ピクセルロケーションを示す概念図。 オフセット値の割当てとともに参照ユニットの整数ピクセルロケーションを示す概念図。 補間およびオフセットを用いてビデオデータを符号化する際のビデオエンコーダの例示的な動作を示すフローチャート。 現在ユニットのサブピクセルの補間値を計算するために、履歴ユニットに対する補間フィルタの最適なセットを識別するための例示的な方法を示すフローチャート。
詳細な説明
本開示は、補間とオフセットとを使用してデジタルビデオデータを符号化するための技法について説明する。たとえば、エンコーダは、コーディングすべきユニットの動き推定をサポートするために、補間フィルタを選択し、参照ビデオユニット中のサブピクセル位置にオフセットを割り当てるように構成できる。コード化ユニットは、たとえば、マクロブロックなどのビデオブロックを含むビデオフレームまたはスライスとすることができる。フィルタおよびオフセットは、コーディングがシングルパスで実行され得るように、1つまたは複数の以前にコーディングされたユニットの履歴補間結果に基づいて、所与のユニットの動き推定に先だって選択できる。したがって、場合によっては、ブロックを符号化することは、符号化がシングルパスで実行されるように、ブロックの動き推定を1回のみ、すなわち、1度のみ実行することを備えることができる。
ビデオデータをシングルパスで符号化することは、コーディングすべきユニット中の所与のブロックに動き推定を1回のみ適用することを必要とする。動き推定および補償を1回実行してそれぞれのサブピクセル位置の補間フィルタを選択し、次いで選択された補間フィルタを再び適用する代わりに、エンコーダは、1つまたは複数の以前に符号化されたユニットのサブピクセル位置について得られた履歴補間結果に基づいて補間フィルタを選択することができる。
さらに、エンコーダは、コーディングすべきユニットの動き推定が実行される前に、補間サブピクセル位置に対するオフセットを計算し、割り当てるように構成できる。オフセットは、参照ユニットとコーディングすべきユニットとの間のユニットおよび/またはブロック差に基づいて判断できる。いくつかの例では、補間およびオフセットの選択後に、サブピクセル位置に以前に追加されたオフセットを検討し、0でないオフセット値を有するサブピクセル位置を評価するように動き探索が強制されるように、動き推定を改善することができる。いくつかの実装形態では、これらの特徴の組合せにより、向上した処理速度で、ほとんどまたはまったくパフォーマンスロスなしに、符号化をシングルパスで実行することが可能になり得る。
場合によっては、ビデオエンコーダは、現在ユニットNの参照ユニットとして使用されるコード化ユニットなど、以前にコーディングされたユニット(たとえば、N−1)の動き推定によって生成された補間誤差に基づいて、現在ユニットNの動き推定のために使用すべき補間フィルタを選択することができる。一例として、以前にコーディングされた参照ユニットN−1が符号化された後、参照ユニットN−1中のブロックと以前の参照ユニット(たとえば、N−2)中のブロックとの間の補間誤差が、サブピクセル位置の各々において判断され得る。ユニットN−1のこの履歴誤差情報を使用して、ビデオエンコーダは、誤差値を低減したであろう最適な補間フィルタを選択し、次いでそれらの補間フィルタを使用して、ユニットNの動き推定において使用するためのユニットN−1中のサブピクセル値を補間することができる。
他の場合には、サブピクセル動き推定に使用するために選択され得る補間フィルタのセットを仮定すれば、ビデオエンコーダは、各補間フィルタおよび各サブピクセル位置について、以前に符号化されたユニットとその1つまたは複数の参照ユニットとの間の補間誤差(すなわち、フレームN−1、N−2、N−3などの上でのサブピクセル位置の累積補間誤差値)を累積することができる。この累積補間誤差値は、コーディングすべき次のユニットの動き推定において使用すべき参照ユニット中のサブピクセル位置の補間のための補間フィルタを選択するために使用され得る履歴補間結果として、役立つことができる。たとえば、所与のサブピクセル位置について、補間のために、最も低い累積誤差値をもつ補間フィルタを選択することができる。
オーバーフローを防止し、より以前にコーディングされたユニットよりもより最近コーディングされたユニットの寄与により重く重み付けするウィンドウ効果をもたらすために、累積誤差値を時間とともにスケールダウンすることができる。たとえば、所与のサブピクセル位置に適用される各補間フィルタの累積誤差値は、一連の複数のコード化ユニット上のそれぞれの補間フィルタおよびサブピクセル位置についての個々の誤差値の重み付け和とし、より最近にコーディングされたユニットの誤差値はより重く重み付けされ得る。エンコーダは、各ユニットのコーディングの後に誤差値を評価し、それぞれのサブピクセル位置について最も低い累積誤差を生じる補間フィルタを選択することができる。
したがって、補間フィルタを選択するために、ビデオエンコーダは、1つの以前にコーディングされたビデオユニットまたは複数の以前にコーディングされたビデオユニットの履歴補間誤差に依拠することができる。特に、上記で説明したように、ビデオエンコーダは、以前にコーディングされたユニットの最適な補間誤差を生成したであろう補間フィルタのセットを選択し、それらの補間フィルタのセットを適用して、現在のコード化ユニットの動き推定を実行することができる。この意味では、以前にコーディングされたユニットの動き推定において、最適な結果を生成したであろう補間フィルタが使用されている場合、現在ユニットの動き推定はそれらの補間フィルタを使用して実行される。代替的に、上記で説明したように、ビデオエンコーダは、一連のユニット上で累積誤差値を生成した補間フィルタを選択することができる。各場合において、ビデオエンコーダは、1つまたは複数の以前にコーディングされたユニットの履歴補間結果に依拠する。
たとえば、異なるビデオコーディングユニット間の照度変化を補償するために、補間ピクセル値にDCオフセット値を適用することができる。DCオフセットは、フレーム中のすべてのピクセルが同じDCオフセットを使用するようにフレームレベルで適用するか、またはサブピクセル位置レベルで個々に適用することができる。DCオフセット値の計算および割当ては、参照ユニットと符号化すべき現在ユニットとの間のDCフレームおよびブロック差に基づくことができる。計算は、符号化すべき現在ユニットの動き推定が実行される前に「アプリオリ(“a priori”)」ベースで実行できる。現在ユニットと参照ユニットとの間のDCフレームおよびブロック差を分析することによって、いかなる動きベクトル情報も利用できないとき、現在ユニットを符号化する前にオフセットを適用することができ、シングルパス符号化が可能になる。
H.264規格に従って実行するように構築されたエンコーダなど、いくつかのビデオエンコーダは、複数の以前に符号化され、送信されたフレームからフレームを予測することができる。これらの参照フレームは、一般に1つまたは2つのリスト中に記憶され、各リストは、正の整数でインデックス付けされたいくつかのフレームを含むことができる。一般に、0(2つのリストが使用される場合は各リスト中で1)でインデックス付けされたフレームは、時間的に現在フレームにより近いフレームである。本開示で説明する手順を用いて判断されるサブピクセルオフセットは、一般に、現在フレームに最も近い参照フレーム(インデックス0でインデックス付けされたフレーム)のみに使用される。他のすべてのフレーム上では、サブピクセル位置とは無関係に、単純なDCオフセットが使用され得る。このオフセットは、参照フレームと現在フレームとの間の視感度の差として計算でき、現在フレーム上に適用できる。
サブピクセル位置に以前に追加されたDCオフセットを考慮に入れ、動き探索において0でないDCオフセットを有するサブピクセル位置の評価を強制するように、改良された動き推定プロセスを適用することができる。予測動き推定は、コーディングすべきブロックに対応する可能性がより高いロケーションを予測することと、探索をパターンに構造化することとによって、動き探索の複雑さを低減することができる。しかしながら、予測動き推定プロセスは、DCオフセット値が割り当てられたいくつかのサブピクセル位置をテストすることをスキップし得る。この制限は、ひずみの推定中に定義されたDCオフセットをもつサブピクセル位置を明示的に探索する動き探索を行うことによって、克服できる。このようにして、動き探索は、0でないオフセットを有するサブピクセル位置が明示的に探索されることを必要とするように構成できる。
さらに、動き探索は、仮想ブロックDCオフセットを計算するように構成できる。たとえば、動き探索中に計算されるSAD誤差は、すべての可能なオフセットを考慮に入れることができる。動き探索は、オフセットを適用する前にブロックを比較する(ブロック間のSAD誤差を計算する)。この可能性を考慮に入れるために動き探索を使用できるよう計算されたオフセットを、動き探索に与えることによって、パフォーマンスを改善することが可能であり得る。たとえば、以下の表1に示すように、それぞれの位置に対してサブピクセルオフセットを使用しなければならないとアルゴリズムが判断した場合、毎回、「仮想」オフセット{−2,−1,0,1,2,3}のうちの1つを参照ブロックに追加した後に、2つのブロックのSADの計算を6回計算することができる。
Figure 2012504904
最小のSADを有する動きベクトルを選択することができる。2つ以上の位置に現れるオフセット値(たとえば、サブピクセル位置1とサブピクセル位置11の両方に現れるオフセット「2」)は1回のみ試みることができる。すなわち、動き推定ユニットは、各々が同じ計算されたオフセット値を有している複数のサブピクセルのうちの1つのみを探索することができる。
図1は、本開示の技法を実装することができる例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、通信チャネル15を介して符号化ビデオを宛先デバイス16に送信するソースデバイス12を含む。ソースデバイス12および宛先デバイス16は、ワイヤードデバイスとワイヤレスデバイスとを含む、広い範囲のデバイスのいずれかを備えることができる。場合によっては、ソースデバイス12および宛先デバイス16は、いわゆるセルラー無線電話または衛星無線電話のワイヤレスハンドセットなどのワイヤレス通信デバイス、または通信チャネル15を介してビデオ情報を伝達することができ、その場合、通信チャネル15がワイヤレス通信媒体を含む任意のワイヤレスデバイスを備えることができる。
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器(モデム)22と、送信機24とを含むことができる。宛先デバイス16は、受信機26と、モデム28と、ビデオデコーダ30と、表示デバイス32とを含むことができる。ソースデバイス12のビデオエンコーダ20は、本開示においてビデオ符号化プロセスの一部として説明する1つまたは複数のコーディング技法を適用するように構成できる。同様に、宛先デバイス16のビデオデコーダ30は、本開示においてビデオ復号プロセスの一部として説明する1つまたは複数のコーディング技法を適用するように構成できる。
本開示で説明する符号化技法は、サブピクセル解像度への動き補償補間をサポートする任意の符号化デバイスによって実行できる。図1の例では、ソースデバイス12は、宛先デバイス16に送信するためのコード化ビデオデータを生成する。デバイス12、16は、デバイス12、16の各々がビデオ符号化および復号構成要素を含むように実質的に対称的に動作することができる。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話通信のために、ビデオデバイス12とビデオデバイス16との間の一方向または双方向のビデオ送信をサポートすることができる。
ソースデバイス12のビデオソース18は、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、またはビデオコンテンツプロバイダからのビデオフィードなど、ビデオキャプチャデバイスを含むことができる。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成することができる。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス16は、いわゆるカメラ付き携帯電話またはビデオ電話を形成することができる。各場合において、キャプチャされたビデオ、あらかじめキャプチャされたビデオ、またはコンピュータ生成ビデオをビデオエンコーダ20によって符号化することができる。符号化ビデオデータは、通信規格に従ってモデム22によって変調し、送信機24を介して宛先デバイス16に送信できる。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含むことができる。送信機24は、増幅器、フィルタ、および1つまたは複数のアンテナを含め、データを送信するために設計された回路を含むことができる。
宛先デバイス16の受信機26はチャネル15を介して情報を受信し、モデム28はその情報を復調する。ビデオデコーダ30によって実行されるビデオ復号プロセスは、デバイス12から受信されたビデオデータを復号し再生するために、補間フィルタ、オフセット値、動きベクトルおよび残差情報を利用することができる。たとえば、チャネル15を介して通信される情報は、特定のフレーム、スライスおよびブロックについてビデオエンコーダ20によって定義されたオフセット情報を含むことができる。表示デバイス32は、復号ビデオデータをユーザに対して表示するもので、陰極線管、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプの表示デバイスなど、様々な表示デバイスのいずれかを備えることができる。
図1の例では、通信チャネル15は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理的伝送線路など、ワイヤレスまたは有線の任意の通信媒体、あるいはワイヤレスおよび有線の媒体の任意の組合せを備えることができる。通信チャネル15は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成することができる。通信チャネル15は、一般に、ビデオデータをソースデバイス12から宛先デバイス16へ送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル15は、ソースデバイス12から宛先デバイス16への通信を可能にするのに有用なルータ、スイッチ、基地局、または任意の他の機器を含むことができる。
ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4、Part10、Advanced Video Coding(AVC)として説明されるITU−T H.264規格など、ビデオ圧縮規格に従って動作することができる。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびデコーダと統合でき、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を扱うことができる。適用可能な場合、MUX−DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠することができる。
ITU−T H.264/MPEG−4(AVC)規格は、Joint Video Team(JVT)として知られる共同パートナーシップの成果として、ISO/IEC Moving Picture Experts Group(MPEG)とともにITU−T Video Coding Experts Group(VCEG)によって策定された。いくつかの態様では、本開示で説明する技法は、一般にH.264規格に準拠するデバイスに適用できる。H.264規格は、ITU−T Study Groupによる2005年3月付けのITU−T勧告H.264「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではH.264規格またはH.264仕様、あるいはH.264/AVC規格または仕様と呼ぶ。Joint Video Team(JVT)はH.264/MPEG−4 AVCへの拡張の取り組みを続けている。
ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せとして実装できる。ビデオエンコーダ20およびビデオデコーダ30の各々を1つまたは複数のエンコーダまたはデコーダ中に含めることができ、そのいずれも複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれモバイルデバイス、加入者デバイス、ブロードキャストデバイス、サーバなどに統合できる。
ビデオシーケンスは、一般に一連のビデオフレームを含む。ビデオエンコーダ20は、ビデオデータを符号化するために個々のビデオフレーム内のビデオブロック上で動作する。ビデオブロックは、サイズを固定することも変更することもでき、指定のコーディング規格に応じてサイズが異なることがある。各ビデオフレームは一連のスライスを含む。各スライスは一連のマクロブロックを含むことができ、それらの一連のマクロブロックはサブブロック中に配置できる。一例として、ITU−T H.264規格は、ルーマ(luma)成分については16×16、8×8、または4×4、およびクロマ成分については8×8など、様々なブロックサイズのイントラ予測をサポートし、かつ、ルーマ成分については16×16、16×8、8×16、8×8、8×4、4×8および4×4、およびクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。ビデオブロックは、ピクセルデータのブロック、または、たとえば離散コサイン変換もしくは概念的に同様の変換プロセスなどの変換プロセスの後の変換係数のブロックを備えることができる。
ビデオブロックは、小さいほどより良い解像度が得られ、高い精細レベルを含むビデオユニットの位置に使用することができる。一般に、マクロブロックおよび様々なサブブロックはビデオブロックであると見なすことができる。さらに、スライスまたはフレームは、マクロブロックおよび/またはサブブロックなどの一連のビデオブロックを備えるビデオユニットであると見なすことができる。各フレームはビデオシーケンスの単独で復号可能なユニットであり、各スライスはビデオフレームの単独で復号可能なユニットであるとすることができる。「コード化ユニット」という用語は、フレーム全体、フレームのスライス、または適用可能なコーディング技法に従って定義された別の単独で復号可能なユニットなど、単独で復号可能な任意のユニットを指す。
予測コーディングの後、およびH.264/AVCまたは離散コサイン変換(DCT)において使用される4×4または8×8整数変換などの任意の変換に続き、量子化を実行することができる。量子化は、一般に、係数を表すために使用されるデータ量を低減するために係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、量子化中に16ビット値を15ビット値に切り詰めることができる。量子化の後、たとえば、コンテンツ適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、または別のエントロピーコーディングプロセスに従ってエントロピーコーディングを実行することができる。
本開示の技法によれば、ビデオエンコーダ20は、補間フィルタとオフセット値とを使用してビデオユニットをシングルパスで符号化することができる。したがって、場合によっては、ブロックを符号化することは、符号化がシングルパスで実行されるようにブロックの動き推定を1回のみ実行することを備えることができる。一例では、ビデオエンコーダ20は、固定の係数をもつ補間フィルタのセットを含むことができる。すなわち、補間フィルタのセットは、エンコーダが係数を動的に判断するであろう適応フィルタを必ずしも含む必要はない。代わりに、エンコーダ20は、複数の代替固定補間フィルタから各サブピクセル位置の補間フィルタを選択することができる。
異なるサブピクセル位置の補間には異なる補間フィルタを選択することができる。各サブ整数ピクセル位置は、デフォルト補間フィルタと、履歴補間結果に基づいてそれぞれのサブ整数ピクセル位置を補間するために選択され得る複数の他の補間フィルタとを有することができる。ビデオエンコーダ20は、それぞれのサブ整数ピクセル位置のデフォルト補間フィルタを使用して最初に参照ユニットのサブ整数ピクセル値を計算することによって、第1のインターコード化ビデオユニット、たとえば、第1のPフレームのマクロブロックを符号化することができる。
参照ユニット中のサブ整数ピクセル値が補間されると、ビデオエンコーダ20は、参照ユニットの整数と分数の両方のサブピクセル位置を利用して、符号化されている次のPフレームのマクロブロックの動きベクトルを計算することができる。特に、ビデオエンコーダ20は、たとえば、絶対値差分和(SAD)、平方差分和(SSD)などのピクセル差分計算に基づいて、コーディングされている現在ユニット中のそれぞれのブロックに最もぴったり一致する以前にコーディングされた参照ユニット中のブロックを探索することができる。
参照ユニット中の予測ブロックに対してコーディングすべき第1のPユニットの各マクロブロックの動きベクトルを生成した後、ビデオエンコーダ20は、たとえば、予測マクロブロック(すなわち、参照ユニットの参照マクロブロック)とPユニットの実際のマクロブロックとの間のピクセル値の差に基づいて、第1のPユニットの各マクロブロックの誤差値を判断することができる。上記で説明したように、誤差値は、たとえば、絶対値差分和(SAD)または平方差分和(SSD)の値を備えることができる。
次いで、ビデオエンコーダ20は、補間フィルタの異なるセットがより低い誤差値をもたらしたであろうかどうかを判断することができる。特に、ビデオエンコーダ20は、それぞれのサブピクセル位置について、参照マクロブロックのサブ整数ピクセル値の値を再計算し、動きベクトルによって識別される再計算マクロブロックの誤差値を計算することによって、最も低い誤差値になったであろう補間フィルタを識別することができる。次いで、ビデオエンコーダ20は、どの補間フィルタが、各サブ整数ピクセル位置のユニットについての最も低い絶対誤差値または最も低い平均誤差値を与えたかを判断することができる。
このようにして、ビデオエンコーダ20は、参照ユニットのために最適な結果を生成したであろう補間フィルタに基づいて現在ユニットのために使用される参照ユニットのサブ整数ピクセル位置を補間するための補間フィルタを選択することができる。いくつかの例では、ビデオエンコーダ20は、さらに、一連の符号ユニットにわたって各サブ整数ピクセル位置における各補間フィルタの累積誤差値を計算することができる。ビデオエンコーダ20は、累積誤差値を使用して、サブ整数ピクセル位置に履歴的に最適な値を与える補間フィルタを選択することができる。
ビデオエンコーダ20は、先行フレームについて、または一連の先行フレームにわたって、いずれの補間フィルタが最も低い誤差値を生じたかを識別することができる。誤差値は、フレームの一連にわたって各補間フィルタおよび各サブピクセル位置について追跡できる。各サブピクセル位置はそれぞれの補間フィルタを用いて計算できる。複数の補間フィルタが各サブピクセル位置についての選択に利用できることがある。複数のそれぞれのサブピクセル位置の補間をサポートするために補間フィルタのセットを選択することができる。
一例では、ビデオエンコーダ20がPフレームまたはBフレームなどの次の予測ユニットを符号化する前に、ビデオエンコーダ20は、以前に符号化されたユニットの(1つまたは複数の)参照ユニットについて最も低い誤差値をもたらしたであろう補間フィルタを使用して、以前に符号化されたユニットのサブ整数ピクセルの値を計算する。同様に、後続の各インターコード化フレームについて、ビデオエンコーダ20は、いずれの補間フィルタがその参照ユニットの最も低い誤差値をもたらしたであろうかを識別することができ、そして、最も最近符号化されたユニットのサブ整数ピクセルの値を計算するためにそれらの補間フィルタを最も最近符号化されたユニットに適用し、次いで、それらの値が動き推定の参照フレームとして使用されることになる。
場合によっては、ビデオエンコーダ20は、いずれの補間フィルタが、一連のコード化ユニットにわたって各サブピクセル位置の最も低い履歴累積補間誤差値を有するかを識別することができる。複数の補間フィルタの各々によって各サブピクセル位置について生成された誤差値を追跡することにより、コーディングすべき次のフレームの動き推定をサポートするように、それぞれのサブピクセル位置について最も低い誤差値を生成した補間フィルタを補間のために選択することができる。このようにして、ビデオエンコーダ20は、以前にコーディングされたフレームの履歴補間結果に基づいてサブピクセル位置の補間フィルタを選択することができる。ビデオエンコーダ20によって分析される履歴補間結果は、いくつかのユニットの補間誤差を、または、場合によっては単一ユニットの補間誤差のみを考慮に入れることができる。特に、ビデオエンコーダ20は、複数のフレームにわたる累積誤差結果を分析するか、または単に現在ユニットNの参照ユニット(たとえば、N−1)と以前の参照ユニットN−2との間の補間誤差を分析することができる。
一例として、補間すべきn個のサブピクセル位置と、そのn個のサブピクセル位置の各々を補間するために選択され得るm個の異なる補間フィルタとがある場合、ビデオエンコーダ20はn×m個の異なる誤差値を計算することができる。各誤差値は、コーディングすべき以前のユニット中の実際のピクセル値に対する、m個の補間フィルタのうちの所与の1つに従って計算されたn個のサブピクセル位置値のうちの所与の1つに対する誤差値を表すことができる。ブロック単位で、誤差値は、コーディングすべきブロックのピクセル値と、補間フィルタの所与のセットを使用して生成された補間予測ブロック中のサブピクセル位置のピクセル値との間の、ピクセル値の差に基づくことができる。サブピクセル位置の補間フィルタは、フレーム上のすべての対応するサブピクセル位置に適用できる。同様に、各補間フィルタおよびサブピクセル位置の誤差値がフレーム上で与えられ得る。たとえば、誤差値は、所与のフレームの平均値または中間値あるいは合計値とすることができる。
上述のように、一連のユニットにわたって各サブピクセル位置および補間フィルタの誤差値を累積して、補間フィルタとサブピクセル位置の各組合せの累積誤差値を生成することができる。場合によっては、一連のユニットにわたる誤差値は重み付け和を使用して合計でき、より最近コーディングされたフレームの誤差値が、コーディングすべき現在フレームに対して以前にコーディングされたフレームよりも重く重み付けされる。
一例として、コーディングすべきユニットについて、累積誤差値は、コーディングすべきユニットの直前の、ウィンドウ中の最初のユニットからウィンドウ中の最後のユニットまでの重み付けされた誤差値を合計し、より以前のユニットの誤差値は、より後のユニットの誤差値よりも小さい重み付け係数で重み付けされるように、スライディングウィンドウを使用することができる。重み付け係数は、より初期にコーディングされたユニットからより低いコード化ユニットに漸進的に増加することができる。さらに、累積誤差は、オーバーフローを防止するために周期的にスケールダウンできる。より以前にコーディングされたユニットの誤差値は、ウィンドウ外に出るにつれて最終的にフェーズアウトされ得る。
現在ユニットをコーディングするための特定のサブピクセル位置の特定の補間フィルタを選択するために、ビデオエンコーダ20は、以前にコーディングされたユニットの範囲にわたってその補間フィルタおよびサブピクセル位置の誤差値の重み付け和を評価することができる。次いで、所与のサブピクセル位置について最も低い累積誤差を生じる補間フィルタを、コーディングすべき次のユニットのためのそのサブピクセル位置の補間に使用すべき補間フィルタとして選択することができる。
所与のサブピクセル位置について選択した補間フィルタは、コーディングユニットにわたってブロック中の対応するサブピクセル位置におけるすべてのピクセルのための補間フィルタとして使用できる。特に、選択したフィルタは、コーディングすべき次のユニットの動き探索をサポートするために、参照ユニット中のそのサブピクセル位置を補間するために使用される。各ブロック中にn個のサブピクセル位置がある場合、エンコーダ20は、それぞれのサブピクセル位置についてn個の異なる補間フィルタのセットを選択することができる。ユニットの各ブロック中のサブピクセル位置には補間フィルタの同じセットを使用することができる。
補間の後に、および動き推定より前に、ビデオエンコーダ20は、補間されたサブピクセル位置におけるピクセル値にオフセット値を適用することもできる。ビデオエンコーダ20は、フレーム、またはスライスなどのフレームの単独で復号可能な部分など、ビデオデータのコード化ユニットについて複数のオフセット値を計算することができる。異なるオフセット値は、ビデオブロックに関連付けられた複数の異なる整数およびサブ整数ピクセルロケーションに関連し得る。サブ整数ピクセルロケーションは、整数ピクセルロケーションにおけるデータに基づいて、上記で説明したように、補間(interpolated)または外挿(extrapolated)された、一般的には補間された、データのロケーションを定義することができる。ビデオエンコーダ20は、予測ビデオブロック中の整数ピクセル位置およびサブピクセル位置にオフセット値を適用してオフセット予測ビデオブロックを生成し、そのオフセット予測ビデオブロックに基づいてコード化ユニットのビデオブロックを符号化することができる。
ビデオエンコーダ20はまた、コード化ユニットのコード化ビデオブロックを含むコード化ビットストリームの一部としてオフセット値を符号化し、ソースデバイス12の送信機24は、コード化ビットストリームを宛先デバイス16の受信機26に送信することができる。特に、ビデオエンコーダ20は、予測ビデオブロックのピクセル値を調整することによってオフセット値を適用することができ、オフセット予測ビデオブロックに基づいて残差を生成することによってオフセット予測ビデオブロックに基づいてビデオブロックを符号化することができる。たとえば、残差は、適切なオフセット予測ビデオブロックからコーディングすべきブロックを減算することによって生成できる。オフセットは、予測ビデオブロックのロケーションに基づいて、オフセット予測ビデオブロックのピクセル値に追加されるので、たとえば、フラッシュまたは背景照明の変化中に、コーディング効率を向上させることができる。
コーディングすべきユニットの動き探索を実行するとき、ビデオエンコーダ20は参照コーディングユニット中の予測ブロックを識別する。場合によっては、動き探索アルゴリズムは、いくつかのサブピクセル値をスキップするように構成できる。特に、一部の予測動き推定は、コーディングすべきブロックに対応する可能性がより高いロケーションを予測することと、探索をパターンに構造化することとによって、動き探索の複雑さを低減することができる。しかしながら、予測動き推定プロセスは、DCオフセット値が割り当てられたいくつかのサブピクセル位置をテストすることをスキップし得る。動き探索は0でないオフセット値を有するサブピクセル位置を明示的に探索するものである、という要件を課すことによって、ビデオエンコーダ20は、予測動き推定プロセスにおけるこの制限を克服するように構成できる。
宛先デバイス16において、ビデオデコーダ30は、ビデオデータと、ビデオデータの各コード化ユニットの複数のオフセット値とを符号化するために使用される補間フィルタの識別子を受信する。たとえば、これらの識別子は、コード化ビットストリーム中に与えられた、フレームヘッダまたはスライスヘッダなどのユニットヘッダ中のシンタックス要素としてビデオエンコーダ20によってコーディングできる。ビデオデコーダ30は、ビデオエンコーダ20と同じ補間フィルタのセットのパラメータを記憶することができる。ビデオデコーダ30は、ビデオエンコーダ20によって識別された補間フィルタを適用して予測ビデオブロックのサブ整数ピクセルの値を計算し、オフセット値を予測ビデオブロックに適用してオフセット予測ビデオブロックを生成し、そのオフセット予測ビデオブロックに基づいてコード化ユニットのビデオブロックを復号する。
特に、動きベクトルおよび補間フィルタを使用して、ビデオデコーダ30は、復号すべきユニット中のそれぞれのブロックの予測ブロックを取得し、予測ブロックに残差情報を加算して、復号ユニット中の所望のブロックを再生することができる。このようにして、補間フィルタおよびオフセット値は、ビデオエンコーダ20において符号化プロセスの一部として定義され、適用され、次いで、補間フィルタおよびオフセット値を識別する情報がソースデバイス12から宛先デバイス16に符号化ビットストリームの一部として通信される。次いで、ビデオユニットのピクセル値を再構成するために、オフセット値は、ビデオデコーダ30において復号プロセスの一部として補間予測データに適用される。
図2は、本開示で説明する補間およびオフセット技法を適用することができるビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、フレームまたはスライスなどのビデオユニット内のブロックのイントラコーディングおよびインターコーディングを実行することができる。ただし、説明しやすいように、図2ではビデオエンコーダ20のイントラコーディング構成要素を詳細に示していない。イントラコーディングは、空間的予測に依拠して、所与のビデオユニット内のビデオの空間的冗長性を低減または除去する。インターコーディングは、時間的予測に依拠して、ビデオシーケンスの隣接ユニット(たとえば、フレーム)内のビデオの時間的冗長性を低減または除去する。イントラモード(Iモード)は空間ベースの圧縮モードを指し、予測(Pモード)または双方向(Bモード)などのインターモードは、時間ベースの圧縮モードを指す。本開示の技法は、ビデオエンコーダ20によってインター符号化中に適用できる。
図2に示すように、ビデオエンコーダ20は、符号化すべきビデオフレーム内の現在ビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、動き推定ユニット36と、動き補償ユニット35と、参照フレームストア34と、加算器48と、変換ユニット38と、量子化ユニット40と、エントロピーコーディングユニット46とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット42と、逆変換ユニット44と、加算器51とを含む。再構成されたビデオからブロッキネスアーティファクト(blockiness artifacts)を除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(図示せず)を含めることもできる。必要な場合、デブロッキングフィルタは加算器51の出力をフィルタ処理することができる。
符号化プロセス中に、ビデオエンコーダ20はコーディングすべきビデオブロックを受信し、動き推定ユニット36および動き補償ユニット35はインター予測コーディングを実行する。動き推定ユニット36と動き補償ユニット35は高度に一体化できるが、概念的な目的のために別々に示している。動き推定は、一般に、ビデオブロックの動きを推定する、動きベクトルを生成するプロセスと見なされ、参照ユニット中の対応する予測ブロックの識別をもたらす。動きベクトルは、たとえば、現在フレーム(または他のコード化ユニット)内のコーディングされている現在ブロックに対する、予測フレーム(または他のコード化ユニット)内の予測ブロックの変位を示すことができる。動き補償は、一般に、動き推定によって判断された動きベクトルに基づいて予測ブロックをフェッチまたは生成するプロセスと見なされる。ここでも、動き推定ユニット36と動き補償ユニット35は機能的に一体化できる。例示のために、動き補償ユニット35は、本開示の補間フィルタおよびオフセット技法の選択を実行するものとして説明する。
例示のために、フレームの形態のコーディングユニットについて説明する。ただし、スライスなどの他のコーディングユニットを使用することもできる。動き推定ユニット36は、インターコード化フレームのビデオブロックを参照フレームストア34中の参照フレームのビデオブロックと比較することによって、そのインター符号化フレームのビデオブロックの動きベクトルを計算する。動き補償ユニット35は、以前に符号化されたフレーム、たとえば、IフレームまたはPフレーム中の複数のサブピクセル位置の各々におけるピクセル値を計算するために適用すべき複数の補間フィルタ37のうちの1つを選択する。すなわち、ビデオエンコーダ20は、ブロック中の各サブピクセル位置の補間フィルタを選択することができる。
選択される補間フィルタは、異なるサブピクセル位置に対して異なることができる。ブロック中の異なるサブピクセル位置に適用される補間フィルタのセットは、参照フレーム中のすべてのブロックに対して同じとすることができる。たとえば、補間フィルタF1がブロック中のサブピクセル位置x1、y1のために選択された場合、同じ補間フィルタF1を同じフレーム中のすべてのブロック中のその同じサブピクセル位置に使用することができる。サブピクセル位置は、代替的に、サブ整数ピクセル、サブピクセルまたはサブペルと呼ばれることがある。
動き補償ユニット35は、1つまたは複数の以前に符号化されたフレームの補間誤差履歴に基づいて補間フィルタ37から補間フィルタを選択することができる。特に、フレームが変換ユニット38および量子化ユニット40によって符号化された後、逆量子化ユニット42および逆変換ユニット44は以前に符号化されたフレームを復号する。一例では、動き補償ユニット35は、選択された補間フィルタ37を以前に符号化されたフレームに適用してフレームのサブ整数ピクセルの値を計算し、参照フレームストア34に記憶される参照フレームを形成する。
後続フレームについて、動き補償ユニット35は、その後続フレームのサブ整数ピクセル値を計算するために補間フィルタ37の異なるセットを適用することができる。異なる補間フィルタの選択は、動き補償ユニット35が、一連のフレームにわたってそれぞれのサブピクセル位置について最も低い累積誤差値をもつ補間フィルタ37を選択するように、所与のサブピクセル位置における補間フィルタの各々の累積誤差など、以前に符号化されたフレームの履歴に基づくことができる。誤差値は、所与のフレーム中の実際のピクセル値と参照フレーム中の補間ピクセル値との間の差に基づくことができる。
補間フィルタ37は複数の補間フィルタを備えることができる。潜在的な各サブ整数ピクセル位置は、対応するピクセル値の計算のために補間フィルタ37のセットのうちの1つにマッピングされ得る。たとえば、動き補償ユニット35は、整数ピクセル位置の値に基づいてハーフピクセル位置の値を計算するために係数[1,−5,20,20,−5,1]をもつ6タップウィーナフィルタを適用し、整数ピクセル位置の値に基づいてクォーターピクセル位置の値を計算するために双1次フィルタを適用することができる。一例では、ハーフピクセル位置について、6タップウィーナフィルタは、ハーフピクセル位置に適用するためのデフォルトフィルタを備え、双1次フィルタは、クォーターピクセル位置に適用するためのデフォルトフィルタを備えることができる。
さらに、各ピクセル位置は、代替補間フィルタ、たとえば、異なる係数をもつ補間フィルタにマッピングできる。他の補間フィルタは様々な係数を使用して構成され得る。概して、固定の補間フィルタは、それらの係数が異なる(異なる係数は異なる周波数応答を指定する)、および/またはそれらのサポートが異なる(これが1次元または2次元、垂直、水平、または対角であるかどうか)、あるいは補間に使用されるタップ(したがってピクセル)の数が異なることがある。サポートがより大きいと、一般により良好に実行できるが、ピクセルを補間するために行う必要がある乗算および加算に関して複雑さがより高まる。
一例では、各サブ整数ピクセルは、m個の可能な異なる補間フィルタにマッピングでき、1つのサブ整数ピクセル位置のためのm個の補間フィルタのうちの少なくともいくつかは、異なるサブ整数ピクセル位置のためのm個の補間フィルタとは異なり得る。クォーターピクセル精度では、補間フィルタ37はm*15個の一意の補間フィルタを備えることができ、mはサブピクセル当たりの補間フィルタの数である。代替的に、一部のサブ整数ピクセルは同じ補間フィルタにマッピングできる。各サブ整数ピクセルのための補間フィルタのうちの少なくとも1つは、対応するサブ整数ピクセルのためのデフォルト補間フィルタとして割り当てることができる。たとえば、補間フィルタの信頼できる選択を可能にするのに十分な履歴補間結果が累積されるまで、デフォルト補間フィルタは最初にビデオシーケンス中で使用され得る。
動き推定ユニット36は、参照フレームストア34からの参照フレームのブロックを、現在フレーム、たとえば、PフレームまたはBフレームの符号化すべきブロックと比較する。参照フレームストア34中の参照フレームはサブ整数ピクセルの補間値を含むので、動き推定ユニット36によって計算される動きベクトルはサブ整数ピクセルロケーションを参照することができる。動き推定ユニット36は、計算された動きベクトルをエントロピーコーディングユニット46と動き補償ユニット35とに送信する。本開示で説明する技法によれば、動き推定ユニット36は、ブロック当たり1つの動きベクトルを計算し、動き推定の前に選択された補間フィルタおよびオフセットに基づいて動きベクトルを生成することができる。このようにして、ビデオエンコーダ20は、シングルパスで、すなわち、コード化ユニットのビデオブロックの動き推定を2回実行することなしにフレーム、スライスおよびブロックなどのユニットを符号化することができる。
シングルパスでの符号化は、初期の補間フィルタおよびオフセットを選択することと、初期の補間フィルタおよびオフセットを使用してビデオを符号化することと、符号化結果に基づいて新しい補間フィルタおよびオフセットを選択することと、次いで、新たに選択した補間フィルタおよびオフセットを用いてフレームを再符号化することとを含むマルチパス符号化プロセスとは対照的である。代わりに、エンコーダ20は、1つまたは複数の先行フレームの履歴補間結果に基づいて補間フィルタを選択し、現在フレームと1つまたは複数の先行フレームとの間の差に基づいてオフセットを選択し、次いで、選択した補間フィルタとオフセットとを使用して動き推定を実行して、各ブロックの動きベクトルおよび残差情報を生成する。したがって、ビデオエンコーダ20は、第2または後続のパスにおいて動きベクトルを再計算する必要がなく、それによって符号化プロセスの効率を向上させることができる。代わりに、動き推定を1回実行することができる。動き補償ユニット35は、参照フレームの予測ブロックと符号化されているフレームの実際のブロックとの間の誤差値を計算し、加算器48を介して残差ブロック値を生成し、それらの残差ブロック値はビデオエンコーダ20の変換ユニット38と量子化ユニット40とによって符号化される。
一例では、上記で説明したように、動き補償ユニット35は、いずれの補間フィルタ37が、以前に符号化された参照フレームのブロックについて最も低い誤差を生じたかを判断することができる。たとえば、動き推定のために補間フィルタの選択セットを使用して参照フレームを符号化した後、動き補償ユニット35は、いずれの補間フィルタ37がサブピクセル位置の各々において最も低い誤差値を生じたかを識別することができる。そうするために、動き補償ユニット35は、補間フィルタの異なるセットを使用して参照フレームを符号化するために生成された予測ビデオブロックのサブ整数ピクセルを再計算することができる。特に、動き推定ユニット36によって計算された動きベクトルが、参照フレームストア34中の参照フレームのブロックのサブ整数ピクセルロケーションを参照するとき、動き補償ユニット35は、他の補間フィルタ37を使用してブロックのサブ整数ピクセルの値を再計算する。次いで、動き補償ユニット35は、予測ブロックについて補間フィルタ37の各々に対応する誤差値を計算する。
動き補償ユニット35は、いずれの補間フィルタ37が、符号化されたフレームについて最も低い誤差値をもたらすかを判断する。フレームが補間フィルタのセットを使用してすでに符号化されていても、最も低い補間誤差値を生成したであろう補間フィルタを、符号化後に判断することができ、符号化すべき次のフレームの動き推定を実行するために使用することができる。フレームを符号化し、フレームについて最も低い誤差を生じたであろう補間フィルタ37のセットを識別した後、動き補償ユニット35は、参照フレームストア34にフレームを記憶する前に、選択された補間フィルタを再構成されるフレームに適用することができる。このようにして、動き補償ユニット35は、先行フレームにとって最適であると判断された補間フィルタ37のセットを使用して、コーディングすべき次のフレームを符号化するために動き推定に使用できる参照フレーム中のサブ整数ピクセル値を計算することができる。
別の例では、上記で説明したように、動き補償ユニット35は、各サブピクセル位置における補間フィルタ37の各々の誤差値を累積し、参照フレームストア34に記憶すべき新しいフレームについて、動き補償ユニット35は、それぞれのサブピクセル位置のための最も低い累積誤差をもつ補間フィルタ37を選択する。このようにして、動き補償ユニット35は、各フィルタおよび各サブピクセル位置について、以前に符号化されたフレームとそれらの参照との間の補間誤差を累積することができる。上述のように、動き補償ユニット35は、メモリオーバーフローを防ぎ、補間フィルタ37のより古い履歴使用よりも補間フィルタの最近の使用により重く重み付けするために、補間フィルタ37の累積誤差を周期的にスケールダウンすることができる。このようにして、動き補償ユニットは、最も最近のフレームの寄与により重み付けし、最も古いフレームを「忘れる」という「ウィンドウ」効果をもたらすことができる。
補間誤差は、符号化すべきフレームの元のピクセル値と、補間によって生成された予測フレームのピクセル値との間に差に基づいて計算できる。予測フレームは、補間によって生成され、コーディングすべきフレーム中のコーディングすべきブロックに対応する予測ブロックを含むことができる。差は、たとえば、SSD、SADまたは他の差メトリックによって判断されるものとして、予測ブロックとコード化ブロックの間のピクセル値の差として計算できる。全体的な差値、および各サブピクセル位置における差値を計算するために、異なるメトリックをフレーム中のブロックにわたって合計または平均することができる。以前にコーディングされた参照フレームのサブピクセル位置の各々において最も低い差値を生成したであろう補間フィルタのセットを、参照フレームに対してコーディングすべき次のフレームの動き推定に使用される補間フィルタのセットとして選択することができる。代替的に、コード化ビデオフレームの範囲にわたってそれぞれのサブピクセル位置における最も低い累積差値を生成する補間フィルタを、参照フレームに対してコーディングすべき次のフレームの動き推定に使用することができる。
概して、動き補償ユニット35は、決定ベクトルDを計算することによって各サブ整数ピクセルロケーションの補間フィルタを選択することができる。Dは長さnのベクトルとすることができ、nは各ピクセルのサブ整数ピクセルロケーションの数に対応する。一例では、ビデオエンコーダ20がクォーターピクセル精度をサポートする場合、nは15に等しい。Dの各要素は、対応するサブ整数ピクセル位置の補間フィルタのうちの1つに対応する。したがって、各サブ整数ピクセルがm個の異なる可能な補間フィルタを有する場合、Dの各要素は0とmとの間にわたる。第1の参照フレームについて、Dの各要素は「0」に初期化でき、「0」は、対応するピクセル位置のためのデフォルト補間フィルタを指す。動き補償ユニット35は、それぞれのサブピクセル位置のための対応するデフォルト補間フィルタを使用して第1の参照フレームの各サブピクセル位置の値を計算することができる。
動き推定ユニット36は、決定ベクトルDによって識別された補間フィルタを使用して動き補償ユニット35がサブ整数ピクセル値を計算した参照フレームを参照することによって、後にインターコーディングされるフレームの各コード化ユニットの動きベクトルを計算することができる。動き補償ユニット35はまた、インターコード化フレームのコスト行列Cを計算することができる。一例では、予測コード化フレームについて、コスト行列Cは、各サブ整数ピクセルのための補間フィルタに対応する第1の次元Fと、サブ整数ピクセルに対応する第2の次元Iとを含む。したがって、コスト行列はC[F][i]として定義でき、ただし、F=[0,m]およびI=[0,n]である。Cの各要素は、最初は0に設定される。
次いで、動き補償ユニット35は、インターコード化フレームの各ピクセルと、ピクセルの各補間フィルタとについて、fがF中にあり、iがi中にある場合、C[f][i]+=|actual(i)−predicted(i,f)|を計算し、actual(i)は、インターコーディングすべきフレームのピクセル中のサブピクセルiに対応するピクセルの実際値であり、predicted(i,f)は、対応する動きベクトルによって参照される補間フィルタfを使用して、たとえば、一例ではSAD計算を使用して計算されたサブピクセルiの値である。したがって、Cの各要素は、サブピクセルの対応する補間フィルタを使用した対応するサブピクセルロケーションの累積誤差に対応する。
双予測フレームに対して、同様のコスト行列C2[F1][F2][i][j]を計算することができ、ただし、iは、F1のサブピクセルを指し、jは、F2のサブピクセルを指し、F1は、第1の参照フレーム中のサブピクセル位置iを計算するために使用される補間フィルタを指し、F2は、第2の参照フレーム中のサブピクセル位置jを計算するために使用される補間フィルタを指す。次いで、動き補償ユニット35は、インターコード化フレームと参照フレームとの間の誤差値を、たとえば、SAD値として計算することができる。コスト行列CからSAD値を計算するために、動き補償ユニット35は、以下の式に従って、サブピクセルを計算するために使用されたフィルタを用いて、適用された各サブピクセルロケーションの累積誤差値の合計を計算することができる。
Figure 2012504904
動き補償ユニット35は、位置とフィルタの組合せがインターコード化フレームと参照フレームとの間の誤差値の最も大きい低減をもたらし得るように、位置と、その位置に対応する補間フィルタとを判断するために、コスト行列中を反復的に進むことができる。すなわち、動き補償ユニット35は、上記で計算されるSAD値に最も大きい低減をもたらす値C[f][p]を識別することができる。次いで、動き補償ユニット35は、判断された補間フィルタfが、判断されたサブ整数ピクセル位置pのために将来使用されるように決定ベクトルを変更することができる。特に、決定ベクトルD、サブ整数ピクセル位置p、および補間フィルタfについて、動き補償ユニット35はD[p]=fを実行することができる。次いで、動き補償ユニット35は、上記で提示した式を使用して位置pにおけるサブ整数ピクセル値を計算するためにフィルタfが使用されていたかのように、差、たとえば、SADを再計算することができる。
動き補償ユニット35は、差が実質的に変化しなくなる(たとえば、いかなる差も最小しきい値未満になる)か、あるいは最大数の繰返しが実行されるまで、このプロセスを繰り返すことができる。以下の擬似コードに上述のプロセスを要約する。
Figure 2012504904
いくつかの例では、動き補償ユニット35は、各参照フレームの誤差を累積して、最も最近の参照フレームのほうを選び、より古い参照フレームを「忘れる」ことができる。そうするために、動き補償ユニット35は、上記で説明したように特定のフレームのコスト行列を計算するが、さらにそのコスト行列に対して、以前にコーディングされたフレームのより以前のコスト行列の値の分数重み付けを加算することができる。たとえば、以前にコーディングされたフレームのコスト行列Cと、その参照フレームのコスト行列CREFとについて、動き補償ユニット35は、C=C+(1/n)*CREFを計算することができる。この場合、nは、好ましくは1よりも大きい任意の整数とすることができる。このようにして、動き補償ユニット35は、オーバーフローを回避し、補間フィルタを選択する際により新しい参照フレームのコスト計算を選好し、より古い参照フレーム、すなわち、符号化すべきフレームから時間的により遠い参照フレームの計算を「忘れる」またはフェーズアウトすることができる。
さらなる例示として、フレームNがコーディングすべきであり、フレームN−1〜N−Mがすでにコーディングされている場合、たとえば、参照フレームN−1に対して、フレームNの動き推定のために選択される補間フィルタは、次のように計算するコスト式に従って選択できる。
Figure 2012504904
上式で、係数a1、a2、...aMは、値が漸進的により小さくなる重み付け係数を表す。所与のサブピクセル位置における各補間フィルタの累積コストCに基づいて、エンコーダ20は、Cの最も低い値を生成する補間フィルタを選択する。
動き補償ユニット35はまた、DCオフセットなどのオフセット値を補間予測データに、すなわち、参照フレームストア34中の参照フレームのサブ整数ピクセル値に追加することができる。動き補償ユニット35は、参照フレームと現在フレームとの間のDC差、または参照フレームのブロックと現在フレームのブロックとの間のDC差に基づいてDCオフセットを割り当てることができる。動き補償ユニット35は、コーディングをシングルパスで実行する能力に一致して、「アプリオリ」に、すなわち、符号化すべき現在フレームの動き探索が実行される前にDCオフセットを割り当てることができる。
予測ビデオブロックのピクセル値は、予測ビデオブロックの整数または非整数ピクセルロケーションに関連するオフセットに従って上方または下方にオフセットできる。動き補償ユニット35によって実行される補間は、異なるビデオブロックのためのいくつかの可能なサブ整数ピクセルロケーションにおける補間データを定義することができる。所与のコード化ユニットのための単一のオフセット値を定義するのではなく、動き補償ユニット35は、いくつかの実装形態では、それぞれ可能な整数およびサブ整数ピクセルロケーションについて異なるオフセット値を定義することができる。他の場合には、予測ブロック、スライスまたはフレーム中のすべてのピクセル値に単一のオフセット値を適用することができる。動き補償ユニット35は、いくつかの例では、サブ整数ピクセルのサブセットのみにオフセット値を適用する。次いで、予測データは、予測データに関連するピクセルロケーションに基づいてロケーション固有のオフセットを適用することができる。
一例では、動き補償ユニット35は、予測ビデオブロックに基づいて符号化すべきコード化フレームのビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第1のセットのメトリック(たとえば、平均値)を計算することができる。動き補償ユニット35はまた、現在フレームのブロックを符号化するために使用される予測ビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第2のセットのメトリック(たとえば、平均値)を計算することができる。すなわち、第1のセットのメトリックは、コーディングされているデータによって定義され、第2のセットのメトリックは、予測コーディングに使用される参照フレーム中の予測データによって定義される。次いで、動き補償ユニット35は、第1および第2のセットのメトリックに基づいて複数のオフセット値を計算する。
第1のセットのメトリックは、予測ビデオブロックに基づいてコーディングされるコード化ユニットのビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第1のセットの平均値を備え、第2のセットのメトリックは、予測ビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第2のセットの平均値を備えることができる。この場合、複数のオフセット値は、第1のセットの平均値と第2のセットの平均値との間の差を備えることができる。このようにして、第1のコーディングパス中でコーディングされる実際のデータに基づいて、いくつかの異なる整数およびサブ整数ピクセルロケーションに対していくつかの異なるオフセット値を定義することができる。その差は、たとえば、フレーム間の照度の差を表していることがある。
第1のセットのメトリックは、所与のコード化ユニットのビデオブロックの各整数およびサブ整数ピクセルロケーションにおけるピクセル値の平均に対応する平均値のセットを備えることができる。第2のセットのメトリックは、そのコード化ユニット中でコーディングされている現在ブロックを予測するために使用される予測ブロックの各整数およびサブ整数ピクセルロケーションにおけるピクセル値の平均に対応するセットの平均値を備えることができる。複数のオフセット値は、第1のセットの平均値と第2のセットの平均値との間の差を備えることができる。各マクロブロックロケーションは、単一のピクセル、たとえば、それぞれのマクロブロックの左上コーナー中のそれぞれのピクセルによって定義できる。ただし、各マクロブロックは、第1のセットの平均値中の特定の平均値に寄与する16個のピクセル値を定義することができる。本開示の技法は、もちろん、他のサイズのビデオブロックにも適用できる。
本開示のオフセット技法は、ルーマブロック、クロマブロック、または両方に対して適用できる。ビデオブロックの各タイプ(たとえば、ルーマブロックおよびクロマブロック)に関連する各整数およびサブ整数ピクセルロケーションに対して異なるオフセットを定義することができる。さらに、各ブロックの特定の各サイズ、パーティションまたはサブパーティションにおいて、各ブロックに異なるオフセットを割り当て得る。いくつかの例では、双予測ブロックをインター符号化するために、特定のピクセルまたはサブ整数ピクセルロケーションについて2つのオフセットを計算することができ、第1のオフセットは、現在フレームの現在ブロックと時間的により近い参照フレームのコロケートブロック(co-located block)との間の平均差(すなわち、リスト0)を表し、第2のオフセットは、現在フレームと時間的により遠い参照フレームとの間の平均差(すなわち、リスト1)を表す。これらの2つのオフセット値を計算した後、ビデオエンコーダ20は、それらの2つのオフセット値のうちのどちらをピクセルまたはサブ整数ピクセル値に適用すべきかを判断することができ、リスト0に基づいて符号化するときは第1のオフセットを適用し、リスト1に基づいて符号化するときは第2のオフセットを適用する。
ブロックベースのDCオフセットを計算することは、現在フレームおよび参照フレームの何らかのサイズ(たとえば、16×16ピクセル)のコロケートブロック間のDC差に関する(ヒストグラムの形態の)統計を収集することを必要とする。参照フレーム中のブロックと現在フレーム中のブロックとを比較し、2つのフレームの各コロケートブロックについて、以下の2つの量を計算する。
1)ピクセル差の2乗誤差(例示的な関数blockDC1およびblockDC2に関して以下で説明するerr0)、および
2)ブロックの平均DCが各ピクセルの値に減算された後のピクセル差の2乗誤差(例示的な関数blockDC1およびblockDC2に関して以下で説明するerr1)
これらの2つの量を比較することによって(たとえば、1における誤差が2における誤差の2倍よりも大きいかどうかを検査することによって)、ブロックが十分類似しているかどうか(すなわち、コロケートブロック間の差が大部分はDC差によって生じているかどうか)を推定し、これが当てはまる場合、これらの統計値を累積してブロックベースのDC差のヒストグラムを含んでいるベクトルにすることが可能であり得る。実際的な理由のために、DC差は、たとえば、それらのDC差を整数値に丸めることによって量子化できる。
ヒストグラムビンを検査することによって、DC差の範囲を導出し、DCminおよびDCmaxを計算することが可能である。いくつかの可能性は以下の通りである。
1)noSamples個よりも多くのサンプルを有する正および負のDC値に対応するビンの数を計数する(下記の関数blockDC2において使用する方法)、
2)noSamples個よりも多くのサンプルを有する負のおよび正のDC値に対応するビンの数を計数するが、テストが初めて不合格になったときに計数を止める、または
3)noSamples個より多くのサンプルを含んでいる最左および最右ビンに対応するDC値を発見する(下記のblockDC1において使用する方法)
一例として、noSamples=20であり、ヒストグラムが以下の表2に示す通りである場合、第1の方法は、DCmin=−2、DCmax=2、第2のDCmin=−2、DCmax=1、および第3のDCmin=−2、DCmax=4を戻す。
Figure 2012504904
上記で概説したように現在フレームと参照フレームとの間のブロックベースのDC差の値を推定した後、サブピクセル位置のサブセットにオフセットを割り当てる。使用される機構は、エンコーダとデコーダの両方に知られており、DCminおよびDCmaxの値によって完全に判断される。したがって、他の方法との互換性を維持する必要がなければ、オフセットの送信は、これらの2つの値のみを送信することによって大幅に簡略化できる。
オフセットO(1)〜O(15)は、5、15、13、7、9、6、11、14、1、4、3、12、10、2、8という所定の順序でサブピクセル位置に割り当てられ得る。割当ての他の順序も可能である。以下の表3に、1/4ピクセル補間において使用されるサブピクセル位置のインデックス付け(位置0はフルピクセルに関連付けられる)と、オフセットの割当てとを示す。15個よりも少ないオフセットを割り当てている場合、残りの値は0に設定される。本方法は、異なる分数ピクセル補間に拡張できる。これらのサブピクセル位置にDCオフセットを適用する例について、図5の例に関して説明する。
Figure 2012504904
上記の表3において、左の4列はサブピクセル位置を示し、中央の4列は15個のオフセットの割当てを示し、右の4列は9個のオフセットの割当てを示す。
現在フレームと参照フレームとの間の(フレームベースの)DC差を使用して、DCminおよびDCmaxの計算において使用されるしきい値noSamplesと、1/4ピクセル補間のためのオフセットの数の両方を判断することができる。しきい値noSamplesは、画像のサイズ(したがってブロックの数)を考慮に入れることによって計算することもできる。その場合、DCminおよびDCmaxをさらに改善することができる。これを行うのに可能な方法を以下の擬似コードに例示する。
Figure 2012504904
上記の擬似コード中の量roundFactは、DC範囲を量子化し、オフセットを15個以下の値に抑制するために使用される。次いで、範囲[DCmin,DCmax]中のオフセットを、上記で指定した順序でサブピクセル位置に割り当てる。フレームベースのDC差の絶対値が小さい(たとえば、2よりも小さい)場合、DC差をより小さいステップ(たとえば、0.1)で再量子化し、noOffsets1と呼ばれる新しい量を作り出す。noOffsets1がしきい値(たとえば、8)以下である場合、第1のnoOffset1サブピクセル位置(上記で指定した順序における1番目)を0に設定し、残りの位置に(DC差の符号に応じて)+1または−1を入れる。noOffset1がしきい値よりも大きい場合、第1のnoOffsets1位置に+1または−1を入れ、残りのサブピクセル位置を0に設定する。
図2をさらに参照すると、動き補償ユニット35は予測ブロックに基づいて予測データを計算する。ビデオエンコーダ20は、コーディングされている元のビデオブロックから予測データを減算することによって残差ビデオブロックを形成する。加算器48は、この減算演算を実行する1つまたは複数の構成要素を表す。変換ユニット38は、離散コサイン変換(DCT)または概念的に同様の変換など、変換を残差ブロックに適用し、残差変換ブロック係数を備えるビデオブロックを生成する。変換ユニット38は、たとえば、概念的にDCTと同様である、H.264規格によって定義される変換など、他の変換を実行することができる。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換を使用することもできる。いずれの場合も、変換ユニット38は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル領域から周波数領域に変換することができる。
量子化ユニット40は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、量子化中に16ビット値を15ビット値に切り詰めることができる。量子化の後、エントロピーコーディングユニット46は量子化変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット46は、コンテンツ適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、または別のエントロピーコーディング方法を実行することができる。エントロピーコーディングユニット46によるエントロピーコーディングの後、符号化ビデオを、別のデバイスに送信するか、あるいは後で送信または検索するためにアーカイブすることができる。コード化ビットストリームは、エントロピーコード化残差ブロックと、そのようなブロックのための動きベクトルと、特定のフレームのサブ整数ピクセル値を計算するために参照フレームに適用すべき補間フィルタの識別子と、コード化ユニット内の異なる整数およびサブ整数ピクセルロケーションにおける複数の異なるオフセットを識別するオフセット値を含む他のシンタックスとを含むことができる。
逆量子化ユニット42および逆変換ユニット44は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット35は、参照フレームストア34のフレームのうちの1つの予測ブロックに残差ブロックを加算することによって参照ブロックを計算することができる。動き補償ユニット35はまた、サブ整数ピクセル値を計算するために、選択された補間フィルタ37を再構成される残差ブロックに適用することができる。加算器51は、再構成された残差ブロックを、動き補償ユニット35によって生成された動き補償された予測ブロックに加算して、参照フレームストア34に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするための参照ブロックとして動き推定ユニット36および動き補償ユニット35によって使用され得る。
動き推定ユニット36は、本開示の技法によれば、動きベクトルを計算すべき予測ブロックを識別するために使用される標準探索アルゴリズムを変更することもできる。本開示の技法によれば、動き推定ユニット36は、参照フレームに以前に追加されたDCオフセットを考慮に入れる改善された動き探索を実行することができる。特に、動き推定ユニット36は、DCオフセットの追加の結果として0でないDCオフセット値を有するサブピクセル位置の評価を強制することによって、動き探索を改善することができる。動き探索中に、動き推定ユニット36は、たとえば、ブロックのSAD、SSDまたは他のピクセル差メトリックに基づいて、符号化すべきブロックに最もぴったり一致する参照フレームの予測ブロックを識別することを試みる。
動き探索から生じる符号化を改善するために、動き補償ユニット35が0でないオフセット値を定義した整数またはサブ整数ピクセルロケーションのうちの1つにおいて開始するブロックをスキップすることを標準動き探索アルゴリズムが指図するであろう場合でも、動き推定ユニット36は、これらのピクセルロケーションにおいて開始する参照フレームの予測ブロックを検査することができる。参照フレームのブロックが、定義されたオフセット値がないか、またはオフセット値が0であるピクセルまたはサブピクセルロケーションにおいて開始し、動き探索アルゴリズムが、そのロケーションにあるブロックをスキップすることを指図しているとき、動き推定ユニット36は、そのロケーションをスキップし、次のピクセルロケーションに移動することができる。しかしながら、参照フレームのブロックが、動き補償ユニット35が0でないオフセット値を定義したロケーションにおいて開始し、動き探索アルゴリズムが、そのロケーションにあるブロックをスキップすることを指図しているとき、動き推定ユニット36は、それにもかかわらず、そのロケーションにおいて開始するブロックを分析し、それにより標準動き探索アルゴリズムを無効にすることができる。特に、動き推定ユニット36は、ブロックをインターコーディング用の予測ブロックとして選択すべきかどうかを判断するために、参照フレーム中のそのロケーションにおいて開始するブロックを、コーディングすべきブロックと比較することができる。
一例では、ビデオエンコーダ20は、1つまたは複数の以前に符号化されたフレームの(単一または累積)履歴に基づいて補間フィルタを選択するための手順と、サブピクセル位置に対するDCオフセットを計算し、割り当てるための手順と、DCオフセットをもつサブピクセル位置を考慮に入れるためのする動き探索の改良とを組み合わせて、ほとんどまたはまったくパフォーマンスロスなしに、かなりの速度ゲインで、符号化をシングルパスで実行することができる。他の例では、ビデオエンコーダ20は、(1)補間フィルタを選択するための手順と、(2)サブピクセル位置に対するDCオフセットを計算し、割り当てるための手順と、(3)DCオフセットをもつサブピクセル位置を考慮に入れるための動き探索の改善との任意の組合せまたは置換を実行することができる。
図3は、本開示で説明する方法で符号化されたビデオシーケンスを復号するビデオデコーダ30の一例を示すブロック図である。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明した符号化とは逆の復号パスを実行することができる。ビデオデコーダ30は、復号中に本開示のオフセット技法を実行する動き補償ユニット54を含む。特に、復号側で、動き補償ユニット54はエントロピー復号ユニット52からシンタックス要素を受信することができ、それは、たとえば整数ピクセルロケーションおよび1つまたは複数の非整数ピクセルロケーションに対して異なるオフセットを定義する、コード化ユニットの複数のオフセット値を識別するものである。
動き補償ユニット54は、エントロピー復号ユニット52から受信した動きベクトルに基づいて予測データを生成することができる。特に、動き補償ユニット54は、動きベクトルを使用して以前に復号された参照フレーム中の予測ブロックを識別し、(その予測データのピクセルロケーションに基づいて)そのような予測データに適切なオフセットを追加して、オフセット予測データを生成することができる。予測データは補間データとすることができ、その場合、オフセット予測データを生成するために、非整数ロケーションのオフセット値のうちの対応する1つを補間予測データに適用することができる。このオフセット予測データに基づいて、ビデオデータ(たとえば、再構成された残差ビデオブロック)を復号することができる。特に、デコーダは、符号化された元のビデオブロックを生成するために、オフセット予測データを残差ビデオブロックと組み合わせることができる。
エントロピー復号ユニット52は、量子化係数およびシンタックス(たとえば、動きベクトル、およびコード化ユニットの複数のオフセット値)を生成するために、受信ビットストリームをエントロピー復号する。シンタックスは、エントロピーコーディングユニット52から動き補償ユニット54に転送される。逆量子化ユニット56は、量子化されたブロック係数を逆量子化(inverse quantize)、すなわち反量子化(de-quantize)する。逆量子化プロセスは、たとえば、H.264復号によって定義された、従来のプロセスとすることができる。逆変換ユニット58は、ピクセル領域における残差ブロックを生成するために、変換係数に逆変換、たとえば逆DCTまたは概念的に同様の逆変換プロセスを適用する。動き補償ユニット54は、動き補償ブロックを生成し、場合によっては補間フィルタ64を使用して補間を実行する。特定のフレーム中のサブピクセル位置に対して使用すべき特定の補間フィルタ64を指定する識別子を、エンコーダ20によって生成されたビットストリーム中にシンタックス要素として含めることもできる。
動き補償ユニット54は、ビデオブロックの符号化中にビデオエンコーダ20によって使用されたのと同じ補間フィルタ64のセットを選択することができる。特に、動き補償ユニット54は、参照フレームストア62から取り出された参照ブロックについてビットストリーム中のシンタックス要素によって示される、補間フィルタ64のセットを使用してサブ整数ピクセル値を計算する。動き補償ユニット54が動きベクトルに基づいて予測ブロックを生成した後、動き補償ユニット54は、予測ブロックに適切なオフセット値を追加して、エンコーダが実行した元の符号化において使用されたオフセット予測ブロックを生成する。
加算器64は、動き補償ユニット54によって生成された対応するオフセット予測ブロックをもつ残差ブロックを合計することによって、残差ブロックからの残差データを加算して、現在フレームのための復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、デブロッキングフィルタを適用して、復号ブロックをフィルタ処理することもできる。次いで、復号ビデオブロックは参照フレームストア62に記憶され、参照フレームストア62は、復号すべき後のフレームに対する後続の動き補償のための参照ブロックを供給し、ビデオ表示のための(図1のデバイス28などの)表示デバイスを駆動する表示バッファに送信するための復号ビデオをも生成する。
ここでも、本開示の技法は、動き補償予測データへのオフセットの適用に関係し、補間によって定義された整数および異なるサブ整数ピクセルロケーションに対して異なるオフセットを使用する。エンコーダは、本開示の技法を使用して、様々なオフセット値を定義し適用する。また、デコーダは、エンコーダによって定義され使用されたのと同じオフセット値を識別するために、エンコーダから送信されたシンタックス要素を解釈する。予測データのピクセル値に適切なオフセットを適用し、適切なオフセットは、そのような予測データのために定義されたピクセルロケーション、たとえば、整数ピクセルロケーション、またはいくつかの可能な非整数ピクセルロケーションのうちの1つに基づいて選択される。
図4は、予測データに関連する整数ピクセルロケーションと、補間予測データに関連するサブ整数ピクセルロケーションとを示す概念図である。図4の概念図において、様々なボックスはピクセルを表す。(実線のボックス中の)大文字は整数ピクセルロケーションを表し、(点線のボックス中の)小文字はサブ整数補間ピクセルロケーションを表す。ピクセルロケーション「aa」、「bb」、「cc」、「dd」、「ee」、「ff」、「gg」、「hh」、「ii」、および「jj」は、ピクセルロケーション「C3」に関連する様々な分数ロケーションの分数補間において使用されるハーフピクセルロケーションである。各ピクセルは、そのピクセルがビデオブロックを定義するようにビデオブロックの右上側のピクセルに対応することができる。補間または外挿については、ビデオブロックのピクセルの各々を、それぞれのサブ整数ピクセルから同じ空間距離を有する様々な整数ピクセルに関して同様に補間または外挿することができる。
あらゆる整数ピクセルロケーションは、関連する15個の異なる分数(「サブ整数」)ロケーションを有する。図4の例では、ピクセル「C3」に関連するこれらの15個の異なる分数ロケーションは、サブ整数ピクセルロケーション「a」、「b」、「c」、「d」、「e」、「f」、「g」、「h」、「i」、「j」、「k」、「l」、「m」、「n」、および「o」として示されている。同様に、ピクセル「E5」に関連する15個の異なる分数ロケーションは、サブ整数ピクセルロケーション「a’」、「b’」、「c’」、「d’」、「e’」、「f’」、「g’」、「h’」、「i’」、「j’」、「k’」、「l’」、「m’」、「n’」、および「o’」として示されている。簡単のために、(ピクセル「C3」に関連する15個の異なる分数ロケーションのうちの1つまたは複数を生成するために使用される、上記の分数ロケーション以外の)他の分数ロケーションのほとんどは図示していない。
たとえば、ITU H.264/AVC規格では、ハーフピクセル位置におけるルーマ信号を得るために、一般に、係数[1,−5,20,20,−5,1]をもつ6タップウィーナフィルタ(Wiener filter)を使用する。次いで、クォーターピクセルロケーションにおけるルーマ信号を得るために、双1次フィルタ(bilinear filter)を使用する。双1次フィルタは、H.264/AVCでは最高1/8ピクセル精度を有し得る、クロマ成分の分数ピクセル補間においても使用できる。
動き推定の後、コーディングレートとビデオ品質のバランスをとるために、たとえば、レートひずみモデルを使用して、所与のビデオブロックのための最良の動きベクトルを識別することができる。最良の動きベクトルを使用して動き補償中に予測ビデオブロックを形成する。上記で概説したように、元のビデオブロックから予測ビデオブロックを減算することによって残差ビデオブロックを形成する。次いで、残差ブロックに変換を適用し、ビットレートをさらに低減するために変換係数を量子化し、エントロピーコーディングする。
本開示の技法は、予測ビデオブロックにオフセットを追加することを含む。オフセットの値は、異なる整数およびサブ整数ピクセルロケーションに対して異なるオフセットが定義されるという点で、ロケーション固有であり得る。ピクセル「b」および「b’」は整数ピクセルC3およびE5に関して同じサブ整数ピクセルロケーションを定義しているので、これらの2つのピクセルによって識別されるビデオブロックに関連するオフセットは同じとすることができる。しかしながら、ピクセル「c」および「d’」は整数ピクセルC3およびE5に関して異なるサブ整数ピクセルロケーションを定義しているので、ピクセル「c」および「d’」によって識別されるビデオブロックに関連するオフセットは異なることができる。16個の異なるピクセルロケーション「C3」、「a」、「b」、「c」、「d」、「e」、「f」、「g」、「h」、「i」、「j」、「k」、「l」、「m」、「n」、および「o」の各々は、異なるオフセットを定義することができる。さらに、これらの異なるオフセットは、16個の異なるピクセルロケーション「E5」、「a’」、「b’」、「c’」、「d’」、「e’」、「f’」、「g’」、「h’」、「i’」、「j’」、「k’」、「l’」、「m’」、「n’」、および「o’」の各々にそれぞれ適用することもできる。オフセットは、オフセット予測ブロックを生成するために、予測ブロックのあらゆるピクセル値を上方または下方に本質的にバイアスする符号付き値を定義することができる。
オフセットは、すべての対応する予測ピクセルの平均に対して同じサンプルロケーション(整数または特定のサブ整数ロケーション)を有するコード化ユニットのすべてのピクセルの平均差を備え得るので、DCオフセットと呼ばれることがある。すなわち、ブロックのピクセルの各々は同様に同じ程度だけバイアスされるので、オフセットは、たとえば、DCT計算から生じる変換データのDC値の変化をもたらし、ただし、DC値は、変換計算から生じる行列の左上の値である。これは、DC値がブロックのピクセル値の平均を表すからである。したがって、ピクセルを特定の値だけバイアスすることによって、変換計算から生じるDC値は同様にバイアスされることになる。したがって、いくつかの例では、DCオフセットをブロックの各ピクセルに適用するのではなく、DCオフセットを、変換計算から生じるDC値に適用することができる。
いくつかの例では、整数およびサブ整数ピクセルロケーションの各々に異なるオフセット値を割り当てることができる。動きベクトルによって参照されるピクセルまたはサブピクセルに対応するオフセット値を、ブロックの各ピクセルに適用する。一例として、ピクセルおよびサブピクセルロケーションに1と8との間にわたるオフセット値を割り当てるために、ピクセルロケーション「e」、「f」、「g」、「i」、「k」、「m」、「n」、および「o」に対して、それぞれオフセット値{1,6,4,5,7,3,8,2}を割り当てることができる。すなわち、オフセット値マッピングは、{C3−>null,a−>null,b−>null,c−>null,d−>null,e−>1,f−>6,g−>4,h−>null,i−>5,j−>null,k−>7,l−>null,m−>3,n−>8,o−>2}とすることができる。別の例では、オフセット値は、参照フレームのピクセルの平均値と現在フレームのピクセルの平均値との間の差を備えることができる。そのような差をDCframeと呼ぶと、一例では、0<DCframe<1.5であるとき、大きさ1をもつオフセットが、(最も近い整数に丸められた)10*DCframe個のピクセル位置に割り当てられる。たとえば、DCframeが0.83に等しい場合、大きさ1をもつオフセットが、16個のピクセルロケーションのうちの8つに割り当てられる。
本開示の技法によれば、動き推定ユニット36は、定義されたオフセット値が存在するロケーションをもつブロックのうちの1つまたは複数をスキップすることを標準動き探索アルゴリズムが指図するであろうときでも、これらのブロックを評価することもできる。動き推定ユニット36は、定義されたオフセット値がないピクセルロケーションにおいて開始するブロックをスキップすることを動き探索アルゴリズムが指図しているとき、それらのブロックを評価することをスキップすることができる。ピクセルロケーション「e」、「f」、「g」、「i」、「k」、「m」、「n」、および「o」にそれぞれオフセット値{1,6,4,5,7,3,8,2}が割り当てられる上記の例では、動き推定ユニット36は、ピクセルロケーション「C3」、「a」、「b」、「c」、「d」、「h」、「j」、および「l」をスキップすることを動き探索アルゴリズムが指図しているとき、これらのピクセルロケーションにおいて開始するブロックを評価することをスキップすることができる。しかしながら、動き推定ユニット36は、ピクセルロケーション「e」、「f」、「g」、「i」、「k」、「m」、「n」、および「o」において開始するブロックをスキップすることを動き探索アルゴリズムが指図するときでも、ピクセルロケーション「e」、「f」、「g」、「i」、「k」、「m」、「n」、および「o」は定義されたオフセット値を有しているので、これらのロケーションにおいて開始するブロックを評価するであろう。
別の例として、DCmbが、参照ブロックのピクセルの平均値と現在のブロックのピクセルの平均値との間の差を表すとする。さらに、少なくともしきい値数のマクロブロックに割り当てられたDCmbの最小値をDCminとし、少なくともしきい値数のマクロブロックに割り当てられたDCmbの最大値をDCmaxとする。一例では、DCframe>1.5であるとき、DCminとDCmaxとの間にわたるオフセット値がピクセル値の各々に割り当てられる。
ここでも、図4は、上記の場合の文字をもつ実線ボックス中に(フルピクセルとも呼ばれる)整数ピクセルサンプルを示している。任意の所与の整数ピクセルサンプルについて、15個のサブピクセル位置が存在することができ、図4では、整数ピクセルサンプル「C3」について示され、「a」〜「o」と標示されている。H.264/AVCに従って、動き補償ユニット35は、最初に1次元6タップウィーナフィルタを使用してハーフピクセル位置「b」、「h」、および「j」を計算することができる。補間フィルタは、最初は水平方向に、次いで垂直方向に適用でき、またはその逆に適用できる。次いで、動き補償ユニット35は、双1次フィルタとすでに計算されたハーフピクセルサンプルとを使用して残りのクォーターピクセル位置をフィルタ処理することができる。
補間データを生成するために適用される実際のフィルタは、多種多様な実装形態が可能である。一例として、動き補償ユニット35は、補間値を定義するために適応補間フィルタ処理を使用することができる。別の例では、補間フィルタのいくつかのセットを適用し、最良の予測データを生じるセットを選択することができる。いくつかの例では、本開示で説明するように、補間フィルタは、1つまたは複数の参照フレームの履歴補間データに基づいて選択できる。本開示によれば、オフセットの追加が行われるのは、コーディングにおいて使用すべき参照フレームから何らかの補間予測データを生成した後であるが、コーディングすべき現在フレームについて動き推定が実行される前である。
図2に関して説明したように、動き補償ユニット35は、オフセット(SIFO)方式を用いた切替え補間フィルタを使用することができる。動き補償ユニット35は、たとえば、複数の異なるあらかじめ定義された補間フィルタ係数のセットによってそれぞれ定義され得る、複数の固定補間フィルタ37の間で選択することができる。補間フィルタの選択は、コード化ユニットレベル(たとえば、フレームレベルまたはスライスレベル)ごとに、またはサブピクセル位置(サンプルレベル)ごとに実行できる。さらに、本開示によれば、予測後にDCオフセットを追加することもでき、DCオフセットは、本開示で説明するように、可能な整数または分数ピクセルロケーションごとに定義することもできる。
すなわち、動き補償ユニット35は、いくつかの可能な代替の補間データを定義するために、固定補間フィルタ37の異なるセットを使用することができる。例として、動き補償ユニット35は、標準のITU−T H.264フィルタセット、H.264/AVCに基づくが(1/2ピクセル位置に対しては中間丸め、および1/4ピクセル位置に対してはバイアス丸めなしの)より高い精度をもつフィルタセット、またはカスタマイズされた補間フィルタのセットを使用することができる。カスタマイズされた補間フィルタのセットは、トレーニングビデオシーケンスのセットを使用することによってあらかじめ定義できる。
最良の予測(すなわち、より小さい予測誤差エネルギー)を提供するフィルタセットは、累積ベースでの以前の参照フレームまたは複数の参照フレームの履歴補間誤差によって示されるように、動き補償ユニット35によって選択され、補間データを生成するために適用され得る。複数の参照フレームを使用するときは、異なる参照フレームに対して異なるフィルタセットを選択することができる。一例では、動き補償ユニット35は1/2ピクセル位置(位置b、hおよびl)に対しては標準フィルタを適用し、動き補償ユニット35は他の1/4ピクセル位置に対してはカスタマイズされたフィルタセットを適用することができる。
予測データが動き補償ユニット35によって生成または補間されると、補間(または非補間)されたデータに関連するサンプルロケーションに基づいて予測データにDCオフセットを適用することができる。特に、本開示は、異なる整数またはサブ整数ピクセルロケーションに対して異なるDCオフセットの使用を与える。ここでも、図4に示す例示的なデータにおいて、これは、16個の異なるピクセルロケーション「C3」、「a」、「b」、「c」、「d」、「e」、「f」、「g」、「h」、「i」、「j」、「k」、「l」、「m」、「n」、および「o」の各々が、それ自体の異なるオフセットを定義することができることを意味する。したがって、16個の可能な整数およびサブ整数ロケーションに対して、16個の異なるオフセットが存在し得る。さらに、これらの異なるオフセットは、16個の異なるピクセルロケーション「E5」、「a’」、「b’」、「c’」、「d’」、「e’」、「f’」、「g’」、「h’」、「i’」、「j’」、「k’」、「l’」、「m’」、「n’」、および「o’」の各々にそれぞれ適用することもできる。
予測データのピクセルにDCオフセットを追加することは、異なるビデオフレーム間の照度変化の効果を捕捉するのを助けることになり得る。照度変化は、ビデオシーケンス中のフラッシュまたは暮れ行く空などによって生じることがある。H.264/AVCは、予測ピクセル値にオフセットを追加することを可能にし得る重み付け予測を使用する。しかしながら、H.264/AVC重み付け予測によって定義されたDCオフセットはフレームレベル上でのみ可能になり、すなわち、ビデオブロックの予測データが補間されるかどうかにかかわらず、所与のフレームに対してただ1つのオフセット値が定義されることを意味する。言い換えれば、フレームレベルオフセットでは、同じフレーム中のすべてのピクセルは同じDCオフセットを有する。
本開示によれば、場合によっては、DCオフセットは、補間および非補間データに関連する異なるサンプル位置に対して異なって定義できる。したがって、図4に示す15個のサブピクセル位置(「a」、「b」、「c」、「d」、「e」、「f」、「g」、「h」、「i」、「j」、「k」、「l、「m」、「n」、および「o」)の各々に対して異なるDCオフセットを定義し、整数ピクセル位置に対して別のDCオフセットを定義することができる。サンプルベースのDCオフセットを使用するときは、合計16個のDCオフセットを、デコーダへのビデオビットストリーム中のシンタックス要素としてコーディングし、送信することができる。サンプルベースのDCオフセットを適用することによって、動き補償ユニット35は、単純であるが効果的な動きセグメンテーションツールを提供することができる。
一例として、ビデオフレームは、静止背景として暮れ行く空を、前景として移動する物体を含んでいることがある。この場合、背景と前景とは、異なる程度の照度変化を有することができ、所与のビデオブロックを識別するピクセルのロケーションによって定義されたロケーション固有のDCオフセット値を使用することによって、動き補償ユニット35は、そのようなロケーション固有のDCオフセット値なしで達成され得るよりも効率的に、前景と背景とにおける異なる程度の照度変化を捕捉することが可能になり得る。
さらに、コード化ユニットのビデオブロックが、たとえば、双方向予測のために複数の異なる参照フレームを使用するとき、異なる参照フレームに関連する整数およびサブ整数ロケーションごとに異なるDCオフセットを計算し、送信することができる。場合によっては、一部の参照フレームは単一のフレームベースのDCオフセットを備え、他の参照フレームはいくつかのロケーション固有のDCオフセットを有することができる。いくつかの方式は、コーディングされている現在フレームに時間距離的に最も近い参照フレームに対してロケーション固有のDCオフセットのみを使用し、他の参照フレームのすべてに対して単一のフレームベースのDCオフセットを使用することができる。
DCオフセットをコーディングするために、単一のフレームベースのDCオフセットを使用するかどうか、またはいくつかのロケーション固有のDCオフセットを使用するかどうかを示すためにフレーム当たり1ビットを使用することができる。DCオフセットが整数精度のみを有する場合、これらのオフセットの値は、符号付き指数ゴロム符号(signed exponential-Golomb code)を使用してコーディングできる。DCオフセットが分数精度を有する場合、整数オフセットの値は、符号付き指数ゴロム符号を使用してコーディングし、非整数オフセットの値は、符号付き指数ゴロム符号によって定義された整数オフセットに対する残差差分を使用してコーディングできる。
デコーダ側において、デコーダは、どんな生成された予測ビデオブロックのピクセルにも適切なDCオフセット値を単純に適用することができる。デコーダによって使用されるDCオフセット値は、各予測ビデオブロックに関連する特定の整数またはサブ整数ピクセルロケーションのシンタックス要素中で定義できる。たとえば、コード化ユニットのヘッダ中のシンタックス要素は、そのコード化ユニットに対する複数のオフセット値の各々を指定するためのフラグまたは値を含むことができる。「オフセット」および「DCオフセット」という用語は、本開示では互換的に使用される。同じそれぞれのピクセルロケーションごとに全体的なオフセットが定義される限り、たとえば、整数ロケーションに対して1つのオフセットが定義され、可能なサブピクセルロケーションごとにいくつかの異なるオフセットが定義される限り、オフセットはDCオフセットと呼ばれる。
本開示の技法によれば、オフセットをシングル符号化パスで整数およびサブ整数ピクセル位置に適用することができる。一例では、DCオフセット値をシングルパスで割り当てるための方法は、以下の演算を含むことができる。
a. DCDiff[idx]、すなわち、参照フレーム「idx」と現在フレームとの間のDC差を計算する
b. sgn=sign(DCDiff[idx])をセットし、ただし、sign()は+1または−1を戻す
c. 参照フレームがidx>0を有する場合、frmOffset[idx]=min(round(DCDiff[idx]),1)をセットし、戻り、さもなければ、
d. numOffsetsをmin(round(DCDiff[idx]),8)として判断する
e. numOffsets≧numOffsetsMinである場合(たとえば、numOffsetsMin=2である場合)、numOffsetsに等しく、値が{1,2,3,4,5,6,7,8}のように増加するいくつかのオフセットを、順に、サブピクセル位置{5,15,13,7,9,6,11,14}に追加する
f. 他の場合、numOffsets1をmin(round(DCDiff[idx]/0.1),15)として計算する
g. numOffsets1>0であり、numOffsets1<=thFullPel0である場合、numOffsets1に等しく、値がsgnであるいくつかのオフセットを、順序{5,15,13,7,9,6,11,14}に従ってサブピクセル位置に追加する
h. そうではなく、numOffsets1>0である場合、値がsgnである8つのオフセットをサブピクセル位置{0,1,2,3,4,8,10,12}に追加し、numOffsets1に等しく、値がsgnであるいくつかのオフセットを順序{14,11,6,9,7,13,15,5}に従ってサブピクセル位置に追加する
いくつかの例では、上記で概説したようにプロセスを使用することによって、動き補償ユニット35は、オフセット値を整数およびサブ整数ピクセルロケーションにシングルパスで割り当てることができる。次いで、動き補償ユニット35は、動き推定ユニット36によって計算された動きベクトルによって識別される、特定の整数またはサブ整数ピクセルロケーションのオフセット値を予測ブロックに適用することができる。
いくつかの例では、動き補償ユニット35は、特定のサブ整数ピクセルに割り当てるべきオフセット値を判断するために2つのフレーム間のDC差を計算する。動き補償ユニット35は、現在フレームのブロックと、現在フレームに対する参照フレームのコロケートブロックとの間のDC差に関するヒストグラムの形態の統計を収集することができる。動き補償ユニット35は、最初に、現在フレームのブロックと参照フレームのコロケートブロックとの間のピクセル差の2乗誤差を第1の誤差値として計算することができる。動き補償ユニット35はまた、2つのブロック間の平均DC差を計算し、現在フレームのブロックのピクセル値からその計算されたDC差を減算し、次いで、平均DC差を減算した後の現在フレームのブロックのピクセルと参照フレームのコロケートブロックのピクセルとの間の差の2乗誤差を第2の誤差値として比較することができる。
動き補償ユニット35は、たとえば、第1の誤差値が第2の誤差値の2倍よりも大きいかどうかを調べることによって、第1の誤差値または第2の誤差値のうちのどちらがより良いかを判断することができる。動き補償ユニット35は、この比較に基づいて現在フレームのブロックと参照フレームのコロケートブロックとが十分類似しているかどうかを判断することができる。動き補償ユニット35が、2つのブロックが十分類似していると判断すると、動き補償ユニット35は、ブロックベースのDC差のヒストグラムを含んでいるベクトル内に誤差値を累積することができる。
動き補償ユニット35は、ヒストグラム用に収集されたいくつかのサンプルに基づいて、DCmin値およびDCmax値などの値を計算するためにヒストグラムのビン(bins)を様々な方法で分析することができる。一例では、最小のサンプル数「noSamples」について、動き補償ユニット35は、DCmin値が、noSamples個よりも多くのサンプルを有する負のDCに対応する数ビンのカウントの−1倍に等しく、DCmax値が、noSamples個よりも多くのサンプルを有する正のDCに対応する数ビンのカウントに等しいと判断することができる。別の例では、最小のサンプル数「noSamples」について、動き補償ユニット35は、DCmin値が、noSamples個よりも多くのサンプルを有する負のDCに対応するビンの数のカウント(カウントはDC差値0において開始する)の−1倍に等しいと判断することができるが、動き補償ユニット35は、テストが初めて不合格になった後に計数を止めるように構成され、動き補償ユニット35は、DCmax値が、noSamples個よりも多くのサンプルを有する正のDCに対応するビンの数のカウントに等しいと判断することができるが、動き補償ユニット35は、テストが初めて不合格になった後に計数を止めるように構成される。別の例では、最小のサンプル数「noSamples」について、動き補償ユニット35は、DCmin値が、noSamples個よりも多くのサンプルを含んでいる最左ビンに対応するDCに等しく、DCmax値が、noSamples個よりも多くのサンプルを含んでいる最右ビンに対応するDCに等しいと判断することができる。下記の表4は前記の表2と同じであるが、説明しやすいように以下に再掲する。
Figure 2012504904
これらの例示的な方法をさらに説明するために、noSamples=20であり、ヒストグラムが上記の表4に示す通りであると仮定すると、動き補償ユニット35は、第1の例示的な方法ではDCmin=−2およびDCmax=2であり、第2の例示的な方法ではDCmin=−2およびDCmax=1であり、第3の例示的な方法ではDCmin=−2およびDCmax=4であると判断することができる。
DCminおよびDCmaxを計算した後、動き補償ユニット35はサブ整数ピクセルにDCオフセット値を割り当てることができる。一例では、動き補償ユニット35は、サブ整数ピクセルにオフセットO(1)〜O(15)を15、13、7、9、6、11、14、1、4、3、12、10、2、8という順序(すなわち、サブピクセルインデックス15、13、7、など)で割り当てるが、割当ての他の順序も可能である。いくつかの例では、動き補償ユニット35は、可能なオフセット値の総数を計算することができないことがあり、その場合、動き補償ユニット35は、計算されたオフセットを上記で提示した順序に従って割り当てることができる。
動き補償ユニット35は、DCminおよびDCmaxの計算において使用されるしきい値noSamplesを判断するために、現在フレームと参照フレームとの間のフレームベースのDC差を使用することができる。動き補償ユニット35はまた、画像中のブロックの数に基づき、画像のサイズに従って、しきい値noSamples値を計算することができる。一例では、動き補償ユニット35は、割り当てるべきオフセット値の数は、2つのフレーム間のDC差+0.5に等しいと判断する。
いくつかの例では、動き補償ユニット35は、オフセット値の計算された数が計算値DCmaxよりも大きいときはオフセット値の計算された数をDCmaxとして使用すべきか、またはオフセット値の計算された数が計算値DCminよりも小さいときはオフセット値の計算された数をDCminとして使用すべきかを判断することによって、割り当てるDCオフセット値をさらに改善することができる。他の場合、動き補償ユニット35は、DCmaxおよび/またはDCminの最初に計算された値を使用することができる。
動き補償ユニット35は、最小値として1を有し、DCmaxの値とDCminの値との間の差をサブ整数ピクセル位置の数、たとえば、15で除算したものに等しい「roundFact」の値を計算することができ、上記の差は、次に最も高い整数値に丸められる。動き補償ユニット35は、以下を計算することによってDCmaxおよび/またはDCminの値をさらに改善することができる。
Figure 2012504904
以下の擬似コードは、上述したDCmaxおよびDCminを改善するための例示的な方法を表し、ただし、blockDCは、同じく上述した例示的な方法のうちの1つを使用してDCminおよびDCmaxの初期値を計算し、blockDCの後にくる擬似コードは、DCminおよびDCmaxの値を改善する。
Figure 2012504904
図5は、図4に関して説明した例示的な方法に従って割り当てられたオフセット値をもつ整数ピクセルロケーションを示す概念図である。特に、図5の例では、整数値に丸められた、参照フレームと現在フレームとの間の差、すなわち、round(DCDiff[idx])は6であると仮定する。したがって、動き補償ユニット35は、ピクセルロケーション{5,15,13,7,9,6}にそれぞれオフセット値1〜6を割り当てる。したがって、図5の例では、ピクセル「e」、「f」、「g」、「i」、「m」、および「o」にはそれぞれオフセット値1、6、4、5、3、および2が割り当てられる。本開示の技法によれば、動き推定ユニット36は、動き探索を実行するとき、ピクセル「e」、「f」、「g」、「i」、「m」、および「o」のうちの1つまたは複数において開始するブロックをスキップすることを通常の探索アルゴリズムが指図するであろう場合でも、そのようなピクセルは定義されたオフセット値を有するので、ピクセル「e」、「f」、「g」、「i」、「m」、および「o」において開始するブロックを分析することができる。
図6は、図4に関して説明した例示的な方法に従って割り当てられたオフセット値をもつ整数ピクセルロケーションを示す別の概念図である。特に、図6の例では、参照フレームと現在フレームとの間の差、すなわち、DCDiff[idx]は0.7であると仮定する。したがって、図4の例に従ってnumOffsetMinが2に等しいと仮定すると、DCDiff[idx]は、整数に丸められると、numOffsetMinよりも小さくなる。DCDiff[idx]を0.1で除算すると7になり、したがってnumOffset1は7に等しい。図4の例示的な方法によれば、numOffsets1に等しく、大きさがsgnであるいくつかのオフセットが{5,15,13,7,9,6,11,14}の順序でピクセルロケーションに追加される。ここで、sgnは、sign(DCDiff[idx])に等しく、この例では1である。したがって、動き補償ユニット35は、図6の例に示すように、ピクセル「e」、「f」、「g」、「i」、「k」、「m」、および「o」に値1のオフセットを割り当てる。本開示の技法によれば、動き推定ユニット36は、動き探索を実行するとき、ピクセル位置「e」、「f」、「g」、「i」、「k」、「m」、および「o」のうちの1つまたは複数において開始するブロックをスキップすることを通常の動き探索アルゴリズムが指図するであろう場合でも、ピクセル「e」、「f」、「g」、「i」、「k」、「m」、および「o」において開始するブロックを分析することができる。
図7は、図4に関して説明した例示的な方法に従って割り当てられたオフセット値をもつ整数ピクセルロケーションを示す別の概念図である。特に、図7の例では、参照フレームと現在フレームとの間の差、すなわち、DCDiff[idx]は1.3であると仮定する。したがって、図4の例に従ってnumOffsetMinが2に等しいと仮定すると、DCDiff[idx]は、整数に丸められるとnumOffsetMinよりも小さくなる。DCDiff[idx]を0.1で除算すると13になり、したがってnumOffset1は13に等しい。図4の例示的な方法によれば、大きさがsgnである8つのオフセットが{0,1,2,3,4,8,10,12}の順序でピクセルロケーションに追加される。ここで、sgnは、sign(DCDiff[idx])に等しく、この例では1であり、また、numOffsets1−8に等しく(この例では5)、大きさがsgnであるいくつかのオフセットをピクセルロケーション{14,11,6,9,7,13,15,5}に追加する。したがって、動き補償ユニット35は、図6の例に示すように、ピクセル「C3」、「a」、「b」、「c」、「d」、「f」、「g」、「h」、「i」、「j」、「k」、「l」、および「n」に値1のオフセットを割り当てる。本開示の技法によれば動き推定ユニット36は、動き探索を実行するとき、ピクセル「C3」、「a」、「b」、「c」、「d」、「f」、「g」、「h」、「i」、「j」、「k」、「l」、および「n」のうちの1つまたは複数において開始するブロックをスキップすることを通常の動き探索アルゴリズムが指定している場合でも、ピクセル「C3」、「a」、「b」、「c」、「d」、「f」、「g」、「h」、「i」、「j」、「k」、「l」、および「n」において開始するブロックを試みることができる。
図8は、切替え補間フィルタおよびオフセットを使用してシングルパスでビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。図8の例示的な方法は、以前に符号化されたフレームの履歴に基づいて補間フィルタを選択するための1つの例示的な方法を示している。説明のためにビデオエンコーダ20(図2)に関して説明するが、図8に関して説明する方法を他のビデオエンコーダが採用することができることを理解されたい。最初に、ビデオエンコーダ20は、ビデオソース18(図1)などのビデオソースからデジタルビデオを受信する(80)。デジタルビデオは、ビデオソース18がビデオキャプチャデバイスを備えるときは、新たに記録されたビデオを備え、または他の場合には、あらかじめ記録された非符号化デジタルビデオを備えることができる。デジタルビデオは、一般に、各フレームが複数のスライスおよびマクロブロックを備える、複数のフレームのシーケンスを備える。ビデオエンコーダ20は、ビデオシーケンス中のフレームをIフレーム、Pフレーム、またはBフレームとして符号化する。PフレームおよびBフレーム内で、いくつかのマクロブロックはIマクロブロックとして符号化されることがある。
ビデオエンコーダ20は、ピクチャグループ(GOP)中の第1のフレームをイントラコード化Iフレームとして符号化する(82)。次いで、参照フレームを再構成するために、符号化Iフレームが、たとえば、逆変換ユニット44によって復号された後、ビデオエンコーダ20は、Iフレームのサブ整数ピクセルの値を計算するために補間フィルタ37のデフォルトセットを選択する(84)。動き補償ユニット35が、Iフレームの再構成されたバージョンを受信し、補間フィルタ37の選択されたセットを使用してIフレームのサブピクセルの値を計算する(86)。第1のインターコード化ユニットの場合、フィルタの選択されたセットはフィルタのデフォルトセットであり得る。特に、Iフレームの各サブピクセルについて、動き補償ユニット35は、対応するデフォルト補間フィルタを適用して、そのサブピクセルの値を計算する。いくつかの例では、あるサブピクセルのデフォルト補間フィルタは、同じIフレームの別のサブピクセルのデフォルト補間フィルタとは異なることがある。設計者は、それらの補間フィルタのうちの1つをサブピクセル位置の各々のデフォルトとして指定し得る。ビデオエンコーダ20は、サブピクセルのロケーションに最も低い誤差を履歴的に与えた、補間フィルタ37のうちの1つをデフォルト補間フィルタとして選択することがあり、または、デフォルト補間フィルタは他の方法で選択されることがある。いずれの場合も、動き補償ユニット35は、補間フィルタ37のデフォルト補間フィルタを使用してIフレームのサブピクセルの値を計算し、Iフレームを参照フレームストア34に記憶する。
動き補償ユニット35はまた、参照フレームのピクセルおよびサブピクセルロケーションのうちの1つまたは複数についてのオフセット値を計算する(88)。いくつかの例では、オフセット値は、参照フレームと、符号化すべき次のフレーム、たとえば、BフレームまたはPフレームとの間の平均ピクセル値差を表すことがある。動き補償ユニット35は、図4に関してまたは本開示の他の場所で説明する方法のいずれかを利用して、参照フレームのピクセルに対するオフセット値を計算し、割り当てることができる。オフセット値を計算した後、動き補償ユニット35は、オフセット値に従って参照フレームのピクセル値を変更する。
次いで、ビデオエンコーダ20は、参照フレームに従って次のフレーム、たとえば、PフレームまたはBフレームを符号化する(90)。符号化すべき次のフレームがPフレームであるときは、ビデオエンコーダ20は、参照フレームストア34中の最も最近のIフレームまたはPフレームに基づいて、そのフレームを符号化することができる。そのフレームがBフレームであるときは、ビデオエンコーダ20は、参照フレームストア34の1つまたは複数のフレームに基づいて、そのフレームを符号化することができる。動き推定ユニット36は、参照フレームストア34の1つまたは複数のフレームに基づいて、そのフレームのコード化ユニット、たとえば、ブロックの動きベクトルを計算する。そのブロックの動きベクトルは、参照フレーム中の対応する予測ブロックをポイントする。動きベクトルは、参照フレーム内の整数またはサブ整数ピクセルロケーションを指すことがある。サブ整数精度動きベクトルの場合、上記で説明したように、参照フレームを補間して、サブピクセル位置において値を生成する(86)。
動きベクトルを計算するための動き探索中に、動き推定ユニット36は、動き探索アルゴリズムに従っていくつかの整数またはサブ整数ピクセルの評価をスキップすることがある。ただし、動き推定ユニット36は、本開示の技法によれば、動き探索アルゴリズムがそのピクセルをスキップすることを指定しているかどうかにかかわらず、動き補償ユニット35がオフセット値を適用した整数およびサブ整数ピクセルから始まるブロックを評価するように構成できる。これは、動き探索アルゴリズムに従ってこれらの位置をスキップするであろう、いくつかの従来の動き推定ユニットとは反対である。一例では、従来の動き探索アルゴリズムが、動き補償ユニット35がオフセット値を割り当てたサブ整数ピクセル位置のうちのいずれかまたはすべてをスキップすることを指図しているときでも、動き推定ユニット36は、それらの位置の各々を明示的に検査するように構成できる。たとえば、動き補償ユニット35が表5中の以下のオフセット値を以下のサブ整数ピクセル位置に割り当てた場合、表5は前記の表1と同じとなるが、説明しやすいように以下に再掲する。
Figure 2012504904
その場合、毎回、「仮想」オフセット{−2,−1,0,1,2,3}のうちの1つを参照ブロックに追加した後に、2つのブロックのSADの計算を6回計算することができる。最小のSADを有する動きベクトルを選択することができる。2つ以上の位置に現れるオフセット値(たとえば、サブピクセル位置1とサブピクセル位置11の両方に現れるオフセット「2」)は1回のみ試みることができる。すなわち、動き推定ユニットは、各々が同じ計算されたオフセット値を有している複数のサブピクセルのうちの1つのみを探索することができる。
動き補償ユニット35は、符号化されているフレーム中の現在ブロックと参照フレームの予測ブロック中との間の差に基づいて、各ブロックの残差値を計算する。ビデオエンコーダ20は、たとえば、DCT、量子化およびエントロピーコーディングを使用して、動きベクトル、残差、および適用可能な補間フィルタの識別子、およびオフセット値を符号化し、このデータをコード化ビットストリームでデコーダに送信する。
また、動き補償ユニット35は、動き推定のために適用された選択された補間フィルタを使用して計算されたサブピクセルをもつ参照フレームを使用して符号化されたフレームの誤差値を判断する(92)。動き補償ユニット35はまた、動き推定のために各サブピクセル位置に対して使用され得た他の潜在的な補間フィルタの各々についての誤差値を判断する(94)。このようにして、動き補償ユニット35は、様々な残りの補間フィルタに基づいて誤差値を再計算することができる。たとえば、動き補償ユニット35はコスト行列C[F][I]を計算することができる。iがサブピクセル位置に対応し、fがサブピクセル位置iに対応する補間フィルタを指す、各(f,i)について、動き補償ユニット35は、たとえば、図2に関して説明したように、補間フィルタfを使用して計算された値をもつ各サブピクセル位置iについて、フレーム上で累積誤差を計算する。
次いで、動き補償ユニット35は、補間フィルタのどのセットが最も低い誤差値を生じたかを判断する(96)。たとえば、動き補償ユニット35は、各サブピクセル位置および各未試行のフィルタにわたって反復して、フレームの総誤差を最大量低減する位置とその補間フィルタとを判断することができる。次いで、動き補償ユニット35は、フレームの総誤差を再計算し、反復の最大数が達せられるまで、または総誤差がしきい値量未満減少するまで、フレームの総誤差を低減する位置と対応する補間フィルタとを識別し続けることができる。この方法の一例は、図9に関して説明する。
次いで、動き補償ユニット35は、現在フレームが、ビデオシーケンス、たとえば、ピクチャグループ(GOP)、フレームグループ中の、または完全記録ビデオシーケンス中の、最後のフレームであるかどうかを判断する(98)。そうでない場合(98の「NO」分岐)、動き補償ユニット35は、以前に符号化されたフレームに補間フィルタの選択されたセットを適用して、サブピクセル値を計算し、そのフレームに対する後続フレームを符号化し、後続フレームが双方向符号化フレームであるときは、潜在的に別の参照フレームを符号化する。このプロセスは、補間フィルタが、以前のコーディングユニットまたは一連のコーディングユニットの最も低い誤差を生成することを判断するように、また、現在コーディングユニットの動き推定をサポートするために使用されるように、繰り返し続くことができる。このようにして、現在コーディングユニットの動き推定をサポートするための補間フィルタの選択は、1つまたは複数の以前にコーディングされたユニットについての履歴補間結果に基づく。上記で説明したように、補間フィルタは、より最近のコーディングユニットについての結果に対してより高い重み付けが与えられた累積補間結果に基づいて、選択され得る。
図9は、現在フレームのサブピクセルの補間値を計算するために、以前にコーディングされたフレームについての履歴補間結果に基づいて補間フィルタの最適なセットを識別するための例示的な方法を示すフローチャートである。最初に、動き補償ユニット35が、n個のサブ整数ピクセル位置について0からn−1までの範囲の要素インデックスをもつ履歴決定ベクトルDを受信する(110)。決定ベクトルDの各要素は、対応するサブピクセルの値を計算するために使用される補間フィルタに対応する。
次いで、動き補償ユニット35は、コスト行列C[F][I]を計算し、式中で、I中の各iはサブ整数ピクセル位置に対応し、F中の各fは、サブ整数ピクセルiの値を計算するために使用される補間フィルタに対応し、式中、C[f][i]は、補間フィルタfを使用して計算された値をもつ、現在フレーム中の各サブ整数ピクセル位置iの誤差の合計に等しい。したがって、以下の式中、誤差(x,i)は、符号化フレームに対するフレーム中のピクセルxに対するi番目のサブ整数ピクセルに関連する誤差値を指し、式中、各フレームはM個のピクセルを有する。
Figure 2012504904
動き補償ユニット35は、各サブ整数ピクセルロケーションの各補間フィルタの誤差値を計算する。一例では、動き補償ユニット35は、さらに、たとえば、参照フレームのみではなく、複数の履歴フレームについての累積補間誤差結果に基づいて補間フィルタ選択を行うために、現在フレームのコスト行列に先行フレームのコスト行列の分数値を加算することができる。コスト行列を計算した後、動き補償ユニット35は、先行フレームの補間フィルタによって計算されたサブピクセルに対応する値を加算することによって、(1つまたは複数の)履歴フレームの誤差値を計算する(114)。すなわち、動き補償ユニット35は、I中の各iについて、iがサブピクセル位置に対応し、fがiの値を計算するために使用される補間フィルタに対応する、各C[f][i]を累積することができる。この値は、一例では、SADに対応する。
次いで、動き補償ユニット35は、最もSAD値を低減する位置iとiの補間フィルタfとを判断する(116)。たとえば、動き補償ユニット35は、参照フレームのサブピクセルを計算するために使用されなかったサブピクセルと補間フィルタとの組合せについて、コスト行列中の各値にわたって反復し、これらの値を、参照フレームのために使用されたサブピクセルと補間フィルタとの組合せについての対応する値と比較することができる。未使用のサブピクセル位置と補間フィルタとの組合せと、対応するサブピクセル位置と、使用された補間フィルタとの間の最大の差は、この組合せである。この差が最小しきい値よりも大きいとき(118の「YES」分岐)、動き補償ユニット35は、決定ベクトルにおいて、そのサブピクセル位置の使用された補間フィルタを、その位置における新たに判断された補間フィルタと交換し(120)、この新しい組合せを使用して誤差(たとえば、SAD)を再計算する(122)。動き補償ユニット35は、反復の最大数が達せられるまで(124の「YES」分岐)、または上記で説明した差が所定のしきい値よりも小さくなるまで(118の「NO」分岐)、このプロセスを反復することができる。次いで、動き補償ユニット35は、更新された決定ベクトルを出力する(126)。次いで、更新された決定ベクトルを使用して、コーディングすべき現在ユニットの補間フィルタのセットを選択することができる。
以下の擬似コードは、本開示のDCオフセット技法を実装するための例を与える。その擬似コードでは、「blockDC1」は、「list」によって識別された参照フレームに基づいて、「input」によって識別された16×16ピクセルブロックについてのDCオフセット値DCminおよびDCmaxを計算するためのプロシージャである。「noSamples」は、DCminおよびDCmaxを計算するために利用可能であるプロシージャのためのサンプル数を定義する整数値である。「list」は、参照フレームを識別する整数値である(ITU H.264用語に従って「list」と呼ぶ)。一般に、BlockDC1およびBlockDC2は、参照フレームの視感度と符号化されているフレーム(または現在フレーム)の視感度との間の差を推定する関数である。推定されたオフセットは、参照フレームに適用することができ、動き補償予測を改善するために使用できる。
1つの手法は、参照フレームの平均視感度を考慮し、それを現在フレームの平均視感度と比較することであろう。このソリューションは、平均視感度が局所的な変動を表さないという欠点を有する。極めて異なる平均視感度をもつ2つのフレームが、動き補償された後、ほとんど同じマクロブロックになる場合が考えられる。これは、たとえば、明るい物体が遮られていない場合である。第2の可能性は、動き補償ブロック間のDC差を推定するために動きベクトルを使用する。この方法は正確であるが、動きベクトルが利用可能でなければならないという欠点を有することがあり、したがって、現在フレームが複数回符号化されなければならないこと(少なくとも、動きベクトルを推定するための1回と、DCオフセットを予測に適用するための1回があり、新たに計算されたオフセットを考慮に入れるために再計算する必要がある動き情報に影響を及ぼすことが知られている動作)が暗示される。
ブロックベースのDC差の計算により、動きベクトルを利用することなしに、上記で説明した問題などを克服し得る。ブロックベースのDC差の計算は、何らかのサイズ(たとえば、16×16ピクセル)のコロケートブロックの間のDC差に関する統計値の収集に基づき得る。その統計値はヒストグラムの形態で収集され得る。以下で提示する擬似コードでは、BlockDC1およびBlockDC2は、オフセット値の範囲を定義するためのDCminおよびDCmaxの値を設定するための技法を表す。参照フレーム中のブロックと現在フレーム中のブロックとを比較し、ピクセルの各ブロックについて、以下の2つの量を計算する。
1)ピクセル差の2乗誤差(関数BlockDC1またはBlockDC2におけるerr0)
2)ブロックの平均DCが各ピクセルの値に減算された後のピクセル差の2乗誤差(関数BlockDC1またはBlockDC2におけるerr1)
ブロックが十分類似しているかどうか(すなわち、コロケートブロック間の差が大部分はDC差によって生じているかどうか)の推定は、上記の量1)と量2)との比較に基づき得る。たとえば、1)における誤差(err0)が、2)における誤差(err1)の2倍よりも大きい場合は、それらのブロックが十分類似しておらず、その差が大部分はDC差によって生じていないと判断することができる。コロケートブロックが十分類似している場合は、それらの統計値を累積して、ブロックベースのDC差のヒストグラムを含んでいるベクトルにすることができる。場合によっては、DC差は、それらのDC差を整数値に丸めることによって量子化できる。
ヒストグラムビンを検査することによって、DC差の範囲を導出し、DCminおよびDCmaxを計算することが可能である。BlockDC1は、noSamples個よりも多くのサンプルを含んでいる最左および最右ヒストグラムビンに対応するDC値を判断することによって、DCminおよびDCmax値を計算する。BlockDC2は、noSamples個よりも多くのサンプルを有する正および負のDC値に対応するビンの数を計数することによって、DCminおよびDCmax値を計算する。別の手法は、BlockDC2の変形体として、noSamples個よりも多くのサンプルを有する負および正のDC値に対応するビンの数を計数するが、テストが初めて不合格になったときに計数を止めることがあり得る。以下の擬似コードでは、setSubpelOffset1およびsetSubpelOffset2は、関数BlockDC1およびBlockDC2のうちの対応する関数の実行中に実行された計算に従ってフレームのサブ整数ピクセルのオフセット値(たとえば、DCmin、DCmax、および/またはDCminとDCmaxとの間の値)を設定する関数である。
「BlockDC1」プロシージャは、以下の擬似コードによって示されるように、「input」によって識別された16×16ピクセルブロックについてのDCminおよびDCmaxの値を設定するためのプロシージャの一例である。
Figure 2012504904
Figure 2012504904
Figure 2012504904
「setSubpelOffset1」は、DCminとDCmaxとの間の範囲において「SubpelOffset[16]」によって識別されたブロックのDCオフセット値を設定するためのプロシージャである。「list」は、参照フレームを識別する整数値である。「imgOffset」は、0よりも大きいインデックスを有する参照フレーム上で使用されるフレームオフセットを識別する。この例では、setSubpelOffset1がblockDCをコールし、それにより、上記で提示したblockDC1のプロシージャを呼び出すことができる。
Figure 2012504904
Figure 2012504904
Figure 2012504904
「BlockDC2」プロシージャは、以下の擬似コードによって示されるように、「input」によって識別された16×16ピクセルブロックについてのDCminおよびDCmaxの値を設定するための別のプロシージャの一例である。DCminおよびDCmaxは、BlockDC2によって計算された値へのポインタであり、別のプロシージャは、それを、ブロックのDC値をDCminとDCmaxとの間に設定するための範囲として使用し得る。「noSamples」は、DCオフセット値を計算するために利用可能であるプロシージャのためのサンプル数を定義する整数値である。
Figure 2012504904
Figure 2012504904
Figure 2012504904
「setSubpelOffset2」は、DCminとDCmaxとの間の範囲において「input」によって識別されたブロックのサブ整数ピクセル位置のオフセット値を設定するプロシージャである。この例では、setSubpelOffset1がblockDCをコールし、それにより、上記で提示したblockDC1またはblockDC2のいずれかのプロシージャを呼び出すことができる。
Figure 2012504904
Figure 2012504904
Figure 2012504904
Figure 2012504904
Figure 2012504904
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(すなわち、チップセット)を含む、多種多様なデバイスまたは装置において実現できる。機能的態様を強調するために与えられた任意の構成要素、モジュールまたはユニットについて説明したが、異なるハードウェアユニットによる実現を必ずしも必要とするわけではない。
本開示で説明する技法は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装できる。たとえば、説明する技法の様々な態様は、1つまたは複数のマイクロプロセッサを含む1つまたは複数のプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積または個別論理回路、ならびにそのような構成要素の任意の組合せ内に実装できる。「プロセッサ」または「処理回路」という用語は、一般に、上記の論理回路のいずれかを、単独で、または他の論理回路と組み合わせて指し、あるいは他の等価な回路を指すことがある。
そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示で説明する様々な動作および機能をサポートするために、同じデバイス内にまたは別々のデバイス内に実装できる。さらに、説明したユニット、モジュールまたは構成要素のいずれかを、一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装することができる。モジュールまたはユニットとしての様々な機能の図は、様々な機能的態様を強調するものであり、そのようなモジュールまたはユニットが別々のハードウェアまたはソフトウェア構成要素によって実現されなければならないことを必ずしも暗示するわけではない。そうではなく、1つまたは複数のモジュールまたはユニットに関連する機能は、別々のハードウェアまたはソフトウェア構成要素によって実行するか、あるいは共通または別々のハードウェアまたはソフトウェア構成要素内に組み込むことができる。
また、本明細書で説明する技法は、命令を含んでいるコンピュータ可読記憶媒体などのコンピュータ可読媒体において実施または符号化することができる。コンピュータ可読媒体中に埋め込まれたか、または符号化された命令は、たとえば、その命令が実行されたとき、プログラマブルプロセッサまたは他のプロセッサに方法を実行させることができる。コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、ハードディスク、CD−ROM、フロッピー(登録商標)ディスク、カセット、磁気媒体、光学媒体、または他のコンピュータ可読媒体を含むことができる。
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。

Claims (42)

  1. 現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
    前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
    前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
    を備えるビデオ符号化方法。
  2. 前記ブロックを符号化することは、符号化がシングルパスで実行されるように前記ブロックの動き推定を1回のみ実行することを備える、請求項1に記載の方法。
  3. 1つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択することをさらに備える、請求項1に記載の方法。
  4. 前記補間フィルタを選択することが、
    以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第1のセットの第1の補間誤差値を判断することと、
    補間フィルタの第2のセットの第2の補間誤差値を判断することと、
    前記第1の誤差値と前記第2の誤差値を比較することと、
    前記比較に基づいて前記補間フィルタを選択することと
    を備える、請求項3に記載の方法。
  5. 前記補間フィルタを選択することが、
    複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
    前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
    を備える、請求項3に記載の方法。
  6. 前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項3に記載の方法。
  7. 前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化することをさらに備える、請求項3に記載の方法。
  8. 前記ビデオブロックを符号化することが、
    前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
    前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
    前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
    を備える、請求項1に記載の方法。
  9. 動き推定を実行することは、
    オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
    オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
    を備える、請求項8に記載の方法。
  10. 前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの1つを備える、請求項1に記載の方法。
  11. 現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
    前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
    前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
    を行うように構成されたビデオエンコーダを備えるビデオ符号化装置。
  12. 前記ビデオエンコーダが、符号化がシングルパスで実行されるように前記ブロックの動き推定を1回のみ実行するように構成された、請求項11に記載の装置。
  13. 前記ビデオエンコーダが、1つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択するように構成された、請求項11に記載の装置。
  14. 前記ビデオエンコーダが、
    以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第1のセットの第1の補間誤差値を判断することと、
    補間フィルタの第2のセットの第2の補間誤差値を判断することと、
    前記第1の誤差値と前記第2の誤差値を比較することと、
    前記比較に基づいて前記補間フィルタを選択することと
    を行うように構成された、請求項13に記載の装置。
  15. 前記ビデオエンコーダが、
    複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
    前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
    を行うように構成された、請求項13に記載の装置。
  16. 前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項13に記載の装置。
  17. 前記ビデオエンコーダが、前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化するように構成された、請求項13に記載の装置。
  18. 前記ビデオエンコーダが、
    前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
    前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
    前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
    を行うように構成された、請求項11に記載の装置。
  19. 前記ビデオエンコーダが、
    オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
    オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
    を行うように構成された、請求項18に記載の装置。
  20. 前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの1つを備える、請求項11に記載の装置。
  21. 前記ビデオエンコーダがワイヤレス通信デバイスの一部を形成する、請求項11に記載の装置。
  22. 前記ビデオエンコーダが集積回路デバイスを備える、請求項11に記載の装置。
  23. 現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間するための手段と、
    前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用するための手段と、
    前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化するための手段と
    を備えるビデオ符号化装置。
  24. 前記ブロックを符号化するための前記手段は、符号化がシングルパスで実行されるように前記ブロックの動き推定を1回のみ実行するための手段を備える、請求項23に記載の装置。
  25. 1つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択するための手段をさらに備える、請求項23に記載の装置。
  26. 前記補間フィルタを選択するための前記手段が、
    以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第1のセットの第1の補間誤差値を判断するための手段と、
    補間フィルタの第2のセットの第2の補間誤差値を判断するための手段と、
    前記第1の誤差値と前記第2の誤差値を比較するための手段と、
    前記比較に基づいて前記補間フィルタを選択するための手段と
    を備える、請求項25に記載の装置。
  27. 前記補間フィルタを選択するための前記手段が、
    複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積するための手段と、
    前記累積された補間誤差値に基づいて前記補間フィルタを選択するための手段と
    を備える、請求項25に記載の装置。
  28. 前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項25に記載の装置。
  29. 前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化するための手段をさらに備える、請求項25に記載の装置。
  30. 前記ビデオブロックを符号化するための前記手段が、
    前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行するための手段と、
    前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断するための手段と、
    前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断するための手段と
    を備える、請求項23に記載の装置。
  31. 動き推定を実行するための前記手段は、
    オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行するための手段と、
    オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制するための手段と
    を備える、請求項30に記載の装置。
  32. 前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの1つを備える、請求項23に記載の装置。
  33. 現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
    前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
    前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
    をプロセッサに行わせるための命令で符号化されたコンピュータ可読記憶媒体。
  34. 前記ブロックを符号化することは、符号化がシングルパスで実行されるように前記ブロックの動き推定を1回のみ実行することを備える、請求項33に記載の記憶媒体。
  35. 1つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタの前記セットを選択することを前記プロセッサに行わせるための命令をさらに備える、請求項33に記載の記憶媒体。
  36. 以前に符号化されたビデオユニットを符号化するために使用される補間フィルタの第1のセットの第1の補間誤差値を判断することと、
    補間フィルタの第2のセットの第2の補間誤差値を判断することと、
    前記第1の誤差値と前記第2の誤差値を比較することと、
    前記比較に基づいて前記補間フィルタを選択することと
    を前記プロセッサに行わせるための命令をさらに備える、請求項35に記載の記憶媒体。
  37. 複数の以前に符号化されたビデオユニットを符号化するために使用される異なる補間フィルタの補間誤差値を累積することと、
    前記累積された補間誤差値に基づいて前記補間フィルタを選択することと
    を前記プロセッサに行わせるための命令をさらに備える、請求項35に記載の記憶媒体。
  38. 前記補間フィルタが、それぞれのサブ整数ピクセルに対応し、前記補間フィルタが、前記サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む、請求項35に記載の記憶媒体。
  39. 前記選択された補間フィルタと前記符号化されたブロックの前記オフセットとを示すシンタックス要素を符号化することを前記プロセッサに行わせるための命令をさらに備える、請求項35に記載の記憶媒体。
  40. 前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
    前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
    前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
    を前記プロセッサに行わせるための命令をさらに備える、請求項35に記載の記憶媒体。
  41. オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
    オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
    を前記プロセッサに行わせるための命令をさらに備える、請求項40に記載の記憶媒体。
  42. 前記ビデオユニットの各々がビデオフレームまたはビデオスライスのうちの1つを備える、請求項33に記載の記憶媒体。
JP2011530075A 2008-10-03 2009-05-08 補間フィルタおよびオフセットを用いたデジタルビデオコーディング Expired - Fee Related JP5547198B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10278908P 2008-10-03 2008-10-03
US61/102,789 2008-10-03
US12/432,544 2009-04-29
US12/432,544 US9078007B2 (en) 2008-10-03 2009-04-29 Digital video coding with interpolation filters and offsets
PCT/US2009/043391 WO2010039288A1 (en) 2008-10-03 2009-05-08 Digital video coding with interpolation filters and offsets

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013197616A Division JP2014042273A (ja) 2008-10-03 2013-09-24 補間フィルタおよびオフセットを用いたデジタルビデオコーディング

Publications (2)

Publication Number Publication Date
JP2012504904A true JP2012504904A (ja) 2012-02-23
JP5547198B2 JP5547198B2 (ja) 2014-07-09

Family

ID=41199822

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011530075A Expired - Fee Related JP5547198B2 (ja) 2008-10-03 2009-05-08 補間フィルタおよびオフセットを用いたデジタルビデオコーディング
JP2013197616A Pending JP2014042273A (ja) 2008-10-03 2013-09-24 補間フィルタおよびオフセットを用いたデジタルビデオコーディング

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2013197616A Pending JP2014042273A (ja) 2008-10-03 2013-09-24 補間フィルタおよびオフセットを用いたデジタルビデオコーディング

Country Status (8)

Country Link
US (1) US9078007B2 (ja)
EP (1) EP2345254A1 (ja)
JP (2) JP5547198B2 (ja)
KR (2) KR101437719B1 (ja)
CN (1) CN102172022B (ja)
BR (1) BRPI0920730A2 (ja)
TW (1) TW201016019A (ja)
WO (1) WO2010039288A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013529875A (ja) * 2010-06-25 2013-07-22 クゥアルコム・インコーポレイテッド 圧縮ビットストリームへの交換補間フィルタ係数の組み込み
JP2014504098A (ja) * 2010-12-21 2014-02-13 インテル・コーポレーション 高い効率の動画符号化のためのコンテンツアダプティブ動き補償フィルタリング
JP2016518769A (ja) * 2013-04-04 2016-06-23 クゥアルコム・インコーポレイテッドQualcomm Incorporated Shvcのための複数のベースレイヤ参照ピクチャ

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010050089A1 (ja) * 2008-10-29 2010-05-06 パナソニック株式会社 動画像圧縮符号化における符号化処理方法及び符号化処理装置
CN102714731A (zh) * 2009-12-22 2012-10-03 索尼公司 图像处理设备和方法及程序
WO2011086672A1 (ja) * 2010-01-13 2011-07-21 株式会社 東芝 動画像符号化装置および復号装置
EP2557795A4 (en) * 2010-04-06 2015-07-08 Samsung Electronics Co Ltd METHOD AND APPARATUS FOR ENCODING A VIDEO AND METHOD AND APPARATUS FOR DECODING A VIDEO
US9219921B2 (en) * 2010-04-12 2015-12-22 Qualcomm Incorporated Mixed tap filters
US8798131B1 (en) 2010-05-18 2014-08-05 Google Inc. Apparatus and method for encoding video using assumed values with intra-prediction
US9317896B2 (en) * 2010-07-09 2016-04-19 Samsung Electronics Co., Ltd. Image interpolation method and apparatus
US20120063515A1 (en) * 2010-09-09 2012-03-15 Qualcomm Incorporated Efficient Coding of Video Parameters for Weighted Motion Compensated Prediction in Video Coding
GB2484071B (en) * 2010-09-23 2013-06-12 Imagination Tech Ltd De-interlacing of video data
US9055305B2 (en) * 2011-01-09 2015-06-09 Mediatek Inc. Apparatus and method of sample adaptive offset for video coding
EP3541076B1 (en) 2010-10-20 2021-03-10 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Error resilient rate distortion optimization for image and video encoding
US8968080B1 (en) * 2010-11-05 2015-03-03 Wms Gaming, Inc. Display of third party content on a wagering game machine
US10045046B2 (en) 2010-12-10 2018-08-07 Qualcomm Incorporated Adaptive support for interpolating values of sub-pixels for video coding
US8842723B2 (en) * 2011-01-03 2014-09-23 Apple Inc. Video coding system using implied reference frames
CN103503458B (zh) 2011-01-07 2017-09-22 诺基亚技术有限公司 视频编码中的运动预测
US9161041B2 (en) * 2011-01-09 2015-10-13 Mediatek Inc. Apparatus and method of efficient sample adaptive offset
US9380319B2 (en) 2011-02-04 2016-06-28 Google Technology Holdings LLC Implicit transform unit representation
US9313519B2 (en) 2011-03-11 2016-04-12 Google Technology Holdings LLC Interpolation filter selection using prediction unit (PU) size
WO2012125450A1 (en) * 2011-03-11 2012-09-20 General Instrument Corporation Interpolation filter selection using prediction index
US8767817B1 (en) * 2011-04-07 2014-07-01 Google Inc. Apparatus and method for coding using parameterized equation
US9143799B2 (en) * 2011-05-27 2015-09-22 Cisco Technology, Inc. Method, apparatus and computer program product for image motion prediction
CN108391137B (zh) 2011-06-15 2022-07-19 韩国电子通信研究院 可伸缩解码方法/设备、可伸缩编码方法/设备和介质
EP2724534A2 (en) 2011-06-24 2014-04-30 Motorola Mobility LLC Selection of phase offsets for interpolation filters for motion compensation
MX2014000046A (es) * 2011-06-28 2014-02-17 Samsung Electronics Co Ltd Metodo de codificacion de video que utiliza ajustes de desplazamiento de comformidad clasificacion de pixel y aparato para ello, metodo de decodificacion de video y aparato para ello.
US9055304B2 (en) * 2011-07-01 2015-06-09 Qualcomm Incorporated Reduced resolution pixel interpolation
BR112013033743A2 (pt) * 2011-07-01 2019-09-24 Motorola Mobility Inc filtro de interpolação de subpixel conjunto para predição temporal
US9392235B2 (en) 2011-11-18 2016-07-12 Google Technology Holdings LLC Explicit way for signaling a collocated reference picture for video coding
BR112014012038A2 (pt) * 2011-11-18 2017-05-30 Motorola Mobility Llc armazenamento eficiente de informação de movimento para codificação de vídeo de alta eficiência
EP2781098B1 (en) 2011-11-18 2019-02-06 Google Technology Holdings LLC An explicit way for signaling a collocated picture for high efficiency video coding (hevc)
KR101607038B1 (ko) 2011-11-21 2016-04-11 모토로라 모빌리티 엘엘씨 시간 예측을 위한 병치된 픽처의 암시적 결정 및 결합된 암시적 및 명시적 결정
US9386305B2 (en) 2011-11-28 2016-07-05 Qualcomm Incorporated Largest coding unit (LCU) or partition-based syntax for adaptive loop filter and sample adaptive offset in video coding
CN104303500B (zh) 2011-12-26 2018-04-13 谷歌技术控股有限责任公司 对于时间预测的并列图片的隐式确定
KR102470694B1 (ko) 2012-02-04 2022-11-25 엘지전자 주식회사 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치
US20130243085A1 (en) * 2012-03-15 2013-09-19 Samsung Electronics Co., Ltd. Method of multi-view video coding and decoding based on local illumination and contrast compensation of reference frames without extra bitrate overhead
CN104937939B (zh) 2012-04-11 2018-10-23 谷歌技术控股有限责任公司 用于时间运动矢量预测符标志的编码器和解码器及其方法
WO2013154674A1 (en) 2012-04-11 2013-10-17 Motorola Mobility Llc Evaluation of signaling of collocated reference picture for temporal prediction
GB2501535A (en) 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9781447B1 (en) 2012-06-21 2017-10-03 Google Inc. Correlation based inter-plane prediction encoding and decoding
CN108235036B (zh) * 2012-07-16 2020-10-09 三星电子株式会社 Sao编码方法和设备以及sao解码方法和设备
US9319681B2 (en) 2012-07-18 2016-04-19 Google Technology Holdings LLC Signaling of temporal motion vector predictor (MVP) enable flag
TW201406166A (zh) * 2012-07-27 2014-02-01 Novatek Microelectronics Corp 視訊編碼方法與視訊編碼裝置
CN103581689A (zh) * 2012-08-07 2014-02-12 联咏科技股份有限公司 视频编码方法与视频编码装置
US9167268B1 (en) 2012-08-09 2015-10-20 Google Inc. Second-order orthogonal spatial intra prediction
US9344742B2 (en) 2012-08-10 2016-05-17 Google Inc. Transform-domain intra prediction
US9380298B1 (en) 2012-08-10 2016-06-28 Google Inc. Object-based intra-prediction
US9369732B2 (en) 2012-10-08 2016-06-14 Google Inc. Lossless intra-prediction video coding
US9628790B1 (en) 2013-01-03 2017-04-18 Google Inc. Adaptive composite intra prediction for image and video compression
US9219915B1 (en) 2013-01-17 2015-12-22 Google Inc. Selection of transform size in video coding
US9967559B1 (en) 2013-02-11 2018-05-08 Google Llc Motion vector dependent spatial transformation in video coding
US9544597B1 (en) 2013-02-11 2017-01-10 Google Inc. Hybrid transform in video encoding and decoding
CN103237220B (zh) * 2013-04-29 2015-12-23 清华大学 视频编码中基于非均匀像素截断的运动估计方法
US9674530B1 (en) 2013-04-30 2017-06-06 Google Inc. Hybrid transforms in video coding
US9247251B1 (en) 2013-07-26 2016-01-26 Google Inc. Right-edge extension for quad-tree intra-prediction
KR20150045819A (ko) * 2013-10-21 2015-04-29 삼성전자주식회사 움직임 보상을 수행하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
US9438925B2 (en) * 2013-12-31 2016-09-06 Vixs Systems, Inc. Video encoder with block merging and methods for use therewith
US9749642B2 (en) * 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US10412387B2 (en) 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
US9565451B1 (en) 2014-10-31 2017-02-07 Google Inc. Prediction dependent transform coding
EP3023938A1 (en) 2014-11-21 2016-05-25 Thomson Licensing Method and apparatus for tracking the motion of image content in a video frames sequence using sub-pixel resolution motion estimation
US9769499B2 (en) 2015-08-11 2017-09-19 Google Inc. Super-transform video coding
US10277905B2 (en) 2015-09-14 2019-04-30 Google Llc Transform selection for non-baseband signal coding
CN108141602B (zh) * 2015-09-25 2021-02-23 华为技术有限公司 视频编解码器、编解码方法和计算机可读存储介质
CN108370445B (zh) 2015-09-25 2020-02-21 华为技术有限公司 一种视频编码器和视频解码器
RU2696314C1 (ru) 2015-09-25 2019-08-01 Хуавэй Текнолоджиз Ко., Лтд. Устройство и способ компенсации движения в видео
MY187403A (en) 2015-09-25 2021-09-22 Huawei Tech Co Ltd Apparatus and method for video motion compensation with selectable interpolation filter
CA2999848C (en) 2015-09-25 2020-08-18 Huawei Technologies Co., Ltd. Apparatus and method for video motion compensation
US9807423B1 (en) 2015-11-24 2017-10-31 Google Inc. Hybrid transform scheme for video coding
US10009622B1 (en) 2015-12-15 2018-06-26 Google Llc Video coding with degradation of residuals
JP7094076B2 (ja) * 2016-08-19 2022-07-01 沖電気工業株式会社 映像符号化装置、プログラム及び方法、並びに、映像復号装置、プログラム及び方法、並びに、映像伝送システム
US10341659B2 (en) * 2016-10-05 2019-07-02 Qualcomm Incorporated Systems and methods of switching interpolation filters
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
US10499078B1 (en) * 2017-02-07 2019-12-03 Google Llc Implicit motion compensation filter selection
TWI648708B (zh) * 2017-09-06 2019-01-21 奇景光電股份有限公司 像素內插電路與像素內插方法
CN111010568B (zh) * 2018-10-06 2023-09-29 华为技术有限公司 插值滤波器的训练方法、装置及视频图像编解码方法、编解码器
JP7277579B2 (ja) 2018-11-02 2023-05-19 北京字節跳動網絡技術有限公司 Hmvp候補記憶装置のための表の保守
EP3942823A4 (en) * 2019-03-18 2023-04-05 Tencent America LLC VIDEO CODING METHOD AND APPARATUS
CN113647110B (zh) 2019-04-01 2022-11-08 北京字节跳动网络技术有限公司 帧间编码模式中的二分之一像素插值滤波器的指示
US11122297B2 (en) 2019-05-03 2021-09-14 Google Llc Using border-aligned block functions for image compression
JP7359942B2 (ja) 2019-08-20 2023-10-11 北京字節跳動網絡技術有限公司 映像処理における代替の補間フィルタの選択的使用
CN118214864A (zh) * 2019-09-11 2024-06-18 夏普株式会社 用于基于交叉分量相关性来减小视频编码中的重构误差的***和方法
EP4128755A4 (en) * 2020-04-29 2023-09-06 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR INTERPOLATION FILTERING UNDERSAMPLING
WO2024037645A1 (en) * 2022-08-19 2024-02-22 Mediatek Inc. Boundary sample derivation in video coding

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012503901A (ja) * 2008-09-25 2012-02-09 メディアテック インコーポレーテッド 動画符号化のための適応補間フィルタ

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001076154A2 (en) 2000-04-03 2001-10-11 Telefonaktiebolaget Lm Ericsson (Publ) Ad-hoc network and gateway
DE20102205U1 (de) 2001-02-07 2001-08-23 Latein, Christine, 75177 Pforzheim Multifunktionaler, transportabler Computer
US6847405B2 (en) * 2001-09-14 2005-01-25 Sony Corporation Motion-adaptive de-interlacing method and system for digital televisions
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7620109B2 (en) * 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
JP4102973B2 (ja) 2002-04-24 2008-06-18 日本電気株式会社 動画像の符号化方法および復号化方法、これを用いた装置とプログラム
US20040076333A1 (en) * 2002-10-22 2004-04-22 Huipin Zhang Adaptive interpolation filter system for motion compensated predictive video coding
US7599438B2 (en) * 2003-09-07 2009-10-06 Microsoft Corporation Motion vector block pattern coding and decoding
JP2005318297A (ja) * 2004-04-28 2005-11-10 Toshiba Corp 動画像符号化・復号方法及び装置
EP1617672A1 (en) * 2004-07-13 2006-01-18 Matsushita Electric Industrial Co., Ltd. Motion estimator/compensator including a 16-bit 1/8 pel interpolation filter
JP2008536414A (ja) * 2005-04-13 2008-09-04 ゴットフリート・ヴィルヘルム・ライプニッツ・ウニヴェルジテート・ハノーヴァー ビデオの拡張された符号化方法及び装置
US7460893B2 (en) * 2005-05-17 2008-12-02 Nokia Corporation Display changing in a portable electronic device
US20080075165A1 (en) * 2006-09-26 2008-03-27 Nokia Corporation Adaptive interpolation filters for video coding
EP2092752A2 (en) 2006-12-01 2009-08-26 France Telecom Adaptive interpolation method and system for motion compensated predictive video coding and decoding
US8509316B2 (en) * 2007-01-09 2013-08-13 Core Wireless Licensing, S.a.r.l. Adaptive interpolation filters for video coding
US8059207B2 (en) 2007-02-23 2011-11-15 Samsung Electronics Co., Ltd. System and method for video noise reduction using an adaptive temporal method with motion detection and motion compensation
MX2009010527A (es) * 2007-04-09 2009-10-26 Nokia Corp Vectores de movimiento de alta precision para codificacion de video con baja complejidad de codificacion y decodificacion.
FR2934901B1 (fr) 2008-08-05 2012-07-13 Commissariat Energie Atomique Procede de mesure sans contact de l'indice de refraction d'un materiau par tomographie par coherence optique, application a la mesure de la masse volumique d'un materiau poreux.

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012503901A (ja) * 2008-09-25 2012-02-09 メディアテック インコーポレーテッド 動画符号化のための適応補間フィルタ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN7012003630; Karczewicz,M.,Ye,Y., and Chen,P.: 'Switched Interpolation Filter with Offset' ITU TELECOMMUNICATIONSTANDARDIZATION SECTOR STUDY PERIOD 2005-2008 Q6/16 STUDY GROUP 16 - CONTRIBUTI , 200804 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013529875A (ja) * 2010-06-25 2013-07-22 クゥアルコム・インコーポレイテッド 圧縮ビットストリームへの交換補間フィルタ係数の組み込み
JP2014504098A (ja) * 2010-12-21 2014-02-13 インテル・コーポレーション 高い効率の動画符号化のためのコンテンツアダプティブ動き補償フィルタリング
US9100662B2 (en) 2010-12-21 2015-08-04 Intel Corporation Content adaptive motion compensation filtering for high efficiency video coding
JP2016518769A (ja) * 2013-04-04 2016-06-23 クゥアルコム・インコーポレイテッドQualcomm Incorporated Shvcのための複数のベースレイヤ参照ピクチャ

Also Published As

Publication number Publication date
CN102172022B (zh) 2016-08-17
WO2010039288A1 (en) 2010-04-08
EP2345254A1 (en) 2011-07-20
KR20130054423A (ko) 2013-05-24
KR101437719B1 (ko) 2014-09-03
JP5547198B2 (ja) 2014-07-09
US20100111182A1 (en) 2010-05-06
CN102172022A (zh) 2011-08-31
KR20110063857A (ko) 2011-06-14
BRPI0920730A2 (pt) 2018-06-26
JP2014042273A (ja) 2014-03-06
US9078007B2 (en) 2015-07-07
TW201016019A (en) 2010-04-16

Similar Documents

Publication Publication Date Title
JP5547198B2 (ja) 補間フィルタおよびオフセットを用いたデジタルビデオコーディング
JP5646668B2 (ja) 切替え補間フィルタにおけるオフセット計算
CN106165419B (zh) 用于视频译码的自适应运动向量分辨率信令
JP6707678B2 (ja) 動き補償予測のための方法及び装置
JP5805787B2 (ja) 適応タップサイズをもつ低複雑度補間フィルタ処理
JP5619725B2 (ja) ビデオコーディングにおけるサブピクセル解像度のための補間フィルタサポート
US20090257500A1 (en) Offsets at sub-pixel resolution
JP5575747B2 (ja) 動き補償プロセスにおいて予測ブロックを発生する方法、装置、およびコンピュータ可読記憶媒体
JP2014140192A (ja) 固定フィルタまたは適応フィルタに基づくビデオ・コーディングのためのレートひずみ定義補間
JP2011517912A (ja) ビデオコーディングにおけるサブピクセル位置の補間フィルタリングに対する対称性
WO2008149327A2 (en) Method and apparatus for motion-compensated video signal prediction
KR20130029077A (ko) 혼합된 탭 필터들
CN114051732A (zh) 用于视频编解码中的解码器侧运动矢量细化的方法和装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120904

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121204

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121211

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130521

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130924

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20131003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131022

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140324

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140415

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140514

R150 Certificate of patent or registration of utility model

Ref document number: 5547198

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees