RU2505938C2 - Distortion-based interpolation depending on transmission rate for video coding based on fixed filter or adaptive filter - Google Patents

Distortion-based interpolation depending on transmission rate for video coding based on fixed filter or adaptive filter Download PDF

Info

Publication number
RU2505938C2
RU2505938C2 RU2010145539/07A RU2010145539A RU2505938C2 RU 2505938 C2 RU2505938 C2 RU 2505938C2 RU 2010145539/07 A RU2010145539/07 A RU 2010145539/07A RU 2010145539 A RU2010145539 A RU 2010145539A RU 2505938 C2 RU2505938 C2 RU 2505938C2
Authority
RU
Russia
Prior art keywords
pixel
filter
coefficients
interpolation filter
interpolation
Prior art date
Application number
RU2010145539/07A
Other languages
Russian (ru)
Other versions
RU2010145539A (en
Inventor
Янь Е
Марта КАРЧЕВИЧ
Original Assignee
Квэлкомм Инкорпорейтед
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/420,315 external-priority patent/US9967590B2/en
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2010145539A publication Critical patent/RU2010145539A/en
Application granted granted Critical
Publication of RU2505938C2 publication Critical patent/RU2505938C2/en

Links

Images

Abstract

FIELD: information technology.
SUBSTANCE: disclosed is twelve-pixel filter support, which may be used for interpolation, techniques which use coefficient symmetry and pixel symmetry to reduce the amount of data needed to be transmitted between an encoder and a decoder to configure the filter support for interpolation, and techniques for filtering data at integer pixel locations in a manner that is similar to sub-pixel interpolation. Other aspects relate to techniques for coding information in a bit stream in order to transmit the type of the used filter and used filter coefficients. Also described is predictive coding of filter coefficients.
EFFECT: high accuracy of predictive data used during fractional interpolation and in some cases improved predictive data of integer blocks of pixels.
47 cl, 29 dwg

Description

Данная заявка испрашивает приоритет предварительной заявки США 61/044020, поданной 10 апреля 2008 года, предварительной заявки США 61/044023, поданной 10 апреля 2008 года, предварительной заявки США 61/044240, поданной 11 апреля 2008 года, и предварительной заявки США 61/057373, поданной 30 мая 2008 года, все содержимое которых включено в настоящий документ посредством ссылки.This application claims the priority of provisional application US 61/044020, filed April 10, 2008, provisional US application 61/044023, filed April 10, 2008, provisional application US 61/044240, filed April 11, 2008, and provisional application US 61/057373 filed May 30, 2008, the entire contents of which are incorporated herein by reference.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF THE INVENTION

Данное раскрытие сущности относится к кодированию и декодированию цифрового видео, а более конкретно, к технологиям фильтрации, применяемым для того, чтобы формировать прогнозирующие данные, используемые при кодировании и декодировании видео.This disclosure relates to the encoding and decoding of digital video, and more specifically, to filtering technologies used to generate predictive data used in encoding and decoding video.

УРОВЕНЬ ТЕХНИКИBACKGROUND

Возможности цифрового видео могут быть встроены в широкий диапазон устройств, в том числе в цифровые телевизоры, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), дорожные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, устройства видеоигр, консоли видеоигр, сотовые или спутниковые радиотелефоны и т.п. Цифровые видеоустройства реализуют технологии сжатия видео, такие как описанные в стандартах, заданных посредством MPEG-2, MPEG-4 или ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), чтобы более эффективно передавать и принимать цифровую видеоинформацию. Технологии сжатия видео могут выполнять пространственное прогнозирование и/или временное прогнозирование, чтобы уменьшать или удалять избыточность, внутренне присутствующую в видеопоследовательностях.Digital video capabilities can be embedded in a wide range of devices, including digital TVs, digital direct broadcast systems, wireless broadcast systems, personal digital devices (PDAs), travel or desktop computers, digital cameras, digital recording devices, video game devices, video game consoles, cellular or satellite radiotelephones, etc. Digital video devices implement video compression technologies, such as those described in the standards defined by MPEG-2, MPEG-4, or ITU-T H.264 / MPEG-4, Part 10, Advanced Video Encoding (AVC) to more efficiently transmit and receive digital video information. Video compression technologies may perform spatial prediction and / or temporal prediction to reduce or remove redundancy internally present in video sequences.

Взаимное кодирование на основе блоков является полезной технологией кодирования, которая основана на временном прогнозировании, чтобы уменьшать или удалять временную избыточность между видеоблоками последовательных кодированных единиц видеопоследовательности. Кодированные единицы могут содержать видеокадры, серии последовательных макроблоков видеокадров, группы изображений или другую заданную единицу кодированных видеоблоков. Для взаимного кодирования, видеокодер выполняет оценку движения, чтобы отслеживать перемещение совпадающих видеоблоков между двумя или более смежными кодированными единицами. Оценка движения формирует векторы движения, которые указывают смещение видеоблоков относительно соответствующих прогнозных видеоблоков в одном или более опорных кадров или других кодированных единиц. Компенсация движения использует векторы движения, чтобы формировать прогнозные видеоблоки из одного или более опорных кадров или других кодированных единиц. После компенсации движения остаточные видеоблоки формируются посредством вычитания прогнозных видеоблоков из кодируемых исходных видеоблоков.Block-based cross-coding is a useful coding technology that is based on temporal prediction to reduce or remove temporal redundancy between video blocks of consecutive coded units of a video sequence. Coded units may comprise video frames, series of consecutive macroblocks of video frames, image groups, or another specified unit of encoded video blocks. For inter-coding, a video encoder performs motion estimation to track the movement of matching video blocks between two or more adjacent coded units. The motion estimation generates motion vectors that indicate the offset of the video blocks relative to the corresponding predicted video blocks in one or more reference frames or other coded units. Motion compensation uses motion vectors to form predictive video blocks from one or more reference frames or other coded units. After motion compensation, residual video blocks are formed by subtracting the predicted video blocks from the encoded source video blocks.

Видеокодер также может применять процессы преобразования, квантования и энтропийного кодирования, чтобы дополнительно уменьшать скорость передачи битов, ассоциированную с передачей остаточных блоков. Технологии преобразования могут содержать дискретные косинусные преобразования (DCT) или концептуально аналогичные процессы. Альтернативно, вейвлет-преобразования, целочисленные преобразования или другие типы преобразований могут использоваться. В процессе DCT, в качестве примера, набор пикселных значений преобразуется в коэффициенты преобразования, которые могут представлять энергию пикселных значений в частотном домене. Квантование применяется к коэффициентам преобразования и, в общем, заключает в себе процесс, который уменьшает число битов, ассоциированных с любым данным коэффициентом преобразования. Энтропийное кодирование содержит один или более процессов, которые совместно сжимают последовательность режимов кодирования, информацию движения, шаблоны кодированных блоков и квантованные коэффициенты преобразования. Примеры энтропийного кодирования включают в себя, но не только, контекстно-адаптивное кодирование переменной длины (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (CABAC).The video encoder can also apply transform, quantization, and entropy coding processes to further reduce the bit rate associated with the transmission of residual blocks. Transformation technologies may include discrete cosine transforms (DCT) or conceptually similar processes. Alternatively, wavelet transforms, integer transforms, or other types of transforms may be used. In the DCT process, as an example, a set of pixel values is converted to transform coefficients that can represent the energy of the pixel values in the frequency domain. Quantization is applied to transform coefficients and, in general, comprises a process that reduces the number of bits associated with any given transform coefficient. Entropy coding comprises one or more processes that together compress a sequence of coding modes, motion information, encoded block patterns, and quantized transform coefficients. Examples of entropy coding include, but are not limited to, context-adaptive variable-length coding (CAVLC) and context-adaptive binary arithmetic coding (CABAC).

Кодированный видеоблок может представляться посредством информации прогнозирования, которая может использоваться, чтобы создавать или идентифицировать прогнозный блок и остаточный блок данных, указывающих разности между кодируемым блоком и прогнозным блоком. Информация прогнозирования может содержать один или более векторов движения, которые используются, чтобы идентифицировать прогнозный блок данных. С учетом векторов движения, декодер может восстанавливать прогнозные блоки, которые использованы, чтобы кодировать остаток. Таким образом, с учетом набора остаточных блоков и набора векторов движения (и, возможно, некоторого дополнительного синтаксиса), декодер может восстанавливать видеокадр, который первоначально кодирован. Взаимное кодирование на основе оценки движения и компенсации движения может достигать очень хорошего сжатия, поскольку последовательные видеокадры или другие типы кодированных единиц зачастую являются в значительной степени аналогичными. Кодированная видеопоследовательность может содержать блоки остаточных данных, векторы движения и, возможно, другие типы синтаксиса.An encoded video block may be represented by prediction information that can be used to create or identify a prediction block and a residual block of data indicating differences between the encoded block and the prediction block. The prediction information may comprise one or more motion vectors that are used to identify the prediction data block. Given the motion vectors, the decoder can reconstruct the prediction blocks that are used to encode the remainder. Thus, given the set of residual blocks and the set of motion vectors (and possibly some additional syntax), the decoder can reconstruct the video frame that was originally encoded. Mutual coding based on motion estimation and motion compensation can achieve very good compression, since sequential video frames or other types of encoded units are often pretty much the same. An encoded video sequence may contain blocks of residual data, motion vectors, and possibly other types of syntax.

Разработаны технологии интерполяции, чтобы повышать уровень сжатия, который может достигаться при взаимном внутрикадровом кодировании. В этом случае прогнозирующие данные, сформированные в ходе компенсации движения, которая используется, чтобы кодировать видеоблок, могут быть интерполированы из пикселов видеоблоков видеокадра или другой кодированной единицы, используемой при оценке движения. Интерполяция зачастую выполняется, чтобы формировать прогнозирующие полупикселные значения (в половину пиксела) и прогнозирующие четверть-пикселные значения (в четверть пиксела). Полупикселные и четверть-пикселные значения ассоциированы с субпикселными местоположениями. Дробные векторы движения могут использоваться для того, чтобы идентифицировать видеоблоки при субпикселном разрешении, чтобы фиксировать дробное перемещение в видеопоследовательности, и тем самым предоставлять прогнозные блоки, которые в большей степени аналогичны кодируемым видеоблокам, чем целочисленные видеоблоки.Interpolation technologies have been developed to increase the level of compression that can be achieved with inter-frame coding. In this case, the predictive data generated during the motion compensation, which is used to encode the video block, can be interpolated from the pixels of the video blocks of the video frame or other coded unit used in the motion estimation. Interpolation is often performed to generate predictive half-pixel values (at half a pixel) and predictive quarter-pixel values (at a quarter of a pixel). Half-pixel and quarter-pixel values are associated with sub-pixel locations. Fractional motion vectors can be used to identify video blocks at subpixel resolution, to capture fractional movement in the video sequence, and thereby provide predictive blocks that are more similar to encoded video blocks than integer video blocks.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

В общем, настоящее раскрытие сущности изобретения описывает технологии фильтрации, применяемые посредством кодера и декодера во время стадии прогнозирования процесса кодирования и/или декодирования видео. Описанные технологии фильтрации позволяют повышать точность прогнозирующих данных, используемых во время дробной интерполяции, и в некоторых случаях позволяют улучшать прогнозирующие данные целых блоков пикселов. Предусмотрено несколько аспектов для этого раскрытия, в том числе применимая поддержка фильтра на двенадцать пикселов, который может использоваться для интерполяции, технологии, которые используют симметрию по коэффициентам и симметрию по пикселам, чтобы уменьшать объем данных, необходимых для отправки между кодером и декодером, чтобы конфигурировать поддержку фильтра для интерполяции, и технологии для фильтрации данных в целопикселных местоположениях способом, который является аналогичным субпикселной интерполяции. Другие аспекты этого раскрытия касаются технологий для кодирования информации в потоке битов, чтобы передавать тип используемого фильтра и, возможно, используемые коэффициенты фильтрации. Технологии прогнозирующего кодирования для коэффициентов фильтрации также описываются. Эти и другие аспекты настоящего раскрытия будут очевидны из нижеприведенного описания.In general, the present disclosure describes filtering techniques employed by an encoder and a decoder during the prediction step of a video encoding and / or decoding process. The described filtering technologies make it possible to increase the accuracy of the predictive data used during fractional interpolation, and in some cases allow to improve the predictive data of entire blocks of pixels. Several aspects are envisioned for this disclosure, including applicable twelve pixel filter support that can be used for interpolation, technologies that use coefficient symmetry and pixel symmetry to reduce the amount of data needed to be sent between the encoder and decoder in order to configure filter support for interpolation; and technology for filtering data at integer-pixel locations in a manner that is similar to sub-pixel interpolation. Other aspects of this disclosure relate to techniques for encoding information in a bitstream to convey the type of filter used and possibly the filter coefficients used. Predictive coding techniques for filter coefficients are also described. These and other aspects of the present disclosure will be apparent from the description below.

В одном примере, настоящее раскрытие описывает способ, содержащий формирование первых интерполированных прогнозирующих данных для кодирования видеоданных на основе первого интерполяционного фильтра, формирование вторых интерполированных прогнозирующих данных для кодирования видеоданных на основе второго интерполяционного фильтра, выбор между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи, кодирование видеоданных на основе выбора и кодирование синтаксиса, чтобы указывать выбор. Первый интерполяционный фильтр может содержать неперестраиваемый интерполяционный фильтр, а второй интерполяционный фильтр может содержать адаптивный интерполяционный фильтр, но настоящее раскрытие не ограничено этими примерами.In one example, the present disclosure describes a method comprising generating first interpolated predictive data for encoding video data based on a first interpolation filter, generating second interpolated predictive data for encoding video data based on a second interpolation filter, choosing between first interpolated predictive data and second interpolated predictive data on Based on the analysis of distortion depending on the transmission rate, video coding data based on the selection and coding syntax to indicate the choice. The first interpolation filter may comprise a non-tunable interpolation filter, and the second interpolation filter may comprise an adaptive interpolation filter, but the present disclosure is not limited to these examples.

Дополнительные интерполяционные фильтры также могут применяться, чтобы формировать дополнительные интерполированные прогнозирующие данные, которые также могут рассматриваться при анализе искажения в зависимости от скорости передачи. Другими словами, способ не ограничен формированием только первых и вторых интерполированных прогнозирующих данных на основе двух интерполяционных фильтров, а может применяться, чтобы формировать любое множество интерполированных прогнозирующих данных на основе любого числа интерполяционных фильтров. Важно, что интерполированные прогнозирующие данные анализа искажения в зависимости от скорости передачи используются для того, чтобы идентифицировать то, какой фильтр следует выбирать.Additional interpolation filters can also be used to generate additional interpolated predictive data, which can also be considered in the analysis of distortion depending on the transmission speed. In other words, the method is not limited to generating only the first and second interpolated predictive data based on two interpolation filters, but can be used to generate any set of interpolated predictive data based on any number of interpolation filters. It is important that the interpolated predictive distortion analysis data as a function of the transmission rate is used to identify which filter should be selected.

Согласно другому примеру, настоящее раскрытие описывает способ, содержащий формирование множества различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров, выбор из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи, кодирование видеоданных на основе выбора и кодирование синтаксиса, чтобы указывать выбор.According to another example, the present disclosure describes a method comprising generating a plurality of different versions of predictive data for encoding video data based on a plurality of different interpolation filters, selecting from a plurality of different versions of predictive data based on an analysis of distortion depending on a transmission rate, selectively encoding the video data, and encoding syntax to indicate a choice.

В другом примере, настоящее раскрытие описывает устройство, содержащее видеокодер, который формирует множество различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров, выбирает из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи, кодирует видеоданные на основе выбора и кодирует синтаксис, чтобы указывать выбор.In another example, the present disclosure describes a device comprising a video encoder that generates a plurality of different versions of predictive data for encoding video data based on a plurality of different interpolation filters, selects from many different versions of predictive data based on a distortion analysis depending on a transmission rate, encodes video data based on selection and encodes syntax to indicate selection.

В другом примере, настоящее раскрытие описывает устройство, содержащее средство для формирования множества различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров, средство для выбора из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи, средство для кодирования видеоданных на основе выбора и средство для кодирования синтаксиса, чтобы указывать выбор.In another example, the present disclosure describes a device comprising a means for generating a plurality of different versions of predictive data for encoding video data based on a plurality of different interpolation filters, means for selecting from a plurality of different versions of predictive data based on a distortion analysis depending on a transmission rate, means for encoding selection-based video data; and syntax encoding means to indicate selection.

Технологии, описанные в настоящем раскрытии, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой их комбинации. При реализации в программном обеспечении, программное обеспечение может выполняться в одном или более процессоров, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или процессор цифровых сигналов (DSP). Программное обеспечение, которое выполняет технологии, может быть первоначально сохранено на машиночитаемом носителе и загружено и приведено в исполнение в процессоре.The techniques described in this disclosure may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the software may run on one or more processors, such as a microprocessor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), or digital signal processor (DSP). Software that implements technology can be initially stored on a machine-readable medium and downloaded and executed on a processor.

Соответственно, настоящее раскрытие также рассматривает машиночитаемый носитель хранения данных, содержащий инструкции, которые, когда выполняются посредством процессора, предписывают процессору формировать множество различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров, выбирать из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи, кодировать видеоданные на основе выбора и кодировать синтаксис, чтобы указывать выбор.Accordingly, the present disclosure also contemplates a computer-readable storage medium containing instructions that, when executed by a processor, instruct the processor to generate a plurality of different versions of predictive data for encoding video data based on a plurality of different interpolation filters, select from a plurality of different versions of predictive data based on a distortion analysis depending on the transmission speed, encode the video data based on the choice and encode the syntax that to indicate the selection.

Подробности одного или более вариантов осуществления данного раскрытия сущности изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества технологий, описанных в настоящем раскрытии, будут очевидны из описания и чертежей, а также из формулы изобретения.Details of one or more embodiments of this disclosure are set forth in the accompanying drawings and in the description below. Other features, objectives and advantages of the technologies described in this disclosure will be apparent from the description and drawings, as well as from the claims.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Фиг.1 является блок-схемой, иллюстрирующей одну примерную систему кодирования и декодирования видео, которая может реализовывать технологии настоящего изобретения.1 is a block diagram illustrating one exemplary video encoding and decoding system that may implement the technologies of the present invention.

Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера, который может выполнять технологии фильтрации в соответствии с настоящим изобретением.FIG. 2 is a block diagram illustrating an example of a video encoder that can perform filtering techniques in accordance with the present invention.

Фиг.3 является концептуальной схемой, иллюстрирующей целопикселные позиции, ассоциированные с прогнозирующими данными, и субпикселные позиции, ассоциированные с интерполированными прогнозирующими данными.3 is a conceptual diagram illustrating integer-pixel positions associated with predictive data and sub-pixel positions associated with interpolated predictive data.

Фиг.4 является концептуальной схемой, иллюстрирующей поддержку фильтра на 12 пикселов относительно девяти субпикселных местоположений.4 is a conceptual diagram illustrating 12 pixel filter support with respect to nine sub-pixel locations.

Фиг.5 является концептуальной схемой, иллюстрирующей поддержку горизонтального фильтра на 6 пикселов относительно трех горизонтальных субпикселных местоположений и поддержку вертикального фильтра на 6 пикселов относительно трех вертикальных субпикселных местоположений.5 is a conceptual diagram illustrating 6 pixel horizontal filter support with respect to three horizontal subpixel locations and 6 pixel vertical filter support with respect to three vertical subpixel locations.

Фиг.6 является концептуальной схемой, иллюстрирующей поддержку фильтра на "пять пикселов на пять пикселов" для фильтрации целопикселного местоположения.6 is a conceptual diagram illustrating a "five pixel by five pixel" filter support for filtering an integer pixel location.

Фиг.7 является концептуальной схемой, иллюстрирующей четыре целопикселные позиции и пятнадцать субпикселных позиций с штриховкой, чтобы группировать позиции пиксела, которые могут использовать симметрию по пикселам для коэффициентов фильтрации в соответствии с настоящим изобретением.7 is a conceptual diagram illustrating four integer-pixel positions and fifteen sub-pixel positions with a hatch to group pixel positions that can use pixel symmetry for filter coefficients in accordance with the present invention.

Фиг.8 является концептуальной схемой, иллюстрирующей шесть позиций поддержки горизонтальных линейных пикселов относительно субпиксела, с штриховкой, которая показывает симметрию по коэффициентам.8 is a conceptual diagram illustrating six positions of supporting horizontal linear pixels relative to a subpixel, with a hatching that shows symmetry in coefficients.

Фиг.9 является концептуальной схемой, иллюстрирующей шесть позиций поддержки горизонтальных линейных пикселов относительно субпиксела, с штриховкой, которая показывает отсутствие симметрии по коэффициентам.9 is a conceptual diagram illustrating six positions of supporting horizontal linear pixels with respect to a subpixel, with a hatching that shows the lack of symmetry in the coefficients.

Фиг.10 является концептуальной схемой, иллюстрирующей шесть позиций поддержки вертикальных линейных пикселов относительно субпиксела, с штриховкой, которая показывает симметрию по коэффициентам.10 is a conceptual diagram illustrating six support positions of vertical linear pixels with respect to a subpixel, with a hatching that shows symmetry in coefficients.

Фиг.11 является концептуальной схемой, иллюстрирующей шесть позиций поддержки вертикальных линейных пикселов относительно субпиксела, с штриховкой, которая показывает отсутствие симметрии по коэффициентам.11 is a conceptual diagram illustrating six positions of supporting vertical linear pixels with respect to a subpixel, with a hatching that shows the lack of symmetry in the coefficients.

Фиг.12 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов относительно субпиксела, с штриховкой, которая показывает отсутствие симметрии по коэффициентам.12 is a conceptual diagram illustrating twelve positions of supporting two-dimensional pixels with respect to a subpixel, with hatching, which shows a lack of symmetry in the coefficients.

Фиг.13 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов относительно субпиксела, с штриховкой, которая показывает симметрию по коэффициентам.13 is a conceptual diagram illustrating twelve positions of supporting two-dimensional pixels with respect to a subpixel, with a hatching that shows symmetry in coefficients.

Фиг.14 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов относительно субпиксела, с штриховкой, которая показывает симметрию по коэффициентам.14 is a conceptual diagram illustrating twelve positions of supporting two-dimensional pixels with respect to a subpixel, with a hatching that shows symmetry in coefficients.

Фиг.15 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов относительно субпиксела, с штриховкой, которая показывает симметрию по коэффициентам.15 is a conceptual diagram illustrating twelve positions of supporting two-dimensional pixels with respect to a subpixel, with a hatching that shows symmetry in coefficients.

Фиг.16 является блок-схемой, иллюстрирующей пример видеодекодера, который может декодировать видеопоследовательность, кодированнную описанным в данном документе способом.16 is a block diagram illustrating an example of a video decoder that can decode a video sequence encoded by the method described herein.

Фиг.17 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует поддержку фильтра на двенадцать пикселов в соответствии с настоящим изобретением.17 is a flowchart illustrating an example operation of a video encoder that uses twelve pixel filter support in accordance with the present invention.

Фиг.18 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует поддержку фильтра на двенадцать пикселов в соответствии с настоящим изобретением.18 is a flowchart illustrating an example operation of a video decoder that uses twelve pixel filter support in accordance with the present invention.

Фиг.19 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует симметрию по коэффициентам и симметрию по пикселам в соответствии с настоящим изобретением.19 is a flowchart illustrating an exemplary operation of a video encoder that uses coefficient symmetry and pixel symmetry in accordance with the present invention.

Фиг.20 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует симметрию по коэффициентам и симметрию по пикселам в соответствии с настоящим изобретением.FIG. 20 is a flowchart illustrating an example operation of a video decoder that uses coefficient symmetry and pixel symmetry in accordance with the present invention.

Фиг.21 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует фильтрацию целопикселных местоположений, чтобы формировать регулируемые целопикселные значения в соответствии с настоящим изобретением.FIG. 21 is a flowchart illustrating an example operation of a video encoder that uses integer-pixel filtering to generate adjustable integer-pixel values in accordance with the present invention.

Фиг.22 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует фильтрацию целопикселных местоположений, чтобы формировать регулируемые целопикселные значения в соответствии с настоящим изобретением.FIG. 22 is a flowchart illustrating an example operation of a video decoder that uses integer-pixel filtering to generate adjustable integer-pixel values in accordance with the present invention.

Фиг.23 является блок-схемой последовательности операций, иллюстрирующей технологию для интерполяции на основе искажения в зависимости от скорости передачи для кодирования видео на основе неперестраиваемого фильтра или адаптивного фильтра.23 is a flowchart illustrating a technology for distortion-based interpolation depending on a transmission rate for encoding a video based on a non-tunable filter or an adaptive filter.

Фиг.24 является блок-схемой последовательности операций, иллюстрирующей технологию для кодирования коэффициентов фильтрации с использованием прогнозирующего кодирования.24 is a flowchart illustrating a technique for encoding filter coefficients using predictive coding.

Фиг.25 является другой блок-схемой последовательности операций, иллюстрирующей технологию для кодирования коэффициентов фильтрации с использованием прогнозирующего кодирования.25 is another flowchart illustrating a technique for encoding filter coefficients using predictive coding.

Фиг.26 является блок-схемой последовательности операций, иллюстрирующей технологию для декодирования коэффициентов фильтрации с использованием прогнозирующего кодирования.26 is a flowchart illustrating a technique for decoding filter coefficients using predictive coding.

Фиг.27 и 28 являются концептуальными графиками, иллюстрирующими коэффициенты фильтрации, которые могут кодироваться с прогнозированием.27 and 28 are conceptual graphs illustrating filtering coefficients that can be predictively encoded.

Фиг.29 является иллюстративным примером матрицы коэффициентов целопикселной фильтрации, для которых технологии прогнозирования могут использоваться для кодирования.29 is an illustrative example of a matrix of integer-pixel filtering coefficients for which prediction techniques can be used for coding.

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION

Настоящее раскрытие сущности изобретения описывает технологии фильтрации, применяемые посредством кодера и декодера во время стадии прогнозирования процесса кодирования и/или декодирования видео. Описанные технологии фильтрации позволяют повышать точность прогнозирующих данных, используемых во время дробной интерполяции, и в некоторых случаях позволяют улучшать прогнозирующие данные целых блоков пикселов. Предусмотрено несколько аспектов настоящего раскрытия, в том числе применимая поддержка фильтра на двенадцать пикселов, который может использоваться для интерполяции, технологии, которые используют симметрию по коэффициентам и симметрию по пикселам, чтобы уменьшать объем данных, необходимых для отправки между кодером и декодером, чтобы конфигурировать поддержку фильтра для интерполяции, и технологии для фильтрации данных в целопикселных местоположениях способом, который является аналогичным субпикселной интерполяции. Эти и другие технологии подробно описываются ниже.The present disclosure describes filtering techniques applied by an encoder and a decoder during the prediction step of a video encoding and / or decoding process. The described filtering technologies make it possible to increase the accuracy of the predictive data used during fractional interpolation, and in some cases allow to improve the predictive data of entire blocks of pixels. Several aspects of the present disclosure are envisioned, including applicable twelve pixel filter support that can be used for interpolation, technologies that use coefficient symmetry and pixel symmetry to reduce the amount of data needed to be sent between the encoder and decoder to configure support a filter for interpolation; and technology for filtering data at integer-pixel locations in a manner that is similar to sub-pixel interpolation. These and other technologies are described in detail below.

Фиг.1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использоваться, чтобы реализовывать одну или более технологий настоящего изобретения. Как показано на Фиг.1, система 10 включает в себя исходное устройство 12, которое передает кодированное видео в целевое устройство 16 через канал 15 связи. Исходное устройство (источник) 12 и целевое устройство (место назначения) 16 могут содержать любое из широкого диапазона устройств. В некоторых случаях, исходное устройство 12 и целевое устройство 16 содержат устройства беспроводной связи, такие как беспроводные переносные телефоны, так называемые сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 15 связи, когда канал 15 связи является беспроводным. Однако технологии настоящего раскрытия, которые касаются фильтрации и формирования прогнозирующих данных во время прогнозирующего кодирования, не ограничены беспроводными приложениями или настройками. Технологии также могут применяться в широком диапазоне других настроек и устройств, в том числе устройств, которые обмениваются данными через физические провода, оптоволокно или другие физические или беспроводные среды. Помимо этого, технологии кодирования или декодирования также могут применяться в автономном устройстве, которое не обязательно обменивается данными с любым другим устройством.1 is a block diagram illustrating an example video encoding and decoding system 10 that can be used to implement one or more technologies of the present invention. As shown in FIG. 1, system 10 includes a source device 12 that transmits encoded video to a target device 16 through a communication channel 15. The source device (source) 12 and the target device (destination) 16 may comprise any of a wide range of devices. In some cases, the source device 12 and the target device 16 comprise wireless communication devices such as cordless handsets, so-called cellular or satellite radiotelephones, or any wireless devices that can transmit video information over communication channel 15 when communication channel 15 is wireless. However, the technologies of the present disclosure that relate to filtering and generating predictive data during predictive coding are not limited to wireless applications or settings. Technologies can also be applied in a wide range of other settings and devices, including devices that exchange data through physical wires, optical fiber, or other physical or wireless media. In addition, encoding or decoding technologies can also be applied in a stand-alone device, which does not necessarily communicate with any other device.

В примере по Фиг.1 исходное устройство 12 может включать в себя видеоисточник 20, видеокодер 22, модулятор/демодулятор (модем) 23 и передающее устройство 24. Целевое устройство 16 может включать в себя приемное устройство 26, модем 27, видеодекодер 28 и дисплейное устройство 30. В соответствии с настоящим раскрытием видеокодер 22 исходного устройства 12 может конфигурироваться, чтобы применять одну или более технологий настоящего раскрытия как часть процесса кодирования видео. Аналогично, видеодекодер 28 целевого устройства 16 может конфигурироваться, чтобы применять одну или более технологий настоящего раскрытия как часть процесса декодирования видео.In the example of FIG. 1, the source device 12 may include a video source 20, a video encoder 22, a modulator / demodulator (modem) 23, and a transmitting device 24. The target device 16 may include a receiving device 26, a modem 27, a video decoder 28, and a display device 30. In accordance with the present disclosure, video encoder 22 of source device 12 may be configured to apply one or more technologies of the present disclosure as part of a video encoding process. Similarly, the video decoder 28 of the target device 16 may be configured to apply one or more of the technologies of the present disclosure as part of the video decoding process.

Система 10, проиллюстрированная на Фиг.1, приведена только для примера. Различные технологии настоящего раскрытия могут выполняться посредством любого устройства кодирования, которое поддерживает прогнозирующее кодирование на основе блоков, или любого устройства декодирования, которое поддерживает прогнозирующее декодирование на основе блоков. Исходное устройство 12 и целевое устройство 16 являются просто примерами таких устройств кодирования, в которых исходное устройство 12 формирует кодированные видеоданные для передачи в целевое устройство 16. В некоторых случаях устройства 12, 16 могут работать практически симметрично, так что каждое из устройств 12, 16 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 16, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.The system 10 illustrated in FIG. 1 is for example purposes only. Various techniques of the present disclosure may be performed by any encoding device that supports block-based predictive coding, or any decoding device that supports block-based predictive decoding. The source device 12 and the target device 16 are simply examples of such encoding devices in which the source device 12 generates encoded video data for transmission to the target device 16. In some cases, the devices 12, 16 can operate almost symmetrically, so that each of the devices 12, 16 includes Video encoding and decoding components. Therefore, the system 10 can support one-way and two-way video transmission between video devices 12, 16, for example, for video streaming, video playback, video broadcasting, or video telephony.

Видеоисточник 20 исходного устройства 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, или видеопередачу от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 20 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию передаваемого впрямую видео, архивного видео и машино-генерируемого видео. В некоторых случаях, если видеоисточником 20 является видеокамера, исходное устройство 12 и целевое устройство 16 могут формировать так называемые камерофоны или видеофоны. В каждом случае захватываемое, предварительно захваченное или машино-генерируемое видео может быть кодировано посредством видеокодера 22. Кодированная видеоинформация затем может модулироваться посредством модема 23 согласно стандарту связи, к примеру, такому как множественный доступ с кодовым разделением (CDMA) или другой стандарт связи, и передаваться в целевое устройство 16 через передающее устройство 24 и канал 15 связи. Модем 23 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для модуляции сигналов. Передающее устройство 24 может включать в себя схемы, разработанные для передачи данных, в том числе усилители, фильтры и одну или более антенн.The video source 20 of the source device 12 may include a video capture device, such as a video camera, a video archive containing previously captured video, or a video stream from a video content provider. As an additional alternative, video source 20 may generate computer-based graphics data as a source video or a combination of directly transmitted video, archived video, and computer-generated video. In some cases, if the video source 20 is a video camera, the source device 12 and the target device 16 may form so-called camera phones or video phones. In each case, the captured, pre-captured, or machine-generated video may be encoded by video encoder 22. The encoded video information may then be modulated by modem 23 according to a communication standard, such as, for example, code division multiple access (CDMA) or another communication standard, and transmitted to the target device 16 through the transmitting device 24 and the communication channel 15. The modem 23 may include various mixers, filters, amplifiers, or other components designed to modulate the signals. Transmitter 24 may include circuits designed to transmit data, including amplifiers, filters, and one or more antennas.

Приемное устройство 26 целевого устройства 16 принимает информацию по каналу 15, и модем 27 демодулирует информацию. Аналогично передающему устройству 24, приемное устройство 26 может включать в себя схемы, предназначенные для приема данных, в том числе усилители, фильтры и одну или более антенн. В некоторых случаях передающее устройство 24 и/или приемное устройство 26 может быть включено в один компонент приемо-передающего устройства, который включают в себя как приемную, так и передающую схемы. Модем 27 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для демодуляции сигналов. В некоторых случаях, модемы 23 и 27 могут включать в себя компоненты для выполнения как модуляции, так и демодуляции.The receiver 26 of the target device 16 receives information on channel 15, and the modem 27 demodulates the information. Similar to the transmitter 24, the receiver 26 may include circuits for receiving data, including amplifiers, filters, and one or more antennas. In some cases, the transmitting device 24 and / or the receiving device 26 may be included in one component of the receiving-transmitting device, which includes both the receiving and transmitting circuits. Modem 27 may include various mixers, filters, amplifiers, or other components designed to demodulate signals. In some cases, modems 23 and 27 may include components for performing both modulation and demodulation.

Процесс кодирования видео, выполняемый посредством видеокодера 22, может реализовывать одну или более технологий, описанных в данном документе, в ходе компенсации движения. Процесс декодирования видео, выполняемый посредством видеодекодера 28, также может выполнять такие технологии в ходе своей стадии компенсации движения процесса декодирования. Термин "кодер" используется здесь для ссылки на специализированное компьютерное устройство, которое выполняет кодирование видео или декодирование видео. Термин "кодер", в общем, означает любое из видеокодера, видеодекодера или комбинированного кодера/декодера (кодека). Термин "кодирование" означает кодирование или декодирование. Дисплейное устройство 30 отображает декодированные видеоданные пользователю и может содержать любое из множества дисплейных устройств, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип дисплейного устройства.The video encoding process performed by the video encoder 22 may implement one or more of the technologies described herein during motion compensation. The video decoding process performed by the video decoder 28 can also perform such technologies during its stage of motion compensation of the decoding process. The term "encoder" is used here to refer to a specialized computer device that performs video encoding or video decoding. The term “encoder” generally means any of a video encoder, video decoder, or combined encoder / decoder (codec). The term "coding" means encoding or decoding. The display device 30 displays the decoded video data to the user and may comprise any of a variety of display devices, such as a cathode ray tube (CRT), liquid crystal display (LCD), plasma display, organic light emitting diode (OLED) display, or other type of display device.

В примере по Фиг.1 канал 15 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 15 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 15 связи, в общем, представляет любую подходящую среду связи или набор различных сред связи для передачи видеоданных из исходного устройства 12 в целевое устройство 16. Канал 15 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может применяться для упрощения передачи данных из исходного устройства 12 в целевое устройство 16.In the example of FIG. 1, communication channel 15 may comprise any wireless and wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines, or any combination of wireless and wired media. Communication channel 15 may form part of a packet-switched network, such as a local area network, wide area network, or wide area network such as the Internet. Communication channel 15 generally represents any suitable communication medium or a set of different communication media for transmitting video data from source device 12 to target device 16. Communication channel 15 may include routers, switches, base stations, or any other equipment that may be used to simplify the transfer of data from the source device 12 to the target device 16.

Видеокодер 22 и видеодекодер 28 могут работать согласно стандарту сжатия видео, такому как стандарт ITU-T H.264, альтернативно описанный как MPEG-4, часть 10, усовершенствованное кодирование видео (AVC). Однако технологии настоящего раскрытия не ограничены каким-либо конкретным стандартом кодирования видео. Хотя не показано на Фиг.1, в некоторых аспектах, видеокодер 22 и видеодекодер 28 могут быть интегрированы с аудиокодером и декодером, соответственно, и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).Video encoder 22 and video decoder 28 may operate according to a video compression standard, such as ITU-T H.264, alternatively described as MPEG-4, part 10, advanced video encoding (AVC). However, the technology of the present disclosure is not limited to any particular video coding standard. Although not shown in FIG. 1, in some aspects, video encoder 22 and video decoder 28 may be integrated with an audio encoder and decoder, respectively, and may include appropriate multiplexer-demultiplexer modules or other hardware and software to process the encoding as audio video and in the general data stream or in separate data streams. The multiplexer-demultiplexer modules may conform to the ITU H.223 multiplexer protocol or other protocols such as user datagram protocol (UDP).

Видеокодер 22 и видеодекодер 28 могут быть реализованы как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые их комбинации. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодека, который предоставляет возможности кодирования и декодирования в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере и т.п.Video encoder 22 and video decoder 28 can be implemented as one or more microprocessors, digital signal processors (DSPs), specialized integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any one thereof combinations. Each of video encoder 22 and video decoder 28 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined codec that provides encoding and decoding capabilities in a corresponding mobile device, subscriber device, broadcast device, server, etc. P.

Видеопоследовательность типично включает в себя серии видеокадров. Видеокодер 22 оперирует с видеоблоками в рамках отдельных видеокадров, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированный или изменяющийся размер и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр включает в себя серии последовательных макроблоков. Каждая серия последовательных макроблоков может включать в себя серии макроблоков, которые могут быть скомпонованы в субблоки. В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее прогнозирование для различных размеров блоков, таких как 16×16, 8×8 или 4×4 для компонентов сигнала яркости и 8×8 для компонентов сигнала цветности, а также взаимное прогнозирование для различных размеров блоков, таких как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонентов сигнала яркости и соответствующих масштабированных размеров для компонентов сигнала цветности. Видеоблоки могут содержать блоки пикселных данных или блоки коэффициентов преобразования, к примеру, после процесса преобразования, такого как дискретное косинусное преобразование (DCT) или концептуально аналогичный процесс преобразования.A video sequence typically includes a series of video frames. Video encoder 22 operates with video blocks within separate video frames to encode video data. Video blocks may have a fixed or variable size and may vary in size according to a given coding standard. Each video frame includes a series of consecutive macroblocks. Each series of consecutive macroblocks may include a series of macroblocks that can be arranged in subunits. As an example, the ITU-T H.264 standard supports intra prediction for various block sizes, such as 16 × 16, 8 × 8 or 4 × 4 for luminance components and 8 × 8 for chrominance components, as well as inter prediction for different block sizes, such as 16 × 16, 16 × 8, 8 × 16, 8 × 8, 8 × 4, 4 × 8 and 4 × 4 for luminance components and corresponding scaled sizes for chroma components. Video blocks may comprise blocks of pixel data or blocks of transform coefficients, for example, after a transform process such as discrete cosine transform (DCT) or a conceptually similar transform process.

