JP5547198B2 - Digital video coding using interpolation filters and offsets - Google Patents
Digital video coding using interpolation filters and offsets Download PDFInfo
- Publication number
- JP5547198B2 JP5547198B2 JP2011530075A JP2011530075A JP5547198B2 JP 5547198 B2 JP5547198 B2 JP 5547198B2 JP 2011530075 A JP2011530075 A JP 2011530075A JP 2011530075 A JP2011530075 A JP 2011530075A JP 5547198 B2 JP5547198 B2 JP 5547198B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- video
- interpolation
- offset
- unit
- 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.)
- Expired - Fee Related
Links
- 238000011156 evaluation Methods 0.000 claims 6
- 238000000034 method Methods 0.000 claims 4
- 238000010845 search algorithm Methods 0.000 claims 3
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods 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/19—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods 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/192—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/59—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details 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)
Description
本出願は、その全体が参照により本明細書に組み込まれる、2008年10月3日に出願された米国仮特許出願第61/102,789号の利益を主張する。 This application claims the benefit of US Provisional Patent Application No. 61 / 102,789, filed Oct. 3, 2008, which is incorporated herein by reference in its entirety.
本開示は、デジタルビデオコーディングに関し、より詳細には、補間フィルタおよびオフセットが使用されるビデオコーディング技法に関する。 The present disclosure relates to digital video coding, and more particularly to video coding techniques in which interpolation filters and offsets are used.
デジタルビデオ機能は、デジタルテレビ、デジタル直接ブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話などを含む、広範囲にわたるデバイスに組み込むことができる。デジタルビデオデバイスは、MPEG−2、MPEG−4、またはITU−T H.264/MPEG−4、Part10、Advanced Video Coding(AVC)によって定義された規格、あるいは他の規格に記載されたビデオ圧縮技法などのビデオ圧縮技法を実装して、デジタルビデオ情報をより効率的に送信および受信する。ビデオ圧縮技法では、ビデオシーケンスに固有の冗長性を低減または除去するために空間的予測および/または時間的予測を実行することができる。
Digital video functions include digital television, digital direct broadcast system, wireless broadcast system, personal digital assistant (PDA), laptop or desktop computer, digital camera, digital recording device, video game device, video game console, cellular phone or satellite radio It can be incorporated into a wide range of devices, including telephones. Digital video devices are MPEG-2, MPEG-4, or ITU-T H.264. Implement video compression techniques, such as those defined by H.264 / MPEG-4,
イントラコーディングは、空間的予測に依拠して、所与のコード化ユニット内のビデオブロック間の空間的冗長性を低減または除去する。インターコーディングは、時間的予測に依拠して、ビデオシーケンスの連続したコード化ユニット中のビデオブロック間の時間的冗長性を低減または除去する。インターコーディングの場合、ビデオエンコーダが、符号化すべきユニット中のブロックにぴったり一致する予測ブロックを参照ユニット中で識別し、コード化ブロックと予測ブロックとの間の相対変位を示す動きベクトルを生成するために、動き推定および補償を実行する。コード化ブロックと予測ブロックとの間の差は残差情報を構成する。したがって、インターコード化ブロックは、1つまたは複数の動きベクトルおよび残差情報によって特徴づけることができる。 Intra coding relies on spatial prediction to reduce or eliminate spatial redundancy between video blocks within a given coding unit. Intercoding relies on temporal prediction to reduce or eliminate temporal redundancy between video blocks in consecutive coding units of a video sequence. In the case of intercoding, the video encoder identifies in the reference unit a predictive block that closely matches the block in the unit to be encoded and generates a motion vector that indicates the relative displacement between the coded block and the predictive block And perform motion estimation and compensation. The difference between the coded block and the prediction block constitutes residual information. Thus, an inter-coded block can be characterized by one or more motion vectors and residual information.
いくつかのコーディングプロセスでは、動きベクトルは、ビデオコーダが整数ピクセル値よりも高い精度で動きを追跡することを可能にする、分数ピクセル値を有することがある。分数ピクセル値を用いた予測ブロックの識別をサポートするために、エンコーダは、参照ユニットに補間演算を適用して、クォーターピクセル位置またはハーフピクセル位置などのサブピクセル位置において値を生成する。H.264規格は、サブピクセル位置に対して固定補間方式の使用を指定する。場合によっては、コーディング効率および予測品質を改善するために、様々な補間フィルタを選択することができる。たとえば、エンコーダは、固定補間フィルタまたは適応補間フィルタの異なるセットを選択的に適用することができる。また、予測の品質をさらに改善するために、エンコーダは、補間後のサブピクセル位置値にオフセットを追加することができる。 In some coding processes, motion vectors may have fractional pixel values that allow the video coder to track motion with a higher accuracy than integer pixel values. In order to support the identification of predicted blocks using fractional pixel values, the encoder applies an interpolation operation to the reference unit to generate values at sub-pixel positions, such as quarter-pixel positions or half-pixel positions. H. The H.264 standard specifies the use of a fixed interpolation scheme for subpixel positions. In some cases, various interpolation filters can be selected to improve coding efficiency and prediction quality. For example, the encoder can selectively apply a different set of fixed or adaptive interpolation filters. Also, in order to further improve the quality of prediction, the encoder can add an offset to the sub-pixel position value after interpolation.
一般に、本開示は、補間フィルタとオフセットとを使用してデジタルビデオデータを符号化するための技法について説明する。エンコーダは、フレームまたはスライスなど、以前に符号化されたビデオユニットについて得られた履歴補間結果に基づいて、サブピクセル精度動き推定の補間フィルタを選択するように構成できる。エンコーダはまた、参照ユニットとコーディングすべきユニットとの間のユニットおよび/またはブロック差に基づいて、補間後のサブピクセル位置に対するオフセットを計算し、割り当てるように構成できる。オフセットの計算および割当ては動き推定の前に実行できる。 In general, this disclosure describes techniques for encoding digital video data using interpolation filters and offsets. The encoder can be configured to select an interpolation filter for sub-pixel accuracy motion estimation based on historical interpolation results obtained for previously encoded video units, such as frames or slices. The encoder can also be configured to calculate and assign an offset to the interpolated sub-pixel position based on the unit and / or block difference between the reference unit and the unit to be coded. Offset calculation and assignment can be performed prior to motion estimation.
さらに、動き探索が、オフセットが以前に追加されたサブピクセル位置を検討し、0でないオフセットを有するサブピクセル位置を評価するように、動き推定を改良することができる。場合によっては、所与のユニットのための補間フィルタ選択、オフセット計算、および/または改良された動き推定は、シングル符号化パスで実行できる。エンコーダは、いくつかの例では、1つまたは複数の以前に符号化されたユニットについての履歴情報が与えられれば、各サブピクセル位置において最も低い補間誤差を与える補間フィルタをエンコーダが選択できるように、各ユニット上の各補間フィルタおよび各サブピクセル位置についての誤差を累積することができる。 In addition, motion estimation can be improved so that motion search considers subpixel locations where offsets were previously added and evaluates subpixel locations with non-zero offsets. In some cases, interpolation filter selection, offset calculation, and / or improved motion estimation for a given unit can be performed in a single coding pass. The encoder, in some examples, allows the encoder to select an interpolation filter that gives the lowest interpolation error at each sub-pixel position given historical information about one or more previously encoded units. , Errors for each interpolation filter and each sub-pixel position on each unit can be accumulated.
一例では、本開示は、現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、現在ビデオユニットの動き推定を実行する前に、参照ビデオユニットのサブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、参照ビデオユニットに基づく動き推定を使用して現在ビデオユニットのブロックを符号化することとを備えるビデオ符号化方法を提供する。 In one example, this disclosure interpolates sub-integer pixels of a reference video unit using a selected interpolation filter and performs motion estimation of the current video unit before performing motion estimation of the current video unit. Video code comprising: applying an offset to at least some of the sub-integer pixels of the reference video unit; and encoding a block of the current video unit using motion estimation based on the reference video unit Provide a method
別の例では、本開示は、現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、現在ビデオユニットの動き推定を実行する前に、参照ビデオユニットのサブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、参照ビデオユニットに基づく動き推定を使用して現在ビデオユニットのブロックを符号化することとを行うように構成されたビデオエンコーダを備えるビデオ符号化装置を提供する。 In another example, this disclosure interpolates sub-integer pixels of a reference video unit using a selected interpolation filter and performs motion estimation of the current video unit before performing motion estimation of the current video unit. Before performing, apply an offset to at least some of the sub-integer pixels of the reference video unit and encode a block of the current video unit using motion estimation based on the reference video unit A video encoding device including a video encoder configured as described above is provided.
追加の例では、本開示は、現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、現在ビデオユニットの動き推定を実行する前に、参照ビデオユニットのサブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、参照ビデオユニットに基づく動き推定を使用して現在ビデオユニットのブロックを符号化することとをプログラマブルプロセッサに行わせるための命令で符号化されたコンピュータ可読記憶媒体を提供する。 In additional examples, the present disclosure interpolates sub-integer pixels of a reference video unit using a selected interpolation filter and performs motion estimation of the current video unit before performing motion estimation of the current video unit. Programmable to apply an offset to at least some of the sub-integer pixels of the reference video unit and to encode a block of the current video unit using motion estimation based on the reference video unit before performing A computer readable storage medium encoded with instructions for causing a processor to perform is provided.
場合によっては、ブロックを符号化することは、符号化がシングルパスで実行されるようにブロックの動き推定を1回のみ実行することを備えることができる。1つまたは複数の以前に符号化されたビデオユニットについての履歴補間結果に基づいて補間フィルタのセットを選択することができる。それらの補間フィルタは、それぞれのサブ整数ピクセルに対応し、それらの補間フィルタは、サブ整数ピクセルのうちの少なくともいくつかに対する異なる補間フィルタを含む。オフセットは、フレーム単位またはブロック単位で決定できる。 In some cases, encoding a block may comprise performing block motion estimation only once such that encoding is performed in a single pass. A set of interpolation filters can be selected based on historical interpolation results for one or more previously encoded video units. The interpolation filters correspond to respective sub-integer pixels, and the interpolation filters include different interpolation filters for at least some of the sub-integer pixels. The offset can be determined in frame units or block units.
1つまたは複数の例の詳細を添付の図面および以下の説明において示す。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。 The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
本開示は、補間とオフセットとを使用してデジタルビデオデータを符号化するための技法について説明する。たとえば、エンコーダは、コーディングすべきユニットの動き推定をサポートするために、補間フィルタを選択し、参照ビデオユニット中のサブピクセル位置にオフセットを割り当てるように構成できる。コード化ユニットは、たとえば、マクロブロックなどのビデオブロックを含むビデオフレームまたはスライスとすることができる。フィルタおよびオフセットは、コーディングがシングルパスで実行され得るように、1つまたは複数の以前にコーディングされたユニットの履歴補間結果に基づいて、所与のユニットの動き推定に先だって選択できる。したがって、場合によっては、ブロックを符号化することは、符号化がシングルパスで実行されるように、ブロックの動き推定を1回のみ、すなわち、1度のみ実行することを備えることができる。 This disclosure describes techniques for encoding digital video data using interpolation and offset. For example, the encoder can be configured to select an interpolation filter and assign an offset to a sub-pixel location in the reference video unit to support motion estimation of the unit to be coded. A coding unit may be, for example, a video frame or slice that includes a video block, such as a macroblock. Filters and offsets can be selected prior to motion estimation for a given unit based on the historical interpolation results of one or more previously coded units so that coding can be performed in a single pass. Thus, in some cases, encoding a block may comprise performing block motion estimation only once, ie, only once, such that encoding is performed in a single pass.
ビデオデータをシングルパスで符号化することは、コーディングすべきユニット中の所与のブロックに動き推定を1回のみ適用することを必要とする。動き推定および補償を1回実行してそれぞれのサブピクセル位置の補間フィルタを選択し、次いで選択された補間フィルタを再び適用する代わりに、エンコーダは、1つまたは複数の以前に符号化されたユニットのサブピクセル位置について得られた履歴補間結果に基づいて補間フィルタを選択することができる。 Encoding video data in a single pass requires that motion estimation be applied only once to a given block in the unit to be coded. Instead of performing motion estimation and compensation once to select an interpolation filter for each sub-pixel location and then re-applying the selected interpolation filter, the encoder can use one or more previously encoded units An interpolation filter can be selected based on the history interpolation result obtained for the subpixel positions.
さらに、エンコーダは、コーディングすべきユニットの動き推定が実行される前に、補間サブピクセル位置に対するオフセットを計算し、割り当てるように構成できる。オフセットは、参照ユニットとコーディングすべきユニットとの間のユニットおよび/またはブロック差に基づいて判断できる。いくつかの例では、補間およびオフセットの選択後に、サブピクセル位置に以前に追加されたオフセットを検討し、0でないオフセット値を有するサブピクセル位置を評価するように動き探索が強制されるように、動き推定を改善することができる。いくつかの実装形態では、これらの特徴の組合せにより、向上した処理速度で、ほとんどまたはまったくパフォーマンスロスなしに、符号化をシングルパスで実行することが可能になり得る。 Further, the encoder can be configured to calculate and assign an offset to the interpolated sub-pixel position before motion estimation of the unit to be coded is performed. The offset can be determined based on the unit and / or block difference between the reference unit and the unit to be coded. In some examples, after interpolation and offset selection, consider the offset previously added to the subpixel location and force the motion search to evaluate subpixel locations with non-zero offset values. Motion estimation can be improved. In some implementations, a combination of these features may allow encoding to be performed in a single pass with improved processing speed and little or no performance loss.
場合によっては、ビデオエンコーダは、現在ユニットNの参照ユニットとして使用されるコード化ユニットなど、以前にコーディングされたユニット(たとえば、N−1)の動き推定によって生成された補間誤差に基づいて、現在ユニットNの動き推定のために使用すべき補間フィルタを選択することができる。一例として、以前にコーディングされた参照ユニットN−1が符号化された後、参照ユニットN−1中のブロックと以前の参照ユニット(たとえば、N−2)中のブロックとの間の補間誤差が、サブピクセル位置の各々において判断され得る。ユニットN−1のこの履歴誤差情報を使用して、ビデオエンコーダは、誤差値を低減したであろう最適な補間フィルタを選択し、次いでそれらの補間フィルタを使用して、ユニットNの動き推定において使用するためのユニットN−1中のサブピクセル値を補間することができる。 In some cases, the video encoder may be based on an interpolation error generated by motion estimation of a previously coded unit (eg, N-1), such as a coding unit that is currently used as a reference unit for unit N. An interpolation filter to be used for unit N motion estimation can be selected. As an example, after the previously coded reference unit N-1 is encoded, the interpolation error between the block in the reference unit N-1 and the block in the previous reference unit (eg, N-2) is , At each of the subpixel locations. Using this historical error information in unit N-1, the video encoder selects the optimal interpolation filters that would have reduced the error value, and then uses those interpolation filters to determine in unit N's motion estimation. The subpixel values in unit N-1 for use can be interpolated.
他の場合には、サブピクセル動き推定に使用するために選択され得る補間フィルタのセットを仮定すれば、ビデオエンコーダは、各補間フィルタおよび各サブピクセル位置について、以前に符号化されたユニットとその1つまたは複数の参照ユニットとの間の補間誤差(すなわち、フレームN−1、N−2、N−3などの上でのサブピクセル位置の累積補間誤差値)を累積することができる。この累積補間誤差値は、コーディングすべき次のユニットの動き推定において使用すべき参照ユニット中のサブピクセル位置の補間のための補間フィルタを選択するために使用され得る履歴補間結果として、役立つことができる。たとえば、所与のサブピクセル位置について、補間のために、最も低い累積誤差値をもつ補間フィルタを選択することができる。 In other cases, assuming a set of interpolation filters that may be selected for use in sub-pixel motion estimation, the video encoder may, for each interpolation filter and each sub-pixel position, determine the previously encoded unit and its Interpolation errors with one or more reference units (ie, cumulative interpolation error values of subpixel positions over frames N-1, N-2, N-3, etc.) can be accumulated. This cumulative interpolation error value can serve as a historical interpolation result that can be used to select an interpolation filter for the interpolation of subpixel positions in the reference unit to be used in motion estimation for the next unit to be coded. it can. For example, for a given subpixel position, the interpolation filter with the lowest cumulative error value can be selected for interpolation.
オーバーフローを防止し、より以前にコーディングされたユニットよりもより最近コーディングされたユニットの寄与により重く重み付けするウィンドウ効果をもたらすために、累積誤差値を時間とともにスケールダウンすることができる。たとえば、所与のサブピクセル位置に適用される各補間フィルタの累積誤差値は、一連の複数のコード化ユニット上のそれぞれの補間フィルタおよびサブピクセル位置についての個々の誤差値の重み付け和とし、より最近にコーディングされたユニットの誤差値はより重く重み付けされ得る。エンコーダは、各ユニットのコーディングの後に誤差値を評価し、それぞれのサブピクセル位置について最も低い累積誤差を生じる補間フィルタを選択することができる。 The accumulated error value can be scaled down over time to prevent overflow and to provide a windowing effect that weights more heavily on the contribution of more recently coded units than on previously coded units. For example, the cumulative error value of each interpolation filter applied to a given subpixel position is the weighted sum of the individual error values for each interpolation filter and subpixel position on a series of multiple coding units, and more The error value of the recently coded unit can be weighted more heavily. The encoder can evaluate the error value after coding each unit and select an interpolation filter that yields the lowest cumulative error for each sub-pixel position.
したがって、補間フィルタを選択するために、ビデオエンコーダは、1つの以前にコーディングされたビデオユニットまたは複数の以前にコーディングされたビデオユニットの履歴補間誤差に依拠することができる。特に、上記で説明したように、ビデオエンコーダは、以前にコーディングされたユニットの最適な補間誤差を生成したであろう補間フィルタのセットを選択し、それらの補間フィルタのセットを適用して、現在のコード化ユニットの動き推定を実行することができる。この意味では、以前にコーディングされたユニットの動き推定において、最適な結果を生成したであろう補間フィルタが使用されている場合、現在ユニットの動き推定はそれらの補間フィルタを使用して実行される。代替的に、上記で説明したように、ビデオエンコーダは、一連のユニット上で累積誤差値を生成した補間フィルタを選択することができる。各場合において、ビデオエンコーダは、1つまたは複数の以前にコーディングされたユニットの履歴補間結果に依拠する。 Thus, to select an interpolation filter, the video encoder can rely on the historical interpolation error of one previously coded video unit or multiple previously coded video units. In particular, as described above, the video encoder selects a set of interpolation filters that would have produced the optimal interpolation error for previously coded units and applies those set of interpolation filters to A motion estimation of the coding units of can be performed. In this sense, if interpolation filters that would have produced optimal results were used in the motion estimation of previously coded units, the current unit motion estimation is performed using those interpolation filters. . Alternatively, as described above, the video encoder can select an interpolation filter that has generated a cumulative error value on a series of units. In each case, the video encoder relies on the historical interpolation results of one or more previously coded units.
たとえば、異なるビデオコーディングユニット間の照度変化を補償するために、補間ピクセル値にDCオフセット値を適用することができる。DCオフセットは、フレーム中のすべてのピクセルが同じDCオフセットを使用するようにフレームレベルで適用するか、またはサブピクセル位置レベルで個々に適用することができる。DCオフセット値の計算および割当ては、参照ユニットと符号化すべき現在ユニットとの間のDCフレームおよびブロック差に基づくことができる。計算は、符号化すべき現在ユニットの動き推定が実行される前に「アプリオリ(“a priori”)」ベースで実行できる。現在ユニットと参照ユニットとの間のDCフレームおよびブロック差を分析することによって、いかなる動きベクトル情報も利用できないとき、現在ユニットを符号化する前にオフセットを適用することができ、シングルパス符号化が可能になる。 For example, a DC offset value can be applied to the interpolated pixel value to compensate for illuminance changes between different video coding units. The DC offset can be applied at the frame level so that all pixels in the frame use the same DC offset, or can be applied individually at the sub-pixel location level. The calculation and assignment of the DC offset value can be based on the DC frame and block difference between the reference unit and the current unit to be encoded. The calculation can be performed on an “a priori” basis before the motion estimation of the current unit to be encoded is performed. By analyzing the DC frame and block differences between the current unit and the reference unit, when no motion vector information is available, an offset can be applied before encoding the current unit, It becomes possible.
H.264規格に従って実行するように構築されたエンコーダなど、いくつかのビデオエンコーダは、複数の以前に符号化され、送信されたフレームからフレームを予測することができる。これらの参照フレームは、一般に1つまたは2つのリスト中に記憶され、各リストは、正の整数でインデックス付けされたいくつかのフレームを含むことができる。一般に、0(2つのリストが使用される場合は各リスト中で1)でインデックス付けされたフレームは、時間的に現在フレームにより近いフレームである。本開示で説明する手順を用いて判断されるサブピクセルオフセットは、一般に、現在フレームに最も近い参照フレーム(インデックス0でインデックス付けされたフレーム)のみに使用される。他のすべてのフレーム上では、サブピクセル位置とは無関係に、単純なDCオフセットが使用され得る。このオフセットは、参照フレームと現在フレームとの間の視感度の差として計算でき、現在フレーム上に適用できる。 H. Some video encoders, such as an encoder built to perform according to the H.264 standard, can predict a frame from multiple previously encoded and transmitted frames. These reference frames are typically stored in one or two lists, and each list can contain several frames indexed with a positive integer. In general, a frame indexed with 0 (1 in each list if two lists are used) is a frame that is closer in time to the current frame. The sub-pixel offset determined using the procedure described in this disclosure is generally used only for the reference frame closest to the current frame (the frame indexed with index 0). On all other frames, a simple DC offset can be used regardless of subpixel location. This offset can be calculated as the difference in visibility between the reference frame and the current frame and can be applied on the current frame.
サブピクセル位置に以前に追加されたDCオフセットを考慮に入れ、動き探索において0でないDCオフセットを有するサブピクセル位置の評価を強制するように、改良された動き推定プロセスを適用することができる。予測動き推定は、コーディングすべきブロックに対応する可能性がより高いロケーションを予測することと、探索をパターンに構造化することとによって、動き探索の複雑さを低減することができる。しかしながら、予測動き推定プロセスは、DCオフセット値が割り当てられたいくつかのサブピクセル位置をテストすることをスキップし得る。この制限は、ひずみの推定中に定義されたDCオフセットをもつサブピクセル位置を明示的に探索する動き探索を行うことによって、克服できる。このようにして、動き探索は、0でないオフセットを有するサブピクセル位置が明示的に探索されることを必要とするように構成できる。 An improved motion estimation process can be applied to take into account the DC offset previously added to the subpixel location and force the evaluation of the subpixel location with a non-zero DC offset in the motion search. Predictive motion estimation can reduce the complexity of motion search by predicting locations that are more likely to correspond to blocks to be coded and by structuring the search into patterns. However, the predictive motion estimation process may skip testing several subpixel positions that have been assigned a DC offset value. This limitation can be overcome by performing a motion search that explicitly searches for subpixel locations with a defined DC offset during distortion estimation. In this way, motion search can be configured to require that subpixel locations with non-zero offsets be explicitly searched.
さらに、動き探索は、仮想ブロックDCオフセットを計算するように構成できる。たとえば、動き探索中に計算されるSAD誤差は、すべての可能なオフセットを考慮に入れることができる。動き探索は、オフセットを適用する前にブロックを比較する(ブロック間のSAD誤差を計算する)。この可能性を考慮に入れるために動き探索を使用できるよう計算されたオフセットを、動き探索に与えることによって、パフォーマンスを改善することが可能であり得る。たとえば、以下の表1に示すように、それぞれの位置に対してサブピクセルオフセットを使用しなければならないとアルゴリズムが判断した場合、毎回、「仮想」オフセット{−2,−1,0,1,2,3}のうちの1つを参照ブロックに追加した後に、2つのブロックのSADの計算を6回計算することができる。
最小のSADを有する動きベクトルを選択することができる。2つ以上の位置に現れるオフセット値(たとえば、サブピクセル位置1とサブピクセル位置11の両方に現れるオフセット「2」)は1回のみ試みることができる。すなわち、動き推定ユニットは、各々が同じ計算されたオフセット値を有している複数のサブピクセルのうちの1つのみを探索することができる。
The motion vector with the smallest SAD can be selected. An offset value that appears in more than one location (eg, offset “2” that appears in both
図1は、本開示の技法を実装することができる例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、通信チャネル15を介して符号化ビデオを宛先デバイス16に送信するソースデバイス12を含む。ソースデバイス12および宛先デバイス16は、ワイヤードデバイスとワイヤレスデバイスとを含む、広い範囲のデバイスのいずれかを備えることができる。場合によっては、ソースデバイス12および宛先デバイス16は、いわゆるセルラー無線電話または衛星無線電話のワイヤレスハンドセットなどのワイヤレス通信デバイス、または通信チャネル15を介してビデオ情報を伝達することができ、その場合、通信チャネル15がワイヤレス通信媒体を含む任意のワイヤレスデバイスを備えることができる。
FIG. 1 is a block diagram illustrating an example video encoding and
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器(モデム)22と、送信機24とを含むことができる。宛先デバイス16は、受信機26と、モデム28と、ビデオデコーダ30と、表示デバイス32とを含むことができる。ソースデバイス12のビデオエンコーダ20は、本開示においてビデオ符号化プロセスの一部として説明する1つまたは複数のコーディング技法を適用するように構成できる。同様に、宛先デバイス16のビデオデコーダ30は、本開示においてビデオ復号プロセスの一部として説明する1つまたは複数のコーディング技法を適用するように構成できる。
In the example of FIG. 1, the
本開示で説明する符号化技法は、サブピクセル解像度への動き補償補間をサポートする任意の符号化デバイスによって実行できる。図1の例では、ソースデバイス12は、宛先デバイス16に送信するためのコード化ビデオデータを生成する。デバイス12、16は、デバイス12、16の各々がビデオ符号化および復号構成要素を含むように実質的に対称的に動作することができる。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話通信のために、ビデオデバイス12とビデオデバイス16との間の一方向または双方向のビデオ送信をサポートすることができる。
The encoding techniques described in this disclosure may be performed by any encoding device that supports motion compensated interpolation to subpixel resolution. In the example of FIG. 1, the
ソースデバイス12のビデオソース18は、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、またはビデオコンテンツプロバイダからのビデオフィードなど、ビデオキャプチャデバイスを含むことができる。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成することができる。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス16は、いわゆるカメラ付き携帯電話またはビデオ電話を形成することができる。各場合において、キャプチャされたビデオ、あらかじめキャプチャされたビデオ、またはコンピュータ生成ビデオをビデオエンコーダ20によって符号化することができる。符号化ビデオデータは、通信規格に従ってモデム22によって変調し、送信機24を介して宛先デバイス16に送信できる。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含むことができる。送信機24は、増幅器、フィルタ、および1つまたは複数のアンテナを含め、データを送信するために設計された回路を含むことができる。
The video source 18 of the
宛先デバイス16の受信機26はチャネル15を介して情報を受信し、モデム28はその情報を復調する。ビデオデコーダ30によって実行されるビデオ復号プロセスは、デバイス12から受信されたビデオデータを復号し再生するために、補間フィルタ、オフセット値、動きベクトルおよび残差情報を利用することができる。たとえば、チャネル15を介して通信される情報は、特定のフレーム、スライスおよびブロックについてビデオエンコーダ20によって定義されたオフセット情報を含むことができる。表示デバイス32は、復号ビデオデータをユーザに対して表示するもので、陰極線管、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプの表示デバイスなど、様々な表示デバイスのいずれかを備えることができる。
The
図1の例では、通信チャネル15は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理的伝送線路など、ワイヤレスまたは有線の任意の通信媒体、あるいはワイヤレスおよび有線の媒体の任意の組合せを備えることができる。通信チャネル15は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成することができる。通信チャネル15は、一般に、ビデオデータをソースデバイス12から宛先デバイス16へ送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル15は、ソースデバイス12から宛先デバイス16への通信を可能にするのに有用なルータ、スイッチ、基地局、または任意の他の機器を含むことができる。
In the example of FIG. 1, the
ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4、Part10、Advanced Video Coding(AVC)として説明されるITU−T H.264規格など、ビデオ圧縮規格に従って動作することができる。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびデコーダと統合でき、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を扱うことができる。適用可能な場合、MUX−DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠することができる。
The
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への拡張の取り組みを続けている。 ITU-TH. The H.264 / MPEG-4 (AVC) standard was developed by ITU-T Video Coding Experts Group (C) as a result of a joint partnership known as Joint Video Team (JVT) together with ISO / IEC Moving Picture Experts Group (MPEG). It was. In some aspects, the techniques described in this disclosure are generally described in H.264. It can be applied to a device conforming to the H.264 standard. H. The H.264 standard is an ITU-T recommendation H.264 dated March 2005 by the ITU-T Study Group. H.264 "Advanced Video Coding for generic audioservices". H.264 standard or H.264 standard. H.264 specification or H.264 H.264 / AVC standard or specification. Joint Video Team (JVT) H.264 / MPEG-4 AVC is continuously being expanded.
ビデオエンコーダ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、およびクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。ビデオブロックは、ピクセルデータのブロック、または、たとえば離散コサイン変換もしくは概念的に同様の変換プロセスなどの変換プロセスの後の変換係数のブロックを備えることができる。
A video sequence typically includes a series of video frames.
ビデオブロックは、小さいほどより良い解像度が得られ、高い精細レベルを含むビデオユニットの位置に使用することができる。一般に、マクロブロックおよび様々なサブブロックはビデオブロックであると見なすことができる。さらに、スライスまたはフレームは、マクロブロックおよび/またはサブブロックなどの一連のビデオブロックを備えるビデオユニットであると見なすことができる。各フレームはビデオシーケンスの単独で復号可能なユニットであり、各スライスはビデオフレームの単独で復号可能なユニットであるとすることができる。「コード化ユニット」という用語は、フレーム全体、フレームのスライス、または適用可能なコーディング技法に従って定義された別の単独で復号可能なユニットなど、単独で復号可能な任意のユニットを指す。 Smaller video blocks provide better resolution and can be used for video unit locations that contain higher levels of definition. In general, macroblocks and various sub-blocks can be considered video blocks. Further, a slice or frame can be considered a video unit comprising a series of video blocks such as macroblocks and / or sub-blocks. Each frame may be a unit that can be decoded independently of a video sequence, and each slice may be a unit that can be decoded independently of a video frame. The term “coding unit” refers to any unit that can be decoded alone, such as an entire frame, a slice of a frame, or another independently decodable unit defined according to applicable coding techniques.
予測コーディングの後、およびH.264/AVCまたは離散コサイン変換(DCT)において使用される4×4または8×8整数変換などの任意の変換に続き、量子化を実行することができる。量子化は、一般に、係数を表すために使用されるデータ量を低減するために係数を量子化するプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、量子化中に16ビット値を15ビット値に切り詰めることができる。量子化の後、たとえば、コンテンツ適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、または別のエントロピーコーディングプロセスに従ってエントロピーコーディングを実行することができる。 After predictive coding and Following any transformation, such as a 4 × 4 or 8 × 8 integer transform used in H.264 / AVC or Discrete Cosine Transform (DCT), quantization can be performed. Quantization generally refers to the process of quantizing a coefficient to reduce the amount of data used to represent the coefficient. The quantization process can reduce the bit depth associated with some or all of the coefficients. For example, a 16-bit value can be truncated to a 15-bit value during quantization. After quantization, entropy coding may be performed according to, for example, content adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), or another entropy coding process.
本開示の技法によれば、ビデオエンコーダ20は、補間フィルタとオフセット値とを使用してビデオユニットをシングルパスで符号化することができる。したがって、場合によっては、ブロックを符号化することは、符号化がシングルパスで実行されるようにブロックの動き推定を1回のみ実行することを備えることができる。一例では、ビデオエンコーダ20は、固定の係数をもつ補間フィルタのセットを含むことができる。すなわち、補間フィルタのセットは、エンコーダが係数を動的に判断するであろう適応フィルタを必ずしも含む必要はない。代わりに、エンコーダ20は、複数の代替固定補間フィルタから各サブピクセル位置の補間フィルタを選択することができる。
According to the techniques of this disclosure,
異なるサブピクセル位置の補間には異なる補間フィルタを選択することができる。各サブ整数ピクセル位置は、デフォルト補間フィルタと、履歴補間結果に基づいてそれぞれのサブ整数ピクセル位置を補間するために選択され得る複数の他の補間フィルタとを有することができる。ビデオエンコーダ20は、それぞれのサブ整数ピクセル位置のデフォルト補間フィルタを使用して最初に参照ユニットのサブ整数ピクセル値を計算することによって、第1のインターコード化ビデオユニット、たとえば、第1のPフレームのマクロブロックを符号化することができる。
Different interpolation filters can be selected for interpolation at different subpixel positions. Each sub-integer pixel location can have a default interpolation filter and a plurality of other interpolation filters that can be selected to interpolate the respective sub-integer pixel location based on the historical interpolation results.
参照ユニット中のサブ整数ピクセル値が補間されると、ビデオエンコーダ20は、参照ユニットの整数と分数の両方のサブピクセル位置を利用して、符号化されている次のPフレームのマクロブロックの動きベクトルを計算することができる。特に、ビデオエンコーダ20は、たとえば、絶対値差分和(SAD)、平方差分和(SSD)などのピクセル差分計算に基づいて、コーディングされている現在ユニット中のそれぞれのブロックに最もぴったり一致する以前にコーディングされた参照ユニット中のブロックを探索することができる。
When the sub-integer pixel values in the reference unit are interpolated,
参照ユニット中の予測ブロックに対してコーディングすべき第1のPユニットの各マクロブロックの動きベクトルを生成した後、ビデオエンコーダ20は、たとえば、予測マクロブロック(すなわち、参照ユニットの参照マクロブロック)とPユニットの実際のマクロブロックとの間のピクセル値の差に基づいて、第1のPユニットの各マクロブロックの誤差値を判断することができる。上記で説明したように、誤差値は、たとえば、絶対値差分和(SAD)または平方差分和(SSD)の値を備えることができる。
After generating a motion vector for each macroblock of the first P unit to be coded for the prediction block in the reference unit,
次いで、ビデオエンコーダ20は、補間フィルタの異なるセットがより低い誤差値をもたらしたであろうかどうかを判断することができる。特に、ビデオエンコーダ20は、それぞれのサブピクセル位置について、参照マクロブロックのサブ整数ピクセル値の値を再計算し、動きベクトルによって識別される再計算マクロブロックの誤差値を計算することによって、最も低い誤差値になったであろう補間フィルタを識別することができる。次いで、ビデオエンコーダ20は、どの補間フィルタが、各サブ整数ピクセル位置のユニットについての最も低い絶対誤差値または最も低い平均誤差値を与えたかを判断することができる。
このようにして、ビデオエンコーダ20は、参照ユニットのために最適な結果を生成したであろう補間フィルタに基づいて現在ユニットのために使用される参照ユニットのサブ整数ピクセル位置を補間するための補間フィルタを選択することができる。いくつかの例では、ビデオエンコーダ20は、さらに、一連の符号ユニットにわたって各サブ整数ピクセル位置における各補間フィルタの累積誤差値を計算することができる。ビデオエンコーダ20は、累積誤差値を使用して、サブ整数ピクセル位置に履歴的に最適な値を与える補間フィルタを選択することができる。
In this way,
ビデオエンコーダ20は、先行フレームについて、または一連の先行フレームにわたって、いずれの補間フィルタが最も低い誤差値を生じたかを識別することができる。誤差値は、フレームの一連にわたって各補間フィルタおよび各サブピクセル位置について追跡できる。各サブピクセル位置はそれぞれの補間フィルタを用いて計算できる。複数の補間フィルタが各サブピクセル位置についての選択に利用できることがある。複数のそれぞれのサブピクセル位置の補間をサポートするために補間フィルタのセットを選択することができる。
一例では、ビデオエンコーダ20がPフレームまたはBフレームなどの次の予測ユニットを符号化する前に、ビデオエンコーダ20は、以前に符号化されたユニットの(1つまたは複数の)参照ユニットについて最も低い誤差値をもたらしたであろう補間フィルタを使用して、以前に符号化されたユニットのサブ整数ピクセルの値を計算する。同様に、後続の各インターコード化フレームについて、ビデオエンコーダ20は、いずれの補間フィルタがその参照ユニットの最も低い誤差値をもたらしたであろうかを識別することができ、そして、最も最近符号化されたユニットのサブ整数ピクセルの値を計算するためにそれらの補間フィルタを最も最近符号化されたユニットに適用し、次いで、それらの値が動き推定の参照フレームとして使用されることになる。
In one example, before
場合によっては、ビデオエンコーダ20は、いずれの補間フィルタが、一連のコード化ユニットにわたって各サブピクセル位置の最も低い履歴累積補間誤差値を有するかを識別することができる。複数の補間フィルタの各々によって各サブピクセル位置について生成された誤差値を追跡することにより、コーディングすべき次のフレームの動き推定をサポートするように、それぞれのサブピクセル位置について最も低い誤差値を生成した補間フィルタを補間のために選択することができる。このようにして、ビデオエンコーダ20は、以前にコーディングされたフレームの履歴補間結果に基づいてサブピクセル位置の補間フィルタを選択することができる。ビデオエンコーダ20によって分析される履歴補間結果は、いくつかのユニットの補間誤差を、または、場合によっては単一ユニットの補間誤差のみを考慮に入れることができる。特に、ビデオエンコーダ20は、複数のフレームにわたる累積誤差結果を分析するか、または単に現在ユニットNの参照ユニット(たとえば、N−1)と以前の参照ユニットN−2との間の補間誤差を分析することができる。
In some cases,
一例として、補間すべきn個のサブピクセル位置と、そのn個のサブピクセル位置の各々を補間するために選択され得るm個の異なる補間フィルタとがある場合、ビデオエンコーダ20はn×m個の異なる誤差値を計算することができる。各誤差値は、コーディングすべき以前のユニット中の実際のピクセル値に対する、m個の補間フィルタのうちの所与の1つに従って計算されたn個のサブピクセル位置値のうちの所与の1つに対する誤差値を表すことができる。ブロック単位で、誤差値は、コーディングすべきブロックのピクセル値と、補間フィルタの所与のセットを使用して生成された補間予測ブロック中のサブピクセル位置のピクセル値との間の、ピクセル値の差に基づくことができる。サブピクセル位置の補間フィルタは、フレーム上のすべての対応するサブピクセル位置に適用できる。同様に、各補間フィルタおよびサブピクセル位置の誤差値がフレーム上で与えられ得る。たとえば、誤差値は、所与のフレームの平均値または中間値あるいは合計値とすることができる。
As an example, if there are n subpixel positions to be interpolated and m different interpolation filters that can be selected to interpolate each of the n subpixel positions,
上述のように、一連のユニットにわたって各サブピクセル位置および補間フィルタの誤差値を累積して、補間フィルタとサブピクセル位置の各組合せの累積誤差値を生成することができる。場合によっては、一連のユニットにわたる誤差値は重み付け和を使用して合計でき、より最近コーディングされたフレームの誤差値が、コーディングすべき現在フレームに対して以前にコーディングされたフレームよりも重く重み付けされる。 As described above, the error value of each subpixel position and interpolation filter can be accumulated over a series of units to generate an accumulated error value for each combination of interpolation filter and subpixel position. In some cases, the error values across a series of units can be summed using a weighted sum, and the error value of the more recently coded frame is weighted more heavily than the previously coded frame for the current frame to be coded. The
一例として、コーディングすべきユニットについて、累積誤差値は、コーディングすべきユニットの直前の、ウィンドウ中の最初のユニットからウィンドウ中の最後のユニットまでの重み付けされた誤差値を合計し、より以前のユニットの誤差値は、より後のユニットの誤差値よりも小さい重み付け係数で重み付けされるように、スライディングウィンドウを使用することができる。重み付け係数は、より初期にコーディングされたユニットからより低いコード化ユニットに漸進的に増加することができる。さらに、累積誤差は、オーバーフローを防止するために周期的にスケールダウンできる。より以前にコーディングされたユニットの誤差値は、ウィンドウ外に出るにつれて最終的にフェーズアウトされ得る。 As an example, for a unit to be coded, the accumulated error value is the sum of the weighted error values from the first unit in the window to the last unit in the window immediately before the unit to be coded, A sliding window can be used so that the error values of are weighted with a weighting factor that is smaller than the error values of later units. The weighting factor can be incrementally increased from earlier coded units to lower coded units. Furthermore, the accumulated error can be periodically scaled down to prevent overflow. The error values of earlier coded units can eventually be phased out as they go out of the window.
現在ユニットをコーディングするための特定のサブピクセル位置の特定の補間フィルタを選択するために、ビデオエンコーダ20は、以前にコーディングされたユニットの範囲にわたってその補間フィルタおよびサブピクセル位置の誤差値の重み付け和を評価することができる。次いで、所与のサブピクセル位置について最も低い累積誤差を生じる補間フィルタを、コーディングすべき次のユニットのためのそのサブピクセル位置の補間に使用すべき補間フィルタとして選択することができる。
In order to select a particular interpolation filter at a particular subpixel position for coding the current unit,
所与のサブピクセル位置について選択した補間フィルタは、コーディングユニットにわたってブロック中の対応するサブピクセル位置におけるすべてのピクセルのための補間フィルタとして使用できる。特に、選択したフィルタは、コーディングすべき次のユニットの動き探索をサポートするために、参照ユニット中のそのサブピクセル位置を補間するために使用される。各ブロック中にn個のサブピクセル位置がある場合、エンコーダ20は、それぞれのサブピクセル位置についてn個の異なる補間フィルタのセットを選択することができる。ユニットの各ブロック中のサブピクセル位置には補間フィルタの同じセットを使用することができる。
The interpolation filter selected for a given subpixel location can be used as an interpolation filter for all pixels at the corresponding subpixel location in the block across the coding unit. In particular, the selected filter is used to interpolate its sub-pixel position in the reference unit to support motion search for the next unit to be coded. If there are n subpixel positions in each block,
補間の後に、および動き推定より前に、ビデオエンコーダ20は、補間されたサブピクセル位置におけるピクセル値にオフセット値を適用することもできる。ビデオエンコーダ20は、フレーム、またはスライスなどのフレームの単独で復号可能な部分など、ビデオデータのコード化ユニットについて複数のオフセット値を計算することができる。異なるオフセット値は、ビデオブロックに関連付けられた複数の異なる整数およびサブ整数ピクセルロケーションに関連し得る。サブ整数ピクセルロケーションは、整数ピクセルロケーションにおけるデータに基づいて、上記で説明したように、補間(interpolated)または外挿(extrapolated)された、一般的には補間された、データのロケーションを定義することができる。ビデオエンコーダ20は、予測ビデオブロック中の整数ピクセル位置およびサブピクセル位置にオフセット値を適用してオフセット予測ビデオブロックを生成し、そのオフセット予測ビデオブロックに基づいてコード化ユニットのビデオブロックを符号化することができる。
After interpolation and prior to motion estimation,
ビデオエンコーダ20はまた、コード化ユニットのコード化ビデオブロックを含むコード化ビットストリームの一部としてオフセット値を符号化し、ソースデバイス12の送信機24は、コード化ビットストリームを宛先デバイス16の受信機26に送信することができる。特に、ビデオエンコーダ20は、予測ビデオブロックのピクセル値を調整することによってオフセット値を適用することができ、オフセット予測ビデオブロックに基づいて残差を生成することによってオフセット予測ビデオブロックに基づいてビデオブロックを符号化することができる。たとえば、残差は、適切なオフセット予測ビデオブロックからコーディングすべきブロックを減算することによって生成できる。オフセットは、予測ビデオブロックのロケーションに基づいて、オフセット予測ビデオブロックのピクセル値に追加されるので、たとえば、フラッシュまたは背景照明の変化中に、コーディング効率を向上させることができる。
コーディングすべきユニットの動き探索を実行するとき、ビデオエンコーダ20は参照コーディングユニット中の予測ブロックを識別する。場合によっては、動き探索アルゴリズムは、いくつかのサブピクセル値をスキップするように構成できる。特に、一部の予測動き推定は、コーディングすべきブロックに対応する可能性がより高いロケーションを予測することと、探索をパターンに構造化することとによって、動き探索の複雑さを低減することができる。しかしながら、予測動き推定プロセスは、DCオフセット値が割り当てられたいくつかのサブピクセル位置をテストすることをスキップし得る。動き探索は0でないオフセット値を有するサブピクセル位置を明示的に探索するものである、という要件を課すことによって、ビデオエンコーダ20は、予測動き推定プロセスにおけるこの制限を克服するように構成できる。
When performing a motion search for the unit to be coded,
宛先デバイス16において、ビデオデコーダ30は、ビデオデータと、ビデオデータの各コード化ユニットの複数のオフセット値とを符号化するために使用される補間フィルタの識別子を受信する。たとえば、これらの識別子は、コード化ビットストリーム中に与えられた、フレームヘッダまたはスライスヘッダなどのユニットヘッダ中のシンタックス要素としてビデオエンコーダ20によってコーディングできる。ビデオデコーダ30は、ビデオエンコーダ20と同じ補間フィルタのセットのパラメータを記憶することができる。ビデオデコーダ30は、ビデオエンコーダ20によって識別された補間フィルタを適用して予測ビデオブロックのサブ整数ピクセルの値を計算し、オフセット値を予測ビデオブロックに適用してオフセット予測ビデオブロックを生成し、そのオフセット予測ビデオブロックに基づいてコード化ユニットのビデオブロックを復号する。
At
特に、動きベクトルおよび補間フィルタを使用して、ビデオデコーダ30は、復号すべきユニット中のそれぞれのブロックの予測ブロックを取得し、予測ブロックに残差情報を加算して、復号ユニット中の所望のブロックを再生することができる。このようにして、補間フィルタおよびオフセット値は、ビデオエンコーダ20において符号化プロセスの一部として定義され、適用され、次いで、補間フィルタおよびオフセット値を識別する情報がソースデバイス12から宛先デバイス16に符号化ビットストリームの一部として通信される。次いで、ビデオユニットのピクセル値を再構成するために、オフセット値は、ビデオデコーダ30において復号プロセスの一部として補間予測データに適用される。
In particular, using motion vectors and interpolation filters,
図2は、本開示で説明する補間およびオフセット技法を適用することができるビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、フレームまたはスライスなどのビデオユニット内のブロックのイントラコーディングおよびインターコーディングを実行することができる。ただし、説明しやすいように、図2ではビデオエンコーダ20のイントラコーディング構成要素を詳細に示していない。イントラコーディングは、空間的予測に依拠して、所与のビデオユニット内のビデオの空間的冗長性を低減または除去する。インターコーディングは、時間的予測に依拠して、ビデオシーケンスの隣接ユニット(たとえば、フレーム)内のビデオの時間的冗長性を低減または除去する。イントラモード(Iモード)は空間ベースの圧縮モードを指し、予測(Pモード)または双方向(Bモード)などのインターモードは、時間ベースの圧縮モードを指す。本開示の技法は、ビデオエンコーダ20によってインター符号化中に適用できる。
FIG. 2 is a block diagram illustrating an example of a
図2に示すように、ビデオエンコーダ20は、符号化すべきビデオフレーム内の現在ビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、動き推定ユニット36と、動き補償ユニット35と、参照フレームストア34と、加算器48と、変換ユニット38と、量子化ユニット40と、エントロピーコーディングユニット46とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット42と、逆変換ユニット44と、加算器51とを含む。再構成されたビデオからブロッキネスアーティファクト(blockiness artifacts)を除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(図示せず)を含めることもできる。必要な場合、デブロッキングフィルタは加算器51の出力をフィルタ処理することができる。
As shown in FIG. 2,
符号化プロセス中に、ビデオエンコーダ20はコーディングすべきビデオブロックを受信し、動き推定ユニット36および動き補償ユニット35はインター予測コーディングを実行する。動き推定ユニット36と動き補償ユニット35は高度に一体化できるが、概念的な目的のために別々に示している。動き推定は、一般に、ビデオブロックの動きを推定する、動きベクトルを生成するプロセスと見なされ、参照ユニット中の対応する予測ブロックの識別をもたらす。動きベクトルは、たとえば、現在フレーム(または他のコード化ユニット)内のコーディングされている現在ブロックに対する、予測フレーム(または他のコード化ユニット)内の予測ブロックの変位を示すことができる。動き補償は、一般に、動き推定によって判断された動きベクトルに基づいて予測ブロックをフェッチまたは生成するプロセスと見なされる。ここでも、動き推定ユニット36と動き補償ユニット35は機能的に一体化できる。例示のために、動き補償ユニット35は、本開示の補間フィルタおよびオフセット技法の選択を実行するものとして説明する。
During the encoding process,
例示のために、フレームの形態のコーディングユニットについて説明する。ただし、スライスなどの他のコーディングユニットを使用することもできる。動き推定ユニット36は、インターコード化フレームのビデオブロックを参照フレームストア34中の参照フレームのビデオブロックと比較することによって、そのインター符号化フレームのビデオブロックの動きベクトルを計算する。動き補償ユニット35は、以前に符号化されたフレーム、たとえば、IフレームまたはPフレーム中の複数のサブピクセル位置の各々におけるピクセル値を計算するために適用すべき複数の補間フィルタ37のうちの1つを選択する。すなわち、ビデオエンコーダ20は、ブロック中の各サブピクセル位置の補間フィルタを選択することができる。
For illustrative purposes, a coding unit in the form of a frame will be described. However, other coding units such as slices can also be used. Motion estimation unit 36 calculates the motion vector of the video block of the inter-coded frame by comparing the video block of the inter-coded frame with the video block of the reference frame in
選択される補間フィルタは、異なるサブピクセル位置に対して異なることができる。ブロック中の異なるサブピクセル位置に適用される補間フィルタのセットは、参照フレーム中のすべてのブロックに対して同じとすることができる。たとえば、補間フィルタF1がブロック中のサブピクセル位置x1、y1のために選択された場合、同じ補間フィルタF1を同じフレーム中のすべてのブロック中のその同じサブピクセル位置に使用することができる。サブピクセル位置は、代替的に、サブ整数ピクセル、サブピクセルまたはサブペルと呼ばれることがある。 The selected interpolation filter can be different for different sub-pixel positions. The set of interpolation filters applied to different subpixel locations in the block can be the same for all blocks in the reference frame. For example, if the interpolation filter F1 is selected for subpixel positions x1, y1 in a block, the same interpolation filter F1 can be used for that same subpixel position in all blocks in the same frame. A subpixel position may alternatively be referred to as a subinteger pixel, subpixel or subpel.
動き補償ユニット35は、1つまたは複数の以前に符号化されたフレームの補間誤差履歴に基づいて補間フィルタ37から補間フィルタを選択することができる。特に、フレームが変換ユニット38および量子化ユニット40によって符号化された後、逆量子化ユニット42および逆変換ユニット44は以前に符号化されたフレームを復号する。一例では、動き補償ユニット35は、選択された補間フィルタ37を以前に符号化されたフレームに適用してフレームのサブ整数ピクセルの値を計算し、参照フレームストア34に記憶される参照フレームを形成する。
Motion compensation unit 35 may select an interpolation filter from
後続フレームについて、動き補償ユニット35は、その後続フレームのサブ整数ピクセル値を計算するために補間フィルタ37の異なるセットを適用することができる。異なる補間フィルタの選択は、動き補償ユニット35が、一連のフレームにわたってそれぞれのサブピクセル位置について最も低い累積誤差値をもつ補間フィルタ37を選択するように、所与のサブピクセル位置における補間フィルタの各々の累積誤差など、以前に符号化されたフレームの履歴に基づくことができる。誤差値は、所与のフレーム中の実際のピクセル値と参照フレーム中の補間ピクセル値との間の差に基づくことができる。
For subsequent frames, motion compensation unit 35 may apply a different set of
補間フィルタ37は複数の補間フィルタを備えることができる。潜在的な各サブ整数ピクセル位置は、対応するピクセル値の計算のために補間フィルタ37のセットのうちの1つにマッピングされ得る。たとえば、動き補償ユニット35は、整数ピクセル位置の値に基づいてハーフピクセル位置の値を計算するために係数[1,−5,20,20,−5,1]をもつ6タップウィーナフィルタを適用し、整数ピクセル位置の値に基づいてクォーターピクセル位置の値を計算するために双1次フィルタを適用することができる。一例では、ハーフピクセル位置について、6タップウィーナフィルタは、ハーフピクセル位置に適用するためのデフォルトフィルタを備え、双1次フィルタは、クォーターピクセル位置に適用するためのデフォルトフィルタを備えることができる。
The
さらに、各ピクセル位置は、代替補間フィルタ、たとえば、異なる係数をもつ補間フィルタにマッピングできる。他の補間フィルタは様々な係数を使用して構成され得る。概して、固定の補間フィルタは、それらの係数が異なる(異なる係数は異なる周波数応答を指定する)、および/またはそれらのサポートが異なる(これが1次元または2次元、垂直、水平、または対角であるかどうか)、あるいは補間に使用されるタップ(したがってピクセル)の数が異なることがある。サポートがより大きいと、一般により良好に実行できるが、ピクセルを補間するために行う必要がある乗算および加算に関して複雑さがより高まる。 Further, each pixel location can be mapped to an alternative interpolation filter, eg, an interpolation filter with a different coefficient. Other interpolation filters can be constructed using various coefficients. In general, fixed interpolation filters have different coefficients (different coefficients specify different frequency responses) and / or their support is different (this is one-dimensional or two-dimensional, vertical, horizontal, or diagonal) Or the number of taps (and thus pixels) used for interpolation may be different. Greater support generally performs better, but adds more complexity with respect to multiplication and addition that must be done to interpolate the pixels.
一例では、各サブ整数ピクセルは、m個の可能な異なる補間フィルタにマッピングでき、1つのサブ整数ピクセル位置のためのm個の補間フィルタのうちの少なくともいくつかは、異なるサブ整数ピクセル位置のためのm個の補間フィルタとは異なり得る。クォーターピクセル精度では、補間フィルタ37はm*15個の一意の補間フィルタを備えることができ、mはサブピクセル当たりの補間フィルタの数である。代替的に、一部のサブ整数ピクセルは同じ補間フィルタにマッピングできる。各サブ整数ピクセルのための補間フィルタのうちの少なくとも1つは、対応するサブ整数ピクセルのためのデフォルト補間フィルタとして割り当てることができる。たとえば、補間フィルタの信頼できる選択を可能にするのに十分な履歴補間結果が累積されるまで、デフォルト補間フィルタは最初にビデオシーケンス中で使用され得る。
In one example, each sub-integer pixel can be mapped to m possible different interpolation filters, and at least some of the m interpolation filters for one sub-integer pixel position are for different sub-integer pixel positions. May be different from the m interpolation filters. For quarter pixel accuracy, the
動き推定ユニット36は、参照フレームストア34からの参照フレームのブロックを、現在フレーム、たとえば、PフレームまたはBフレームの符号化すべきブロックと比較する。参照フレームストア34中の参照フレームはサブ整数ピクセルの補間値を含むので、動き推定ユニット36によって計算される動きベクトルはサブ整数ピクセルロケーションを参照することができる。動き推定ユニット36は、計算された動きベクトルをエントロピーコーディングユニット46と動き補償ユニット35とに送信する。本開示で説明する技法によれば、動き推定ユニット36は、ブロック当たり1つの動きベクトルを計算し、動き推定の前に選択された補間フィルタおよびオフセットに基づいて動きベクトルを生成することができる。このようにして、ビデオエンコーダ20は、シングルパスで、すなわち、コード化ユニットのビデオブロックの動き推定を2回実行することなしにフレーム、スライスおよびブロックなどのユニットを符号化することができる。
Motion estimation unit 36 compares the block of reference frames from
シングルパスでの符号化は、初期の補間フィルタおよびオフセットを選択することと、初期の補間フィルタおよびオフセットを使用してビデオを符号化することと、符号化結果に基づいて新しい補間フィルタおよびオフセットを選択することと、次いで、新たに選択した補間フィルタおよびオフセットを用いてフレームを再符号化することとを含むマルチパス符号化プロセスとは対照的である。代わりに、エンコーダ20は、1つまたは複数の先行フレームの履歴補間結果に基づいて補間フィルタを選択し、現在フレームと1つまたは複数の先行フレームとの間の差に基づいてオフセットを選択し、次いで、選択した補間フィルタとオフセットとを使用して動き推定を実行して、各ブロックの動きベクトルおよび残差情報を生成する。したがって、ビデオエンコーダ20は、第2または後続のパスにおいて動きベクトルを再計算する必要がなく、それによって符号化プロセスの効率を向上させることができる。代わりに、動き推定を1回実行することができる。動き補償ユニット35は、参照フレームの予測ブロックと符号化されているフレームの実際のブロックとの間の誤差値を計算し、加算器48を介して残差ブロック値を生成し、それらの残差ブロック値はビデオエンコーダ20の変換ユニット38と量子化ユニット40とによって符号化される。
Single pass encoding involves selecting an initial interpolation filter and offset, encoding the video using the initial interpolation filter and offset, and creating a new interpolation filter and offset based on the encoding result. In contrast to a multi-pass encoding process that includes selecting and then re-encoding the frame with the newly selected interpolation filter and offset. Instead, the
一例では、上記で説明したように、動き補償ユニット35は、いずれの補間フィルタ37が、以前に符号化された参照フレームのブロックについて最も低い誤差を生じたかを判断することができる。たとえば、動き推定のために補間フィルタの選択セットを使用して参照フレームを符号化した後、動き補償ユニット35は、いずれの補間フィルタ37がサブピクセル位置の各々において最も低い誤差値を生じたかを識別することができる。そうするために、動き補償ユニット35は、補間フィルタの異なるセットを使用して参照フレームを符号化するために生成された予測ビデオブロックのサブ整数ピクセルを再計算することができる。特に、動き推定ユニット36によって計算された動きベクトルが、参照フレームストア34中の参照フレームのブロックのサブ整数ピクセルロケーションを参照するとき、動き補償ユニット35は、他の補間フィルタ37を使用してブロックのサブ整数ピクセルの値を再計算する。次いで、動き補償ユニット35は、予測ブロックについて補間フィルタ37の各々に対応する誤差値を計算する。
In one example, as described above, motion compensation unit 35 can determine which
動き補償ユニット35は、いずれの補間フィルタ37が、符号化されたフレームについて最も低い誤差値をもたらすかを判断する。フレームが補間フィルタのセットを使用してすでに符号化されていても、最も低い補間誤差値を生成したであろう補間フィルタを、符号化後に判断することができ、符号化すべき次のフレームの動き推定を実行するために使用することができる。フレームを符号化し、フレームについて最も低い誤差を生じたであろう補間フィルタ37のセットを識別した後、動き補償ユニット35は、参照フレームストア34にフレームを記憶する前に、選択された補間フィルタを再構成されるフレームに適用することができる。このようにして、動き補償ユニット35は、先行フレームにとって最適であると判断された補間フィルタ37のセットを使用して、コーディングすべき次のフレームを符号化するために動き推定に使用できる参照フレーム中のサブ整数ピクセル値を計算することができる。
Motion compensation unit 35 determines which
別の例では、上記で説明したように、動き補償ユニット35は、各サブピクセル位置における補間フィルタ37の各々の誤差値を累積し、参照フレームストア34に記憶すべき新しいフレームについて、動き補償ユニット35は、それぞれのサブピクセル位置のための最も低い累積誤差をもつ補間フィルタ37を選択する。このようにして、動き補償ユニット35は、各フィルタおよび各サブピクセル位置について、以前に符号化されたフレームとそれらの参照との間の補間誤差を累積することができる。上述のように、動き補償ユニット35は、メモリオーバーフローを防ぎ、補間フィルタ37のより古い履歴使用よりも補間フィルタの最近の使用により重く重み付けするために、補間フィルタ37の累積誤差を周期的にスケールダウンすることができる。このようにして、動き補償ユニットは、最も最近のフレームの寄与により重み付けし、最も古いフレームを「忘れる」という「ウィンドウ」効果をもたらすことができる。
In another example, as described above, motion compensation unit 35 accumulates each error value of
補間誤差は、符号化すべきフレームの元のピクセル値と、補間によって生成された予測フレームのピクセル値との間に差に基づいて計算できる。予測フレームは、補間によって生成され、コーディングすべきフレーム中のコーディングすべきブロックに対応する予測ブロックを含むことができる。差は、たとえば、SSD、SADまたは他の差メトリックによって判断されるものとして、予測ブロックとコード化ブロックの間のピクセル値の差として計算できる。全体的な差値、および各サブピクセル位置における差値を計算するために、異なるメトリックをフレーム中のブロックにわたって合計または平均することができる。以前にコーディングされた参照フレームのサブピクセル位置の各々において最も低い差値を生成したであろう補間フィルタのセットを、参照フレームに対してコーディングすべき次のフレームの動き推定に使用される補間フィルタのセットとして選択することができる。代替的に、コード化ビデオフレームの範囲にわたってそれぞれのサブピクセル位置における最も低い累積差値を生成する補間フィルタを、参照フレームに対してコーディングすべき次のフレームの動き推定に使用することができる。 The interpolation error can be calculated based on the difference between the original pixel value of the frame to be encoded and the pixel value of the predicted frame generated by interpolation. A prediction frame may be generated by interpolation and include prediction blocks corresponding to blocks to be coded in a frame to be coded. The difference can be calculated as the difference in pixel values between the prediction block and the coded block, for example, as determined by SSD, SAD or other difference metrics. Different metrics can be summed or averaged over the blocks in the frame to calculate the overall difference value and the difference value at each subpixel location. An interpolation filter used for motion estimation of the next frame to be coded with respect to the reference frame, the set of interpolation filters that would have produced the lowest difference value at each of the previously coded reference frame sub-pixel positions. Can be selected as a set. Alternatively, an interpolation filter that produces the lowest cumulative difference value at each sub-pixel location over the range of coded video frames can be used for motion estimation of the next frame to be coded relative to the reference frame.
概して、動き補償ユニット35は、決定ベクトルDを計算することによって各サブ整数ピクセルロケーションの補間フィルタを選択することができる。Dは長さnのベクトルとすることができ、nは各ピクセルのサブ整数ピクセルロケーションの数に対応する。一例では、ビデオエンコーダ20がクォーターピクセル精度をサポートする場合、nは15に等しい。Dの各要素は、対応するサブ整数ピクセル位置の補間フィルタのうちの1つに対応する。したがって、各サブ整数ピクセルがm個の異なる可能な補間フィルタを有する場合、Dの各要素は0とmとの間にわたる。第1の参照フレームについて、Dの各要素は「0」に初期化でき、「0」は、対応するピクセル位置のためのデフォルト補間フィルタを指す。動き補償ユニット35は、それぞれのサブピクセル位置のための対応するデフォルト補間フィルタを使用して第1の参照フレームの各サブピクセル位置の値を計算することができる。
In general, motion compensation unit 35 may select an interpolation filter for each sub-integer pixel location by calculating decision vector D. D can be a vector of length n, where n corresponds to the number of sub-integer pixel locations for each pixel. In one example, n is equal to 15 if
動き推定ユニット36は、決定ベクトルDによって識別された補間フィルタを使用して動き補償ユニット35がサブ整数ピクセル値を計算した参照フレームを参照することによって、後にインターコーディングされるフレームの各コード化ユニットの動きベクトルを計算することができる。動き補償ユニット35はまた、インターコード化フレームのコスト行列Cを計算することができる。一例では、予測コード化フレームについて、コスト行列Cは、各サブ整数ピクセルのための補間フィルタに対応する第1の次元Fと、サブ整数ピクセルに対応する第2の次元Iとを含む。したがって、コスト行列はC[F][i]として定義でき、ただし、F=[0,m]およびI=[0,n]である。Cの各要素は、最初は0に設定される。 The motion estimation unit 36 uses each interpolation unit of a frame to be intercoded later by referring to the reference frame that the motion compensation unit 35 has calculated sub-integer pixel values using the interpolation filter identified by the decision vector D. Can be calculated. Motion compensation unit 35 can also calculate the cost matrix C of the inter-coded frame. In one example, for a predictive coded frame, cost matrix C includes a first dimension F corresponding to the interpolation filter for each sub-integer pixel and a second dimension I corresponding to the sub-integer pixel. Thus, the cost matrix can be defined as C [F] [i], where F = [0, m] and I = [0, n]. Each element of C is initially set to zero.
次いで、動き補償ユニット35は、インターコード化フレームの各ピクセルと、ピクセルの各補間フィルタとについて、fがF中にあり、iがi中にある場合、C[f][i]+=|actual(i)−predicted(i,f)|を計算し、actual(i)は、インターコーディングすべきフレームのピクセル中のサブピクセルiに対応するピクセルの実際値であり、predicted(i,f)は、対応する動きベクトルによって参照される補間フィルタfを使用して、たとえば、一例ではSAD計算を使用して計算されたサブピクセルiの値である。したがって、Cの各要素は、サブピクセルの対応する補間フィルタを使用した対応するサブピクセルロケーションの累積誤差に対応する。 The motion compensation unit 35 then C [f] [i] + = | if for each pixel of the inter-coded frame and for each interpolation filter of the pixel, if f is in F and i is in i. actual (i) −predicted (i, f) |, where actual (i) is the actual value of the pixel corresponding to sub-pixel i in the pixel of the frame to be intercoded, and predicted (i, f) Is the value of sub-pixel i calculated using the interpolation filter f referenced by the corresponding motion vector, for example using SAD calculation in one example. Thus, each element of C corresponds to the accumulated error of the corresponding subpixel location using the corresponding interpolation filter of the subpixel.
双予測フレームに対して、同様のコスト行列C2[F1][F2][i][j]を計算することができ、ただし、iは、F1のサブピクセルを指し、jは、F2のサブピクセルを指し、F1は、第1の参照フレーム中のサブピクセル位置iを計算するために使用される補間フィルタを指し、F2は、第2の参照フレーム中のサブピクセル位置jを計算するために使用される補間フィルタを指す。次いで、動き補償ユニット35は、インターコード化フレームと参照フレームとの間の誤差値を、たとえば、SAD値として計算することができる。コスト行列CからSAD値を計算するために、動き補償ユニット35は、以下の式に従って、サブピクセルを計算するために使用されたフィルタを用いて、適用された各サブピクセルロケーションの累積誤差値の合計を計算することができる。
動き補償ユニット35は、位置とフィルタの組合せがインターコード化フレームと参照フレームとの間の誤差値の最も大きい低減をもたらし得るように、位置と、その位置に対応する補間フィルタとを判断するために、コスト行列中を反復的に進むことができる。すなわち、動き補償ユニット35は、上記で計算されるSAD値に最も大きい低減をもたらす値C[f][p]を識別することができる。次いで、動き補償ユニット35は、判断された補間フィルタfが、判断されたサブ整数ピクセル位置pのために将来使用されるように決定ベクトルを変更することができる。特に、決定ベクトルD、サブ整数ピクセル位置p、および補間フィルタfについて、動き補償ユニット35はD[p]=fを実行することができる。次いで、動き補償ユニット35は、上記で提示した式を使用して位置pにおけるサブ整数ピクセル値を計算するためにフィルタfが使用されていたかのように、差、たとえば、SADを再計算することができる。 The motion compensation unit 35 determines the position and the interpolation filter corresponding to that position so that the combination of position and filter can result in the greatest reduction in the error value between the inter-coded frame and the reference frame. In addition, it is possible to iterate through the cost matrix. That is, the motion compensation unit 35 can identify the value C [f] [p] that results in the greatest reduction in the SAD value calculated above. The motion compensation unit 35 can then change the decision vector so that the determined interpolation filter f is used in the future for the determined sub-integer pixel position p. In particular, for decision vector D, sub-integer pixel position p, and interpolation filter f, motion compensation unit 35 can perform D [p] = f. Motion compensation unit 35 may then recalculate the difference, eg, SAD, as if filter f had been used to calculate the sub-integer pixel value at position p using the equation presented above. it can.
動き補償ユニット35は、差が実質的に変化しなくなる(たとえば、いかなる差も最小しきい値未満になる)か、あるいは最大数の繰返しが実行されるまで、このプロセスを繰り返すことができる。以下の擬似コードに上述のプロセスを要約する。
いくつかの例では、動き補償ユニット35は、各参照フレームの誤差を累積して、最も最近の参照フレームのほうを選び、より古い参照フレームを「忘れる」ことができる。そうするために、動き補償ユニット35は、上記で説明したように特定のフレームのコスト行列を計算するが、さらにそのコスト行列に対して、以前にコーディングされたフレームのより以前のコスト行列の値の分数重み付けを加算することができる。たとえば、以前にコーディングされたフレームのコスト行列Cと、その参照フレームのコスト行列CREFとについて、動き補償ユニット35は、C=C+(1/n)*CREFを計算することができる。この場合、nは、好ましくは1よりも大きい任意の整数とすることができる。このようにして、動き補償ユニット35は、オーバーフローを回避し、補間フィルタを選択する際により新しい参照フレームのコスト計算を選好し、より古い参照フレーム、すなわち、符号化すべきフレームから時間的により遠い参照フレームの計算を「忘れる」またはフェーズアウトすることができる。 In some examples, motion compensation unit 35 may accumulate the error of each reference frame, select the most recent reference frame, and “forget” the older reference frame. To do so, motion compensation unit 35 calculates the cost matrix for a particular frame as described above, but also for that cost matrix, the value of the earlier cost matrix of the previously coded frame. Fractional weights can be added. For example, for a previously coded frame cost matrix C and its reference frame cost matrix C REF , motion compensation unit 35 may calculate C = C + (1 / n) * C REF . In this case, n can be any integer, preferably greater than 1. In this way, the motion compensation unit 35 avoids overflow, prefers to calculate the cost of the new reference frame when selecting the interpolation filter, and makes the reference farther in time from the older reference frame, ie the frame to be encoded. The frame calculation can be “forgotten” or phased out.
さらなる例示として、フレームNがコーディングすべきであり、フレームN−1〜N−Mがすでにコーディングされている場合、たとえば、参照フレームN−1に対して、フレームNの動き推定のために選択される補間フィルタは、次のように計算するコスト式に従って選択できる。
上式で、係数a1、a2、...aMは、値が漸進的により小さくなる重み付け係数を表す。所与のサブピクセル位置における各補間フィルタの累積コストCに基づいて、エンコーダ20は、Cの最も低い値を生成する補間フィルタを選択する。
Where the coefficients a 1 , a 2 ,. . . a M represents a weighting factor whose value becomes progressively smaller. Based on the accumulated cost C of each interpolation filter at a given subpixel position,
動き補償ユニット35はまた、DCオフセットなどのオフセット値を補間予測データに、すなわち、参照フレームストア34中の参照フレームのサブ整数ピクセル値に追加することができる。動き補償ユニット35は、参照フレームと現在フレームとの間のDC差、または参照フレームのブロックと現在フレームのブロックとの間のDC差に基づいてDCオフセットを割り当てることができる。動き補償ユニット35は、コーディングをシングルパスで実行する能力に一致して、「アプリオリ」に、すなわち、符号化すべき現在フレームの動き探索が実行される前にDCオフセットを割り当てることができる。
Motion compensation unit 35 may also add an offset value, such as a DC offset, to the interpolated prediction data, ie, a sub-integer pixel value of a reference frame in
予測ビデオブロックのピクセル値は、予測ビデオブロックの整数または非整数ピクセルロケーションに関連するオフセットに従って上方または下方にオフセットできる。動き補償ユニット35によって実行される補間は、異なるビデオブロックのためのいくつかの可能なサブ整数ピクセルロケーションにおける補間データを定義することができる。所与のコード化ユニットのための単一のオフセット値を定義するのではなく、動き補償ユニット35は、いくつかの実装形態では、それぞれ可能な整数およびサブ整数ピクセルロケーションについて異なるオフセット値を定義することができる。他の場合には、予測ブロック、スライスまたはフレーム中のすべてのピクセル値に単一のオフセット値を適用することができる。動き補償ユニット35は、いくつかの例では、サブ整数ピクセルのサブセットのみにオフセット値を適用する。次いで、予測データは、予測データに関連するピクセルロケーションに基づいてロケーション固有のオフセットを適用することができる。 The pixel value of the predictive video block can be offset up or down according to an offset associated with an integer or non-integer pixel location of the predictive video block. The interpolation performed by motion compensation unit 35 can define interpolation data at several possible sub-integer pixel locations for different video blocks. Rather than defining a single offset value for a given coding unit, motion compensation unit 35 defines a different offset value for each possible integer and sub-integer pixel location in some implementations. be able to. In other cases, a single offset value can be applied to all pixel values in the prediction block, slice or frame. Motion compensation unit 35 applies the offset value to only a subset of sub-integer pixels in some examples. The prediction data can then apply a location specific offset based on the pixel location associated with the prediction data.
一例では、動き補償ユニット35は、予測ビデオブロックに基づいて符号化すべきコード化フレームのビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第1のセットのメトリック(たとえば、平均値)を計算することができる。動き補償ユニット35はまた、現在フレームのブロックを符号化するために使用される予測ビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第2のセットのメトリック(たとえば、平均値)を計算することができる。すなわち、第1のセットのメトリックは、コーディングされているデータによって定義され、第2のセットのメトリックは、予測コーディングに使用される参照フレーム中の予測データによって定義される。次いで、動き補償ユニット35は、第1および第2のセットのメトリックに基づいて複数のオフセット値を計算する。 In one example, motion compensation unit 35 calculates a first set of metrics (eg, average values) associated with each integer and sub-integer pixel location of the video block of the coded frame to be encoded based on the predicted video block, respectively. can do. Motion compensation unit 35 also calculates a second set of metrics (eg, average values) associated with each integer and sub-integer pixel location of the predicted video block used to encode the block of the current frame, respectively. be able to. That is, the first set of metrics is defined by the data being coded, and the second set of metrics is defined by the prediction data in the reference frame used for predictive coding. Motion compensation unit 35 then calculates a plurality of offset values based on the first and second sets of metrics.
第1のセットのメトリックは、予測ビデオブロックに基づいてコーディングされるコード化ユニットのビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第1のセットの平均値を備え、第2のセットのメトリックは、予測ビデオブロックの各整数およびサブ整数ピクセルロケーションにそれぞれ関連する第2のセットの平均値を備えることができる。この場合、複数のオフセット値は、第1のセットの平均値と第2のセットの平均値との間の差を備えることができる。このようにして、第1のコーディングパス中でコーディングされる実際のデータに基づいて、いくつかの異なる整数およびサブ整数ピクセルロケーションに対していくつかの異なるオフセット値を定義することができる。その差は、たとえば、フレーム間の照度の差を表していることがある。 The first set of metrics comprises a first set of average values respectively associated with each integer and sub-integer pixel location of the video block of the coding unit coded based on the predicted video block, and the second set of metrics The metric may comprise a second set of average values associated with each integer and sub-integer pixel location of the predicted video block, respectively. In this case, the plurality of offset values may comprise a difference between the average value of the first set and the average value of the second set. In this way, several different offset values can be defined for several different integer and sub-integer pixel locations based on the actual data coded in the first coding pass. The difference may represent, for example, a difference in illuminance between frames.
第1のセットのメトリックは、所与のコード化ユニットのビデオブロックの各整数およびサブ整数ピクセルロケーションにおけるピクセル値の平均に対応する平均値のセットを備えることができる。第2のセットのメトリックは、そのコード化ユニット中でコーディングされている現在ブロックを予測するために使用される予測ブロックの各整数およびサブ整数ピクセルロケーションにおけるピクセル値の平均に対応するセットの平均値を備えることができる。複数のオフセット値は、第1のセットの平均値と第2のセットの平均値との間の差を備えることができる。各マクロブロックロケーションは、単一のピクセル、たとえば、それぞれのマクロブロックの左上コーナー中のそれぞれのピクセルによって定義できる。ただし、各マクロブロックは、第1のセットの平均値中の特定の平均値に寄与する16個のピクセル値を定義することができる。本開示の技法は、もちろん、他のサイズのビデオブロックにも適用できる。 The first set of metrics may comprise a set of average values corresponding to the average of the pixel values at each integer and sub-integer pixel location of the video block of a given coding unit. The second set of metrics is the average value of the set corresponding to the average of the pixel values at each integer and sub-integer pixel location of the prediction block used to predict the current block being coded in that coding unit. Can be provided. The plurality of offset values may comprise a difference between the average value of the first set and the average value of the second set. Each macroblock location can be defined by a single pixel, eg, each pixel in the upper left corner of each macroblock. However, each macroblock can define 16 pixel values that contribute to a particular average value in the first set of average values. The techniques of this disclosure can of course be applied to video blocks of other sizes.
本開示のオフセット技法は、ルーマブロック、クロマブロック、または両方に対して適用できる。ビデオブロックの各タイプ(たとえば、ルーマブロックおよびクロマブロック)に関連する各整数およびサブ整数ピクセルロケーションに対して異なるオフセットを定義することができる。さらに、各ブロックの特定の各サイズ、パーティションまたはサブパーティションにおいて、各ブロックに異なるオフセットを割り当て得る。いくつかの例では、双予測ブロックをインター符号化するために、特定のピクセルまたはサブ整数ピクセルロケーションについて2つのオフセットを計算することができ、第1のオフセットは、現在フレームの現在ブロックと時間的により近い参照フレームのコロケートブロック(co-located block)との間の平均差(すなわち、リスト0)を表し、第2のオフセットは、現在フレームと時間的により遠い参照フレームとの間の平均差(すなわち、リスト1)を表す。これらの2つのオフセット値を計算した後、ビデオエンコーダ20は、それらの2つのオフセット値のうちのどちらをピクセルまたはサブ整数ピクセル値に適用すべきかを判断することができ、リスト0に基づいて符号化するときは第1のオフセットを適用し、リスト1に基づいて符号化するときは第2のオフセットを適用する。
The offset techniques of this disclosure can be applied to luma blocks, chroma blocks, or both. Different offsets can be defined for each integer and sub-integer pixel location associated with each type of video block (eg, luma block and chroma block). Further, different offsets may be assigned to each block in each particular size, partition or subpartition of each block. In some examples, two offsets can be calculated for a particular pixel or sub-integer pixel location to inter-encode the bi-predictive block, the first offset being temporally related to the current block of the current frame. Represents the average difference (ie, list 0) between the reference frames closer to the reference frame and the second offset is the average difference between the current frame and the reference frame that is further in time ( That is, it represents list 1). After calculating these two offset values,
ブロックベースのDCオフセットを計算することは、現在フレームおよび参照フレームの何らかのサイズ(たとえば、16×16ピクセル)のコロケートブロック間のDC差に関する(ヒストグラムの形態の)統計を収集することを必要とする。参照フレーム中のブロックと現在フレーム中のブロックとを比較し、2つのフレームの各コロケートブロックについて、以下の2つの量を計算する。 Computing a block-based DC offset requires collecting statistics (in the form of a histogram) on the DC difference between collocated blocks of some size (eg, 16 × 16 pixels) in the current frame and the reference frame. . Compare the block in the reference frame with the block in the current frame and calculate the following two quantities for each collocated block in the two frames.
1)ピクセル差の2乗誤差(例示的な関数blockDC1およびblockDC2に関して以下で説明するerr0)、および
2)ブロックの平均DCが各ピクセルの値に減算された後のピクセル差の2乗誤差(例示的な関数blockDC1およびblockDC2に関して以下で説明するerr1)
これらの2つの量を比較することによって(たとえば、1における誤差が2における誤差の2倍よりも大きいかどうかを検査することによって)、ブロックが十分類似しているかどうか(すなわち、コロケートブロック間の差が大部分はDC差によって生じているかどうか)を推定し、これが当てはまる場合、これらの統計値を累積してブロックベースのDC差のヒストグラムを含んでいるベクトルにすることが可能であり得る。実際的な理由のために、DC差は、たとえば、それらのDC差を整数値に丸めることによって量子化できる。
1) squared error of pixel difference (err0 described below with respect to exemplary functions blockDC1 and blockDC2), and 2) squared error of pixel difference after block average DC is subtracted from each pixel value (illustrated) Err1 described below with respect to the typical functions blockDC1 and blockDC2)
By comparing these two quantities (eg, by checking if the error at 1 is greater than twice the error at 2), whether the blocks are sufficiently similar (ie, between collocated blocks) If this is the case, it may be possible to accumulate these statistics into a vector containing a histogram of block-based DC differences. For practical reasons, the DC differences can be quantized, for example, by rounding those DC differences to integer values.
ヒストグラムビンを検査することによって、DC差の範囲を導出し、DCminおよびDCmaxを計算することが可能である。いくつかの可能性は以下の通りである。 By examining the histogram bins, it is possible to derive a range of DC differences and calculate DCmin and DCmax. Some possibilities are as follows.
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を戻す。
2) Count the number of bins corresponding to negative and positive DC values with more samples than noSamples, but stop counting when test fails for the first time, or 3) More than noSamples Find the DC value corresponding to the leftmost and rightmost bins containing the samples (the method used in blockDC1 below)
As an example, if noSamples = 20 and the histogram is as shown in Table 2 below, the first method is DCmin = −2, DCmax = 2, second DCmin = −2, DCmax = 1, and Return the third DCmin = −2, DCmax = 4.
上記で概説したように現在フレームと参照フレームとの間のブロックベースのDC差の値を推定した後、サブピクセル位置のサブセットにオフセットを割り当てる。使用される機構は、エンコーダとデコーダの両方に知られており、DCminおよびDCmaxの値によって完全に判断される。したがって、他の方法との互換性を維持する必要がなければ、オフセットの送信は、これらの2つの値のみを送信することによって大幅に簡略化できる。 After estimating the value of the block-based DC difference between the current frame and the reference frame as outlined above, an offset is assigned to the subset of subpixel positions. The mechanism used is known to both the encoder and the decoder and is completely determined by the values of DCmin and DCmax. Thus, unless compatibility with other methods need to be maintained, the transmission of the offset can be greatly simplified by transmitting only these two values.
オフセット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の例に関して説明する。
上記の表3において、左の4列はサブピクセル位置を示し、中央の4列は15個のオフセットの割当てを示し、右の4列は9個のオフセットの割当てを示す。 In Table 3 above, the left four columns indicate the subpixel positions, the middle four columns indicate the 15 offset assignments, and the right four columns indicate the nine offset assignments.
現在フレームと参照フレームとの間の(フレームベースの)DC差を使用して、DCminおよびDCmaxの計算において使用されるしきい値noSamplesと、1/4ピクセル補間のためのオフセットの数の両方を判断することができる。しきい値noSamplesは、画像のサイズ(したがってブロックの数)を考慮に入れることによって計算することもできる。その場合、DCminおよびDCmaxをさらに改善することができる。これを行うのに可能な方法を以下の擬似コードに例示する。
上記の擬似コード中の量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に設定する。 The quantity roundFact in the above pseudo code is used to quantize the DC range and suppress the offset to 15 or less values. Next, offsets in the range [DCmin, DCmax] are assigned to subpixel positions in the order specified above. If the absolute value of the frame-based DC difference is small (eg, less than 2), the DC difference is requantized in a smaller step (eg, 0.1), creating a new quantity called noOffsets1. If noOffsets1 is less than or equal to a threshold (eg, 8), set the first noOffset1 subpixel position (first in the order specified above) to 0 and set the remaining positions (depending on the sign of the DC difference) ) Add +1 or -1. If noOffset1 is greater than the threshold, +1 or -1 is entered at the first noOffsets1 position and the remaining subpixel positions are set to zero.
図2をさらに参照すると、動き補償ユニット35は予測ブロックに基づいて予測データを計算する。ビデオエンコーダ20は、コーディングされている元のビデオブロックから予測データを減算することによって残差ビデオブロックを形成する。加算器48は、この減算演算を実行する1つまたは複数の構成要素を表す。変換ユニット38は、離散コサイン変換(DCT)または概念的に同様の変換など、変換を残差ブロックに適用し、残差変換ブロック係数を備えるビデオブロックを生成する。変換ユニット38は、たとえば、概念的にDCTと同様である、H.264規格によって定義される変換など、他の変換を実行することができる。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換を使用することもできる。いずれの場合も、変換ユニット38は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル領域から周波数領域に変換することができる。
Still referring to FIG. 2, motion compensation unit 35 calculates prediction data based on the prediction block.
量子化ユニット40は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減することができる。たとえば、量子化中に16ビット値を15ビット値に切り詰めることができる。量子化の後、エントロピーコーディングユニット46は量子化変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット46は、コンテンツ適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、または別のエントロピーコーディング方法を実行することができる。エントロピーコーディングユニット46によるエントロピーコーディングの後、符号化ビデオを、別のデバイスに送信するか、あるいは後で送信または検索するためにアーカイブすることができる。コード化ビットストリームは、エントロピーコード化残差ブロックと、そのようなブロックのための動きベクトルと、特定のフレームのサブ整数ピクセル値を計算するために参照フレームに適用すべき補間フィルタの識別子と、コード化ユニット内の異なる整数およびサブ整数ピクセルロケーションにおける複数の異なるオフセットを識別するオフセット値を含む他のシンタックスとを含むことができる。
The quantization unit 40 quantizes the residual transform coefficient to further reduce the bit rate. The quantization process can reduce the bit depth associated with some or all of the coefficients. For example, a 16-bit value can be truncated to a 15-bit value during quantization. After quantization,
逆量子化ユニット42および逆変換ユニット44は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット35は、参照フレームストア34のフレームのうちの1つの予測ブロックに残差ブロックを加算することによって参照ブロックを計算することができる。動き補償ユニット35はまた、サブ整数ピクセル値を計算するために、選択された補間フィルタ37を再構成される残差ブロックに適用することができる。加算器51は、再構成された残差ブロックを、動き補償ユニット35によって生成された動き補償された予測ブロックに加算して、参照フレームストア34に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするための参照ブロックとして動き推定ユニット36および動き補償ユニット35によって使用され得る。
Inverse quantization unit 42 and
動き推定ユニット36は、本開示の技法によれば、動きベクトルを計算すべき予測ブロックを識別するために使用される標準探索アルゴリズムを変更することもできる。本開示の技法によれば、動き推定ユニット36は、参照フレームに以前に追加されたDCオフセットを考慮に入れる改善された動き探索を実行することができる。特に、動き推定ユニット36は、DCオフセットの追加の結果として0でないDCオフセット値を有するサブピクセル位置の評価を強制することによって、動き探索を改善することができる。動き探索中に、動き推定ユニット36は、たとえば、ブロックのSAD、SSDまたは他のピクセル差メトリックに基づいて、符号化すべきブロックに最もぴったり一致する参照フレームの予測ブロックを識別することを試みる。 Motion estimation unit 36 may also change the standard search algorithm used to identify the predictive block for which motion vectors are to be calculated according to the techniques of this disclosure. According to the techniques of this disclosure, motion estimation unit 36 may perform an improved motion search that takes into account a DC offset previously added to the reference frame. In particular, motion estimation unit 36 may improve motion search by forcing the evaluation of sub-pixel locations that have non-zero DC offset values as a result of adding a DC offset. During motion search, motion estimation unit 36 attempts to identify the predicted block of the reference frame that best matches the block to be encoded, eg, based on the block's SAD, SSD or other pixel difference metric.
動き探索から生じる符号化を改善するために、動き補償ユニット35が0でないオフセット値を定義した整数またはサブ整数ピクセルロケーションのうちの1つにおいて開始するブロックをスキップすることを標準動き探索アルゴリズムが指図するであろう場合でも、動き推定ユニット36は、これらのピクセルロケーションにおいて開始する参照フレームの予測ブロックを検査することができる。参照フレームのブロックが、定義されたオフセット値がないか、またはオフセット値が0であるピクセルまたはサブピクセルロケーションにおいて開始し、動き探索アルゴリズムが、そのロケーションにあるブロックをスキップすることを指図しているとき、動き推定ユニット36は、そのロケーションをスキップし、次のピクセルロケーションに移動することができる。しかしながら、参照フレームのブロックが、動き補償ユニット35が0でないオフセット値を定義したロケーションにおいて開始し、動き探索アルゴリズムが、そのロケーションにあるブロックをスキップすることを指図しているとき、動き推定ユニット36は、それにもかかわらず、そのロケーションにおいて開始するブロックを分析し、それにより標準動き探索アルゴリズムを無効にすることができる。特に、動き推定ユニット36は、ブロックをインターコーディング用の予測ブロックとして選択すべきかどうかを判断するために、参照フレーム中のそのロケーションにおいて開始するブロックを、コーディングすべきブロックと比較することができる。 In order to improve the encoding resulting from motion search, the standard motion search algorithm directs that motion compensation unit 35 skips blocks starting at one of the integer or sub-integer pixel locations that define a non-zero offset value. Even if so, motion estimation unit 36 may examine the prediction block of the reference frame starting at these pixel locations. A block of the reference frame starts at a pixel or sub-pixel location that has no defined offset value or has an offset value of 0, and the motion search algorithm directs the block at that location to be skipped Sometimes motion estimation unit 36 can skip that location and move to the next pixel location. However, when a block of the reference frame starts at a location where motion compensation unit 35 has defined a non-zero offset value and the motion search algorithm directs skipping the block at that location, motion estimation unit 36 Can nevertheless analyze the block starting at that location, thereby disabling the standard motion search algorithm. In particular, motion estimation unit 36 may compare the block starting at that location in the reference frame with the block to be coded to determine whether the block should be selected as a predictive block for intercoding.
一例では、ビデオエンコーダ20は、1つまたは複数の以前に符号化されたフレームの(単一または累積)履歴に基づいて補間フィルタを選択するための手順と、サブピクセル位置に対するDCオフセットを計算し、割り当てるための手順と、DCオフセットをもつサブピクセル位置を考慮に入れるためのする動き探索の改良とを組み合わせて、ほとんどまたはまったくパフォーマンスロスなしに、かなりの速度ゲインで、符号化をシングルパスで実行することができる。他の例では、ビデオエンコーダ20は、(1)補間フィルタを選択するための手順と、(2)サブピクセル位置に対するDCオフセットを計算し、割り当てるための手順と、(3)DCオフセットをもつサブピクセル位置を考慮に入れるための動き探索の改善との任意の組合せまたは置換を実行することができる。
In one example,
図3は、本開示で説明する方法で符号化されたビデオシーケンスを復号するビデオデコーダ30の一例を示すブロック図である。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明した符号化とは逆の復号パスを実行することができる。ビデオデコーダ30は、復号中に本開示のオフセット技法を実行する動き補償ユニット54を含む。特に、復号側で、動き補償ユニット54はエントロピー復号ユニット52からシンタックス要素を受信することができ、それは、たとえば整数ピクセルロケーションおよび1つまたは複数の非整数ピクセルロケーションに対して異なるオフセットを定義する、コード化ユニットの複数のオフセット値を識別するものである。
FIG. 3 is a block diagram illustrating an example of a
動き補償ユニット54は、エントロピー復号ユニット52から受信した動きベクトルに基づいて予測データを生成することができる。特に、動き補償ユニット54は、動きベクトルを使用して以前に復号された参照フレーム中の予測ブロックを識別し、(その予測データのピクセルロケーションに基づいて)そのような予測データに適切なオフセットを追加して、オフセット予測データを生成することができる。予測データは補間データとすることができ、その場合、オフセット予測データを生成するために、非整数ロケーションのオフセット値のうちの対応する1つを補間予測データに適用することができる。このオフセット予測データに基づいて、ビデオデータ(たとえば、再構成された残差ビデオブロック)を復号することができる。特に、デコーダは、符号化された元のビデオブロックを生成するために、オフセット予測データを残差ビデオブロックと組み合わせることができる。 The motion compensation unit 54 can generate prediction data based on the motion vector received from the entropy decoding unit 52. In particular, motion compensation unit 54 uses motion vectors to identify prediction blocks in previously decoded reference frames and to provide appropriate offsets for such prediction data (based on the pixel location of the prediction data). In addition, offset prediction data can be generated. The predicted data can be interpolated data, in which case a corresponding one of the offset values of the non-integer locations can be applied to the interpolated predicted data to generate offset predicted data. Based on this offset prediction data, video data (eg, a reconstructed residual video block) can be decoded. In particular, the decoder can combine the offset prediction data with the residual video block to generate the original encoded video block.
エントロピー復号ユニット52は、量子化係数およびシンタックス(たとえば、動きベクトル、およびコード化ユニットの複数のオフセット値)を生成するために、受信ビットストリームをエントロピー復号する。シンタックスは、エントロピーコーディングユニット52から動き補償ユニット54に転送される。逆量子化ユニット56は、量子化されたブロック係数を逆量子化(inverse quantize)、すなわち反量子化(de-quantize)する。逆量子化プロセスは、たとえば、H.264復号によって定義された、従来のプロセスとすることができる。逆変換ユニット58は、ピクセル領域における残差ブロックを生成するために、変換係数に逆変換、たとえば逆DCTまたは概念的に同様の逆変換プロセスを適用する。動き補償ユニット54は、動き補償ブロックを生成し、場合によっては補間フィルタ64を使用して補間を実行する。特定のフレーム中のサブピクセル位置に対して使用すべき特定の補間フィルタ64を指定する識別子を、エンコーダ20によって生成されたビットストリーム中にシンタックス要素として含めることもできる。
Entropy decoding unit 52 entropy decodes the received bitstream to generate quantized coefficients and syntax (eg, motion vectors and coding unit offset values). The syntax is transferred from entropy coding unit 52 to motion compensation unit 54. The
動き補償ユニット54は、ビデオブロックの符号化中にビデオエンコーダ20によって使用されたのと同じ補間フィルタ64のセットを選択することができる。特に、動き補償ユニット54は、参照フレームストア62から取り出された参照ブロックについてビットストリーム中のシンタックス要素によって示される、補間フィルタ64のセットを使用してサブ整数ピクセル値を計算する。動き補償ユニット54が動きベクトルに基づいて予測ブロックを生成した後、動き補償ユニット54は、予測ブロックに適切なオフセット値を追加して、エンコーダが実行した元の符号化において使用されたオフセット予測ブロックを生成する。
Motion compensation unit 54 may select the same set of interpolation filters 64 that were used by
加算器64は、動き補償ユニット54によって生成された対応するオフセット予測ブロックをもつ残差ブロックを合計することによって、残差ブロックからの残差データを加算して、現在フレームのための復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、デブロッキングフィルタを適用して、復号ブロックをフィルタ処理することもできる。次いで、復号ビデオブロックは参照フレームストア62に記憶され、参照フレームストア62は、復号すべき後のフレームに対する後続の動き補償のための参照ブロックを供給し、ビデオ表示のための(図1のデバイス28などの)表示デバイスを駆動する表示バッファに送信するための復号ビデオをも生成する。
ここでも、本開示の技法は、動き補償予測データへのオフセットの適用に関係し、補間によって定義された整数および異なるサブ整数ピクセルロケーションに対して異なるオフセットを使用する。エンコーダは、本開示の技法を使用して、様々なオフセット値を定義し適用する。また、デコーダは、エンコーダによって定義され使用されたのと同じオフセット値を識別するために、エンコーダから送信されたシンタックス要素を解釈する。予測データのピクセル値に適切なオフセットを適用し、適切なオフセットは、そのような予測データのために定義されたピクセルロケーション、たとえば、整数ピクセルロケーション、またはいくつかの可能な非整数ピクセルロケーションのうちの1つに基づいて選択される。 Again, the techniques of this disclosure relate to applying offsets to motion compensated prediction data and use different offsets for integers defined by interpolation and different sub-integer pixel locations. The encoder uses the techniques of this disclosure to define and apply various offset values. The decoder also interprets syntax elements sent from the encoder to identify the same offset value that was defined and used by the encoder. Applies an appropriate offset to the pixel value of the prediction data, the appropriate offset being a pixel location defined for such prediction data, eg, an integer pixel location, or some possible non-integer pixel location Is selected based on one of
図4は、予測データに関連する整数ピクセルロケーションと、補間予測データに関連するサブ整数ピクセルロケーションとを示す概念図である。図4の概念図において、様々なボックスはピクセルを表す。(実線のボックス中の)大文字は整数ピクセルロケーションを表し、(点線のボックス中の)小文字はサブ整数補間ピクセルロケーションを表す。ピクセルロケーション「aa」、「bb」、「cc」、「dd」、「ee」、「ff」、「gg」、「hh」、「ii」、および「jj」は、ピクセルロケーション「C3」に関連する様々な分数ロケーションの分数補間において使用されるハーフピクセルロケーションである。各ピクセルは、そのピクセルがビデオブロックを定義するようにビデオブロックの右上側のピクセルに対応することができる。補間または外挿については、ビデオブロックのピクセルの各々を、それぞれのサブ整数ピクセルから同じ空間距離を有する様々な整数ピクセルに関して同様に補間または外挿することができる。 FIG. 4 is a conceptual diagram illustrating integer pixel locations associated with prediction data and sub-integer pixel locations associated with interpolated prediction data. In the conceptual diagram of FIG. 4, the various boxes represent pixels. Uppercase letters (in the solid box) represent integer pixel locations and lowercase letters (in the dotted box) represent subinteger interpolated pixel locations. Pixel locations “aa”, “bb”, “cc”, “dd”, “ee”, “ff”, “gg”, “hh”, “ii”, and “jj” are assigned to pixel location “C3”. A half-pixel location used in fractional interpolation of various associated fractional locations. Each pixel can correspond to a pixel on the upper right side of the video block such that the pixel defines a video block. For interpolation or extrapolation, each of the pixels of the video block can be similarly interpolated or extrapolated with respect to various integer pixels having the same spatial distance from the respective sub-integer pixels.
あらゆる整数ピクセルロケーションは、関連する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つまたは複数を生成するために使用される、上記の分数ロケーション以外の)他の分数ロケーションのほとんどは図示していない。 Every integer pixel location has 15 different fractional ("sub-integer") locations associated with it. In the example of FIG. 4, these 15 different fractional locations associated with pixel “C3” are sub-integer pixel locations “a”, “b”, “c”, “d”, “e”, “f”. , “G”, “h”, “i”, “j”, “k”, “l”, “m”, “n”, and “o”. Similarly, the 15 different fractional locations associated with pixel “E5” are the sub-integer pixel locations “a ′”, “b ′”, “c ′”, “d ′”, “e ′”, “f ′”. ”,“ G ′ ”,“ h ′ ”,“ i ′ ”,“ j ′ ”,“ k ′ ”,“ l ′ ”,“ m ′ ”,“ n ′ ”, and“ o ′ ” ing. For simplicity, most of the other fractional locations (other than the fractional location described above used to generate one or more of the 15 different fractional locations associated with pixel “C3”) are illustrated. Not shown.
たとえば、ITU H.264/AVC規格では、ハーフピクセル位置におけるルーマ信号を得るために、一般に、係数[1,−5,20,20,−5,1]をもつ6タップウィーナフィルタ(Wiener filter)を使用する。次いで、クォーターピクセルロケーションにおけるルーマ信号を得るために、双1次フィルタ(bilinear filter)を使用する。双1次フィルタは、H.264/AVCでは最高1/8ピクセル精度を有し得る、クロマ成分の分数ピクセル補間においても使用できる。 For example, ITU H. The H.264 / AVC standard generally uses a 6-tap Wiener filter with coefficients [1, -5, 20, 20, -5, 1] to obtain a luma signal at a half pixel position. A bilinear filter is then used to obtain the luma signal at the quarter pixel location. The bilinear filter is an H.264 filter. It can also be used in fractional pixel interpolation of chroma components, which may have up to 1/8 pixel accuracy in H.264 / AVC.
動き推定の後、コーディングレートとビデオ品質のバランスをとるために、たとえば、レートひずみモデルを使用して、所与のビデオブロックのための最良の動きベクトルを識別することができる。最良の動きベクトルを使用して動き補償中に予測ビデオブロックを形成する。上記で概説したように、元のビデオブロックから予測ビデオブロックを減算することによって残差ビデオブロックを形成する。次いで、残差ブロックに変換を適用し、ビットレートをさらに低減するために変換係数を量子化し、エントロピーコーディングする。 After motion estimation, in order to balance coding rate and video quality, for example, a rate distortion model can be used to identify the best motion vector for a given video block. The best motion vector is used to form a predictive video block during motion compensation. As outlined above, a residual video block is formed by subtracting the predicted video block from the original video block. A transform is then applied to the residual block and the transform coefficients are quantized and entropy coded to further reduce the bit rate.
本開示の技法は、予測ビデオブロックにオフセットを追加することを含む。オフセットの値は、異なる整数およびサブ整数ピクセルロケーションに対して異なるオフセットが定義されるという点で、ロケーション固有であり得る。ピクセル「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’」の各々にそれぞれ適用することもできる。オフセットは、オフセット予測ブロックを生成するために、予測ブロックのあらゆるピクセル値を上方または下方に本質的にバイアスする符号付き値を定義することができる。 The techniques of this disclosure include adding an offset to the predicted video block. The value of the offset can be location specific in that different offsets are defined for different integer and sub-integer pixel locations. Since pixels “b” and “b ′” define the same sub-integer pixel location with respect to integer pixels C3 and E5, the offsets associated with the video blocks identified by these two pixels can be the same. . However, since pixels “c” and “d ′” define different sub-integer pixel locations for integer pixels C3 and E5, the offset associated with the video block identified by pixels “c” and “d ′” is Can be different. 16 different pixel locations “C3”, “a”, “b”, “c”, “d”, “e”, “f”, “g”, “h”, “i”, “j”, Each of “k”, “l”, “m”, “n”, and “o” can define a different offset. Further, these different offsets are the 16 different pixel locations “E5”, “a ′”, “b ′”, “c ′”, “d ′”, “e ′”, “f ′”, “g” Apply to each of '"," h' "," i '"," j' "," k '"," l' "," m '"," n' ", and" o '" You can also. The offset can define a signed value that essentially biases every pixel value of the prediction block up or down to produce an offset prediction block.
オフセットは、すべての対応する予測ピクセルの平均に対して同じサンプルロケーション(整数または特定のサブ整数ロケーション)を有するコード化ユニットのすべてのピクセルの平均差を備え得るので、DCオフセットと呼ばれることがある。すなわち、ブロックのピクセルの各々は同様に同じ程度だけバイアスされるので、オフセットは、たとえば、DCT計算から生じる変換データのDC値の変化をもたらし、ただし、DC値は、変換計算から生じる行列の左上の値である。これは、DC値がブロックのピクセル値の平均を表すからである。したがって、ピクセルを特定の値だけバイアスすることによって、変換計算から生じるDC値は同様にバイアスされることになる。したがって、いくつかの例では、DCオフセットをブロックの各ピクセルに適用するのではなく、DCオフセットを、変換計算から生じるDC値に適用することができる。 The offset may be referred to as a DC offset because it may comprise the average difference of all pixels of the coding unit that have the same sample location (integer or specific sub-integer location) relative to the average of all corresponding predicted pixels. . That is, since each of the pixels of the block is similarly biased to the same extent, the offset results in a change in the DC value of the transformed data resulting from, for example, the DCT calculation, where the DC value is the upper left of the matrix resulting from the transformed calculation. Is the value of This is because the DC value represents the average of the pixel values of the block. Thus, by biasing the pixel by a certain value, the DC value resulting from the conversion calculation will be similarly biased. Thus, in some examples, rather than applying a DC offset to each pixel of the block, a DC offset can be applied to the DC value resulting from the transform calculation.
いくつかの例では、整数およびサブ整数ピクセルロケーションの各々に異なるオフセット値を割り当てることができる。動きベクトルによって参照されるピクセルまたはサブピクセルに対応するオフセット値を、ブロックの各ピクセルに適用する。一例として、ピクセルおよびサブピクセルロケーションに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つに割り当てられる。
In some examples, a different offset value can be assigned to each of the integer and sub-integer pixel locations. An offset value corresponding to the pixel or subpixel referenced by the motion vector is applied to each pixel of the block. As an example, pixel locations "e", "f", "g", "i", "k", "m", "m", " Offset values {1, 6, 4, 5, 7, 3, 8, 2} can be assigned to “n” and “o”, respectively. That is, the offset value mapping is: {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}. In another example, the offset value may comprise a difference between an average value of pixels in the reference frame and an average value of pixels in the current frame. When such a difference is called DCframe, in one example, when 0 <DCframe <1.5, an offset with a magnitude of 1 is assigned to 10 * DCframe pixel positions (rounded to the nearest integer). It is done. For example, if DCframe is equal to 0.83, an offset with
本開示の技法によれば、動き推定ユニット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」は定義されたオフセット値を有しているので、これらのロケーションにおいて開始するブロックを評価するであろう。 In accordance with the techniques of this disclosure, motion estimation unit 36 may be instructed by the standard motion search algorithm to skip one or more of the blocks whose locations have defined offset values. These blocks can also be evaluated. Motion estimation unit 36 may skip evaluating those blocks when the motion search algorithm directs that blocks starting at pixel locations that do not have a defined offset value are skipped. Offset values {1, 6, 4, 5, 7, 3 for pixel locations “e”, “f”, “g”, “i”, “k”, “m”, “n”, and “o”, respectively. , 8, 2} in the above example, motion estimation unit 36 is associated with pixel locations “C3”, “a”, “b”, “c”, “d”, “h”, “j”, and When the motion search algorithm directs to skip “l”, it can skip evaluating blocks starting at these pixel locations. However, motion estimation unit 36 skips blocks starting at pixel locations “e”, “f”, “g”, “i”, “k”, “m”, “n”, and “o”. The pixel location “e”, “f”, “g”, “i”, “k”, “m”, “n”, and “o” are defined offset values even when the motion search algorithm directs Will evaluate the blocks starting at these locations.
別の例として、DCmbが、参照ブロックのピクセルの平均値と現在のブロックのピクセルの平均値との間の差を表すとする。さらに、少なくともしきい値数のマクロブロックに割り当てられたDCmbの最小値をDCminとし、少なくともしきい値数のマクロブロックに割り当てられたDCmbの最大値をDCmaxとする。一例では、DCframe>1.5であるとき、DCminとDCmaxとの間にわたるオフセット値がピクセル値の各々に割り当てられる。 As another example, let DCmb represent the difference between the average value of the pixels in the reference block and the average value of the pixels in the current block. Further, the minimum value of DCmb allocated to at least the threshold number of macroblocks is defined as DCmin, and the maximum value of DCmb allocated to at least the threshold number of macroblocks is defined as DCmax. In one example, when DCframe> 1.5, an offset value spanning between DCmin and DCmax is assigned to each of the pixel values.
ここでも、図4は、上記の場合の文字をもつ実線ボックス中に(フルピクセルとも呼ばれる)整数ピクセルサンプルを示している。任意の所与の整数ピクセルサンプルについて、15個のサブピクセル位置が存在することができ、図4では、整数ピクセルサンプル「C3」について示され、「a」〜「o」と標示されている。H.264/AVCに従って、動き補償ユニット35は、最初に1次元6タップウィーナフィルタを使用してハーフピクセル位置「b」、「h」、および「j」を計算することができる。補間フィルタは、最初は水平方向に、次いで垂直方向に適用でき、またはその逆に適用できる。次いで、動き補償ユニット35は、双1次フィルタとすでに計算されたハーフピクセルサンプルとを使用して残りのクォーターピクセル位置をフィルタ処理することができる。 Again, FIG. 4 shows integer pixel samples (also called full pixels) in a solid line box with the characters in the above case. For any given integer pixel sample, there can be fifteen sub-pixel locations, shown in FIG. 4 for integer pixel sample “C3” and labeled “a”-“o”. H. In accordance with H.264 / AVC, motion compensation unit 35 may first calculate half pixel positions “b”, “h”, and “j” using a one-dimensional 6-tap Wiener filter. The interpolation filter can be applied first in the horizontal direction and then in the vertical direction, or vice versa. The motion compensation unit 35 can then filter the remaining quarter pixel positions using the bilinear filter and the already calculated half pixel samples.
補間データを生成するために適用される実際のフィルタは、多種多様な実装形態が可能である。一例として、動き補償ユニット35は、補間値を定義するために適応補間フィルタ処理を使用することができる。別の例では、補間フィルタのいくつかのセットを適用し、最良の予測データを生じるセットを選択することができる。いくつかの例では、本開示で説明するように、補間フィルタは、1つまたは複数の参照フレームの履歴補間データに基づいて選択できる。本開示によれば、オフセットの追加が行われるのは、コーディングにおいて使用すべき参照フレームから何らかの補間予測データを生成した後であるが、コーディングすべき現在フレームについて動き推定が実行される前である。 The actual filter applied to generate the interpolation data can have a wide variety of implementations. As an example, motion compensation unit 35 may use adaptive interpolation filtering to define the interpolation value. In another example, several sets of interpolation filters can be applied to select the set that yields the best prediction data. In some examples, as described in this disclosure, an interpolation filter can be selected based on historical interpolation data of one or more reference frames. According to the present disclosure, the offset is added after generating some interpolated prediction data from the reference frame to be used in coding, but before motion estimation is performed on the current frame to be coded. .
図2に関して説明したように、動き補償ユニット35は、オフセット(SIFO)方式を用いた切替え補間フィルタを使用することができる。動き補償ユニット35は、たとえば、複数の異なるあらかじめ定義された補間フィルタ係数のセットによってそれぞれ定義され得る、複数の固定補間フィルタ37の間で選択することができる。補間フィルタの選択は、コード化ユニットレベル(たとえば、フレームレベルまたはスライスレベル)ごとに、またはサブピクセル位置(サンプルレベル)ごとに実行できる。さらに、本開示によれば、予測後にDCオフセットを追加することもでき、DCオフセットは、本開示で説明するように、可能な整数または分数ピクセルロケーションごとに定義することもできる。 As described with respect to FIG. 2, the motion compensation unit 35 may use a switched interpolation filter using an offset (SIFO) scheme. The motion compensation unit 35 can select among a plurality of fixed interpolation filters 37, each of which can be defined, for example, by a plurality of different sets of predefined interpolation filter coefficients. The selection of the interpolation filter can be performed at each coding unit level (eg, frame level or slice level) or at each subpixel location (sample level). Further, according to the present disclosure, a DC offset can also be added after prediction, and the DC offset can also be defined for each possible integer or fractional pixel location, as described in the present disclosure.
すなわち、動き補償ユニット35は、いくつかの可能な代替の補間データを定義するために、固定補間フィルタ37の異なるセットを使用することができる。例として、動き補償ユニット35は、標準のITU−T H.264フィルタセット、H.264/AVCに基づくが(1/2ピクセル位置に対しては中間丸め、および1/4ピクセル位置に対してはバイアス丸めなしの)より高い精度をもつフィルタセット、またはカスタマイズされた補間フィルタのセットを使用することができる。カスタマイズされた補間フィルタのセットは、トレーニングビデオシーケンスのセットを使用することによってあらかじめ定義できる。 That is, motion compensation unit 35 can use a different set of fixed interpolation filters 37 to define some possible alternative interpolation data. As an example, the motion compensation unit 35 is a standard ITU-T H.264 standard. H.264 filter set, H.264 A set of filters based on H.264 / AVC but with higher accuracy (no intermediate rounding for 1/2 pixel position and no bias rounding for 1/4 pixel position), or a set of customized interpolation filters Can be used. A customized set of interpolation filters can be pre-defined by using a set of training video sequences.
最良の予測(すなわち、より小さい予測誤差エネルギー)を提供するフィルタセットは、累積ベースでの以前の参照フレームまたは複数の参照フレームの履歴補間誤差によって示されるように、動き補償ユニット35によって選択され、補間データを生成するために適用され得る。複数の参照フレームを使用するときは、異なる参照フレームに対して異なるフィルタセットを選択することができる。一例では、動き補償ユニット35は1/2ピクセル位置(位置b、hおよびl)に対しては標準フィルタを適用し、動き補償ユニット35は他の1/4ピクセル位置に対してはカスタマイズされたフィルタセットを適用することができる。 The filter set that provides the best prediction (ie, smaller prediction error energy) is selected by the motion compensation unit 35, as indicated by the historical interpolation error of the previous reference frame or multiple reference frames on a cumulative basis, It can be applied to generate interpolation data. When using multiple reference frames, different filter sets can be selected for different reference frames. In one example, motion compensation unit 35 applies a standard filter for ½ pixel positions (positions b, h and l), and motion compensation unit 35 is customized for other ¼ pixel positions. A filter set can be applied.
予測データが動き補償ユニット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’」の各々にそれぞれ適用することもできる。 Once the prediction data is generated or interpolated by the motion compensation unit 35, a DC offset can be applied to the prediction data based on the sample location associated with the interpolated (or non-interpolated) data. In particular, this disclosure provides for the use of different DC offsets for different integer or sub-integer pixel locations. Again, in the exemplary data shown in FIG. 4, this includes 16 different pixel locations “C3”, “a”, “b”, “c”, “d”, “e”, “f”, Each of “g”, “h”, “i”, “j”, “k”, “l”, “m”, “n”, and “o” may define its own different offset Means you can. Thus, for the 16 possible integer and sub-integer locations, there can be 16 different offsets. Further, these different offsets are the 16 different pixel locations “E5”, “a ′”, “b ′”, “c ′”, “d ′”, “e ′”, “f ′”, “g” Apply to each of '"," h' "," i '"," j' "," k '"," l' "," m '"," n' ", and" o '" You can also.
予測データのピクセルにDCオフセットを追加することは、異なるビデオフレーム間の照度変化の効果を捕捉するのを助けることになり得る。照度変化は、ビデオシーケンス中のフラッシュまたは暮れ行く空などによって生じることがある。H.264/AVCは、予測ピクセル値にオフセットを追加することを可能にし得る重み付け予測を使用する。しかしながら、H.264/AVC重み付け予測によって定義されたDCオフセットはフレームレベル上でのみ可能になり、すなわち、ビデオブロックの予測データが補間されるかどうかにかかわらず、所与のフレームに対してただ1つのオフセット値が定義されることを意味する。言い換えれば、フレームレベルオフセットでは、同じフレーム中のすべてのピクセルは同じDCオフセットを有する。 Adding a DC offset to the prediction data pixels can help capture the effects of illumination changes between different video frames. Illuminance changes can be caused by flashes in the video sequence or by the skies. H. H.264 / AVC uses weighted prediction that may allow an offset to be added to the predicted pixel value. However, H.C. The DC offset defined by H.264 / AVC weighted prediction is only possible on the frame level, i.e. only one offset value for a given frame, regardless of whether the prediction data of the video block is interpolated. Is defined. In other words, at a frame level offset, all pixels in the same frame have the same DC offset.
本開示によれば、場合によっては、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は、単純であるが効果的な動きセグメンテーションツールを提供することができる。 In accordance with this disclosure, in some cases, the DC offset can be defined differently for different sample positions associated with interpolated and non-interpolated data. Therefore, the fifteen subpixel positions (“a”, “b”, “c”, “d”, “e”, “f”, “g”, “h”, “i”, “ j ”,“ k ”,“ l ”,“ m ”,“ n ”, and“ o ”), and different DC offsets for integer pixel positions. it can. When using sample-based DC offsets, a total of 16 DC offsets can be coded and transmitted as syntax elements in the video bitstream to the decoder. By applying a sample-based DC offset, motion compensation unit 35 can provide a simple but effective motion segmentation tool.
一例として、ビデオフレームは、静止背景として暮れ行く空を、前景として移動する物体を含んでいることがある。この場合、背景と前景とは、異なる程度の照度変化を有することができ、所与のビデオブロックを識別するピクセルのロケーションによって定義されたロケーション固有のDCオフセット値を使用することによって、動き補償ユニット35は、そのようなロケーション固有のDCオフセット値なしで達成され得るよりも効率的に、前景と背景とにおける異なる程度の照度変化を捕捉することが可能になり得る。 As an example, a video frame may include an object that moves as a foreground through the sky that settles as a static background. In this case, the background and foreground can have different degrees of illumination change, and by using a location specific DC offset value defined by the location of the pixel that identifies a given video block, the motion compensation unit 35 may be able to capture different degrees of illumination change in the foreground and background more efficiently than can be achieved without such location-specific DC offset values.
さらに、コード化ユニットのビデオブロックが、たとえば、双方向予測のために複数の異なる参照フレームを使用するとき、異なる参照フレームに関連する整数およびサブ整数ロケーションごとに異なるDCオフセットを計算し、送信することができる。場合によっては、一部の参照フレームは単一のフレームベースのDCオフセットを備え、他の参照フレームはいくつかのロケーション固有のDCオフセットを有することができる。いくつかの方式は、コーディングされている現在フレームに時間距離的に最も近い参照フレームに対してロケーション固有のDCオフセットのみを使用し、他の参照フレームのすべてに対して単一のフレームベースのDCオフセットを使用することができる。 Further, when the video block of the coding unit uses, for example, multiple different reference frames for bi-directional prediction, it calculates and transmits a different DC offset for each integer and sub-integer location associated with the different reference frames. be able to. In some cases, some reference frames may have a single frame-based DC offset and other reference frames may have several location-specific DC offsets. Some schemes use only a location-specific DC offset for the reference frame that is temporally closest to the current frame being coded, and a single frame-based DC for all of the other reference frames. An offset can be used.
DCオフセットをコーディングするために、単一のフレームベースのDCオフセットを使用するかどうか、またはいくつかのロケーション固有のDCオフセットを使用するかどうかを示すためにフレーム当たり1ビットを使用することができる。DCオフセットが整数精度のみを有する場合、これらのオフセットの値は、符号付き指数ゴロム符号(signed exponential-Golomb code)を使用してコーディングできる。DCオフセットが分数精度を有する場合、整数オフセットの値は、符号付き指数ゴロム符号を使用してコーディングし、非整数オフセットの値は、符号付き指数ゴロム符号によって定義された整数オフセットに対する残差差分を使用してコーディングできる。 One bit per frame can be used to indicate whether to use a single frame-based DC offset or several location-specific DC offsets to code the DC offset . If the DC offset has only integer precision, the values of these offsets can be coded using a signed exponential-Golomb code. If the DC offset has fractional precision, the integer offset value is coded using a signed exponent Golomb code, and the non-integer offset value is the residual difference for the integer offset defined by the signed exponent Golomb code. Can be coded using
デコーダ側において、デコーダは、どんな生成された予測ビデオブロックのピクセルにも適切なDCオフセット値を単純に適用することができる。デコーダによって使用されるDCオフセット値は、各予測ビデオブロックに関連する特定の整数またはサブ整数ピクセルロケーションのシンタックス要素中で定義できる。たとえば、コード化ユニットのヘッダ中のシンタックス要素は、そのコード化ユニットに対する複数のオフセット値の各々を指定するためのフラグまたは値を含むことができる。「オフセット」および「DCオフセット」という用語は、本開示では互換的に使用される。同じそれぞれのピクセルロケーションごとに全体的なオフセットが定義される限り、たとえば、整数ロケーションに対して1つのオフセットが定義され、可能なサブピクセルロケーションごとにいくつかの異なるオフセットが定義される限り、オフセットはDCオフセットと呼ばれる。 On the decoder side, the decoder can simply apply an appropriate DC offset value to the pixels of any generated predicted video block. The DC offset value used by the decoder can be defined in a specific integer or sub-integer pixel location syntax element associated with each predicted video block. For example, a syntax element in the header of a coding unit can include a flag or value for specifying each of a plurality of offset values for that coding unit. The terms “offset” and “DC offset” are used interchangeably in this disclosure. As long as an overall offset is defined for each same pixel location, for example, one offset is defined for integer locations and as many different offsets are defined for each possible sub-pixel location Is called a DC offset.
本開示の技法によれば、オフセットをシングル符号化パスで整数およびサブ整数ピクセル位置に適用することができる。一例では、DCオフセット値をシングルパスで割り当てるための方法は、以下の演算を含むことができる。 According to the techniques of this disclosure, offsets can be applied to integer and sub-integer pixel locations in a single coding pass. In one example, a method for assigning a DC offset value in a single pass may include the following operations.
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によって計算された動きベクトルによって識別される、特定の整数またはサブ整数ピクセルロケーションのオフセット値を予測ブロックに適用することができる。
a. DCDiff [idx], ie, calculate the DC difference between the reference frame “idx” and the current frame b. Set sgn = sign (DCDiff [idx]), but sign () returns +1 or -1 c. If the reference frame has idx> 0, set frmOffset [idx] = min (round (DCDiff [idx]), 1) and return, otherwise
d. Determine numOffsets as min (round (DCDiff [idx]), 8) e. If numOffsets ≧ numOffsetsMin (eg, if numOffsetsMin = 2), then several offsets that are equal to numOffsets and increase in value such as {1, 2, 3, 4, 5, 6, 7, 8} , In order, added to sub-pixel positions {5, 15, 13, 7, 9, 6, 11, 14} f. Otherwise, calculate numOffsets1 as min (round (DCDiff [idx] /0.1), 15) g. If numOffsets1> 0 and numOffsets1 <= thFullPel0, then sub-pixels according to the order {5,15,13,7,9,6,11,14} are offset by several offsets equal to numOffsets1 and the value sgn. Add to position h. Otherwise, if numOffsets1> 0, add 8 offsets with the value sgn to the subpixel position {0, 1, 2, 3, 4, 8, 10, 12}, equal to numOffsets1, and the value is Add some offsets that are sgn to sub-pixel positions according to the order {14,11,6,9,7,13,15,5} In some examples, use the process as outlined above Allows the motion compensation unit 35 to assign offset values to integer and sub-integer pixel locations in a single pass. The motion compensation unit 35 can then apply a specific integer or sub-integer pixel location offset value identified by the motion vector calculated by the motion estimation unit 36 to the prediction block.
いくつかの例では、動き補償ユニット35は、特定のサブ整数ピクセルに割り当てるべきオフセット値を判断するために2つのフレーム間のDC差を計算する。動き補償ユニット35は、現在フレームのブロックと、現在フレームに対する参照フレームのコロケートブロックとの間のDC差に関するヒストグラムの形態の統計を収集することができる。動き補償ユニット35は、最初に、現在フレームのブロックと参照フレームのコロケートブロックとの間のピクセル差の2乗誤差を第1の誤差値として計算することができる。動き補償ユニット35はまた、2つのブロック間の平均DC差を計算し、現在フレームのブロックのピクセル値からその計算されたDC差を減算し、次いで、平均DC差を減算した後の現在フレームのブロックのピクセルと参照フレームのコロケートブロックのピクセルとの間の差の2乗誤差を第2の誤差値として比較することができる。 In some examples, motion compensation unit 35 calculates a DC difference between two frames to determine an offset value to assign to a particular sub-integer pixel. The motion compensation unit 35 can collect statistics in the form of a histogram on the DC difference between the current frame block and the reference frame collocated block relative to the current frame. The motion compensation unit 35 may first calculate the square error of the pixel difference between the current frame block and the reference frame collocated block as a first error value. Motion compensation unit 35 also calculates the average DC difference between the two blocks, subtracts the calculated DC difference from the pixel value of the block of the current frame, and then subtracts the average DC difference of the current frame. The square error of the difference between the pixel of the block and the pixel of the collocated block of the reference frame can be compared as a second error value.
動き補償ユニット35は、たとえば、第1の誤差値が第2の誤差値の2倍よりも大きいかどうかを調べることによって、第1の誤差値または第2の誤差値のうちのどちらがより良いかを判断することができる。動き補償ユニット35は、この比較に基づいて現在フレームのブロックと参照フレームのコロケートブロックとが十分類似しているかどうかを判断することができる。動き補償ユニット35が、2つのブロックが十分類似していると判断すると、動き補償ユニット35は、ブロックベースのDC差のヒストグラムを含んでいるベクトル内に誤差値を累積することができる。 The motion compensation unit 35 determines which of the first error value or the second error value is better, for example, by checking whether the first error value is greater than twice the second error value. Can be judged. Based on this comparison, the motion compensation unit 35 can determine whether the block of the current frame and the collocated block of the reference frame are sufficiently similar. If motion compensation unit 35 determines that the two blocks are sufficiently similar, motion compensation unit 35 may accumulate the error values in a vector that includes a block-based DC difference histogram.
動き補償ユニット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と同じであるが、説明しやすいように以下に再掲する。
これらの例示的な方法をさらに説明するために、noSamples=20であり、ヒストグラムが上記の表4に示す通りであると仮定すると、動き補償ユニット35は、第1の例示的な方法ではDCmin=−2およびDCmax=2であり、第2の例示的な方法ではDCmin=−2およびDCmax=1であり、第3の例示的な方法ではDCmin=−2およびDCmax=4であると判断することができる。 To further illustrate these exemplary methods, assuming noSamples = 20 and the histogram is as shown in Table 4 above, motion compensation unit 35 uses DC min in the first exemplary method. = −2 and DC max = 2, in the second exemplary method, DC min = −2 and DC max = 1, and in the third exemplary method, DC min = −2 and DC max = 4 Can be determined.
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は、計算されたオフセットを上記で提示した順序に従って割り当てることができる。
After calculating DC min and DC max , motion compensation unit 35 may assign a DC offset value to the sub-integer pixels. In one example, the motion compensation unit 35 adds offsets O (1) to O (15) to the
動き補償ユニット35は、DCminおよびDCmaxの計算において使用されるしきい値noSamplesを判断するために、現在フレームと参照フレームとの間のフレームベースのDC差を使用することができる。動き補償ユニット35はまた、画像中のブロックの数に基づき、画像のサイズに従って、しきい値noSamples値を計算することができる。一例では、動き補償ユニット35は、割り当てるべきオフセット値の数は、2つのフレーム間のDC差+0.5に等しいと判断する。 Motion compensation unit 35 can use the frame-based DC difference between the current frame and the reference frame to determine threshold noSamples used in the calculation of DC min and DC max . Motion compensation unit 35 can also calculate a threshold noSamples value according to the size of the image based on the number of blocks in the image. In one example, motion compensation unit 35 determines that the number of offset values to be assigned is equal to the DC difference between two frames +0.5.
いくつかの例では、動き補償ユニット35は、オフセット値の計算された数が計算値DCmaxよりも大きいときはオフセット値の計算された数をDCmaxとして使用すべきか、またはオフセット値の計算された数が計算値DCminよりも小さいときはオフセット値の計算された数をDCminとして使用すべきかを判断することによって、割り当てるDCオフセット値をさらに改善することができる。他の場合、動き補償ユニット35は、DCmaxおよび/またはDCminの最初に計算された値を使用することができる。 In some examples, motion compensation unit 35, when the calculated number of offset values is greater than the calculated value DC max is whether to use the number calculated offset value as DC max, or the calculation of the offset value If the calculated number is smaller than the calculated value DC min , the assigned DC offset value can be further improved by determining whether the calculated number of offset values should be used as DC min . In other cases, motion compensation unit 35 may use the first calculated value of DC max and / or DC min .
動き補償ユニット35は、最小値として1を有し、DCmaxの値とDCminの値との間の差をサブ整数ピクセル位置の数、たとえば、15で除算したものに等しい「roundFact」の値を計算することができ、上記の差は、次に最も高い整数値に丸められる。動き補償ユニット35は、以下を計算することによってDCmaxおよび/またはDCminの値をさらに改善することができる。
以下の擬似コードは、上述したDCmaxおよびDCminを改善するための例示的な方法を表し、ただし、blockDCは、同じく上述した例示的な方法のうちの1つを使用してDCminおよびDCmaxの初期値を計算し、blockDCの後にくる擬似コードは、DCminおよびDCmaxの値を改善する。
図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」において開始するブロックを分析することができる。
FIG. 5 is a conceptual diagram illustrating integer pixel locations with offset values assigned according to the exemplary method described with respect to FIG. In particular, in the example of FIG. 5, it is assumed that the difference between the reference frame and the current frame, round (DCDiff [idx]), is 6 rounded to an integer value. Accordingly, motion compensation unit 35 assigns offset values 1-6 to pixel locations {5, 15, 13, 7, 9, 6}, respectively. Thus, in the example of FIG. 5, the pixels “e”, “f”, “g”, “i”, “m”, and “o” have offset
図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」において開始するブロックを分析することができる。 FIG. 6 is another conceptual diagram illustrating integer pixel locations with offset values assigned according to the exemplary method described with respect to FIG. In particular, in the example of FIG. 6, it is assumed that the difference between the reference frame and the current frame, ie, DCDiff [idx] is 0.7. Thus, assuming that numOffsetMin is equal to 2 according to the example of FIG. 4, DCDiff [idx] is less than numOffsetMin when rounded to an integer. Dividing DCDiff [idx] by 0.1 gives 7 and thus numOffset1 is equal to 7. According to the exemplary method of FIG. 4, several offsets equal to numOffsets1 and of magnitude sgn are added to the pixel location in the order {5,15,13,7,9,6,11,14}. Is done. Here, sgn is equal to sign (DCDiff [idx]), and is 1 in this example. Accordingly, the motion compensation unit 35 has a value of 1 for pixels “e”, “f”, “g”, “i”, “k”, “m”, and “o”, as shown in the example of FIG. Assign an offset. According to the techniques of this disclosure, when motion estimation unit 36 performs a motion search, pixel positions “e”, “f”, “g”, “i”, “k”, “m”, and “o” Pixels “e”, “f”, “g”, “i”, “k” even if the normal motion search algorithm would direct skipping blocks starting at one or more of ”,“ M ”, and“ o ”starting blocks can be analyzed.
図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」において開始するブロックを試みることができる。
FIG. 7 is another conceptual diagram illustrating integer pixel locations with offset values assigned according to the exemplary method described with respect to FIG. In particular, in the example of FIG. 7, it is assumed that the difference between the reference frame and the current frame, ie, DCDiff [idx] is 1.3. Therefore, assuming that numOffsetMin is equal to 2 according to the example of FIG. 4, DCDiff [idx] is smaller than numOffsetMin when rounded to an integer. Dividing DCDiff [idx] by 0.1 gives 13 and thus numOffset1 is equal to 13. According to the exemplary method of FIG. 4, eight offsets of size sgn are added to the pixel location in the order {0, 1, 2, 3, 4, 8, 10, 12}. Here, sgn is equal to sign (DCDiff [idx]), which is 1 in this example, and equal to numOffsets 1-8 (5 in this example), and some offsets of size sgn are pixel locations. {14, 11, 6, 9, 7, 13, 15, 5}. Accordingly, as shown in the example of FIG. 6, the motion compensation unit 35 includes pixels “C3”, “a”, “b”, “c”, “d”, “f”, “g”, “h”, Assign an offset of
図8は、切替え補間フィルタおよびオフセットを使用してシングルパスでビデオデータを符号化するためのビデオエンコーダ20の例示的な動作を示すフローチャートである。図8の例示的な方法は、以前に符号化されたフレームの履歴に基づいて補間フィルタを選択するための1つの例示的な方法を示している。説明のためにビデオエンコーダ20(図2)に関して説明するが、図8に関して説明する方法を他のビデオエンコーダが採用することができることを理解されたい。最初に、ビデオエンコーダ20は、ビデオソース18(図1)などのビデオソースからデジタルビデオを受信する(80)。デジタルビデオは、ビデオソース18がビデオキャプチャデバイスを備えるときは、新たに記録されたビデオを備え、または他の場合には、あらかじめ記録された非符号化デジタルビデオを備えることができる。デジタルビデオは、一般に、各フレームが複数のスライスおよびマクロブロックを備える、複数のフレームのシーケンスを備える。ビデオエンコーダ20は、ビデオシーケンス中のフレームをIフレーム、Pフレーム、またはBフレームとして符号化する。PフレームおよびBフレーム内で、いくつかのマクロブロックはIマクロブロックとして符号化されることがある。
FIG. 8 is a flowchart illustrating an exemplary operation of
ビデオエンコーダ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は、オフセット値に従って参照フレームのピクセル値を変更する。 Motion compensation unit 35 also calculates an offset value for one or more of the reference frame pixels and sub-pixel locations (88). In some examples, the offset value may represent an average pixel value difference between the reference frame and the next frame to be encoded, eg, a B frame or a P frame. Motion compensation unit 35 may calculate and assign an offset value for a pixel in the reference frame using any of the methods described with respect to FIG. 4 or elsewhere in this disclosure. After calculating the offset value, the motion compensation unit 35 changes the pixel value of the reference frame according to the offset value.
次いで、ビデオエンコーダ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と同じとなるが、説明しやすいように以下に再掲する。
その場合、毎回、「仮想」オフセット{−2,−1,0,1,2,3}のうちの1つを参照ブロックに追加した後に、2つのブロックのSADの計算を6回計算することができる。最小のSADを有する動きベクトルを選択することができる。2つ以上の位置に現れるオフセット値(たとえば、サブピクセル位置1とサブピクセル位置11の両方に現れるオフセット「2」)は1回のみ試みることができる。すなわち、動き推定ユニットは、各々が同じ計算されたオフセット値を有している複数のサブピクセルのうちの1つのみを探索することができる。
In that case, each time one of the “virtual” offsets {−2, −1,0,1,2,3} is added to the reference block, the SAD calculation of the two blocks is calculated six times. Can do. The motion vector with the smallest SAD can be selected. An offset value that appears in more than one location (eg, offset “2” that appears in both
動き補償ユニット35は、符号化されているフレーム中の現在ブロックと参照フレームの予測ブロック中との間の差に基づいて、各ブロックの残差値を計算する。ビデオエンコーダ20は、たとえば、DCT、量子化およびエントロピーコーディングを使用して、動きベクトル、残差、および適用可能な補間フィルタの識別子、およびオフセット値を符号化し、このデータをコード化ビットストリームでデコーダに送信する。
Motion compensation unit 35 calculates a residual value for each block based on the difference between the current block in the frame being encoded and the predicted block in the reference frame.
また、動き補償ユニット35は、動き推定のために適用された選択された補間フィルタを使用して計算されたサブピクセルをもつ参照フレームを使用して符号化されたフレームの誤差値を判断する(92)。動き補償ユニット35はまた、動き推定のために各サブピクセル位置に対して使用され得た他の潜在的な補間フィルタの各々についての誤差値を判断する(94)。このようにして、動き補償ユニット35は、様々な残りの補間フィルタに基づいて誤差値を再計算することができる。たとえば、動き補償ユニット35はコスト行列C[F][I]を計算することができる。iがサブピクセル位置に対応し、fがサブピクセル位置iに対応する補間フィルタを指す、各(f,i)について、動き補償ユニット35は、たとえば、図2に関して説明したように、補間フィルタfを使用して計算された値をもつ各サブピクセル位置iについて、フレーム上で累積誤差を計算する。 The motion compensation unit 35 also determines the error value of the frame encoded using the reference frame with sub-pixels calculated using the selected interpolation filter applied for motion estimation ( 92). Motion compensation unit 35 also determines an error value for each of the other potential interpolation filters that may be used for each sub-pixel location for motion estimation (94). In this way, motion compensation unit 35 can recalculate the error value based on the various remaining interpolation filters. For example, the motion compensation unit 35 can calculate a cost matrix C [F] [I]. For each (f, i), where i refers to the interpolation filter corresponding to the sub-pixel position i and f corresponds to the sub-pixel position i, the motion compensation unit 35 may, for example, as described with respect to FIG. For each subpixel position i having a value calculated using, compute the cumulative error on the frame.
次いで、動き補償ユニット35は、補間フィルタのどのセットが最も低い誤差値を生じたかを判断する(96)。たとえば、動き補償ユニット35は、各サブピクセル位置および各未試行のフィルタにわたって反復して、フレームの総誤差を最大量低減する位置とその補間フィルタとを判断することができる。次いで、動き補償ユニット35は、フレームの総誤差を再計算し、反復の最大数が達せられるまで、または総誤差がしきい値量未満減少するまで、フレームの総誤差を低減する位置と対応する補間フィルタとを識別し続けることができる。この方法の一例は、図9に関して説明する。 Motion compensation unit 35 then determines which set of interpolation filters yielded the lowest error value (96). For example, motion compensation unit 35 may iterate over each sub-pixel location and each untrial filter to determine a location that reduces the total frame error by a maximum amount and its interpolation filter. Motion compensation unit 35 then recalculates the total error of the frame and corresponds to a position that reduces the total error of the frame until the maximum number of iterations is reached or until the total error is reduced below a threshold amount. The interpolation filter can continue to be identified. An example of this method is described with respect to FIG.
次いで、動き補償ユニット35は、現在フレームが、ビデオシーケンス、たとえば、ピクチャグループ(GOP)、フレームグループ中の、または完全記録ビデオシーケンス中の、最後のフレームであるかどうかを判断する(98)。そうでない場合(98の「NO」分岐)、動き補償ユニット35は、以前に符号化されたフレームに補間フィルタの選択されたセットを適用して、サブピクセル値を計算し、そのフレームに対する後続フレームを符号化し、後続フレームが双方向符号化フレームであるときは、潜在的に別の参照フレームを符号化する。このプロセスは、補間フィルタが、以前のコーディングユニットまたは一連のコーディングユニットの最も低い誤差を生成することを判断するように、また、現在コーディングユニットの動き推定をサポートするために使用されるように、繰り返し続くことができる。このようにして、現在コーディングユニットの動き推定をサポートするための補間フィルタの選択は、1つまたは複数の以前にコーディングされたユニットについての履歴補間結果に基づく。上記で説明したように、補間フィルタは、より最近のコーディングユニットについての結果に対してより高い重み付けが与えられた累積補間結果に基づいて、選択され得る。 Motion compensation unit 35 then determines whether the current frame is the last frame in a video sequence, eg, a picture group (GOP), a frame group, or a fully recorded video sequence (98). If not (98 “NO” branch), motion compensation unit 35 applies the selected set of interpolation filters to the previously encoded frame to calculate a sub-pixel value and the subsequent frame for that frame. If the subsequent frame is a bidirectional encoded frame, it potentially encodes another reference frame. This process is used to determine that the interpolation filter produces the lowest error of the previous coding unit or series of coding units, and so as to support motion estimation of the current coding unit, Can continue repeatedly. In this way, the selection of an interpolation filter to support motion estimation for the current coding unit is based on historical interpolation results for one or more previously coded units. As explained above, the interpolation filter may be selected based on a cumulative interpolation result that gives a higher weight to the result for the more recent coding unit.
図9は、現在フレームのサブピクセルの補間値を計算するために、以前にコーディングされたフレームについての履歴補間結果に基づいて補間フィルタの最適なセットを識別するための例示的な方法を示すフローチャートである。最初に、動き補償ユニット35が、n個のサブ整数ピクセル位置について0からn−1までの範囲の要素インデックスをもつ履歴決定ベクトルDを受信する(110)。決定ベクトルDの各要素は、対応するサブピクセルの値を計算するために使用される補間フィルタに対応する。 FIG. 9 is a flowchart illustrating an exemplary method for identifying an optimal set of interpolation filters based on historical interpolation results for previously coded frames to calculate sub-pixel interpolation values for the current frame. It is. Initially, motion compensation unit 35 receives a history decision vector D having an element index ranging from 0 to n-1 for n sub-integer pixel positions (110). Each element of the decision vector D corresponds to an interpolation filter that is used to calculate the value of the corresponding subpixel.
次いで、動き補償ユニット35は、コスト行列C[F][I]を計算し、式中で、I中の各iはサブ整数ピクセル位置に対応し、F中の各fは、サブ整数ピクセルiの値を計算するために使用される補間フィルタに対応し、式中、C[f][i]は、補間フィルタfを使用して計算された値をもつ、現在フレーム中の各サブ整数ピクセル位置iの誤差の合計に等しい。したがって、以下の式中、誤差(x,i)は、符号化フレームに対するフレーム中のピクセルxに対するi番目のサブ整数ピクセルに関連する誤差値を指し、式中、各フレームはM個のピクセルを有する。
動き補償ユニット35は、各サブ整数ピクセルロケーションの各補間フィルタの誤差値を計算する。一例では、動き補償ユニット35は、さらに、たとえば、参照フレームのみではなく、複数の履歴フレームについての累積補間誤差結果に基づいて補間フィルタ選択を行うために、現在フレームのコスト行列に先行フレームのコスト行列の分数値を加算することができる。コスト行列を計算した後、動き補償ユニット35は、先行フレームの補間フィルタによって計算されたサブピクセルに対応する値を加算することによって、(1つまたは複数の)履歴フレームの誤差値を計算する(114)。すなわち、動き補償ユニット35は、I中の各iについて、iがサブピクセル位置に対応し、fがiの値を計算するために使用される補間フィルタに対応する、各C[f][i]を累積することができる。この値は、一例では、SADに対応する。 Motion compensation unit 35 calculates an error value for each interpolation filter at each sub-integer pixel location. In one example, motion compensation unit 35 further includes the cost of the previous frame in the cost matrix of the current frame to perform an interpolation filter selection based on, for example, cumulative interpolation error results for multiple historical frames, not just the reference frame. Matrix fractional values can be added. After calculating the cost matrix, motion compensation unit 35 calculates the error value of the historical frame (s) by adding the values corresponding to the subpixels calculated by the interpolation filter of the previous frame ( 114). That is, motion compensation unit 35 for each i in I, each C [f] [i] where i corresponds to the subpixel position and f corresponds to the interpolation filter used to calculate the value of i. ] Can be accumulated. In one example, this value corresponds to SAD.
次いで、動き補償ユニット35は、最もSAD値を低減する位置iとiの補間フィルタfとを判断する(116)。たとえば、動き補償ユニット35は、参照フレームのサブピクセルを計算するために使用されなかったサブピクセルと補間フィルタとの組合せについて、コスト行列中の各値にわたって反復し、これらの値を、参照フレームのために使用されたサブピクセルと補間フィルタとの組合せについての対応する値と比較することができる。未使用のサブピクセル位置と補間フィルタとの組合せと、対応するサブピクセル位置と、使用された補間フィルタとの間の最大の差は、この組合せである。この差が最小しきい値よりも大きいとき(118の「YES」分岐)、動き補償ユニット35は、決定ベクトルにおいて、そのサブピクセル位置の使用された補間フィルタを、その位置における新たに判断された補間フィルタと交換し(120)、この新しい組合せを使用して誤差(たとえば、SAD)を再計算する(122)。動き補償ユニット35は、反復の最大数が達せられるまで(124の「YES」分岐)、または上記で説明した差が所定のしきい値よりも小さくなるまで(118の「NO」分岐)、このプロセスを反復することができる。次いで、動き補償ユニット35は、更新された決定ベクトルを出力する(126)。次いで、更新された決定ベクトルを使用して、コーディングすべき現在ユニットの補間フィルタのセットを選択することができる。 Next, the motion compensation unit 35 determines the position i that most reduces the SAD value and the interpolation filter f of i (116). For example, motion compensation unit 35 iterates over each value in the cost matrix for a combination of subpixels and interpolation filters that were not used to calculate the subpixels of the reference frame, and these values are Can be compared with the corresponding values for the combination of sub-pixel and interpolation filter used. The largest difference between the combination of unused subpixel positions and interpolation filters, the corresponding subpixel position and the interpolation filter used is this combination. When this difference is greater than the minimum threshold (“YES” branch of 118), motion compensation unit 35 has newly determined the used interpolation filter for that subpixel position in the decision vector at that position. Replace with interpolation filter (120) and use this new combination to recalculate error (eg, SAD) (122). The motion compensation unit 35 does this until the maximum number of iterations is reached (124 “YES” branch) or until the difference described above is less than a predetermined threshold (118 “NO” branch). The process can be repeated. The motion compensation unit 35 then outputs the updated decision vector (126). The updated decision vector can then be used to select a set of interpolation filters for the current unit to be coded.
以下の擬似コードは、本開示のDCオフセット技法を実装するための例を与える。その擬似コードでは、「blockDC1」は、「list」によって識別された参照フレームに基づいて、「input」によって識別された16×16ピクセルブロックについてのDCオフセット値DCminおよびDCmaxを計算するためのプロシージャである。「noSamples」は、DCminおよびDCmaxを計算するために利用可能であるプロシージャのためのサンプル数を定義する整数値である。「list」は、参照フレームを識別する整数値である(ITU H.264用語に従って「list」と呼ぶ)。一般に、BlockDC1およびBlockDC2は、参照フレームの視感度と符号化されているフレーム(または現在フレーム)の視感度との間の差を推定する関数である。推定されたオフセットは、参照フレームに適用することができ、動き補償予測を改善するために使用できる。 The following pseudo code provides an example for implementing the DC offset technique of this disclosure. In that pseudo code, “blockDC1” is a procedure for calculating the DC offset values DCmin and DCmax for the 16 × 16 pixel block identified by “input” based on the reference frame identified by “list”. is there. “NoSamples” is an integer value that defines the number of samples for the procedure that are available to calculate DCmin and DCmax. “List” is an integer value that identifies a reference frame (referred to as “list” according to ITU H.264 terminology). In general, BlockDC1 and BlockDC2 are functions that estimate the difference between the visibility of the reference frame and the visibility of the frame being encoded (or the current frame). The estimated offset can be applied to the reference frame and can be used to improve motion compensated prediction.
1つの手法は、参照フレームの平均視感度を考慮し、それを現在フレームの平均視感度と比較することであろう。このソリューションは、平均視感度が局所的な変動を表さないという欠点を有する。極めて異なる平均視感度をもつ2つのフレームが、動き補償された後、ほとんど同じマクロブロックになる場合が考えられる。これは、たとえば、明るい物体が遮られていない場合である。第2の可能性は、動き補償ブロック間のDC差を推定するために動きベクトルを使用する。この方法は正確であるが、動きベクトルが利用可能でなければならないという欠点を有することがあり、したがって、現在フレームが複数回符号化されなければならないこと(少なくとも、動きベクトルを推定するための1回と、DCオフセットを予測に適用するための1回があり、新たに計算されたオフセットを考慮に入れるために再計算する必要がある動き情報に影響を及ぼすことが知られている動作)が暗示される。 One approach would be to consider the average visibility of the reference frame and compare it to the average visibility of the current frame. This solution has the disadvantage that the average visibility does not represent local variations. It is conceivable that two frames having extremely different average visibility become almost the same macroblock after motion compensation. This is the case, for example, when a bright object is not obstructed. The second possibility uses motion vectors to estimate the DC difference between motion compensation blocks. While this method is accurate, it may have the disadvantage that motion vectors must be available, so that the current frame must be encoded multiple times (at least one for estimating motion vectors). And one time to apply the DC offset to the prediction, an operation that is known to affect motion information that needs to be recalculated to take into account the newly calculated offset). Implied.
ブロックベースのDC差の計算により、動きベクトルを利用することなしに、上記で説明した問題などを克服し得る。ブロックベースのDC差の計算は、何らかのサイズ(たとえば、16×16ピクセル)のコロケートブロックの間のDC差に関する統計値の収集に基づき得る。その統計値はヒストグラムの形態で収集され得る。以下で提示する擬似コードでは、BlockDC1およびBlockDC2は、オフセット値の範囲を定義するためのDCminおよびDCmaxの値を設定するための技法を表す。参照フレーム中のブロックと現在フレーム中のブロックとを比較し、ピクセルの各ブロックについて、以下の2つの量を計算する。 The block-based DC difference calculation can overcome the above-described problems and the like without using a motion vector. The calculation of block-based DC differences may be based on collecting statistics on DC differences between collocated blocks of some size (eg, 16 × 16 pixels). The statistics can be collected in the form of a histogram. In the pseudo code presented below, BlockDC1 and BlockDC2 represent techniques for setting DCmin and DCmax values to define a range of offset values. Compare the block in the reference frame with the block in the current frame and calculate the following two quantities for each block of pixels:
1)ピクセル差の2乗誤差(関数BlockDC1またはBlockDC2におけるerr0)
2)ブロックの平均DCが各ピクセルの値に減算された後のピクセル差の2乗誤差(関数BlockDC1またはBlockDC2におけるerr1)
ブロックが十分類似しているかどうか(すなわち、コロケートブロック間の差が大部分はDC差によって生じているかどうか)の推定は、上記の量1)と量2)との比較に基づき得る。たとえば、1)における誤差(err0)が、2)における誤差(err1)の2倍よりも大きい場合は、それらのブロックが十分類似しておらず、その差が大部分はDC差によって生じていないと判断することができる。コロケートブロックが十分類似している場合は、それらの統計値を累積して、ブロックベースのDC差のヒストグラムを含んでいるベクトルにすることができる。場合によっては、DC差は、それらのDC差を整数値に丸めることによって量子化できる。
1) Square error of pixel difference (err0 in the function BlockDC1 or BlockDC2)
2) The square error of the pixel difference after the average DC of the block is subtracted to the value of each pixel (err1 in the function BlockDC1 or BlockDC2)
An estimate of whether the blocks are sufficiently similar (ie, whether the differences between collocated blocks are mostly caused by DC differences) may be based on a comparison of the above quantities 1) and 2). For example, if the error (err0) in 1) is greater than twice the error (err1) in 2), the blocks are not sufficiently similar and the difference is largely not caused by a DC difference It can be judged. If the collocated blocks are sufficiently similar, their statistics can be accumulated into a vector containing a block-based DC difference histogram. In some cases, the DC differences can be quantized by rounding those DC differences to integer values.
ヒストグラムビンを検査することによって、DC差の範囲を導出し、DCminおよびDCmaxを計算することが可能である。BlockDC1は、noSamples個よりも多くのサンプルを含んでいる最左および最右ヒストグラムビンに対応するDC値を判断することによって、DCminおよびDCmax値を計算する。BlockDC2は、noSamples個よりも多くのサンプルを有する正および負のDC値に対応するビンの数を計数することによって、DCminおよびDCmax値を計算する。別の手法は、BlockDC2の変形体として、noSamples個よりも多くのサンプルを有する負および正のDC値に対応するビンの数を計数するが、テストが初めて不合格になったときに計数を止めることがあり得る。以下の擬似コードでは、setSubpelOffset1およびsetSubpelOffset2は、関数BlockDC1およびBlockDC2のうちの対応する関数の実行中に実行された計算に従ってフレームのサブ整数ピクセルのオフセット値(たとえば、DCmin、DCmax、および/またはDCminとDCmaxとの間の値)を設定する関数である。 By examining the histogram bins, it is possible to derive a range of DC differences and calculate DCmin and DCmax. BlockDC1 calculates DCmin and DCmax values by determining the DC values corresponding to the leftmost and rightmost histogram bins that contain more than noSamples samples. BlockDC2 calculates the DCmin and DCmax values by counting the number of bins corresponding to positive and negative DC values having more than noSamples samples. Another approach, as a variant of BlockDC2, counts the number of bins corresponding to negative and positive DC values with more samples than noSamples, but stops counting when the test fails for the first time It can happen. In the following pseudocode, setSubpelOffset1 and setSubpelOffset2 are the sub-integer pixel offset values (eg, DCmin, DCmax, and / or DCmin) of the frame according to the calculations performed during the execution of the corresponding function of BlockDC1 and BlockDC2. A value between DCmax).
「BlockDC1」プロシージャは、以下の擬似コードによって示されるように、「input」によって識別された16×16ピクセルブロックについてのDCminおよびDCmaxの値を設定するためのプロシージャの一例である。
「setSubpelOffset1」は、DCminとDCmaxとの間の範囲において「SubpelOffset[16]」によって識別されたブロックのDCオフセット値を設定するためのプロシージャである。「list」は、参照フレームを識別する整数値である。「imgOffset」は、0よりも大きいインデックスを有する参照フレーム上で使用されるフレームオフセットを識別する。この例では、setSubpelOffset1がblockDCをコールし、それにより、上記で提示したblockDC1のプロシージャを呼び出すことができる。
「BlockDC2」プロシージャは、以下の擬似コードによって示されるように、「input」によって識別された16×16ピクセルブロックについてのDCminおよびDCmaxの値を設定するための別のプロシージャの一例である。DCminおよびDCmaxは、BlockDC2によって計算された値へのポインタであり、別のプロシージャは、それを、ブロックのDC値をDCminとDCmaxとの間に設定するための範囲として使用し得る。「noSamples」は、DCオフセット値を計算するために利用可能であるプロシージャのためのサンプル数を定義する整数値である。
「setSubpelOffset2」は、DCminとDCmaxとの間の範囲において「input」によって識別されたブロックのサブ整数ピクセル位置のオフセット値を設定するプロシージャである。この例では、setSubpelOffset1がblockDCをコールし、それにより、上記で提示したblockDC1またはblockDC2のいずれかのプロシージャを呼び出すことができる。
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(すなわち、チップセット)を含む、多種多様なデバイスまたは装置において実現できる。機能的態様を強調するために与えられた任意の構成要素、モジュールまたはユニットについて説明したが、異なるハードウェアユニットによる実現を必ずしも必要とするわけではない。 The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (ie, a chip set). Although any given component, module or unit has been described to emphasize functional aspects, implementation with different hardware units is not necessarily required.
本開示で説明する技法は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装できる。たとえば、説明する技法の様々な態様は、1つまたは複数のマイクロプロセッサを含む1つまたは複数のプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積または個別論理回路、ならびにそのような構成要素の任意の組合せ内に実装できる。「プロセッサ」または「処理回路」という用語は、一般に、上記の論理回路のいずれかを、単独で、または他の論理回路と組み合わせて指し、あるいは他の等価な回路を指すことがある。 The techniques described in this disclosure may be implemented, at least in part, in hardware, software, firmware, or any combination thereof. For example, various aspects of the described techniques include one or more processors including one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs). , Or other equivalent integrated or discrete logic circuits, as well as any combination of such components. The terms “processor” or “processing circuit” may generally refer to any of the above logic circuits, alone or in combination with other logic circuits, or other equivalent circuits.
そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示で説明する様々な動作および機能をサポートするために、同じデバイス内にまたは別々のデバイス内に実装できる。さらに、説明したユニット、モジュールまたは構成要素のいずれかを、一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装することができる。モジュールまたはユニットとしての様々な機能の図は、様々な機能的態様を強調するものであり、そのようなモジュールまたはユニットが別々のハードウェアまたはソフトウェア構成要素によって実現されなければならないことを必ずしも暗示するわけではない。そうではなく、1つまたは複数のモジュールまたはユニットに関連する機能は、別々のハードウェアまたはソフトウェア構成要素によって実行するか、あるいは共通または別々のハードウェアまたはソフトウェア構成要素内に組み込むことができる。 Such hardware, software, and firmware can be implemented in the same device or in separate devices to support the various operations and functions described in this disclosure. Further, any of the units, modules or components described can be implemented together or separately as separate but interoperable logic devices. Diagrams of various functions as modules or units highlight various functional aspects and necessarily imply that such modules or units must be implemented by separate hardware or software components. Do not mean. Rather, functionality associated with one or more modules or units may be performed by separate hardware or software components, or incorporated within common or separate hardware or software components.
また、本明細書で説明する技法は、命令を含んでいるコンピュータ可読記憶媒体などのコンピュータ可読媒体において実施または符号化することができる。コンピュータ可読媒体中に埋め込まれたか、または符号化された命令は、たとえば、その命令が実行されたとき、プログラマブルプロセッサまたは他のプロセッサに方法を実行させることができる。コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、ハードディスク、CD−ROM、フロッピー(登録商標)ディスク、カセット、磁気媒体、光学媒体、または他のコンピュータ可読媒体を含むことができる。 Also, the techniques described herein may be implemented or encoded on a computer readable medium, such as a computer readable storage medium that includes instructions. An instruction embedded or encoded in a computer readable medium may cause a programmable processor or other processor to perform the method, for example, when the instruction is executed. Computer readable storage media include random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), It may include flash memory, hard disk, CD-ROM, floppy disk, cassette, magnetic media, optical media, or other computer readable media.
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
[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]に記載の記憶媒体。
Various examples have been described. These and other examples are within the scope of the following claims.
The invention described in the scope of the claims at the beginning of the present application is added below.
[1] interpolating sub-integer pixels of a reference video unit using a selected interpolation filter before performing motion estimation of the current video unit;
Applying an offset to at least some of the sub-integer pixels of the reference video unit before performing motion estimation of the current video unit;
Encoding a block of the current video unit using motion estimation based on the reference video unit;
A video encoding method comprising:
[2] The method of [1], wherein encoding the block comprises performing motion estimation of the block only once such that encoding is performed in a single pass.
[3] The method of [1], further comprising selecting the set of interpolation filters based on historical interpolation results for one or more previously encoded video units.
[4] selecting the interpolation filter;
Determining a first interpolation error value of a first set of interpolation filters used to encode a previously encoded video unit;
Determining a second interpolation error value of a second set of interpolation filters;
Comparing the first error value and the second error value;
Selecting the interpolation filter based on the comparison;
The method according to [3], comprising:
[5] selecting the interpolation filter;
Accumulating interpolation error values of different interpolation filters used to encode a plurality of previously encoded video units;
Selecting the interpolation filter based on the accumulated interpolation error value;
The method according to [3], comprising:
[6] The method according to [3], wherein the interpolation filter corresponds to each sub-integer pixel, and the interpolation filter includes different interpolation filters for at least some of the sub-integer pixels.
[7] The method of [3], further comprising encoding a syntax element indicating the selected interpolation filter and the offset of the encoded block.
[8] encoding the video block;
Performing motion estimation to identify a predictive block in the reference video unit relative to the block in the current video unit;
Determining a motion vector that identifies the prediction block in the reference video unit;
Determining a residual error between the block in the current video unit and the prediction block in the reference video unit;
The method according to [1], comprising:
[9] Performing motion estimation
Executing a motion search algorithm specifying that the evaluation of blocks associated with sub-integer pixels to which an offset is applied is skipped;
Forcing the evaluation of the block relative to the sub-integer pixels to which the offset is applied;
The method according to [8], comprising:
[10] The method of [1], wherein each of the video units comprises one of a video frame or a video slice.
[11] interpolating sub-integer pixels of the reference video unit using the selected interpolation filter before performing motion estimation of the current video unit;
Applying an offset to at least some of the sub-integer pixels of the reference video unit before performing motion estimation of the current video unit;
Encoding a block of the current video unit using motion estimation based on the reference video unit;
A video encoding device comprising a video encoder configured to perform:
[12] The apparatus of [11], wherein the video encoder is configured to perform motion estimation of the block only once such that encoding is performed in a single pass.
[13] The apparatus of [11], wherein the video encoder is configured to select the set of interpolation filters based on historical interpolation results for one or more previously encoded video units. .
[14] The video encoder
Determining a first interpolation error value of a first set of interpolation filters used to encode a previously encoded video unit;
Determining a second interpolation error value of a second set of interpolation filters;
Comparing the first error value and the second error value;
Selecting the interpolation filter based on the comparison;
The apparatus according to [13], which is configured to perform:
[15] The video encoder is
Accumulating interpolation error values of different interpolation filters used to encode a plurality of previously encoded video units;
Selecting the interpolation filter based on the accumulated interpolation error value;
The apparatus according to [13], which is configured to perform:
[16] The apparatus of [13], wherein the interpolation filter corresponds to a respective sub-integer pixel, and the interpolation filter includes a different interpolation filter for at least some of the sub-integer pixels.
[17] The apparatus of [13], wherein the video encoder is configured to encode a syntax element indicating the selected interpolation filter and the offset of the encoded block.
[18] The video encoder is
Performing motion estimation to identify a predictive block in the reference video unit relative to the block in the current video unit;
Determining a motion vector that identifies the prediction block in the reference video unit;
Determining a residual error between the block in the current video unit and the prediction block in the reference video unit;
The apparatus according to [11], configured to perform:
[19] The video encoder
Executing a motion search algorithm specifying that the evaluation of blocks associated with sub-integer pixels to which an offset is applied is skipped;
Forcing the evaluation of the block relative to the sub-integer pixels to which the offset is applied;
The apparatus of [18], configured to perform:
[20] The apparatus of [11], wherein each of the video units comprises one of a video frame or a video slice.
[21] The apparatus of [11], wherein the video encoder forms part of a wireless communication device.
[22] The apparatus according to [11], wherein the video encoder includes an integrated circuit device.
[23] means for interpolating sub-integer pixels of the reference video unit using the selected interpolation filter before performing motion estimation of the current video unit;
Means for applying an offset to at least some of the sub-integer pixels of the reference video unit before performing motion estimation of the current video unit;
Means for encoding a block of the current video unit using motion estimation based on the reference video unit;
A video encoding device comprising:
[24] The apparatus of [23], wherein the means for encoding the block comprises means for performing motion estimation of the block only once such that encoding is performed in a single pass. .
[25] The apparatus of [23], further comprising means for selecting the set of interpolation filters based on historical interpolation results for one or more previously encoded video units.
[26] The means for selecting the interpolation filter comprises:
Means for determining a first interpolation error value of a first set of interpolation filters used to encode a previously encoded video unit;
Means for determining a second interpolation error value of the second set of interpolation filters;
Means for comparing the first error value and the second error value;
Means for selecting the interpolation filter based on the comparison;
The apparatus according to [25], comprising:
[27] The means for selecting the interpolation filter comprises:
Means for accumulating interpolation error values of different interpolation filters used to encode a plurality of previously encoded video units;
Means for selecting the interpolation filter based on the accumulated interpolation error value;
The apparatus according to [25], comprising:
[28] The apparatus of [25], wherein the interpolation filter corresponds to a respective sub-integer pixel, and the interpolation filter includes a different interpolation filter for at least some of the sub-integer pixels.
[29] The apparatus of [25], further comprising means for encoding a syntax element indicating the selected interpolation filter and the offset of the encoded block.
[30] The means for encoding the video block comprises:
Means for performing motion estimation to identify a predictive block in the reference video unit relative to the block in the current video unit;
Means for determining a motion vector identifying the prediction block in the reference video unit;
Means for determining a residual error between the block in the current video unit and the prediction block in the reference video unit;
The apparatus according to [23], comprising:
[31] The means for performing motion estimation comprises:
Means for executing a motion search algorithm specifying to skip evaluation of blocks associated with sub-integer pixels to which an offset is applied;
Means for forcing an evaluation of the block associated with sub-integer pixels to which an offset has been applied;
The apparatus according to [30], comprising:
[32] The apparatus of [23], wherein each of the video units comprises one of a video frame or a video slice.
[33] interpolating sub-integer pixels of a reference video unit using a selected interpolation filter before performing motion estimation of the current video unit;
Applying an offset to at least some of the sub-integer pixels of the reference video unit before performing motion estimation of the current video unit;
Encoding a block of the current video unit using motion estimation based on the reference video unit;
A computer-readable storage medium encoded with instructions for causing a processor to perform.
[34] The storage medium of [33], wherein encoding the block comprises performing motion estimation of the block only once such that encoding is performed in a single pass.
[35] The apparatus according to [33], further comprising instructions for causing the processor to select the set of interpolation filters based on historical interpolation results for one or more previously encoded video units. The storage medium described.
[36] determining a first interpolation error value of a first set of interpolation filters used to encode a previously encoded video unit;
Determining a second interpolation error value of a second set of interpolation filters;
Comparing the first error value and the second error value;
Selecting the interpolation filter based on the comparison;
The storage medium according to [35], further comprising an instruction for causing the processor to perform the following.
[37] accumulating interpolation error values of different interpolation filters used to encode a plurality of previously encoded video units;
Selecting the interpolation filter based on the accumulated interpolation error value;
The storage medium according to [35], further comprising an instruction for causing the processor to perform the following.
[38] The storage medium of [35], wherein the interpolation filter corresponds to a respective sub-integer pixel, and the interpolation filter includes a different interpolation filter for at least some of the sub-integer pixels.
[39] The storage of [35], further comprising instructions for causing the processor to encode a syntax element indicating the selected interpolation filter and the offset of the encoded block. Medium.
[40] performing motion estimation to identify a predictive block in the reference video unit relative to the block in the current video unit;
Determining a motion vector that identifies the prediction block in the reference video unit;
Determining a residual error between the block in the current video unit and the prediction block in the reference video unit;
The storage medium according to [35], further comprising an instruction for causing the processor to perform the following.
[41] performing a motion search algorithm that specifies to skip evaluation of blocks associated with sub-integer pixels to which an offset has been applied;
Forcing the evaluation of the block relative to the sub-integer pixels to which the offset is applied;
The storage medium according to [40], further comprising: an instruction for causing the processor to execute.
[42] The storage medium of [33], wherein each of the video units comprises one of a video frame or a video slice.
Claims (16)
補間フィルタの第2のセットの第2の補間誤差値を判断することと、
前記第1の補間誤差値と前記第2の補間誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと、
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
を備え、
前記ブロックを符号化することは、
動き推定の前に選択された補間フィルタおよびオフセットに基づいて動きベクトルを生成するためにブロック当たり1つの動きベクトルを計算すること、および
符号化がシングルパスで実行されるように前記ブロックの動き推定を1回のみ実行すること
を備える、ビデオ符号化方法。 Determining a first interpolation error value of a first set of interpolation filters used to encode a previously encoded video unit;
Determining a second interpolation error value of a second set of interpolation filters;
Comparing the first interpolation error value and the second interpolation error value;
Selecting the interpolation filter based on the comparison;
Interpolating the sub-integer pixels of the reference video unit using a selected interpolation filter before performing motion estimation of the current video unit;
Applying an offset to at least some of the sub-integer pixels of the reference video unit before performing motion estimation of the current video unit;
Encoding a block of the current video unit using motion estimation based on the reference video unit;
Encoding the block includes
Calculating one motion vector per block to generate a motion vector based on an interpolation filter and offset selected prior to motion estimation, and motion estimation of the block such that encoding is performed in a single pass A video encoding method comprising: performing the method only once.
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
を備える、請求項1に記載の方法。 Encoding the video block;
Performing motion estimation to identify a predictive block in the reference video unit relative to the block in the current video unit;
Determining a motion vector that identifies the prediction block in the reference video unit;
The method of claim 1, comprising determining a residual error between the block in the current video unit and the prediction block in the reference video unit.
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
を備える、請求項2に記載の方法。 Performing motion estimation is
Executing a motion search algorithm specifying that the evaluation of blocks associated with sub-integer pixels to which an offset is applied is skipped;
3. Forcing the evaluation of the block associated with sub-integer pixels to which an offset has been applied.
補間フィルタの第2のセットの第2の補間誤差値を判断することと、
前記第1の補間誤差値と前記第2の補間誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと、
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
を行うように構成されたビデオエンコーダを備え、
前記ブロックを符号化することを行うように構成された前記ビデオエンコーダが、
動き推定の前に選択された補間フィルタおよびオフセットに基づいて動きベクトルを生成するためにブロック当たり1つの動きベクトルを計算すること、および
符号化がシングルパスで実行されるように前記ブロックの動き推定を1回のみ実行すること
を行うように構成された、ビデオ符号化装置。 Determining a first interpolation error value of a first set of interpolation filters used to encode a previously encoded video unit;
Determining a second interpolation error value of a second set of interpolation filters;
Comparing the first interpolation error value and the second interpolation error value;
Selecting the interpolation filter based on the comparison;
Interpolating the sub-integer pixels of the reference video unit using a selected interpolation filter before performing motion estimation of the current video unit;
Applying an offset to at least some of the sub-integer pixels of the reference video unit before performing motion estimation of the current video unit;
A video encoder configured to encode a block of the current video unit using motion estimation based on the reference video unit;
The video encoder configured to perform encoding of the block;
Calculating one motion vector per block to generate a motion vector based on an interpolation filter and offset selected prior to motion estimation, and motion estimation of the block such that encoding is performed in a single pass The video encoding device is configured to perform only once.
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行することと、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断することと、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断することと
を行うように構成された、請求項5に記載の装置。 The video encoder is
Performing motion estimation to identify a predictive block in the reference video unit relative to the block in the current video unit;
Determining a motion vector that identifies the prediction block in the reference video unit;
6. The apparatus of claim 5, wherein the apparatus is configured to determine a residual error between the block in the current video unit and the prediction block in the reference video unit.
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行することと、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制することと
を行うように構成された、請求項6に記載の装置。 The video encoder is
Executing a motion search algorithm specifying that the evaluation of blocks associated with sub-integer pixels to which an offset is applied is skipped;
7. The apparatus of claim 6, wherein the apparatus is configured to enforce evaluation of the block associated with sub-integer pixels to which an offset is applied.
補間フィルタの第2のセットの第2の補間誤差値を判断するための手段と、
前記第1の補間誤差値と前記第2の補間誤差値を比較するための手段と、
前記比較に基づいて前記補間フィルタを選択するための手段と、
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間するための手段と、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用するための手段と、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化するための手段と
を備え、
前記ブロックを符号化するための前記手段は、
動き推定の前に選択された補間フィルタおよびオフセットに基づいて動きベクトルを生成するためにブロック当たり1つの動きベクトルを計算する手段、および
符号化がシングルパスで実行されるように前記ブロックの動き推定を1回のみ実行するための手段
を備える、ビデオ符号化装置。 Means for determining a first interpolation error value of a first set of interpolation filters used to encode a previously encoded video unit;
Means for determining a second interpolation error value of the second set of interpolation filters;
Means for comparing the first interpolation error value and the second interpolation error value;
Means for selecting the interpolation filter based on the comparison;
Means for interpolating the sub-integer pixels of the reference video unit using the selected interpolation filter before performing motion estimation of the current video unit;
Means for applying an offset to at least some of the sub-integer pixels of the reference video unit before performing motion estimation of the current video unit;
Means for encoding a block of the current video unit using motion estimation based on the reference video unit;
The means for encoding the block comprises:
Means for calculating one motion vector per block to generate a motion vector based on an interpolation filter and offset selected prior to motion estimation, and motion estimation of said block so that encoding is performed in a single pass A video encoding device comprising: means for executing only once.
前記現在ビデオユニット中の前記ブロックに対する前記参照ビデオユニット中の予測ブロックを識別するために動き推定を実行するための手段と、
前記参照ビデオユニット中の前記予測ブロックを識別する動きベクトルを判断するための手段と、
前記現在ビデオユニット中の前記ブロックと前記参照ビデオユニット中の前記予測ブロックとの間の残余誤差を判断するための手段と
を備える、請求項11に記載の装置。 The means for encoding the video block comprises:
Means for performing motion estimation to identify a predictive block in the reference video unit relative to the block in the current video unit;
Means for determining a motion vector identifying the prediction block in the reference video unit;
The apparatus of claim 11, comprising means for determining a residual error between the block in the current video unit and the prediction block in the reference video unit.
オフセットが適用されたサブ整数ピクセルに関連するブロックの評価をスキップすることを指定する動き探索アルゴリズムを実行するための手段と、
オフセットが適用されたサブ整数ピクセルに関連する前記ブロックの評価を強制するための手段と
を備える、請求項12に記載の装置。 Said means for performing motion estimation comprises:
Means for executing a motion search algorithm specifying to skip evaluation of blocks associated with sub-integer pixels to which an offset is applied;
13. The apparatus of claim 12, comprising: means for forcing an evaluation of the block associated with sub-integer pixels to which an offset has been applied.
補間フィルタの第2のセットの第2の補間誤差値を判断することと、
前記第1の補間誤差値と前記第2の補間誤差値を比較することと、
前記比較に基づいて前記補間フィルタを選択することと、
現在ビデオユニットの動き推定を実行する前に、選択された補間フィルタを使用して参照ビデオユニットのサブ整数ピクセルを補間することと、
前記現在ビデオユニットの動き推定を実行する前に、前記参照ビデオユニットの前記サブ整数ピクセルのうちの少なくともいくつかにオフセットを適用することと、
前記参照ビデオユニットに基づく動き推定を使用して前記現在ビデオユニットのブロックを符号化することと
をプロセッサに行わせるための命令で符号化され、
前記ブロックを符号化することは、
動き推定の前に選択された補間フィルタおよびオフセットに基づいて動きベクトルを生成するためにブロック当たり1つの動きベクトルを計算すること、および
符号化がシングルパスで実行されるように前記ブロックの動き推定を1回のみ実行すること
を備える、コンピュータ可読記憶媒体。 Determining a first interpolation error value of a first set of interpolation filters used to encode a previously encoded video unit;
Determining a second interpolation error value of a second set of interpolation filters;
Comparing the first interpolation error value and the second interpolation error value;
Selecting the interpolation filter based on the comparison;
Interpolating the sub-integer pixels of the reference video unit using a selected interpolation filter before performing motion estimation of the current video unit;
Applying an offset to at least some of the sub-integer pixels of the reference video unit before performing motion estimation of the current video unit;
Encoded with instructions for causing a processor to encode a block of the current video unit using motion estimation based on the reference video unit;
Encoding the block includes
Calculating one motion vector per block to generate a motion vector based on an interpolation filter and offset selected prior to motion estimation, and motion estimation of the block such that encoding is performed in a single pass A computer-readable storage medium comprising: executing the program only once.
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 (en) | 2008-10-03 | 2013-09-24 | Digital video coding with interpolation filters and offsets |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012504904A JP2012504904A (en) | 2012-02-23 |
JP5547198B2 true JP5547198B2 (en) | 2014-07-09 |
Family
ID=41199822
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011530075A Expired - Fee Related JP5547198B2 (en) | 2008-10-03 | 2009-05-08 | Digital video coding using interpolation filters and offsets |
JP2013197616A Pending JP2014042273A (en) | 2008-10-03 | 2013-09-24 | Digital video coding with interpolation filters and offsets |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013197616A Pending JP2014042273A (en) | 2008-10-03 | 2013-09-24 | Digital video coding with interpolation filters and offsets |
Country Status (8)
Country | Link |
---|---|
US (1) | US9078007B2 (en) |
EP (1) | EP2345254A1 (en) |
JP (2) | JP5547198B2 (en) |
KR (2) | KR101437719B1 (en) |
CN (1) | CN102172022B (en) |
BR (1) | BRPI0920730A2 (en) |
TW (1) | TW201016019A (en) |
WO (1) | WO2010039288A1 (en) |
Families Citing this family (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010050089A1 (en) * | 2008-10-29 | 2010-05-06 | パナソニック株式会社 | Encoding method and encoding device for compression encoding of moving images |
WO2011078002A1 (en) * | 2009-12-22 | 2011-06-30 | ソニー株式会社 | Image processing device, image processing method, and program |
WO2011086672A1 (en) * | 2010-01-13 | 2011-07-21 | 株式会社 東芝 | Moving image coding device and decoding device |
WO2011126309A2 (en) * | 2010-04-06 | 2011-10-13 | 삼성전자 주식회사 | Method and apparatus for video encoding and method and apparatus for video decoding |
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 |
US9154807B2 (en) * | 2010-06-25 | 2015-10-06 | Qualcomm Incorporated | Inclusion of switched interpolation filter coefficients in a compressed bit-stream |
MY182191A (en) * | 2010-07-09 | 2021-01-18 | 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 |
PL2630797T3 (en) | 2010-10-20 | 2019-11-29 | 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 |
US8761245B2 (en) * | 2010-12-21 | 2014-06-24 | Intel Corporation | Content adaptive motion compensation filtering for high efficiency video coding |
US8842723B2 (en) * | 2011-01-03 | 2014-09-23 | Apple Inc. | Video coding system using implied reference frames |
DK4099700T3 (en) | 2011-01-07 | 2025-01-20 | Nokia Technologies Oy | MOTION PREDICTION IN VIDEO CODING |
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 |
US20120230407A1 (en) | 2011-03-11 | 2012-09-13 | General Instrument Corporation | Interpolation Filter Selection Using Prediction Index |
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 |
CN103765899B (en) | 2011-06-15 | 2018-03-06 | 韩国电子通信研究院 | For coding and decoding the method for telescopic video and using its equipment |
EP2724534A2 (en) | 2011-06-24 | 2014-04-30 | Motorola Mobility LLC | Selection of phase offsets for interpolation filters for motion compensation |
MX338670B (en) | 2011-06-28 | 2016-04-27 | Samsung Electronics Co Ltd | VIDEO CODING METHOD USING DISPLACEMENT SETTINGS ACCORDING TO PIXEL CLASSIFICATION AND APPLIANCE FOR IT, VIDEO DECODING METHOD AND APPLIANCE FOR IT. |
EP2727358A1 (en) * | 2011-07-01 | 2014-05-07 | Motorola Mobility LLC | Joint sub-pixel interpolation filter for temporal prediction |
US9055304B2 (en) * | 2011-07-01 | 2015-06-09 | Qualcomm Incorporated | Reduced resolution pixel interpolation |
US9185408B2 (en) * | 2011-11-18 | 2015-11-10 | Google Technology Holdings LLC | Efficient storage of motion information for high efficiency video coding |
US9392235B2 (en) | 2011-11-18 | 2016-07-12 | Google Technology Holdings LLC | Explicit way for signaling a collocated reference picture for video coding |
EP3471420B1 (en) | 2011-11-18 | 2020-05-13 | Google Technology Holdings LLC | An explicit way for signaling a collocated picture for high efficiency video coding (hevc) |
KR101607038B1 (en) | 2011-11-21 | 2016-04-11 | 모토로라 모빌리티 엘엘씨 | Implicit determination and combined implicit and explicit determination of collocated picture for temporal prediction |
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 |
WO2013101643A1 (en) | 2011-12-26 | 2013-07-04 | General Instrument Corporation | Implicit determination of collocated picture for temporal prediction |
KR102647848B1 (en) | 2012-02-04 | 2024-03-15 | 엘지전자 주식회사 | Video encoding method, video decoding method, and device using same |
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 |
JP6144754B2 (en) | 2012-04-11 | 2017-06-07 | モトローラ モビリティ エルエルシーMotorola Mobility Llc | Temporal motion vector prediction (MVP) flag signaling for temporal prediction |
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 |
CA2879440C (en) * | 2012-07-16 | 2018-10-23 | Samsung Electronics Co., Ltd. | Video encoding method and video encoding apparatus and video decoding method and video decoding apparatus for signaling sao parameters |
US9319681B2 (en) | 2012-07-18 | 2016-04-19 | Google Technology Holdings LLC | Signaling of temporal motion vector predictor (MVP) enable flag |
TW201406166A (en) * | 2012-07-27 | 2014-02-01 | Novatek Microelectronics Corp | Method and device for encoding video |
CN103581689A (en) * | 2012-08-07 | 2014-02-12 | 联咏科技股份有限公司 | Video coding method and video coding device |
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 |
US9648353B2 (en) * | 2013-04-04 | 2017-05-09 | Qualcomm Incorporated | Multiple base layer reference pictures for SHVC |
CN103237220B (en) * | 2013-04-29 | 2015-12-23 | 清华大学 | Based on the method for estimating of non-uniform pixel truncation in Video coding |
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 (en) * | 2013-10-21 | 2015-04-29 | 삼성전자주식회사 | Method and apparatus for video encoding conducting motion compensation, method and apparatus for video decoding conducting motion compensation |
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 |
KR102192778B1 (en) | 2015-09-25 | 2020-12-18 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Video motion compensation apparatus and method with selectable interpolation filter |
MY197611A (en) * | 2015-09-25 | 2023-06-28 | Huawei Tech Co Ltd | Apparatus and method for video motion compensation |
BR112018006031A2 (en) | 2015-09-25 | 2018-10-09 | Huawei Tech Co Ltd | video encoder, video decoder, and methods for predictive encoding and decoding |
CA2999848C (en) | 2015-09-25 | 2020-08-18 | Huawei Technologies Co., Ltd. | Apparatus and method for video motion compensation |
CA2999872C (en) | 2015-09-25 | 2020-08-18 | Huawei Technologies Co., Ltd. | Adaptive sharpening filter for predictive coding |
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 (en) * | 2016-08-19 | 2022-07-01 | 沖電気工業株式会社 | Video coding equipment, programs and methods, as well as video decoding equipment, programs and methods, and video transmission systems. |
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 (en) * | 2017-09-06 | 2019-01-21 | 奇景光電股份有限公司 | Pixel interpolation circuit and pixel interpolation method |
CN111010568B (en) * | 2018-10-06 | 2023-09-29 | 华为技术有限公司 | Training method and device of interpolation filter, video image coding and decoding method and coder-decoder |
WO2020088691A1 (en) * | 2018-11-02 | 2020-05-07 | Beijing Bytedance Network Technology Co., Ltd. | Harmonization between geometry partition prediction mode and other tools |
SG11202109031TA (en) * | 2019-03-18 | 2021-09-29 | Tencent America LLC | Method and apparatus for video coding |
AU2020250609B2 (en) | 2019-04-01 | 2023-09-07 | Beijing Bytedance Network Technology Co., Ltd. | Using interpolation filters for history based motion vector prediction |
US11122297B2 (en) | 2019-05-03 | 2021-09-14 | Google Llc | Using border-aligned block functions for image compression |
CN113411607B (en) | 2019-06-21 | 2022-05-31 | 杭州海康威视数字技术股份有限公司 | Encoding and decoding method, device and equipment |
JP7539928B2 (en) * | 2019-07-09 | 2024-08-26 | アリババ・グループ・ホールディング・リミテッド | Resolution Adaptive Video Coding |
CN117395411A (en) | 2019-08-20 | 2024-01-12 | 北京字节跳动网络技术有限公司 | Method, apparatus and computer readable storage medium for video processing |
CN114391255B (en) * | 2019-09-11 | 2024-05-17 | 夏普株式会社 | System and method for reducing reconstruction error in video coding based on cross-component correlation |
BR112022006255A2 (en) * | 2019-10-09 | 2022-06-21 | Sharp Kk | Systems and methods to reduce a reconstruction error in video encoding based on a cross-correlation of components |
WO2021126017A2 (en) | 2020-04-29 | 2021-06-24 | Huawei Technologies Co., Ltd. | Method and apparatus of subsample interpolation filtering |
WO2024037645A1 (en) * | 2022-08-19 | 2024-02-22 | Mediatek Inc. | Boundary sample derivation in video coding |
US20240430414A1 (en) * | 2023-06-22 | 2024-12-26 | Ati Technologies Ulc | Adaptive interpolation filter search |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2001243989A1 (en) | 2000-04-03 | 2001-10-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Ad-hoc network and gateway |
DE20102205U1 (en) | 2001-02-07 | 2001-08-23 | Latein, Christine, 75177 Pforzheim | Multifunctional, portable computer |
US6847405B2 (en) * | 2001-09-14 | 2005-01-25 | Sony Corporation | Motion-adaptive de-interlacing method and system for digital televisions |
CN101448162B (en) * | 2001-12-17 | 2013-01-02 | 微软公司 | Method for processing video image |
US7620109B2 (en) * | 2002-04-10 | 2009-11-17 | Microsoft Corporation | Sub-pixel interpolation in motion estimation and compensation |
JP4102973B2 (en) | 2002-04-24 | 2008-06-18 | 日本電気株式会社 | Encoding method and decoding method of moving image, apparatus and program using the same |
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 (en) * | 2004-04-28 | 2005-11-10 | Toshiba Corp | Method and device for encoding/decoding dynamic image |
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 |
US20090022220A1 (en) * | 2005-04-13 | 2009-01-22 | Universitaet Hannover | Method and apparatus for enhanced video coding |
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 |
CN101632306B (en) | 2006-12-01 | 2014-03-19 | 法国电信公司 | 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 |
BRPI0809668B1 (en) * | 2007-04-09 | 2020-07-28 | Nokia Technologies Oy | high precision motion vectors for encoding videos with low encoding and decoding complexity |
FR2934901B1 (en) | 2008-08-05 | 2012-07-13 | Commissariat Energie Atomique | METHOD FOR NON-CONTACT MEASUREMENT OF THE REFRACTIVE INDEX OF A MATERIAL BY OPTICAL COHERENCE TOMOGRAPHY, APPLICATION TO THE MEASUREMENT OF THE VOLUMIC MASS OF A POROUS MATERIAL. |
US8548041B2 (en) | 2008-09-25 | 2013-10-01 | Mediatek Inc. | Adaptive filter |
-
2009
- 2009-04-29 US US12/432,544 patent/US9078007B2/en not_active Expired - Fee Related
- 2009-05-08 CN CN200980139142.3A patent/CN102172022B/en not_active Expired - Fee Related
- 2009-05-08 JP JP2011530075A patent/JP5547198B2/en not_active Expired - Fee Related
- 2009-05-08 KR KR1020117010119A patent/KR101437719B1/en not_active Expired - Fee Related
- 2009-05-08 EP EP09789658A patent/EP2345254A1/en not_active Withdrawn
- 2009-05-08 KR KR1020137009089A patent/KR20130054423A/en not_active Ceased
- 2009-05-08 WO PCT/US2009/043391 patent/WO2010039288A1/en active Application Filing
- 2009-05-08 BR BRPI0920730A patent/BRPI0920730A2/en not_active IP Right Cessation
- 2009-05-13 TW TW098115897A patent/TW201016019A/en unknown
-
2013
- 2013-09-24 JP JP2013197616A patent/JP2014042273A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
TW201016019A (en) | 2010-04-16 |
US20100111182A1 (en) | 2010-05-06 |
KR101437719B1 (en) | 2014-09-03 |
JP2012504904A (en) | 2012-02-23 |
US9078007B2 (en) | 2015-07-07 |
KR20110063857A (en) | 2011-06-14 |
CN102172022B (en) | 2016-08-17 |
BRPI0920730A2 (en) | 2018-06-26 |
EP2345254A1 (en) | 2011-07-20 |
JP2014042273A (en) | 2014-03-06 |
CN102172022A (en) | 2011-08-31 |
KR20130054423A (en) | 2013-05-24 |
WO2010039288A1 (en) | 2010-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5547198B2 (en) | Digital video coding using interpolation filters and offsets | |
JP5646668B2 (en) | Offset calculation in switching interpolation filter | |
CA2932811C (en) | Adaptive motion vector resolution signaling for video coding | |
CN102835113B (en) | The method and apparatus processing video signal | |
JP5619725B2 (en) | Interpolation filter support for sub-pixel resolution in video coding | |
JP6707678B2 (en) | Method and apparatus for motion compensated prediction | |
JP5180366B2 (en) | Symmetry for interpolation filtering of sub-pixel positions in video coding | |
JP5575747B2 (en) | Method, apparatus, and computer-readable storage medium for generating a prediction block in a motion compensation process | |
US20090257500A1 (en) | Offsets at sub-pixel resolution | |
JP2014140192A (en) | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter | |
WO2008149327A2 (en) | Method and apparatus for motion-compensated video signal prediction | |
HK1221101B (en) | Adaptive support for interpolating values of sub-pixels for video coding |
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 | Request for written amendment filed |
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 | Request for written amendment filed |
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 |