Меньшие видеоблоки могут предоставлять лучшее разрешение и могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детализации. В общем, макроблоки и различные субблоки могут считаться видеоблоками. Помимо этого, серия последовательных макроблоков может считаться серией видеоблоков, таких как макроблоки и/или субблоки. Каждая серия последовательных макроблоков может быть независимо декодируемой единицей видеокадра. Альтернативно, сами кадры могут быть декодируемыми единицами, или другие части кадра могут быть заданы как декодируемые единицы. Термин "кодированная единица" означает любую независимо декодируемую единицу видеокадра, такую как весь кадр, серия последовательных макроблоков кадра или другая независимо декодируемая единица, заданная согласно используемым технологиям кодирования.Smaller video blocks can provide better resolution and can be used for video frame locations that include high levels of detail. In general, macroblocks and various subunits can be considered video blocks. In addition, a series of consecutive macroblocks may be considered a series of video blocks, such as macroblocks and / or subblocks. Each series of consecutive macroblocks can be an independently decoded video frame unit. Alternatively, the frames themselves may be decoded units, or other parts of the frame may be specified as decoded units. The term “coded unit” means any independently decoded unit of a video frame, such as an entire frame, a series of consecutive macroblocks of a frame, or another independently decoded unit specified in accordance with the used coding techniques.

Чтобы кодировать видеоблоки, видеокодер 22 выполняет внутреннее («интра-») или взаимное («интер-») прогнозирование, чтобы формировать прогнозный блок. Видеокодер 22 вычитает прогнозные блоки из исходных видеоблоков, которые должны кодироваться, чтобы формировать остаточные блоки. Таким образом, остаточные блоки служат признаком разностей между кодируемыми блоками и прогнозными блоками. Видеокодер 22 может выполнять преобразование для остаточных блоков, чтобы формировать блоки коэффициентов преобразования. После технологий внутреннего или взаимного прогнозирующего кодирования и преобразования, видеокодер 22 выполняет квантование. Квантование, в общем, означает процесс, в котором коэффициенты квантуются, чтобы, возможно, уменьшать объем данных, используемый для представления коэффициентов. После квантования, энтропийное кодирование может выполняться согласно технологии энтропийного кодирования, такой как контекстно-адаптивное кодирование переменной длины (CAVLC) или контекстно-адаптивное двоичное арифметическое кодирование (CABAC). Дополнительные сведения по каждому этапу процесса кодирования, выполняемого посредством видеокодера 22, описываются подробнее ниже на Фиг.2.To encode video blocks, video encoder 22 performs internal (“intra”) or mutual (“inter”) prediction to form a prediction block. Video encoder 22 subtracts the prediction blocks from the source video blocks, which must be encoded to form residual blocks. Thus, residual blocks are indicative of differences between the coded blocks and the prediction blocks. Video encoder 22 may perform the conversion for the residual blocks to form blocks of transform coefficients. After technologies of internal or mutual predictive coding and conversion, video encoder 22 performs quantization. Quantization generally means a process in which coefficients are quantized in order to possibly reduce the amount of data used to represent the coefficients. After quantization, entropy coding can be performed according to entropy coding technology, such as context adaptive variable length coding (CAVLC) or context adaptive binary arithmetic coding (CABAC). Additional information for each step of the encoding process performed by video encoder 22 is described in more detail below in FIG.

В целевом устройстве 16 видеодекодер 28 принимает кодированные видеоданные. Видеодекодер 28 энтропийно декодирует принимаемые видеоданные согласно технологии энтропийного кодирования, такой как CAVLC или CABAC, чтобы получать квантованные коэффициенты. Видеодекодер 28 применяет функции обратного квантования (деквантования) и обратного преобразования, чтобы восстанавливать остаточный блок в пикселной области. Видеодекодер 28 также формирует прогнозный блок на основе управляющей информации или синтаксической информации (к примеру, режим кодирования, векторы движения, синтаксис, который задает коэффициенты фильтрации, и т.п.), включенной в кодированные видеоданные. Видеодекодер 28 суммирует прогнозный блок с восстановленным остаточным блоком, чтобы формировать восстановленный видеоблок для отображения. Дополнительные сведения по каждому этапу процесса кодирования, выполняемого посредством видеокодера 22, описываются подробнее ниже на Фиг.16.At target device 16, video decoder 28 receives encoded video data. Video decoder 28 entropy decodes the received video data according to entropy coding technology such as CAVLC or CABAC to obtain quantized coefficients. Video decoder 28 applies the functions of inverse quantization (dequantization) and inverse transformation to restore the residual block in the pixel region. Video decoder 28 also generates a prediction block based on control information or syntactic information (for example, coding mode, motion vectors, syntax that defines filtering coefficients, etc.) included in the encoded video data. Video decoder 28 summarizes the prediction block with the reconstructed residual block to form the reconstructed video block for display. Additional information for each step of the encoding process performed by video encoder 22 is described in more detail below in FIG. 16.

Согласно технологиям настоящего раскрытия, видеокодер 22 и видеодекодер 28 могут использовать одну или более технологий интерполяционной фильтрации в ходе компенсации движения. В частности, в соответствии с одним аспектом этого раскрытия сущности, видеокодер 22 и/или видеодекодер 28 может получать блок пикселов, при этом блок пикселов включает в себя целопикселные значения, соответствующие целопикселным позициям в рамках блока пикселов, вычислять субпикселные значения для субпикселных позиций, ассоциированных с блоком пикселов, на основе целопикселных значений, при этом вычисление субпикселных значений содержит применение интерполяционного фильтра, который задает двумерный массив позиций поддержки фильтра, соответствующих набору из двенадцати или более целопикселных позиций, которые окружают субпикселные позиции в радиальной форме, и формировать прогнозный блок на основе, по меньшей мере, некоторых из субпикселных значений. Пример двумерного массива позиций поддержки фильтра, соответствующих набору из двенадцати или более целопикселных позиций, подробнее поясняется ниже.According to the technologies of the present disclosure, video encoder 22 and video decoder 28 can use one or more interpolation filtering technologies during motion compensation. In particular, in accordance with one aspect of this disclosure, video encoder 22 and / or video decoder 28 may receive a pixel block, wherein the pixel block includes integer-pixel values corresponding to integer-pixel positions within the pixel block, to calculate sub-pixel values for sub-pixel positions associated with a block of pixels, based on integer-pixel values, while the calculation of sub-pixel values contains the use of an interpolation filter, which defines a two-dimensional array of filter support positions, with corresponding to a set of twelve or more integer-pixel positions that surround the sub-pixel positions in radial form and form a prediction block based on at least some of the sub-pixel values. An example of a two-dimensional array of filter support positions corresponding to a set of twelve or more integer-pixel positions is explained in more detail below.

В соответствии с другим аспектом настоящего раскрытия, видеокодер 22 и/или видеодекодер 28 может использовать аспекты симметрии, чтобы уменьшать объем данных, который должен передаваться между исходным устройством 12 и целевым устройством 16 для обмена коэффициентами фильтрации, используемыми при интерполяции. Видеокодер 22 может определять восемь наборов коэффициентов фильтрации для пятнадцати различных субпикселных местоположений, при этом восемь наборов коэффициентов фильтрации формируются на основе симметрии по коэффициентам и симметрии по пикселам для пятнадцати субпикселных местоположений, и выводить восемь наборов коэффициентов фильтрации в другое устройство как часть кодированного потока битов. Таким образом, восемь наборов, наряду с аспектами симметрии по пикселам и симметрии коэффициентов, могут задавать все коэффициенты фильтрации для всех пятнадцати четвертьпикселных и полупикселных позиций пиксела. Кроме того, симметрия по пикселам может существовать между различными из этих пятнадцати субпикселных местоположений в вертикальной размерности и в горизонтальной размерности, но симметрия по пикселам не может существовать в диагональной размерности, по меньшей мере, для некоторых из субпикселных местоположений пятнадцати наборов. Это отсутствие симметрии по пикселам в диагональной размерности, по меньшей мере, для некоторых из этих пятнадцати местоположений позволяет улучшать интерполяции и повышать качество видео при кодировании и декодировании видео.In accordance with another aspect of the present disclosure, video encoder 22 and / or video decoder 28 may use symmetry aspects to reduce the amount of data that must be transmitted between source device 12 and target device 16 to exchange filter coefficients used in the interpolation. Video encoder 22 can determine eight sets of filter coefficients for fifteen different subpixel locations, with eight sets of filter coefficients being generated based on symmetry in coefficients and pixel symmetry for fifteen subpixel locations, and output eight sets of filter coefficients to another device as part of the encoded bitstream. Thus, eight sets, along with the aspects of pixel symmetry and coefficient symmetry, can specify all filtering coefficients for all fifteen quarter-pixel and half-pixel pixel positions. In addition, pixel symmetry may exist between different of these fifteen subpixel locations in the vertical dimension and in the horizontal dimension, but pixel symmetry may not exist in the diagonal dimension for at least some of the subpixel locations of the fifteen sets. This lack of pixel symmetry in the diagonal dimension, for at least some of these fifteen locations, allows for better interpolations and higher video quality for video encoding and decoding.

Видеодекодер 28 целевого устройства 16 может принимать восемь наборов коэффициентов фильтрации как часть кодированного потока видеобитов, формировать пятнадцать наборов коэффициентов фильтрации, соответствующих пятнадцати различным субпикселным местоположениям, на основе восьми наборов коэффициентов фильтрации, формировать интерполированные прогнозирующие данные для декодирования видео на основе одного из пятнадцати наборов коэффициентов фильтрации, при этом интерполированные прогнозирующие данные соответствуют одному из пятнадцати различных субпикселных местоположений, и декодировать один или более видеоблоков на основе интерполированных прогнозирующих данных.Video decoder 28 of the target device 16 can receive eight sets of filter coefficients as part of the encoded video bit stream, generate fifteen sets of filter coefficients corresponding to fifteen different sub-pixel locations, based on eight sets of filter coefficients, generate interpolated predictive data for video decoding based on one of the fifteen sets of coefficients filtering, while the interpolated predictive data correspond to one of the spots twenty different sub-pixel locations, and decode one or more video blocks based on interpolated predictive data.

В соответствии с другим аспектом, видеокодер 22 и/или видеодекодер 28 может использовать аналогичную интерполяционной фильтрацию относительно целопикселных позиций, чтобы формировать регулируемые целопикселные значения. Такая аналогичная интерполяционной фильтрация позволяет улучшать сжатие конкретно во время изменений освещения, выходов из затемнения или затемнений сцены, позволяет удалять шум и упрощать увеличение резкости кадров с изображениями и позволяет помогать улучшать кодирование точного перемещения объекта между последовательными видеокадрами, в частности, когда симметрия не накладывается на коэффициенты фильтрации.In accordance with another aspect, video encoder 22 and / or video decoder 28 may use similar interpolation filtering with respect to integer-pixel positions to form adjustable integer-pixel values. Such similar interpolation filtering allows you to improve compression specifically during lighting changes, exits from darkening or darkening the scene, allows you to remove noise and simplify sharpening frames with images, and helps to improve the encoding of the exact movement of an object between consecutive video frames, in particular, when the symmetry does not overlap filter coefficients.

Технологии аналогичной интерполяционной фильтрации видеокодера 22 и/или видеодекодер 28 могут включать в себя получение блоков пикселов, при этом блоки пикселов включают в себя целопикселные значения, соответствующие целопикселным позициям в рамках блоков пикселов, фильтрацию целопикселных значений на основе других целопикселных значений в рамках блока пикселов, чтобы формировать регулируемые целопикселные значения, при этом отрегулированные целопикселные значения соответствуют целопикселным позициям, и формирование прогнозного блока на основе отрегулированных целопикселных значений.Techniques for similar interpolation filtering of video encoder 22 and / or video decoder 28 may include obtaining pixel blocks, wherein pixel blocks include integer-pixel values corresponding to integer-pixel positions within pixel blocks, filtering integer-pixel values based on other integer-pixel values within the pixel block, to form adjustable integer-pixel values, while the adjusted integer-pixel values correspond to integer-pixel positions, and the formation of predictive eye based on the adjusted values tselopikselnyh.

В соответствии с другим аспектом, видеокодер 22 может формировать первые интерполированные прогнозирующие данные для кодирования видеоданных на основе первого интерполяционного фильтра, формировать вторые интерполированные прогнозирующие данные для кодирования видео для видеоданных на основе второго интерполяционного фильтра, выбирать между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи, кодировать видеоданные на основе выбора и кодировать синтаксис, чтобы указывать выбор. Первый интерполяционный фильтр может содержать неперестраиваемый интерполяционный фильтр, а второй интерполяционный фильтр может содержать адаптивный интерполяционный фильтр, но это раскрытие сущности не обязательно ограничено этими примерами.In accordance with another aspect, video encoder 22 may generate first interpolated prediction data for encoding video data based on a first interpolation filter, generate second interpolated prediction data for encoding video for video data based on a second interpolation filter, choose between first interpolated prediction data and second interpolated prediction data based on the analysis of distortion depending on the transmission speed, encode the video data ie on the basis of selection and encode syntax to indicate the selection. The first interpolation filter may contain a non-tunable interpolation filter, and the second interpolation filter may contain an adaptive interpolation filter, but this disclosure is not necessarily limited to these examples.

Кроме того, дополнительные интерполяционные фильтры также могут применяться, чтобы формировать дополнительные интерполированные прогнозирующие данные, которые также могут рассматриваться при анализе искажения в зависимости от скорости передачи. Другими словами, технологии настоящего раскрытия не ограничены формированием только первых и вторых интерполированных прогнозирующих данных на основе двух интерполяционных фильтров, но могут применяться, чтобы формировать любое множество интерполированных прогнозирующих данных на основе любого числа интерполяционных фильтров. Важно, что интерполированные прогнозирующие данные анализа искажения в зависимости от скорости передачи используются, чтобы идентифицировать то, какой фильтр следует выбирать.In addition, additional interpolation filters can also be used to generate additional interpolated predictive data, which can also be considered in the analysis of distortion depending on the transmission speed. In other words, the technologies of the present disclosure are not limited to generating only the first and second interpolated predictive data based on two interpolation filters, but can be used to generate any plurality of interpolated predictive data based on any number of interpolation filters. It is important that the interpolated predictive analysis data of distortion versus transmission rate is used to identify which filter should be selected.

В одном примере, способ может содержать формирование множества различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров, выбор из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи, кодирование видеоданных на основе выбора и кодирование синтаксиса, чтобы указывать выбор.In one example, the method may comprise generating a plurality of different versions of predictive data for encoding video data based on a plurality of different interpolation filters, selecting from a plurality of different versions of predictive data based on an analysis of distortion depending on a transmission rate, encoding the video data based on the selection, and syntax encoding so that indicate the choice.

Настоящее раскрытие также рассматривает технологию для кодирования коэффициентов фильтрации. Например, видеокодер 22 может идентифицировать набор коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео, формировать остаточные значения, ассоциированные с набором коэффициентов фильтрации, на основе прогнозирующего кодирования набора коэффициентов фильтрации относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, применять квантование к остаточным значениям и выводить квантованные остаточные значения как часть кодированного потока битов.The present disclosure also contemplates a technique for encoding filter coefficients. For example, video encoder 22 can identify a set of filter coefficients for interpolating predictive data when encoding video, generate residual values associated with a set of filter coefficients, based on predictive coding of a set of filter coefficients relative to filter coefficients associated with the non-tunable interpolation filter, apply quantization to the residual values and output quantized residual values as part of the encoded bitstream.

Видеодекодер 28 может принимать остаточные значения, ассоциированные с набором коэффициентов фильтрации, формировать набор коэффициентов фильтрации с использованием прогнозирующего декодирования на основе набора остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и применять набор коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные, используемые для прогнозирующего декодирования видеоблоков.Video decoder 28 may take residual values associated with a set of filter coefficients, generate a set of filter coefficients using predictive decoding based on a set of residual values and filter coefficients associated with a non-tunable interpolation filter, and apply a set of filter coefficients to interpolate the predictive data used for the predictive decoding video blocks.

Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера 50, который может выполнять технологии фильтрации в соответствии с настоящим раскрытием. Видеокодер 50 является одним примером специализированного компьютерного видеоустройства, упоминаемого в данном документе как "кодер". Видеокодер 50 может соответствовать видеокодеру 22 устройства 20 или видеокодеру другого устройства. Видеокодер 50 может выполнять внутреннее и взаимное кодирование блоков в рамках видеокадров, хотя компоненты внутреннего кодирования не показаны на Фиг.2 для простоты иллюстрации. Внутреннее кодирование основано на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре. Взаимное кодирование основано на временном прогнозировании, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах видеопоследовательности. Внутренний режим (I-режим) может упоминаться как пространственный режим сжатия, а взаимные режимы, такие как режим прогнозирования (P-режим) или двунаправленный режим (режим B), могут упоминаться как временные режимы сжатия. Технологии этого раскрытия сущности применяются во время взаимного кодирования, и, следовательно, модули внутреннего кодирования, к примеру, модуль пространственного прогнозирования, не проиллюстрированы на Фиг.2 для простоты и удобства иллюстрации.FIG. 2 is a block diagram illustrating an example of a video encoder 50 that can perform filtering techniques in accordance with the present disclosure. Video encoder 50 is one example of a dedicated computer video device, referred to herein as a “coder”. Video encoder 50 may correspond to video encoder 22 of device 20 or a video encoder of another device. Video encoder 50 may perform intra and inter-coding of blocks within the frames of video frames, although intra-coding components are not shown in FIG. 2 for ease of illustration. Intra-coding is based on spatial prediction to reduce or remove spatial redundancy of video in a given video frame. Mutual coding is based on temporal prediction to reduce or remove temporal video redundancy in adjacent frames of a video sequence. The internal mode (I-mode) may be referred to as spatial compression mode, and mutual modes, such as the prediction mode (P-mode) or bidirectional mode (mode B), may be referred to as temporary compression modes. The technologies of this disclosure are used during inter-coding, and therefore, internal coding modules, for example, a spatial prediction module, are not illustrated in FIG. 2 for simplicity and convenience of illustration.

Как показано на Фиг.2, видеокодер 50 принимает текущий видеоблок в видеокадре, который должен быть кодирован. В примере по Фиг.2, видеокодер 50 включает в себя модуль 32 прогнозирования, запоминающее устройство 34, сумматор 48, модуль 38 преобразования, модуль 40 квантования и модуль 46 энтропийного кодирования. Для восстановления видеоблока видеокодер 50 также включает в себя модуль 42 обратного квантования, модуль 44 обратного преобразования и сумматор 51. Фильтр удаления блочности (не показан) также может быть включен, чтобы фильтровать границы блоков, чтобы удалять артефакты блочности из восстановленного видео. Если требуется, фильтр удаления блочности типично должен фильтровать вывод сумматора 51.As shown in FIG. 2, video encoder 50 receives the current video block in a video frame to be encoded. In the example of FIG. 2, video encoder 50 includes a prediction module 32, a memory 34, an adder 48, a transform module 38, a quantization module 40, and an entropy encoding module 46. To recover the video block, video encoder 50 also includes an inverse quantization module 42, an inverse transform module 44, and an adder 51. A deblocking filter (not shown) may also be included to filter block boundaries to remove blocking artifacts from the reconstructed video. If desired, the deblocking filter typically should filter the output of the adder 51.

Модуль 32 прогнозирования может включать в себя модуль 35 оценки движения (ME) и модуль 37 компенсации движения (MC). Фильтр 37 может быть включен в модуль 32 прогнозирования и может активироваться посредством одного или обоих из ME-модуля 35 и MC-модуля 37, чтобы выполнять интерполяционную или аналогичную интерполяционной фильтрацию как часть оценки движения и/или компенсации движения, согласно настоящему раскрытию. Фильтр 37 может фактически представлять множество различных фильтров, чтобы упрощать многочисленные различные типы интерполяционной и аналогичной интерполяционной фильтрации. Таким образом, модуль 32 прогнозирования может включать в себя множество интерполяционных или аналогичных интерполяционным фильтров. В ходе процесса кодирования видеокодер 50 принимает видеоблок, который должен кодироваться (помеченный "видеоблок" на Фиг.2) и модуль 32 прогнозирования выполняет кодирование взаимного прогнозирования, чтобы формировать прогнозный блок (помеченный "прогнозный блок" на Фиг.2). В частности, ME-модуль 35 может выполнять оценку движения, чтобы идентифицировать прогнозный блок в запоминающем устройстве 34, и MC-модуль 37 может выполнять компенсацию движения, чтобы формировать прогнозный блок.Prediction module 32 may include motion estimation (ME) module 35 and motion compensation (MC) module 37. The filter 37 may be included in the prediction module 32 and may be activated by one or both of the ME module 35 and the MC module 37 to perform interpolation or similar interpolation filtering as part of the motion estimation and / or motion compensation, according to the present disclosure. The filter 37 may actually represent many different filters to simplify the many different types of interpolation and similar interpolation filtering. Thus, the prediction unit 32 may include a plurality of interpolation or similar interpolation filters. During the encoding process, video encoder 50 receives a video block to be encoded (labeled “video block” in FIG. 2) and the prediction unit 32 performs mutual prediction encoding to form a prediction block (labeled “forecast block” in FIG. 2). In particular, the ME module 35 may perform motion estimation to identify the predictive block in the memory 34, and the MC module 37 may perform motion compensation to form the predictive block.

Оценка движения типично считается процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение прогнозного блока в рамках прогнозного или опорного кадра (или другой кодированной единицы, к примеру, серии последовательных макроблоков) относительно блока, который должен быть кодирован в рамках текущего кадра (или другой кодированной единицы). Опорный кадр (или часть кадра) может временно находиться до или после видеокадра (или части видеокадра), которому принадлежит текущий видеоблок. Компенсация движения типично считается процессом выборки или формирования прогнозного блока из запоминающего устройства 34 либо, возможно, интерполяции или иного формирования фильтрованных прогнозирующих данных на основе вектора движения, определенного посредством оценки движения.Motion estimation is typically considered the process of generating motion vectors that evaluate motion for video blocks. The motion vector, for example, can indicate the offset of the predictive block within the predictive or reference frame (or other coded unit, for example, a series of consecutive macroblocks) relative to the block to be encoded within the current frame (or other coded unit). The reference frame (or part of the frame) may temporarily be located before or after the video frame (or part of the video frame) to which the current video block belongs. Motion compensation is typically considered the process of sampling or generating a prediction block from memory 34, or possibly interpolating or otherwise generating filtered predictive data based on a motion vector determined by motion estimation.

ME-модуль 35 выбирает соответствующий вектор движения для видеоблока, который должен кодироваться, посредством сравнения видеоблока с видеоблоками одного или более опорных кадров (к примеру, предыдущего и/или последующего кадра). ME-модуль 35 может выполнять оценку движения с дробно-пикселной точностью, иногда называемую дробно-пикселной, частично-пикселной или субпикселной оценкой движения. По сути, термины дробно-пикселная, частично-пикселная или субпикселная оценка движения могут использоваться взаимозаменяемо. При оценке дробно-пикселного движения ME-модуль 35 может выбирать вектор движения, который указывает смещение в местоположение, отличное от целопикселного местоположения. Таким образом, оценка дробно-пикселного движения дает возможность модулю 32 прогнозирования отслеживать движение с более высокой точностью, чем целопикселные местоположения (или полнопикселные), чтобы тем самым формировать более точный прогнозный блок. Оценка дробно-пикселного движения может иметь полупикселную точность, четверть-пикселную точность, точность в одну восьмую пиксела или любую большую точность. ME-модуль 35 может активировать фильтр(ы) 39 для всех требуемых интерполяций в ходе процесса оценки движения.The ME module 35 selects the corresponding motion vector for the video block to be encoded by comparing the video block with the video blocks of one or more reference frames (for example, a previous and / or subsequent frame). The ME module 35 may perform motion estimation with fractional-pixel accuracy, sometimes referred to as fractional-pixel, partial-pixel, or sub-pixel motion estimation. In fact, the terms fractional-pixel, partial-pixel, or sub-pixel motion estimation can be used interchangeably. In evaluating the fractional-pixel motion, the ME module 35 may select a motion vector that indicates an offset to a location other than the integer-pixel location. Thus, the evaluation of the fractional-pixel motion enables the prediction unit 32 to track the motion with higher accuracy than the integer-pixel locations (or full-pixel) to thereby form a more accurate prediction unit. The fractional-pixel motion estimation may have half-pixel accuracy, quarter-pixel accuracy, one-eighth pixel accuracy, or any greater accuracy. The ME module 35 can activate filter (s) 39 for all required interpolations during the motion estimation process.

Чтобы выполнять компенсацию дробно-пикселного движения, MC-модуль 37 может выполнять интерполяцию (иногда называемую интерполяционной фильтрацией), чтобы формировать данные при субпикселном разрешении (упоминаемые в данном документе как субпикселные или дробно-пикселные значения). MC-модуль 37 может активировать фильтр(ы) 39 для этой интерполяции. Модуль 32 прогнозирования может выполнять интерполяцию (или аналогичную интерполяционной фильтрацию целых пикселов) с использованием технологий, описанных в данном документе.To compensate for fractional-pixel motion, the MC module 37 may perform interpolation (sometimes called interpolation filtering) to generate data at sub-pixel resolution (referred to as sub-pixel or fractional-pixel values in this document). MC module 37 may activate filter (s) 39 for this interpolation. Prediction unit 32 may perform interpolation (or similar interpolation filtering of whole pixels) using the techniques described herein.

После того, как вектор движения для видеоблока, который должен кодироваться, выбирается посредством ME-модуля 35, MC-модуль 37 формирует прогнозный видеоблок, ассоциированный с этим вектором движения. MC-модуль 37 может выбирать прогнозный блок из запоминающего устройства 34 на основе вектора движения, определенного посредством MC-модуля 35. В случае вектора движения с дробно-пикселной точностью, MC-модуль 37 фильтрует данные из запоминающего устройства 34, чтобы интерполировать такие данные до субпикселного разрешения, к примеру, при вызове фильтра(ов) 39 для этого процесса. В некоторых случаях, технология или режим интерполяционной фильтрации, который использован, чтобы формировать прогнозирующие субпикселные данные, может указываться как один или более элементов синтаксиса интерполяции для модуля 46 энтропийного кодирования для включения в кодированный поток битов. Действительно, некоторые аспекты настоящего раскрытия касаются использования симметрии по пикселам и симметрии по коэффициентам, чтобы уменьшать величину синтаксиса, который должен быть передан.After the motion vector for the video block to be encoded is selected by the ME module 35, the MC module 37 generates a predictive video block associated with this motion vector. The MC module 37 may select a prediction block from the memory 34 based on the motion vector determined by the MC module 35. In the case of a fractional pixel precision motion vector, the MC module 37 filters the data from the memory 34 to interpolate such data to subpixel resolution, for example, when calling filter (s) 39 for this process. In some cases, the interpolation filtering technology or mode that is used to generate predictive subpixel data may be indicated as one or more interpolation syntax elements for entropy encoding unit 46 to be included in the encoded bitstream. Indeed, some aspects of the present disclosure relate to the use of pixel symmetry and coefficient symmetry to reduce the amount of syntax to be transmitted.

После того, как модуль 32 прогнозирования формирует прогнозный блок, видеокодер 50 формирует остаточный видеоблок (помеченный "остаточный блок" на Фиг.2) посредством вычитания прогнозного блока из кодируемого исходного видеоблока. Сумматор 48 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 38 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий остаточные блочные коэффициенты преобразования. Модуль 38 преобразования, например, может выполнять другие преобразования, заданные посредством стандарта H.264, которые являются концептуально аналогичными DCT. Вейвлет-преобразования, целочисленные преобразования, субполосные преобразования или другие типы преобразований также могут использоваться. В любом случае, модуль 38 преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пикселной области в частотную область.After the prediction unit 32 generates a prediction block, the video encoder 50 forms a residual video block (labeled “residual block” in FIG. 2) by subtracting the prediction block from the encoded source video block. Adder 48 represents the component or components that perform this subtraction operation. The transform unit 38 applies a transform, such as a discrete cosine transform (DCT) or a conceptually similar transform, to the residual block, forming a video block containing residual block transform coefficients. Conversion module 38, for example, may perform other transformations defined by the H.264 standard, which are conceptually similar to DCTs. Wavelet transforms, integer transforms, subband transforms, or other types of transforms can also be used. In any case, the transform unit 38 applies the transform to the residual block, forming a block of residual transform coefficients. The conversion may convert residual information from the pixel region to the frequency domain.

Модуль 40 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. После квантования, модуль 46 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 46 энтропийного кодирования может выполнять CAVLC, CABAC или другую технологию энтропийного кодирования.Quantization module 40 quantizes the residual transform coefficients to further reduce the bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. After quantization, entropy encoding unit 46 entropy encodes the quantized transform coefficients. For example, entropy encoding unit 46 may perform CAVLC, CABAC, or other entropy encoding technology.

Модуль 46 энтропийного кодирования также может кодировать один или более элементов синтаксиса прогнозирования, полученных из модуля 32 прогнозирования или другого компонента видеокодера 50. Один или более элементов синтаксиса прогнозирования могут включать в себя режим кодирования, один или более векторов движения, технологию интерполяции, которая использована для того, чтобы формировать субпикселные данные, набор или поднабор коэффициентов фильтрации или другую информацию, ассоциированную с формированием прогнозного блока. Модуль 41 прогнозирования коэффициентов и квантования может прогнозирующе кодировать и квантовать синтаксис прогнозирования, к примеру, коэффициенты фильтрации, согласно некоторым аспектам этого раскрытия сущности. После энтропийного кодирования посредством модуля 46 энтропийного кодирования, кодированное видео и элементы синтаксиса могут быть переданы в другое устройство или заархивированы для последующей передачи или извлечения.Entropy encoding unit 46 may also encode one or more prediction syntax elements obtained from prediction unit 32 or another component of video encoder 50. One or more prediction syntax elements may include an encoding mode, one or more motion vectors, interpolation technology that is used to in order to generate subpixel data, a set or subset of filter coefficients, or other information associated with the formation of the prediction block. The coefficient prediction and quantization module 41 can predictively encode and quantize the prediction syntax, for example, filter coefficients, according to some aspects of this disclosure. After entropy encoding by entropy encoding unit 46, the encoded video and syntax elements may be transferred to another device or archived for subsequent transmission or retrieval.

Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пикселной области, к примеру, для последующего использования в качестве опорного блока. Восстановленный остаточный блок (помеченный "восстановленный остаточный блок" на Фиг.2) может представлять восстановленную версию остаточного блока, предоставленного в модуль 38 преобразования. Восстановленный остаточный блок может отличаться от остаточного блока, сформированного посредством сумматора 48, вследствие потери детализации, вызываемой посредством операций квантования и обратного квантования. Сумматор 51 прибавляет восстановленный остаточный блок к блоку прогнозирования с компенсацией движения, сформированному посредством модуля 32 прогнозирования, чтобы формировать восстановленный видеоблок для хранения в запоминающем устройстве 34. Восстановленный видеоблок может использоваться посредством модуля 32 прогнозирования в качестве опорного блока, который может использоваться для того, чтобы затем кодировать блок в последующем видеокадре или последующей кодированной единице.The inverse quantization unit 42 and the inverse transform unit 44 apply inverse quantization and inverse transform, respectively, to restore the residual block in the pixel region, for example, for subsequent use as a reference block. The reconstructed residual block (labeled “reconstructed residual block” in FIG. 2) may represent a reconstructed version of the residual block provided in the conversion unit 38. The reconstructed residual block may differ from the residual block formed by the adder 48 due to the loss of detail caused by the quantization and inverse quantization operations. The adder 51 adds the reconstructed residual block to the motion compensation prediction block generated by the prediction unit 32 to form the reconstructed video block for storage in the memory 34. The reconstructed video block can be used by the prediction unit 32 as a reference block, which can be used to then encode the block in a subsequent video frame or subsequent encoded unit.

Как описано выше, модуль 32 прогнозирования может выполнять оценку движения с дробно-пикселной точностью (или субпикселной). Когда модуль 32 прогнозирования использует оценку дробно-пикселного движения, модуль 32 прогнозирования может формировать данные при субпикселном разрешении (к примеру, субпикселные или дробно-пикселные значения) с помощью операций интерполяции, описанных в этом раскрытии сущности. Другими словами, операции интерполяции используются, чтобы вычислять значения в позициях между целопикселными позициями. Субпикселные позиции, расположенные на половине расстояния между целопикселными позициями, могут упоминаться как полупикселные позиции (в половину пиксела), субпикселные позиции, расположенные на половине расстояния между целопикселной позицией и полупикселной позицией, могут упоминаться как четверть-пикселные позиции (в одну четвертую пиксела), субпикселные позиции, расположенные на половине расстояния между целопикселной позицией (или полупикселной позицией) и четверть-пикселной позицией, упоминаются как позиции в одну восьмую пиксела (одну восьмую) и т.п.As described above, the prediction unit 32 may perform motion estimation with fractional-pixel accuracy (or subpixel). When the prediction unit 32 uses a fractional-pixel motion estimate, the prediction unit 32 can generate data at sub-pixel resolution (eg, sub-pixel or fractional-pixel values) using the interpolation operations described in this disclosure. In other words, interpolation operations are used to calculate values at positions between integer-pixel positions. Sub-pixel positions located halfway between integer-pixel positions may be referred to as half-pixel positions (half a pixel), sub-pixel positions located halfway between the integer-pixel position and half-pixel positions may be referred to as quarter-pixel positions (one fourth of a pixel), sub-pixel positions located half the distance between the integer-pixel position (or half-pixel position) and the quarter-pixel position are referred to as one-eighth pi positions sat (one-eighth), etc.

Фиг.3 является концептуальной схемой, иллюстрирующей целопикселные позиции (или полный пиксел), ассоциированные с прогнозирующими данными, и субпикселные позиции (или дробный пиксел), ассоциированные с интерполированными прогнозирующими данными. В концептуальной иллюстрации по Фиг.3, различные прямоугольники представляют пикселные и субпикселные местоположения позиции в пиксел и субпиксел в рамках кадра или блока кадра. Заглавные буквы (в прямоугольниках со сплошными линиями) представляют целопикселные местоположения, при этом строчные буквы (в прямоугольниках с пунктирными линиями) представляют субпикселные местоположения. В частности, местоположения пикселов A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 и F1-F6 представляют матрицу 6×6 целопикселных местоположений в рамках кадра, серии последовательных макроблоков или другой кодированной единицы. Субпикселные местоположения "a"-"o" представляют пятнадцать субпикселных местоположений, ассоциированных с целым пикселом C3, к примеру, между целопикселными местоположениями C3, C4, D3 и D4. Аналогичные субпикселные местоположения могут существовать для каждого целопикселного местоположения. Субпикселные местоположения "a"-"o" представляют каждое полупикселное и четверть-пикселное местоположение пиксела, ассоциированное с целым пикселом C3.3 is a conceptual diagram illustrating integer-pixel positions (or a full pixel) associated with predictive data and sub-pixel positions (or a fractional pixel) associated with interpolated predictive data. In the conceptual illustration of FIG. 3, various rectangles represent pixel and subpixel position locations in a pixel and subpixel within a frame or block of a frame. Uppercase letters (in rectangles with solid lines) represent integer-pixel locations, while lowercase letters (in rectangles with dashed lines) represent subpixel locations. In particular, pixel locations A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 and F1-F6 represent a 6 × 6 matrix of integer-pixel locations within a frame, a series of consecutive macroblocks, or another coded unit. The sub-pixel locations “a” to “o” represent the fifteen sub-pixel locations associated with the whole pixel C3, for example, between the integer pixel locations C3, C4, D3 and D4. Similar subpixel locations may exist for each integer pixel location. The sub-pixel locations "a" - "o" represent each half-pixel and quarter-pixel pixel location associated with the whole pixel C3.

Целопикселные местоположения могут быть ассоциированы с элементом физического датчика, таким как фотодиод, когда видеоданные первоначально сформированы. Фотодиод может измерять силу света в источнике света в местоположении датчика и ассоциировать значение силы света пиксела с целопикселным местоположением. С другой стороны, каждое целопикселное местоположение может иметь ассоциированный набор из пятнадцати субпикселных местоположений (или, возможно, больше). Число субпикселных местоположений, ассоциированных с целопикселными местоположениями, может зависеть от требуемой точности. В примере, проиллюстрированном на Фиг.3, требуемая точность составляет четверть-пикселную точность, когда каждое из целопикселных местоположений соответствует пятнадцати различным субпикселным позициям. Большее или меньшее число субпикселных позиций может быть ассоциировано с каждым целопикселным местоположением на основе требуемой точности. Для полупикселной точности, например, каждое целопикселное местоположение может соответствовать трем субпикселным позициям. В качестве другого примера, каждое из целопикселных местоположений может соответствовать шестидесяти трем субпикселным позициям для точности в одну восьмую пиксела. Каждое местоположение пиксела может задавать одно или более пикселных значений, к примеру, одно или более значений сигнала яркости и сигнала цветности.Integer-pixel locations may be associated with a physical sensor element, such as a photodiode, when video data is initially generated. A photodiode can measure the luminous intensity at the light source at the location of the sensor and associate the luminous intensity value of the pixel with an integer-pixel location. On the other hand, each integer-pixel location may have an associated set of fifteen sub-pixel locations (or possibly more). The number of sub-pixel locations associated with integer-pixel locations may depend on the accuracy required. In the example illustrated in FIG. 3, the required accuracy is quarter-pixel accuracy when each of the integer-pixel locations corresponds to fifteen different sub-pixel positions. A larger or smaller number of sub-pixel positions may be associated with each integer-pixel location based on the required accuracy. For half-pixel accuracy, for example, each integer-pixel location may correspond to three sub-pixel positions. As another example, each of the integer-pixel locations may correspond to sixty-three sub-pixel positions for an accuracy of one-eighth of a pixel. Each pixel location may specify one or more pixel values, for example, one or more values of a luminance signal and a color signal.

Y может представлять сигнал яркости, а Cb и Cr могут представлять два различных значения сигнала цветности трехмерного цветового пространства YCbCr. Каждое местоположение пиксела может фактически задавать три пикселных значения для трехмерного цветового пространства. Однако технологии настоящего раскрытия могут упоминаться как прогнозирование относительно одной размерности для простоты. В степени, в которой технологии описываются относительно пикселных значений в одной размерности, аналогичные технологии могут быть расширены на другие размерности.Y can represent a luminance signal, and Cb and Cr can represent two different values of the color signal of the three-dimensional color space YCbCr. Each pixel location can actually specify three pixel values for a three-dimensional color space. However, the techniques of the present disclosure may be referred to as single dimensional prediction for simplicity. To the extent that technologies are described with respect to pixel values in one dimension, similar technologies can be extended to other dimensions.

В примере по Фиг.3 субпикселные местоположения, ассоциированные с целым пикселом "C3", проиллюстрированы для четверть-пикселной точности. Пятнадцать субпикселных позиций, ассоциированных с пикселом C3, помечаются как "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n" и "o". Большинство других дробных местоположений, ассоциированных с другими целопикселными местоположениями, не показано для простоты (кроме используемых для того, чтобы формировать одно или более 15 различных дробных местоположений, ассоциированных с местоположением пиксела C3, как подробнее описано ниже). Субпикселные местоположения "b", "h" и "j" могут упоминаться как полупикселные местоположения, а субпикселные местоположения "a", "c", "d", "e", "f", "g", "i", "k", "l", "m" и "o" могу упоминаться как четверть-пикселные местоположения.In the example of FIG. 3, sub-pixel locations associated with the whole pixel “C3” are illustrated for quarter-pixel accuracy. Fifteen subpixel positions associated with pixel C3 are labeled as "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" , "k", "l", "m", "n" and "o". Most other fractional locations associated with other integer-pixel locations are not shown for simplicity (other than those used to form one or more of 15 different fractional locations associated with the location of pixel C3, as described in more detail below). The sub-pixel locations "b", "h" and "j" may be referred to as half-pixel locations, and the sub-pixel locations "a", "c", "d", "e", "f", "g", "i", "k", "l", "m" and "o" may be referred to as quarter-pixel locations.

Модуль 32 прогнозирования видеокодера 40 может определять пикселные значения для субпикселных местоположений "a"-"o" с использованием интерполяционной фильтрации посредством MC-модуля 37. Согласно стандарту ITU-T H.264, например, модуль 32 прогнозирования может определять пикселные значения для полупикселных местоположений с использованием 6-отводного интерполяционного фильтра, такого как фильтр Винера. В случае стандарта H.264 коэффициенты фильтрации для 6-отводного интерполяционного фильтра типично составляют [1, -5, 20, 20, -5, 1], хотя могут использоваться другие коэффициенты. Модуль 32 прогнозирования может применять интерполяционный фильтр сначала в горизонтальном направлении, а затем в вертикальном направлении, или наоборот. Для полупикселных позиций "b" и "h", каждый отвод может соответствовать целопикселной позиции в горизонтальном и вертикальном направлении, соответственно. В частности, для полупикселной позиции "b", отводы 6-отводного фильтра соответствуют C1, C2, C3, C4, C5 и C6. Аналогично, для полупикселной позиции "h", отводы 6-отводного фильтра соответствуют A3, B3, C3, D3, E3 и F3. Например, пикселные значения для субпикселных позиций "b" и "h" могут вычисляться с использованием уравнений (1) и (2):Prediction unit 32 of video encoder 40 may determine pixel values for sub-pixel locations “a” to “o” using interpolation filtering by MC module 37. According to ITU-T H.264, for example, prediction unit 32 may determine pixel values for half-pixel locations using a 6-tap interpolation filter, such as a Wiener filter. In the case of the H.264 standard, the filter coefficients for a 6-tap interpolation filter are typically [1, -5, 20, 20, -5, 1], although other coefficients may be used. Prediction unit 32 may apply an interpolation filter first in the horizontal direction and then in the vertical direction, or vice versa. For half-pixel positions "b" and "h", each tap can correspond to an integer-pixel position in the horizontal and vertical directions, respectively. In particular, for the half-pixel position “b”, the taps of the 6-tap filter correspond to C1, C2, C3, C4, C5 and C6. Similarly, for the half-pixel position “h”, the taps of the 6-tap filter correspond to A3, B3, C3, D3, E3 and F3. For example, pixel values for sub-pixel positions “b” and “h” can be calculated using equations (1) and (2):

b=((C1-5*C2+20*C3+20*C4-5*C5+C6)+16)/32b = ((C1-5 * C2 + 20 * C3 + 20 * C4-5 * C5 + C6) +16) / 32 (1)(one) h=((A3-5*B3+20*C3+20*D3-5*E3+F3)+16)/32h = ((A3-5 * B3 + 20 * C3 + 20 * D3-5 * E3 + F3) +16) / 32 (2)(2)

Для полупикселной позиции "j", отводы 6-отводного фильтра соответствуют сами себе для интерполяции горизонтально между позициями C1-C6 и D1-D6 или вертикально между позициями A3-F3 и A4-F4. Полупикселное местоположение "j" может вычисляться с 6-отводным фильтром, который использует ранее интерполированные пикселные значения полупикселных позиций, к примеру, в соответствии с одним из уравнений (3) или (4):For the half-pixel position "j", the taps of the 6-tap filter correspond to themselves for interpolation horizontally between positions C1-C6 and D1-D6 or vertically between positions A3-F3 and A4-F4. The half-pixel location “j” can be calculated with a 6-tap filter that uses previously interpolated pixel values of half-pixel positions, for example, in accordance with one of equations (3) or (4):

j=((aa-5*bb+20*b+20*hh-5*ii+jj)+16)/32j = ((aa-5 * bb + 20 * b + 20 * hh-5 * ii + jj) +16) / 32 (3)(3) j=((cc-5*dd+20*h+20*ee-5*ff+gg)+16)/32j = ((cc-5 * dd + 20 * h + 20 * ee-5 * ff + gg) +16) / 32 (4)(four)

где (как проиллюстрировано на Фиг.3) aa соответствует интерполяции между A3, и A4, bb соответствует интерполяции между B3 и B4, b соответствует интерполяции между C3 и C4, hh соответствует интерполяции между D3 и D4, ii соответствует интерполяции между E3 и E4, и jj соответствует интерполяции между F3 и F4. В уравнении 4, cc соответствует интерполяции между C1 и D1, dd соответствует интерполяции между C2 и D2, h соответствует интерполяции между C3 и D3, ee соответствует интерполяции между C4 и D4, ff соответствует интерполяции между C5 и D5, и gg соответствует интерполяции между C6 и D6.where (as illustrated in FIG. 3) aa corresponds to interpolation between A3, and A4, bb corresponds to interpolation between B3 and B4, b corresponds to interpolation between C3 and C4, hh corresponds to interpolation between D3 and D4, ii corresponds to interpolation between E3 and E4, and jj corresponds to the interpolation between F3 and F4. In equation 4, cc corresponds to interpolation between C1 and D1, dd corresponds to interpolation between C2 and D2, h corresponds to interpolation between C3 and D3, ee corresponds to interpolation between C4 and D4, ff corresponds to interpolation between C5 and D5, and gg corresponds to interpolation between C6 and D6.

Согласно стандарту H.264, модуль 32 прогнозирования может определять пикселные значения в четверть-пикселных местоположениях "a", "c", "d", "e", "f", "g", "i", "k", "l", "m", "n" и "o" с использованием билинейного интерполяционного фильтра и пикселных значений окружающих целопикселных и полупикселных местоположений. Например, модуль 32 прогнозирования может определять пикселное значение, ассоциированное с субпикселной позицией "a", с помощью пикселных значений C3 и "b", определять пикселное значение, ассоциированное с субпикселной позицией "c", с помощью пикселных значений "b" и C4, и т.п.According to the H.264 standard, the prediction unit 32 can determine pixel values at quarter-pixel locations "a", "c", "d", "e", "f", "g", "i", "k", "l", "m", "n" and "o" using a bilinear interpolation filter and the pixel values of the surrounding integer-pixel and half-pixel locations. For example, prediction unit 32 may determine the pixel value associated with subpixel position "a" using pixel values C3 and "b", determine the pixel value associated with subpixel position "c" using pixel values "b" and C4, etc.

Фактический фильтр, который применяется MC-модулем 37, чтобы формировать интерполированные данные в субпикселных местоположениях, может иметь широкий спектр реализаций. В качестве одного примера, модуль 32 прогнозирования может использовать адаптивную интерполяционную фильтрацию (AIF), как описано ниже, чтобы задавать интерполированные значения. Комитет ITU-T SG16/Q.6/VCEG (экспертная группа в области кодирования видео) исследует технологии кодирования, которые предлагают более высокую эффективность кодирования, чем H.264 и, в частности, AIF. AIF предлагает большое усиление при кодировании по сравнению с интерполяционной фильтрацией, используемой в стандарте H.264, в частности, для видеопоследовательностей с высоким разрешением (к примеру, 720i/p или 1080i/p). В AIF интерполяционный фильтр для каждой субпикселной позиции аналитически вычисляется для каждого видеокадра посредством минимизации энергии ошибок прогнозирования. Это помогает учитывать наложение спектров, ошибки квантования и оценки движения, шум камеры или другой артефакт, содержащийся в исходных и опорных видеокадрах. Аналитически извлеченные коэффициенты адаптивной фильтрации для каждого кадра затем прогнозируются, квантуются, кодируются и отправляются в потоке видеобитов. Некоторые из технологий настоящего раскрытия могут работать в рамках схемы AIF, а также многих других схем интерполяции.The actual filter that the MC module 37 applies to generate interpolated data at sub-pixel locations can have a wide range of implementations. As one example, prediction module 32 may use adaptive interpolation filtering (AIF), as described below, to specify interpolated values. The ITU-T SG16 / Q.6 / VCEG (video coding expert group) is investigating coding technologies that offer higher coding efficiency than H.264 and, in particular, AIF. AIF offers great coding gain over the interpolation filtering used in the H.264 standard, in particular for high-resolution video sequences (e.g. 720i / p or 1080i / p). In AIF, an interpolation filter for each sub-pixel position is analytically calculated for each video frame by minimizing the energy of prediction errors. This helps to take into account the imposition of spectra, quantization errors and motion estimates, camera noise or other artifact contained in the source and reference video frames. Analytically extracted adaptive filtering coefficients for each frame are then predicted, quantized, encoded, and sent in the video bit stream. Some of the techniques of this disclosure may work within the framework of the AIF scheme, as well as many other interpolation schemes.

Предусмотрено множество различных типов схем AIF согласно аспектам настоящего раскрытия. Например, первая схема - двумерный неразделимый AIF (NS-AIF), вторая - разделимый AIF (S-AIF) и третья - AIF с направленными фильтрами (D-AIF). Хотя каждая из этих схем AIF использует различные технологии интерполяции и поддержку, все три схемы AIF могут использовать аналогичные аналитические процессы, чтобы извлекать коэффициенты фильтрации, что поясняется ниже с помощью неразделимого AIF в качестве примера.There are many different types of AIF schemes in accordance with aspects of the present disclosure. For example, the first scheme is a two-dimensional inseparable AIF (NS-AIF), the second is a separable AIF (S-AIF), and the third is an AIF with directional filters (D-AIF). Although each of these AIF schemes uses different interpolation technologies and support, all three AIF schemes can use similar analytical processes to extract filtering coefficients, which is explained below using an inseparable AIF as an example.

Предположим, что двумерный неразделимый фильтр 6×6 имеет коэффициенты

Figure 00000002
, где i, j=0,..., 5, а SP представляет одну из 15 субпикселных позиций ("a"-"o"), показанных на Фиг.3. Следует отметить, что 6 из 15 субпикселных позиций, т.е. "a", "b", "c", "d", "h" и "l", являются одномерными (1D) субпикселными позициями, и модуль 32 прогнозирования может использовать 6-отводный интерполяционный фильтр, чтобы интерполировать такие данные. Субпикселные позиции "a", "b", "c", "d", "h" и "l" являются одномерными в том смысле, что они находятся в горизонтальной или вертикальной строке между двумя целопикселными позициями. Кроме того, допустим, что прогнозирующие пикселы в целопикселных позициях (A1-F6 на Фиг.3) в опорном кадре принимают пикселные значения P i,j, где i, j = 0…5. Таким образом, A1 принимает значение Р 0,0, …, A6 принимает значение Р 5,0, …, F1 принимает значение Р 5,0, …, и F6 принимает значение Р 5,5. Затем, интерполированное значение p SP в субпикселной позиции SP, SP∈{a,…,0}, может вычисляться посредством модуля 32 прогнозирования с использованием следующего уравнения:Suppose a two-dimensional inseparable 6 × 6 filter has coefficients
Figure 00000002
, where i, j = 0, ..., 5, and SP represents one of the 15 subpixel positions ("a" - "o") shown in FIG. 3. It should be noted that 6 out of 15 subpixel positions, i.e. "a", "b", "c", "d", "h" and "l" are one-dimensional (1D) sub-pixel positions, and prediction unit 32 may use a 6-tap interpolation filter to interpolate such data. The subpixel positions "a", "b", "c", "d", "h" and "l" are one-dimensional in the sense that they are in a horizontal or vertical row between two integer-pixel positions. In addition, suppose that the predictive pixels in integer-pixel positions (A1-F6 in FIG. 3) in the reference frame take pixel values P i, j , where i, j = 0 ... 5. Thus, A1 takes a value of P 0.0 , ..., A6 takes a value of P 5.0 , ..., F1 takes a value of P 5.0 , ..., and F6 takes a value of P 5.5 . Then, the interpolated value p SP at the sub-pixel position SP, SP∈ {a, ..., 0}, can be calculated by the prediction unit 32 using the following equation:

Figure 00000003
Figure 00000003

Пусть S x,y является пикселным значением в текущем видеокадре в позиции (x, y).Let S x, y be the pixel value in the current video frame at position (x, y) .

Figure 00000004
Figure 00000004

где (mvx, mvy) - это вектор движения, (mvx,mvy) - это целочисленный компонент вектора движения, и FO - это смещение фильтра. Значение

Figure 00000005
является соответствующей позицией пиксела в опорных кадрах. Например, в случае 6-отводного фильтра, FO=6/2-1=2. Для каждой субпикселной позиции SP энергия (e SP)2 ошибок прогнозирования между фактическим пикселным значением в текущем кадре и интерполированным значением может накапливаться посредством модуля 32 прогнозирования для всех пикселов, которые имеют точность вектора движения, соответствующую субпикселной позиции SP. Энергия ошибок прогнозирования может вычисляться посредством модуля 32 прогнозирования с использованием следующего уравнения:Where(mvx, mvy) is the motion vector, (mvx, mvy) is the integer component of the motion vector, and FO is the filter offset. Value
Figure 00000005
 is the corresponding pixel position in the reference frames. For example, in the case of a 6-tap filter, FO = 6 / 2-1 = 2. For each subpixel position SP energy(e SP) 2 prediction errors between the actual pixel value in the current frame and the interpolated value can be accumulated by the prediction unit 32 for all pixels that have a motion vector accuracy corresponding to the sub-pixel position SP. The energy of the prediction errors can be calculated by the prediction unit 32 using the following equation:

Figure 00000006
Figure 00000006

Для каждой из субпикселных позиций a-o MC-модуль 37 может устанавливать отдельную систему уравнений посредством вычисления производной (e SP)2 относительно коэффициентов фильтрации

Figure 00000002
. Число уравнений в этом случае равно числу коэффициентов фильтрации, используемых для текущей субпикселной позиции SP. Для каждой двумерной (двумерной) субпикселной позиции "e", "f", "g", "i", "j", "k", "m", "n" и "o", модуль 32 прогнозирования может использовать 6×6-отводный двумерный интерполяционный фильтр. Субпикселные позиции "e", "f", "g", "i", "j", "k", "m", "n" и o" являются двумерными в том смысле, что они не находятся в вертикальной строке или горизонтальной строке между двумя целопикселными позициями. В этом случае, система из тридцати шести уравнений с тридцатью шестью неизвестными может разрешаться посредством MC-модуля 37. Оставшиеся одномерные субпикселные позиции "a", "b", "c", "d", "h", и "l" могут требовать только одномерного интерполяционного фильтра (к примеру, одномерного 6-отводного фильтра). В случае одномерного 6-отводного фильтра система из шести уравнений может разрешаться посредством MC-модуля 37.For each of the subpixel positions ao, the MC module 37 can establish a separate system of equations by calculating the derivative (e SP) 2 relative to the filter coefficients
Figure 00000002
. The number of equations in this case is equal to the number of filtering coefficients used for the current subpixel position SP . For each two-dimensional (two-dimensional) subpixel position “e”, “f”, “g”, “i”, “j”, “k”, “m”, “n” and “o”, the prediction unit 32 may use 6 × 6-tap two-dimensional interpolation filter. The subpixel positions "e", "f", "g", "i", "j", "k", "m", "n" and o "are two-dimensional in the sense that they are not in a vertical row or horizontal line between two integer-pixel positions. In this case, a system of thirty-six equations with thirty-six unknowns can be resolved by means of the MC module 37. The remaining one-dimensional subpixel positions "a", "b", "c", "d", "h "and" l "may require only a one-dimensional interpolation filter (for example, a one-dimensional 6-tap filter). In the case of a one-dimensional 6-tap filter, a system of six cheers neny may be solved by MC-37 module.

Figure 00000007
Figure 00000007

Фильтр(ы) 39 может представлять один фильтр или набор из множества различных фильтров, которые могут использоваться посредством MC-модуля 37 для того, чтобы формировать прогнозирующие данные.Filter (s) 39 may represent a single filter or a set of many different filters that can be used by the MC module 37 to generate predictive data.

Таким образом, примерный процесс извлечения и применения AIF-фильтров может иметь следующие этапы, которые могут выполняться посредством модуля 32 прогнозирования:Thus, an exemplary process for extracting and applying AIF filters can have the following steps that can be performed by the prediction module 32:

1. Оценка векторов (mvx, mvy) движения для каждого видеоблока, который должен кодироваться. Во время оценки движения может применяться неперестраиваемый интерполяционный фильтр (к примеру, интерполяционный процесс H.264/AVC).1. Evaluation of motion vectors (mvx, mvy) for each video block to be encoded. During motion estimation, a non-tunable interpolation filter can be applied (for example, the H.264 / AVC interpolation process).

2. С использованием этих векторов движения, накопление энергии ошибок прогнозирования для каждой субпикселной позиции SP по текущему видеокадру. Затем вычисление коэффициентов

Figure 00000002
адаптивной фильтрации для каждой субпикселной позиции SP независимо посредством минимизации энергии ошибок прогнозирования, как указано в двух вышеприведенных уравнениях энергии прогнозирования.2. Using these motion vectors, the accumulation of energy of prediction errors for each sub-pixel position SP over the current video frame. Then the calculation of the coefficients
Figure 00000002
adaptive filtering for each sub-pixel position SP independently by minimizing the energy of prediction errors, as indicated in the two prediction energy equations above.

3. Оценка новых векторов движения. В ходе процесса оценки движения могут применяться адаптивные интерполяционные фильтры, вычисленные на этапе 2. С помощью адаптивных интерполяционных фильтров ошибки оценки движения, вызываемые посредством наложения спектров, шума камеры и т.д., уменьшаются, и достигается лучшее прогнозирование движения.3. Assessment of new motion vectors. During the motion estimation process, adaptive interpolation filters calculated in step 2 can be applied. Using adaptive interpolation filters, the motion estimation errors caused by superimposing spectra, camera noise, etc., are reduced and better motion prediction is achieved.

Различные схемы AIF могут использовать аналитический процесс, идентичный процессу, определенному выше. Отличия между различными схемами, главным образом, заключаются в числе используемых уникальных коэффициентов фильтрации, являются ли интерполяционные фильтры разделимыми или неразделимыми, и в используемой поддержке фильтра (т.е. в целопикселных позициях, используемых, чтобы интерполировать, по меньшей мере, часть субпикселных позиций). В каждой из этих схем определенные ограничения по симметрии для AIF-фильтров могут быть наложены, чтобы сокращать число коэффициентов фильтрации, которое должно кодироваться и передаваться в потоке видеобитов.Different AIF schemes may use an analytical process identical to the process defined above. The differences between the various schemes are mainly in the number of unique filtering coefficients used, whether the interpolation filters are separable or inseparable, and in the filter support used (i.e., integer-pixel positions used to interpolate at least part of the sub-pixel positions ) In each of these schemes, certain symmetry restrictions for AIF filters can be imposed to reduce the number of filter coefficients that must be encoded and transmitted in the video bit stream.

Для NS-AIF, например, MC-модуль 37 модуля 32 прогнозирования может интерполировать одномерные субпикселные позиции "a", "b", "c", "d", "h" и "l" с использованием одномерного 6-отводного интерполяционного фильтра (также называемого 6-позиционным фильтром, поскольку каждый отвод соответствует целопикселной позиции), что требует шести коэффициентов. Шесть коэффициентов 6-позиционных фильтров, используемых для того, чтобы интерполировать одномерный субпиксел, соответствуют одной из целопикселных позиций, проиллюстрированных на Фиг.3. Например, для субпикселных позиций "a", "b" и "c", шестью целопикселными позициями, соответствующими коэффициентам, являются C1, C2, C3, C4, C5 и C6 и для субпикселных позиций "d", "h" и "l", шестью целопикселными позициями, соответствующими коэффициентам, являются A3, B3, C3, D3, E3 и F3. Эти целопикселные позиции представляют "поддержку фильтра" для интерполяционного фильтра.For the NS-AIF, for example, the MC module 37 of the prediction module 32 can interpolate the one-dimensional sub-pixel positions "a", "b", "c", "d", "h" and "l" using a one-dimensional 6-tap interpolation filter (also called a 6-position filter, since each tap corresponds to an integer-pixel position), which requires six coefficients. The six coefficients of the 6-position filters used to interpolate the one-dimensional subpixel correspond to one of the integer-pixel positions illustrated in FIG. 3. For example, for the subpixel positions "a", "b" and "c", the six integer pixel positions corresponding to the coefficients are C1, C2, C3, C4, C5 and C6 and for the subpixel positions "d", "h" and "l ", six integer pixel positions corresponding to the coefficients are A3, B3, C3, D3, E3 and F3. These integer-pixel positions represent "filter support" for the interpolation filter.

Модуль 32 прогнозирования может интерполировать двумерные субпикселные позиции "e", "f", "g", "i", "j", "k", "m", "n" и o" с использованием двумерного интерполяционного фильтра 6×6, который требует тридцати шести коэффициентов фильтрации. Тридцать шесть коэффициентов двумерного интерполяционного фильтра 6×6, использованные для того, чтобы интерполировать двумерный субпиксел, соответствуют целопикселным позициям A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 и F1-F6. Эти целопикселные позиции представляют "поддержку фильтра" для интерполяционного фильтра. Если дополнительное ограничение не накладывается, к примеру, отсутствует симметрия по коэффициентам или пикселам, видеокодер 50 может кодировать и передавать девять наборов из тридцати шести коэффициентов для двумерных субпикселных позиций и шесть наборов из шести коэффициентов для одномерных субпикселных позиций, всего 360 коэффициентов. Кодирование и передача этого числа коэффициентов в потоке видеобитов может приводить к затратному дополнительному числу битов. Высокое дополнительное число битов может, в свою очередь, увеличивать скорость передачи битов для данного уровня искажения, что нежелательно.The prediction unit 32 may interpolate the two-dimensional sub-pixel positions “e”, “f”, “g”, “i”, “j”, “k”, “m”, “n” and o “using a 6 × 6 two-dimensional interpolation filter which requires thirty-six filter coefficients. The thirty-six coefficients of a 6 × 6 two-dimensional interpolation filter used to interpolate the two-dimensional subpixel correspond to integer-pixel positions A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 and F1-F6: These integer-pixel positions represent “filter support” for the interpolation filter. the value is not superimposed, for example, there is no symmetry by coefficients or pixels, video encoder 50 can encode and transmit nine sets of thirty-six coefficients for two-dimensional subpixel positions and six sets of six coefficients for one-dimensional subpixel positions, a total of 360 coefficients. coefficients in the video bit stream can lead to a costly additional number of bits. A high additional number of bits can, in turn, increase the bit rate for a given level of distortion, which is undesirable.

Для уменьшения дополнительного числа битов, ассоциированного с передачей коэффициентов фильтрации, определенные ограничения по симметрии могут быть введены для интерполяционных фильтров, чтобы сократить число уникальных коэффициентов фильтрации, передаваемых в декодер 28. Два типа симметрии, т.е. симметрия по пикселам и симметрия по коэффициентам, могут быть наложены по отдельности или в комбинации. Симметрия по пикселам принудительно активирует идентичный набор коэффициентов фильтрации (и зеркальные, перевернутые и/или повернутые версии набора) для различных субпикселных позиций. Симметрия по пикселам также может упоминаться как симметрия по субпикселам, когда такая симметрия по пикселам применяется относительно коэффициентов фильтрации, ассоциированных с двумя или более субпикселными местоположениями. Симметрия по коэффициентам, с другой стороны, принудительно активирует данный интерполяционный фильтр, чтобы быть симметричным в определенном направлении (к примеру, горизонтальном направлении, вертикальном направлении или и в том, и в другом) для различных позиций поддержки фильтра относительно других позиций поддержки фильтра для данных субпикселных значений, которые должны быть интерполированы.To reduce the additional number of bits associated with the transmission of filter coefficients, certain symmetry constraints may be introduced for interpolation filters to reduce the number of unique filter coefficients transmitted to decoder 28. Two types of symmetry, i.e. pixel symmetry and coefficient symmetry can be superimposed individually or in combination. Pixel symmetry forces an identical set of filtering coefficients (and mirrored, inverted, and / or rotated versions of the set) for different subpixel positions. Pixel symmetry may also be referred to as subpixel symmetry when such pixel symmetry is applied to filter coefficients associated with two or more subpixel locations. The symmetry of the coefficients, on the other hand, forces this interpolation filter to be symmetric in a certain direction (for example, horizontal direction, vertical direction, or both) for different filter support positions relative to other filter support positions for data subpixel values to be interpolated.

Симметрия по пикселам может использоваться в NS-AIF. Снова ссылаясь на Фиг.3, пусть

Figure 00000008
является набором коэффициентов фильтрации для субпикселной позиции "a", в таком случае набором коэффициентов фильтрации для субпикселной позиции "c" является
Figure 00000009
, т.е. идентичный коэффициент в обратном порядке или горизонтально перевернутый. Таким образом, значение P a прогнозирующего пиксела в субпикселной позиции "a" и значение p c прогнозирующего пиксела в субпикселной позиции "c" могут вычисляться с использованием (8) и (9), соответственно.Pixel symmetry can be used in NS-AIF. Referring again to FIG. 3, let
Figure 00000008
is the set of filtering coefficients for the subpixel position "a", in which case the set of filtering coefficients for the subpixel position "c" is
Figure 00000009
, i.e. identical coefficient in the reverse order or horizontally inverted. Thus, the predictive pixel value P a at the sub-pixel position “a” and the predictive pixel value p c at the sub-pixel position “c” can be calculated using (8) and (9), respectively.

Figure 00000010
Figure 00000010

Субпикселные позиции "d" и "l" могут быть интерполированы с использованием набора коэффициентов интерполяционной фильтрации, идентичного набору коэффициентов субпикселных позиций "a" и "c", соответственно. По сути, субпикселные позиции "a" и "c" могут иметь симметрию по пикселам относительно субпикселных позиций "d" и "l".The sub-pixel positions "d" and "l" can be interpolated using a set of interpolation filtering coefficients identical to the set of coefficients of the sub-pixel positions "a" and "c", respectively. In fact, the subpixel positions "a" and "c" may have pixel symmetry relative to the subpixel positions "d" and "l".

Один аспект настоящего раскрытия состоит в том, чтобы фактически удалять симметрию по пикселам между субпикселными позициями "a" и "c" относительно субпикселных позиций "d" и "l". Помимо этого симметрия по пикселам может исключаться для субпикселной позиции "f" относительно субпикселной позиции "i". Помимо этого, симметрия по пикселам может исключаться для субпикселной позиции "k" относительно субпикселной позиции "n". В таких случаях диагональная корреляция может быть низкой, делая недейственным или неэффективным наложение диагональной симметрии в этих случаях.One aspect of the present disclosure is to actually remove pixel symmetry between subpixel positions "a" and "c" with respect to subpixel positions "d" and "l". In addition, pixel symmetry can be eliminated for the sub-pixel position "f" relative to the sub-pixel position "i". In addition, pixel symmetry can be eliminated for the sub-pixel position "k" relative to the sub-pixel position "n". In such cases, the diagonal correlation may be low, making the overlapping of diagonal symmetry ineffective or ineffective in these cases.

В качестве другого примера, пусть

Figure 00000011
является набором двумерных коэффициентов фильтрации 6×6 для субпикселной позиции "e". В таком случае набором коэффициентов фильтрации для позиции "g" является
Figure 00000012
(горизонтально перевернутая версия). Аналогично, набором коэффициентов фильтрации для субпикселной позиции "m" является
Figure 00000013
(вертикально перевернутая версия), а набором коэффициентов фильтрации для субпикселной позиции "o" является
Figure 00000014
(сначала горизонтально перевернут, а затем вертикально перевернут). По сути, субпикселные позиции "e", "g", "m" и "o" имеют симметрию по пикселам. Симметрия между субпикселными позициями "b" и "h" и между позициями "f", "i", "k" и n" накладывается аналогичным способом, как в примерах, приведенных выше. При таком ограничении по симметрии по пикселам, остается только пять групп уникальных наборов фильтров, первый набор коэффициентов фильтрации для группы субпикселов "a", "c", "d" и "l", второй набор коэффициентов фильтрации для группы субпикселов "b" и "h", третий набор коэффициентов фильтрации для группы субпикселов "e", "g", "m" и "o", четвертый набор коэффициентов фильтрации для группы "f", "i", "k" и n", и пятый набор коэффициентов фильтрации для группы субпикселов "j".As another example, let
Figure 00000011
is a set of two-dimensional filter coefficients of 6 × 6 for the sub-pixel position "e". In this case, the set of filtering coefficients for position "g" is
Figure 00000012
(horizontally flipped version). Similarly, the set of filter coefficients for the sub-pixel position "m" is
Figure 00000013
(vertically flipped version), and the set of filtering coefficients for the sub-pixel position “o” is
Figure 00000014
(first horizontally flipped and then vertically flipped). In fact, the sub-pixel positions "e", "g", "m" and "o" have pixel symmetry. The symmetry between the sub-pixel positions "b" and "h" and between the positions "f", "i", "k" and n "is superimposed in the same way as in the examples above. With this restriction on symmetry by pixels, there are only five groups of unique filter sets, the first set of filter coefficients for the group of subpixels "a", "c", "d" and "l", the second set of filter coefficients for the group of subpixels "b" and "h", the third set of filter coefficients for the group of subpixels "e", "g", "m" and "o", the fourth set of filter coefficients for the group "f", "i", "k" and n ", and the fifth on OR the filter coefficients for the group of sub-pixels "j".

Кроме того, NS-AIF может накладывать ограничение по симметрии по коэффициентам на некоторые из этих наборов фильтров по отдельности или в комбинации с симметрией по субпикселам, описанной выше. В некоторых случаях, диагональная симметрия по коэффициентам может преднамеренно исключаться, к примеру, при исключении всех ограничений по диагональной симметрии по коэффициентам. В одном случае, симметрия по коэффициентам не накладывается на фильтр для первой группы субпикселных позиций, которая включает в себя субпикселные местоположения "a", "c", "d" и "l". Тем не менее, вторая группа субпикселных позиций, которая включает в себя коэффициент "b" и "h", может иметь симметрию по коэффициентам в соответствии с уравнением (10).In addition, NS-AIF may impose a symmetry constraint on coefficients on some of these filter sets individually or in combination with the sub-pixel symmetry described above. In some cases, diagonal symmetry in coefficients can be deliberately excluded, for example, if all restrictions on diagonal symmetry in coefficients are eliminated. In one case, symmetry in the coefficients is not superimposed on the filter for the first group of subpixel positions, which includes the subpixel locations "a", "c", "d" and "l". However, the second group of sub-pixel positions, which includes the coefficient "b" and "h", may have symmetry in the coefficients in accordance with equation (10).

Figure 00000015
Figure 00000015

Аналогично, коэффициенты для интерполяционных фильтров для третьей, четвертой и пятой группы субпикселных позиций, которые включают в себя субпикселные позиции "e", "f" и j", соответственно, могут иметь симметрию по коэффициентам, как задано в уравнениях (11), (12) и (13), соответственно.Similarly, the coefficients for interpolation filters for the third, fourth and fifth groups of subpixel positions, which include the subpixel positions "e", "f" and j ", respectively, can be symmetrical in coefficients as specified in equations (11), ( 12) and (13), respectively.

Figure 00000016
Figure 00000016

При таких ограничениях по симметрии по пикселам и симметрии по коэффициентам, описанных выше, число уникальных коэффициентов фильтрации может сокращаться с 360 (нет ограничения по симметрии) до 6(a)+3(b)+21(e)+18(f)+6(j)=54 коэффициентов, т.е. 6 коэффициентов для группы, включающей в себя субпикселную позицию "a", 3 коэффициента для группы, включающей в себя субпикселную позицию "b", 21 коэффициент для группы, включающей в себя субпикселную позицию "e", 18 коэффициентов для группы, включающей в себя субпикселную позицию "f", и 6 коэффициентов для группы, включающей в себя субпикселную позицию "j". Таким образом, в NS-AIF видеокодер 22 может кодировать и передавать пятьдесят четыре коэффициента вместо 360, как в случае отсутствия ограничений по симметрии. Как описано выше, эти пятьдесят четыре коэффициента могут аналитически разрешаться на основе вышеприведенного уравнения (7). Видеокодер 50 затем может прогнозировать, квантовать, кодировать (к примеру, с помощью экспоненциального кода Голомба со знаком) и отправлять коэффициенты в потоке битов. Дополнительные сведения относительно прогнозирующего кодирования коэффициентов фильтрации подробнее поясняются ниже. Модуль 41 прогнозирования коэффициентов и квантования может использоваться для прогнозирующего кодирования и квантования коэффициентов фильтрации в соответствии с этим раскрытием сущности.Under such restrictions on pixel symmetry and symmetry on the coefficients described above, the number of unique filtering coefficients can be reduced from 360 (there is no symmetry restriction) to 6 ( a ) +3 ( b ) +21 ( e ) +18 ( f ) + 6 ( j ) = 54 coefficients, i.e. 6 coefficients for a group including a subpixel position "a", 3 coefficients for a group including a subpixel position "b", 21 coefficients for a group including a subpixel position "e", 18 coefficients for a group including a sub-pixel position of "f", and 6 coefficients for a group including a sub-pixel position of "j". Thus, in the NS-AIF, video encoder 22 can encode and transmit fifty-four coefficients instead of 360, as in the absence of symmetry constraints. As described above, these fifty-four coefficients can be analytically resolved based on the above equation (7). Video encoder 50 can then predict, quantize, encode (for example, using the exponential Golomb code with a sign) and send coefficients in the bitstream. Additional information regarding predictive coding of filter coefficients is explained in more detail below. Coefficient prediction and quantization module 41 may be used to predictively encode and quantize filter coefficients in accordance with this disclosure.

В другой схеме AIF, т.е. S-AIF, модуль 32 прогнозирования может использовать разделимые интерполяционные фильтры в горизонтальном направлении и в вертикальном направлении вместо неразделимых интерполяционных фильтров, используемых в NS-AIF. Для одномерных субпикселных позиций, модуль 32 прогнозирования (к примеру, MC-модуль 37 модуля 32 прогнозирования) применяет только горизонтальные направленные фильтры или только вертикальные направленные фильтры в зависимости от субпикселного местоположения. В одном примере, горизонтальные направленные фильтры и вертикальные направленные фильтры содержат 6-позиционные (или 6-отводные) фильтры. Модуль 32 прогнозирования применяет горизонтальные направленные фильтры для субпикселных позиций "a", "b" и "c" с целопикселными позициями C1, C2, C3, C4, C5 и C6 (см. Фиг.3) в качестве поддержки фильтра и применяет вертикальные направленные фильтры для субпикселных позиций "d", "h" и "l" с целопикселными позициями A3, B3, C3, D3, E3 и F3 (см. Фиг.3) в качестве поддержки фильтра. Для оставшихся субпикселных позиций, т.е. двумерных субпикселных позиций, модуль 32 прогнозирования сначала применяет горизонтальную фильтрацию, после чего выполняется вертикальная фильтрация, или вертикальную фильтрацию, после чего выполняется горизонтальная фильтрация. С другой стороны, коэффициенты фильтрации, используемые для разделимых горизонтальных и вертикальных фильтров, могут вычисляться в соответствии с вышеприведенным уравнением (7). Без симметрии S-AIF может сокращать число коэффициентов, которые должны кодироваться и отправляться, до 144 коэффициентов с 360 коэффициентов, как имеет место в случае NS-AIF без симметрии.In another AIF scheme, i.e. S-AIF, prediction module 32 may use separable interpolation filters in the horizontal direction and in the vertical direction instead of the inseparable interpolation filters used in the NS-AIF. For one-dimensional subpixel positions, the prediction module 32 (for example, the MC module 37 of the prediction module 32) applies only horizontal directional filters or only vertical directional filters depending on the subpixel location. In one example, horizontal directional filters and vertical directional filters contain 6-position (or 6-tap) filters. Prediction module 32 applies horizontal directional filters for sub-pixel positions “a”, “b” and “c” with integer-pixel positions C1, C2, C3, C4, C5 and C6 (see FIG. 3) as a filter support and applies vertical directional filters filters for sub-pixel positions "d", "h" and "l" with integer-pixel positions A3, B3, C3, D3, E3 and F3 (see Figure 3) as filter support. For the remaining sub-pixel positions, i.e. of two-dimensional sub-pixel positions, the prediction unit 32 first applies horizontal filtering, after which vertical filtering, or vertical filtering, and then horizontal filtering, is performed. On the other hand, the filtering coefficients used for separable horizontal and vertical filters can be calculated in accordance with the above equation (7). Without symmetry, S-AIF can reduce the number of coefficients to be encoded and sent to 144 coefficients from 360 coefficients, as is the case for NS-AIF without symmetry.

S-AIF дополнительно может накладывать одно или более ограничений по симметрии, по меньшей мере, для некоторых из интерполяционных фильтров. В отличие от симметрии по субпикселам NS-AIF, при S-AIF наборы фильтров, используемые для субпикселных позиций "a" и "c", не являются симметричными, т.е. горизонтально перевернутыми версиями друг друга. Вместо этого коэффициенты наборов фильтров, используемых для субпикселных позиций "a" и "c", извлекаются независимо друг от друга как

Figure 00000008
и
Figure 00000017
, соответственно. Для каждой субпикселной позиции, которая имеет вертикальное перемещение, симметрия по субпикселам является аналогичной NS-AIF. Таким образом, коэффициенты для субпикселных позиций "d" и "l", коэффициенты для субпикселных позиций "e" и "m", коэффициенты для субпикселных позиций "f" и "n", и коэффициенты для субпикселных позиций "g" и "o" являются вертикально перевернутыми версиями друг друга, соответственно. Например, если коэффициенты вертикального фильтра для субпикселной позиции "d" - это
Figure 00000018
, то коэффициенты вертикального фильтра для субпикселной позиции "l" - это
Figure 00000019
. Таким образом, симметрия по субпикселам, используемая только в S-AIF, имеет вертикальную симметрию по субпикселам в одной размерности. S-AIF, тем не менее, не имеет горизонтальной симметрии по субпикселам. Симметрия по субпикселам в S-AIF может сокращать число коэффициентов, которые должны кодироваться и отправляться, со 144 коэффициентов до 102 коэффициентов.S-AIF may additionally impose one or more symmetry constraints for at least some of the interpolation filters. Unlike NS-AIF subpixel symmetry, with S-AIF, the filter sets used for the subpixel positions “a” and “c” are not symmetrical, i.e. horizontally flipped versions of each other. Instead, the coefficients of the filter sets used for the sub-pixel positions "a" and "c" are extracted independently from each other as
Figure 00000008
and
Figure 00000017
, respectively. For each subpixel position that has vertical movement, subpixel symmetry is similar to NS-AIF. Thus, the coefficients for the sub-pixel positions "d" and "l", the coefficients for the sub-pixel positions "e" and "m", the coefficients for the sub-pixel positions "f" and "n", and the coefficients for the sub-pixel positions "g" and "o "are vertically inverted versions of each other, respectively. For example, if the vertical filter coefficients for the subpixel position "d" are
Figure 00000018
, then the vertical filter coefficients for the subpixel position "l" is
Figure 00000019
. Thus, sub-pixel symmetry, used only in S-AIF, has vertical sub-pixel symmetry in one dimension. S-AIF, however, does not have horizontal subpixel symmetry. Sub-pixel symmetry in S-AIF can reduce the number of coefficients to be encoded and sent from 144 coefficients to 102 coefficients.

S-AIF, аналогично NS-AIF, также может использовать симметрию по коэффициентам, чтобы дополнительно сокращать число коэффициентов, которые должны кодироваться и отправляться посредством видеокодера 50. Симметрия по коэффициентам, используемая в S-AIF, может быть идентичной симметрии в NS-AIF за исключением того, что в S-AIF предусмотрены только одномерные (горизонтальные или вертикальные) 6-отводные фильтры. Другими словами, отсутствуют двумерные фильтры 6x6. В S-AIF, для каждой субпикселной позиции SP, SP∈{b,h,I,j,k}, коэффициенты фильтрации могут иметь симметрию, как указано в уравнении (14).S-AIF, like NS-AIF, can also use coefficient symmetry to further reduce the number of coefficients to be encoded and sent by video encoder 50. The coefficient symmetry used in S-AIF can be identical to the symmetry in NS-AIF for except that only one-dimensional (horizontal or vertical) 6-tap filters are provided in S-AIF. In other words, there are no 6x6 two-dimensional filters. In S-AIF, for each subpixel position of SP, SP∈ {b, h, I, j, k}, the filter coefficients may have symmetry, as indicated in equation (14).

Figure 00000020
Figure 00000020

Следовательно, как при симметрии по субпикселам, так и при симметрии по коэффициентам, S-AIF-фильтры могут иметь одиннадцать наборов уникальных одномерных 6-отводных фильтров, пять из которых являются симметричными фильтрами, каждый из которых имеет три уникальных коэффициента. Оставшиеся шесть фильтров могут иметь по шесть уникальных коэффициентов. В этом случае, видеокодер 22 может квантовать, прогнозировать, кодировать и отправлять всего пятьдесят один уникальный коэффициент фильтрации в потоке видеобитов.Therefore, both with subpixel symmetry and coefficient symmetry, S-AIF filters can have eleven sets of unique one-dimensional 6-tap filters, five of which are symmetric filters, each of which has three unique coefficients. The remaining six filters can have six unique coefficients. In this case, video encoder 22 can quantize, predict, encode, and send a total of fifty-one unique filter coefficients in the video bit stream.

В другой схеме AIF, D-AIF, модуль 32 прогнозирования использует направленные фильтры для двумерных субпикселных позиций "e", "f", "g", "i", "j", "k", "m", "n" и "o". Направленные фильтры могут содержать шестиотводные фильтры, и коэффициенты могут иметь симметрию так, что только поднабор коэффициентов должен передаваться. Как описано в данном документе, поддержка фильтра означает позиции пиксела от опорного кадра, который используется при интерполяции субпикселной позиции. MC-модуль 37 может вычислять субпикселные позиции "e" и "o" с помощью 6-позиционного (или 6-отводного) диагонального интерполяционного фильтра, который имеет целопикселные позиции A1, B2, C3, D4, E5 и F6 в качестве поддержки фильтра. Модуль 32 прогнозирования может вычислять субпикселные позиции "g" и "m" с помощью 6-позиционного диагонального интерполяционного фильтра, который имеет целопикселные позиции A6, B5, C4, D3, E2 и F1 в качестве поддержки фильтра. Модуль 32 прогнозирования может вычислять субпикселные позиции "f", "i", "j", "k" и "n" с помощью 12-позиционного диагонального интерполяционного фильтра, который имеет целопикселные позиции A1, B2, C3, D4, E5, F6, A6, B5, C4, D3, E2 и F1 в качестве поддержки фильтра.In another AIF scheme, D-AIF, the prediction unit 32 uses directional filters for two-dimensional subpixel positions "e", "f", "g", "i", "j", "k", "m", "n" and "o". Directional filters may contain six-tap filters, and the coefficients may be symmetric so that only a subset of the coefficients should be transmitted. As described herein, filter support means pixel positions from a reference frame that is used in interpolating a sub-pixel position. The MC module 37 can calculate the sub-pixel positions “e” and “o” using a 6-position (or 6-tap) diagonal interpolation filter that has integer-pixel positions A1, B2, C3, D4, E5 and F6 as filter support. Prediction unit 32 can calculate the sub-pixel positions “g” and “m” using a 6-position diagonal interpolation filter, which has integer-pixel positions A6, B5, C4, D3, E2 and F1 as filter support. Prediction unit 32 can calculate sub-pixel positions “f”, “i”, “j”, “k” and “n” using a 12-position diagonal interpolation filter that has integer-pixel positions A1, B2, C3, D4, E5, F6 , A6, B5, C4, D3, E2 and F1 as filter support.

D-AIF может использовать симметрию по субпикселам и коэффициентам, идентичную симметрии по субпикселам и коэффициентам, описанной выше относительно NS-AIF. С точки зрения симметрии по субпикселам предусмотрено пять уникальных наборов коэффициентов фильтрации для интерполяции пятнадцать субпикселных позиций, причем субпикселные позиции "a", "c", "d" и "l" совместно используют идентичные коэффициенты фильтрации (к примеру, зеркальные, перевернутые и/или повернутые версии), субпикселные позиции "e", "g", "m" и "o" совместно используют идентичные коэффициенты фильтрации (к примеру, зеркальные, перевернутые и/или повернутые версии), субпикселные позиции "b" и "h" совместно используют идентичные коэффициенты фильтрации (где "b" является горизонтальным фильтром, а "h" является вертикальным фильтром), субпикселные позиции "f", "i", "k" и n" совместно используют идентичные коэффициенты фильтрации (к примеру, зеркальные, перевернутые и/или повернутые версии), а субпикселная позиция "j" имеет собственный набор коэффициентов фильтрации.D-AIF can use the symmetry of subpixels and coefficients identical to the symmetry of subpixels and coefficients described above with respect to NS-AIF. In terms of subpixel symmetry, there are five unique sets of filter coefficients for interpolating fifteen subpixel positions, with the subpixel positions “a”, “c”, “d” and “l” sharing identical filtering coefficients (for example, mirror, inverted and / or rotated versions), sub-pixel positions "e", "g", "m" and "o" share identical filtering coefficients (for example, mirrored, inverted and / or rotated versions), sub-pixel positions "b" and "h" share identical coefficients filtering (where "b" is a horizontal filter and "h" is a vertical filter), the subpixel positions "f", "i", "k" and n "share the same filtering coefficients (for example, mirror, inverted and / or rotated versions), and the subpixel position "j" has its own set of filter coefficients.

С точки зрения симметрии по коэффициентам коэффициенты фильтрации для первой группы субпикселов, включающей в себя "a", "c", "d" и "l", используют одномерный 6-позиционный фильтр, имеющий шесть уникальных коэффициентов (т.е. первая группа является несимметричной), коэффициенты фильтрации для второй группы субпикселов "b" и "h" используют одномерный 6-позиционный фильтр, имеющий три уникальных коэффициента (т.е. b является симметричным), и третий набор коэффициентов фильтрации для группы субпикселов "e", "g", "m" и "o" использует направленный 6-позиционный фильтр, имеющий шесть уникальных коэффициентов. Четвертый набор коэффициентов фильтрации для группы "f", "i", "k" и n" использует 12-отводный фильтр, имеющий 6 уникальных коэффициентов, и пятый набор коэффициентов фильтрации для группы "j", имеющий три уникальных коэффициента. Общее число уникальных коэффициентов в схеме D-AIF составляет 6(a)+3(b)+6(e)+6(f)+3(j)=24 коэффициента. Эти коэффициенты фильтрации могут прогнозироваться, квантоваться, кодироваться и отправляться в потоке видеобитов.From the point of view of symmetry in the coefficients, the filtering coefficients for the first group of subpixels, including "a", "c", "d" and "l", use a one-dimensional 6-position filter having six unique coefficients (i.e., the first group is asymmetric), the filter coefficients for the second group of subpixels "b" and "h" use a one-dimensional 6-position filter having three unique coefficients (ie, b is symmetric), and a third set of filter coefficients for the group of subpixels "e", "g", "m" and "o" use a directional 6-position This filter having six unique coefficients. The fourth set of filtering coefficients for group "f", "i", "k" and n "uses a 12-tap filter with 6 unique coefficients, and the fifth set of filtering coefficients for group" j "having three unique coefficients. The total number of unique the coefficients in the D-AIF scheme is 6 (a) +3 (b) +6 (e) +6 (f) +3 (j) = 24. These filtering coefficients can be predicted, quantized, encoded and sent in the video bit stream.

MC-модуль 37 модуля 32 прогнозирования может использовать одну или более технологий интерполяции, описанных в данном документе, чтобы повышать точность интерполяции субпикселных позиций и/или сокращать число коэффициентов интерполяционной фильтрации, которое должно быть кодировано и передано. Ниже подробнее описана применимая поддержка фильтра на двенадцать пикселов с радиальной формой, которая может использоваться для интерполяции, технологии, которые используют симметрию по коэффициентам и симметрию по пикселам, чтобы уменьшать объем данных, необходимых для отправки между кодером и декодером, чтобы конфигурировать поддержку фильтра для интерполяции, технологии для удаления некоторых аспектов симметрии относительно традиционных технологий и технологий для фильтрации данных в целопикселных местоположениях способом, который является аналогичным субпикселной интерполяции. Технологии смещения также описываются. Помимо этого, технологии для выбора между интерполяционными фильтрами и технологии для прогнозирующего кодирования коэффициентов фильтрации также описываются.The MC module 37 of the prediction module 32 may use one or more of the interpolation techniques described herein to increase the accuracy of interpolation of sub-pixel positions and / or to reduce the number of interpolation filter coefficients to be encoded and transmitted. The following describes in more detail the applicable filter support for twelve pixels with a radial shape that can be used for interpolation, technologies that use coefficient symmetry and pixel symmetry to reduce the amount of data needed to be sent between the encoder and decoder to configure filter support for interpolation , technologies for removing some aspects of symmetry relative to traditional technologies and technologies for filtering data in integer-pixel locations in a manner that which is similar to subpixel interpolation. Displacement technologies are also described. In addition, technologies for choosing between interpolation filters and technologies for predictively coding filter coefficients are also described.

Фиг.4 является концептуальной схемой, иллюстрирующей поддержку фильтра на двенадцать пикселов относительно девяти субпикселных местоположений. В соответствии с этим раскрытием сущности, MC-модуль 37 может вычислять субпикселные значения для субпикселных позиций "e", "f", "g", "i", "j", "k", "m", "n" и o" на основе штрихованных целопикселных значений. В этом случае, вычисление субпикселных значений содержит применение интерполяционного фильтра, который задает двумерный массив позиций поддержки фильтра, соответствующих набору в двенадцать (или, возможно, больше) целопикселных позиций, которые окружают субпикселные позиции, как проиллюстрировано на Фиг.4. Позиции поддержки фильтра показаны с штриховкой и заглавными буквенными обозначениями, и субпикселные позиции показаны как прямоугольники с пунктирными линиями и строчными буквенными обозначениями. MC-модуль 37 может интерполировать пикселы таким образом для каждого пиксела видеоблока и может формировать прогнозный блок на основе интерполированного субпикселного значения. Поддержка 12-позиционного фильтра имеет радиальную форму и имеет аналогичную частотную характеристику, как поддержка 36-позиционного фильтра, используемая в NS-AIF, но с гораздо меньшей сложностью интерполяции.4 is a conceptual diagram illustrating twelve pixel filter support with respect to nine sub-pixel locations. According to this disclosure, the MC module 37 may calculate sub-pixel values for the sub-pixel positions "e", "f", "g", "i", "j", "k", "m", "n" and o "based on the hatched integer-pixel values. In this case, the calculation of the sub-pixel values includes the use of an interpolation filter that defines a two-dimensional array of filter support positions corresponding to a set of twelve (or possibly more) integer-pixel positions that surround the sub-pixel positions, as illustrated in Figure 4. Filter support positions are shown with a dash. with uppercase letters and capital letters, and subpixel positions are shown as rectangles with dashed lines and lowercase letters.The MC module 37 can interpolate pixels in this way for each pixel of the video block and can generate a prediction block based on the interpolated subpixel value. Support for the 12-position filter has is radial in shape and has a similar frequency response, like the 36-position filter support used in NS-AIF, but with much less complexity of interpolation.

Из Фиг.3 следует, что субпикселные значения могут содержать пятнадцать четверть-пикселных и полупикселных значений. Интерполяционный фильтр, который задает двумерный массив позиций поддержки фильтра, применяется, чтобы задавать девять из пятнадцати четверть-пикселных и полупикселных значений, как показано на Фиг.4.From figure 3 it follows that the subpixel values may contain fifteen quarter-pixel and half-pixel values. An interpolation filter, which defines a two-dimensional array of filter support positions, is used to specify nine of the fifteen quarter-pixel and half-pixel values, as shown in FIG. 4.

Набор из двенадцати или более целопикселных позиций, которые окружают субпикселные позиции, показан с штриховкой на Фиг.4 и может включать в себя четыре целопикселные позиции C3, C4, D3 и D4, окружающие девять четверть-пикселных и полупикселных значений, и восемь целопикселных позиций B3, B4, C2, C5, D2, D5, E3 и E4, окружающих четыре целопикселные позиции. Каждая из позиций поддержки фильтра в двумерном массиве позиций поддержки фильтра, показанных на Фиг.4, находится в пределах двух целопикселных позиций относительно субпикселных позиций. Такая фильтрация может являться частью компенсации движения в ходе процесса кодирования видео посредством видеокодера 50 (Фиг.2) или в ходе процесса декодирования видео посредством видеодекодера 60 (Фиг.16). В ходе процесса кодирования видео модуль 32 прогнозирования направляет множество наборов значений коэффициентов в модуль 46 энтропийного кодирования как часть элементов синтаксиса прогнозирования. Как показано на Фиг.4, набор из двенадцати или более целопикселных позиций, которые окружают субпикселные позиции, имеет радиальную форму и может содержать набор пространственно ближайших целопикселных позиций к девяти четверть-пикселным и полупикселным значениям, заданным посредством интерполяционного фильтра (к примеру, фильтра(ов) 39 на Фиг.2).The set of twelve or more integer-pixel positions that surround the sub-pixel positions is shown with shading in FIG. 4 and may include four integer-pixel positions C3, C4, D3 and D4 surrounding nine quarter-pixel and half-pixel values, and eight integer-pixel positions B3 , B4, C2, C5, D2, D5, E3 and E4 surrounding four integer-pixel positions. Each of the filter support positions in the two-dimensional array of filter support positions shown in FIG. 4 is within two integer-pixel positions relative to the sub-pixel positions. Such filtering may be part of motion compensation during the video encoding process by the video encoder 50 (FIG. 2) or during the video decoding process by the video decoder 60 (FIG. 16). During the video encoding process, the prediction unit 32 sends a plurality of sets of coefficient values to the entropy encoding unit 46 as part of the prediction syntax elements. As shown in FIG. 4, the set of twelve or more integer-pixel positions that surround the sub-pixel positions is radial in shape and may contain the set of spatially nearest integer-pixel positions to nine quarter-pixel and half-pixel values specified by an interpolation filter (e.g., a filter ( s) 39 in FIG. 2).

Модуль 46 энтропийного кодирования может кодировать наборы значений коэффициентов и выводить значения коэффициентов интерполяционного фильтра как часть кодированного потока битов, который затем может быть передан в другое устройство. Каждый из множества наборов значений коэффициентов, заданных относительно каждого различного субпикселного местоположения, показанного на Фиг.4, может задавать различные взвешивания для двенадцати или более целопикселных позиций. Симметрия по пикселам может существовать таким образом, что M наборов значений коэффициентов задают N различных взвешиваний для двенадцати или более целопикселных позиций, при этом M и N - это положительные целые числа, и N превышает M. Другими словами, симметрия по пикселам может позволять некоторым из местоположений пикселов основываться на зеркальных, инвертированных или повернутых взвешиваниях других местоположений пикселов так, что коэффициенты не должны кодироваться для местоположений, которые имеют симметрию по пикселам с другими субпикселными местоположениями.Entropy encoding unit 46 may encode sets of coefficient values and output the coefficient values of the interpolation filter as part of the encoded bitstream, which can then be transferred to another device. Each of a plurality of sets of coefficient values defined with respect to each different sub-pixel location shown in FIG. 4 may define different weightings for twelve or more integer-pixel positions. Pixel symmetry can exist in such a way that M sets of coefficient values give N different weightings for twelve or more integer-pixel positions, with M and N being positive integers, and N is greater than M. In other words, pixel symmetry can allow some of pixel locations based on mirror, inverted, or rotated weightings of other pixel locations so that coefficients should not be encoded for locations that are pixel symmetric with other ubpikselnymi locations.

Фиг.5 является концептуальной схемой, иллюстрирующей поддержку горизонтального фильтра на шесть пикселов относительно трех горизонтальных субпикселных местоположений и поддержку вертикального фильтра на шесть пикселов относительно трех вертикальных субпикселных местоположений. Местоположения поддержки фильтра заштрихованы, с заглавными буквенными обозначениями, а субпикселные местоположения являются не заштрихованы, со строчными буквенными обозначениями и пунктирными линиями. MC-модуль 37 может вычислять субпикселные значения для местоположений "a", "b" и "c" посредством применения линейного интерполяционного фильтра, который задает одномерную матрицу позиций поддержки фильтра C1-C6. MC-модуль 37 также может вычислять субпикселные значения для местоположений "d", "h" и "l" посредством применения линейного интерполяционного фильтра, который задает одномерную матрицу позиций поддержки фильтра A3-F3. Таким образом, линейные интерполяционные фильтры могут использоваться для шести из пятнадцати четверть-пикселных и полупикселных значений, показанных на Фиг.3.5 is a conceptual diagram illustrating six pixel horizontal filter support with respect to three horizontal subpixel locations and six pixel vertical filter support with respect to three vertical subpixel locations. Filter support locations are shaded, with uppercase letters, and sub-pixel locations are not shaded, with lowercase letters and dashed lines. The MC module 37 can calculate subpixel values for locations "a", "b" and "c" by applying a linear interpolation filter that defines a one-dimensional matrix of filter support positions C1-C6. The MC module 37 can also calculate subpixel values for locations "d", "h" and "l" by applying a linear interpolation filter that defines a one-dimensional matrix of filter support positions A3-F3. Thus, linear interpolation filters can be used for six of the fifteen quarter-pixel and half-pixel values shown in FIG. 3.

Фиг.6 является концептуальной схемой, иллюстрирующей поддержку фильтра на "пять пикселов по пять пикселов" для фильтрации целопикселного местоположения. В этом случае аналогичная интерполяционной фильтрация может применяться относительно целопикселных местоположений, чтобы формировать регулируемые целопикселные значения. На Фиг.6, например, целопикселное значение в позиции C3 может быть фильтровано на основе матрицы пикселов 5×5 A1-A5, B1-B5, C1-C5, D1-D5 и E1-E5. Другие поддержки фильтра могут быть заданы для целочисленной фильтрации. В этом случае, если ME-модуль 35 идентифицирует блок целых пикселов, MC-модуль 37 может фильтровать каждый пиксел на основе матрицы пикселов 5×5, показанной на Фиг.6 (или другой поддержки фильтра), чтобы формировать фильтрованные целопикселные значения. Таким образом, аналогичная интерполяционной фильтрация может применяться к целым пикселам, которая позволяет улучшать кодирование в моменты времени изменений освещения или выходов из затемнения или затемнений сцены. Помимо этого, целочисленная фильтрация позволяет удалять шум и упрощать увеличение резкости кадров с изображениями и позволяет помогать улучшать кодирование точного перемещения объекта между последовательными видеокадрами, в частности, когда симметрия не накладывается на коэффициенты фильтрации. Целопикселная фильтрация также может быть чрезвычайно полезной для повышения качества и/или сжатия для видеопоследовательностей, которые имеют изменения фокуса.6 is a conceptual diagram illustrating a “five pixel by five pixel” filter support for filtering an integer pixel location. In this case, similar interpolation filtering can be applied to integer-pixel locations to form adjustable integer-pixel values. 6, for example, the integer-pixel value at position C3 can be filtered based on a 5 × 5 matrix of pixels A1-A5, B1-B5, C1-C5, D1-D5 and E1-E5. Other filter supports may be specified for integer filtering. In this case, if the ME module 35 identifies a block of integer pixels, the MC module 37 may filter each pixel based on the 5 × 5 pixel matrix shown in FIG. 6 (or other filter support) to form filtered integer pixel values. Thus, a similar interpolation filtering can be applied to whole pixels, which allows you to improve the coding at time instants of lighting changes or exits from darkening or darkening of the scene. In addition, integer filtering allows you to remove noise and simplify sharpening frames with images and helps to improve the encoding of the exact movement of an object between consecutive video frames, in particular when symmetry does not overlap the filter coefficients. Full pixel filtering can also be extremely useful for improving quality and / or compression for video sequences that have focus changes.

Таким образом, видеокодер 22 и/или видеодекодер 28 может использовать аналогичную интерполяционной фильтрацию относительно целопикселных позиций, чтобы формировать регулируемые целопикселные значения. Видеокодер 22 или видеодекодер 28 может, например, получать блоки пикселов, при этом блоки пикселов включают в себя целопикселные значения, соответствующие целопикселным позициям в рамках блока пикселов. Видеокодер 22 или видеодекодер 28 может фильтровать целопикселные значения на основе других целопикселных значений в рамках блоков пикселов, чтобы формировать регулируемые целопикселные значения, при этом отрегулированные целопикселные значения соответствуют целопикселным позициям, и формировать прогнозный блок на основе отрегулированных целопикселных значений. Прогнозный блок затем может использоваться для того, чтобы кодировать или декодировать видеоблок, в зависимости от того, выполняется процесс во время кодирования или декодирования.Thus, video encoder 22 and / or video decoder 28 can use similar interpolation filtering with respect to integer-pixel positions to form adjustable integer-pixel values. Video encoder 22 or video decoder 28 may, for example, receive pixel blocks, wherein pixel blocks include integer-pixel values corresponding to integer-pixel positions within the pixel block. Video encoder 22 or video decoder 28 can filter integer-pixel values based on other integer-pixel values within pixel blocks to form adjustable integer-pixel values, wherein adjusted integer-pixel values correspond to integer-pixel positions, and generate a predictive block based on adjusted integer-pixel values. The prediction block can then be used to encode or decode the video block, depending on whether the process is being performed during encoding or decoding.

Если технология выполняется в ходе процесса кодирования, видеокодер 22 может формировать остаточный видеоблок как разность между текущим кодируемым видеоблоком и прогнозным блоком. Видеокодер 22 также может кодировать один набор коэффициентов фильтрации в расчете на кодированную единицу для целочисленной фильтрации или, возможно, кодировать два или более наборов коэффициентов фильтрации в расчете на кодированную единицу для целочисленной фильтрации в различных местоположениях в рамках кодированной единицы. В примере по Фиг.6, поддержки фильтра для целочисленной фильтрации могут задавать двумерный фильтр, к примеру, фильтр 5×5 со смещением. Кроме того, симметрия по коэффициентам может существовать, по меньшей мере, между некоторыми коэффициентами, используемыми для фильтрации, так что требуется только поднабор из 25 различных коэффициентов, чтобы определять все 25 коэффициентов для фильтра. Множество других размеров и форм фильтра могут использоваться в соответствии с целопикселной фильтрацией.If the technology is performed during the encoding process, video encoder 22 may form a residual video block as the difference between the current encoded video block and the prediction block. Video encoder 22 may also encode one set of filtering coefficients per coded unit for integer filtering, or possibly encode two or more sets of filtering coefficients per coded unit for integer filtering at various locations within the coded unit. In the example of FIG. 6, a filter support for integer filtering can be defined by a two-dimensional filter, for example, a 5 × 5 offset filter. In addition, coefficient symmetry may exist between at least some of the coefficients used for filtering, so that only a subset of 25 different coefficients is required to determine all 25 coefficients for the filter. Many other filter sizes and shapes can be used in accordance with integer-pixel filtering.

Если целопикселная фильтрация выполняется в ходе процесса декодирования, технология может содержать формирование восстановленного видеоблока как суммы остаточного видеоблока, ассоциированного с текущим декодируемым видеоблоком, и прогнозного блока. В этом случае устройство декодирования (к примеру, целевое устройство 16) может принимать один набор коэффициентов фильтрации в расчете на кодированную единицу для целочисленной фильтрации или может принимать два или более наборов коэффициентов фильтрации в расчете на кодированную единицу для целочисленной фильтрации в различных местоположениях в рамках кодированной единицы. Каждая кодированная единица может иметь один или более наборов коэффициентов целопикселной фильтрации, а также наборов коэффициентов субпикселной фильтрации, к примеру, восемь наборов, которые могут использоваться для того, чтобы формировать все пятнадцать наборов для четверть-пикселных и полупикселных позиций.If integer-pixel filtering is performed during the decoding process, the technology may comprise generating the reconstructed video block as the sum of the residual video block associated with the current decoded video block and the prediction block. In this case, the decoding device (for example, the target device 16) may receive one set of filtering coefficients per coded unit for integer filtering, or may receive two or more sets of filtering coefficients per coded unit for integer filtering at various locations within the coded units. Each coded unit may have one or more sets of integer-pixel filtering coefficients, as well as sets of sub-pixel filtering coefficients, for example, eight sets that can be used to form all fifteen sets for quarter-pixel and half-pixel positions.

С другой стороны, аналогичная интерполяционной фильтрация целопикселных значений позволяет улучшать сжатие конкретно во время изменений освещения, выходов из затемнения или затемнений сцены, позволяет удалять шум и упрощать увеличение резкости кадров с изображениями и позволяет помогать улучшать кодирование точного перемещения объекта между последовательными видеокадрами, в частности, когда симметрия не накладывается на коэффициенты фильтрации. Кроме того, также обнаружено, что целопикселная фильтрация является чрезвычайно полезной, к примеру, для того чтобы улучшать сжатие в видеопоследовательностях, которые имеют изменения фокуса.On the other hand, similar interpolation filtering of integer-pixel values allows you to improve compression specifically during changes in lighting, exits from darkening or darkening the scene, allows you to remove noise and simplify sharpening frames with images, and helps to improve the encoding of the exact movement of an object between consecutive video frames, in particular when symmetry is not superimposed on the filter coefficients. In addition, it has also been found that integer-pixel filtering is extremely useful, for example, in order to improve compression in video sequences that have focus changes.

Традиционно, аналогичная интерполяционной фильтрация не выполняется для целопикселных позиций в AIF. Вместо этого соответствующая целопикселная позиция в опорном кадре используется просто "как есть". Однако в соответствии с настоящим раскрытием, фильтр может использоваться для целопикселных местоположений способом, который является аналогичным интерполяциям. Интерполяционная фильтрация для целопикселных позиций технически является ошибочным названием, поскольку пикселные значения целопикселных позиций уже существуют. Таким образом, фильтрация целопикселных позиций упоминается в данном документе как аналогичная интерполяционной фильтрация и может рассматриваться как простая фильтрация целопикселных значений, чтобы формировать новые отрегулированные пикселные значения.Traditionally, similar interpolation filtering is not performed for integer-pixel positions in AIF. Instead, the corresponding integer-pixel position in the reference frame is used simply "as is". However, in accordance with the present disclosure, a filter can be used for integer-pixel locations in a manner that is similar to interpolations. Interpolation filtering for integer-pixel positions is technically an erroneous name, since pixel values of integer-pixel positions already exist. Thus, filtering integer-pixel positions is referred to herein as similar interpolation filtering and can be considered as simple filtering of integer-pixel values to form new adjusted pixel values.

В отличие от интерполяционной фильтрации для субпикселных позиций, где цель состоит в получении несуществующих значений в опорном кадре, пикселы в целочисленных позициях в опорном кадре уже существуют. При этом применение фильтрации к целопикселным позициям в опорном кадре предлагает ряд преимуществ. Например, когда целопикселные позиции содержат смещение, фильтрация целопикселных позиций может обеспечивать лучшую фиксацию изменений освещения между кадрами. Дополнительно, фильтрация для целопикселных позиций позволяет целопикселным позициям фиксировать спецэффекты, такие как выход из затемнения и затемнение. Фильтрация для целопикселных позиций также позволяет удалять определенные шумы при передаче сигналов (к примеру, шум камеры) и/или выполнять увеличение резкости, если требуется. Кроме того, если симметрия для целопикселного фильтра не накладывается, целопикселный фильтр может помогать фиксировать точное перемещение объекта, такое как перемещение объекта, которое не является кратным четверти пиксела. В завершение, целопикселная фильтрация также может применяться для улучшения сжатия видеопоследовательностей, когда происходят изменения фокуса.Unlike interpolation filtering for sub-pixel positions, where the goal is to obtain non-existent values in the reference frame, pixels at integer positions in the reference frame already exist. The application of filtering to integer-pixel positions in the reference frame offers several advantages. For example, when integer-pixel positions contain an offset, filtering integer-pixel positions can provide better capture of lighting changes between frames. Additionally, filtering for integer-pixel positions allows integer-pixel positions to capture special effects such as dimming and dimming. Filtering for integer-pixel positions also allows you to remove certain noise when transmitting signals (for example, camera noise) and / or perform sharpening if necessary. In addition, if the symmetry for the integer-pixel filter does not overlap, the integer-pixel filter can help capture the exact movement of an object, such as moving an object that is not a multiple of a quarter of a pixel. Finally, integer-pixel filtering can also be used to improve compression of video sequences when changes in focus occur.

В некоторых случаях интерполяционная фильтрация целопикселных позиций может зависеть от векторов движения. Другими словами, MC-модуль 37 модуля 32 прогнозирования может адаптивно применять интерполяционную фильтрацию на основе вектора движения, идентифицированного посредством ME-модуля 35. Например, интерполяционная фильтрация целопикселных позиций может выполняться, когда вектор движения указывает на целопикселную позицию. Интерполяционная фильтрация может приводить к отрегулированному пикселному значению для целопикселной позиции. Когда вектор движения указывает на субпикселную позицию, фильтрация целопикселных позиций не выполняется относительно целопикселных значений, но фильтрация может использоваться для интерполяции субпикселных значений. Таким образом, целопикселная фильтрация может считаться адаптивной на основе векторов движения.In some cases, interpolation filtering of integer-pixel positions may depend on motion vectors. In other words, the MC module 37 of the prediction module 32 can adaptively apply interpolation filtering based on the motion vector identified by the ME module 35. For example, interpolation filtering of integer-pixel positions can be performed when the motion vector indicates an integer-pixel position. Interpolation filtering can result in a adjusted pixel value for an integer-pixel position. When a motion vector indicates a subpixel position, integer-pixel position filtering is not performed relative to integer-pixel values, but filtering can be used to interpolate sub-pixel values. Thus, integer-pixel filtering can be considered adaptive based on motion vectors.

Для целопикселных позиций интерполяционный фильтр 5×5 в форме уравнения (15) может извлекаться с использованием аналитического процесса, идентичного процессу, используемому для извлечения фильтров субпикселной позиции.For integer-pixel positions, a 5 × 5 interpolation filter in the form of equation (15) can be retrieved using an analytical process identical to the process used to extract the sub-pixel position filters.

Figure 00000021
Figure 00000021

где pFP - это фильтрованное целопикселное значение, Pi,j - это целопикселное значение в позиции (i, j), hFPi,j - это коэффициент для позиции (i, j), и oFP -это смещение фильтра. В некоторых случаях, интерполяционный фильтр для целопикселных позиций может не иметь смещения фильтра (т.е. oFP=0). В других случаях, смещение фильтра oFP может использовать любое число технологий.where p FP is the filtered integer pixel value, P i, j is the integer pixel value at position (i, j), h FP i, j is the coefficient for position (i, j), and o FP is the filter offset. In some cases, the interpolation filter for integer-pixel positions may not have a filter offset (i.e. o FP = 0). In other cases, the o FP filter offset can use any number of technologies.

Различные смещения могут быть заданы для каждой субпикселной позиции, к примеру, пятнадцать различных смещений могут быть заданы для каждой субпикселной позиции, показанной на Фиг.3. Другое смещение может быть задано для целых пикселов, что дает общее число смещений в шестнадцать. Находящаяся одновременно на рассмотрении и переуступленная заявка № ________, на имя Karczewicz и др., озаглавленная "OFFSETS AT SUB-PIXEL RESOLUTION", номер дела поверенного 081399U2, поданная в один день с настоящей заявкой и включенная в настоящий документ посредством ссылки, предоставляет множество дополнительных сведений относительно использования многих смещений для различного пиксела и субпикселных местоположений.Different offsets can be set for each subpixel position, for example, fifteen different offsets can be set for each subpixel position shown in FIG. 3. A different offset can be set for whole pixels, giving a total number of offsets of sixteen. The simultaneously pending and transferred application No. ________, addressed to Karczewicz et al., Entitled "OFFSETS AT SUB-PIXEL RESOLUTION", Attorney's case number 081399U2, filed on the same day as this application and incorporated herein by reference, provides many additional information regarding the use of many offsets for different pixels and sub-pixel locations.

Для сокращения числа коэффициентов фильтрации, которые должны передаваться, симметрия по коэффициентам, как в уравнении (16), может быть наложена на целопикселный фильтр.To reduce the number of filtering coefficients to be transmitted, symmetry in the coefficients, as in equation (16), can be superimposed on an integer-pixel filter.

Figure 00000022
Figure 00000022

Другие формы симметрии по коэффициентам также могут использоваться. То, накладывается или нет симметрия по коэффициентам, может определяться кодером и сигнализироваться декодеру. Если симметрия, как в (16), используется для целопикселного фильтра, то 9 коэффициентов фильтрации и 1 смещение, возможно, должны передаваться в декодер.Other forms of symmetry by coefficients can also be used. Whether or not symmetry is imposed by the coefficients can be determined by the encoder and signaled to the decoder. If symmetry, as in (16), is used for an integer-pixel filter, then 9 filtering coefficients and 1 offset should probably be transmitted to the decoder.

Кодирование смещений может выполняться посредством кодирования сначала целочисленного смещения и последующего кодирования каждого дробного смещения. В этом случае целочисленное смещение и дробные смещения кодируются по-разному. Целочисленное смещение может кодироваться с помощью экспоненциального кода Голомба со знаком. В зависимости от величины целочисленного смещения, дробные смещения могут квантоваться отлично от целочисленного смещения. Например, более приблизительные уровни квантования могут применяться для дробных смещений, когда целочисленное смещение имеет большую величину. После квантования дробные смещения могут кодироваться с использованием кодов фиксированной длины. В качестве примера, следующий псевдокод может иллюстрировать, как данное дробное смещение может кодироваться с использованием различных кодов фиксированной длины, заданных на основе значения целочисленного смещения.The encoding of the offsets may be performed by encoding the integer offset first and then encoding each fractional offset. In this case, the integer offset and fractional offsets are encoded differently. The integer offset can be encoded using the exponential signed Golomb code. Depending on the magnitude of the integer bias, fractional biases may be quantized differently from the integer bias. For example, more approximate quantization levels can be applied to fractional biases when the integer bias is large. After quantization, fractional offsets can be encoded using fixed-length codes. As an example, the following pseudo-code can illustrate how a given fractional offset can be encoded using various fixed-length codes defined based on an integer offset value.

Пусть offsetI является целочисленным смещениемLet offsetI be an integer offset

Пусть offsetF является дробным смещениемLet offsetF be a fractional offset

Пусть offsetFbits является числом битов, используемым, чтобы квантовать offsetFLet offsetFbits be the number of bits used to quantize offsetF

Пусть abs(a) является абсолютным значением aLet abs (a) be the absolute value of a

if(abs(offsetI)=0)if (abs (offsetI) = 0)

offsetFbits=5offsetFbits = 5

else if(abs(offsetI)<3)else if (abs (offsetI) <3)

offsetFbits=4offsetFbits = 4

else if(abs(offsetI)<7)else if (abs (offsetI) <7)

offsetFbits=2offsetFbits = 2

elseelse

offsetFbits=0offsetFbits = 0

В этом случае, видеокодер 50 может использовать модуль 41 прогнозирования коэффициентов и квантования, который для каждого из значений смещения назначает первое число битов целочисленной части данного значения смещения и назначает второе число битов дробной части данного значения смещения, при этом первое и второе число битов определяются на основе величины целочисленной части. В этом случае квантованные версии значений смещения могут отправляться из модуля 32 прогнозирования как элементы синтаксиса прогнозирования после выполнения квантования значений смещения согласно вышеприведенному псевдокоду. В любом случае видеокодер 50 может кодировать первое число битов отлично от второго числа битов.In this case, video encoder 50 may use a coefficient prediction and quantization module 41, which for each of the offset values assigns the first number of bits of the integer part of the given offset value and assigns the second number of bits of the fractional part of this offset value, with the first and second number of bits being determined by based on the value of the integer part. In this case, the quantized versions of the offset values may be sent from the prediction unit 32 as elements of the prediction syntax after the quantization of the offset values is performed according to the above pseudo-code. In any case, video encoder 50 may encode the first number of bits differently from the second number of bits.

Фиг.7 является концептуальной схемой, иллюстрирующей четыре целопикселные позиции и пятнадцать субпикселных позиций с штриховкой, чтобы группировать позиции пиксела, которые могут использовать симметрию по пикселам для коэффициентов фильтрации в соответствии с этим раскрытием сущности. В частности, Фиг.7 иллюстрирует субпикселные позиции "a"-"o", соответствующие целопикселные позиции C3. Позиции в целочисленный субпиксел, показанные на Фиг.7, соответствуют позициям по Фиг.4 и 5. Таким образом, субпикселные местоположения "e", "f", "g", "i", "j", "k", "m", "n" и o" могут иметь значения, определенные посредством поддержки в двенадцать пикселов, как показано на Фиг.4, при этом субпикселные местоположения "a", "b" и "c" и субпикселные местоположения "d", "h" и "l" могут иметь значения, определенные посредством поддержек горизонтальных и линейных пикселов, показанные на Фиг.5.7 is a conceptual diagram illustrating four integer-pixel positions and fifteen sub-pixel positions with a hatch to group pixel positions that can use pixel symmetry for filtering coefficients in accordance with this disclosure. In particular, FIG. 7 illustrates the sub-pixel positions “a” through “o” corresponding to the integer-pixel positions C3. The positions in the integer subpixel shown in FIG. 7 correspond to the positions in FIGS. 4 and 5. Thus, the subpixel locations “e”, “f”, “g”, “i”, “j”, “k”, “ m "," n "and o" may have values determined by twelve pixel support, as shown in Figure 4, with subpixel locations "a", "b" and "c" and subpixel locations "d", " h "and" l "may have the meanings determined by the horizontal and linear pixel supports shown in Figure 5.

В этом сценарии симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "a" являются симметричными относительно коэффициентов фильтрации для местоположения пиксела "c". Аналогично, симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "d" являются симметричными относительно коэффициентов фильтрации для местоположения пиксела "l". Симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "e" являются симметричными относительно коэффициентов фильтрации для местоположений пикселов "g", "m" и "o" и симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "i" являются симметричными относительно коэффициентов фильтрации для местоположений пикселов "k", и симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "f" являются симметричными относительно коэффициентов фильтрации для местоположений пикселов "n". Следовательно, только восемь наборов значений коэффициентов, возможно, должны передаваться как часть потока видеобитов, чтобы предоставлять возможность декодеру формировать полные наборы значений коэффициентов для всех пятнадцати местоположений пикселов. Кроме того, для любого данного набора коэффициентов, симметрия по коэффициентам может давать возможность отправки только поднабора значений коэффициентов, и декодер может формировать полный набор значений коэффициентов для данного местоположения пиксела на основе поднабора и симметрии по коэффициентам.In this scenario, pixel symmetry can be superimposed so that the filter coefficients for the pixel location “a” are symmetrical with respect to the filter coefficients for the pixel location “c”. Similarly, pixel symmetry can be superimposed so that the filter coefficients for the pixel location “d” are symmetrical with respect to the filter coefficients for the pixel location “l”. The pixel symmetry can be superimposed so that the filter coefficients for the pixel location “e” are symmetrical with respect to the filter coefficients for the pixel locations “g”, “m” and “o” and the pixel symmetry can be superimposed so that the filter coefficients for the location pixels "i" are symmetrical with respect to filtering coefficients for pixel locations "k", and pixel symmetry can be superimposed so that filtering coefficients for pixel locations "f" are symmetric with respect to the filter coefficients for pixel location "n". Therefore, only eight sets of coefficient values may need to be transmitted as part of the video bitstream to enable the decoder to generate complete sets of coefficient values for all fifteen pixel locations. In addition, for any given set of coefficients, symmetry by coefficients can only send a subset of coefficient values, and the decoder can generate a complete set of coefficient values for a given pixel location based on a subset and symmetry by coefficients.

Один аспект настоящего раскрытия состоит в том, чтобы фактически удалять всю симметрию по пикселам между субпикселными позициями "a" и "c" относительно субпикселных позиций "d" и "l". Помимо этого, симметрия по пикселам может исключаться для субпикселной позиции "f" относительно субпикселной позиции "i". Помимо этого, симметрия по пикселам может исключаться для субпикселной позиции "k" относительно субпикселной позиции "n". В таких случаях диагональная корреляция может быть низкой, делая недейственным или неэффективным то, чтобы накладывать диагональную симметрию. Таким образом, восемь наборов коэффициентов, используемых, чтобы формировать все пятнадцать наборов коэффициентов, могут быть большим набором, чем в некоторых традиционных технологиях, когда симметрия исключается в диагональной размерности для некоторых из местоположений пикселов. В некоторых случаях, диагональная симметрия по пикселам и диагональная симметрия по коэффициентам могут исключаться или не допускаться, чтобы предоставлять возможность дисперсии в вертикальных размерностях.One aspect of the present disclosure is to virtually remove all pixel symmetry between subpixel positions "a" and "c" relative to subpixel positions "d" and "l". In addition, pixel symmetry can be eliminated for the sub-pixel position "f" relative to the sub-pixel position "i". In addition, pixel symmetry can be eliminated for the sub-pixel position "k" relative to the sub-pixel position "n". In such cases, the diagonal correlation may be low, making it ineffective or ineffective to impose diagonal symmetry. Thus, the eight sets of coefficients used to form all fifteen sets of coefficients can be a larger set than in some traditional technologies when symmetry is eliminated in the diagonal dimension for some of the pixel locations. In some cases, pixel diagonal symmetry and coefficient diagonal symmetry may or may not be allowed to allow dispersion in vertical dimensions.

Снова ссылаясь на Фиг.1, видеокодер 22 может определять восемь наборов коэффициентов фильтрации и использовать восемь наборов коэффициентов фильтрации, чтобы формировать все пятнадцать наборов коэффициентов фильтрации, соответствующих пятнадцати различным субпикселным местоположениям, на основе симметрии по коэффициентам и симметрии по пикселам, и выводить восемь наборов коэффициентов фильтрации как часть кодированного потока битов. Восемь наборов коэффициентов фильтрации могут выводиться для каждой кодированной единицы кодированного потока битов, или, возможно, несколько случаев восьми наборов коэффициентов фильтрации могут выводиться для различных областей кодированной единицы.Referring again to FIG. 1, video encoder 22 may determine eight sets of filter coefficients and use eight sets of filter coefficients to generate all fifteen sets of filter coefficients corresponding to fifteen different sub-pixel locations, based on symmetry in the coefficients and pixel symmetry, and output eight sets filter coefficients as part of the encoded bitstream. Eight sets of filter coefficients may be output for each coded unit of the encoded bitstream, or perhaps several cases of eight sets of filter coefficients may be output for different areas of the coded unit.

Пятнадцать наборов соответствуют каждому субпикселному четверть-пикселному и полупикселному местоположению, показанному на Фиг.3, и восемь наборов, симметрия по коэффициентам и симметрия по пикселам определяют поддержки фильтра для каждого субпикселного четверть-пикселного и полупикселного местоположения. Видеодекодер 28 целевого устройства 16 могут принимать восемь наборов коэффициентов фильтрации как часть кодированного потока видеобитов, формировать пятнадцать наборов коэффициентов фильтрации, соответствующих пятнадцати различным субпикселным местоположениям, на основе восьми наборов коэффициентов фильтрации, формировать интерполированные прогнозирующие данные для декодирования видео на основе одного из пятнадцати наборов коэффициентов фильтрации, при этом интерполированные прогнозирующие данные соответствуют одному из пятнадцати различных субпикселных местоположений, и декодировать один или более видеоблоков на основе интерполированных прогнозирующих данных.Fifteen sets correspond to each subpixel quarter-pixel and half-pixel location shown in FIG. 3, and eight sets, coefficient symmetry, and pixel symmetry determine filter supports for each sub-pixel quarter-pixel and half-pixel location. Video decoder 28 of the target device 16 can receive eight sets of filter coefficients as part of the encoded video bitstream, generate fifteen sets of filter coefficients corresponding to fifteen different sub-pixel locations, based on eight sets of filter coefficients, generate interpolated predictive data for video decoding based on one of the fifteen sets of coefficients filtering, while the interpolated predictive data correspond to one of the spots twenty different sub-pixel locations, and decode one or more video blocks based on interpolated predictive data.

По меньшей мере, некоторые из восьми наборов коэффициентов фильтрации могут иметь симметрию по коэффициентам так, что данный набор с симметрией по коэффициентам содержит поднабор коэффициентов фильтрации, ассоциированных с поддержкой фильтра для данного субпикселного местоположения, ассоциированного с данным набором. Таким образом, видеодекодер 28 может формировать пятнадцать наборов коэффициентов фильтрации, по меньшей мере, частично на основе симметрии по пикселам между двумя или более различных субпикселных местоположений. Кроме того, видеодекодер 28 может формировать пятнадцать наборов коэффициентов фильтрации, по меньшей мере, частично на основе симметрии по пикселам между двумя или более различных субпикселных местоположений и, по меньшей мере, частично на основе симметрии по коэффициентам, заданной для данного набора так, что данный набор с симметрией по коэффициентам содержит поднабор коэффициентов фильтрации, ассоциированных с поддержкой фильтра для данного субпикселного местоположения, ассоциированного с данным набором.At least some of the eight sets of filter coefficients may have coefficient symmetry such that the coefficient symmetry set contains a subset of filter coefficients associated with filter support for a given sub-pixel location associated with this set. Thus, video decoder 28 can generate fifteen sets of filter coefficients, at least in part, on the basis of pixel symmetry between two or more different sub-pixel locations. In addition, video decoder 28 may generate fifteen sets of filter coefficients at least partially based on pixel symmetry between two or more different sub-pixel locations and at least partially based on coefficient symmetry specified for this set so that a set with coefficient symmetry contains a subset of filtering coefficients associated with filter support for a given sub-pixel location associated with this set.

С другой стороны, пятнадцать наборов могут соответствовать каждому четверть-пикселному и полупикселному субпикселному местоположению. Симметрия по пикселам может существовать между различными пятнадцатью наборов коэффициентов фильтрации в вертикальной размерности и в горизонтальной размерности, но симметрия по пикселам не существует в диагональной размерности, по меньшей мере, для некоторых из пятнадцати наборов коэффициентов фильтрации. Как подробнее поясняется ниже, два из восьми наборов могут задавать три из пятнадцати наборов для поддержки горизонтального фильтра, два из восьми наборов могут задавать три из пятнадцати наборов для поддержки вертикального фильтра, и четыре из восьми наборов могут задавать девять из пятнадцати наборов для двумерной поддержки фильтра. Двумерная поддержка может содержать применимую поддержку 12-позиционного фильтра, окружающего девять субпикселных позиций в радиальной форме.Fifteen sets, on the other hand, can correspond to each quarter-pixel and half-pixel sub-pixel location. Pixel symmetry may exist between fifteen different sets of filter coefficients in the vertical dimension and in the horizontal dimension, but pixel symmetry does not exist in the diagonal dimension for at least some of the fifteen sets of filter coefficients. As explained in more detail below, two out of eight sets can specify three out of fifteen sets for supporting a horizontal filter, two out of eight sets can define three out of fifteen sets for supporting a vertical filter, and four out of eight sets can specify nine out of fifteen sets for two-dimensional filter support . Two-dimensional support may include applicable support for a 12-position filter surrounding nine subpixel positions in radial form.

В частности, интерполированные прогнозирующие данные могут содержать пятнадцать четверть-пикселных и полупикселных значений, к примеру, показанные на Фиг.7, при этом интерполяционный фильтр определяет двумерный массив из двенадцати позиций поддержки фильтра, к примеру, показанный на Фиг.4, которые применяются для определения девяти из пятнадцати четверть-пикселных и полупикселных значений, и, например, также показанный на Фиг.4. Формирование интерполированных прогнозирующих данных дополнительно может содержать применение линейных интерполяционных фильтров, которые задают одномерные матрицы позиций поддержки фильтра для шести из пятнадцати четверть-пикселных и полупикселных значений, к примеру, как показано на Фиг.5.In particular, the interpolated predictive data may contain fifteen quarter-pixel and half-pixel values, for example, shown in Fig. 7, while the interpolation filter defines a two-dimensional array of twelve filter support positions, for example, shown in Fig. 4, which are used for determining nine out of fifteen quarter-pixel and half-pixel values, and, for example, also shown in FIG. 4. The generation of interpolated predictive data may further include the use of linear interpolation filters that specify one-dimensional matrices of filter support positions for six of the fifteen quarter-pixel and half-pixel values, for example, as shown in FIG.

Горизонтальная симметрия и отсутствие диагональной симметрии может наблюдаться относительно субпикселных позиций "a" и "c" или относительно субпикселных позиций "i" и "k". В этом случае, позиции в целочисленный субпиксел "a" и "c" являются симметричными вдоль горизонтальной оси X, но симметрия не существует вдоль диагональной оси для этих пикселов так, что субпикселные местоположения "d" и "l" не являются симметричными относительно субпикселных позиций "a" и "c", соответственно. Аналогично, субпикселные позиции "i" и "k" являются симметричными вдоль горизонтальной оси X, но симметрия не существует вдоль диагональной оси для этих пикселов, так что субпикселные местоположения "f" и "n" не являются симметричными относительно субпикселных позиций "i" и "k", соответственно.Horizontal symmetry and the absence of diagonal symmetry can be observed relative to the subpixel positions "a" and "c" or relative to the subpixel positions "i" and "k". In this case, the positions in the integer subpixels "a" and "c" are symmetric along the horizontal axis X, but the symmetry does not exist along the diagonal axis for these pixels so that the subpixel locations "d" and "l" are not symmetrical with respect to the subpixel positions "a" and "c", respectively. Similarly, the sub-pixel positions “i” and “k” are symmetric along the horizontal axis X, but there is no symmetry along the diagonal axis for these pixels, so the sub-pixel locations “f” and “n” are not symmetrical with respect to the sub-pixel positions “i” and "k", respectively.

Симметрия по пикселам означает, что первый набор коэффициентов относительно первой субпикселной позиции является симметричным относительно второго набора коэффициентов относительно второй субпикселной позиции. Например, местоположение пиксела "a" имеет симметрию по пикселам относительно местоположения пиксела "c", и местоположение пиксела "d" имеет симметрию по пикселам относительно местоположения пиксела "l". Местоположение пиксела "f" имеет симметрию по пикселам относительно местоположения пиксела "n", и местоположение пиксела "i" имеет симметрию по пикселам относительно местоположения пиксела "k". Местоположение пиксела "e" имеет симметрию по пикселам относительно местоположений пикселов "g", "m" и "o". Штриховка, показанная на Фиг.7, демонстрирует эту симметрию по пикселам, к примеру, с общей штриховкой, соответствующей местоположениям пикселов, которые являются симметричными относительно других местоположений пикселов. В этом случае, коэффициенты для восьми местоположений пикселов (вместе с аспектами симметрии по пикселам) могут задавать коэффициенты для всех пятнадцати местоположений пикселов. Помимо этого, в рамках данного набора коэффициентов, может существовать симметрия по коэффициентам, так что только поднабор коэффициентов в этом наборе коэффициентов должен передаваться с потоком битов.Pixel symmetry means that the first set of coefficients with respect to the first subpixel position is symmetrical with respect to the second set of coefficients with respect to the second subpixel position. For example, the location of the pixel "a" has pixel symmetry relative to the location of the pixel "c", and the location of the pixel "d" has pixel symmetry relative to the location of the pixel "l". The pixel location “f” has pixel symmetry with respect to the pixel location “n”, and the pixel location “i” has pixel symmetry with respect to the pixel location “k”. The pixel location “e” has pixel symmetry with respect to the pixel locations “g”, “m”, and “o”. The shading shown in FIG. 7 shows this pixel symmetry, for example, with a common shading corresponding to pixel locations that are symmetrical with respect to other pixel locations. In this case, coefficients for eight pixel locations (together with aspects of pixel symmetry) can specify coefficients for all fifteen pixel locations. In addition, within a given set of coefficients, there may be symmetry in the coefficients, so that only a subset of the coefficients in this set of coefficients must be transmitted with a bit stream.

Видеокодер 22 может формировать кодированные видеоданные на основе интерполированных прогнозирующих данных, при этом интерполированные прогнозирующие данные содержат пятнадцать четверть-пикселных и полупикселных значений, причем интерполяционный фильтр задает двумерный массив из двенадцати позиций поддержки фильтра, которые применяются, чтобы задавать девять из пятнадцати четверть-пикселных и полупикселных значений. Формирование кодированных видеоданных на основе интерполированных прогнозирующих данных дополнительно может содержать применение линейных интерполяционных фильтров, которые задают одномерные матрицы позиций поддержки фильтра для шести из пятнадцати четверть-пикселных и полупикселных значений.Video encoder 22 may generate encoded video data based on the interpolated predictive data, wherein the interpolated predictive data contains fifteen quarter-pixel and half-pixel values, the interpolation filter defines a two-dimensional array of twelve filter support positions that are used to specify nine of the fifteen quarter-pixel and half-pixel values. The generation of encoded video data based on interpolated predictive data may further include the use of linear interpolation filters, which specify one-dimensional matrices of filter support positions for six of the fifteen quarter-pixel and half-pixel values.

Фиг.8 является концептуальной схемой, иллюстрирующей шесть позиций C1-C6 поддержки горизонтальных линейных пикселов относительно субпикселной позиции "b" с штриховкой, которая показывает симметрию по коэффициентам. В этом случае симметрия по коэффициентам означает, что только три коэффициента фильтрации требуются для C1, C2 и C3, чтобы задавать полный набор коэффициентов для позиций C1-C6 поддержки фильтра. C1 является симметричным с C6, C2 является симметричным с C5, а C3 является симметричным с C4. Таким образом, только три коэффициента должны передаваться как часть кодированного потока видеобитов, чтобы задавать набор из шести коэффициентов, требуемых для интерполяции субпикселной позиции "b".8 is a conceptual diagram illustrating six horizontal linear pixel support positions C1-C6 with respect to the sub-pixel position “b” with a hatch that shows symmetry in coefficients. In this case, coefficient symmetry means that only three filter coefficients are required for C1, C2, and C3 in order to specify a complete set of coefficients for filter support positions C1-C6. C1 is symmetric with C6, C2 is symmetric with C5, and C3 is symmetric with C4. Thus, only three coefficients must be transmitted as part of the encoded video bitstream to specify a set of six coefficients required for interpolating the sub-pixel position “b”.

Фиг.9 является концептуальной схемой, иллюстрирующей шесть позиций поддержки горизонтальных линейных пикселов относительно субпиксела, с штриховкой, которая показывает отсутствие симметрии по коэффициентам. Таким образом, все шесть коэффициентов требуются для определения набора коэффициентов для поддержки фильтра относительно субпикселной позиции "a". Однако, как указано выше, симметрия по пикселам означает, что эти идентичные коэффициенты относительно субпикселной позиции "a" также могут использоваться, чтобы извлекать поддержку фильтра для субпикселной позиции "c" (см. Фиг.7). Таким образом, только шесть коэффициентов должны передаваться как часть кодированного потока видеобитов, чтобы задавать два различных набора из шести коэффициентов, требуемых для интерполяции субпикселной позиции "a" и "c".9 is a conceptual diagram illustrating six positions of supporting horizontal linear pixels with respect to a subpixel, with a hatching that shows the lack of symmetry in the coefficients. Thus, all six coefficients are required to determine a set of coefficients to support the filter relative to the sub-pixel position “a”. However, as indicated above, pixel symmetry means that these identical coefficients with respect to sub-pixel position “a” can also be used to extract filter support for sub-pixel position “c” (see FIG. 7). Thus, only six coefficients must be transmitted as part of the encoded video bitstream to specify two different sets of six coefficients required to interpolate the sub-pixel position “a” and “c”.

Фиг.10 является концептуальной схемой, иллюстрирующей шесть позиций поддержки вертикальных линейных пикселов A3, B3, C3, D3, E3 и F3 относительно субпиксела "h", с штриховкой, которая показывает симметрию по коэффициентам. В этом случае симметрия по коэффициентам означает, что только три коэффициента фильтрации требуются для A3, B3 и C3, чтобы определять полный набор коэффициентов для позиций поддержки фильтра A3, B3, C3, D3, E3 и F3. A3 является симметричным с F3, B3 является симметричным с E3, а C3 является симметричным с D3. Таким образом, только три коэффициента должны передаваться как часть кодированного потока видеобитов, чтобы определять набор из шести коэффициентов, требуемых для интерполяции субпикселной позиции "h".10 is a conceptual diagram illustrating six support positions of vertical linear pixels A3, B3, C3, D3, E3 and F3 with respect to the subpixel “h”, with a hatching that shows symmetry in coefficients. In this case, coefficient symmetry means that only three filter coefficients are required for A3, B3 and C3 in order to determine the full set of coefficients for filter support positions A3, B3, C3, D3, E3 and F3. A3 is symmetric with F3, B3 is symmetric with E3, and C3 is symmetric with D3. Thus, only three coefficients must be transmitted as part of the encoded video bitstream to determine the set of six coefficients required for interpolating the sub-pixel position “h”.

Фиг.11 является концептуальной схемой, иллюстрирующей шесть позиций поддержки вертикальных линейных пикселов относительно субпиксела, с штриховкой, которая показывает отсутствие симметрии по коэффициентам.11 is a conceptual diagram illustrating six positions of supporting vertical linear pixels with respect to a subpixel, with a hatching that shows the lack of symmetry in the coefficients.

Таким образом, все шесть коэффициентов требуются, чтобы задавать набор коэффициентов для поддержки фильтра относительно субпикселной позиции "d". Однако как указано выше, симметрия по пикселам означает, что эти идентичные коэффициенты относительно субпикселной позиции "d" также могут использоваться, чтобы извлекать поддержку фильтра для субпикселной позиции "l" (см. Фиг.7). Таким образом, только шесть коэффициентов должны передаваться как часть кодированного потока видеобитов, чтобы задавать два различных набора из шести коэффициентов, требуемых для интерполяции субпикселной позиции "d" и "l".Thus, all six coefficients are required to specify a set of coefficients to support the filter relative to the sub-pixel position “d”. However, as indicated above, pixel symmetry means that these identical coefficients with respect to the sub-pixel position “d” can also be used to extract filter support for the sub-pixel position “l” (see FIG. 7). Thus, only six coefficients must be transmitted as part of the encoded video bitstream to specify two different sets of six coefficients required to interpolate the sub-pixel position “d” and “l”.

Фиг.12 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов (при этом целопикселные позиции показаны с заглавными буквенными обозначениями и штриховкой) относительно субпикселной позиции "e". Штриховка показывает отсутствие симметрии по коэффициентам. Таким образом, все двенадцать коэффициентов требуются, чтобы задавать набор коэффициентов для поддержки фильтра относительно субпикселной позиции "e". Однако как указано выше, симметрия по пикселам означает, что эти идентичные коэффициенты относительно субпикселной позиции "e" также могут использоваться для извлечения поддержки фильтра для субпикселных позиций "g", "m" и "o" (см. Фиг.7). Следовательно, 12 коэффициентов определяют субпикселную позицию поддержки фильтра "e", и эти идентичные коэффициенты могут использоваться, чтобы извлекать набор коэффициентов для субпикселных позиций "g", "m" и "o".12 is a conceptual diagram illustrating twelve 2D pixel support positions (wherein integer-pixel positions are shown with capital letters and hatching) with respect to the sub-pixel position “e”. Hatching shows the lack of symmetry in the coefficients. Thus, all twelve coefficients are required to define a set of coefficients to support the filter relative to the sub-pixel position "e". However, as indicated above, pixel symmetry means that these identical coefficients with respect to the sub-pixel position “e” can also be used to extract filter support for the sub-pixel positions “g”, “m” and “o” (see FIG. 7). Therefore, 12 coefficients determine the sub-pixel position of the filter support "e", and these identical coefficients can be used to extract a set of coefficients for the sub-pixel positions "g", "m" and "o".

Фиг.13 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов (при этом целопикселные позиции показаны с заглавными буквенными обозначениями) относительно субпиксела "i", с штриховкой, которая показывает симметрию по коэффициентам. В этом случае симметрия по коэффициентам означает, что коэффициенты фильтрации для позиций поддержки фильтра B3, B4, C2, C3, C4 и C5 могут использоваться, чтобы задавать коэффициенты фильтрации для позиций поддержки фильтра E3, E4, D2, D3, D4 и D5. B3 является симметричным с E3, B4 является симметричным с E4, C2 является симметричным с D2, C3 является симметричным с D3, C4 является симметричным с D4, и C5 является симметричным с D5. Таким образом, только шесть коэффициентов должны передаваться как часть кодированного потока видеобитов, чтобы определять набор из двенадцати коэффициентов, требуемых для интерполяции субпикселной позиции "i". Кроме того, как указано выше, субпикселная позиция "i" может иметь симметрию по пикселам относительно субпикселной позиции "k". Следовательно, идентичный поднабор из шести коэффициентов может определять полные наборы из двенадцати коэффициентов фильтрации для субпикселных позиций "i" и "k".13 is a conceptual diagram illustrating twelve positions of supporting two-dimensional pixels (while integer-pixel positions are shown with capital letters) relative to the subpixel "i", with a hatch that shows symmetry in coefficients. In this case, coefficient symmetry means that the filter coefficients for filter support positions B3, B4, C2, C3, C4 and C5 can be used to set filter coefficients for filter support positions E3, E4, D2, D3, D4 and D5. B3 is symmetric with E3, B4 is symmetric with E4, C2 is symmetric with D2, C3 is symmetric with D3, C4 is symmetric with D4, and C5 is symmetric with D5. Thus, only six coefficients must be transmitted as part of the encoded video bitstream to determine the set of twelve coefficients required to interpolate the sub-pixel position “i”. In addition, as indicated above, the subpixel position "i" may have pixel symmetry relative to the subpixel position "k". Therefore, an identical subset of six coefficients can determine complete sets of twelve filtering coefficients for sub-pixel positions “i” and “k”.

Фиг.14 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов (при этом целопикселные позиции показаны с заглавными буквенными обозначениями) относительно субпиксела "f", с штриховкой, которая показывает симметрию по коэффициентам. В этом случае, симметрия по коэффициентам означает, что коэффициенты фильтрации для позиций поддержки фильтра C2, D2, B3, C3, D3 и E3 могут использоваться для определения коэффициентов фильтрации для позиций поддержки фильтра C5, D5, B4, C4, D4 и E4. C2 является симметричным с C5, D2 является симметричным с D5, B3 является симметричным с B4, C3 является симметричным с C4, D3 является симметричным с D4, и E3 является симметричным с E4. Таким образом, только шесть коэффициентов должны передаваться как часть кодированного потока видеобитов, чтобы определять набор из двенадцати коэффициентов, требуемых для интерполяции субпикселной позиции "f". Кроме того, как указано выше, субпикселная позиция "f" может иметь симметрию по пикселам относительно субпикселной позиции "n". Следовательно, идентичный поднабор из шести коэффициентов может определять полные наборы из двенадцати коэффициентов фильтрации для субпикселных позиций "f" и "n".14 is a conceptual diagram illustrating twelve 2D pixel support positions (wherein integer-pixel positions are shown with capital letters) relative to the subpixel “f”, with a hatch that shows symmetry in coefficients. In this case, coefficient symmetry means that the filter coefficients for filter support positions C2, D2, B3, C3, D3 and E3 can be used to determine the filter coefficients for filter support positions C5, D5, B4, C4, D4 and E4. C2 is symmetric with C5, D2 is symmetric with D5, B3 is symmetric with B4, C3 is symmetric with C4, D3 is symmetric with D4, and E3 is symmetric with E4. Thus, only six coefficients should be transmitted as part of the encoded video bitstream to determine the set of twelve coefficients required to interpolate the sub-pixel position “f”. Furthermore, as indicated above, the sub-pixel position “f” may have pixel symmetry with respect to the sub-pixel position “n”. Therefore, an identical subset of six coefficients can determine complete sets of twelve filter coefficients for sub-pixel positions “f” and “n”.

Фиг.15 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов (при этом целопикселные позиции показаны с заглавными буквенными обозначениями) относительно субпиксела "j", с штриховкой, которая показывает симметрию по коэффициентам. В этом случае, симметрия по коэффициентам означает, что только три коэффициента фильтрации требуются для B3, C2 и C3, чтобы определять полный набор из двенадцати коэффициентов для позиций поддержки фильтра B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 и E4. C3 является симметричным с C4, D3 и D4, C2 является симметричным с D2, C5 и E4, и B3 являются симметричными с B4, E3 и D5. Таким образом, только три коэффициента должны передаваться как часть кодированного потока видеобитов, чтобы определять набор из двенадцати коэффициентов, требуемых для интерполяции субпикселной позиции "j".15 is a conceptual diagram illustrating twelve positions of supporting two-dimensional pixels (while integer-pixel positions are shown with capital letters) relative to the subpixel "j", with a hatch that shows symmetry in coefficients. In this case, symmetry in the coefficients means that only three filter coefficients are required for B3, C2 and C3 to determine the full set of twelve coefficients for filter support positions B3, B4, C2, C3, C4, C5, D2, D3, D4 , D5, E3 and E4. C3 is symmetric with C4, D3 and D4, C2 is symmetric with D2, C5 and E4, and B3 are symmetric with B4, E3 and D5. Thus, only three coefficients should be transmitted as part of the encoded video bitstream to determine the set of twelve coefficients required to interpolate the sub-pixel position “j”.

Фиг.16 является блок-схемой, иллюстрирующей пример видеодекодера, который может декодировать видеопоследовательность, которая кодирована описанным в данном документе способом. Видеодекодер 60 является одним примером специализированного компьютерного видеоустройства, упоминаемого в данном документе как "кодер". Видеодекодер 60 включает в себя модуль 52 энтропийного декодирования, который энтропийно декодирует принимаемый поток битов, чтобы формировать квантованные коэффициенты и элементы синтаксиса прогнозирования. Элементы синтаксиса прогнозирования могут включать в себя режим кодирования, один или более векторов движения, информацию, идентифицирующую технологию интерполяции, используемую для того, чтобы формировать субпикселные данные, коэффициенты для использования в интерполяционной фильтрации и/или другую информацию, ассоциированную с формированием прогнозного блока.FIG. 16 is a block diagram illustrating an example of a video decoder that can decode a video sequence that is encoded as described herein. Video decoder 60 is one example of a specialized computer video device referred to herein as a “coder”. Video decoder 60 includes an entropy decoding module 52 that entropy decodes a received bitstream to generate quantized coefficients and prediction syntax elements. Prediction syntax elements may include a coding mode, one or more motion vectors, information identifying interpolation technology used to generate sub-pixel data, coefficients for use in interpolation filtering, and / or other information associated with generating the prediction block.

Элементы синтаксиса прогнозирования, к примеру, коэффициенты направляются в модуль 55 прогнозирования. Если прогнозирование используется, чтобы кодировать коэффициенты относительно коэффициентов неперестраиваемого фильтра или относительно друг друга, модуль 53 прогнозирования коэффициентов и обратного квантования может декодировать элементы синтаксиса, чтобы задавать фактические коэффициенты. Кроме того, если квантование применяется к любому синтаксису прогнозирования, модуль 53 прогнозирования коэффициентов и обратного квантования также может удалять такое квантование. Коэффициенты фильтрации, например, могут кодироваться с прогнозированием и квантоваться согласно настоящему раскрытию, и в этом случае модуль 53 прогнозирования коэффициентов и обратного квантования может использоваться посредством видеодекодера 60, чтобы декодировать с прогнозированием и деквантовать такие коэффициенты.Prediction syntax elements, for example, coefficients, are sent to prediction module 55. If prediction is used to code coefficients relative to non-tunable filter coefficients or relative to each other, coefficient prediction and inverse quantization module 53 may decode syntax elements to specify actual coefficients. In addition, if quantization is applied to any prediction syntax, coefficient prediction and inverse quantization module 53 may also remove such quantization. Filtering coefficients, for example, can be predicted encoded and quantized according to the present disclosure, in which case coefficient prediction and inverse quantization module 53 can be used by video decoder 60 to predictively decode and quantize such coefficients.

Модуль 55 прогнозирования может формировать прогнозирующие данные на основе элементов синтаксиса прогнозирования и одного или более ранее декодированных блоков, которые сохраняются в запоминающем устройстве 62, способом, аналогичным подробно описанному выше относительно модуля 32 прогнозирования видеокодера 50. В частности, модуль 55 прогнозирования может выполнять одну или более технологий интерполяционной фильтрации настоящего раскрытия в ходе компенсации движения, чтобы формировать прогнозный блок с конкретной точностью, к примеру, с четверть-пикселной точностью. По сути, одна или более технологий настоящего раскрытия могут использоваться посредством видеодекодера 60 при формировании прогнозного блока. Модуль 55 прогнозирования может включать в себя модуль компенсации движения, который содержит фильтры, используемые для технологий интерполяционной и аналогичной интерполяционной фильтрации настоящего раскрытия. Компонент компенсации движения не показан на Фиг.16 для простоты и удобства иллюстрации.Prediction unit 55 may generate predictive data based on prediction syntax elements and one or more previously decoded blocks that are stored in memory 62, in a manner similar to that described above with respect to prediction unit 32 of video encoder 50. In particular, prediction unit 55 may perform one or more interpolation filtering techniques of the present disclosure during motion compensation to form a prediction block with specific accuracy, for example, with quarter pixel accuracy. In fact, one or more of the technologies of the present disclosure may be used by video decoder 60 to form a prediction block. Prediction module 55 may include a motion compensation module that includes filters used for interpolation and similar interpolation filtering techniques of the present disclosure. The motion compensation component is not shown in FIG. 16 for simplicity and convenience of illustration.

Модуль 56 обратного квантования обратно квантует, т.е. деквантует квантованные блочные коэффициенты. Процесс обратного квантования может быть процессом, заданным для декодирования H.264. Модуль 58 обратного преобразования применяет обратное преобразование, к примеру, обратное DCT или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пикселном домене. Сумматор 64 суммирует остаточный блок с соответствующим прогнозным блоком, сформированным посредством модуля 55 прогнозирования, чтобы формировать восстановленную версию исходного блока, кодированного посредством видеокодера 50. Если требуется, фильтр удаления блочности также может применяться, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Декодированные видеоблоки затем сохраняются в модуле 62 хранения опорных кадров, который предоставляет опорные блоки для последующей компенсации движения и также формирует декодированное видео, чтобы возбуждать дисплейное устройство (такое как устройство 28 по Фиг.1).The inverse quantization unit 56 inversely quantizes, i.e. quantizes block block coefficients. The inverse quantization process may be a process specified for H.264 decoding. Inverse transform unit 58 applies an inverse transform, such as an inverse DCT or a conceptually similar inverse transform process, to transform coefficients to form residual blocks in a pixel domain. An adder 64 sums the residual block with a corresponding prediction block generated by the prediction unit 55 to generate a reconstructed version of the original block encoded by the video encoder 50. If desired, the deblocking filter can also be applied to filter the decoded blocks to remove blocking artifacts. The decoded video blocks are then stored in a reference frame storage unit 62, which provides reference blocks for subsequent motion compensation and also generates decoded video to drive a display device (such as device 28 of FIG. 1).

Технологии NS-AIF могут вычислять пикселные значения для двумерных субпикселных позиций с использованием интерполяционного фильтра, имеющего поддержку 36-позиционного фильтра (т.е. поддержку двумерного фильтра 6×6). S-AIF использует разделимые целопикселные позиции в качестве поддержки фильтра для интерполяционной фильтрации сначала в горизонтальном направлении, а не в вертикальной размерности. D-AIF использует менее сложный интерполяционный фильтр для вычисления двумерных субпикселных позиций, чем NS-AIF. В D-AIF двумерные субпикселные позиции вычисляются с использованием интерполяционного фильтра, имеющего либо поддержку 6-позиционного фильтра, либо поддержку 12-позиционного диагонального фильтра.NS-AIF technologies can calculate pixel values for two-dimensional subpixel positions using an interpolation filter that has 36-position filter support (i.e., 6 × 6 two-dimensional filter support). S-AIF uses separable integer-pixel positions as a filter support for interpolation filtering, first in the horizontal direction and not in the vertical dimension. D-AIF uses a less complex interpolation filter to calculate two-dimensional subpixel positions than NS-AIF. In D-AIF, two-dimensional sub-pixel positions are calculated using an interpolation filter that has either 6-position filter support or 12-position diagonal filter support.

Один недостаток использования поддержки диагонального фильтра, как в D-AIF, состоит в том, что целопикселные позиции, используемые при фильтрации, находятся на значительном расстоянии от текущей позиции, которая должна интерполироваться. По мере того расстояние между текущей позицией, которая должна быть интерполирована, и позициями пикселов, используемыми в качестве поддержки фильтра, увеличивается, пространственная корреляция пикселов понижается. По сути, поддержка диагонального фильтра, используемая в D-AIF, является менее подходящей для формирования точного прогнозирования.One drawback of using diagonal filter support, as in D-AIF, is that the integer-pixel positions used in filtering are at a considerable distance from the current position to be interpolated. As the distance between the current position to be interpolated and the pixel positions used as filter support increases, the spatial correlation of pixels decreases. In fact, the diagonal filter support used in D-AIF is less suitable for accurate prediction.

Чтобы обеспечивать лучшее прогнозирование с помощью пикселов с более высокой корреляцией с позицией, которая должна интерполироваться (т.е. позиций пиксела, которые находятся ближе или на меньшем расстоянии от позиции, которая должна интерполироваться), при одновременном поддержании неизменной низкой сложности, предлагаемой посредством D-AIF, поддержка 12-позиционного фильтра, показанная на Фиг.4, может использоваться для интерполяции. Целопикселные позиции, используемые в поддержке 12-позиционного фильтра, описанной в настоящем раскрытии, включают в себя четыре целопикселные позиции, окружающие субпикселные позиции, т.е. целопикселные позиции C3, C4, D3 и D4, которые могут упоминаться как "угловые" целопикселные позиции, поскольку они находятся около углов двумерных субпикселных позиций. В дополнение к угловым целопикселным позициям одна или более целопикселных позиций, непосредственно смежных с угловыми целопикселными позициями, также могут использоваться в поддержке фильтра. Целопикселные позиции, непосредственно смежные с угловыми целопикселными позициями, могут включать в себя целопикселные позиции непосредственно выше (вверх или на север) или непосредственно ниже (вниз или на юг) угловых целопикселных позиций, а также целопикселные позиции непосредственно влево (или на запад) или непосредственно вправо (или на восток) угловых целопикселных позиций. В примере, проиллюстрированном на Фиг.4, поддержка 12-позиционного фильтра может включать в себя целопикселные местоположения B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 и E4. Все эти целопикселные позиции находятся в пределах двух целопикселных позиций субпиксела, который должен интерполироваться.In order to provide better prediction using pixels with a higher correlation with the position that should be interpolated (i.e., the positions of the pixel that are closer or shorter than the position that should be interpolated), while maintaining the same low complexity offered by D -AIF, the 12-position filter support shown in FIG. 4 can be used for interpolation. The integer-pixel positions used in supporting the 12-position filter described in the present disclosure include four integer-pixel positions surrounding sub-pixel positions, i.e. integer-pixel positions C3, C4, D3 and D4, which may be referred to as “angular” integer-pixel positions, since they are near the corners of two-dimensional sub-pixel positions. In addition to angular integer-pixel positions, one or more integer-pixel positions directly adjacent to angular integer-pixel positions can also be used to support the filter. Integer-pixel positions directly adjacent to angular integer-pixel positions can include integer-pixel positions immediately above (up or north) or directly below (down or south) angular integer-pixel positions, as well as integer-pixel positions directly to the left (or west) or directly to the right (or east) of angular integer-pixel positions. In the example illustrated in FIG. 4, support for a 12-position filter may include integer-pixel locations B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 and E4. All these integer-pixel positions are within two integer-pixel positions of the sub-pixel to be interpolated.

Однако поддержка фильтра в соответствии с технологиями настоящего раскрытия может включать в себя дополнительные целопикселные местоположения. Например, поддержка фильтра может включать в себя целопикселные местоположения, которые находятся в пределах трех целопикселных позиций субпикселной позиции, которая должна интерполироваться, которые формируют радиальную форму.However, filter support in accordance with the techniques of the present disclosure may include additional integer-pixel locations. For example, filter support may include integer-pixel locations that are within three integer-pixel positions of a sub-pixel position to be interpolated, which form a radial shape.

Даже четверть-пикселные позиции или более точное разрешение могут быть интерполированы на основе целопикселных позиций, расположенных в пределах, по меньшей мере, двух целопикселных позиций. Таким образом, технологии поддержки фильтра настоящего раскрытия обеспечивают лучшее прогнозирование интерполяции с использованием целых пикселов с более высокой корреляцией с позицией, которая должна быть интерполирована, при одновременном поддержании неизменной низкой сложности, предлагаемой посредством D-AIF.Even quarter-pixel positions or more accurate resolution can be interpolated based on integer-pixel positions located within at least two integer-pixel positions. Thus, the filter support technologies of the present disclosure provide better prediction of interpolation using integer pixels with a higher correlation with the position to be interpolated, while maintaining the same low complexity offered by D-AIF.

Как описано выше, симметрия по субпикселам может принудительно активировать идентичный набор коэффициентов фильтрации (и зеркальные, инвертированные и/или повернутые версии набора) для группы из одной или более субпикселных позиций. Аналитический процесс, к примеру, такой как процесс в уравнении (5), может использоваться, чтобы извлекать коэффициенты интерполяционной фильтрации для всех субпикселных позиций, к примеру, пятнадцати субпикселных позиций в случае четверть-пикселной точности. Анализ корреляции для пятнадцати наборов коэффициентов интерполяционной фильтрации раскрывает относительно сильную корреляцию между коэффициентами фильтрации субпикселных позиций (как одномерных, так и двумерных субпикселных позиций) в одной размерности (к примеру, вертикальной или горизонтальной размерности). Наоборот, корреляция между коэффициентами фильтрации субпикселных позиций в различных диагональных направлениях может быть заметно более слабой.As described above, subpixel symmetry can force an identical set of filtering coefficients (and mirrored, inverted, and / or rotated versions of the set) for a group of one or more subpixel positions. An analytical process, for example, such as the process in equation (5), can be used to extract interpolation filtering coefficients for all sub-pixel positions, for example, fifteen sub-pixel positions in the case of quarter-pixel accuracy. Correlation analysis for fifteen sets of interpolation filtering coefficients reveals a relatively strong correlation between the filtering coefficients of subpixel positions (both one-dimensional and two-dimensional subpixel positions) in one dimension (for example, vertical or horizontal dimension). Conversely, the correlation between the filtering coefficients of subpixel positions in different diagonal directions can be noticeably weaker.

Например, может быть высокая корреляция между коэффициентами фильтрации для субпикселных позиций "a" и "c", которые находятся в горизонтальной размерности. В качестве другого примера, может быть высокая корреляция между коэффициентами фильтрации для субпикселных позиций "d" и "l", которые находятся в вертикальной размерности. Однако может иметься небольшая (если вообще имеется) корреляция между коэффициентами фильтрации для субпикселных позиций "a", которые находятся в горизонтальной размерности, и субпикселной позиции "d", которая находится в вертикальной размерности. На основе этих наблюдений корреляций, симметрия по субпикселам может быть разработана так, что симметрия по субпикселам для коэффициентов фильтрации субпикселных позиций в диагональных размерностях не накладывается. Это приводит к восьми наборам коэффициентов, как описано в данном документе, что может составлять большее число наборов, чем требуется для некоторых традиционных процессов. Посредством исключения диагональной симметрии по пикселам для некоторых местоположений пикселов, как описано в данном документе, кодирование и сжатие видео могут улучшаться.For example, there may be a high correlation between the filtering coefficients for the sub-pixel positions "a" and "c", which are in the horizontal dimension. As another example, there may be a high correlation between the filter coefficients for the sub-pixel positions “d” and “l”, which are in the vertical dimension. However, there may be a slight (if any) correlation between the filter coefficients for the subpixel positions “a” that are in the horizontal dimension and the subpixel position “d” that is in the vertical dimension. Based on these observations of correlations, subpixel symmetry can be designed so that subpixel symmetry for filter coefficients of subpixel positions in diagonal dimensions is not superimposed. This results in eight sets of coefficients, as described herein, which may constitute a larger number of sets than is required for some conventional processes. By eliminating pixel diagonal symmetry for some pixel locations, as described herein, video coding and compression can be improved.

С другой стороны, Фиг.7 показывает позиции пиксела с одинаковыми штриховками, которые принадлежат группе субпикселных позиций, которые имеют симметрию по субпикселам. В частности, субпикселные позиции "a" и "c" формируют первую группу, имеющую симметрию по субпикселам, субпикселные позиции "d" и "l" формируют вторую группу, имеющую симметрию по субпикселам, субпикселные позиции "e", "g", "m" и "o" формируют третью группу, имеющую симметрию по субпикселам, субпикселные позиции "f" и "n" формируют четвертую группу, имеющую симметрию по субпикселам, и субпикселные позиции "i" и "k" формируют пятую группу, имеющую симметрию по субпикселам. Субпикселные позиции "b", "h" и "j" не имеют симметрии по субпикселам с другими субпикселными позициями. По сути, субпикселные позиции "b", "h" и "j" могут рассматриваться как принадлежащие собственным группам; шестой, седьмой и восьмой группе, соответственно. Каждая группа коэффициентов (которая может быть поднаборами вследствие симметрии по коэффициентам) может передаваться один раз в расчете на кодированную единицу или, возможно, многократно в расчете на кодированную единицу, если различные типы фильтрации задаются для различных областей или признаков кодированной единицы. Коэффициенты для аналогичной интерполяционной целопикселной фильтрации также могут отправляться один раз или несколько раз в расчете на кодированную единицу.On the other hand, FIG. 7 shows pixel positions with the same hatching that belong to a group of subpixel positions that have subpixel symmetry. In particular, the subpixel positions "a" and "c" form a first group having a symmetry in subpixels, the subpixel positions "d" and "l" form a second group having a symmetry in subpixels, the subpixel positions "e", "g", " m "and" o "form a third group having subpixel symmetry, subpixel positions" f "and" n "form a fourth group having subpixel symmetry, and subpixel positions" i "and" k "form a fifth group having symmetry in subpixels. The subpixel positions “b”, “h”, and “j” are not symmetrical in subpixels with other subpixel positions. In fact, the subpixel positions "b", "h" and "j" can be considered as belonging to their own groups; sixth, seventh and eighth groups, respectively. Each group of coefficients (which may be subsets due to symmetry in the coefficients) can be transmitted once per coded unit or, possibly, repeatedly per coded unit if different types of filtering are specified for different areas or features of the coded unit. Coefficients for similar interpolation integer-pixel filtering can also be sent once or several times per encoded unit.

В NS-AIF и D-AIF симметрия по субпикселам существует между субпикселными позициями в одной размерности, к примеру, между двумя субпикселными позициями в вертикальной размерности или двумя субпикселными позициями в горизонтальной размерности. В некоторой традиционной NS-AIF и D-AIF, симметрия также существует по диагонали между субпикселными позициями в различных размерностях. Например, симметрия по субпикселам существует между субпикселной позицией "a" в вертикальной размерности и субпикселной позицией "d" в горизонтальном направлении в некоторой традиционной NS-AIF и D-AIF. С симметрией по субпикселам в горизонтальной, вертикальной и диагональной размерностях только пять уникальных наборов коэффициентов интерполяционной фильтрации могут использоваться для четверть-пикселной точности.In NS-AIF and D-AIF, sub-pixel symmetry exists between sub-pixel positions in the same dimension, for example, between two sub-pixel positions in a vertical dimension or two sub-pixel positions in a horizontal dimension. In some traditional NS-AIF and D-AIF, symmetry also exists diagonally between subpixel positions in different dimensions. For example, sub-pixel symmetry exists between the sub-pixel position “a” in the vertical dimension and the sub-pixel position “d” in the horizontal direction in some conventional NS-AIF and D-AIF. With subpixel symmetry in the horizontal, vertical, and diagonal dimensions, only five unique sets of interpolation filtering coefficients can be used for quarter-pixel accuracy.

Для некоторых типов S-AIF, с другой стороны, симметрия по субпикселам существует между субпикселными позициями в вертикальном направлении (или размерности), но не между субпикселными позициями в горизонтальной размерности. Другими словами, симметрия по субпикселам не всегда существует для субпикселных позиций в одной размерности. Симметрии по субпикселам также не существует в диагональных размерностях. Симметрия некоторых схем S-AIF, таким образом, требует большего числа наборов коэффициентов интерполяции. В частности, для четверть-пикселной точности, некоторые схемы S-AIF требуют одиннадцати уникальных наборов коэффициентов интерполяции.For some types of S-AIF, on the other hand, subpixel symmetry exists between subpixel positions in the vertical direction (or dimension), but not between subpixel positions in the horizontal dimension. In other words, subpixel symmetry does not always exist for subpixel positions in the same dimension. Subpixel symmetry also does not exist in diagonal dimensions. The symmetry of some S-AIF schemes, therefore, requires more sets of interpolation coefficients. In particular, for quarter-pixel accuracy, some S-AIF schemes require eleven unique sets of interpolation coefficients.

Схема симметрии по субпикселам, описанная и проиллюстрированная на Фиг.7, может приводить к более точному прогнозированию, чем симметрия по субпикселам, описанная выше для некоторых типов NS-AIF и D-AIF. В частности, схема симметрии по субпикселам по Фиг.7 налагает симметрию по субпикселам в одной размерности (к примеру, в горизонтальном направлении или вертикальном направлении), но не налагает симметрию по субпикселам одновременно в обеих размерностях (к примеру, по диагонали).The sub-pixel symmetry scheme described and illustrated in FIG. 7 can lead to more accurate prediction than the sub-pixel symmetry described above for some types of NS-AIF and D-AIF. In particular, the symmetry scheme for subpixels in Fig. 7 imposes symmetry for subpixels in one dimension (for example, in the horizontal direction or vertical direction), but does not impose symmetry for subpixels simultaneously in both dimensions (for example, diagonally).

Посредством невыполнения наложения симметрии по субпикселам для субпикселных позиций по диагонали, слабая корреляция между коэффициентами интерполяционной фильтрации и субпикселными позициями в различных размерностях не интегрируется в интерполяцию. Хотя большее число наборов коэффициентов интерполяции может требоваться (к примеру, восемь вместо пяти), результирующие интерполированные прогнозирующие данные могут быть более точными. Диагональная симметрия по коэффициентам также может не допускаться или исключаться аналогичным способом.Due to the failure to apply symmetry on the subpixels for the subpixel positions on the diagonal, a weak correlation between the interpolation filtering coefficients and the subpixel positions in different dimensions is not integrated into the interpolation. Although a larger number of sets of interpolation coefficients may be required (for example, eight instead of five), the resulting interpolated predictive data may be more accurate. Coefficient diagonal symmetry may also not be allowed or eliminated in a similar way.

Модуль 32 прогнозирования также может накладывать симметрию по коэффициентам, как описано выше. В частности, симметрия по коэффициентам накладывается для коэффициентов фильтрации в одной размерности (к примеру, в горизонтальном или вертикальном направлении), но не для обеих размерностей диагональным способом. Например, коэффициенты фильтрации для субпикселной позиции "e" не задаются принудительно как горизонтально симметричные как в схеме NS-AIF, описанной выше и представленной в уравнении (11). Симметрия по коэффициентам обобщается ниже в уравнениях (17)-(21).Prediction unit 32 may also impose symmetry in the coefficients, as described above. In particular, symmetry in the coefficients is imposed for the filtration coefficients in one dimension (for example, in the horizontal or vertical direction), but not for both dimensions in a diagonal way. For example, filtering coefficients for the sub-pixel position “e” are not forced to be set as horizontally symmetrical as in the NS-AIF scheme described above and presented in equation (11). The symmetry of the coefficients is summarized below in equations (17) - (21).

Figure 00000023
Figure 00000023

Следует отметить, что для субпикселных позиций "f", "i" и "j", некоторые коэффициенты фильтрации, т.е.

Figure 00000024
, равны нулю в случаях, в которых 12-позиционный фильтр, описанный подробно относительно Фиг.4, может использоваться. По сути, симметрия по субпикселам и коэффициентам, описанная в этом раскрытии сущности, может использоваться вместе или отдельно от технологий поддержки фильтра. При использовании вместе с поддержкой 12-позиционного фильтра, описанной на Фиг.4, предусмотрено 6(a)+3(b)+6(d)+3(h)+12(e)+6(f)+6(i)+3(j)=45 уникальных коэффициентов для этих субпикселных позиций, которые должны отправляться в декодер, т.е. 6 коэффициентов для группы, включающей в себя субпикселную позицию "a", 3 коэффициента для группы, включающей в себя субпикселную позицию "b", 6 коэффициентов для группы, включающей в себя субпикселную позицию "d", 3 коэффициента для группы, включающей в себя субпикселную позицию "h", 12 коэффициентов для группы, включающей в себя субпикселную позицию "e", 6 коэффициентов для группы, включающей в себя субпикселную позицию "f", 6 коэффициентов для группы, включающей в себя субпикселную позицию "i", и 3 коэффициента для группы, включающей в себя субпикселную позицию "j".It should be noted that for the subpixel positions "f", "i" and "j", some filtering coefficients, i.e.
Figure 00000024
are equal to zero in cases in which a 12-position filter, described in detail with respect to FIG. 4, can be used. In fact, the symmetry of subpixels and coefficients described in this disclosure can be used together or separately from filter support technologies. When used in conjunction with the 12-position filter support described in FIG. 4, 6 (a) +3 (b) +6 (d) +3 (h) +12 (e) +6 (f) +6 (i ) +3 (j) = 45 unique coefficients for these sub-pixel positions to be sent to the decoder, i.e. 6 coefficients for a group including a subpixel position "a", 3 coefficients for a group including a subpixel position "b", 6 coefficients for a group including a subpixel position "d", 3 coefficients for a group including a subpixel position "h", 12 coefficients for a group including a subpixel position "e", 6 coefficients for a group including a subpixel position "f", 6 coefficients for a group including a subpixel position "i", and 3 coefficient for a group including a subpixel "J" position.

Фиг.17 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует поддержку фильтра на двенадцать пикселов в соответствии с настоящим раскрытием. Технология по Фиг.17 описывается с точки зрения видеокодера 50 по Фиг.2, хотя другие устройства могут выполнять аналогичные технологии. Как показано, на Фиг.17, MC-модуль 37 модуля 32 прогнозирования получает блок пикселов из запоминающего устройства 34, которые включают в себя целопикселные значения, соответствующие целопикселным позициям (171). Фильтр(ы) 39 вычисляет субпикселные значения на основе поддержки фильтра, которая содержит двенадцать или более позиций, которые окружают субпикселные позиции (172). Как подробнее поясняется выше, поддержка 12-позиционного фильтра может использоваться для того, чтобы формировать девять из пятнадцати возможных субпикселных интерполяций, при этом линейная горизонтальная и линейная вертикальная фильтрация может использоваться для того, чтобы формировать шесть из пятнадцати возможных субпикселных интерполяций.17 is a flowchart illustrating an example operation of a video encoder that uses twelve pixel filter support in accordance with the present disclosure. The technology of FIG. 17 is described in terms of the video encoder 50 of FIG. 2, although other devices may perform similar technologies. As shown in FIG. 17, the MC module 37 of the prediction module 32 receives a block of pixels from the memory 34, which include integer-pixel values corresponding to integer-pixel positions (171). Filter (s) 39 calculates subpixel values based on filter support that contains twelve or more positions that surround subpixel positions (172). As explained in more detail above, support for a 12-position filter can be used to generate nine out of the fifteen possible subpixel interpolations, with linear horizontal and linear vertical filtering can be used to form six out of the fifteen possible subpixel interpolations.

MC-модуль 37 затем формирует прогнозный блок на основе вычисленных субпикселных значений (173). В частности, MC-модуль 37 может формировать и выводить интерполированный прогнозный блок, содержащий интерполированные субпикселные значения. Сумматор 48 затем может кодировать текущий видеоблок на основе интерполированного прогнозного блока (174), к примеру, посредством вычитания интерполированного прогнозного блока из кодируемого видеоблока, чтобы формировать остаточный блок. Остаточный блок затем может быть преобразован и квантован посредством модуля 38 преобразования и модуля 40 квантования, соответственно. После энтропийного кодирования посредством модуля 46 энтропийного кодирования, видеокодер 50 может выводить кодированный поток видеобитов и информацию фильтра (175). Информация фильтра, как описано в данном документе, может содержать восемь наборов коэффициентов, используемых для формирования всех пятнадцати наборов коэффициентов для пятнадцати субпикселных позиций. Информация фильтра может выводиться один раз в расчете на кодированную единицу или, возможно, несколько раз в расчете на кодированную единицу, если различные области кодированной единицы используют различные типы субпикселной интерполяции.The MC module 37 then generates a prediction block based on the calculated subpixel values (173). In particular, the MC module 37 may generate and output an interpolated prediction block containing interpolated subpixel values. The adder 48 may then encode the current video block based on the interpolated prediction block (174), for example, by subtracting the interpolated prediction block from the encoded video block to form a residual block. The residual block can then be converted and quantized by the transform module 38 and the quantization module 40, respectively. After entropy encoding by means of entropy encoding unit 46, video encoder 50 may output an encoded video bit stream and filter information (175). The filter information, as described herein, may contain eight sets of coefficients used to form all fifteen sets of coefficients for fifteen sub-pixel positions. Filter information may be output once per coded unit, or possibly several times per coded unit, if different areas of the coded unit use different types of sub-pixel interpolation.

Фиг.18 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует поддержку фильтра на двенадцать пикселов в соответствии с настоящим раскрытием. Таким образом, процесс по Фиг.18 может рассматриваться процессом взаимно-обратного декодирования для процесса кодирования по Фиг.17. Фиг.18 описывается с точки зрения видеодекодера 60 по Фиг.16, хотя другие устройства могут выполнять аналогичные технологии. Как показано на Фиг.18, видеодекодер 60 принимает кодированные видеоблоки и информацию фильтра (181). Модуль 52 энтропийного декодирования может энтропийно декодировать эту принимаемую информацию. Модуль 55 прогнозирования выполняет интерполяционную компенсацию движения согласно технологиям настоящего раскрытия. В частности, модуль 55 прогнозирования получает блок пикселов из запоминающего устройства 62, которые включают в себя целопикселные значения, соответствующие целопикселным позициям (182). Модуль 55 прогнозирования может использовать принимаемые векторы движения, чтобы определять то, как выполнять интерполяцию. На основе векторов движения, модуль 55 прогнозирования может вычислять субпиксел на основе поддержки фильтра, которая содержит двенадцать или более позиций, которые окружают субпикселные позиции (183). Таким образом, модуль 55 прогнозирования использует интерполяцию для того, чтобы формировать прогнозный блок (184). Прогнозный блок может использоваться для того, чтобы декодировать остаточный видеоблок посредством вызова сумматора 64, чтобы прибавлять прогнозный блок к остаточному блоку (185). Различные аспекты интерполяции, описанные в данном документе, в том числе использование поддержки 12-позиционного фильтра, которая окружает субпикселные позиции в радиальной форме, позволяет улучшать кодирование видео посредством предоставления интерполированных данных лучшего качества, чем традиционные технологии.18 is a flowchart illustrating an example operation of a video decoder that uses twelve pixel filter support in accordance with the present disclosure. Thus, the process of FIG. 18 can be considered a mutually inverse decoding process for the encoding process of FIG. 17. FIG. 18 is described in terms of the video decoder 60 of FIG. 16, although other devices may perform similar technologies. As shown in FIG. 18, video decoder 60 receives encoded video blocks and filter information (181). Entropy decoding unit 52 may entropy decode this received information. Prediction unit 55 performs interpolation motion compensation according to the techniques of the present disclosure. In particular, the prediction unit 55 obtains a block of pixels from the storage device 62, which include integer-pixel values corresponding to integer-pixel positions (182). Prediction unit 55 may use received motion vectors to determine how to perform interpolation. Based on the motion vectors, the prediction unit 55 can calculate the subpixel based on the filter support, which contains twelve or more positions that surround the subpixel positions (183). Thus, the prediction unit 55 uses interpolation to form a prediction block (184). The prediction block may be used to decode the residual video block by calling adder 64 to add the prediction block to the residual block (185). Various aspects of the interpolation described in this document, including the use of 12-position filter support that surrounds sub-pixel positions in radial form, can improve video encoding by providing better quality interpolated data than traditional technologies.

Фиг.19 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует симметрию по коэффициентам и симметрию по пикселам в соответствии с настоящим раскрытием. Технология по Фиг.19 описывается с точки зрения видеокодера 50 по Фиг.2, хотя другие устройства могут выполнять аналогичные технологии. Как показано, на Фиг.19, модуль 32 прогнозирования видеокодера 50 задает восемь наборов коэффициентов фильтрации для пятнадцати субпикселных позиций на основе симметрии по коэффициентам и симметрии по пикселам, как описано в данном документе (201). В частности, модуль 32 прогнозирования может использовать симметрию по пикселам, чтобы уменьшать наборы коэффициентов с пятнадцати до восьми, и дополнительно может уменьшать число коэффициентов для некоторых или всех восьми наборов на основе симметрии по коэффициентам между коэффициентами данных наборов. Модуль 32 прогнозирования затем может кодировать видеоданные с использованием интерполяционных фильтров (таких как фильтр(ы) 39) и восьми наборов коэффициентов фильтрации (202). Видеокодер 50 может выводить кодированные видеоданные и восемь наборов коэффициентов фильтрации (203). Восемь наборов коэффициентов, которые кодируются и выводятся в потоке битов, могут отправляться с каждой кодированной единицей (к примеру, с каждым кадром или серией последовательных макроблоков) так, что устройству декодирования могут сообщаться коэффициенты фильтрации, которые следует использовать для интерполяции. Альтернативно, различные группы из восьми наборов коэффициентов могут кодироваться и отправляться с каждой кодированной единицей, чтобы предоставлять различные типы интерполяций в различных местоположениях в рамках кодированной единицы.FIG. 19 is a flowchart illustrating an example operation of a video encoder that uses coefficient symmetry and pixel symmetry in accordance with the present disclosure. The technology of FIG. 19 is described in terms of the video encoder 50 of FIG. 2, although other devices may perform similar technologies. As shown in FIG. 19, the prediction unit 32 of the video encoder 50 sets eight sets of filter coefficients for fifteen subpixel positions based on the symmetry of the coefficients and the symmetry of the pixels, as described herein (201). In particular, prediction module 32 may use pixel symmetry to reduce sets of coefficients from fifteen to eight, and may further reduce the number of coefficients for some or all eight sets based on symmetry in coefficients between the coefficients of these sets. Prediction unit 32 can then encode video using interpolation filters (such as filter (s) 39) and eight sets of filter coefficients (202). Video encoder 50 may output encoded video data and eight sets of filter coefficients (203). Eight sets of coefficients that are encoded and output in the bitstream can be sent with each coded unit (for example, with each frame or series of consecutive macroblocks) so that filtering coefficients that should be used for interpolation can be communicated to the decoding device. Alternatively, different groups of eight sets of coefficients can be encoded and sent with each coded unit to provide different types of interpolations at different locations within the coded unit.

Фиг.20 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует симметрию по коэффициентам и симметрию по пикселам в соответствии с настоящим раскрытием. В этом случае, модуль 55 прогнозирования видеодекодера 60 принимает восемь наборов коэффициентов фильтрации (191) и формирует пятнадцать наборов коэффициентов фильтрации на основе восьми наборов, симметрии по коэффициентам и симметрии по пикселам. Модуль 60 прогнозирования затем может программировать свои интерполяционные фильтры и применять такие интерполяционные фильтры, чтобы надлежащим образом формировать интерполированные прогнозирующие данные (193). Видеодекодер 60 затем может декодировать видеоблоки на основе прогнозирующих данных (194), к примеру, при вызове сумматора 64, чтобы прибавлять корректные прогнозирующие данные, интерполированные посредством модуля 55 прогнозирования, к остаточному блоку, который должен быть декодирован.20 is a flowchart illustrating an example operation of a video decoder that uses coefficient symmetry and pixel symmetry in accordance with the present disclosure. In this case, the prediction unit 55 of the video decoder 60 receives eight sets of filter coefficients (191) and generates fifteen sets of filter coefficients based on eight sets, symmetry by coefficients and symmetry by pixels. Prediction unit 60 can then program its interpolation filters and apply such interpolation filters to properly generate interpolated prediction data (193). The video decoder 60 may then decode the video blocks based on the predictive data (194), for example, by calling the adder 64, to add the correct predictive data interpolated by the prediction unit 55 to the residual block to be decoded.

Фиг.21 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует фильтрацию целопикселных местоположений, чтобы формировать регулируемые целопикселные значения в соответствии с настоящим раскрытием. Она поясняется выше как аналогичная интерполяционной фильтрация, поскольку она является аналогичной интерполяциям, но не формирует значения в целочисленный субпиксел. Наоборот, этот процесс формирует новые целочисленные значения, которые фильтруются на основе исходного целочисленного значения и других целочисленных значений, которые окружают исходное целочисленное значение.21 is a flowchart illustrating an example operation of a video encoder that uses integer-pixel filtering to generate adjustable integer-pixel values in accordance with the present disclosure. It is explained above as a similar interpolation filtering, since it is similar to interpolation, but does not form values into an integer subpixel. On the contrary, this process generates new integer values that are filtered based on the original integer value and other integer values that surround the original integer value.

Фиг.21 описывается с точки зрения видеокодера 50 по Фиг.2, хотя другие устройства могут выполнять аналогичные технологии. Как показано, на Фиг.21, MC-модуль 37 модуля 32 прогнозирования получает блок пикселов из запоминающего устройства 34, которые включают в себя целопикселные значения, соответствующие целопикселным местоположениям (211). Фильтр(ы) 39 модуля 32 прогнозирования фильтрует целопикселные значения на основе других целопикселных значений блока пикселов, чтобы формировать регулируемые целопикселные значения (212). Модуль 32 прогнозирования формирует прогнозный блок на основе отрегулированных целопикселных значений (213), и видеокодер 50 кодирует видеоблок на основе прогнозного блока (214), к примеру, при вызове сумматора 48, чтобы вычитать прогнозный блок из кодируемого видеоблока, чтобы формировать остаточный блок. После преобразования и квантования остаточного блока посредством модуля 38 преобразования, модуля 40 квантования и после энтропийного кодирования посредством модуля 46 энтропийного кодирования, видеокодер 50 выводит кодированный видеоблок и информацию фильтра (215). Как в случае субпикселной интерполяции, аналогичная интерполяционной фильтрация относительно целопикселных местоположений может заключать в себе вывод и передачу информации фильтра один раз в расчете на кодированную единицу или, возможно, несколько раз в расчете на кодированную единицу, если различные области кодированной единицы используют различные типы целочисленной аналогичной интерполяционной фильтрации.FIG. 21 is described from the perspective of the video encoder 50 of FIG. 2, although other devices may perform similar technologies. As shown in FIG. 21, the MC module 37 of the prediction module 32 receives a block of pixels from the memory 34, which include integer-pixel values corresponding to integer-pixel locations (211). Filter (s) 39 of prediction unit 32 filters integer-pixel values based on other integer-pixel values of a pixel block to form adjustable integer-pixel values (212). Prediction unit 32 generates a prediction block based on adjusted integer-pixel values (213), and video encoder 50 encodes a video block based on a prediction block (214), for example, by calling adder 48 to subtract a prediction block from the encoded video block to form a residual block. After transforming and quantizing the residual block by the transform module 38, the quantization module 40, and after entropy encoding by the entropy encoding module 46, the video encoder 50 outputs the encoded video block and filter information (215). As in the case of sub-pixel interpolation, similar interpolation filtering with respect to integer-pixel locations can include outputting and transmitting filter information once per encoded unit or, possibly, several times per encoded unit, if different areas of the encoded unit use different types of integer similar interpolation filtering.

Фиг.22 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует фильтрацию целопикселных местоположений, чтобы формировать регулируемые целопикселные значения в соответствии с настоящим раскрытием. Модуль 55 прогнозирования видеодекодера 60 принимает кодированные видеоблоки, а также принимает информацию фильтра (к примеру, один раз в расчете на кодированную единицу) (221). Модуль 55 прогнозирования получает блок пикселов из запоминающего устройства 62, которые включают в себя целопикселные значения, соответствующие целопикселным позициям (222). Модуль 55 прогнозирования активирует фильтр (не показан) как часть компенсации движения, чтобы фильтровать целопикселные значения на основе других целопикселных значений блока пикселов, чтобы формировать регулируемые целопикселные значения (223). Модуль 55 прогнозирования формирует прогнозный блок на основе отрегулированных целопикселных значений (224). Видеодекодер 60 затем может декодировать видеоблоки на основе прогнозного блока, к примеру, при вызове сумматора 64, чтобы прибавлять прогнозный блок, интерполированный посредством модуля 55 прогнозирования, к остаточному видеоблоку, который должен быть декодирован (225).FIG. 22 is a flowchart illustrating an example operation of a video decoder that uses integer-pixel filtering to generate adjustable integer-pixel values in accordance with the present disclosure. The prediction unit 55 of the video decoder 60 receives the encoded video blocks, and also receives filter information (for example, once per encoded unit) (221). The prediction unit 55 obtains a block of pixels from the storage device 62, which include integer-pixel values corresponding to integer-pixel positions (222). Prediction unit 55 activates a filter (not shown) as part of motion compensation to filter integer-pixel values based on other integer-pixel values of the pixel block to form adjustable integer-pixel values (223). Prediction unit 55 generates a prediction block based on adjusted integer-pixel values (224). The video decoder 60 can then decode the video blocks based on the prediction block, for example, when the adder 64 is called, to add the prediction block interpolated by the prediction unit 55 to the residual video block to be decoded (225).

Фиг.23 является блок-схемой последовательности операций, иллюстрирующей технологию для интерполяции на основе искажения в зависимости от скорости передачи для кодирования видео на основе двух наборов вариантов фильтров. В этом случае, MC-модуль 37 модуля 32 прогнозирования может формировать два или более различных наборов прогнозирующих данных, один набор на основе первого набора вариантов интерполяционных фильтров и другой набор на основе второго набора вариантов интерполяционных фильтров. MC-модуль 37 затем может использовать основанный на искажении в зависимости от скорости передачи анализ, чтобы выбирать то, какой интерполяционный фильтр дает наилучшие результаты с точки зрения скорости и искажения. Таким образом, MC-модуль 37 не только рассматривает то, какой набор прогнозирующих данных дает наилучшие результаты (т.е. наименьшее искажение), но также учитывает тот факт, что один набор вариантов фильтров может требовать меньшего дополнительного числа битов, чтобы передавать коэффициенты фильтрации в декодер.23 is a flowchart illustrating a technology for distortion-based interpolation depending on a transmission rate for encoding a video based on two sets of filter options. In this case, the MC module 37 of the prediction module 32 may generate two or more different sets of predictive data, one set based on a first set of interpolation filter options and another set based on a second set of interpolation filter options. The MC module 37 can then use the analysis based on the distortion depending on the transmission speed to select which interpolation filter gives the best results in terms of speed and distortion. Thus, the MC module 37 not only considers which set of predictive data gives the best results (i.e., the least distortion), but also takes into account the fact that one set of filter options may require a smaller additional number of bits to transmit filtering coefficients to the decoder.

Как показано на Фиг.23, MC-модуль 37 модуля 32 прогнозирования формирует первые интерполированные прогнозирующие данные для кодирования видеоданных на основе первого интерполяционного фильтра (231). Первый интерполяционный фильтр, в одном примере, содержит неперестраиваемый интерполяционный фильтр, соответствующий фильтру, заданному посредством конкретного стандарта кодирования видео, такому как фильтр, который соответствует интерполяционному фильтру ITU-T H.264. Для дополнительной точности, в некоторых случаях неперестраиваемый интерполяционный фильтр может соответствовать интерполяционному фильтру ITU-T H.264 без промежуточного округления полупикселных значений, которые используются для того, чтобы формировать четверть-пикселные значения. В этом случае, неперестраиваемый интерполяционный фильтр может формировать полупикселные значения и может округлять в большую сторону такие значения в целях интерполяции до полупикселного разрешения. Тем не менее, в степени, в которой такие полупикселные значения также должны использоваться для интерполяции до четвертьпикселного разрешения, MC-модуль 37 может сохранять неокругленные версии полупикселных значений и использовать неокругленные версии полупикселных значений для интерполяции до четверть-пикселного разрешения. Находящаяся одновременно на рассмотрении и переуступленная заявка № ________, на имя Karczewicz и др., озаглавленная "ADVANCED INTERPOLATION TECHNIQUES FOR MOTION COMPENSATION IN VIDEO CODING", номер дела поверенного 081399U1, которая подана в один день с настоящей заявкой и которая включена в настоящий документ посредством ссылки, предоставляет множество дополнительных сведений относительно интерполяционной фильтрации без промежуточного округления полупикселных значений, которые используются, чтобы формировать четверть-пикселные значения.As shown in FIG. 23, the MC module 37 of the prediction module 32 generates first interpolated prediction data for encoding video data based on the first interpolation filter (231). The first interpolation filter, in one example, contains a non-tunable interpolation filter corresponding to a filter specified by a particular video coding standard, such as a filter that corresponds to an ITU-T H.264 interpolation filter. For added accuracy, in some cases, a non-tunable interpolation filter may correspond to an ITU-T H.264 interpolation filter without intermediate rounding of half-pixel values, which are used to form quarter-pixel values. In this case, a non-tunable interpolation filter can generate half-pixel values and can round up such values for interpolation to half-pixel resolution. However, to the extent that such half-pixel values should also be used to interpolate up to quarter-pixel resolution, the MC module 37 can store unrounded versions of half-pixel values and use non-round versions of half-pixel values to interpolate up to a quarter-pixel resolution. The simultaneously pending and transferred application No. ________, addressed to Karczewicz et al., Entitled "ADVANCED INTERPOLATION TECHNIQUES FOR MOTION COMPENSATION IN VIDEO CODING", Attorney's case number 081399U1, which was filed on the same day as this application and which is incorporated into this document by links, provides a wealth of additional information regarding interpolation filtering without intermediate rounding of half-pixel values, which are used to form quarter-pixel values.

Затем MC-модуль 37 модуля 32 прогнозирования формирует вторые интерполированные прогнозирующие данные для кодирования видео для видеоданных на основе второго интерполяционного фильтра (232). В одном примере второй интерполяционный фильтр может содержать адаптивный интерполяционный фильтр. В этом случае, согласовано адаптивной интерполяции, MC-модуль 37 может задавать коэффициенты фильтрации, которые должны использоваться. В частности, MC-модуль 37 может выполнять адаптивный интерполяционный процесс, в котором MC-модуль 37 начинает с предварительно установленных коэффициентов фильтрации, формирует предварительные прогнозирующие данные и затем регулирует коэффициенты фильтрации в адаптивном процессе так, что такие коэффициенты фильтрации задают более желательные прогнозирующие данные.Then, the MC module 37 of the prediction module 32 generates second interpolated prediction data for encoding video for the video data based on the second interpolation filter (232). In one example, the second interpolation filter may comprise an adaptive interpolation filter. In this case, according to adaptive interpolation, the MC module 37 may specify filtering coefficients to be used. In particular, the MC module 37 may perform an adaptive interpolation process in which the MC module 37 starts with preset filter coefficients, generates preliminary predictive data and then adjusts the filter coefficients in the adaptive process so that such filter coefficients define more desirable predictive data.

После того как MC-модуль 37 модуля 32 прогнозирования формирует как первые, так и вторые интерполированные прогнозирующие данные, MC-модуль 37 может выбирать между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи (233). Таким образом, MC-модуль 37 не только рассматривает то, какой набор прогнозирующих данных дает наилучшие результаты (т.е. наименьшее искажение), но MC-модуль 37 также принимает во внимание различные объемы данных (т.е. различные скорости передачи битов), которые должны требоваться для первого интерполяционного фильтра относительно второго интерполяционного фильтра. А именно, если неперестраиваемый интерполяционный фильтр используется (к примеру, в качестве первого интерполяционного фильтра), видеокодер 50 не должен кодировать коэффициенты фильтрации в потоке битов, тогда как если адаптивный интерполяционный фильтр используется (к примеру, в качестве второго интерполяционного фильтра), видеокодер 50 должен кодировать коэффициенты фильтрации. Соответственно, анализ искажения в зависимости от скорости передачи может определять то, какой набор прогнозирующих данных дает наилучшие результаты (т.е. наименьшая функция затрат на искажение в зависимости от скорости передачи), посредством учета того факта, что использование неперестраиваемого интерполяционного фильтра не требует дополнительных битов, чтобы передавать коэффициенты фильтрации в декодер.After the MC module 37 of the prediction module 32 generates both the first and second interpolated prediction data, the MC module 37 can choose between the first interpolated prediction data and the second interpolated prediction data based on a distortion analysis depending on the transmission rate (233). Thus, the MC module 37 not only considers which set of predictive data gives the best results (i.e., the least distortion), but the MC module 37 also takes into account different amounts of data (i.e., different bit rates) which should be required for the first interpolation filter relative to the second interpolation filter. Namely, if a non-tunable interpolation filter is used (for example, as the first interpolation filter), video encoder 50 should not encode filter coefficients in the bitstream, whereas if an adaptive interpolation filter is used (for example, as a second interpolation filter), video encoder 50 must encode filter coefficients. Accordingly, an analysis of the distortion depending on the transmission rate can determine which set of predictive data gives the best results (i.e., the least function of the cost of distortion depending on the transmission speed), by taking into account the fact that the use of a non-tunable interpolation filter does not require additional bits to pass filter coefficients to the decoder.

Более конкретно, выбор между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи (233) может содержать вычисление первой функции затрат на искажение в зависимости от скорости передачи, ассоциированной с видеоданными, если видеоданные кодируются через первые интерполированные прогнозирующие данные, вычисление второй функции затрат на искажение в зависимости от скорости передачи, ассоциированной с видеоданными, если видеоданные кодируются через вторые интерполированные прогнозирующие данные, и выбор между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе первой и второй функций затрат на искажение в зависимости от скорости передачи.More specifically, the choice between the first interpolated predictive data and the second interpolated predictive data based on a transmission rate distortion analysis (233) may comprise calculating a first distortion cost function as a function of the transmission rate associated with the video data if the video data is encoded through the first interpolated predictive data, calculating a second distortion cost function as a function of the transmission rate associated with the video data, if odannye encoded via the second interpolated predictive data, and selecting between the first interpolated predictive data and the second interpolated predictive data based on the first and second distortion cost functions depending on the transmission rate.

Функция затрат на искажение в зависимости от скорости передачи, ассоциированная с видеоданными, если видеоданные кодируются через первые интерполированные прогнозирующие данные, может содержать первый разностный показатель, к примеру, среднеквадратическую ошибку (MSE) пикселных значений или сумму абсолютной разности (SAD) пикселных значений или сумму квадрата разности (SSD) пикселных значений, указывающий разность между видеоданными и первыми интерполированными прогнозирующими данными, плюс первое значение, которое определяет количественно затраты, ассоциированные с кодированием коэффициентов фильтрации. В этом случае, если первый интерполяционный фильтр является неперестраиваемым интерполяционным фильтром, первое значение, которое определяет количественно затраты, может быть задано как нуль. Аналогично, вторая функция затрат на искажение в зависимости от скорости передачи может содержать второй разностный показатель, указывающий разности между видеоданными и вторыми интерполированными прогнозирующими данными (MSE, SAD или SSD), плюс второе значение, которое определяет количественно затраты, ассоциированные с кодированием коэффициентов фильтрации. В случае если второй интерполяционный фильтр является адаптивным интерполяционным фильтром, второе значение, которое определяет количественно затраты, ассоциированные с кодированием коэффициентов фильтрации, может содержать число битов (r), требуемое для того, чтобы кодировать коэффициенты адаптивной интерполяционной фильтрации, или, возможно, это число (r), умноженное на множитель Лагранжа (λ).The function of the cost of distortion depending on the transmission rate associated with the video data, if the video data is encoded through the first interpolated predictive data, may contain a first differential metric, for example, the mean square error (MSE) of the pixel values or the sum of the absolute difference (SAD) of the pixel values or the sum the square difference (SSD) of the pixel values indicating the difference between the video data and the first interpolated predictive data, plus a first value that determines the quantities continuously cost associated with encoding of filter coefficients. In this case, if the first interpolation filter is a non-tunable interpolation filter, the first value that quantifies costs can be set to zero. Similarly, the second distortion cost function, depending on the transmission rate, may contain a second differential metric indicating the differences between the video data and the second interpolated predictive data (MSE, SAD or SSD), plus a second value that quantifies the costs associated with encoding the filter coefficients. If the second interpolation filter is an adaptive interpolation filter, the second value, which quantifies the costs associated with encoding the filter coefficients, may contain the number of bits (r) required to code the coefficients of adaptive interpolation filtering, or, possibly, this number (r) times the Lagrange multiplier (λ).

После выбора между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи (233), MC-модуль 37 модуля 32 прогнозирования кодирует видеоданные на основе выбора (234) и кодирует синтаксис, чтобы указывать выбор (235). Синтаксис может содержать однобитовый флаг или многобитовый флаг, который задает то, должен первый интерполяционный фильтр или второй интерполяционный фильтр использоваться посредством декодера. Процесс по Фиг.23 может повторяться для каждого из множества субпикселных местоположений для каждой кодированной единицы видеопоследовательности, чтобы указывать, должен первый интерполяционный фильтр или второй интерполяционный фильтр использоваться посредством декодера для каждого из множества субпикселных местоположений. Субпикселные местоположения могут содержать пятнадцать возможных субпикселных местоположений согласно интерполяции до четвертьпикселного разрешения или могут содержать другое число субпикселных местоположений. Процесс по Фиг.23 также может повторяться для целопикселного местоположения для каждой кодированной единицы видеопоследовательности, чтобы указывать, должен первый интерполяционный фильтр или второй интерполяционный фильтр использоваться посредством декодера для целопикселного местоположения.After choosing between the first interpolated predictive data and the second interpolated predictive data based on the analysis of the distortion depending on the transmission rate (233), the MC module 37 of the prediction module 32 encodes the video data based on the selection (234) and encodes the syntax to indicate the choice (235) . The syntax may include a single-bit flag or a multi-bit flag that specifies whether the first interpolation filter or the second interpolation filter should be used by the decoder. The process of FIG. 23 may be repeated for each of a plurality of subpixel locations for each coded unit of a video sequence to indicate whether a first interpolation filter or a second interpolation filter should be used by a decoder for each of the plurality of subpixel locations. Subpixel locations may contain fifteen possible subpixel locations according to interpolation up to quarter pixel resolution, or may contain a different number of subpixel locations. The process of FIG. 23 may also be repeated for an integer-pixel location for each coded unit of a video sequence to indicate whether a first interpolation filter or a second interpolation filter should be used by a decoder for the integer-pixel location.

После того как видеокодер 50 (Фиг.2) кодирует видеоданные на основе выбора (234) и кодирует синтаксис, чтобы указывать выбор (235), модем 23 и передающее устройство 24 (Фиг.1) может модулировать и передавать кодированные видеоданные и синтаксис в целевое устройство 17. В случае если первый интерполяционный фильтр является неперестраиваемым, а второй интерполяционный фильтр является адаптивным, передающее устройство 24 может передавать коэффициенты фильтрации, когда синтаксис указывает, что вторые интерполированные прогнозирующие данные использованы, чтобы формировать кодированные видеоданные, но может не передавать коэффициенты фильтрации, когда синтаксис указывает, что первые интерполированные прогнозирующие данные использованы, чтобы формировать кодированные видеоданные. Таким образом, когда первый интерполяционный фильтр является неперестраиваемым, а второй интерполяционный фильтр является адаптивным, коэффициенты фильтрации отправляются только в том случае, если синтаксис указывает, что адаптивная интерполяционная фильтрация использована, и решение, использовать или нет адаптивную интерполяционную фильтрацию, рассматривает не только качество прогнозирующего видео, но также и скорость передачи битов, на которую влияет присутствие коэффициентов фильтрации в передаваемом потоке битов. В других примерах, тем не менее, первый и второй интерполяционные фильтры могут быть неперестраиваемыми или могут быть адаптивными.After the video encoder 50 (FIG. 2) encodes the video data based on the selection (234) and encodes the syntax to indicate the selection (235), the modem 23 and the transmitting device 24 (FIG. 1) can modulate and transmit the encoded video data and the syntax to the target device 17. In case the first interpolation filter is non-tunable and the second interpolation filter is adaptive, the transmitting device 24 may transmit filter coefficients when the syntax indicates that the second interpolated prediction data is used They can be used to generate encoded video data, but may not transmit filtering coefficients when the syntax indicates that the first interpolated predictive data is used to generate encoded video data. Thus, when the first interpolation filter is non-tunable and the second interpolation filter is adaptive, filter coefficients are only sent if the syntax indicates that adaptive interpolation filtering has been used and the decision whether to use adaptive interpolation filtering does not only consider the quality of the prediction filter video, but also the bit rate, which is affected by the presence of filter coefficients in the transmitted bit stream. In other examples, however, the first and second interpolation filters may be non-tunable or may be adaptive.

Технологии этого раскрытия сущности могут применяться во многих сценариях, в том числе в сценариях, когда предусмотрено более двух наборов фильтров, выбранных посредством кодера. Другими словами, дополнительные интерполяционные фильтры также могут применяться, чтобы формировать дополнительные интерполированные прогнозирующие данные, которые также могут рассматриваться при анализе искажения в зависимости от скорости передачи. Другими словами, способ не ограничен формированием только первых и вторых интерполированных прогнозирующих данных на основе двух интерполяционных фильтров, но может применяться, чтобы формировать любое множество интерполированных прогнозирующих данных на основе любого числа интерполяционных фильтров. Важно, что интерполированные прогнозирующие данные анализа искажения в зависимости от скорости передачи используются для того, чтобы идентифицировать то, какой фильтр следует выбирать. В одном примере, способ, выполняемый посредством видеокодера 50, может содержать формирование множества различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров, выбор из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи, кодирование видеоданных на основе выбора и кодирование синтаксиса, чтобы указывать выбор.The technologies of this disclosure can be used in many scenarios, including scenarios where there are more than two sets of filters selected through an encoder. In other words, additional interpolation filters can also be used to generate additional interpolated predictive data, which can also be considered in the analysis of distortion depending on the transmission speed. In other words, the method is not limited to generating only the first and second interpolated predictive data based on two interpolation filters, but can be used to generate any plurality of interpolated predictive data based on any number of interpolation filters. It is important that the interpolated predictive distortion analysis data as a function of the transmission rate is used to identify which filter should be selected. In one example, a method performed by video encoder 50 may comprise generating a plurality of different versions of predictive data for encoding video data based on a plurality of different interpolation filters, selecting from a plurality of different versions of predictive data based on an analysis of distortion depending on a transmission rate, encoding video data based on selection and syntax coding to indicate selection.

В дополнение к выбору интерполяционного фильтра на основе анализа искажения в зависимости от скорости передачи и формированию синтаксиса, чтобы указывать выбор, MC-модуль 37 модуля 32 прогнозирования также может осуществлять аналогичный анализ искажения в зависимости от скорости передачи относительно целопикселной фильтрации, которая поясняется подробнее выше. В частности, MC-модуль 37 модуля 32 прогнозирования может формировать два или более различных наборов прогнозирующих данных для целопикселных местоположений, к примеру, один с целопикселной фильтрацией и один без целопикселной фильтрации, и может осуществлять анализ искажения в зависимости от скорости передачи относительно этих двух различных наборов, чтобы определять то, требуется или нет целопикселная фильтрация. Соответственно, MC-модуль 37 модуля 32 прогнозирования может формировать другой элемент синтаксиса на основе анализа искажения в зависимости от скорости передачи, ассоциированного с двумя различными наборами целочисленных прогнозирующих данных, чтобы указывать, должна или нет целопикселная фильтрация применяться для кодированной единицы, при этом первый набор целочисленных прогнозирующих данных не фильтруется, а второй набор целочисленных прогнозирующих данных фильтруется. Таким образом, решение, осуществлять или нет целопикселную фильтрацию, может быть основано не только на качестве кодирования видео, но также и на возможном дополнительном числе битов, ассоциированном с целопикселной фильтрацией, в частности, когда целопикселная фильтрация должна заключать в себе кодирование и отправку коэффициентов целопикселной фильтрации, используемых для того, чтобы выполнять такую целопикселную фильтрацию. Целочисленная фильтрация также может рассматривать N целочисленных фильтров (к примеру, где N - это любое положительное и множественное целое число). Согласно использованию N целочисленных фильтров, вышеприведенный пример должен соответствовать случаю, где N равно двум, и один из фильтров не применяет фильтрации.In addition to selecting an interpolation filter based on the analysis of the distortion depending on the transmission rate and syntax generation to indicate the choice, the MC module 37 of the prediction module 32 can also perform a similar analysis of the distortion depending on the transmission rate with respect to integer-pixel filtering, which is explained in more detail above. In particular, the MC module 37 of the prediction module 32 may generate two or more different sets of predictive data for integer-pixel locations, for example, one with integer-pixel filtering and one without integer-pixel filtering, and may perform distortion analysis depending on the transmission rate with respect to these two different sets to determine whether or not integer-pixel filtering is required. Accordingly, the MC module 37 of the prediction module 32 may generate another syntax element based on a distortion analysis depending on the transmission rate associated with two different sets of integer predictive data to indicate whether or not integer-pixel filtering should be applied to the coded unit, with the first set integer predictive data is not filtered, and a second set of integer predictive data is filtered. Thus, the decision whether or not to perform integer-pixel filtering can be based not only on the quality of the video encoding, but also on the possible additional number of bits associated with integer-pixel filtering, in particular when integer-pixel filtering should encode and send integer-pixel coefficients filtering used to perform such integer-pixel filtering. Integer filtering can also consider N integer filters (for example, where N is any positive and plural integer). According to the use of N integer filters, the above example should correspond to the case where N is two, and one of the filters does not apply filtering.

Каждый раз, когда коэффициенты интерполяционной фильтрации фактически кодируются и отправляются из исходного устройства 12 в целевое устройство 16, это раскрытие сущности также рассматривает технологии для кодирования таких коэффициентов интерполяционной фильтрации. Описанное кодирование для коэффициентов фильтрации позволяет улучшать сжатие данных. В частности, это раскрытие сущности рассматривает технологии прогнозирования для коэффициентов фильтрации, к примеру, относительно коэффициентов неперестраиваемой фильтрации. Помимо этого, это раскрытие сущности рассматривает технологии прогнозирования для второго набора коэффициентов фильтрации относительно первого набора коэффициентов фильтрации. Таким образом, несовершенная симметрия между различными коэффициентами фильтрации может быть использована для того, чтобы предоставлять возможность сжатия данных. В дополнение к использованию таких технологий прогнозирования для коэффициентов интерполяционной фильтрации, это раскрытие сущности также предусматривает полезные технологии квантования и энтропийного кодирования коэффициентов интерполяционной фильтрации на основе префиксного и суффиксного кодирования. Следующее пояснение предоставляет дополнительные сведения этих аспектов данного раскрытия сущности.Each time interpolation filtering coefficients are actually encoded and sent from source device 12 to target device 16, this disclosure also considers techniques for encoding such interpolation filtering coefficients. The coding described for filtering coefficients improves data compression. In particular, this disclosure discusses prediction technologies for filter coefficients, for example, with respect to non-tunable filter coefficients. In addition, this disclosure discusses prediction technologies for a second set of filter coefficients relative to a first set of filter coefficients. Thus, imperfect symmetry between different filter coefficients can be used to provide data compression. In addition to using such prediction technologies for interpolation filtering coefficients, this disclosure also provides useful quantization and entropy coding technologies for interpolation filtering coefficients based on prefix and suffix coding. The following explanation provides further details on these aspects of this disclosure.

Фиг.24 является блок-схемой последовательности операций, иллюстрирующей технологию для кодирования коэффициентов фильтрации с использованием прогнозирующего кодирования. В этом случае, коэффициенты фильтрации, используемые посредством видеокодера 50, могут быть прогнозирующе кодированы относительно коэффициентов фильтрации неперестраиваемого фильтра, что дополнительно позволяет улучшать сжатие данных, когда коэффициенты фильтрации отправляются как часть кодированного потока битов.24 is a flowchart illustrating a technique for encoding filter coefficients using predictive coding. In this case, the filtering coefficients used by the video encoder 50 can be predictively encoded with respect to the filtering coefficients of the non-tunable filter, which further improves data compression when the filtering coefficients are sent as part of the encoded bitstream.

Как показано на Фиг.24, MC-модуль 37 модуля 32 прогнозирования набор коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео (241). Например, MC-модуль 37 может идентифицировать набор коэффициентов фильтрации посредством выполнения процесса адаптивной интерполяционной фильтрации. В этом случае, MC-модуль 37 может определять набор коэффициентов фильтрации через процесс адаптивной интерполяционной фильтрации и формировать прогнозирующие данные на основе коэффициентов фильтрации, идентифицированных в процессе адаптивной интерполяционной фильтрации. При адаптивной интерполяционной фильтрации, как подробнее поясняется в данном документе, MC-модуль 37 может осуществлять двухпроходный подход, в котором прогнозирующие данные формируются на основе неперестраиваемого фильтра, и затем коэффициенты фильтрации регулируются так, что прогнозирующие данные задаются таким образом, чтобы быть в большей степени аналогичными кодируемым видеоданным. Отрегулированные коэффициенты фильтрации в таком случае задают коэффициенты фильтрации, которые используются и кодируются в поток битов.As shown in FIG. 24, the MC module 37 of the prediction module 32 has a set of filter coefficients for interpolating the predictive data when encoding video (241). For example, the MC module 37 may identify a set of filter coefficients by performing an adaptive interpolation filtering process. In this case, the MC module 37 may determine a set of filtering coefficients through the adaptive interpolation filtering process and generate predictive data based on the filtering coefficients identified in the adaptive interpolation filtering process. With adaptive interpolation filtering, as explained in more detail in this document, the MC module 37 can implement a two-pass approach in which predictive data is generated based on a non-tunable filter, and then the filter coefficients are adjusted so that the predictive data is set so as to be more similar to encoded video data. The adjusted filter coefficients in this case specify the filter coefficients that are used and encoded into the bit stream.

Чтобы кодировать коэффициенты фильтрации так, что такие коэффициенты фильтрации могут передаваться как часть потока битов, модуль 41 прогнозирования коэффициентов и квантования может формировать остаточные значения, ассоциированные с набором коэффициентов фильтрации, на основе прогнозирующего кодирования набора коэффициентов фильтрации относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром (242). В частности, модуль 41 прогнозирования коэффициентов и квантования может вычитать коэффициенты фильтрации, определенные в процессе адаптивной интерполяционной фильтрации, из соответствующих коэффициентов фильтрации, ассоциированных с неперестраиваемым фильтром, таким как интерполяционный фильтр ITU-T H.264 или интерполяционный фильтр ITU-T H.264 без промежуточного округления полупикселных значений. Посредством кодирования и передачи остаточных значений, вместо передачи фактических коэффициентов фильтрации, объем данных, передаваемый в потоке битов, может уменьшаться. В этом случае, декодер может программироваться, чтобы знать способ, которым кодируются коэффициенты фильтрации.In order to code filter coefficients such that such filter coefficients can be transmitted as part of the bitstream, coefficient prediction and quantization module 41 may generate residual values associated with a set of filter coefficients based on predictive coding of a set of filter coefficients relative to filter coefficients associated with the non-tunable interpolation filter (242). In particular, coefficient prediction and quantization module 41 can subtract filter coefficients determined during adaptive interpolation filtering from corresponding filter coefficients associated with a non-tunable filter, such as an ITU-T H.264 interpolation filter or an ITU-T H.264 interpolation filter without intermediate rounding of half-pixel values. By encoding and transmitting the residual values, instead of transmitting the actual filtering coefficients, the amount of data transmitted in the bit stream can be reduced. In this case, the decoder can be programmed to know the way the filter coefficients are encoded.

Видеокодер 50 может активировать модуль 41 прогнозирования коэффициентов и квантования, чтобы прогнозировать и квантовать остаточные коэффициенты, и модуль 46 энтропийного кодирования может энтропийно кодировать квантованные остатки (243). Видеокодер 50 затем может выводить остаточные значения как часть кодированного потока битов (244). Квантование остаточных значений, ассоциированных с коэффициентами фильтрации, может заключать в себе квантование остаточных значений, в котором, по меньшей мере, некоторым из остаточных значений, ассоциированных с различными коэффициентами фильтрации, назначаются различные уровни квантования. Таким образом, модуль 41 прогнозирования коэффициентов и квантования может назначать большее квантование большим остаточным коэффициентам и может назначать меньшее квантование более точным остаточным коэффициентам, чтобы достигать желательного равновесия квантования и точности. Когда большее квантование используется, больший объем данных исключается, но большее сжатие может достигаться. Модуль 46 энтропийного кодирования может энтропийно кодировать остаточные значения посредством назначения префиксного кода, назначения суффиксного кода и назначения значения знака для остаточных значений после квантования остаточных значений. Видеокодер 50 затем может выводить остаточные значения как часть кодированного потока битов (244).Video encoder 50 may activate coefficient prediction and quantization module 41 to predict and quantize residual coefficients, and entropy encoding module 46 may entropy encode quantized residues (243). Video encoder 50 may then output residual values as part of the encoded bitstream (244). The quantization of residual values associated with filter coefficients may include quantization of residual values in which at least some of the residual values associated with different filter coefficients are assigned different levels of quantization. Thus, coefficient prediction and quantization module 41 may assign more quantization to larger residual coefficients and may assign less quantization to more accurate residual coefficients in order to achieve the desired balance of quantization and accuracy. When more quantization is used, more data is eliminated, but more compression can be achieved. Entropy encoding unit 46 may entropy encode residual values by assigning a prefix code, assigning a suffix code, and assigning a sign value to the residual values after quantizing the residual values. Video encoder 50 may then output residual values as part of the encoded bitstream (244).

Фиг.27 является концептуальным графиком, иллюстрирующим некоторые иллюстративные коэффициенты фильтрации, которые могут прогнозирующе кодироваться. В этом случае, коэффициенты фильтрации O1, O2, O3 и O4 могут задавать коэффициенты фильтрации, ассоциированные с неперестраиваемым интерполяционным фильтром. Коэффициенты фильтрации X1, X2, X3 и X4 могут задавать требуемые коэффициенты фильтрации, которые могут быть в достаточной степени аналогичными коэффициентам фильтрации неперестраиваемого интерполяционного фильтра. Соответственно, коэффициенты фильтрации X1, X2, X3 и X4 могут быть прогнозированы на основе коэффициентов фильтрации O1, O2, O3 и O4, соответственно. В частности, первый остаток может формироваться как разность между X1 и O1. Аналогично, второй остаток может формироваться как разность между X2 и O2, третий остаток может формироваться как разность между X3 и O3, и четвертый остаток может формироваться как разность между X4 и O4. Остатки могут содержать меньший объем данных, чем исходные коэффициенты фильтрации, тем самым, способствуя сжатию данных.27 is a conceptual diagram illustrating some illustrative filtering coefficients that can be predictively encoded. In this case, the filter coefficients O 1 , O 2 , O 3 and O 4 can specify the filter coefficients associated with the non-tunable interpolation filter. The filtering coefficients X 1 , X 2 , X 3 and X 4 can specify the desired filtering coefficients, which can be sufficiently similar to the filtering coefficients of a non-tunable interpolation filter. Accordingly, the filter coefficients X 1 , X 2 , X 3 and X 4 can be predicted based on the filter coefficients O 1 , O 2 , O 3 and O 4 , respectively. In particular, the first residue may be formed as the difference between X 1 and O 1 . Similarly, a second residue may be formed as the difference between X 2 and O 2 , a third residue may be formed as the difference between X 3 and O 3 , and a fourth residue may be formed as the difference between X 4 and O 4 . Residues may contain less data than the original filtering coefficients, thereby contributing to data compression.

В некоторых случаях, набор коэффициентов фильтрации содержит первый набор коэффициентов фильтрации, которые задают только часть полного набора коэффициентов фильтрации, ассоциированных с адаптивным интерполяционным фильтром, при этом второй набор коэффициентов фильтрации может быть определен посредством декодера на основе первого набора коэффициентов фильтрации и симметрии по коэффициентам. Например, коэффициенты фильтрации X1 и X2 могут кодироваться с прогнозированием на основе O1 и O2, соответственно. В этом случае, тем не менее, X3 и X4 могут быть симметричными с X1 и X2, и декодер может программироваться, чтобы знать, что такая симметрия накладывается. Соответственно, с помощью симметрии коэффициенты X3 и X4 в этом простом примере могут исключаться из потока битов и могут вычисляться в декодере на основе известной симметрии по коэффициентам после того, как коэффициенты X1 и X2 декодированы с прогнозированием.In some cases, the set of filtering coefficients comprises a first set of filtering coefficients that specify only a part of the complete set of filtering coefficients associated with the adaptive interpolation filter, and the second set of filtering coefficients can be determined by a decoder based on the first set of filtering coefficients and symmetry by coefficients. For example, filter coefficients X 1 and X 2 may be predicted coded based on O 1 and O 2 , respectively. In this case, however, X 3 and X 4 may be symmetrical with X 1 and X 2 , and the decoder may be programmed to know that such symmetry overlaps. Accordingly, using symmetry, the coefficients X 3 and X 4 in this simple example can be excluded from the bit stream and can be calculated in the decoder based on the known symmetry by the coefficients after the coefficients X 1 and X 2 are decoded with prediction.

Фиг.25 является другой блок-схемой последовательности операций, иллюстрирующей технологию для кодирования коэффициентов фильтрации с использованием прогнозирующего кодирования. В этом случае, тем не менее, используются два различных типа прогнозирования. Как показано на Фиг.25, MC-модуль 37 модуля 32 прогнозирования идентифицирует набор коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео (251). Как в случае процесса по Фиг.24, на Фиг.25 MC-модуль 37 может идентифицировать набор коэффициентов фильтрации посредством выполнения процесса адаптивной интерполяционной фильтрации. В этом случае, MC-модуль 37 может определять набор коэффициентов фильтрации через процесс адаптивной интерполяционной фильтрации и формировать прогнозирующие данные на основе коэффициентов фильтрации, идентифицированных в процессе адаптивной интерполяционной фильтрации. При адаптивной интерполяционной фильтрации MC-модуль 37 может осуществлять двухпроходный подход, в котором прогнозирующие данные формируются на основе неперестраиваемого фильтра, и затем коэффициенты фильтрации регулируются так, что прогнозирующие данные задаются таким образом, чтобы быть в большей степени аналогичными кодируемым видеоданным. Отрегулированные коэффициенты фильтрации в таком случае задают коэффициенты фильтрации, которые используются и кодируются в поток битов.25 is another flowchart illustrating a technique for encoding filter coefficients using predictive coding. In this case, however, two different types of forecasting are used. As shown in FIG. 25, the MC module 37 of the prediction module 32 identifies a set of filter coefficients for interpolating the prediction data in video encoding (251). As in the case of the process of FIG. 24, in FIG. 25, the MC module 37 can identify a set of filter coefficients by performing an adaptive interpolation filtering process. In this case, the MC module 37 may determine a set of filtering coefficients through the adaptive interpolation filtering process and generate predictive data based on the filtering coefficients identified in the adaptive interpolation filtering process. With adaptive interpolation filtering, the MC module 37 may implement a two-pass approach in which predictive data is generated based on a non-tunable filter, and then the filter coefficients are adjusted so that the predictive data is set to be more similar to the encoded video data. The adjusted filter coefficients in this case specify the filter coefficients that are used and encoded into the bit stream.

Чтобы кодировать коэффициенты фильтрации так, чтобы такие коэффициенты фильтрации могли передаваться как часть потока битов, модуль 41 прогнозирования коэффициентов и квантования может формировать первый набор остаточных значений, ассоциированных с первым набором коэффициентов фильтрации, на основе прогнозирующего кодирования относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром (252). В частности, модуль 41 прогнозирования коэффициентов и квантования может вычитать первый набор коэффициентов фильтрации из соответствующих коэффициентов фильтрации, ассоциированных с неперестраиваемым фильтром, таким как интерполяционный фильтр ITU-T H.264 или интерполяционный фильтр ITU-T H.264 без промежуточного округления полупикселных значений. Затем, модуль 41 прогнозирования коэффициентов и квантования может формировать второй набор остаточных значений, ассоциированных со вторым набором коэффициентов фильтрации, на основе прогнозирующего кодирования относительно первого набора коэффициентов фильтрации (253). В частности, модуль 41 прогнозирования коэффициентов и квантования может вычитать второй набор коэффициентов фильтрации из зеркальных или повернутых значений первого набора коэффициентов. Таким образом, первый набор коэффициентов кодируется с прогнозированием на основе коэффициентов неперестраиваемого фильтра, и второй набор коэффициентов кодируются с прогнозированием на основе первого набора коэффициентов. Посредством формирования остаточных значений вместо использования фактических коэффициентов фильтрации, объем данных, передаваемый в потоке битов, может уменьшаться. Кроме того, посредством использования неперестраиваемого фильтра для того, чтобы прогнозировать первый набор коэффициентов, и последующего использования первого набора коэффициентов, чтобы прогнозировать второй набор коэффициентов, дополнительное сжатие данных может достигаться относительно прогнозирования, которое основано только на неперестраиваемом фильтре.In order to code filter coefficients so that such filter coefficients can be transmitted as part of the bitstream, coefficient prediction and quantization module 41 may generate a first set of residual values associated with the first set of filter coefficients based on predictive coding for filter coefficients associated with the non-tunable interpolation filter (252). In particular, coefficient prediction and quantization module 41 can subtract the first set of filter coefficients from the corresponding filter coefficients associated with a non-tunable filter, such as an ITU-T H.264 interpolation filter or ITU-T H.264 interpolation filter without intermediate rounding of half-pixel values. Then, coefficient prediction and quantization module 41 may generate a second set of residual values associated with the second set of filtering coefficients based on predictive coding with respect to the first set of filtering coefficients (253). In particular, coefficient prediction and quantization module 41 may subtract a second set of filtering coefficients from mirror or rotated values of the first set of coefficients. Thus, the first set of coefficients is predicted encoded based on non-tunable filter coefficients, and the second set of coefficients are predicted encoded based on the first set of coefficients. By generating residual values instead of using the actual filter coefficients, the amount of data transmitted in the bitstream can be reduced. Furthermore, by using a non-tunable filter to predict the first set of coefficients, and then using the first set of coefficients to predict the second set of coefficients, additional data compression can be achieved relative to the prediction, which is based only on the non-tunable filter.

Как в случае процесса по Фиг.24, на Фиг.25 видеокодер 50 может активировать модуль 41 прогнозирования коэффициентов и квантования, чтобы прогнозирующе кодировать и квантовать остаточные коэффициенты, и модуль 46 энтропийного кодирования может энтропийно кодировать квантованные остатки (254). Видеокодер 50 затем может выводить остаточные значения как часть кодированного потока битов (254). С другой стороны, квантование остаточных значений, ассоциированных с коэффициентами фильтрации, может заключать в себе квантование остаточных значений, в котором, по меньшей мере, некоторым из остаточных значений, ассоциированных с различными коэффициентами фильтрации, назначаются различные уровни квантования. Таким образом, модуль 41 прогнозирования коэффициентов и квантования может назначать большее квантование большим остаточным коэффициентам и может назначать меньшее квантование более точным остаточным коэффициентам, чтобы достигать желательного равновесия квантования и точности. Модуль 46 энтропийного кодирования может энтропийно кодировать остаточные значения посредством назначения префиксного кода, назначения суффиксного кода и назначения значения знака для остаточных значений после квантования остаточных значений. Видеокодер 50 затем может выводить остаточные значения как часть кодированного потока битов (255).As in the case of the process of FIG. 24, in FIG. 25, video encoder 50 may activate coefficient prediction and quantization module 41 to predictively encode and quantize residual coefficients, and entropy encoding module 46 may entropy encode quantized residues (254). Video encoder 50 may then output residual values as part of the encoded bitstream (254). On the other hand, the quantization of residual values associated with filter coefficients may include quantization of residual values in which at least some of the residual values associated with different filter coefficients are assigned different levels of quantization. Thus, coefficient prediction and quantization module 41 may assign more quantization to larger residual coefficients and may assign less quantization to more accurate residual coefficients in order to achieve the desired balance of quantization and accuracy. Entropy encoding unit 46 may entropy encode residual values by assigning a prefix code, assigning a suffix code, and assigning a sign value to the residual values after quantizing the residual values. Video encoder 50 may then output residual values as part of the encoded bitstream (255).

Фиг.28 является концептуальным графиком, иллюстрирующим некоторые иллюстративные коэффициенты фильтрации, которые могут кодироваться с прогнозированием согласно процессу по Фиг.25. В этом случае, коэффициенты фильтрации O1 и O2 могут задавать коэффициенты фильтрации, ассоциированные с неперестраиваемым интерполяционным фильтром. Коэффициенты фильтрации X1 и X2 могут задавать первый набор требуемых коэффициентов фильтрации, которые могут быть в достаточной степени аналогичными коэффициентам фильтрации неперестраиваемого интерполяционного фильтра. Соответственно, коэффициенты фильтрации X1 и X2 могут быть прогнозированы на основе коэффициентов фильтрации O1 и O2, соответственно. В частности, первый остаток может формироваться как разность между X1 и O1, и второй остаток может формироваться как разность между X2 и O2. Остатки могут содержать меньший объем данных, чем исходные коэффициенты фильтрации, тем самым, способствуя сжатию данных. Остатки затем квантуются посредством модуля 41 прогнозирования коэффициентов и квантования и энтропийно кодируются посредством модуля 46 энтропийного кодирования.

Figure 00000025
и
Figure 00000026
могут упоминаться как модифицированные коэффициенты фильтрации, которые формируются посредством прибавления деквантованных остатков к коэффициентам прогнозной фильтрации O1 и O2.FIG. 28 is a conceptual diagram illustrating some illustrative filtering coefficients that can be predictively encoded according to the process of FIG. 25. In this case, the filter coefficients O 1 and O 2 can set the filter coefficients associated with the non-tunable interpolation filter. The filter coefficients X 1 and X 2 can specify the first set of required filter coefficients, which can be sufficiently similar to the filter coefficients of a non-tunable interpolation filter. Accordingly, the filter coefficients X 1 and X 2 can be predicted based on the filter coefficients O 1 and O 2 , respectively. In particular, the first residue may be formed as the difference between X 1 and O 1 , and the second residue may be formed as the difference between X 2 and O 2 . Residues may contain less data than the original filtering coefficients, thereby contributing to data compression. The residuals are then quantized by coefficient prediction and quantization module 41 and are entropy encoded by entropy encoding module 46.
Figure 00000025
and
Figure 00000026
may be referred to as modified filter coefficients, which are formed by adding dequantized residues to predictive filter coefficients O 1 and O 2 .

Затем, второй набор коэффициентов фильтрации Z1 и Z2 может кодироваться с прогнозированием на основе первого набора коэффициентов X1 и X2, к примеру, конкретно из коэффициентов

Figure 00000025
и
Figure 00000026
, которые задаются на основе коэффициентов X1 и X2. В частности, третий остаток может формироваться как разность между Z1 и
Figure 00000025
, а четвертый остаток может формироваться как разность между Z2 и
Figure 00000026
.
Figure 00000025
и
Figure 00000026
могут быть в большей степени аналогичными Z1 и Z2, чем O1 и O2, следовательно, посредством использования
Figure 00000025
и
Figure 00000026
для того, чтобы кодировать с прогнозированием Z1 и Z2, дополнительному сжатию данных можно способствовать.Then, the second set of filtering coefficients Z 1 and Z 2 can be predicted encoded based on the first set of coefficients X 1 and X 2 , for example, specifically from the coefficients
Figure 00000025
and
Figure 00000026
which are set based on the coefficients X 1 and X 2 . In particular, a third residue may be formed as the difference between Z 1 and
Figure 00000025
, and the fourth residue can be formed as the difference between Z 2 and
Figure 00000026
.
Figure 00000025
and
Figure 00000026
can be more similar to Z 1 and Z 2 than O 1 and O 2 , therefore, by using
Figure 00000025
and
Figure 00000026
in order to encode with prediction of Z 1 and Z 2 , additional data compression can be promoted.

Фиг.26 является блок-схемой последовательности операций, иллюстрирующей технологию для декодирования коэффициентов фильтрации с использованием прогнозирующего кодирования. Фиг.26 описывается с точки зрения видеодекодера 60 по Фиг.16. Как показано, видеодекодер 60 принимает остаточные значения, ассоциированные с набором коэффициентов фильтрации (261). Видеодекодер 60 может энтропийно декодировать остаточные значения через модуль 52 энтропийного декодирования и может активировать модуль 53 прогнозирования коэффициентов и обратного квантования, чтобы деквантовать остаточные значения (262), которые затем отправляются в модуль 55 прогнозирования. Модуль 56 прогнозирования формирует набор коэффициентов фильтрации с использованием прогнозирующего декодирования остаточных значений (263).26 is a flowchart illustrating a technique for decoding filter coefficients using predictive coding. FIG. 26 is described in terms of the video decoder 60 of FIG. 16. As shown, video decoder 60 receives the residual values associated with the set of filter coefficients (261). Video decoder 60 may entropy decode the residual values through entropy decoding module 52 and may activate coefficient prediction and inverse quantization module 53 to quantize the residual values (262), which are then sent to prediction module 55. Prediction module 56 generates a set of filter coefficients using predictive decoding of residual values (263).

В частности, модуль 56 прогнозирования может формировать полный набор коэффициентов фильтрации на основе остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, к примеру, как концептуально проиллюстрировано на Фиг.27 и разрешено выше в контексте кодирования. В некоторых случаях, первый набор коэффициентов фильтрации может быть сформирован на основе остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и второй набор коэффициентов фильтрации может быть сформирован на основе симметрии. В других случаях, первый набор коэффициентов фильтрации может быть сформирован на основе остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и второй набор коэффициентов фильтрации может быть сформирован на основе дополнительных остаточных значений и первого набора коэффициентов фильтрации, к примеру, как концептуально проиллюстрировано на Фиг.28 и разрешено выше в контексте кодирования. В любом случае, модуль 56 прогнозирования видеодекодера 60 применяет набор коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные, используемые для прогнозирующего декодирования видеоблоков (264). В частности, модуль 56 прогнозирования фильтрует данные, чтобы формировать интерполированные прогнозирующие данные с использованием декодированных с прогнозированием коэффициентов фильтрации так, что видеоблоки могут декодироваться на основе таких интерполированных прогнозирующих данных.In particular, prediction module 56 can generate a complete set of filter coefficients based on residual values and filter coefficients associated with a non-tunable interpolation filter, for example, as conceptually illustrated in FIG. 27 and allowed above in the context of coding. In some cases, a first set of filtering coefficients may be generated based on residual values and filtering coefficients associated with a non-tunable interpolation filter, and a second set of filtering coefficients may be generated based on symmetry. In other cases, the first set of filter coefficients may be generated based on the residual values and filter coefficients associated with the non-tunable interpolation filter, and the second set of filter coefficients may be formed based on additional residual values and the first set of filter coefficients, for example, as conceptually illustrated on Fig and permitted above in the context of encoding. In any case, the prediction unit 56 of the video decoder 60 applies a set of filtering coefficients to interpolate the predictive data used for predictively decoding the video blocks (264). In particular, prediction unit 56 filters the data to generate interpolated prediction data using prediction decoded filter coefficients so that video blocks can be decoded based on such interpolated prediction data.

С другой стороны, набор декодированных с прогнозированием коэффициентов фильтрации может содержать первый набор коэффициентов фильтрации, которые задают только часть полного набора коэффициентов фильтрации, ассоциированных с адаптивным интерполяционным фильтром. В этом случае, модуль 53 прогнозирования коэффициентов и обратного квантования видеодекодера 60 может формировать второй набор коэффициентов фильтрации на основе первого набора коэффициентов фильтрации и симметрии по коэффициентам и применять первый и второй наборы коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные.On the other hand, a set of predicted decoded filter coefficients may comprise a first set of filter coefficients that specify only part of the complete set of filter coefficients associated with an adaptive interpolation filter. In this case, the coefficient prediction and inverse quantization module 53 of the video decoder 60 may generate a second set of filter coefficients based on the first set of filter coefficients and symmetry by coefficients and apply the first and second sets of filter coefficients to interpolate the predictive data.

В другом случае набор декодированных с прогнозированием коэффициентов фильтрации может содержать первый набор коэффициентов фильтрации, которые задают только часть полного набора коэффициентов фильтрации, ассоциированных с адаптивным интерполяционным фильтром. В этом случае, видеодекодер 60 может принимать дополнительные остаточные значения, ассоциированные с полным набором коэффициентов фильтрации. Модуль 53 прогнозирования коэффициентов и обратного квантования может формировать второй набор коэффициентов фильтрации с использованием прогнозирующего декодирования на основе дополнительных остаточных значений и первого набора коэффициентов фильтрации, и модуль 55 прогнозирования может применять первый и второй наборы коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные.In another case, the set of predicted filter coefficients may contain a first set of filter coefficients that specify only part of the complete set of filter coefficients associated with an adaptive interpolation filter. In this case, video decoder 60 may take additional residual values associated with a full set of filtering coefficients. Coefficient prediction and inverse quantization module 53 may generate a second set of filter coefficients using predictive decoding based on additional residual values and a first set of filter coefficients, and prediction module 55 may apply the first and second sets of filter coefficients to interpolate the predictive data.

В некоторых случаях, неперестраиваемые интерполяционные фильтры на основе фильтров H.264/AVC могут использоваться для того, чтобы прогнозировать одномерные фильтры (которые могут включать в себя фильтры для субпикселных позиций a, b, d, h, показанных на Фиг.8, 9, 10 и 11). Для двумерных фильтров, которые включают в себя фильтры для субпикселных позиций e, f, i и j, показанных на Фиг.12, 13, 14 и 15, одна из следующих схем прогнозирования может использоваться:In some cases, non-tunable interpolation filters based on H.264 / AVC filters can be used to predict one-dimensional filters (which may include filters for the sub-pixel positions a, b, d, h shown in Figs. 8, 9, 10 and 11). For two-dimensional filters, which include filters for the sub-pixel positions e, f, i and j shown in FIGS. 12, 13, 14 and 15, one of the following prediction schemes may be used:

1. Задание прогнозирования равным нулю (отсутствует прогнозирование),

Figure 00000027
.1. The prediction task is equal to zero (no forecasting),
Figure 00000027
.

2. Использование прогнозирования на основе неперестраиваемого фильтра, такого как средний фильтр, собранный для обучающего набора, т.е.

Figure 00000028
, где
Figure 00000029
- это (i,j)-тый коэффициент фильтрации в среднем фильтре для субпикселной позиции SP.2. Using prediction based on a non-tunable filter, such as an average filter assembled for a training set, i.e.
Figure 00000028
where
Figure 00000029
is the ( i, j ) -th filter coefficient in the middle filter for the sub-pixel position SP .

3. Использование возможной симметрии в коэффициентах и использование уже кодированных коэффициентов, чтобы прогнозировать оставшиеся коэффициенты.3. Using possible symmetry in the coefficients and using the already coded coefficients to predict the remaining coefficients.

Для одномерных фильтров также может применяться любой из этих трех способов прогнозирования.For one-dimensional filters, any of these three prediction methods can also be applied.

Для прогнозирования Фиг.29 предоставляет пример матрицы коэффициентов целопикселной фильтрации, для которых технологии прогнозирования могут использоваться для кодирования. В этом примере, можно предположить, что симметрия не накладывается на целопикселный фильтр. Коэффициенты (h0,0), (h0,1), (h1,0), (h1,1), (h2,0), (h2,1) (h0,2), (h1,2) и (h2,2) могут квантоваться и кодироваться сначала. Затем, уже кодированные верхние левые коэффициенты (h0,0), (h0,1), (h1,0), (h1,1) и (h2,0) могут использоваться для того, чтобы прогнозировать правые верхние коэффициенты (h0,3), (h1,3), (h2,3), (h0,4), (h1,4) и (h2,4). Затем, после того как верхняя половина коэффициентов фильтрации (h0,0), (h0,1), (h0,2), (h0,3) (h0,4), (h1,0), (h1,1), (h1,2), (h1,3) и (h1,4) квантована и кодирована, они дополнительно могут использоваться для того, чтобы прогнозировать нижнюю половину коэффициентов фильтрации (h3,0), (h3,1), (h3,2), (h3,3), (h3,4), (h4,0), (h4,1), (h4,2), (h4,3) и (h4,4). Прогнозирование других коэффициентов фильтрации может выполняться аналогичным способом. Например, для фильтра субпикселной позиции "e" (см. Фиг.12), который может иметь определенную симметрию по диагонали, правые верхние коэффициенты могут сначала квантоваться и кодироваться и затем использоваться для того, чтобы прогнозировать левые нижние коэффициенты.For Prediction FIG. 29 provides an example matrix of integer-pixel filtering coefficients for which prediction techniques may be used for coding. In this example, we can assume that the symmetry does not overlap the integer-pixel filter. Coefficients (h0,0), (h0,1), (h1,0), (h1,1), (h2,0), (h2,1) (h0,2), (h1,2) and (h2 , 2) can be quantized and encoded first. Then, the already encoded upper left coefficients (h0,0), (h0,1), (h1,0), (h1,1) and (h2,0) can be used to predict the right upper coefficients (h0,3 ), (h1,3), (h2,3), (h0,4), (h1,4) and (h2,4). Then, after the upper half of the filter coefficients (h0,0), (h0,1), (h0,2), (h0,3) (h0,4), (h1,0), (h1,1), (h1,2), (h1,3) and (h1,4) are quantized and encoded, they can additionally be used to predict the lower half of the filter coefficients (h3,0), (h3,1), (h3,2 ), (h3,3), (h3,4), (h4,0), (h4,1), (h4,2), (h4,3) and (h4,4). Prediction of other filtering coefficients can be performed in a similar manner. For example, for a sub-pixel position filter “e” (see FIG. 12), which may have a certain diagonal symmetry, the upper right coefficients can be first quantized and encoded and then used to predict the lower left coefficients.

В любом случае, после прогнозирования коэффициентов (к примеру, посредством модуля 41 прогнозирования коэффициентов и квантования модуля 32 прогнозирования) ошибки прогнозирования квантуются (к примеру, посредством модуля 41 прогнозирования коэффициентов и квантования). Как описано выше, так называемое "неравномерное квантование" может использоваться. В этом случае, точность квантования, применяемого посредством модуля 41 прогнозирования коэффициентов и квантования, может зависеть от местоположения коэффициента. Выяснено, что для коэффициентов с меньшей величиной (которые типично являются коэффициентами на большем расстоянии от центра фильтра), лучшая точность может быть желательной. Напротив, для коэффициентов с большей величиной (которые типично являются коэффициентами на меньшем расстоянии до центра фильтра), меньшая точность является более желательной.In any case, after predicting the coefficients (for example, by means of the coefficient prediction module 41 and quantizing the prediction module 32), prediction errors are quantized (for example, by the coefficient prediction and quantization module 41). As described above, the so-called "uneven quantization" can be used. In this case, the accuracy of the quantization used by the coefficient prediction and quantization module 41 may depend on the location of the coefficient. It has been found that for coefficients with a smaller magnitude (which are typically coefficients at a greater distance from the center of the filter), better accuracy may be desirable. In contrast, for coefficients with a larger magnitude (which are typically coefficients at a shorter distance to the center of the filter), less accuracy is more desirable.

Следующие матрицы, Q 1D , Q 2D , Q FP, могут использоваться посредством модуля 41 прогнозирования коэффициентов и квантования, чтобы указывать точность квантования для коэффициентов в одномерных фильтрах, двумерных фильтрах и целопикселном фильтре, соответственно. Следует отметить, что числа битов, указанные в матрицах, могут включать в себя 1 бит, чтобы кодировать знак соответствующих коэффициентов.The following matrices, Q 1D , Q 2D , Q FP , can be used by coefficient prediction and quantization module 41 to indicate quantization accuracy for coefficients in one-dimensional filters, two-dimensional filters, and an integer-pixel filter, respectively. It should be noted that the number of bits indicated in the matrices may include 1 bit to encode the sign of the corresponding coefficients.

Figure 00000030
Figure 00000030

Модуль 41 прогнозирования коэффициентов и квантования может кодировать ошибки прогнозирования квантованных коэффициентов, т.е. остатки коэффициентов, на основе простой схемы префиксного кодирования. Во-первых, динамический диапазон величины ошибки прогнозирования разделяется на N элементов разрешения, например, N=6. Если динамический диапазон величины составляет [0, …, 2g-1-1], где q - это точность квантования для данной позиции коэффициента (к примеру, указываемая в матрицах выше), то каждый элемент разрешения n, n=0, …, N-1 может охватывать следующие диапазоны:The coefficient prediction and quantization module 41 may encode the prediction errors of the quantized coefficients, i.e. residual coefficients based on a simple prefix encoding scheme. First, the dynamic range of the magnitude of the prediction error is divided into N resolution elements, for example, N = 6. If the dynamic range of the value is [0, ..., 2 g-1 -1], where q is the quantization accuracy for a given position of the coefficient (for example, indicated in the matrices above), then each resolution element n, n = 0, ..., N-1 may cover the following ranges:

Figure 00000031
Figure 00000031

В этом случае, элемент разрешения b, b=0..., N-1, которому принадлежит входная величина m, может кодироваться с использованием унарного префиксного кода (который принимает b+1 битов). Затем, остаток величины, m-b start, может кодироваться с использованием суффиксного кода фиксированной длины в (g-N+b-1) битов. В завершение, знак ошибки прогнозирования кодируется с использованием 1 бита.In this case, the permission element b, b = 0 ..., N-1, to which the input quantity m belongs, can be encoded using a unary prefix code (which takes b + 1 bits). Then, the remainder of the value, mb start , can be encoded using a suffix code of a fixed length of (g-N + b-1) bits. Finally, the prediction error sign is encoded using 1 bit.

Например, для среднего коэффициента в одномерном фильтре, точность в 9 битов может использоваться посредством модуля 41 прогнозирования коэффициентов и квантования, чтобы квантовать ошибку прогнозирования, т.е. g=9, из которых 8 битов могут использоваться для того, чтобы квантовать абсолютную величину ошибки. Если абсолютная величина ошибки равна 97, то она находится в рамках 4-ого элемента разрешения, т.е. b=4. Следовательно, унарный префиксный код "11110" может быть кодирован, чтобы указывать 4-ый элемент разрешения, и остаток m-b start=97-64=33 может быть кодирован с использованием суффиксного кода фиксированной длины в (g-N+b-1)=(9-6+4-1)=6 битов. В завершение, бит "0" может быть кодирован, чтобы указывать положительный знак.For example, for the average coefficient in a one-dimensional filter, an accuracy of 9 bits can be used by coefficient prediction and quantization module 41 to quantize the prediction error, i.e. g = 9, of which 8 bits can be used to quantize the absolute value of the error. If the absolute value of the error is 97, then it is within the 4th resolution element, i.e. b = 4. Therefore, the unary prefix code “11110” can be encoded to indicate the 4th permission element, and the remainder mb start = 97-64 = 33 can be encoded using a fixed-length suffix code in (g-N + b-1) = (9-6 + 4-1) = 6 bits. Finally, bit “0” may be encoded to indicate a positive sign.

Технологии настоящего раскрытия могут быть реализованы в широком спектре устройств или приборов, в том числе в беспроводном переносном телефоне и интегральной схеме (IC) или наборе IC (т.е. наборе микросхем). Все описанные компоненты, модули или узлы предусмотрены для того, чтобы подчеркивать функциональные аспекты, и не обязательно требуют реализации посредством различных аппаратных модулей.The technologies of the present disclosure can be implemented in a wide range of devices or devices, including a cordless handset and integrated circuit (IC) or IC set (i.e., chipset). All described components, modules or assemblies are provided in order to emphasize functional aspects, and do not necessarily require implementation through various hardware modules.

Технологии, описанные в данном документе, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой их комбинации. При реализации в аппаратных средствах, любые признаки, описанные как модули, узлы или компоненты, могут быть реализованы совместно в интегрированном логическом устройстве или отдельно как дискретные, но взаимодействующие логические устройства. При реализации в программном обеспечении, технологии могут быть реализованы, по меньшей мере, частично посредством машиночитаемого носителя, содержащего инструкции, которые, когда выполняются в процессоре, осуществляют один или более способов, описанных выше, Машиночитаемый носитель может содержать машиночитаемый носитель хранения данных и может являться частью компьютерного программного продукта, который может включать в себя упаковку. Машиночитаемые носители хранения данных могут содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитные или оптические носители хранения данных и т.п. Дополнительно или альтернативно, технологии могут быть реализованы, по меньшей мере, частично посредством машиночитаемой среды связи, которая переносит или передает код в форме инструкций или структур данных, и к которой можно осуществлять доступ, считывать или выполнять посредством компьютера.The technologies described herein may be implemented in hardware, software, firmware, or any combination thereof. When implemented in hardware, any features described as modules, nodes, or components can be implemented together in an integrated logic device or separately as discrete but interacting logic devices. When implemented in software, technologies can be implemented at least in part by a computer-readable medium containing instructions that, when executed on a processor, perform one or more of the methods described above, the computer-readable medium may comprise a computer-readable storage medium, and may be part of a computer software product, which may include packaging. Computer-readable storage media may include random access memory (RAM), such as synchronous dynamic random access memory (SDRAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), flash - memory, magnetic or optical storage media, etc. Additionally or alternatively, technologies can be implemented, at least in part, through a computer-readable communication medium that transfers or transmits code in the form of instructions or data structures, and which can be accessed, read, or executed by computer.

Код может выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в рамках специализированных программных модулей или аппаратных модулей, конфигурированных для кодирования или декодирования либо встроенных в комбинированный видеокодек. Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.The code may be executed by one or more processors, for example, one or more digital signal processors (DSPs), general purpose microprocessors, specialized integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term “processor” as used herein may mean any of the above structure or another structure suitable for implementing the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within specialized software modules or hardware modules configured for encoding or decoding or integrated in a combination video codec. In addition, technologies can be fully implemented in one or more circuits or logic elements.

Описаны различные аспекты раскрытия сущности изобретения. Эти и другие аспекты находятся в рамках объема прилагаемой формулы изобретения.Various aspects of the disclosure of the invention are described. These and other aspects are within the scope of the attached claims.

Claims (47)

1. Способ видеокодирования, содержащий этапы, на которых:
формируют множество различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров;
выбирают из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи;
кодируют видеоданные на основе выбора; и
кодируют синтаксис, чтобы указывать выбор, причем отдельный элемент синтаксиса определяется для каждого из множества субпикселных местоположений.
1. A method of video coding, comprising stages in which:
generating many different versions of predictive data for encoding video data based on many different interpolation filters;
choose from a variety of different versions of predictive data based on the analysis of distortion depending on the transmission speed;
encoding the video data based on the selection; and
encode syntax to indicate a choice, a separate syntax element being determined for each of the plurality of sub-pixel locations.
2. Способ по п.1, в котором формирование и выбор содержат этапы, на которых:
формируют первые интерполированные прогнозирующие данные для кодирования видеоданных на основе первого интерполяционного фильтра;
формируют вторые интерполированные прогнозирующие данные для кодирования видеоданных на основе второго интерполяционного фильтра; и
выбирают между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи.
2. The method according to claim 1, in which the formation and selection comprise stages in which:
generating first interpolated predictive data for encoding video data based on the first interpolation filter;
generating second interpolated predictive data for encoding video data based on the second interpolation filter; and
choose between the first interpolated predictive data and the second interpolated predictive data based on the analysis of distortion depending on the transmission speed.
3. Способ по п.2, в котором первый интерполяционный фильтр соответствует неперестраиваемому интерполяционному фильтру.3. The method according to claim 2, in which the first interpolation filter corresponds to a non-tunable interpolation filter. 4. Способ по п.3, в котором первый интерполяционный фильтр выполнен без промежуточного округления дробно-пикселных значений, которые используются, чтобы формировать другие дробно-пикселные значения.4. The method according to claim 3, in which the first interpolation filter is made without intermediate rounding of fractional-pixel values, which are used to form other fractional-pixel values. 5. Способ по п.2, в котором первый интерполяционный фильтр соответствует неперестраиваемому интерполяционному фильтру, а второй интерполяционный фильтр соответствует адаптивному интерполяционному фильтру.5. The method according to claim 2, in which the first interpolation filter corresponds to a non-tunable interpolation filter, and the second interpolation filter corresponds to an adaptive interpolation filter. 6. Способ по п.2, в котором синтаксис содержит флаг, который определяет, должен ли первый интерполяционный фильтр или второй интерполяционный фильтр использоваться декодером.6. The method according to claim 2, in which the syntax contains a flag that determines whether the first interpolation filter or the second interpolation filter should be used by the decoder. 7. Способ по п.2, в котором отдельный элемент синтаксиса определен для каждого из множества субпикселных местоположений для кодированной единицы, чтобы указывать, должен ли первый интерполяционный фильтр или второй интерполяционный фильтр использоваться декодером для каждого из множества субпикселных местоположений.7. The method of claim 2, wherein a separate syntax element is defined for each of the plurality of subpixel locations for the coded unit to indicate whether a first interpolation filter or a second interpolation filter should be used by a decoder for each of the plurality of subpixel locations. 8. Способ по п.1, в котором отдельный элемент синтаксиса определен для целопикселных местоположений видеоданных, чтобы указывать, должен ли первый фильтр или второй фильтр использоваться декодером для целопикселных местоположений.8. The method of claim 1, wherein a separate syntax element is defined for integer-pixel locations of the video data to indicate whether the first filter or second filter should be used by the decoder for integer-pixel locations. 9. Способ по п.7, в котором первый фильтр не применяет фильтрацию, а второй фильтр ассоциирован с коэффициентами адаптивной фильтрации.9. The method according to claim 7, in which the first filter does not apply filtering, and the second filter is associated with adaptive filtering coefficients. 10. Способ по п.2, дополнительно содержащий этап, на котором передают кодированные видеоданные и синтаксис, чтобы указывать, использовались ли первые интерполированные прогнозирующие данные или вторые интерполированные прогнозирующие данные, чтобы сформировать кодированные видеоданные.10. The method of claim 2, further comprising transmitting the encoded video data and syntax to indicate whether the first interpolated predictive data or the second interpolated predictive data has been used to generate encoded video data. 11. Способ по п.10, дополнительно содержащий этапы, на которых: передают коэффициенты фильтрации, когда второй интерполяционный фильтр является адаптивным, и синтаксис указывает, что вторые интерполированные прогнозирующие данные использовались, чтобы сформировать кодированные видеоданные; и не передают коэффициенты фильтрации, когда первый интерполяционный фильтр является неперестраиваемым, и синтаксис указывает, что первые интерполированные прогнозирующие данные использовались, чтобы сформировать кодированные видеоданные.11. The method of claim 10, further comprising the steps of: transmitting filter coefficients when the second interpolation filter is adaptive, and the syntax indicates that the second interpolated prediction data has been used to generate encoded video data; and filter coefficients are not transmitted when the first interpolation filter is non-tunable, and the syntax indicates that the first interpolated predictive data was used to generate encoded video data. 12. Способ по п.2, в котором выбор между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи содержит этапы, на которых: вычисляют первую функцию затрат на искажение в зависимости от скорости передачи, ассоциированную с видеоданными, если видеоданные кодируются посредством первых интерполированных прогнозирующих данных; вычисляют вторую функцию затрат на искажение в зависимости от скорости передачи, ассоциированную с видеоданными, если видеоданные кодируются посредством вторых интерполированных прогнозирующих данных; и выбирают между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе первой и второй функций затрат на искажение в зависимости от скорости передачи.12. The method according to claim 2, in which the choice between the first interpolated predictive data and the second interpolated predictive data based on the analysis of distortion depending on the transmission speed contains the steps in which: calculate the first function of the cost of distortion depending on the transmission speed associated with video data if the video data is encoded by first interpolated predictive data; calculating a second distortion cost function depending on the transmission rate associated with the video data if the video data is encoded by the second interpolated predictive data; and choosing between the first interpolated predictive data and the second interpolated predictive data based on the first and second distortion cost functions depending on the transmission rate. 13. Устройство видеокодирования, содержащее видеокодер, который:
формирует множество различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров;
выбирает из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи;
кодирует видеоданные на основе выбора; и
кодирует синтаксис, чтобы указывать выбор, причем отдельный элемент синтаксиса определяется для каждого из множества субпикселных местоположений.
13. A video coding device comprising a video encoder, which:
generates many different versions of predictive data for encoding video data based on many different interpolation filters;
selects from a variety of different versions of predictive data based on an analysis of distortion depending on the transmission rate;
encodes video data based on the selection; and
encodes syntax to indicate a choice, with a separate syntax element being determined for each of the plurality of subpixel locations.
14. Устройство по п.13, в котором видеокодер: формирует первые интерполированные прогнозирующие данные для кодирования видеоданных на основе первого интерполяционного фильтра; формирует вторые интерполированные прогнозирующие данные для кодирования видеоданных на основе второго интерполяционного фильтра; и выбирает между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи.14. The device according to item 13, in which the video encoder: generates the first interpolated predictive data for encoding video data based on the first interpolation filter; generates second interpolated predictive data for encoding video data based on the second interpolation filter; and selects between the first interpolated predictive data and the second interpolated predictive data based on the analysis of distortion depending on the transmission speed. 15. Устройство по п.14, в котором первый интерполяционный фильтр соответствует неперестраиваемому интерполяционному фильтру.15. The device according to 14, in which the first interpolation filter corresponds to a non-tunable interpolation filter. 16. Устройство по п.15, в котором неперестраиваемый интерполяционный фильтр выполнен без промежуточного округления дробно-пикселных значений, которые используются, чтобы формировать другие дробно-пикселные значения.16. The device according to clause 15, in which the non-tunable interpolation filter is made without intermediate rounding of fractional-pixel values, which are used to form other fractional-pixel values. 17. Устройство по п.14, в котором первый интерполяционный фильтр соответствует неперестраиваемому интерполяционному фильтру, а второй интерполяционный фильтр соответствует адаптивному интерполяционному фильтру.17. The device according to 14, in which the first interpolation filter corresponds to a non-tunable interpolation filter, and the second interpolation filter corresponds to an adaptive interpolation filter. 18. Устройство по п.14, в котором синтаксис содержит флаг, который определяет, должен ли первый интерполяционный фильтр или второй интерполяционный фильтр использоваться декодером.18. The device according to 14, in which the syntax contains a flag that determines whether the first interpolation filter or the second interpolation filter should be used by the decoder. 19. Устройство по п.14, в котором отдельный элемент синтаксиса определен для каждого из множества субпикселных местоположений для кодированной единицы, чтобы указывать, должен ли первый интерполяционный фильтр или второй интерполяционный фильтр использоваться декодером для каждого из множества субпикселных местоположений.19. The apparatus of claim 14, wherein a separate syntax element is defined for each of the plurality of subpixel locations for the coded unit to indicate whether a first interpolation filter or a second interpolation filter should be used by a decoder for each of the plurality of subpixel locations. 20. Устройство по п.13, в котором отдельный элемент синтаксиса определен для целопикселных местоположений видеоданных, чтобы указывать, должен ли первый фильтр или второй фильтр использоваться декодером для целопикселных местоположений.20. The device according to item 13, in which a separate syntax element is defined for integer-pixel locations of the video data to indicate whether the first filter or the second filter should be used by the decoder for integer-pixel locations. 21. Устройство по п.20, в котором первый фильтр не применяет фильтрацию, а второй фильтр ассоциирован с коэффициентами адаптивной фильтрации.21. The device according to claim 20, in which the first filter does not apply filtering, and the second filter is associated with adaptive filtering coefficients. 22. Устройство по п.14, дополнительно содержащее передающее устройство, которое передает кодированные видеоданные и синтаксис, чтобы указывать, использовались ли первые интерполированные прогнозирующие данные или вторые интерполированные прогнозирующие данные, чтобы сформировать кодированные видеоданные.22. The apparatus of claim 14, further comprising a transmitter that transmits the encoded video data and syntax to indicate whether the first interpolated predictive data or the second interpolated predictive data has been used to generate encoded video data. 23. Устройство по п.22, в котором передающее устройство: передает коэффициенты фильтрации, когда второй интерполяционный фильтр является адаптивным, и синтаксис указывает, что вторые интерполированные прогнозирующие данные использовались, чтобы сформировать кодированные видеоданные; и не передает коэффициенты фильтрации, когда первый интерполяционный фильтр является неперестраиваемым, и синтаксис указывает, что первые интерполированные прогнозирующие данные использовались, чтобы сформировать кодированные видеоданные.23. The device according to item 22, in which the transmitting device: transmits filtering coefficients when the second interpolation filter is adaptive, and the syntax indicates that the second interpolated predictive data was used to generate encoded video data; and does not transmit filter coefficients when the first interpolation filter is non-tunable, and the syntax indicates that the first interpolated prediction data was used to generate encoded video data. 24. Устройство по п.14, в котором при выборе между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи устройство: вычисляет первую функцию затрат на искажение в зависимости от скорости передачи, ассоциированную с видеоданными, если видеоданные кодируются посредством первых интерполированных прогнозирующих данных; вычисляет вторую функцию затрат на искажение в зависимости от скорости передачи, ассоциированную с видеоданными, если видеоданные кодируются посредством вторых интерполированных прогнозирующих данных; и выбирает между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе первой и второй функций затрат на искажение в зависимости от скорости передачи.24. The device according to 14, in which when choosing between the first interpolated predictive data and the second interpolated predictive data based on the analysis of distortion depending on the transmission speed, the device: calculates the first function of the cost of distortion depending on the transmission speed associated with the video data, if video data is encoded by first interpolated predictive data; calculates a second distortion cost function as a function of the transmission rate associated with the video data if the video data is encoded by second interpolated predictive data; and selects between the first interpolated predictive data and the second interpolated predictive data based on the first and second distortion cost functions depending on the transmission rate. 25. Устройство по п.13, в котором видеокодер содержит интегральную схему.25. The device according to item 13, in which the video encoder contains an integrated circuit. 26. Устройство по п.13, в котором видеокодер содержит микропроцессор.26. The device according to item 13, in which the video encoder contains a microprocessor. 27. Устройство по п.13, причем устройство представляет собой устройство беспроводной связи, которое включает в себя видеокодер.27. The device according to item 13, and the device is a wireless communication device that includes a video encoder. 28. Устройство видеокодирования, содержащее:
средство для формирования множества различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров;
средство для выбора из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи;
средство для кодирования видеоданных на основе выбора; и
средство для кодирования синтаксиса, чтобы указывать выбор, причем отдельный элемент синтаксиса определяется для каждого из множества субпикселных местоположений.
28. A video coding device comprising:
means for generating a plurality of different versions of predictive data for encoding video data based on a plurality of different interpolation filters;
means for selecting from a variety of different versions of predictive data based on an analysis of distortion depending on the transmission rate;
means for encoding video data based on the selection; and
means for syntax encoding to indicate a choice, a separate syntax element being determined for each of the plurality of sub-pixel locations.
29. Устройство по п.28, в котором средство для формирования и средство для выбора содержат: средство для формирования первых интерполированных прогнозирующих данных для кодирования видеоданных на основе первого интерполяционного фильтра; средство для формирования вторых интерполированных прогнозирующих данных для кодирования видеоданных на основе второго интерполяционного фильтра; и средство для выбора между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи.29. The device according to p. 28, in which the means for forming and means for choosing contain: means for generating the first interpolated predictive data for encoding video data based on the first interpolation filter; means for generating second interpolated predictive data for encoding video data based on the second interpolation filter; and means for choosing between the first interpolated predictive data and the second interpolated predictive data based on a distortion analysis depending on a transmission rate. 30. Устройство по п.29, в котором первый интерполяционный фильтр соответствует неперестраиваемому интерполяционному фильтру.30. The device according to clause 29, in which the first interpolation filter corresponds to a non-tunable interpolation filter. 31. Устройство по п.30, в котором неперестраиваемый интерполяционный фильтр выполнен без промежуточного округления дробно-пикселных значений, которые используются, чтобы формировать другие дробно-пикселные значения.31. The device according to item 30, in which the non-tunable interpolation filter is made without intermediate rounding of fractional-pixel values, which are used to form other fractional-pixel values. 32. Устройство по п.29, в котором первый интерполяционный фильтр соответствует неперестраиваемому интерполяционному фильтру, а второй интерполяционный фильтр соответствует адаптивному интерполяционному фильтру.32. The device according to clause 29, in which the first interpolation filter corresponds to a non-tunable interpolation filter, and the second interpolation filter corresponds to an adaptive interpolation filter. 33. Устройство по п.29, в котором синтаксис содержит флаг, который определяет, должен ли первый интерполяционный фильтр или второй интерполяционный фильтр использоваться декодером.33. The device according to clause 29, in which the syntax contains a flag that determines whether the first interpolation filter or the second interpolation filter should be used by the decoder. 34. Устройство по п.29, в котором отдельный элемент синтаксиса определен для каждого из множества субпикселных местоположений для кодированной единицы, чтобы указывать, должен ли первый интерполяционный фильтр или второй интерполяционный фильтр использоваться декодером для каждого из множества субпикселных местоположений.34. The apparatus of claim 29, wherein a separate syntax element is defined for each of the plurality of subpixel locations for the coded unit to indicate whether a first interpolation filter or a second interpolation filter should be used by a decoder for each of the plurality of subpixel locations. 35. Устройство по п.28, дополнительно содержащее средство для формирования отдельного элемента синтаксиса для целопикселных местоположений видеоданных, чтобы указывать, должен ли первый фильтр или второй фильтр использоваться декодером для целопикселных местоположений.35. The apparatus of claim 28, further comprising means for generating a separate syntax element for integer-pixel locations of the video data to indicate whether the first filter or second filter should be used by the decoder for integer-pixel locations. 36. Устройство по п.35, в котором первый фильтр не применяет фильтрацию, а второй фильтр ассоциирован с коэффициентами адаптивной фильтрации.36. The device according to clause 35, in which the first filter does not apply filtering, and the second filter is associated with adaptive filtering coefficients. 37. Устройство по п.29, дополнительно содержащее средство для передачи кодированных видеоданных и синтаксиса, чтобы указывать, использовались ли первые интерполированные прогнозирующие данные или вторые интерполированные прогнозирующие данные, чтобы сформировать кодированные видеоданные.37. The apparatus of claim 29, further comprising means for transmitting the encoded video data and syntax to indicate whether the first interpolated predictive data or the second interpolated predictive data has been used to generate encoded video data. 38. Устройство по п.37, дополнительно содержащее: средство для передачи коэффициентов фильтрации, когда второй интерполяционный фильтр является адаптивным, и синтаксис указывает, что вторые интерполированные прогнозирующие данные использовались, чтобы сформировать кодированные видеоданные; и средство для отмены передачи коэффициентов фильтрации, когда первый интерполяционный фильтр является неперестраиваемым, и синтаксис указывает, что первые интерполированные прогнозирующие данные использовались, чтобы сформировать кодированные видеоданные.38. The device according to clause 37, further comprising: means for transmitting filter coefficients when the second interpolation filter is adaptive, and the syntax indicates that the second interpolated predictive data was used to generate encoded video data; and means for canceling the transmission of filter coefficients when the first interpolation filter is non-tunable, and the syntax indicates that the first interpolated prediction data was used to generate encoded video data. 39. Устройство по п.29, в котором средство для выбора между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи содержит: средство для вычисления первой функции затрат на искажение в зависимости от скорости передачи, ассоциированной с видеоданными, если видеоданные кодируются посредством первых интерполированных прогнозирующих данных; средство для вычисления второй функции затрат на искажение в зависимости от скорости передачи, ассоциированной с видеоданными, если видеоданные кодируются посредством вторых интерполированных прогнозирующих данных; и средство для выбора между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе первой и второй функций затрат на искажение в зависимости от скорости передачи.39. The device according to clause 29, in which the means for choosing between the first interpolated predictive data and the second interpolated predictive data based on the analysis of distortion depending on the transmission speed contains: means for calculating the first function of the cost of distortion depending on the transmission speed associated with video data if the video data is encoded by first interpolated predictive data; means for calculating a second distortion cost function as a function of the transmission rate associated with the video data if the video data is encoded by second interpolated predictive data; and means for choosing between the first interpolated predictive data and the second interpolated predictive data based on the first and second distortion cost functions depending on the transmission rate. 40. Машиночитаемый носитель хранения данных, содержащий инструкции, которые, когда выполняются посредством процессора, предписывают процессору:
формировать множество различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров;
выбирать из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи;
кодировать видеоданные на основе выбора; и
кодировать синтаксис, чтобы указывать выбор, причем отдельный элемент синтаксиса определяется для каждого из множества субпикселных местоположений.
40. A computer-readable storage medium containing instructions that, when executed by a processor, instruct the processor:
generate many different versions of predictive data for encoding video data based on many different interpolation filters;
choose from many different versions of predictive data based on an analysis of distortion depending on the transmission speed;
Encode video based on selection; and
encode syntax to indicate a choice, with a separate syntax element being defined for each of the plurality of subpixel locations.
41. Машиночитаемый носитель хранения данных по п.40, в котором инструкции предписывают процессору: формировать первые интерполированные прогнозирующие данные для кодирования видеоданных на основе первого интерполяционного фильтра; формировать вторые интерполированные прогнозирующие данные для кодирования видеоданных на основе второго интерполяционного фильтра; и выбирать между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи.41. The computer-readable storage medium according to claim 40, wherein the instructions instruct the processor to: generate first interpolated predictive data for encoding video data based on the first interpolation filter; generate second interpolated predictive data for encoding video data based on the second interpolation filter; and choose between the first interpolated predictive data and the second interpolated predictive data based on the analysis of distortion depending on the transmission speed. 42. Машиночитаемый носитель хранения данных по п.41, причем первый интерполяционный фильтр соответствует неперестраиваемому интерполяционному фильтру, а второй интерполяционный фильтр соответствует адаптивному интерполяционному фильтру.42. The computer-readable storage medium according to paragraph 41, wherein the first interpolation filter corresponds to a non-tunable interpolation filter and the second interpolation filter corresponds to an adaptive interpolation filter. 43. Машиночитаемый носитель хранения данных по п.41, причем синтаксис содержит флаг, который определяет, должен ли первый интерполяционный фильтр или второй интерполяционный фильтр использоваться декодером.43. The computer-readable storage medium according to paragraph 41, wherein the syntax comprises a flag that determines whether the first interpolation filter or the second interpolation filter is used by the decoder. 44. Машиночитаемый носитель хранения данных по п.41, причем отдельный элемент синтаксиса определен для каждого из множества субпикселных местоположений для кодированной единицы, чтобы указывать, должен ли первый интерполяционный фильтр или второй интерполяционный фильтр использоваться декодером для каждого из множества субпикселных местоположений.44. The computer-readable storage medium of claim 41, wherein a separate syntax element is defined for each of the plurality of subpixel locations for the encoded unit to indicate whether a first interpolation filter or a second interpolation filter should be used by a decoder for each of the plurality of subpixel locations. 45. Машиночитаемый носитель хранения данных по п.41, в котором инструкции предписывают процессору активировать передачу кодированных видеоданных и синтаксиса, чтобы указывать, использовались ли первые интерполированные прогнозирующие данные или вторые интерполированные прогнозирующие данные, чтобы сформировать кодированные видеоданные.45. The computer-readable storage medium according to paragraph 41, wherein the instructions instruct the processor to activate the transmission of encoded video data and syntax to indicate whether the first interpolated predictive data or the second interpolated predictive data has been used to generate encoded video data. 46. Машиночитаемый носитель хранения данных по п.45, дополнительно содержащий инструкции, которые предписывают процессору активировать передачу: коэффициентов фильтрации, когда второй интерполяционный фильтр является адаптивным, и синтаксис указывает, что вторые интерполированные прогнозирующие данные использовались, чтобы сформировать кодированные видеоданные; и без коэффициентов фильтрации, когда первый интерполяционный фильтр является неперестраиваемым, и синтаксис указывает, что первые интерполированные прогнозирующие данные использовались, чтобы сформировать кодированные видеоданные.46. The computer-readable storage medium according to item 45, further containing instructions that instruct the processor to activate the transmission of: filter coefficients when the second interpolation filter is adaptive, and the syntax indicates that the second interpolated predictive data was used to generate encoded video data; and without filtering coefficients, when the first interpolation filter is non-tunable, and the syntax indicates that the first interpolated predictive data was used to generate encoded video data. 47. Машиночитаемый носитель хранения данных по п.41, причем при выборе между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи, инструкции предписывают процессору: вычислять первую функцию затрат на искажение в зависимости от скорости передачи, ассоциированную с видеоданными, если видеоданные кодируются посредством первых интерполированных прогнозирующих данных; вычислять вторую функцию затрат на искажение в зависимости от скорости передачи, ассоциированную с видеоданными, если видеоданные кодируются посредством вторых интерполированных прогнозирующих данных; и выбирать между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе первой и второй функций затрат на искажение в зависимости от скорости передачи. 47. The computer-readable storage medium according to paragraph 41, and when choosing between the first interpolated predictive data and the second interpolated predictive data based on the analysis of distortion depending on the transmission speed, the instructions instruct the processor: to calculate the first function of the cost of distortion depending on the transmission speed, associated with the video data, if the video data is encoded by the first interpolated predictive data; calculate a second distortion cost function as a function of the transmission rate associated with the video data if the video data is encoded by second interpolated predictive data; and choose between the first interpolated predictive data and the second interpolated predictive data based on the first and second distortion cost functions depending on the transmission rate.
RU2010145539/07A 2008-04-10 2009-04-10 Distortion-based interpolation depending on transmission rate for video coding based on fixed filter or adaptive filter RU2505938C2 (en)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US4402008P 2008-04-10 2008-04-10
US4402308P 2008-04-10 2008-04-10
US61/044,020 2008-04-10
US61/044,023 2008-04-10
US4424008P 2008-04-11 2008-04-11
US61/044,240 2008-04-11
US5737308P 2008-05-30 2008-05-30
US61/057,373 2008-05-30
US12/420,315 2009-04-08
US12/420,315 US9967590B2 (en) 2008-04-10 2009-04-08 Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
PCT/US2009/040254 WO2009126915A1 (en) 2008-04-10 2009-04-10 Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter

Publications (2)

Publication Number Publication Date
RU2010145539A RU2010145539A (en) 2012-05-20
RU2505938C2 true RU2505938C2 (en) 2014-01-27

Family

ID=46230168

Family Applications (5)

Application Number Title Priority Date Filing Date
RU2010145539/07A RU2505938C2 (en) 2008-04-10 2009-04-10 Distortion-based interpolation depending on transmission rate for video coding based on fixed filter or adaptive filter
RU2010145541/07A RU2477577C2 (en) 2008-04-10 2009-04-10 Interpolation-like filtering of integer pixel positions in video coding
RU2010145524/07A RU2010145524A (en) 2008-04-10 2009-04-10 SYMMETRY FOR INTERPOLATION FILTRATION OF SUB-PIXEL POSITIONS IN VIDEO ENCODING
RU2010145517/07A RU2477576C2 (en) 2008-04-10 2009-04-10 Interpolation filter support for sub-pixel resolution in video coding
RU2010145536/07A RU2479941C2 (en) 2008-04-10 2009-04-10 Prediction techniques for interpolation in video coding

Family Applications After (4)

Application Number Title Priority Date Filing Date
RU2010145541/07A RU2477577C2 (en) 2008-04-10 2009-04-10 Interpolation-like filtering of integer pixel positions in video coding
RU2010145524/07A RU2010145524A (en) 2008-04-10 2009-04-10 SYMMETRY FOR INTERPOLATION FILTRATION OF SUB-PIXEL POSITIONS IN VIDEO ENCODING
RU2010145517/07A RU2477576C2 (en) 2008-04-10 2009-04-10 Interpolation filter support for sub-pixel resolution in video coding
RU2010145536/07A RU2479941C2 (en) 2008-04-10 2009-04-10 Prediction techniques for interpolation in video coding

Country Status (1)

Country Link
RU (5) RU2505938C2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2557755C1 (en) * 2014-02-25 2015-07-27 Открытое акционерное общество "Центр судоремонта "Звездочка" Method for image compression during fractal coding

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2516426B (en) * 2013-07-17 2015-10-07 Gurulogic Microsystems Oy Encoder, decoder and method of operation using interpolation
GB2521828A (en) * 2013-12-23 2015-07-08 Sony Corp Data encoding and decoding
RU2568266C1 (en) * 2014-06-05 2015-11-20 Федеральное государственное казенное военное образовательное учреждение высшего профессионального образования "ВОЕННАЯ АКАДЕМИЯ СВЯЗИ имени Маршала Советского Союза С.М. Буденного" Министерства обороны Российской Федерации Video encoding and decoding method
US10200711B2 (en) * 2015-03-27 2019-02-05 Qualcomm Incorporated Motion vector derivation in video coding
EP3684055A1 (en) 2017-09-15 2020-07-22 Sony Corporation Image processing device and method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040076333A1 (en) * 2002-10-22 2004-04-22 Huipin Zhang Adaptive interpolation filter system for motion compensated predictive video coding
EP1432249A1 (en) * 2001-09-18 2004-06-23 Matsushita Electric Industrial Co., Ltd. Image encoding method and image decoding method
EP1641274A1 (en) * 2004-09-23 2006-03-29 Matsushita Electric Industrial Co., Ltd. VIDEO CODING EMPLOYING An image DE-GRAINING LOOP-FILTER
WO2006108654A2 (en) * 2005-04-13 2006-10-19 Universität Hannover Method and apparatus for enhanced video coding

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266373B1 (en) * 1998-06-15 2001-07-24 U.S. Philips Corporation Pixel data storage system for use in half-pel interpolation
US6950469B2 (en) * 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
EP1466477B1 (en) * 2002-01-14 2013-02-27 Nokia Corporation Coding dynamic filters
EP1603338A4 (en) * 2003-03-10 2007-12-05 Mitsubishi Electric Corp Video signal encoding device and video signal encoding method
RU2305377C2 (en) * 2003-05-20 2007-08-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Method for decreasing distortion of compressed video image and device for realization of the method
EP1578137A2 (en) * 2004-03-17 2005-09-21 Matsushita Electric Industrial Co., Ltd. Moving picture coding apparatus with multistep interpolation process
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1432249A1 (en) * 2001-09-18 2004-06-23 Matsushita Electric Industrial Co., Ltd. Image encoding method and image decoding method
US20040076333A1 (en) * 2002-10-22 2004-04-22 Huipin Zhang Adaptive interpolation filter system for motion compensated predictive video coding
EP1641274A1 (en) * 2004-09-23 2006-03-29 Matsushita Electric Industrial Co., Ltd. VIDEO CODING EMPLOYING An image DE-GRAINING LOOP-FILTER
WO2006108654A2 (en) * 2005-04-13 2006-10-19 Universität Hannover Method and apparatus for enhanced video coding

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2557755C1 (en) * 2014-02-25 2015-07-27 Открытое акционерное общество "Центр судоремонта "Звездочка" Method for image compression during fractal coding

Also Published As

Publication number Publication date
RU2010145524A (en) 2012-05-20
RU2010145517A (en) 2012-05-20
RU2010145536A (en) 2012-05-20
RU2010145541A (en) 2012-05-20
RU2479941C2 (en) 2013-04-20
RU2477576C2 (en) 2013-03-10
RU2010145539A (en) 2012-05-20
RU2477577C2 (en) 2013-03-10

Similar Documents

Publication Publication Date Title
US11683519B2 (en) Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
KR101202632B1 (en) Prediction techniques for interpolation in video coding
KR101242958B1 (en) Interpolation filter support for sub-pixel resolution in video coding
KR101250115B1 (en) Symmetry for interpolation filtering of sub-pixel positions in video coding
KR101214021B1 (en) Interpolation-like filtering of integer-pixel positions in video coding
RU2505938C2 (en) Distortion-based interpolation depending on transmission rate for video coding based on fixed filter or adaptive filter