RU2575418C2 - Filter of central band adaptive shift for video coding - Google Patents

Filter of central band adaptive shift for video coding Download PDF

Info

Publication number
RU2575418C2
RU2575418C2 RU2014122539/08A RU2014122539A RU2575418C2 RU 2575418 C2 RU2575418 C2 RU 2575418C2 RU 2014122539/08 A RU2014122539/08 A RU 2014122539/08A RU 2014122539 A RU2014122539 A RU 2014122539A RU 2575418 C2 RU2575418 C2 RU 2575418C2
Authority
RU
Russia
Prior art keywords
bands
value
video
determining
groups
Prior art date
Application number
RU2014122539/08A
Other languages
Russian (ru)
Other versions
RU2014122539A (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 US13/646,102 external-priority patent/US10051289B2/en
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2014122539A publication Critical patent/RU2014122539A/en
Application granted granted Critical
Publication of RU2575418C2 publication Critical patent/RU2575418C2/en

Links

Images

Abstract

FIELD: physics.
SUBSTANCE: claimed video coder is configured for filtration with adaptive shift of counts. It can define the magnitude of the centre of the set of pixels proceeding from the magnitudes of pixels in the given set. Besides, it can divide the bands of pixel magnitudes into groups on the basis of said magnitude of the centre to define the shift of said bands on the basis of said groups.
EFFECT: higher efficiency of coding due to adaptive determination of groups of bands.
37 cl, 7 dwg

Description

Данная заявка испрашивает приоритет по предварительной заявке США №61/556,085, поданной 04 ноября 2011 года, содержание которой целиком включено в данный документ по ссылке.This application claims priority to provisional application US No. 61/556,085, filed November 4, 2011, the contents of which are incorporated herein by reference.

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

Настоящее изобретение относится в общем к видеокодированию и в, частности, относится к фильтрации с адаптивным смещением отсчетов (SAO) в процессе видеокодирования.The present invention relates generally to video coding and, in particular, relates to filtering with adaptive sample offset (SAO) in a video coding process.

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

Возможности цифрового видео могут быть включены в устройства самого широкого применения, в том числе цифровые телевизионные приемники, системы прямого цифрового вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), ноутбуки или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые «смартфоны», устройства для проведения телеконференций, устройства потокового видео и т.п. Устройства цифрового видео реализуют различные методики сжатия видео, которые, например, описаны в стандартах, определенных как MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, стандарт усовершенствованного видеокодирования (AVC), стандарт высокоэффективного видеокодирования (HEVC), находящийся в процессе разработки, а также расширения указанных стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или запоминать цифровую видеоинформацию более эффективно посредством реализации указанных методик сжатия видео.Digital video capabilities can be incorporated into a wide range of applications, including digital television sets, direct digital broadcasting systems, wireless broadcasting systems, personal digital assistants (PDAs), laptops or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite radiotelephones, so-called “smartphones”, devices for I'm holding newsgroups, video streaming devices, etc. Digital video devices implement various video compression techniques, which, for example, are described in standards defined as MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Advanced Standard video coding (AVC), a high-performance video coding (HEVC) standard under development, as well as an extension of these standards. Video devices can transmit, receive, encode, decode and / or store digital video information more efficiently by implementing these video compression techniques.

Согласно методикам сжатия видео выполняется пространственное (внутрикадровое, интра-) предсказание и/или временное (межкадровое, интер-) предсказание с целью уменьшения или исключения избыточности, свойственной видеопоследовательностям. Для видеокодирования на блочной основе видеослайс (то есть, видеокадр или часть видеокадра) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками кодирования (CU), и/или узлами кодирования. Видеоблоки в слайсе изображения с интра-кодированием (I) кодируют с использованием пространственного предсказания применительно к опорным отсчетам в соседних блоках одного и того же изображения. В видеоблоках в слайсе изображения с интер-кодированием (P или B) может использоваться пространственное предсказание в отношении опорных отсчетов в соседних блоках одного и того же изображения или временное предсказание в отношении опорных отсчетов других опорных изображений. Изображения могут называться кадрами, а опорные изображения могут называться опорными кадрами.According to video compression techniques, spatial (intra-frame, intra-) prediction and / or temporal (inter-frame, inter-) prediction is performed to reduce or eliminate the redundancy inherent in video sequences. For block-based video coding, a video slice (i.e., a video frame or part of a video frame) can be divided into video blocks, which can also be called treeblocks, coding units (CUs), and / or coding units. Video blocks in an intra-coded (I) image slice are encoded using spatial prediction as applied to reference samples in neighboring blocks of the same image. In video blocks in an inter-coded image slice (P or B), spatial prediction for reference samples in adjacent blocks of the same image or temporal prediction for reference samples of other reference images can be used. Images may be referred to as frames, and reference images may be referred to as reference frames.

В результате пространственного или временного предсказания получают предсказанный блок для блока, подлежащего кодированию. Остаточные данные представляют пиксельную разность между исходным блоком, подлежащим кодированию, и предсказанным блоком. Блок с интер-кодированием кодируют в соответствии с вектором движения, который указывает блок опорных отсчетов, образующих предсказанный блок, и остаточные данные, указывающие различие между кодированным блоком и предсказанным блоком. Блок с интра-кодированием кодируют в соответствии с режимом интра-кодирования и остаточными данными. Для дальнейшего сжатия остаточные данные можно преобразовать из пиксельной области в область преобразования, в результате чего получают остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, изначально скомпонованные в двумерной матрице, можно сканировать для формирования одномерного вектора коэффициентов преобразования. Затем можно применить энтропийное кодирование для достижения еще большего сжатия.As a result of spatial or temporal prediction, a predicted block is obtained for the block to be encoded. The residual data represents the pixel difference between the source block to be encoded and the predicted block. An inter-coded block is encoded in accordance with a motion vector that indicates a block of reference samples forming a predicted block and residual data indicating the difference between the coded block and the predicted block. The intra-encoded block is encoded in accordance with the intra-encoding mode and residual data. For further compression, the residual data can be converted from the pixel region to the transformation region, resulting in residual transformation coefficients, which can then be quantized. The quantized transform coefficients, originally arranged in a two-dimensional matrix, can be scanned to form a one-dimensional vector of transform coefficients. Then you can apply entropy coding to achieve even greater compression.

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

Здесь в общем случае описываются методики, относящиеся к фильтрации с адаптивным смещением отсчетов (SAO), и, в частности, описываются методики для сигнализации в закодированном битовом потоке о коэффициентах, используемых для SAO фильтрации на основе полос. В данном изобретении описываются методики для адаптивного определения группировок полос на основе значения центра, и использование определенных групп для сигнализации о значениях смещения для упомянутых полос.Here, in the general case, techniques related to adaptive sampling bias (SAO) filtering are described, and in particular, techniques for signaling the coefficients used for band-based SAO filtering are described in the encoded bitstream. This invention describes techniques for adaptively determining band groups based on a center value, and using certain groups to signal offset values for said bands.

В одном примере способ кодирования видеоданных включает в себя определение значения центра для набора пикселей, причем значение центра основано на значениях указанных пикселей; разделение полос значений пикселей на группы на основе значения центра; и определение значений смещения для указанных полос на основе указанных групп.In one example, a video encoding method includes determining a center value for a set of pixels, the center value being based on the values of said pixels; dividing the bands of pixel values into groups based on the center value; and determining bias values for said bands based on said groups.

В другом примере устройство видеокодирования включает в себя видеокодер, сконфигурированный для определения значения центра для набора пикселей, причем значение центра основано на значениях указанных пикселей; разделения полос пиксельных значений на группы на основе значения центра; и определения значений смещения для указанных полос на основе указанных групп.In another example, a video coding apparatus includes a video encoder configured to determine a center value for a set of pixels, the center value being based on the values of said pixels; dividing the bands of pixel values into groups based on the center value; and determining bias values for said bands based on said groups.

В еще одном примере в компьютерно-читаемом запоминающем носителе хранятся команды, которые инициируют определение одним или более центральными процессорами значения центра для набора пикселей, причем значение центра основано на значениях указанных пикселей; разделение одним или более процессорами полос значений пикселей на группы на основе значения центра; и определение одним или более процессорами значений смещения для указанных полос на основе указанных групп.In yet another example, instructions are stored in a computer-readable storage medium that initiate the determination by one or more central processors of a center value for a set of pixels, the center value being based on the values of said pixels; dividing by one or more processors the bands of pixel values into groups based on the center value; and determining by one or more processors the offset values for said bands based on said groups.

В следующем примере устройство для кодирования видеоданных включает в себя средство для определения значения центра для набора пикселей, причем значение центра основано на значениях указанных пикселей; средство для разделения полос значений пикселей на группы на основе значения центра; и средство для определения значений смещения для указанных полос на основе указанных групп.In the following example, a device for encoding video data includes means for determining a center value for a set of pixels, the center value being based on the values of said pixels; means for dividing the bands of pixel values into groups based on the center value; and means for determining bias values for said bands based on said groups.

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

Фиг. 1 - блок-схема, иллюстрирующая приведенную в качестве примера систему видеокодирования и декодирования, в которой могут использоваться методики фильтрации для адаптивного смещения отсчетов, описанные в настоящем изобретении;FIG. 1 is a block diagram illustrating an example video coding and decoding system in which filtering techniques for adaptive sample biasing described in the present invention can be used;

фиг. 2 - примеры, раскрывающие классификацию краевых смещений для фильтрации с адаптивным смещением отсчетов на основе краев;FIG. 2 is an example of a classification of edge offsets for filtering with adaptive edge offset sampling;

фигуры 3А и 3В - примеры группирования полос для классификации смещений полос для фильтрации с адаптивным смещением отсчетов на основе полос;Figures 3A and 3B are examples of band grouping for classifying band offsets for filtering with adaptive band offset samples;

фиг. 4 - блок-схема, иллюстрирующая примерный видеокодер, который может реализовать описанные в данном изобретении методики фильтрации с адаптивным смещением отсчетов;FIG. 4 is a flowchart illustrating an example video encoder that can implement adaptive sample offset filtering techniques described in the present invention;

фиг. 5 - блок-схема, иллюстрирующая примерный видеодекодер, который может реализовать описанные в данном изобретении методики фильтрации с адаптивным смещением отсчетов;FIG. 5 is a flowchart illustrating an example video decoder that can implement the adaptive sample offset filtering techniques described in this invention;

фиг. 6 - блок-схема, иллюстрирующая описанные в данном изобретении методики фильтрации с адаптивным смещением отсчетов.FIG. 6 is a flowchart illustrating adaptive bias filtering techniques described herein.

ПОДРОБНОЕ ОПИСАНИЕDETAILED DESCRIPTION

Фильтрация с адаптивным смещением отсчетов (SAO) относится к типу контурной фильтрации, используемой в видеокодировании. В общем случае добавление значений смещения к пикселям в видеокадре (например, в восстановленном изображении) в некоторых случаях может улучшить кодирование без значительного увеличения непроизводительной нагрузки в битах, необходимой для хранения или передачи закодированных видеоданных. Повышение эффективности кодирования, потенциально являющееся результатом использования SAO фильтрации, может заключаться, например, в том, что декодированное изображение будет иметь более близкое сходство с исходным изображением. Как более подробно объясняется ниже, методики SAO позволяют применять разные значения смещения для разных пикселей (или блоков пикселей) в зависимости от классификационной метрики пикселя (или блока), такой как метрика краев, метрика полос или метрики других типов.Adaptive Sampling Offset (SAO) filtering is a type of loop filtering used in video coding. In general, adding offset values to pixels in a video frame (for example, in a reconstructed image) can in some cases improve coding without significantly increasing the bit-productive bit load required to store or transmit encoded video data. An increase in coding efficiency, potentially resulting from the use of SAO filtering, may lie, for example, in that the decoded image will have a closer resemblance to the original image. As explained in more detail below, SAO techniques allow you to apply different offset values for different pixels (or blocks of pixels) depending on the classification metric of a pixel (or block), such as a border metric, strip metric, or other types of metrics.

Как более подробно объясняется ниже, в некоторых конфигурациях блок SAO фильтра может быть сконфигурирован для выполнения фильтрации со смещением двух типов, обычно называемых в данном описании как фильтрация со смещением полос и фильтрация со смещением краев. Блок SAO фильтра иногда может также не применять смещение, что само по себе можно рассматривать в качестве фильтрации со смещением третьего типа. О типе фильтрации со смещением, применяемой SAO фильтром, может быть сообщено видеодекодеру в явном или в неявном виде. При применении фильтрации со смещением краев пиксели можно классифицировать на основе информации о крае блока кодирования, а смещение для пикселей может быть определено на основе классификации краев. Как более подробно объясняется со ссылками на фиг. 2, как правило, имеется четыре варианта SAO на основе краев, где значение пикселя сравнивают с двумя из его восьми соседних пикселей. Какие два пикселя использовать для сравнения, зависит от используемого варианта смещения на основе края. Смещение добавляют к значению пикселя, исходя из разницы в величине.As explained in more detail below, in some configurations, the SAO filter unit may be configured to perform bias filtering of two types, commonly referred to herein as band offset filtering and edge offset filtering. The SAO filter unit sometimes also may not apply an offset, which in itself can be considered as filtering with a third type of offset. The type of offset filtering used by the SAO filter can be reported to the video decoder explicitly or implicitly. When applying filtering with edge offsets, pixels can be classified based on the information about the edge of the coding block, and the offset for pixels can be determined based on the classification of edges. As explained in more detail with reference to FIG. 2, there are usually four edge-based SAOs, where the pixel value is compared with two of its eight neighboring pixels. Which two pixels to use for comparison depends on the edge offset option used. The offset is added to the pixel value based on the difference in magnitude.

При использовании фильтрации со смещением полос пиксели можно отнести к разным полосам в зависимости от значения пикселя, например, значения интенсивности, причем каждая полоса имеет соответствующее смещение. Полоса включает в себя диапазон пиксельных значений. Например, пиксельные значения в диапазоне от 0 до 255 можно разбить на 32 равные полосы (обозначенные от 0 до 31), так что пиксельные значения 0-7 будут представлять первую полосу, пиксельные значения 8-15 буду представлять вторую полосу, пиксельные значения 16-23 будут представлять третью полосу и так далее для всех тридцати двух полос. Эти полосы можно использовать для определения того, какое конкретное значение смещения применить к пикселю или к группе пикселей. Например, если пиксель имеет значение 10 (которое находится в пределах второй полосы, то есть, в диапазоне значений 8-15, в приведенном выше примере), то тогда к пиксельному значению можно добавить смещение, связанное со второй полосой.When using filtering with strip offset, the pixels can be assigned to different stripes depending on the pixel value, for example, the intensity value, and each strip has a corresponding offset. The bar includes a range of pixel values. For example, pixel values in the range from 0 to 255 can be divided into 32 equal bands (designated from 0 to 31), so that pixel values 0-7 will represent the first strip, pixel values 8-15 will represent the second strip, pixel values 16- 23 will represent the third lane and so on for all thirty-two lanes. These stripes can be used to determine which specific offset value to apply to a pixel or group of pixels. For example, if the pixel has a value of 10 (which is within the second strip, that is, in the range of values 8-15, in the above example), then the offset associated with the second strip can be added to the pixel value.

В целях сигнализации и формирования смещений для различных полос, эти полосы можно сгруппировать в две или более группы. Для фильтрации со смещением полос пиксели, например, могут быть отнесены к тридцати двум полосам (полосы 0-31), как было описано выше, а эти полосы можно сгруппировать в две группы (например, две группы из шестнадцати полос, одну группу из четырех полос и одну группу из двадцати восьми полос, одну группу из восьми полос и одну группу из двадцати четырех полос, либо использовать другие варианты группировки). Эти варианты группировки полос можно использовать для определения порядка, в котором будет выполняться сигнализация о значениях смещения для указанных полос в закодированном битовом видеопотоке, и/или их можно использовать для определения того, имеет ли конкретная полоса значение смещения, отличное от нуля. Сигнализация о смещении для указанных полос может осуществляться с использованием различных методик кодирования, согласно которым сигнализация о текущем значении передается в виде разности между текущим значением и предыдущим значением. Экономия бит, достигаемая в результате использования указанных методик кодирования, в некоторых случаях может зависеть от порядка выполнения сигнализации об упомянутых значениях. Например, более существенная экономия бит может быть достигнута в случаях, когда близкие значения смещения передаются в качестве сигнализации последовательно. В некоторых случаях можно положить, что все значения смещения для конкретной группы, например, упомянутой второй группы, равны нулю.In order to signal and create offsets for different bands, these bands can be grouped into two or more groups. For filtering with strip shifting, pixels, for example, can be assigned to thirty-two bands (bands 0-31), as described above, and these bands can be grouped into two groups (for example, two groups of sixteen bands, one group of four bands and one group of twenty-eight bands, one group of eight bands and one group of twenty-four bands, or use other grouping options). These banding options can be used to determine the order in which the offset values are signaled for the specified bands in the encoded video bitstream, and / or they can be used to determine if a particular band has a non-zero offset value. The offset signaling for the indicated bands can be carried out using various coding techniques, according to which the current value signaling is transmitted as the difference between the current value and the previous value. The bit savings achieved as a result of using the indicated coding techniques, in some cases, may depend on the order of signaling about the mentioned values. For example, more significant bit savings can be achieved in cases where close offset values are transmitted as signaling in series. In some cases, it can be assumed that all bias values for a particular group, for example, the second group, are zero.

Согласно некоторым методикам указанные варианты группировки полос являются статическими. Например, согласно одной методике шестнадцать средних полос (полосы 8-23) всегда образуют одну группу из шестнадцати полос, в то время как восемь полос слева (полосы 0-7) и восемь полос справа (полосы 24-31) образуют вторую группу из шестнадцати полос. В данном изобретении описываются методики для динамического определения вариантов группировки полос. Как более подробно объясняется ниже, видеокодер или видеодекодер могут динамически определить вариант группировки полос путем динамического определения значения центра на основе значений пикселей. В некоторых конфигурациях сигнализация, указывающая значение центра, может быть обеспечена в закодированном битовом видеопотоке, так что видеодекодеру не придется определять значение центра на основе значений пикселей, а вместо этого он может определить это значение пикселя на основе сигнализации в явном виде, представленной в битовом потоке. Указанное значение центра можно использовать для определения первой группы полос, а остальные полосы могут образовать вторую группу полос. Как будет ясно из приведенных ниже примеров, термин «значение центра», используемый в данном изобретении, обычно относится к любому значению, которое можно использовать для выравнивания или для приблизительного выравнивания центра группы полос по конкретному значению пикселя. Таким образом, используемый здесь термин «значение центра», может относиться к конкретному значению пикселя, по которому выравнивается центр группы полос, или может представлять собой какое-либо другое значение, например, начальное значение пикселя или конечное значение пикселя для полосы или группы полос. В некоторых случаях, в отличие от идентификации значения пикселя, значение центра может идентифицировать конкретную полосу в качестве первой полосы группы, последней полосы группы, либо представлять иную идентификацию, на основе которой центр группы полос можно выровнять по конкретному пиксельному значению.According to some techniques, these banding options are static. For example, according to one technique, sixteen middle bands (bands 8-23) always form one group of sixteen bands, while eight bands on the left (bands 0-7) and eight bands on the right (bands 24-31) form a second group of sixteen stripes. This invention describes techniques for dynamically determining band grouping options. As explained in more detail below, a video encoder or video decoder can dynamically determine a banding option by dynamically determining a center value based on pixel values. In some configurations, signaling indicating the center value can be provided in an encoded video bitstream, so that the video decoder does not have to determine the center value based on pixel values, but instead can determine this pixel value based on the signaling in an explicit form presented in the bitstream . The indicated center value can be used to determine the first group of bands, and the remaining bands can form a second group of bands. As will be clear from the examples below, the term “center value” as used in this invention usually refers to any value that can be used to align or approximate the center of a group of stripes to a specific pixel value. Thus, the term “center value” as used herein may refer to a specific pixel value at which the center of the band group is aligned, or may be some other value, for example, the initial pixel value or the final pixel value for a band or group of bands. In some cases, as opposed to identifying a pixel value, the center value can identify a particular strip as the first band of the group, the last band of the group, or represent another identification based on which the center of the group of bands can be aligned with a specific pixel value.

Динамическое определение вариантов группировки полос в некоторых случаях улучшает сигнализацию о коэффициентах смещения для SAO фильтрации и таким образом может повысить качество видеокодирования в целом. Такое динамическое определение вариантов группировки полос можно также использовать для определения того, для каких групп полос SAO фильтрация будет наиболее выгодной с точки зрения качества видеокодирования, в предположении, что другие полосы имеют нулевое значение смещения.Dynamic determination of band grouping options in some cases improves signaling of offset coefficients for SAO filtering and thus can improve the quality of video coding as a whole. Such a dynamic determination of band grouping options can also be used to determine for which SAO band groups filtering would be most beneficial in terms of video coding quality, assuming other bands have a zero offset value.

На фиг. 1 представлена блок-схема, где показан пример системы видеокодирования и декодирования, в которой могут быть использованы методики адаптивного SAO, описанные в настоящем изобретении. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое формирует закодированные видеоданные, подлежащие в дальнейшем декодированию устройством-адресатом 14. Устройство-источник 12 и устройство-адресат 14 могут содержать любое из самых разных устройств, в том числе, настольный компьютер, ноутбук (то есть «лэптоп»), планшетный компьютер, телевизионную приставку, телефонную трубку, такую как так называемый «смартфон», так называемый «смартпад», телевизионный приемник, камеру, устройство отображения, цифровой медиаплеер, видеоигровую консоль, устройство потокового видео или т.п. В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут быть оборудованы средствами беспроводной связи.In FIG. 1 is a flowchart showing an example of a video coding and decoding system in which adaptive SAO techniques described in the present invention can be used. As shown in FIG. 1, the system 10 includes a source device 12 that generates encoded video data to be further decoded by the destination device 14. The source device 12 and the destination device 14 may include any of a variety of devices, including a desktop computer, laptop (that is, “laptop”), tablet computer, television set-top box, handset, such as the so-called “smartphone”, the so-called “smartpad”, television receiver, camera, display device, digital media player, video game console l, streaming video or the like In some cases, source device 12 and destination device 14 may be equipped with wireless communications.

Устройство-адресат 14 может принимать закодированные видеоданные, подлежащие декодированию, через линию 16 связи. Линия 16 связи может содержать среду или устройство любого типа, способное перемещать закодированные видеоданные от устройства-источника 12 на устройство-адресат 14. В одном примере линия 16 связи может содержать среду связи, позволяющую устройству-источнику 12 передавать закодированные видеоданные непосредственно на устройство-адресат 14 в режиме реального времени. Кодированные видеоданные могут быть модулированы в соответствии со стандартом связи, таким как протокол беспроводной связи, и могут передаваться на устройство-адресат 14. Среда связи может содержать любую среду проводной или беспроводной связи, например, радиочастотный (RF) спектр или одна или более физических линий передачи. Среда связи может составлять часть сети пакетной передачи, такой как локальная сеть, региональная сеть или глобальная сеть, например Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для осуществления связи между устройством-источником 12 и устройством-адресатом 14.The destination device 14 may receive encoded video data to be decoded via communication line 16. Communication line 16 may comprise a medium or device of any type capable of transferring encoded video data from source device 12 to destination device 14. In one example, communication line 16 may include communication medium allowing source device 12 to transmit encoded video data directly to destination device 14 in real time. The encoded video data may be modulated in accordance with a communication standard, such as a wireless communication protocol, and may be transmitted to a destination device 14. The communication medium may comprise any wired or wireless communication medium, for example, a radio frequency (RF) spectrum or one or more physical lines transmission. A communication medium may form part of a packet network, such as a local area network, a regional network, or a wide area network, such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful for communicating between the source device 12 and the destination device 14.

В качестве альтернативы закодированные данные могут выводиться из выходного интерфейса 22 в запоминающее устройство 32. Аналогичным образом, к закодированным данным возможен доступ со стороны запоминающего устройства 32 через входной интерфейс. Запоминающее устройство 32 может включать в себя любой запоминающий носитель из числа самых разных распределенных или локально доступных носителей данных, таких как накопитель на жестком диске, диски типа Blu-ray, диски DVD, диски CD, флэш-память, энергозависимая или энергонезависимая память, либо любой другой подходящий цифровой запоминающий носитель для хранения закодированных видеоданных. В еще одном примере запоминающее устройство 32 может соответствовать файловому серверу или другому промежуточному запоминающему устройству, которое может хранить закодированное видео, сформированное устройством-источником 12. Устройство-адресат 14 может обращаться к запомненным в запоминающем устройстве 32 видеоданным, используя потоковую передачу или загрузку видеоданных. Файловый сервер может представлять собой сервер любого типа, способный запоминать и хранить закодированные видеоданные и передавать их на устройство-адресат 14. Примеры файловых серверов включают в себя Веб-сервер (например, для Веб-сайта), FTP сервер, подключенные к сети запоминающие устройства (NAS) или локальный накопитель на диске. Устройство-адресат 14 может иметь доступ к закодированным видеоданным через любое стандартное соединение для передачи данных, в том числе Интернет соединение. Такое соединение может включать в себя беспроводной канал (например, Wi-Fi соединение), проводное соединение (например, DSL, кабельный модем и т.д.), либо комбинацию обоих видов соединений, которая подходит для доступа к кодированным видеоданным, хранящимся на файловом сервере. Передача закодированных видеоданных из запоминающего устройства 32 может быть реализована в виде потоковой передачи, передачи с выгрузкой или их комбинации.Alternatively, the encoded data may be output from the output interface 22 to the storage device 32. Similarly, encoded data can be accessed from the storage device 32 through the input interface. Storage device 32 may include any storage medium from a wide variety of distributed or locally available storage media, such as a hard disk drive, Blu-ray discs, DVD discs, CD discs, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In yet another example, the storage device 32 may correspond to a file server or other intermediate storage device that can store the encoded video generated by the source device 12. The destination device 14 can access the stored video data in the storage device 32 using streaming or downloading video data. A file server can be any type of server capable of storing and storing encoded video data and transferring it to the destination device 14. Examples of file servers include a web server (for example, for a website), an FTP server, network attached storage devices (NAS) or local drive on disk. The destination device 14 may have access to the encoded video data through any standard data connection, including an Internet connection. Such a connection may include a wireless channel (for example, Wi-Fi connection), a wired connection (for example, DSL, cable modem, etc.), or a combination of both types of connections, which is suitable for access to encoded video data stored on a file server. The transmission of the encoded video data from the storage device 32 may be implemented as streaming, uploading, or a combination thereof.

Раскрытые здесь методики не обязательно ограничиваются беспроводными приложениями или установками. Эти методики можно применить к видеокодированию для поддержки любого из разнообразных мультимедийных приложений, таких как эфирное телевизионное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео, например, через Интернет, кодирование цифрового видео для запоминания на носителе данных, декодирование цифрового видео, хранящегося на носителе данных, или другие приложения. В некоторых примерах система 10 может быть сконфигурирована для поддержки однонаправленной или двунаправленной передачи видео для поддержки приложений, таких как потоковое видео, видео воспроизведение, видеовещание и/или видеотелефония.The techniques disclosed herein are not necessarily limited to wireless applications or installations. These techniques can be applied to video coding to support any of a variety of multimedia applications, such as terrestrial television broadcasting, cable television, satellite television, streaming video, for example, via the Internet, digital video encoding for storage on a storage medium, digital video decoding, stored on a storage medium, or other applications. In some examples, system 10 may be configured to support unidirectional or bidirectional video transmission to support applications such as video streaming, video playback, video broadcasting and / or video telephony.

В примере по фиг. 1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20 и выходной интерфейс 22. В некоторых случаях выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве-источнике 12 источник 18 видео может включать в себя такой источник, как устройство захвата видео, например, видеокамеру, видеоархив, содержащий ранее захваченное видео, интерфейс подачи видео для приема видео от провайдера видеоконтента и/или системы компьютерной графики для формирования компьютерных графических данных в качестве исходного видео или комбинации указанных источников. Например, если источник 18 видео представляет собой видеокамеру, то устройство-источник 12 и устройство-адресат 14 могут образовать так называемые видеофоны или камерофоны. Однако описанные в данном изобретении методики можно применять к видеокодированию в целом и использовать для беспроводных и/или проводных приложений.In the example of FIG. 1, source device 12 includes a video source 18, video encoder 20, and output interface 22. In some cases, output interface 22 may include a modulator / demodulator (modem) and / or transmitter. In the source device 12, the video source 18 may include a source such as a video capture device, for example, a video camera, a video archive containing previously captured video, a video feed interface for receiving video from a video content provider and / or computer graphics system for generating computer graphics data as the source video or a combination of the specified sources. For example, if the video source 18 is a video camera, then the source device 12 and the destination device 14 can form so-called video phones or camera phones. However, the techniques described in this invention can be applied to video coding in general and used for wireless and / or wired applications.

Захваченное в данный момент, предварительно захваченное или сформированное компьютером видео может быть закодировано видеокодером 20. Закодированные видеоданные могут передаваться непосредственно на устройство-адресат 14 через выходной интерфейс 22 устройства-источника 12. Закодированные видеоданные также (или в качестве альтернативы) могут запоминаться в запоминающем устройстве 32 для обращения к ним в будущем со стороны устройства-адресата 14 или других устройств для декодирования и/или воспроизведения.The currently captured, pre-captured or computer-generated video can be encoded by video encoder 20. The encoded video data can be transmitted directly to the destination device 14 via the output interface 22 of the source device 12. The encoded video data can also (or alternatively) be stored in a storage device 32 for future reference by the destination device 14 or other devices for decoding and / or reproduction.

Устройство-адресат 14 включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В некоторых случаях входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства-адресата 14 принимает закодированные видеоданные через линию 16 связи. Закодированные видеоданные, переданные через линию 16 связи, или предусмотренные в запоминающем устройстве 32, могут включать в себя разнообразные синтаксические элементы, сформированные видеокодером 20 для использования видеодекодером, таким как видеодекодер 30, при декодировании видеоданных. Указанные синтаксические элементы могут быть включены в кодированные видеоданные, передаваемые через среду связи, запоминаемые на носителе данных или запоминаемые на файловом сервере.The destination device 14 includes an input interface 28, a video decoder 30, and a display device 32. In some cases, the input interface 28 may include a receiver and / or modem. The input interface 28 of the destination device 14 receives the encoded video data via the communication line 16. The encoded video data transmitted through the communication line 16, or provided in the storage device 32, may include various syntax elements generated by the video encoder 20 for use by the video decoder, such as the video decoder 30, when decoding the video data. These syntactic elements may be included in encoded video data transmitted through a communication medium, stored on a storage medium or stored on a file server.

Устройство 32 отображения может являться составной частью (или быть внешним) устройства-адресата 14. В некоторых примерах устройство-адресат 14 может включать в себя интегрированное в него устройство отображения, а также быть сконфигурировано для взаимодействия с внешним устройством отображения. В других примерах устройством-адресатом 14 может быть устройство отображения. В общем случае устройство 32 отображения отображает пользователю декодированные видеоданные и может содержать любое из разнообразных устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или устройство отображения другого типа.The display device 32 may be an integral part (or external) of the destination device 14. In some examples, the destination device 14 may include an integrated display device, and may also be configured to interact with an external display device. In other examples, destination device 14 may be a display device. In general, the display device 32 displays decoded video data to a user and may comprise any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.

Видеокодер 20 и видеодекодер 30 могут функционировать согласно стандарту сжатия видео, такому как стандарт высокоэффективного видеокодирования (HEVC), разрабатываемый в настоящее время, и может соответствовать тестовой модели HEVC (HM). Последний проект стандарта HEVC, называемый «HEVC Working Draft 8» или «WD8» описан в документе JCTVC-H1003_d7, Bross и др., «High efficiency video coding (HEVC) text specification draft 8» Объединенной команды разработчиков систем видеокодирования (JCT-VC) стандартов ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 10th Meeting: Stockholm, SE, July 11-20, 2012 года, который по состоянию на 2 октября 2012 года можно скачать по следующей ссылке: http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip.Video encoder 20 and video decoder 30 may operate according to a video compression standard, such as the high performance video coding (HEVC) standard currently being developed, and may conform to the HEVC test model (HM). The latest draft HEVC standard, called “HEVC Working Draft 8” or “WD8,” is described in JCTVC-H1003_d7, Bross et al., “High efficiency video coding (HEVC) text specification draft 8” by the Joint Video Coding Development Team (JCT-VC ) ITU-T standards SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11, 10th Meeting: Stockholm, SE, July 11-20, 2012, which as of October 2, 2012 can be downloaded from the following link: http: // phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip.

В качестве альтернативы видеокодер 20 и видеодекодер 30 могут работать согласно другим коммерческим или промышленным стандартам, таким как стандарт ITU-T H.264, также называемый MPEG-4, часть 10, AVC (усовершенствованное видеокодирование) или расширениям указанных стандартов. Однако методики, раскрытые в данном изобретении, не ограничиваются каким-либо конкретным стандартом кодирования. Другие примеры стандартов сжатия видео включают в себя MPEG-2 и ITU-T H.263.Alternatively, video encoder 20 and video decoder 30 may operate according to other commercial or industrial standards, such as ITU-T H.264, also called MPEG-4, part 10, AVC (Advanced Video Coding), or extensions to these standards. However, the techniques disclosed in this invention are not limited to any particular coding standard. Other examples of video compression standards include MPEG-2 and ITU-T H.263.

Хотя это на фиг. 1 не показано, согласно некоторым аспектам видеокодер 20 и видеодекодер 30 могут быть интегрированы каждый с аудиокодером и аудиодекодером и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексор-демультиплексор) или другие аппаратные и программные средства для кодирования как аудио, так и видео в общем потоке данных или в отдельных потоках данных. В некоторых примерах, если это имеет место, блоки MUX-DEMUX могут соответствовать Протоколу мультиплексора ITU H.223 или другим протоколам, таким как Протокол дэйтаграмм пользователя (UDP).Although this is in FIG. 1 is not shown, in some aspects, video encoder 20 and video decoder 30 can each be integrated with an audio encoder and audio decoder and may include respective MUX-DEMUX units (multiplexer-demultiplexer) or other hardware and software for encoding both audio and video in general data stream or in separate data streams. In some examples, if this is the case, the MUX-DEMUX units may conform to the ITU H.223 Multiplexer Protocol or other protocols, such as User Datagram Protocol (UDP).

Видеокодер 20 и видеодекодер 30 могут быть реализованы каждый в виде любых подходящих схем кодера или декодера, таких как один или более микропроцессоров, процессоры DSP, интегральные схемы ASIC, вентильные матрицы FPGA, дискретные логические схемы, программные средства, аппаратные средства, программно-аппаратные средства или любая их комбинация. При частичной реализации указанных методик программными средствами устройство может хранить команды программного обеспечения на подходящем долговременном компьютерно-читаемом носителе для выполнения этих команд аппаратными средствами с использованием одного или более процессоров, реализующих раскрытые в изобретении методики. Как видеокодер 20, так и видеодекодер 30 могут быть включены в состав одного или более кодеров или декодеров, либо каждый из них может быть интегрирован в объединенном кодере/декодере («CODEC») в соответствующем устройстве.Video encoder 20 and video decoder 30 may each be implemented as any suitable encoder or decoder circuit, such as one or more microprocessors, DSP processors, ASIC integrated circuits, FPGA gate arrays, discrete logic circuits, software, hardware, firmware or any combination thereof. In the partial implementation of these techniques by software, the device can store software instructions on a suitable long-term computer-readable medium to execute these instructions in hardware using one or more processors that implement the techniques disclosed in the invention. Both video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, or each of them may be integrated in a combined encoder / decoder (“CODEC”) in a corresponding device.

JCT-VC работает над созданием стандарта HEVC. Работы по стандартизации HEVC основаны на совершенствуемой модели устройства видеокодирования, называемой тестовой моделью (HM) стандарта HEVC. В модели HM заложено несколько дополнительных возможностей для устройств видеокодирования по сравнению с существующими устройствами, соответствующими, например, стандарту ITU-T H.264/AVC. Например, в то время как стандарт H.264 обеспечивает девять режимов кодирования с интра-предсказанием, модель HM может обеспечить до тридцати трех режимов кодирования с интра-предсказанием.JCT-VC is working to create the HEVC standard. The HEVC standardization work is based on an improved model of a video coding device called the HEVC standard test model (HM). The HM model has several additional features for video coding devices compared to existing devices that comply, for example, with the ITU-T H.264 / AVC standard. For example, while the H.264 standard provides nine intra-prediction coding modes, the HM model can provide up to thirty-three intra-prediction coding modes.

В общем случае рабочая модель HM предполагает, что видеокадр или видеоизображение можно разделить на последовательность древовидных блоков или самых крупных блоков кодирования (LCU), которые включают в себя отсчеты яркости и отсчеты цветности. Назначение древовидного блока такое же, как у макроблока в стандарте H.264. Слайс включает в себя ряд последовательных древовидных блоков в порядке кодирования. Видеокадр или видеоизображение может быть разбито на один или более слайсов. Каждый древовидный блок можно разделить на блоки кодирования (CU) согласно квадродереву. Например, корневой узел квадродерева можно разделить на четыре дочерних узла, а каждый дочерний узел, в свою очередь, может представлять собой родительский узел и быть разделен на четыре других дочерних узла. Конечный не разделенный дочерний узел как концевой узел квадродерева содержит узел кодирования, то есть, кодированный видеоблок. Синтаксические данные, связанные с кодированным битовым потоком могут определять максимальное количество возможных разделений древовидного блока, а также могут определять минимальный размер узлов кодирования.In general, the HM working model assumes that a video frame or video image can be divided into a sequence of treeblocks or the largest coding units (LCUs), which include luminance samples and color samples. The purpose of the treeblock is the same as the macroblock in the H.264 standard. A slice includes a series of consecutive treeblocks in coding order. A video frame or video image may be divided into one or more slices. Each treeblock can be divided into coding units (CUs) according to a quadtree. For example, the root node of a quad tree can be divided into four child nodes, and each child node, in turn, can be a parent node and can be divided into four other child nodes. The final undivided child node as the terminal node of the quad tree contains an encoding node, that is, an encoded video block. The syntax data associated with the encoded bitstream may determine the maximum number of possible tree block partitions, and may also determine the minimum size of the encoding nodes.

Блок CU включает в себя узел кодирования и блоки предсказания (PU) и блоки преобразования (TU), связанные с узлом кодирования. Размер блока CU соответствует размеру узла кодирования, причем он должен иметь квадратную форму. Размер блока CU может находиться в диапазоне от 8×8 пикселей до размера древовидного блока с максимальным размером 64×64 пикселя или более. Каждый блок CU может содержать один или более блоков PU и один или более блоков TU. Синтаксические данные, связанные с блоком CU, могут описывать, например, разбиение блока CU на один или более блоков PU. Режимы разбиения могут различаться в зависимости от того, пропущен ли блок CU, а также от того, в каком из режимов выполняется кодирование: в режиме прямого кодирования, кодирования с интра-предсказанием или с интер-предсказанием. Блоки PU могу быть разделены на части не квадратной формы. Синтаксические данные, связанные с блоком CU, могут также описывать, например, разбиение блока CU на один или более блоков TU согласно квадродереву. Блок TU может иметь квадратную или не квадратную форму.The CU includes coding unit and prediction units (PUs) and transform units (TUs) associated with the coding unit. The size of the CU unit corresponds to the size of the encoding node, and it should have a square shape. The CU block size can range from 8 × 8 pixels to a tree block size with a maximum size of 64 × 64 pixels or more. Each CU may contain one or more PUs and one or more TUs. The syntax data associated with the CU may describe, for example, the partitioning of the CU into one or more PUs. The partitioning modes may differ depending on whether the CU is skipped, as well as on which of the encoding modes: in direct encoding mode, intra prediction encoding or inter prediction. PU blocks can be divided into non-square parts. The syntax data associated with the CU may also describe, for example, splitting a CU into one or more TUs according to a quad tree. A TU may be square or non-square.

Стандарт HEVC позволяет выполнять преобразование в соответствии с блоками TU, которые могут отличаться у разных блоков CU. Размер блоков TU, как правило, основан на размере блоков PU в данном блоке CU, определенном для разделенного блока LCU, хотя это не всегда так. Как правило, блоки TU имеют одинаковый или меньший размер с блоками PU. В некоторых примерах остаточные отсчеты, соответствующие одному блоку CU, можно дополнительно разделить на меньшие блоки, используя структуру квадродерева, известную под названием «остаточное квадродерево» (RQT). Концевые узлы дерева RQT могут называться блоками TU. Значения пиксельной разности, связанные с блоками TU, можно преобразовать для создания коэффициентов преобразования с последующим их квантованием.The HEVC standard allows conversion to be performed according to TUs, which may differ from one CU to another. The size of the TUs is typically based on the size of the PUs in a given CU determined for a split LCU, although this is not always the case. Typically, TUs are the same or smaller with PUs. In some examples, the residual samples corresponding to one CU can be further divided into smaller blocks using a quad tree structure known as a residual quad tree (RQT). The end nodes of the RQT tree may be called TUs. The pixel difference values associated with the TUs can be converted to create transform coefficients, followed by quantization.

В общем случае блок PU включает в себя данные, относящиеся к процессу предсказания. Например, когда блок PU закодирован в режиме интра-предсказания, он может включать в себя данные, описывающие режим интра-предсказания для данного блока PU. В другом примере, когда блок PU закодирован в режиме интер-предсказания, он может включать в себя данные, определяющие вектор движения для данного блока PU. Данные, определяющие вектор движения для блока PU, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешающую способность для вектора движения (например, с точностью до четверти пикселя или с точностью до одной восьмой пикселя), опорное изображение, на которое указывает вектор движения, и/или список опорных изображений (например, список 0, список 1 или список С) для вектора движения.In general, the PU unit includes data related to the prediction process. For example, when the PU block is encoded in intra-prediction mode, it may include data describing the intra-prediction mode for a given PU block. In another example, when the PU is coded in inter-prediction mode, it may include data defining a motion vector for a given PU. The data defining the motion vector for the PU can describe, for example, the horizontal component of the motion vector, the vertical component of the motion vector, the resolution for the motion vector (for example, accurate to a quarter of a pixel or accurate to one eighth of a pixel), a reference image, on which indicates a motion vector and / or a list of reference images (for example, list 0, list 1 or list C) for the motion vector.

В общем случае блок TU используется в процессах преобразования и квантования. Данный блок CU, имеющий один или более блоков PU, может также включать в себя один или более блоков преобразования (TU). Вслед за предсказанием видеокодер 20 может вычислить остаточные значения, соответствующие данному блоку PU. Остаточные значения содержат значения пиксельной разности, которые можно преобразовать в коэффициенты преобразования, выполнить их квантование и сканирование с использованием блоков TU, чтобы создать сериализированные коэффициенты преобразования для энтропийного кодирования. В данном описании, как правило, используется термин «видеоблок» для ссылки на узел кодирования блока CU. В некоторых конкретных случаях в настоящем описании также может использоваться термин «видеоблок» для ссылки на древовидный блок, то есть, блок LCU или блок CU, который включает в себя узел кодирования и блоки PU и TU.In general, the TU is used in the transformation and quantization processes. A given CU having one or more PUs may also include one or more transform units (TUs). Following the prediction, video encoder 20 can calculate the residual values corresponding to this PU. Residual values contain pixel difference values that can be converted to transform coefficients, quantized and scanned using TUs to create serialized transform coefficients for entropy coding. In this description, the term “video block” is generally used to refer to a coding unit of a CU. In some specific cases, the term “video block” may also be used in the present description to refer to a tree block, that is, an LCU or CU, which includes an encoding unit and PUs and TUs.

Видеопоследовательность, как правило, включает в себя ряд видеокадров или видеоизображений. Группа изображений (GOP) в общем случае содержит ряд, состоящий из одного или более видеоизображений. Группа GOP может включать в себя синтаксические данные в заголовке группы GOP, заголовок одного или более изображений или где-либо в другом месте, которые описывают количество изображений, включенных в группу GOP. Каждый слайс изображения может включать в себя синтаксические данные о слайсе, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20 обычно работает с видеоблоками внутри отдельных видеослайсов для кодирования видеоданных. Видеоблок может соответствовать узлу кодирования в блоке CU. Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размерам в соответствии с заданным стандартом кодирования.A video sequence typically includes a series of video frames or video images. A group of images (GOP) generally comprises a series of one or more video images. The GOP may include syntax data in the header of the GOP, the header of one or more images, or elsewhere that describe the number of images included in the GOP. Each image slice may include slice syntax data that describes the encoding mode for the corresponding slice. Video encoder 20 typically operates with video blocks within separate video slices to encode video data. The video block may correspond to a coding unit in a CU. Video blocks may have fixed or variable sizes and may vary in size in accordance with a given coding standard.

Например, модель HM поддерживает предсказание для разных размеров PU. Положим, что размер конкретного блока CU составляет 2Nx2N, модель HM поддерживает интра-предсказание для размеров PU, составляющих 2Nx2N или NxN, и интер-предсказание для симметричных размеров PU, составляющих 2Nx2N, 2NxN, Nx2N или NxN. Модель HM также поддерживает асимметричное разбиение для интра-предсказания для размеров PU, составляющих 2NxnU, 2NxnD, nLx2N и nRx2N. При асимметричном разбиении в одном направлении блока CU разбиение отсутствует, в то время как в другом направлении выполняется разбиение на части в отношении 25% и 75%. Часть блока CU, соответствующая 25% части, обозначена как «n», после которой следует обозначение «Вверх», «Вниз», «Влево» или «Вправо». Таким образом, например, «2NxnU» относится к блоку CU размером 2Nx2N, который разбит по горизонтали на блок PU размером 2Nx0,5N сверху и блок PU размером 2Nx1,5N снизу.For example, the HM model supports prediction for different PU sizes. Assume that the specific CU block size is 2Nx2N, the HM model supports intra prediction for PU sizes of 2Nx2N or NxN, and inter prediction for symmetric PU sizes of 2Nx2N, 2NxN, Nx2N or NxN. The HM model also supports asymmetric intra prediction for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N. With asymmetric splitting in one direction of the CU, there is no splitting, while in the other direction, splitting is performed in the ratio of 25% and 75%. The portion of the CU corresponding to 25% of the portion is indicated as “n”, followed by the designation “Up”, “Down”, “Left” or “Right”. Thus, for example, “2NxnU” refers to a 2Nx2N block CU that is horizontally divided into a 2Nx0.5N PU block from above and a 2Nx1.5N PU block from below.

В данном описании формы «NxN» и «N на N» могут использоваться как взаимозаменяемые для ссылки на пиксельные размеры видеоблока с точки зрения размеров по вертикали и горизонтали. Например, 16×16 пикселей или 16 на 16 пикселей. В общем случае блок размером 16×16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогичным образом блок NxN обычно имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет не отрицательное целое значение. Пиксели в блоке могут быть скомпонованы по строкам и столбцам. Кроме того, блоки не обязательно должны иметь одинаковое количество пикселей в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать NxM пикселей, где M не обязательно равно N.In this description, the forms “NxN” and “N by N” can be used interchangeably to refer to the pixel dimensions of the video block in terms of vertical and horizontal sizes. For example, 16 × 16 pixels or 16 by 16 pixels. In general, a 16 × 16 block will have 16 pixels in the vertical direction (y = 16) and 16 pixels in the horizontal direction (x = 16). Similarly, an NxN block typically has N pixels in the vertical direction and N pixels in the horizontal direction, where N represents a non-negative integer value. Pixels in a block can be arranged in rows and columns. In addition, the blocks do not have to have the same number of pixels in the horizontal direction and in the vertical direction. For example, blocks may contain NxM pixels, where M is not necessarily N.

Вслед за кодированием с интра- или интер-предсказанием с использованием блоков PU блока CU видеокодер 20 может вычислить остаточные данные для блоков TU блока CU. Блоки PU могут содержать пиксельные данные в пространственной области (называемой также пиксельной областью), а блоки TU могут содержать коэффициенты в области преобразования после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлетного преобразования или концептуально подобного преобразования, примененного к остаточным видеоданным. Остаточные данные могут соответствовать пиксельным разностям между пикселями не кодированного изображения и предсказанными значениями, соответствующими блокам PU. Видеокодер 20 может образовать блоки TU, включающие в себя остаточные данные для блока CU, а затем преобразовать блоки TU для создания коэффициентов преобразования для данного блока CU.Following intra or inter prediction coding using the PU units of the CU, video encoder 20 may calculate the residual data for the TUs of the CU. PUs can contain pixel data in a spatial domain (also called a pixel domain), and TUs can contain coefficients in a transform domain after applying a transform, such as a discrete cosine transform (DCT), integer transform, wavelet transform, or a conceptually similar transform applied to residual video data. Residual data may correspond to pixel differences between the pixels of the unencoded image and the predicted values corresponding to the PUs. Video encoder 20 may form TUs including residual data for a CU, and then transform TUs to create transform coefficients for a given CU.

После любого преобразования для создания коэффициентов преобразования видеокодер 20 может выполнить квантование коэффициентов преобразования. Квантование в общем случае относится к процессу, в ходе которого выполняется квантование коэффициентов преобразования с целью возможного сокращения объема данных, используемых для представления указанных коэффициентов, что обеспечивает дополнительное сжатие. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми упомянутыми коэффициентами. Например, n-битовое значение можно округлить в меньшую сторону, получив m-битовое значение во время квантования, где n больше, чем m.After any conversion to create conversion coefficients, video encoder 20 may quantize the conversion coefficients. Quantization generally refers to a process that quantizes transform coefficients in order to possibly reduce the amount of data used to represent these coefficients, which provides additional compression. The quantization process can reduce the bit depth associated with some or all of the mentioned coefficients. For example, an n-bit value can be rounded down to get an m-bit value during quantization, where n is greater than m.

В некоторых примерах видеокодер 20 может использовать заранее определенное сканирование или порядок «сканирования» для сканирования квантованных коэффициентов преобразования, чтобы получить сериализированный вектор, который можно закодировать с использованием энтропийного кодирования. В других примерах видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора видеокодер 20 может выполнить кодирование этого одномерного вектора, используя энтропийное кодирование, например, в соответствии с контекстно-зависимым адаптивным кодированием с переменной длиной слова (CAVLC), контекстно-адаптивным бинарным арифметическим кодированием (CABAC), синтаксически ориентированным адаптивным бинарным арифметическим кодированием (SBAC), вероятностным энтропийным кодированием с интервальным разбиением (PIPE), или другим методом энтропийного кодирования. Видеокодер 20 может также, выполнить энтропийное кодирование синтаксических элементов, связанных с закодированными видеоданными, для использования видеодекодером 30 при декодировании видеоданных.In some examples, video encoder 20 may use a predetermined scan or “scan” order to scan the quantized transform coefficients to obtain a serialized vector that can be encoded using entropy coding. In other examples, video encoder 20 may perform adaptive scanning. After scanning the quantized transform coefficients to form a one-dimensional vector, video encoder 20 can encode this one-dimensional vector using entropy coding, for example, in accordance with context-sensitive adaptive coding with variable word length (CAVLC), context-adaptive binary arithmetic coding (CABAC), syntactically oriented adaptive binary arithmetic coding (SBAC), probabilistic entropy coding with interval partitioning (PIPE), or a friend m entropy encoding method. Video encoder 20 may also perform entropy encoding of syntax elements associated with encoded video data for use by video decoder 30 when decoding video data.

Для выполнения кодирования CABAC видеокодер 20 может присвоить контекст в контекстной модели для символа, подлежащего передаче. Этот контекст может относиться, например, к тому, являются ли соседние значения символа ненулевыми. Для выполнения кодирования CAVLC видеокодер 20 может выбрать код переменной длины для символа, подлежащего передаче. Кодовые слова в VLC могут быть построены так, чтобы относительно более короткие коды соответствовали более вероятным символам, в то время как относительно более длинные коды соответствовали менее вероятным символам. Таким образом, использование кодирования VLC может обеспечить экономное использование бит, например, путем использования кодовых слов одинаковой длины для каждого символа, подлежащего передаче. Определение вероятности может быть основано на контексте, присвоенном данному символу.To perform CABAC encoding, video encoder 20 may assign a context in the context model for the symbol to be transmitted. This context may relate, for example, to whether neighboring symbol values are nonzero. To perform CAVLC encoding, video encoder 20 may select a variable-length code for the character to be transmitted. VLC codewords can be constructed so that relatively shorter codes correspond to more probable characters, while relatively longer codes correspond to less probable characters. Thus, the use of VLC coding can provide economical use of bits, for example, by using codewords of the same length for each character to be transmitted. The definition of probability may be based on the context assigned to this symbol.

В общем случае добавление значений смещения к пикселям в видеокадре в некоторых случаях может повысить качество кодирования. Например, значения смещения могут быть использованы для пикселей восстановленного видеоблока, чтобы компенсировать изменения яркости, ошибки квантования или, в более общем контексте, сделать декодированные данные более похожими на исходные видеоданные. Способы SAO позволяют применять разные значения смещения к разным пикселям (или блокам пикселей) в зависимости от значений пикселя (или блока пикселей). Значение смещения, используемого для пикселя, можно определить на основе значения пикселя. Например, если пиксель имеет значение, находящееся в первой полосе, то тогда к этому пикселю можно применить смещение, связанное с первой полосой. Например, если пиксель имеет значение, находящееся во второй полосе, то тогда к этому пикселю можно применить смещение, связанное со второй полосой, и так далее для всех полос.In general, adding offset values to pixels in a video frame may in some cases improve coding quality. For example, offset values can be used for the pixels of the reconstructed video block to compensate for changes in brightness, quantization errors, or, in a more general context, make the decoded data more similar to the original video data. SAO methods allow you to apply different offset values to different pixels (or blocks of pixels) depending on the values of the pixel (or block of pixels). The offset value used for the pixel can be determined based on the pixel value. For example, if a pixel has a value located in the first strip, then the offset associated with the first strip can be applied to this pixel. For example, if a pixel has a value located in the second strip, then the offset associated with the second strip can be applied to this pixel, and so on for all the stripes.

В реализации SAO одного типа каждый участок (который состоит из набора блоков LCU) может иметь смещение одного из трех типов (лежащих в основе так называемой «классификации пикселей»). Эти три типа смещений таковы: «смещение отсутствует», «тип смещения 0/1 на основе классификации полос», и «тип смещения 0/1/2/3 на основе классификации краев». Каждый тип смещения для классификации полос имеет 16 возможных значений смещения, в то время как каждый тип на основе классификации краев имеет 4 возможных значения смещения. Если для использования для упомянутого участка выбран один из указанных типов смещения, то в закодированном битовом видеопотоке может быть выполнена сигнализация, содержащая информацию, которая указывает соответствующий тип смещения и значения смещения.In an SAO implementation of one type, each section (which consists of a set of LCUs) can have an offset of one of three types (underlying the so-called "pixel classification"). These three types of offsets are: “no offset”, “offset type 0/1 based on strip classification”, and “offset type 0/1/2/3 based on edge classification”. Each type of offset for classifying the bands has 16 possible offset values, while each type based on the classification of edges has 4 possible offset values. If one of the indicated types of bias is selected for use for the aforementioned portion, an alarm may be performed in the encoded video bitstream containing information that indicates the corresponding type of bias and offset values.

На фиг. 2 представлена концептуальная схема, где показаны четыре возможных классификации краев, используемые в одой реализации SAO фильтрации. В примере по фиг. 2 тип смещения края классифицирует каждый пиксель на основе информации о краях. Для каждой классификации краев, показанной на фиг. 2, тип края для текущего пикселя (то есть, конкретного кодируемого в данный момент пикселя) вычисляют путем сравнения значения текущего пикселя (C) со значениями соседних пикселей (1 и 2). При смещении края согласно SAO по классификации «0» (SAO_EO_0) текущий пиксель сравнивают с левым и правым соседними пикселями. При смещении края согласно SAO по классификации «1» (SAO_EO_1) текущий пиксель сравнивают с верхним и нижним соседними пикселями. При смещении края согласно SAO по классификации «2» (SAO_EO_2) текущий пиксель сравнивают с верхним левым и нижним правым соседними пикселями. При смещении края согласно SAO по классификации «3» (SAO_EO_3) текущий пиксель сравнивают с нижним левым и верхним правым соседними пикселями.In FIG. 2 is a conceptual diagram showing four possible edge classifications used in one implementation of SAO filtering. In the example of FIG. 2, an edge offset type classifies each pixel based on edge information. For each edge classification shown in FIG. 2, the edge type for the current pixel (i.e., the particular currently encoded pixel) is calculated by comparing the values of the current pixel (C) with the values of neighboring pixels (1 and 2). When the edge is shifted according to SAO classification “0” (SAO_EO_0), the current pixel is compared with the left and right neighboring pixels. When the edge is shifted according to SAO classification “1” (SAO_EO_1), the current pixel is compared with the upper and lower neighboring pixels. When the edge is shifted according to SAO classification “2” (SAO_EO_2), the current pixel is compared with the upper left and lower right neighboring pixels. When the edge is shifted according to SAO classification “3” (SAO_EO_3), the current pixel is compared with the lower left and upper right neighboring pixels.

Первоначально полагают, что край текущего пикселя относится к типу «нуль». Если значение текущего пикселя C равно значениям обоих, левого и правого, соседних пикселей (1 и 2), то тип края (EdgeType) остается «нулевым». Если значение текущего пикселя больше значения соседнего пикселя 1, то тип края увеличивается на единицу. Если значение текущего пикселя C меньше значения соседнего пикселя 1, то тип края уменьшают на единицу. Аналогичным образом, если текущее значение пикселя С меньшей значения соседнего пикселя С2, то тип края увеличивают на единицу, а, если значение текущего пикселя меньше значения соседнего пикселя 2, то тип края уменьшают на 1.Initially, it is believed that the edge of the current pixel is of type zero. If the value of the current pixel C is equal to the values of both left and right neighboring pixels (1 and 2), then the edge type (EdgeType) remains "zero". If the value of the current pixel is greater than the value of the neighboring pixel 1, then the edge type is increased by one. If the value of the current pixel C is less than the value of the neighboring pixel 1, then the edge type is reduced by one. Similarly, if the current value of pixel C is less than the value of the neighboring pixel C2, then the type of edge is increased by one, and if the value of the current pixel is less than the value of neighboring pixel 2, then the type of edge is reduced by 1.

Текущий пиксель C по существу может иметь следующие типы краев: -1, -1, 0, 1, или 2. Тип края равен -2, если значение текущего пикселя С меньше обоих значений соседних пикселей 1 и 2. Тип края равен -1, если значение текущего пикселя C меньше значения одного соседнего пикселя, но равно значению другого соседнего пикселя. Тип края равен 0, если значение текущего пикселя C совпадает со значениями обоих соседних пикселей, или, если значение текущего пикселя C больше, чем значение одного соседнего пикселя, но меньше, чем другого соседнего пикселя. Тип края равен 1, если значение текущего пикселя C больше, чем значение одного соседнего пикселя, но равно значению другого соседнего пикселя. Тип края равен 2, если значение текущего пикселя C больше обоих значений соседних пикселей 1 и 2. Для каждого ненулевого значения типа края определяют четыре значения смещения и сообщают о них в закодированном битовом видеопотоке для их использования декодером (то есть, coffset-2, coffset-1, coffset1 и coffset2).The current pixel C can essentially have the following types of edges: -1, -1, 0, 1, or 2. The type of edge is -2 if the value of the current pixel C is less than both values of neighboring pixels 1 and 2. The type of edge is -1, if the value of the current pixel C is less than the value of one neighboring pixel, but equal to the value of another neighboring pixel. The edge type is 0 if the value of the current pixel C matches the values of both neighboring pixels, or if the value of the current pixel C is greater than the value of one neighboring pixel, but less than the other neighboring pixel. The edge type is 1 if the value of the current pixel C is greater than the value of one neighboring pixel, but equal to the value of another neighboring pixel. The edge type is 2 if the value of the current pixel C is greater than both neighboring pixel values 1 and 2. For each nonzero value of the edge type, four offset values are determined and reported in the encoded video bitstream for use by the decoder (i.e., coffset -2 , coffset -1 , coffset 1 and coffset 2 ).

В свете приведенного выше описания для каждой классификации смещения краев значения типа края можно вычислить с помощью следующего псевдокода:In light of the above description, for each classification of edge offsets, edge type values can be calculated using the following pseudo-code:

EdgeType=0;EdgeType = 0;

если (C>пикселя 1), то EdgeType=EdgeType+1;if (C> pixel 1), then EdgeType = EdgeType + 1;

если (C<пикселя 1), то EdgeType=EdgeType-1;if (C <pixel 1), then EdgeType = EdgeType-1;

если (C>пикселя 2), то EdgeType=EdgeType+1;if (C> pixel 2), then EdgeType = EdgeType + 1;

если (C<пикселя 2), то EdgeType=EdgeType-1if (C <pixel 2), then EdgeType = EdgeType-1

На фиг. 3А представлена концептуальная схема, где показаны приведенные в качестве примера полосы, основанные на значениях интенсивности. Положим, например, что диапазон значений пикселей составляет 0-255, хотя можно также использовать и другие диапазоны. В указанном примере максимальное значение, показанное на фиг. 3А, равно 255, а каждая из тридцати двух полос, показанных на фиг. 3А, имеет диапазон равный 8. Крайняя левая полоса будет иметь значения пикселей 0-7, следующая полоса будет иметь значения пикселей 8-15, следующая полоса будет иметь значения пикселей 16-23 и так далее, пока не будет достигнута крайняя правая полоса, которая будет иметь значения пикселей 248-255. Что касается смещения полосы, то пиксели классифицируют по разным полосам на основе интенсивности (то есть, для классификации смещения полосы пиксели относят к одной из тридцати двух полос). К пикселю добавляется смещение в зависимости от того, в какой полосе оказалось значение этого пикселя. Например, если пиксель имеет значение 19, то тогда его значение попадают в третью полосу с диапазоном пиксельных значений от 16 о 23. Таким образом, к пиксельному значению 19 будет добавлено смещение, связанное с третьей полосой.In FIG. 3A is a conceptual diagram showing exemplary bands based on intensity values. Assume, for example, that the range of pixel values is 0-255, although other ranges can also be used. In this example, the maximum value shown in FIG. 3A is 255, and each of the thirty-two bands shown in FIG. 3A, has a range of 8. The leftmost lane will have pixel values 0-7, the next lane will have pixel values 8-15, the next lane will have pixel values 16-23, and so on, until the rightmost lane is reached, which will have pixel values of 248-255. As for the strip offset, the pixels are classified into different bands based on the intensity (that is, to classify the strip offset, the pixels are assigned to one of thirty-two stripes). An offset is added to the pixel, depending on which strip the value of that pixel is in. For example, if a pixel has a value of 19, then its value falls into the third strip with a range of pixel values from 16 to 23. Thus, the offset associated with the third strip will be added to the pixel value 19.

Для обеспечения сигнализации о значениях смещения, связанных с каждой полосой, полосы можно разбить на две или более групп. В некоторых реализациях шестнадцать полос в центре (полосы 8-23) относят к одной группе, а остальные полосы (полосы 0-7 и 24-31) относят ко второй группе. Для каждой группы полос определяют 16 значений смещения (то есть, boffset0, …, boffset15), которые сообщаются в закодированном битовом видеопотоке для их использования видеодекодером. В некоторых реализациях можно положить, что все значения смещения для группы, например, второй группы, равны 0, и в этом случае нет необходимости выполнения сигнализации о значениях смещения для такой группы путем включения соответствующей сигнальной информации в указанный закодированный битовый видеопоток.To provide signaling of the offset values associated with each band, the bands can be divided into two or more groups. In some implementations, sixteen bands in the center (bands 8-23) are assigned to one group, and the remaining bands (bands 0-7 and 24-31) are assigned to the second group. For each group of bands 16 define the displacement values (i.e., boffset 0, ..., boffset 15) are communicated in a coded video bitstream for use by the video decoder. In some implementations, it can be assumed that all offset values for a group, for example, a second group, are 0, and in this case there is no need to signal offset values for such a group by including the corresponding signaling information in the specified encoded video bitstream.

Как показано на фиг. 3А шестнадцать средних полос (полосы 8-23) образуют первую группу полос, в то время как восемь находящихся слева полос (полосы 0-7) образуют первый участок второй группы полос, а восемь, находящихся правее полос (полосы 24-31) образуют второй участок второй группы полос. Согласно текущим методикам такая группировка полос является фиксированной. В настоящем изобретении описаны методики для адаптивного определения группировок полос. Например, здесь описаны методики для определения значения центра для набора пикселей на основе значений пикселей. Значение центра можно определить, например, на основе определенного центра для группы полос, а центр для данного группы полос можно определить на основе среднего значения для набора пикселей, значения медианы для набора пикселей либо путем определения пикселя, на который попал пик гистограммы.As shown in FIG. 3A, sixteen middle bands (bands 8-23) form the first group of bands, while eight bands to the left (bands 0-7) form the first portion of the second group of bands, and eight to the right of the bands (bands 24-31) form the second section of the second group of bands. According to current methods, such a grouping of bands is fixed. The present invention describes techniques for adaptively determining band groupings. For example, techniques for determining a center value for a set of pixels based on pixel values are described herein. The center value can be determined, for example, based on a certain center for a group of bands, and the center for a given group of bands can be determined based on the average value for a set of pixels, the median value for a set of pixels, or by determining the pixel that hit the peak of the histogram.

Полосы значений пикселей можно разбить на группы на основе упомянутого значения центра. Например, значение центра можно использовать для определения центра для одной группы полос. Если снова предположить, что имеется тридцать две полосы (полосы 0-31) и две группы, то в первую группу полос могут войти восемь полос справа от центра и восемь полос слева от центра. Оставшиеся шестнадцать полос могут принадлежать второй группе. Таким образом, в отличие от известных методик, согласно которым одна группа всегда состояла из шестнадцати средних полос, в настоящем изобретении раскрыты методики, согласно которым группировки полос могут быть адаптивными на основе значения центра, которое определяют исходя из действительных значений пикселей.Streaks of pixel values can be divided into groups based on said center value. For example, the center value can be used to determine the center for one group of bands. If we again assume that there are thirty-two bands (bands 0-31) and two groups, then the first group of bands may include eight bands to the right of the center and eight bands to the left of the center. The remaining sixteen bands may belong to the second group. Thus, in contrast to the known methods, according to which one group always consisted of sixteen middle bands, the present invention discloses methods according to which the groupings of the bands can be adaptive based on the center value, which is determined based on the actual pixel values.

На фиг. 3В показана одна из множества возможных группировок, которую можно использовать согласно раскрытым здесь методикам. В примере на фиг. 3В центр определен рядом с полосой 18. Соответственно, первая группа полос включает в себя восемь полос слева от центра (полосы 11-18) и восемь полос справа от центра (полосы 19-26). Вторая группа полос включает в себя остальные полосы, к которым в этом примере относятся полосы 0-4 и полосы 27-31. На фиг. 3В представлен один из множества возможных сценариев. Основной целью фиг. 3В является демонстрация того, что согласно раскрытым в настоящем изобретении методикам центр для определения первой группы полос можно определить адаптивно, причем не обязательно, чтобы его местоположение, показанное на фиг. 3А, было фиксированным, либо было зафиксировано в любом другом месте. Методики для определения значения центра и адаптивного определения группировок полос более подробно объясняются ниже.In FIG. 3B shows one of many possible groupings that can be used according to the techniques disclosed herein. In the example of FIG. 3B, the center is defined adjacent to lane 18. Accordingly, the first group of lanes includes eight lanes to the left of the center (lanes 11-18) and eight lanes to the right of the center (lanes 19-26). The second group of bands includes the remaining bands, which in this example include bands 0-4 and bands 27-31. In FIG. 3B presents one of many possible scenarios. The main purpose of FIG. 3B is a demonstration that, according to the techniques disclosed in the present invention, the center for determining the first group of bands can be adaptively determined, and it is not necessary that its location shown in FIG. 3A was fixed, or was fixed elsewhere. The techniques for determining the center value and adaptively determining band groupings are explained in more detail below.

На фиг. 4 представлена блок-схема, иллюстрирующая пример видеокодера, способного выполнять методики SAO фильтрации раскрытые в настоящем изобретении. Видеокодер 20 может выполнять кодирование видеоблоков с интра- и интер-предсказанием в видеослайсах. Кодирование с интра-предсказанием основано на пространственном предсказании с целью уменьшения или устранения пространственной избыточности в данном видеокадре или видеоизображении. Кодирование с интер-предсказанием основано на временном предсказании с целью уменьшения или устранения временной избыточности в смежных кадрах или изображениях видеопоследовательности. Режим интра-предсказания (I режим) может относиться к любому из нескольких режимов сжатия на пространственной основе. Режимы интер-предсказания, такие как режим однонаправленного предсказания (P режим) или двунаправленного предсказания (B режим) могут относиться к любому из нескольких режимов сжатия на временной основе.In FIG. 4 is a flowchart illustrating an example of a video encoder capable of performing SAO filtering techniques disclosed in the present invention. Video encoder 20 may perform encoding of video blocks with intra and inter prediction in video slices. Intra-prediction coding is based on spatial prediction in order to reduce or eliminate spatial redundancy in a given video frame or video image. Inter prediction coding is based on temporal prediction to reduce or eliminate temporal redundancy in adjacent frames or images of a video sequence. The intra prediction mode (I mode) may refer to any of several spatial compression modes. Inter prediction modes such as unidirectional prediction mode (P mode) or bi-directional prediction (B mode) may refer to any of several compression modes on a temporary basis.

В примере по фиг. 4 видеокодер 20 включает в себя модуль 35 разбиения, модуль 41 предсказания, память 64 опорных изображений, сумматор 50, модуль 52 преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 41 предсказания включает в себя модуль 42 оценки движения, модуль 44 компенсации движения и модуль 46 интра-предсказания. Для восстановления видеоблока видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Также имеется деблокирующий фильтр 72 для фильтрации границ блоков с целью удаления артефактов «блочности» из восстановленного видео. Как показано на фиг. 4, видеокодер 20 также включает в себя дополнительные контурные фильтры в том числе фильтр 74 адаптивного смещения отсчетов (SAO) и адаптивный контурный фильтр (ALF) 76. Хотя деблокирующий фильтр 72, SAO фильтр 74 и ALF 76 показаны на фиг. 4 в виде контурных фильтров на входе, в некоторых конфигурациях деблокирующий фильтр 72, SAO фильтр 74 и ALF 76 могут быть реализованы в виде постконтурных фильтров.In the example of FIG. 4, video encoder 20 includes a partition module 35, a prediction module 41, a reference image memory 64, an adder 50, a transform module 52, a quantization module 54, and an entropy encoding module 56. The prediction module 41 includes a motion estimation module 42, a motion compensation module 44, and an intra prediction module 46. To restore the video block, video encoder 20 also includes an inverse quantization module 58, an inverse transform module 60, and an adder 62. There is also a deblocking filter 72 for filtering block boundaries to remove “blocking” artifacts from the reconstructed video. As shown in FIG. 4, video encoder 20 also includes additional loop filters including adaptive sampling bias (SAO) filter 74 and adaptive loop filter (ALF) 76. Although the deblocking filter 72, SAO filter 74, and ALF 76 are shown in FIG. 4 as inlet filters, in some configurations a deblocking filter 72, an SAO filter 74, and an ALF 76 can be implemented as post-loop filters.

Как показано на фиг. 4, видеокодер 20 принимает видеоданные, а модуль 35 разбиения разбивает эти данные на видеоблоки. Это разбиение может также включать в себя разбиение не слайсы, тайлы (мозаичные фрагменты) или другие более крупные блоки, а также разбиение видеоблоков, например, в соответствии со структурой квадродерева, куда входят блоки LCU и CU. Видеокодер 20 в общем случае содержит компоненты, которые выполняют кодирование видеоблоков в видеослайсе, подлежащем кодированию. Слайс может быть разделен на множество видеоблоков (и возможно на наборы видеоблоков, называемые здесь «тайлами»). Модуль 41 предсказания может выбрать один из множества возможных режимов кодирования, например, один из множества режимов кодирования с интра-предсказанием, или один из множества режимов кодирования с интер-предсказанием, для текущего видеоблока на основе результатов ошибок (например, скорости кодирования и уровня искажения). Модуль 41 предсказания может подать результирующий блок, закодированный с интра- или интер-предсказанием, на сумматор 50 для формирования остаточных блочных банных и на сумматор 62 для восстановления закодированного блока с целью его использования в качестве опорного изображения.As shown in FIG. 4, video encoder 20 receives video data, and the splitting module 35 breaks this data into video blocks. This splitting can also include splitting non-slices, tiles (mosaic tiles) or other larger blocks, as well as splitting video blocks, for example, in accordance with the structure of the quad tree, which includes the LCU and CU. Video encoder 20 generally comprises components that encode video blocks in a video slice to be encoded. A slice can be divided into many video blocks (and possibly into sets of video blocks, called “tiles” here). Prediction unit 41 may select one of a plurality of possible coding modes, for example, one of a plurality of intra prediction coding modes, or one of a plurality of inter prediction coding modes, for the current video block based on error results (e.g., coding rate and distortion level ) Prediction module 41 may feed the resulting block encoded with intra- or inter-prediction to adder 50 to form residual block baths and to adder 62 to reconstruct the encoded block for use as a reference image.

Модуль 46 интра-предсказания в модуле 41 предсказания может выполнять кодирование текущего видеоблока с интра-предсказанием по отношению к одному или более соседним блокам в том же кадре или слайсе в качестве текущего блока, подлежащего кодированию, для обеспечения пространственного сжатия. Модуль 42 оценки движения и модуль 44 компенсации движения в модуле 41 предсказания выполняют кодирование с интер-предсказанием текущего видеоблока относительно одного или более предсказанных блоков в одном или более опорных изображениях, чтобы обеспечить временное сжатие.The intra prediction unit 46 in the prediction unit 41 may perform encoding of the current video block with intra prediction with respect to one or more neighboring blocks in the same frame or slice as the current block to be encoded to provide spatial compression. Motion estimation module 42 and motion compensation module 44 in prediction module 41 inter-predict the encoding of the current video block with respect to one or more predicted blocks in one or more reference images to provide temporal compression.

Модуль 42 оценки движения может быть сконфигурирован для определения режима интер-предсказания для видеослайса согласно заранее определенному шаблону для видеопоследовательности. Заранее определенный шаблон может обозначить видеослайсы в упомянутой последовательности как предсказанные слайсы (P слайсы), слайсы, с двунаправленным предсказанием (B слайсы) или обобщенные P/В слайсы (GPB слайсы). Модуль 42 оценки движения и модуль 44 компенсации движения могут быть объединены с высокой степенью интеграции, но они показаны здесь отдельно в концептуальных целях. Оценка движения, выполняемая модулем 42 оценки движения, представляет собой процесс формирования векторов движения, в ходе которого оценивается движение видеоблоков. Вектор движения, например, может указывать смещение PU видеоблока в текущем видеокадре или изображении относительно предсказанного блока в опорном изображении.Motion estimation module 42 may be configured to determine an inter-prediction mode for a video slice according to a predetermined pattern for the video sequence. A predefined template can designate video slices in the sequence as predicted slices (P slices), bidirectional slices (B slices), or generalized P / B slices (GPB slices). Motion estimation module 42 and motion compensation module 44 can be combined with a high degree of integration, but they are shown here separately for conceptual purposes. The motion estimation performed by the motion estimation module 42 is a process of generating motion vectors during which the motion of the video blocks is evaluated. The motion vector, for example, may indicate the offset of the PU of the video block in the current video frame or image relative to the predicted block in the reference image.

Предсказанный блок - это блок, который определяют на основе близкого соответствия блоку PU в видеоблоке, подлежащем кодированию, в виде пиксельной разности, которое можно определить с использованием таких разностных показателей, как сумма абсолютных значений разностей (SAD), сумма квадратичных разностей (SSD) или другая сумма. В некоторых примерах видеокодер 20 может вычислить значения для дробных пиксельных позиций опорных изображений, хранящихся в памяти 64 опорных изображений. Например, видеокодер 20 может интерполировать значения пиксельных позиций с точностью в одну четверть, пиксельных позиций с точностью одна восьмая или пиксельных позиций опорного изображения с другой дробной точностью. Таким образом, модуль 42 оценки движения может выполнить поиск движения относительно целочисленных пиксельных позиций и дробных пиксельных позиций и вывести вектор движения с точностью до долей пикселя.A predicted block is a block that is determined based on the close match of the PU block in the video block to be encoded as a pixel difference, which can be determined using difference indicators such as the sum of the absolute differences (SAD), the sum of the quadratic differences (SSD), or other amount. In some examples, video encoder 20 may calculate values for fractional pixel positions of reference images stored in the reference image memory 64. For example, video encoder 20 may interpolate pixel positions with an accuracy of one quarter, pixel positions with an accuracy of one-eighth, or pixel positions of a reference image with a different fractional accuracy. Thus, the motion estimation module 42 can search for motion relative to integer pixel positions and fractional pixel positions and derive a motion vector accurate to a fraction of a pixel.

Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока в слайсе, закодированном с интер-предсказанием, путем сравнения позиции данного PU с позицией предсказанного блока опорного изображения. Опорное изображение может быть выбрано из первого списка опорных изображений (список 0) или второго списка опорных изображений (список 1), каждый из которых идентифицирует одно или более опорных изображений, хранящихся в памяти 64 опорных изображений. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.Motion estimation module 42 calculates a motion vector for the video block PU in the inter-prediction slice by comparing the position of this PU with the position of the predicted reference image block. The reference image can be selected from the first list of reference images (list 0) or the second list of reference images (list 1), each of which identifies one or more reference images stored in the memory 64 of the reference images. Motion estimation module 42 sends the calculated motion vector to entropy encoding module 56 and motion compensation module 44.

Компенсация движения, выполняемая модулем 44 компенсации движения, может содержать извлечение или формирование предсказанного блока на основе вектора движения, определенного в результате оценки движения, возможно с выполнением интерполяций с точностью до долей пикселя. После получения вектора движения для PU текущего видеоблока модуль 44 компенсации движения может определить местоположение предсказанного блока, на которое указывает вектор движения, в одном из списков опорных изображений. Видеокодер 20 формирует остаточный видеоблок путем вычитания пиксельных значений предсказанного блока из пиксельных значений текущего кодируемого видеоблока, формируя значения пиксельных разностей. Значения пиксельных разностей образуют остаточные данные для рассматриваемого блока, причем они могут включать в себя разностные компоненты яркости и цветности. Сумматор 50 представляет ту компоненту или компоненты, которые выполняют указанную операцию вычитания. Модуль 44 компенсации движения может также сформировать синтаксические элементы, связанные с видеоблоками и видеослайсом, для их использования видеодекодером 30 при декодировании видеоблоков видеослайса.The motion compensation performed by the motion compensation module 44 may comprise extracting or generating a predicted block based on the motion vector determined by the motion estimation, possibly interpolating to within a fraction of a pixel. After obtaining the motion vector for the PU of the current video block, the motion compensation module 44 may determine the location of the predicted block indicated by the motion vector in one of the reference image lists. Video encoder 20 generates a residual video block by subtracting the pixel values of the predicted block from the pixel values of the current encoded video block, generating pixel difference values. The values of the pixel differences form the residual data for the block in question, and they may include difference components of luminance and color. The adder 50 represents that component or components that perform the specified subtraction operation. Motion compensation module 44 may also generate syntax elements associated with video blocks and a video slice for use by video decoder 30 when decoding video blocks of a video slice.

Модуль 46 интра-предсказания может выполнить интра-предсказание на текущем блоке в качестве альтернативы интер-предсказании, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как было описано выше. В частности, модуль 46 интра-предсказания может определить режим интра-предсказания для его использования при кодировании текущего блока. В некоторых примерах модуль 46 интра-предсказания может выполнить кодирование текущего блока, используя различные режимы интра-предсказания, например, во время отдельных проходов кодирования, а модуль 46 интра-предсказания (или модуль 40 выбора режима в некоторых примерах) может выбрать необходимый режим интра-предсказания из тестируемых режимов. Например, модуль 46 интра-предсказания может вычислить значения для пары «скорость-искажение», используя анализ зависимости искажения от скорости на один отсчет для различных тестируемых режимов интра-предсказания и выбрать режим интра-предсказания, имеющий наилучшие характеристики «скорость-искажение» среди тестируемых режимов. Анализ зависимости искажения от скорости в общем случае определяет величину искажения (или ошибки) между закодированным блоком и исходным не закодированным блоком, который был закодирован для создания данного закодированного блока, а также битовую скорость (то есть, количество бит), используемую для создания данного закодированного блока. Модуль 46 интра-предсказания может вычислить соответствующие отношения, исходя из значений упомянутых искажений и скоростей, для различных закодированных блоков, чтобы определить, какой режим интра-предсказания дает наилучшее соотношение «скорость-искажение» для данного блока.The intra prediction unit 46 may perform intra prediction on the current block as an alternative to the inter prediction performed by the motion estimation module 42 and the motion compensation module 44, as described above. In particular, intra prediction module 46 may determine the intra prediction mode for use in encoding the current block. In some examples, intra prediction module 46 may perform coding of the current block using various intra prediction modes, for example, during separate coding passes, and intra prediction module 46 (or mode selection module 40 in some examples) may select the desired intra mode Predictions from test modes. For example, intra prediction module 46 may calculate values for the “speed-distortion” pair using a single-count analysis of the dependence of distortion on speed for various tested intra-prediction modes and select an intra-prediction mode having the best “speed-distortion” characteristics among tested modes. Analysis of the dependence of distortion on speed generally determines the amount of distortion (or error) between the encoded block and the original unencoded block that was encoded to create this encoded block, as well as the bit rate (i.e., the number of bits) used to create this encoded block. The intra prediction unit 46 can calculate the corresponding ratios based on the values of the above distortions and velocities for the various encoded blocks to determine which intra prediction mode gives the best speed-distortion ratio for a given block.

В любом случае после выбора режима интра-предсказания для блока модуль 46 интра-предсказания может предоставить модулю 56 энтропийного кодирования информацию, указывающую выбранный режим интра-предсказания для данного блока. Модуль 56 энтропийного кодирования может выполнить кодирование информации, указывающей выбранный режим интра-предсказания, в соответствии с раскрытыми здесь методиками. Видеокодер 20 может включить данные о конфигурации в передаваемый битовый поток, которые могут содержать множество таблиц с индексами режимов интра-предсказания и множество таблиц с модифицированными индексами режимов интра-предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков и указания о наиболее вероятном режиме интра-предсказания, таблицу индексов режимов интра-предсказания и таблицу модифицированных индексов режимов интра-предсказания для их использования для каждого из упомянутых контекстов.In any case, after selecting the intra prediction mode for the block, the intra prediction module 46 may provide the entropy encoding module 56 with information indicating the selected intra prediction mode for the block. Entropy encoding unit 56 may encode information indicating the selected intra prediction mode in accordance with the techniques disclosed herein. Video encoder 20 may include configuration data in a transmitted bitstream, which may contain a plurality of tables with intra prediction mode indices and a plurality of tables with modified intra prediction mode indices (also called codeword mapping tables), determining encoding contexts for various blocks and indicating on the most probable intra-prediction mode, a table of intra-prediction mode indexes and a table of modified intra-prediction mode indices for their use For each of the mentioned contexts.

После формирования модулем 41 предсказания предсказанного блока для текущего видеоблока посредством интер- либо интра-предсказания видеокодер 20 формирует остаточный видеоблок путем вычитания предсказанного блока из текущего видеоблока. Остаточные видеоданные в остаточном блоке могут быть включены в один или более блоков TU и использованы в модуле 52 преобразования. Модуль 52 преобразования выполняет преобразование остаточных видеоданных в остаточные коэффициенты преобразования, используя такое преобразование, как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование. Модуль 52 преобразования может преобразовать остаточные видеоданные из пиксельной области в область преобразования, например, частотную область.After the predicted block prediction block for the current video block is generated by the inter-prediction module 41, the video encoder 20 generates a residual video block by subtracting the predicted block from the current video block. The residual video data in the residual block may be included in one or more TUs and used in the transform unit 52. The transform unit 52 converts the residual video data to the residual transform coefficients using a transform such as a discrete cosine transform (DCT) or a conceptually similar transform. The transform unit 52 may convert the residual video data from the pixel region to a transform region, for example, a frequency domain.

Модуль 52 преобразования может послать результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования выполняет квантование коэффициентов преобразования для дополнительного уменьшения битовой скорости. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми упомянутыми коэффициентами. Степень квантования можно модифицировать, регулируя параметр квантования. В некоторых примерах модуль 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы, сканирование может быть выполнено модулем 56 энтропийного кодирования.Transform module 52 may send the resulting transform coefficients to quantization module 54. The quantization module 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process can reduce the bit depth associated with some or all of the mentioned coefficients. The degree of quantization can be modified by adjusting the quantization parameter. In some examples, quantization module 54 may then scan a matrix including quantized transform coefficients. Alternatively, scanning may be performed by entropy coding unit 56.

Вслед за квантованием модуль 56 энтропийного кодирования выполняет энтропийное кодирование квантованных коэффициентов преобразования. Например, модуль 56 энтропийного кодирования может выполнить контекстно-зависимое адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное бинарное арифметическое кодирование (CABAC), синтаксически ориентированное адаптивное бинарное арифметическое кодирование (SBAC), вероятностное энтропийное кодирование с интервальным разбиением (PIPE) или использовать другую методологию или методику кодирования. После выполнения модулем 56 энтропийного кодирования закодированный битовый поток может быть передан на видеодекодер 10 или заархивирован для будущей передачи или извлечения видеодекодером 30. Модуль 56 энтропийного кодирования также может выполнить энтропийное кодирование векторов движения и других синтаксических элементов для кодируемого текущего видеослайса.Following quantization, entropy coding unit 56 performs entropy coding of quantized transform coefficients. For example, entropy encoding module 56 may perform context-sensitive adaptive variable-length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntactically oriented adaptive binary arithmetic coding (SBAC), probabilistic entropy coding with interval partitioning (PIPE) or use a different coding methodology or technique. After entropy encoding is performed by module 56, the encoded bitstream can be transmitted to video decoder 10 or archived for future transmission or retrieval by video decoder 30. Entropy encoding module 56 can also perform entropy encoding of motion vectors and other syntax elements for the encoded current video slice.

Модуль 58 обратного квантования и модуль 60 обратного преобразования выполняют соответственно обратное квантование и обратное преобразование для восстановления остаточного блока в пиксельной области для использования в дальнейшем в качестве опорного блока опорного изображения. Модуль 44 компенсации движения может вычислить опорный блок путем добавления остаточного блока к предсказанному блоку одного из опорных изображений в одном из списков опорных изображений. Модуль 44 компенсации движения также может применить один или более интерполяционных фильтров для восстановленного остаточного блока, чтобы вычислить пиксельные значения в долях пикселя для использования при оценке движения. Сумматор 62 складывает восстановленный остаточный блок с предсказанным блоком, созданным модулем 44 компенсации движения, для создания опорного блока для его запоминания в памяти 64 опорных изображений.The inverse quantization unit 58 and the inverse transform unit 60 perform inverse quantization and inverse transform, respectively, to restore the residual block in the pixel region for later use as a reference block of the reference image. Motion compensation module 44 may calculate the reference block by adding a residual block to the predicted block of one of the reference pictures in one of the reference picture lists. Motion compensation module 44 may also apply one or more interpolation filters to the reconstructed residual block to calculate pixel values in fractions of a pixel for use in motion estimation. The adder 62 adds the reconstructed residual block with the predicted block created by the motion compensation module 44 to create a reference block for storing it in the memory 64 of the reference images.

Перед запоминанием в памяти 64 может быть выполнена фильтрация восстановленного остаточного блока одним или более фильтрами. Если это необходимо, то для фильтрации восстановленных остаточных блоков также можно использовать деблокирующий фильтр 72 для устранения артефактов «блочности». Для сглаживания переходов между пикселями или иного улучшения качества видео можно также использовать другие контурные фильтры (либо на входе контура кодирования, либо после контура кодирования). Одним из примеров другого фильтра является SAO фильтр 74. Модуль 42 оценки движения и модуль 44 компенсации движения могут использовать указанный опорный блок в качестве опорного блока для интра-предсказания блока в следующем видеокадре или видеоизображении.Before storing in memory 64, filtering of the reconstructed residual block with one or more filters may be performed. If necessary, to filter the recovered residual blocks, you can also use the deblocking filter 72 to eliminate blocking artifacts. To smooth the transitions between pixels or otherwise improve the quality of the video, you can also use other loop filters (either at the input of the encoding circuit, or after the encoding circuit). One example of another filter is the SAO filter 74. The motion estimation module 42 and the motion compensation module 44 can use this reference block as a reference block for intra-predicting the block in the next video frame or video image.

SAO фильтр 4 может определить значения смещения для SAO фильтрации таким образом, чтобы повысить качество видеокодирования. Повышение качества видеокодирования может содержать, например, определение значений смещения, которые обеспечивают более близкое сходство восстановленного изображения с исходным изображением. Видеокодер 20 может, например, кодировать видеоданные, используя множество проходов с разными значениями смещения, и выбрать для включения в закодированный битовый поток тех значений смещения, которые дают наилучшее качество кодирования, определяемое на основе вычислений упомянутого соотношения «скорость-искажение».The SAO filter 4 can determine the offset values for SAO filtering in such a way as to improve the quality of video coding. Improving the quality of video coding may include, for example, determining bias values that provide closer similarity between the reconstructed image and the original image. Video encoder 20 may, for example, encode video data using multiple passages with different offset values, and select to include in the encoded bitstream those offset values that give the best encoding quality, determined based on calculations of the aforementioned speed-distortion ratio.

В некоторых конфигурациях SAO фильтр 74 может быть сконфигурирован для применения двух типов смещения (например, смещение полосы и смещение края) как было описано выше. SAO фильтр 74 также иногда может вообще не применять смещение, что само по себе можно рассматривать как третий тип смещения. О типе смещения, примененном SAO фильтром 74, может быть сообщено видеодекодеру либо в явном, либо в неявном виде. При применении смещения края пиксели могут классифицироваться на основе информации о краях в соответствии с фиг. 2, и фильтр можно будет определить на основе классификации краев. При применении смещения полос SAO фильтр 74 может классифицировать пиксели по разным полосам на основе значения пикселя, такого как значение интенсивности, причем каждая полоса будет иметь соответствующее ей смещение.In some SAO configurations, the filter 74 may be configured to apply two types of offset (e.g., strip offset and edge offset) as described above. SAO filter 74 also sometimes sometimes may not apply bias at all, which in itself can be considered a third type of bias. The type of offset applied by the SAO filter 74 may be reported to the video decoder, either explicitly or implicitly. By applying edge offset, pixels can be classified based on the edge information in accordance with FIG. 2, and the filter can be determined based on the classification of the edges. When applying SAO band offset, the filter 74 may classify pixels into different bands based on a pixel value, such as an intensity value, with each band having a corresponding offset.

В целях сигнализации и формирования смещений для различных полос SAO фильтр 74 может сгруппировать указанные тридцать две полосы в две или более групп, как показано в качестве примеров на фигурах 3А и 3В. SAO фильтр 74 может, например, отнести каждую из тридцати двух полос к одной из двух групп (то есть, две группы из шестнадцати полос). Хотя здесь, как правило, описывается группировка полос по двум группам одинакового размера, также можно использовать большее двух количество групп, а также группы с неодинаковыми размерами. В данном изобретении описаны методики определения таких групп.In order to signal and generate offsets for different SAO bands, filter 74 may group these thirty-two bands into two or more groups, as shown as examples in FIGS. 3A and 3B. The SAO filter 74 may, for example, assign each of thirty-two bands to one of two groups (i.e., two groups of sixteen bands). Although here, as a rule, a grouping of bands into two groups of the same size is described, it is also possible to use more than two groups, as well as groups with unequal sizes. The present invention describes methods for determining such groups.

Каждая полоса может охватывать некоторый диапазон значений пикселей. Значением пикселя может быть, например, значение интенсивности пикселя, при этом значение пикселя может описывать любое из следующих значений: значение RGB, значение яркости, значение цветности или значения пикселя любого другого типа. Методики, раскрытые в данном изобретении, можно применить, например, либо к отсчетам цветности видеоданных, либо отсчетам яркости видеоданных, либо как к отсчетам цветности, так и отсчетам яркости видеоданных.Each bar may span a range of pixel values. The pixel value may be, for example, a pixel intensity value, wherein the pixel value may describe any of the following values: RGB value, brightness value, color value, or any other type of pixel value. The techniques disclosed in this invention can be applied, for example, either to color samples of video data, or samples to brightness of video data, or to both color samples and brightness samples of video data.

В некоторых реализациях первая группа полос может быть сцентрирована по центру диапазона возможных значений пикселей (то есть, максимальное значение/2). Таким образом, например, если диапазон значений пикселей составляет 0-255, то центр первой группы полос может находиться между значением 127 пикселя и значением 128 пикселя, причем первая группа охватывает значения с 64 по 191. Первый участок второй группы может охватывать значения пикселей от 0 до 63, а второй участок второй группы может охватывать значение пикселей от 192 до 255. Первая группа включает в себя шестнадцать полос, и вторая группа включает в себя шестнадцать полос (восемь полос в первой части и восемь полос во второй части). Данный пример группировки показан на фиг. 3А. Хотя в раскрытых здесь примерах обычно предполагается, что все тридцать две полосы имеют одинаковый размер, в некоторых реализациях могут использоваться полосы неодинакового размера.In some implementations, the first group of bands can be centered on the center of the range of possible pixel values (i.e., the maximum value of / 2). Thus, for example, if the range of pixel values is 0-255, then the center of the first group of stripes can be between a value of 127 pixels and a value of 128 pixels, the first group covering values from 64 to 191. The first section of the second group can cover pixel values from 0 up to 63, and the second section of the second group can cover the pixel value from 192 to 255. The first group includes sixteen bands, and the second group includes sixteen bands (eight bands in the first part and eight bands in the second part). This grouping example is shown in FIG. 3A. Although the examples disclosed herein generally assume that all thirty-two bands are of the same size, in some implementations, bands of a different size may be used.

Согласно раскрытым здесь методикам SAO фильтр 74 может адаптивно определить центр первой группы вместо того, чтобы использовать статическую группировку полос. SAO фильтр 74 может, например, определить центр первой группы на основе среднего значения или медианы значений пикселей в некоторой области кадра. SAO фильтр 74 может также определить центр первой группы на основе того пикселя, на который попадает пик гистограммы. После определения SAO фильтром 74 центра первой группы SAO фильтр 74 может затем определить вторую группу. Если снова предположить, что используются тридцать две полосы, то первая группа может включать в себя примерно восемь полос слева от центра и примерно восемь полос справа от центра. Остальные полосы могут образовать вторую группу.According to the SAO techniques disclosed herein, filter 74 may adaptively determine the center of the first group instead of using static banding. The SAO filter 74 may, for example, determine the center of the first group based on the average or median of the pixel values in a certain area of the frame. The SAO filter 74 may also determine the center of the first group based on the pixel at which the histogram peak hits. After the SAO is determined by the filter 74 of the center of the first group, the SAO filter 74 may then determine the second group. Assuming again that thirty-two bands are used, the first group may include about eight bands to the left of the center and about eight bands to the right of the center. The remaining bands may form a second group.

В одном примере, если предположить, что максимальным значением пикселя является 256, то SAO фильтр 74 определяет центр для первой группы полос на основе любой из вышеописанных методик в пикселе со значением 90. В указанном случае по сравнению со статической группировкой, показанной на фиг. 3А, первая группа полос может быть сдвинута влево, что приводит к уменьшению первого участка второй группы, в то время как второй участок второй группы увеличивается. Однако, если SAO фильтр 74 определяет центр для первой группы полос у значения 170, то тогда первая группа сдвигается вправо по сравнению со статической группировкой по фиг. 3А, что приводит к увеличению первого участка второй группы и уменьшению второго участка второй группы. SAO фильтр 74 может определить центр согласно любой из описанных здесь методик для определения среднего значения, медианы или пика гистограммы, либо это может быть определено каким-либо иным способом.In one example, assuming that the maximum pixel value is 256, then the SAO filter 74 determines the center for the first group of bands based on any of the above techniques in a pixel with a value of 90. In this case, compared with the static grouping shown in FIG. 3A, the first group of strips can be shifted to the left, which leads to a decrease in the first section of the second group, while the second section of the second group increases. However, if the SAO filter 74 determines the center for the first group of bands at a value of 170, then the first group is shifted to the right compared to the static grouping of FIG. 3A, which leads to an increase in the first portion of the second group and a decrease in the second portion of the second group. The SAO filter 74 may determine the center according to any of the techniques described here for determining the mean, median, or peak of the histogram, or it may be determined in some other way.

После определения центра SAO фильтр 74 может определить первую группу полос. SAO фильтр 74 может определить первую группу полос путем идентификации восьми полос слева от центра и восьми полос справа от центра. В некоторых случаях определенный таким образом центр может оказаться внутри полосы. Если опять предположить наличие тридцати двух равных полос (полосы 0-31) и предположить, что диапазон значений пикселей составляет 0-255, то полоса 12 имеет диапазон значений от 96 до 103. Если, например, SAO фильтр 74 определяет центр у значения 99, то тогда этот центр попадает в диапазон значений пикселей, покрываемых полосой 12. В указанном случае SAO фильтр 74 может быть сконфигурирован таким образом, что он всегда будет включать полосу 12 в качестве одной из восьми полос слева от центра или всегда включать полосу 12 в качестве одной из восьми полос справа от центра. Если SAO фильтр 74 идентифицирует полосу 12 как одну из восьми полос слева от центра, то тогда первая группа полос включает в себя полосы 5-20, в то время как вторая группа включает в себя полосы 0-4 и 21-31. Если SAO фильтр 74 идентифицирует полосу 12 как одну из восьми полос справа от центра, то тогда первая группа полос включает в себя полосы 6-21, в то время как вторая группа включает в себя полосы 0-5 и полосы 22-31. SAO фильтр 74 также может быть сконфигурирован для определения того, включать ли полосу 12 с полосами слева от центра или полосами справа от центра в зависимости от того, в оказался ли центр в этой полосе. Так как 99 ближе к 96, чем к 103, SAO фильтр 74 может быть сконфигурирован для идентификации полосы 12 как одной из полос слева от центра в соответствии с тем, что центр определен у значения 99. Однако при определении центра у значения 101, которое ближе к 103, чем к 96, SAO фильтр 74 может быть сконфигурирован для идентификации полосы 12 как одной из полос справа от указанного центра.After determining the center of the SAO, the filter 74 can determine the first group of bands. The SAO filter 74 can determine the first group of bands by identifying eight bands to the left of the center and eight bands to the right of the center. In some cases, a center defined this way may be inside the strip. If we again assume that there are thirty-two equal bands (bands 0-31) and assume that the range of pixel values is 0-255, then strip 12 has a range of values from 96 to 103. If, for example, SAO filter 74 determines the center of value 99, then this center falls into the range of pixels covered by strip 12. In this case, the SAO filter 74 can be configured to always include strip 12 as one of the eight stripes to the left of the center or always include strip 12 as one eight lanes on the right from the center. If the SAO filter 74 identifies band 12 as one of eight bands to the left of the center, then the first group of bands includes bands 5-20, while the second group includes bands 0-4 and 21-31. If the SAO filter 74 identifies band 12 as one of eight bands to the right of the center, then the first group of bands includes bands 6-21, while the second group includes bands 0-5 and bands 22-31. The SAO filter 74 may also be configured to determine whether to include lane 12 with lanes to the left of the center or lanes to the right of the center, depending on whether the center is in that lane. Since 99 is closer to 96 than 103, the SAO filter 74 can be configured to identify band 12 as one of the bands to the left of the center according to the fact that the center is defined at a value of 99. However, when determining the center at a value of 101, which is closer to 103 than to 96, the SAO filter 74 may be configured to identify band 12 as one of the bands to the right of the specified center.

Хотя раскрытые здесь методики описаны на примерах, в которых используются тридцать две полосы и две группы по шестнадцать полос, эти методики в общем случае применимы к схемам SAO, в которых используется большее или меньшее количество полос и большее или меньшее количество групп. В качестве одного из многих возможных примеров, раскрытые здесь методики можно использовать для определения первой группы из четырех полос и второй группы из двадцати восьми полос, причем здесь предполагается, что все смещения для второй группы имеют нулевое значение. В другом примере может быть использовано шестнадцать полос, шестьдесят четыре полосы или какое-либо иное количество полос.Although the techniques disclosed herein are described by way of example, in which thirty-two bands and two groups of sixteen bands are used, these techniques are generally applicable to SAO schemes in which more or less bands and more or fewer groups are used. As one of many possible examples, the techniques disclosed here can be used to determine the first group of four bands and the second group of twenty-eight bands, and it is assumed here that all offsets for the second group are zero. In another example, sixteen bands, sixty-four bands, or some other number of bands may be used.

SAO фильтр 74 может создать смещения для полос на основе указанных группировок и сообщить об этих смещениях. Для каждой группы полос (в предположении, что имеются, как и раньше, группы из шестнадцати полос) может быть определено шестнадцать значений смещения, о которых сообщается в закодированном битовом видеопотоке для их использования видеодекодером. В одном примере количество бит, необходимое для посылки группы из шестнадцати значений смещения полос, можно уменьшить, если эффективно использовать корреляции между значениями смещения полос в данной группе. В другом примере значения смещения полос соседнего участка можно использовать для предсказания значений смещения полос для группы текущего участка. Соседний участок может представлять собой участок, причинно обусловленный текущим участком (то есть, этот соседний участок уже был закодирован) Примеры соседних участков включают в себя пространственно соседние участки, такие как участки, расположенные над или слева от текущего участка, либо соседние по времени участки, такие как участки в предыдущих закодированных кадрах (например, совместно расположенные участки).The SAO filter 74 may create offsets for the bands based on the specified groupings and report these offsets. For each group of bands (assuming that, as before, there are groups of sixteen bands), sixteen offset values can be determined, which are reported in the encoded bitstream for use by a video decoder. In one example, the number of bits needed to send a group of sixteen band offset values can be reduced by using correlations between the band offset values in a given group effectively. In another example, the strip offset values of a neighboring portion can be used to predict the strip offset values for a group of the current portion. A neighboring portion may be a portion causally determined by the current portion (i.e., this neighboring portion has already been encoded) Examples of neighboring portions include spatially adjacent portions, such as portions located above or to the left of the current parcel, or temporally adjacent portions, such as sections in previous encoded frames (e.g., co-located sections).

Методики для нахождения центра можно применить к каждому блоку LCU или к группам блоков LCU. Эти методики можно, например, применить к областям кадра, определенным таким же образом, как вышеописанное разделение квадродерева. Кадр можно разделить на четыре области, причем каждую область можно разделить на четыре области меньшего размера и т.д. SAO фильтр 74 может определить значения центра, как было описано выше, на основе всех значений пикселей в группе блоков LCU или другой области кадра, либо может определить значения центра путем субдискретизации пикселей, используя не все доступные значения пикселей в блоке LCU или группе блоков LCU.The techniques for finding the center can be applied to each LCU or to groups of LCUs. These techniques can, for example, be applied to areas of a frame defined in the same way as the above quad-tree partitioning. A frame can be divided into four areas, with each area being divided into four smaller areas, etc. The SAO filter 74 may determine the center values, as described above, based on all the pixel values in the LCU block group or another area of the frame, or it can determine the center values by pixel downsampling using not all available pixel values in the LCU or LCU group.

Видеокодер 20 по фиг. 4 представляет пример видеокодера, сконфигурированного для определения значения центра для набора пикселей на основе значений этих пикселей; разделения полос значений пикселей на группы на основе значения центра; и определения значений смещения для полос на основе указанных групп. Видеокодер 20 может определить центр для первого набора пикселей посредством определения среднего значения для набора пикселей, определения значения медианы для набора пикселей и/или определения пикселя, на который попал пик гистограммы. Видеокодер 20 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения полосы для полосы первой группы на основе смещения второй полосы первой группы. Видеокодер 20 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения полосы для полосы из первой группы на основе смещения полосы, определенного для соседнего участка. Видеокодер 20 может также сообщить о значениях смещения полосы для соседнего участка. Видеокодер 20 также может сообщить видеодекодеру значения смещения полосы на основе указанных групп. В некоторых реализациях видеокодер 20 может сформировать синтаксический элемент для его включения в закодированный битовый поток, который указывает определенное значение центра. В некоторых случаях этот синтаксический элемент может представлять собой указание в явном виде о центре, определенном для группы полос, но этот синтаксический элемент не обязательно должен представлять собой указание в явном виде об определенном центре. Например, значение центра может идентифицировать первую или последнюю полосу в конкретной группе, чтобы разрешить видеодекодеру восстановить аналогичные группировки полос, определенные видеокодером 20. В указанном случае эти группировки полос, восстановленные видеодекодером, можно выровнять по тому же центру, что и группировки, определенные видеокодером, даже если указанный центр не передан в явном виде в закодированном битовом потоке.The video encoder 20 of FIG. 4 is an example of a video encoder configured to determine a center value for a set of pixels based on the values of these pixels; dividing bands of pixel values into groups based on the center value; and determining the offset values for the bands based on these groups. Video encoder 20 may determine the center for the first set of pixels by determining the average value for the set of pixels, determining the median value for the set of pixels, and / or determining the pixel that has hit the peak of the histogram. Video encoder 20 may determine the offset values for the bands based on these groups by generating the strip offset values for the strip of the first group based on the offset of the second strip of the first group. Video encoder 20 may determine the offset values for the bands based on the indicated groups by generating the strip offset values for the strip from the first group based on the strip offset determined for the adjacent section. Video encoder 20 may also report band offset values for a neighboring portion. Video encoder 20 may also inform the video decoder of the strip offset values based on these groups. In some implementations, video encoder 20 may generate a syntax element for inclusion in an encoded bitstream that indicates a specific center value. In some cases, this syntax element may be an explicit indication of a center defined for a group of bands, but this syntax element need not be an explicit indication of a particular center. For example, the center value can identify the first or last lane in a particular group to allow the video decoder to restore the same groupings of bands determined by the video encoder 20. In this case, these groupings of bands restored by the video decoder can be aligned to the same center as the groups defined by the video encoder, even if the specified center is not explicitly transmitted in the encoded bitstream.

На фиг. 5 представлена блок-схема, где показан пример видеодекодера 30, который может реализовать описанные методики. В примере по фиг. 5 видеодекодер 30 включает в себя модуль 80 энтропийного декодирования, модуль 81 предсказания, модуль 86 обратного квантования, модуль 88 обратного преобразования, сумматор 90, и память 92 опорных изображений. Модуль 81 предсказания включает в себя модуль 82 компенсации движения и модуль 84 интра-предсказания. В некоторых примерах видеодекодер 30 может выполнять прогон декодирования, который в общем случае является обратным по отношению к проходу кодирования, описанному применительно к видеокодеру 20 по фиг. 4.In FIG. 5 is a flowchart showing an example of a video decoder 30 that can implement the described techniques. In the example of FIG. 5, video decoder 30 includes an entropy decoding unit 80, a prediction unit 81, an inverse quantization unit 86, an inverse transform unit 88, an adder 90, and a reference image memory 92. Prediction module 81 includes motion compensation module 82 and intra prediction module 84. In some examples, video decoder 30 may perform a decoding run, which is generally the reverse of the coding pass described with respect to video encoder 20 of FIG. four.

В ходе процесса декодирования видеодекодер 30 принимает закодированный битовый видеопоток, представляющий видеоблоки закодированного видеослайса и соответствующие синтаксические элементы от видеокодера 20. Модуль 80 энтропийного декодирования видеодекодера 30 выполняет энтропийное декодирование битового потока, чтобы сформировать квантованные коэффициенты, векторы движения и другие синтаксические элементы. Модуль 80 энтропийного декодирования направляет эти векторы движения и другие синтаксические элементы в модуль 81 предсказания. Видеодекодер 30 может принять синтаксические элементы на уровне видеослайса и/или на уровне видеоблока.During the decoding process, video decoder 30 receives an encoded video bitstream representing the video blocks of the encoded video slice and the corresponding syntax elements from video encoder 20. Entropy decoding module 80 of video decoder 30 performs entropy decoding of the bit stream to generate quantized coefficients, motion vectors, and other syntax elements. Entropy decoding unit 80 directs these motion vectors and other syntax elements to prediction unit 81. Video decoder 30 may receive syntax elements at the video slice level and / or at the video block level.

Когда видеослайс закодирован с использованием интра-предсказания (I), модуль 84 интра-предсказания модуля 81 предсказания может сформировать данные предсказания для видеоблока текущего видеослайса на основе сигнализации в режиме интра-предсказания, а также на основе данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр закодирован в виде слайса с интер-предсказанием (то есть, B, P или GPB) модуль 82 компенсации движения модуля 81 предсказания создает блоки предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, полученных от модуля 80 энтропийного декодирования. Блоки предсказания можно создать из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может построить списки опорных кадров, список 0 и список 1, используя стандартные методики построения на основе опорных изображений, хранящихся в памяти 92 опорных изображений.When the video slice is encoded using intra prediction (I), the intra prediction module 84 of the prediction module 81 may generate prediction data for a video block of the current video slice based on signaling in the intra prediction mode, as well as based on data from previously decoded blocks of the current frame or image . When the video frame is encoded as an inter-prediction slice (i.e., B, P or GPB), the motion compensation module 82 of the prediction module 81 creates prediction blocks for the video block of the current video slice based on motion vectors and other syntax elements received from the entropy decoding module 80. Prediction blocks can be created from one of the reference images in one of the lists of reference images. Video decoder 30 may construct reference frame lists, list 0 and list 1, using standard construction techniques based on reference images stored in the reference image memory 92.

Модуль 82 компенсации движения определяет информацию предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, модуль 82 компенсации движения использует некоторые из полученных синтаксических элементов для определения режима предсказания (например, интра- или интер-предсказание), используемого для кодирования видеоблоков видеослайса, типа слайса с интер-предсказанием (например, B слайс, P слайс или GPB слайс), информации о структуре для одного или более списков опорных изображений для данного слайса, векторов движения для каждого видеоблока слайса с интер-кодированием, статуса интер-предсказания для каждого видеоблока слайса, закодированного с интер-предсказанием, и другой информации для декодирования видеоблоков в текущем видеослайсе.Motion compensation module 82 determines the prediction information for the video block of the current video slice by parsing motion vectors and other syntax elements and uses the prediction information to create prediction blocks for the current decoded video block. For example, motion compensation module 82 uses some of the syntax elements obtained to determine a prediction mode (e.g., intra or inter prediction) used to encode video blocks of a video slice, such as an inter prediction slice (e.g., B slice, P slice, or GPB slice ), structure information for one or more lists of reference images for a given slice, motion vectors for each video block of the slice with inter-coding, the status of inter-prediction for each video block of the slice, encoded th with inter-prediction, and other information to decode the video blocks in the current videoslayse.

Модуль 82 компенсации движения также может выполнить интерполяцию на основе интерполяционных фильтров. Модуль 82 компенсации движения может использовать интерполяционные фильтры, как это делается видеокодером 20 в процессе кодирования видеоблоков для вычисления интерполированных значений для дробных пикселей опорных блоков. В этом случае модуль 82 компенсации движения может определить интерполяционные фильтры, используемые видеокодером 20, исходя из полученных синтаксических элементов, и использовать эти интерполяционные фильтры для создания блоков предсказания.Motion compensation module 82 may also perform interpolation based on interpolation filters. Motion compensation module 82 may use interpolation filters, as is done by video encoder 20 in the process of encoding video blocks to calculate interpolated values for fractional pixels of reference blocks. In this case, motion compensation module 82 may determine the interpolation filters used by video encoder 20 based on the syntax elements obtained, and use these interpolation filters to create prediction blocks.

Модуль 86 обратного квантования выполняет обратное квантование, то есть, деквантование квантованных коэффициентов преобразования, предусмотренных в битовом потоке и декодируемых модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видеокодером 20 для каждого видеоблока в видеослайсе, для определения степени квантования по аналогии со степенью обратного квантования, которую и следует применить. Модуль 88 обратного преобразования применяет обратное преобразование, например, обратное DCT преобразование, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования к коэффициентам преобразования, чтобы обеспечить остаточные блоки в пиксельной области.The inverse quantization module 86 performs inverse quantization, i.e., dequantization of the quantized transform coefficients provided in the bitstream and decoded by the entropy decoding unit 80. The inverse quantization process may include the use of a quantization parameter calculated by video encoder 20 for each video block in the video slice to determine the degree of quantization by analogy with the degree of inverse quantization, which should be applied. The inverse transform unit 88 applies an inverse transform, such as an inverse DCT transform, an inverse integer transform, or a conceptually similar inverse transform process to transform coefficients to provide residual blocks in the pixel domain.

После того, как модуль 82 компенсации движения сформировал блок предсказания для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 формирует декодированный видеоблок посредством суммирования остаточных блоков, полученных от модуля 88 обратного преобразования, с соответствующими блоками предсказания, сформированными модулем 82 компенсации движения. Сумматор 90 представляет компоненту или компоненты, которые выполняют операцию суммирования. Декодированные видеоблоки, сформированные сумматором 90 могут затем быть подвергнуты фильтрации с использованием деблокирующего фильтра 93, SAO фильтра 94 и адаптивного контурного фильтра 95. Декодированные видеоблоки в данном кадре или изображении запоминаются затем в памяти 92 опорных изображений, где хранятся опорные изображения, используемые для последующей компенсации движения. В памяти 92 опорных изображений также запоминается декодированное видео для его представления в дальнейшем на устройстве отображения, таком как дисплейное устройство 32 по фиг. 1.After the motion compensation module 82 has generated a prediction block for the current video block based on motion vectors and other syntax elements, the video decoder 30 forms a decoded video block by summing the residual blocks received from the inverse transform module 88 with the corresponding prediction blocks generated by the motion compensation module 82 . An adder 90 represents a component or components that perform a summing operation. The decoded video blocks formed by the adder 90 can then be filtered using a deblocking filter 93, an SAO filter 94, and an adaptive loop filter 95. The decoded video blocks in this frame or image are then stored in the reference image memory 92, where reference images are used for subsequent compensation movement. The decoded video is also stored in the reference image memory 92 for later presentation on a display device such as a display device 32 of FIG. one.

SAO фильтр 94 может быть сконфигурирован для применения той же фильтрации (например, со смещением края и смещением полосы), какую выполняет SAO фильтр 74, обсужденный выше. Таким образом, в качестве составной части выполнения смещения полос SAO фильтр 74 может определить значение центра для первой группы полос, как было описано выше со ссылками на фиг. 4. Значение центра можно, например, определить на основе такой метрики, как среднее значение пикселя, значение медианы пикселя или определить пиксель, на который попал пик гистограммы для блока LCU или группы блоков LCU.The SAO filter 94 may be configured to apply the same filtering (e.g., with edge offset and band offset) as the SAO filter 74 discussed above performs. Thus, as part of performing the SAO band offset, the filter 74 can determine the center value for the first group of bands, as described above with reference to FIG. 4. The center value can, for example, be determined on the basis of a metric such as the average pixel value, the median value of the pixel, or you can determine the pixel that hit the histogram peak for an LCU or a group of LCUs.

В некоторых реализациях SAO фильтр 94 может принять в битовом видеопотоке указание о центре, определенном видеокодером. Это указание может быть представлено в виде действительного значения центра, вычисленного видеокодером, или может быть представлено в виде идентификации первой полосы для первой группы, указания о последней полосе первого участка второй группы, среднего значения для первой группы или какого-либо другой информации, которая позволяет SAO фильтру 94 определить группировку полос, использованную видеокодером. На основе первой группы и второй группы, определенных на основе значения центра, SAO фильтр 94 может сформировать значения смещения на основе информации, принятой в закодированном битовом видеопотоке. Для одной из групп, например, для второй группы можно предположить, что все ее значения смещения равны нулю.In some implementations of SAO, the filter 94 may receive, in a bitstream video stream, an indication of the center defined by the video encoder. This indication can be represented as the actual center value calculated by the video encoder, or it can be represented as the identification of the first strip for the first group, the indication of the last strip of the first section of the second group, the average value for the first group, or some other information that allows The SAO filter 94 determines the banding used by the video encoder. Based on the first group and the second group, determined based on the center value, the SAO filter 94 may generate offset values based on information received in the encoded video bitstream. For one of the groups, for example, for the second group, we can assume that all its displacement values are equal to zero.

Для группы блоков LCU SAO фильтр 94 может определить значение центра путем определения среднего значения пикселя для группы блоков LCU. SAO фильтр 94 может определить среднее значение пикселя, просуммировав значения всех или некоторой части пикселей в группе блоков LCU и разделив полученную сумму на количество пикселей, чьи значения вошли в указанную сумму, где результирующее значение будет представлять среднее значение пикселя для группы блоков LCU. Блок 94 SAO фильтра может затем использовать полученное среднее значение пикселя вышеописанным образом для определения группировки полос.For the SAU LCU block group, the filter 94 can determine the center value by determining the average pixel value for the LCU block group. The SAO filter 94 can determine the average pixel value by summing the values of all or some of the pixels in the LCU block group and dividing the resulting sum by the number of pixels whose values are included in the specified sum, where the resulting value will represent the average pixel value for the LCU block group. The filter SAO block 94 may then use the obtained average pixel value in the manner described above to determine the banding.

В качестве альтернативы для группы блоков LCU, SAO фильтр 94 может определить значение центра путем определения значения медианы для группы блоков LCU. SAO фильтр 94 может определить значение медианы путем идентификации значения, при котором половина значений пикселей группы блоков LCU превышает это значение, и половины значений пикселей для группы блоков LCU, меньших указанного значения. Блок 94 SAO фильтра может затем использовать найденное значение медианы пикселей вышеописанным образом для определения группировки полос.As an alternative to an LCU block group, the SAO filter 94 may determine the center value by determining the median value for the LCU block group. The SAO filter 94 may determine the median value by identifying a value at which half the pixel values of the LCU group of blocks exceeds this value, and half the pixel values for the LCU group of blocks smaller than the specified value. The filter SAO block 94 may then use the found pixel median value in the manner described above to determine the banding.

В качестве альтернативы для блоков LCU, SAO фильтр 94 может определить значение центра путем определения местонахождения пика гистограммы для блока LCU или группы блоков LCU. В общем случае гистограмму можно считать статистическим представлением распределения значений пикселей для группы блоков LCU. Таким образом, SAO фильтр 94 может определить пик гистограммы путем идентификации значения пикселя или значений пикселей, которые появляются наиболее часто в группе блоков LCU. Затем блок 94 SAO фильтра может использовать найденное значение пика в гистограмме вышеописанным образом, чтобы определить группировки полос.Alternatively for LCUs, the SAO filter 94 can determine the center value by locating the peak of the histogram for the LCU or group of LCUs. In general, a histogram can be considered a statistical representation of the distribution of pixel values for a group of LCUs. Thus, the SAO filter 94 can determine the peak of the histogram by identifying the pixel values or pixel values that appear most often in the group of LCUs. Then, the SAO filter unit 94 may use the found peak value in the histogram as described above to determine band groups.

Можно реализовать три примера того, каким образом можно определить значение центра (например, по среднему, медиане или пику гистограммы) любым из фильтров (SAO фильтром 74, либо SAO фильтром 94) или обоими фильтрами, причем эти три возможные методики определения значения центра не являются единственными. Предполагается, что раскрытые в изобретении методики, которые в общем случае касаются динамического определения группировок полос для сигнализации о значениях смещения полос, могут быть совместимы с другими указанными методиками для определения значения центра.You can implement three examples of how you can determine the center value (for example, by the average, median or peak of the histogram) by any of the filters (SAO filter 74 or SAO filter 94) or both filters, and these three possible methods for determining the center value are not the only ones. It is contemplated that the techniques disclosed in the invention, which generally relate to the dynamic determination of band groups for signaling band offset values, may be compatible with other specified techniques for determining the center value.

Видеодекодер 30 по фиг. 5 представляет пример видеодекодера, сконфигурированного для определения значения центра для набора пикселей на основе значений указанных пикселей, разделения полос значений пикселей на группы на основе указанного значения центра и определения значений смещения для указанных полос на основе имеющихся групп. В некоторых реализациях видеодекодер 30 может определить значение центра путем получения синтаксического элемента, указывающего значение центра. Как было описано выше, этот синтаксический элемент может представлять собой, но не обязательно, указание в явном виде на значения центра. В некоторых реализациях видеодекодер 30 может определить значение центра путем определения среднего значения для набора пикселей, определения значения медианы для набора пикселей и/или определения местонахождения пика гистограммы. Видеодекодер 30 может определить значения смещения для полос на основе групп путем формирования значения смещения для полосы первой группы на основе смещения второй полосы первой группы. Видеодекодер 30 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения групп для полосы из первой группы на основе смещения полосы, определенного для соседнего участка. Видеодекодер 30 также может восстановить значения смещений полос, переданных от видеокодера, на основе групп.The video decoder 30 of FIG. 5 is an example of a video decoder configured to determine a center value for a set of pixels based on values of said pixels, divide bands of pixel values into groups based on a specified center value, and determine offset values for said bands on the basis of available groups. In some implementations, video decoder 30 may determine the center value by obtaining a syntax element indicating the center value. As described above, this syntax element may be, but not necessarily, an explicit indication of the center values. In some implementations, video decoder 30 may determine the center value by determining an average value for a set of pixels, determining a median value for a set of pixels, and / or locating a peak in a histogram. Video decoder 30 may determine the offset values for the bands based on the groups by generating the offset values for the strip of the first group based on the offset of the second strip of the first group. Video decoder 30 may determine the offset values for the bands based on the indicated groups by generating the group offset values for the strip from the first group based on the strip offset determined for the adjacent section. Video decoder 30 may also recover the offset values of the bands transmitted from the video encoder based on the groups.

Таким образом, видеодекодер 30 по фиг. 5 представляет пример видеодекодера, сконфигурированного для определения значения центра для набора пикселей на основе значений пикселей для данной группы; разделения полос значений пикселей на группы на основе указанного значения центра; и определения значений смещения для указанных полос на основе имеющихся групп. Видеодекодер 30 может определить значение центра путем получения синтаксического элемента, указывающего значение центра, определить значение центра путем определения среднего значения для набора пикселей, определить значение центра путем определения значения медианы для набора пикселей или путем определения значения центра на основе местонахождения пика гистограммы. Указанный набор пикселей может, например, включать в себя группу самых крупных блоков кодирования (LCU). Видеодекодер 30 может определить значения смещения для полос на основе групп путем формирования значения смещения для полосы первой группы на основе смещения второй полосы первой группы. Видеодекодер 30 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения групп для полосы из первой группы на основе смещения полосы, определенного для соседнего участка.Thus, the video decoder 30 of FIG. 5 is an example of a video decoder configured to determine a center value for a set of pixels based on pixel values for a given group; dividing the bands of pixel values into groups based on the specified center value; and determining bias values for said bands based on the available groups. Video decoder 30 can determine the center value by obtaining a syntax element indicating the center value, determine the center value by determining the average value for the set of pixels, determine the center value by determining the median value for the set of pixels, or by determining the center value based on the location of the histogram peak. The specified set of pixels may, for example, include a group of the largest coding units (LCUs). Video decoder 30 may determine the offset values for the bands based on the groups by generating the offset values for the strip of the first group based on the offset of the second strip of the first group. Video decoder 30 may determine the offset values for the bands based on the indicated groups by generating the group offset values for the strip from the first group based on the strip offset determined for the adjacent section.

На фиг. 6 показана блок-схема, иллюстрирующая методики SAO фильтрации, раскрытые в настоящем изобретении. Методики по фиг. 6 могут выполняться видеокодером, имеющим модуль SAO фильтрации, таким как видеокодер 20 или видеодекодер 30. Методики по фиг. 6 описываются далее со ссылками на видеодекодер 30, хотя следует понимать, что методики по фиг. 6 применимы для самых разных устройств видеокодирования и не сводится только к видеодекодерам.In FIG. 6 is a flowchart illustrating SAO filtering techniques disclosed in the present invention. The techniques of FIG. 6 may be performed by a video encoder having a SAO filtering module, such as video encoder 20 or video decoder 30. The techniques of FIG. 6 are described below with reference to video decoder 30, although it should be understood that the techniques of FIG. 6 are applicable to a wide variety of video coding devices and is not limited to video decoders.

Видеодекодер 30 определяет значение центра для набора пикселей на основе значений пикселей (610). Видеодекодер 30 может, например, определить значение центра путем нахождения среднего значения для набора пикселей, определения значения медианы для набора пикселей и определения пикселя, на который попадает пик гистограммы. Видеодекодер 30 разделяет полосы значений пикселей на группы на основе значения центра (620). Видеодекодер 30 определяет значения смещений для полос на основе указанных групп (630). Видеодекодер 30 может определить значения смещений для полос на основе указанных групп путем формирования значения смещения полосы для полосы первой группы на основе смещения второй полосы первой группы. Видеодекодер 30 может также определить значения смещений для полос на основе указанных групп путем формирования значения смещения для полосы первой группы на основе смещения полосы, определенного для соседнего участка.Video decoder 30 determines a center value for a set of pixels based on pixel values (610). Video decoder 30 may, for example, determine the center value by finding the average value for the set of pixels, determining the median value for the set of pixels, and determining the pixel that hits the peak of the histogram. Video decoder 30 divides the strip of pixel values into groups based on the center value (620). Video decoder 30 determines the offset values for the bands based on these groups (630). Video decoder 30 may determine the offset values for the bands based on these groups by generating the strip offset values for the strip of the first group based on the offset of the second strip of the first group. Video decoder 30 may also determine the offset values for the bands based on the indicated groups by generating an offset value for the strip of the first group based on the offset of the strip determined for the adjacent section.

В одном или более примерах описанные функции могут быть реализованы аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. При реализации программными средствами эти функции могут храниться или передаваться в виде одной или более команд или кода на компьютерно-читаемом носителе и выполняться обрабатывающим аппаратным блоком. Компьютерно-читаемый носитель может включать в себя компьютерно-читаемый запоминающий носитель, который соответствует материальному носителю, такому как носитель хранения данных или носитель передачи, включая любой носитель, который позволяет обеспечить пересылку компьютерной программы из одного места в другое, например, согласно какому-либо протоколу связи. В этом аспекте компьютерно-читаемый носитель в общем случае может соответствовать (1) материальному компьютерно-читаемому запоминающему носителю, который является долговременным, или (2) среде связи, такой как сигнал или несущая волна. Носителями для запоминания данных могут быть любые доступные носители, доступ к которым может осуществляться одним или более компьютерами или одним или более процессорами для извлечения команд, кода и/или структур данных для реализации раскрытых в данном изобретении методик. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, these functions can be stored or transmitted in the form of one or more instructions or code on a computer-readable medium and executed by a processing hardware unit. A computer-readable medium may include a computer-readable storage medium that corresponds to a material medium, such as a storage medium or a transmission medium, including any medium that allows for transferring a computer program from one place to another, for example, according to any communication protocol. In this aspect, a computer-readable medium may generally correspond to (1) a tangible computer-readable storage medium, which is long-term, or (2) a communication medium such as a signal or carrier wave. Storage media for storage of data can be any available storage media that can be accessed by one or more computers or one or more processors to extract instructions, code, and / or data structures to implement the techniques disclosed in this invention. A computer program product may include a computer-readable medium.

В качестве примера, но не как ограничение, указанный компьютерно-читаемый запоминающий носитель может содержать ОЗУ (RAM), ПЗУ (ROM), электрически стираемое программируемое ПЗУ (EEPROM), ПЗУ на компакт-диске (CD-ROM) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающее устройства, флэш-память, или любой другой носитель, который можно использовать для запоминания требуемого программного кода в виде команд или структур данных, и к которым может иметь доступ компьютер. Также компьютерно-читаемым запоминающим носителем будет правильно назвать любое соединение. Например, если команды передаются с Веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радиосвязь и микроволновая связь, то тогда коаксиальный кабель, оптоволоконный кабель, витая пара, линии DSL или такие беспроводные технологии, как инфракрасная связь, радиосвязь и микроволновая связь, входят в определение носителя. Однако следует понимать, что термины: «компьютерно-читаемый запоминающий носитель» и «носитель для хранения данных» не включают в себя соединения, несущие волны, сигналы или другие временные носители, а относятся к материальному долговременному запоминающему носителю. Используемый здесь термин «диск» относится к компакт-диску (CD), лазерному диску, оптическому диску, цифровому универсальному диску (DVD), флоппи-диску и диску Blu-ray, причем оптические диски воспроизводят данные оптически с использованием лазеров, в то время как магнитные диски воспроизводят данные магнитным путем. В понятие компьютерно-читаемого запоминающего носителя также следует отнести комбинации из вышеперечисленного.By way of example, but not limitation, said computer-readable storage medium may include RAM, ROM, electrically erasable programmable ROM (EEPROM), ROM on a compact disc (CD-ROM), or other storage device on optical disks, a magnetic disk storage device or other magnetic storage devices, flash memory, or any other medium that can be used to store the required program code in the form of instructions or data structures that can be accessed by a computer. Also, any connection will correctly be called a computer-readable storage medium. For example, if commands are transmitted from a Web site, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair cable, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then a coaxial cable , fiber optic cable, twisted pair, DSL lines, or wireless technologies such as infrared, radio, and microwave, are included in the media definition. However, it should be understood that the terms “computer-readable storage medium” and “storage medium” do not include connections carrying waves, signals, or other temporary media, but refer to a tangible long-term storage medium. As used herein, the term “disc” refers to a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a floppy disc, and a Blu-ray disc, the optical discs reproducing data optically using lasers, while how magnetic disks reproduce data in a magnetic way. Combinations of the above should also be included in the concept of a computer-readable storage medium.

Команды могут выполняться одним или более процессорами, такими как один или более цифровых процессоров сигналов (DSP), микропроцессоров общего назначения, прикладных специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), или других эквивалентных интегральных или дискретных логических схем. Соответственно, используемый здесь термин «процессор» может относиться к любой из вышеописанных структур или любой иной структуре, подходящей для реализации вышеописанных методик. Вдобавок, в некоторых аспектах описанные здесь функциональные возможности могут быть обеспечены в рамках специализированных аппаратных и/или программных модулей, сконфигурированных для кодирования и декодирования, или включенных в состав комбинированного кодека. Также раскрытые здесь методики можно полностью реализовать в одной или более схемах или логических элементах.Commands may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), user programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term “processor” as used herein may refer to any of the above structures or any other structure suitable for implementing the above methods. In addition, in some aspects, the functionality described herein may be provided within specialized hardware and / or software modules configured for encoding and decoding, or included in a combination codec. Also, the techniques disclosed herein may be fully implemented in one or more circuits or logic elements.

Раскрытые здесь методики могут быть реализованы в самых разных устройствах или установках, включая беспроводную телефонную трубку, интегральную схему (IC) или набор интегральных схем (например, микропроцессорный набор). Различные компоненты, модули или блоки описаны здесь таким образом, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых здесь методик, причем для этого не требуется их реализация с помощью различных аппаратных блоков. Скорее наоборот, как обсуждалось выше, различные блоки могут быть скомбинированы в аппаратном блоке-кодеке или обеспечены в виде набора взаимодействующих аппаратных блоков, включая один или более процессоров, как было описано выше, в сочетании с подходящим программным и/или программно-аппаратным обеспечением.The techniques disclosed herein may be implemented in a wide variety of devices or installations, including a cordless handset, integrated circuit (IC), or a set of integrated circuits (e.g., microprocessor set). Various components, modules or blocks are described herein in such a way as to emphasize the functional aspects of devices configured to perform the techniques disclosed herein, and this does not require their implementation using various hardware blocks. Rather, on the contrary, as discussed above, the various units can be combined in a hardware codec unit or provided as a set of interacting hardware units, including one or more processors, as described above, in combination with suitable software and / or firmware.

Здесь были описаны различные примеры. Эти и другие примеры входят в объем нижеследующей формулы изобретения.Various examples have been described here. These and other examples are included in the scope of the following claims.

Claims (37)

1. Способ кодирования видеоданных, причем способ содержит:
определение значения центра для набора пикселей, причем значение центра основано на значениях упомянутых пикселей;
разделение полос значений пикселей на две или более групп полос на основе упомянутого значения центра, причем каждая полоса из полос значений пикселей содержит диапазон значений пикселей, и причем каждая группа из двух или более групп полос содержит одну или более полос;
определение значений смещения для упомянутых полос на основе упомянутых двух или более групп полос.
1. A method of encoding video data, the method comprising:
determining a center value for a set of pixels, wherein the center value is based on the values of said pixels;
dividing the stripes of pixel values into two or more groups of stripes based on said center value, wherein each strip of stripes of pixel values contains a range of pixel values, and wherein each group of two or more groups of stripes contains one or more stripes;
determining offset values for said bands based on said two or more groups of bands.
2. Способ по п. 1, причем способ реализуется видеодекодером, и причем определение значения центра содержит прием синтаксического элемента, и причем разделение полос значений пикселей на две или более групп полос содержит определение упомянутых двух или более групп полос на основе упомянутого синтаксического элемента, при этом способ дополнительно содержит применение фильтра адаптивного смещения отсчетов (SAO) на основе упомянутых значений смещения.2. The method according to claim 1, wherein the method is implemented by a video decoder, and moreover, determining the center value comprises receiving a syntax element, and furthermore dividing the pixel value bands into two or more groups of strips comprises determining said two or more groups of strips based on said syntax element, this method further comprises applying an adaptive sampling bias (SAO) filter based on said bias values. 3. Способ по п. 1, причем способ реализуется видеокодером, и причем способ дополнительно содержит:
формирование синтаксического элемента для его включения в закодированный битовый поток, причем синтаксический элемент указывает упомянутое значение центра.
3. The method according to claim 1, wherein the method is implemented by a video encoder, and wherein the method further comprises:
generating a syntax element for inclusion in the encoded bitstream, wherein the syntax element indicates the center value.
4. Способ по п. 1, в котором определение значения центра содержит определение среднего значения для упомянутого набора пикселей.4. The method of claim 1, wherein determining the center value comprises determining an average value for said set of pixels. 5. Способ по п. 1, в котором определение значения центра содержит определение значения медианы для упомянутого набора пикселей.5. The method of claim 1, wherein determining the center value comprises determining a median value for said set of pixels. 6. Способ по п. 1, в котором определение значения центра содержит определение пикселя, на который попадает пик гистограммы.6. The method according to claim 1, wherein determining the center value comprises determining a pixel onto which the peak of the histogram falls. 7. Способ по п. 1, в котором упомянутый набор пикселей содержит группу самых крупных блоков кодирования (LCU).7. The method of claim 1, wherein said set of pixels comprises a group of largest coding units (LCUs). 8. Способ по п. 1, в котором определение значений смещения для упомянутых полос на основе упомянутых двух или более групп полос содержит формирование значения смещения для полосы из первой группы на основе смещения второй полосы из упомянутой первой группы.8. The method of claim 1, wherein determining the offset values for said bands based on said two or more groups of bands comprises generating an offset value for a strip from the first group based on the offset of the second strip from said first group. 9. Способ по п. 1, в котором определение значений смещения для упомянутых полос на основе упомянутых двух или более групп полос содержит формирование значения смещения для полосы из первой группы на основе смещения полосы, определенного для соседнего участка.9. The method of claim 1, wherein determining the offset values for said bands based on said two or more groups of bands comprises generating an offset value for a strip from the first group based on a strip offset determined for a neighboring portion. 10. Устройство видеокодирования, причем устройство видеокодирования содержит:
видеокодер, сконфигурированный для определения значения центра для набора пикселей, причем значение центра основано на значениях упомянутых пикселей; разделения полос значений пикселей на две или более групп полос на основе упомянутого значения центра, причем каждая полоса из упомянутых полос значений пикселей содержит диапазон значений пикселей, и причем
каждая группа из упомянутых двух или более групп полос содержит одну или более полос; и определения значений смещения для упомянутых полос на основе упомянутых двух или групп полос.
10. A video coding device, wherein the video coding device comprises:
a video encoder configured to determine a center value for a set of pixels, wherein the center value is based on the values of said pixels; dividing the bands of pixel values into two or more groups of bands based on said center value, each strip of said pixel value bands containing a range of pixel values, and wherein
each group of said two or more groups of bands contains one or more bands; and determining bias values for said bands based on said two or groups of bands.
11. Устройство видеокодирования по п. 10, в котором видеокодер содержит видеодекодер, и в котором видеокодер сконфигурирован для определения значения центра путем приема синтаксического элемента;
разделения упомянутых полос значений пикселей на две или более групп полос путем определения двух или более групп полос на основе упомянутого синтаксического элемента; и
применения фильтра адаптивного смещения отсчетов (SAO) на основе упомянутых значений смещения.
11. The video coding apparatus of claim 10, wherein the video encoder comprises a video decoder, and in which the video encoder is configured to determine a center value by receiving a syntax element;
dividing said bands of pixel values into two or more groups of bands by determining two or more groups of bands based on said syntax element; and
applying an adaptive sampling bias (SAO) filter based on said bias values.
12. Устройство видеокодирования по п. 10, в котором видеокодер содержит видеокодер, и в котором видеокодер дополнительно сконфигурирован для формирования синтаксического элемента для его включения в закодированный битовый поток, причем синтаксический элемент указывает упомянутое значение центра.12. The video coding apparatus according to claim 10, wherein the video encoder comprises a video encoder, and in which the video encoder is further configured to form a syntax element for inclusion in the encoded bitstream, the syntax element indicating said center value. 13. Устройство видеокодирования по п. 10, в котором видеокодер сконфигурирован для определения значения центра на основе среднего значения для упомянутого набора пикселей.13. The video coding apparatus of claim 10, wherein the video encoder is configured to determine a center value based on an average value for said set of pixels. 14. Устройство видеокодирования по п. 10, в котором видеокодер сконфигурирован для определения значения центра на основе значения медианы для упомянутого набора пикселей.14. The video coding apparatus of claim 10, wherein the video encoder is configured to determine a center value based on a median value for said set of pixels. 15. Устройство видеокодирования по п. 10, в котором видеокодер сконфигурирован для определения значения центра на основе пикселя, на который попадает пик гистограммы.15. The video coding apparatus according to claim 10, wherein the video encoder is configured to determine a center value based on a pixel to which a histogram peak hits. 16. Устройство видеокодирования по п. 10, в котором упомянутый набор пикселей содержит группу самых крупных блоков кодирования (LCU).16. The video coding apparatus of claim 10, wherein said set of pixels comprises a group of the largest coding units (LCUs). 17. Устройство видеокодирования по п. 10, в котором видеокодер сконфигурирован для определения значений смещения для упомянутых полос на основе упомянутых двух или более групп полос путем формирования значения смещения для полосы из первой группы на основе смещения второй полосы из упомянутой первой группы.17. The video coding apparatus of claim 10, wherein the video encoder is configured to determine offset values for said bands based on said two or more groups of bands by generating an offset value for a strip from the first group based on an offset of the second strip from said first group. 18. Устройство видеокодирования по п. 10, в котором видеокодер сконфигурирован для определения значений смещения для упомянутых полос на основе упомянутых двух или более групп полос путем формирования значения смещения для полосы из первой группы на основе смещения полосы, определенного для соседнего участка.18. The video coding apparatus of claim 10, wherein the video encoder is configured to determine offset values for said bands based on said two or more groups of bands by generating an offset value for a strip from the first group based on a strip offset determined for a neighboring portion. 19. Устройство видеокодирования по п. 10, причем устройство видеокодирования содержит по меньшей мере одно из:
интегральной схемы;
микропроцессора; и
устройства беспроводной связи, которое включает в себя видеокодер.
19. The video coding device according to claim 10, wherein the video coding device comprises at least one of:
integrated circuit;
microprocessor; and
a wireless device that includes a video encoder.
20. Компьютерно-читаемый запоминающий носитель, хранящий команды, выполненные с возможностью инициировать выполнение одним или более процессорами:
определения значения центра для набора пикселей, причем значение центра основано на значениях упомянутых пикселей;
разделения полос значений пикселей на две или более группы полос на основе упомянутого значения центра, причем каждая полоса из упомянутых полос значений пикселей содержит диапазон значений пикселей, и причем каждая группа из упомянутых двух или более групп полос содержит одну или более полос;
определения значений смещения для упомянутых полос на основе упомянутых двух или более групп полос.
20. A computer-readable storage medium that stores instructions executed with the ability to initiate execution by one or more processors:
determining a center value for a set of pixels, the center value being based on the values of said pixels;
dividing the stripes of pixel values into two or more groups of stripes based on said center value, wherein each strip of said stripes of pixel values contains a range of pixel values, and wherein each group of said two or more groups of stripes contains one or more stripes;
determining offset values for said bands based on said two or more groups of bands.
21. Компьютерно-читаемый запоминающий носитель по п. 20, в котором упомянутые один или более процессоров содержат видеодекодер, и в котором упомянутые команды инициируют выполнение одним или более процессорами:
определения значения центра путем приема синтаксического элемента;
разделения полос значений пикселей на две или более групп полос путем определения двух или более групп полос на основе упомянутого синтаксического элемента; и
применения фильтра адаптивного смещения отсчетов (SAO) на основе упомянутых значений смещения.
21. The computer-readable storage medium of claim 20, wherein said one or more processors comprise a video decoder, and in which said commands initiate execution by one or more processors:
determining the center value by receiving a syntax element;
dividing the bands of pixel values into two or more groups of bands by determining two or more groups of bands based on said syntax element; and
applying an adaptive sampling bias (SAO) filter based on said bias values.
22. Компьютерно-читаемый запоминающий носитель по п. 20, причем один или более процессоров содержат видеодекодер, и причем компьютерно-читаемый запоминающий носитель хранит дополнительные команды, которые инициируют формирование одним или более процессорами синтаксического элемента для его включения в закодированный битовый поток, причем синтаксический элемент указывает упомянутое значение центра.22. A computer-readable storage medium according to claim 20, wherein one or more processors comprise a video decoder, and wherein the computer-readable storage medium stores additional instructions that initiate the formation by one or more processors of a syntax element for its inclusion in the encoded bitstream, the syntax being the element indicates the center value mentioned. 23. Компьютерно-читаемый запоминающий носитель по п. 20, в котором упомянутые команды инициируют определение одним или более процессорами значения центра путем определения среднего значения для упомянутого набора пикселей.23. The computer-readable storage medium according to claim 20, wherein said commands initiate the determination by one or more processors of the center value by determining an average value for said set of pixels. 24. Компьютерно-читаемый запоминающий носитель по п. 20, в котором упомянутые команды инициируют определение одним или более процессорами значения центра путем определения значения медианы для упомянутого набора пикселей.24. The computer-readable storage medium of claim 20, wherein said instructions initiate the determination by one or more processors of a center value by determining a median value for said set of pixels. 25. Компьютерно-читаемый запоминающий носитель по п. 20, в котором упомянутые команды инициируют определение одним или более процессорами значения центра путем определения пикселя, на который попадает пик гистограммы.25. The computer-readable storage medium according to claim 20, wherein said commands initiate the determination by one or more processors of the center value by determining the pixel to which the histogram peak hits. 26. Компьютерно-читаемый запоминающий носитель по п. 20, в котором упомянутый набор пикселей содержит группу самых крупных блоков кодирования (LCU).26. The computer-readable storage medium of claim 20, wherein said set of pixels comprises a group of largest coding units (LCUs). 27. Компьютерно-читаемый запоминающий носитель по п. 20, в котором упомянутые команды инициируют определение одним или более процессорами значений смещения для упомянутых полос на основе упомянутых двух или более групп полос путем формирования значения смещения для полосы из первой группы на основе смещения второй полосы из упомянутой первой группы.27. The computer-readable storage medium according to claim 20, wherein said instructions initiate the determination by one or more processors of the offset values for said bands based on said two or more groups of bands by generating an offset value for a strip from the first group based on the offset of the second strip from mentioned first group. 28. Компьютерно-читаемый запоминающий носитель по п. 20, в котором упомянутые команды инициируют определение одним или более процессорами значений смещения для упомянутых полос на основе упомянутых двух или более групп полос путем формирования значения смещения для полосы из первой группы на основе смещения полосы, определенного для соседнего участка.28. The computer-readable storage medium according to claim 20, wherein said instructions initiate the determination by one or more processors of the offset values for said bands based on said two or more groups of bands by generating an offset value for a strip from the first group based on the strip offset determined for the neighboring plot. 29. Устройство для кодирования видеоданных, причем устройство содержит:
средство для определения значения центра для набора пикселей, причем значение центра основано на значениях упомянутых пикселей;
средство для разделения полос значений пикселей на две или более группы полос на основе упомянутого значения центра, причем каждая полоса из упомянутых полос значений пикселей содержит диапазон значений пикселей, и причем каждая группа из упомянутых двух или более групп полос содержит одну или более полос; и
средство для определения значений смещения для упомянутых полос на основе упомянутых двух или более групп полос.
29. A device for encoding video data, the device comprising:
means for determining a center value for a set of pixels, wherein the center value is based on the values of said pixels;
means for dividing the pixel value strips into two or more groups of strips based on said center value, wherein each strip of said pixel value strips contains a range of pixel values, and each group of said two or more stripe groups contains one or more strips; and
means for determining offset values for said bands based on said two or more groups of bands.
30. Устройство по п. 29, причем устройство содержит видеодекодер, и причем средство для определения значения центра содержит средство для приема синтаксического элемента, и средство для разделения полос значений пикселей на две или более группы полос содержит средство для определения двух или более групп полос на основе упомянутого синтаксического элемента; и причем устройство дополнительно содержит средство для применения фильтра адаптивного смещения отсчетов (SAO) на основе упомянутых значений смещения.30. The device according to claim 29, wherein the device comprises a video decoder, and wherein the means for determining the center value comprises means for receiving a syntax element, and means for dividing the bands of pixel values into two or more groups of bands contains means for determining two or more groups of bands into the basis of said syntax element; and wherein the device further comprises means for applying an adaptive sampling bias (SAO) filter based on said bias values. 31. Устройство по п. 29, причем устройство содержит видеокодер, и причем устройство дополнительно содержит:
средство для формирования синтаксического элемента для его включения в закодированный битовый поток, причем синтаксический элемент указывает упомянутое значение центра.
31. The device according to p. 29, wherein the device comprises a video encoder, and wherein the device further comprises:
means for generating a syntax element for incorporating it into the encoded bitstream, the syntax element indicating said center value.
32. Устройство по п. 29, в котором средство для определения значения центра содержит средство для определения среднего значения для упомянутого набора пикселей.32. The apparatus of claim 29, wherein the means for determining the center value comprises means for determining an average value for said set of pixels. 33. Устройство по п. 29, в котором средство для определения значения центра содержит средство для определения значения медианы для упомянутого набора пикселей.33. The device according to p. 29, in which the means for determining the value of the center contains means for determining the median value for said set of pixels. 34. Устройство по п. 29, в котором средство для определения значения центра содержит средство для определения пикселя, на который попадает пик гистограммы.34. The device according to p. 29, in which the means for determining the value of the center contains means for determining the pixel on which the peak of the histogram. 35. Устройство по п. 29, в котором упомянутый набор пикселей содержит группу самых крупных блоков кодирования (LCU).35. The device according to p. 29, in which said set of pixels contains a group of the largest coding units (LCUs). 36. Устройство по п. 29, в котором средство для определения значений смещения для упомянутых полос на основе упомянутых двух или более групп полос содержит средство для формирования значения смещения для полосы из первой группы на основе смещения второй полосы из упомянутой первой группы.36. The apparatus of claim 29, wherein the means for determining the offset values for said bands based on said two or more groups of bands comprises means for generating an offset value for a strip from the first group based on the offset of the second strip from said first group. 37. Устройство по п. 29, в котором средство для определения значений смещения для упомянутых полос на основе упомянутых двух или более групп полос содержит средство для формирования значения смещения для полосы из первой группы на основе смещения полосы, определенного для соседнего участка. 37. The apparatus of claim 29, wherein the means for determining the offset values for said bands based on said two or more groups of bands comprises means for generating an offset value for a strip from the first group based on a strip offset determined for a neighboring portion.
RU2014122539/08A 2011-11-04 2012-11-02 Filter of central band adaptive shift for video coding RU2575418C2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161556085P 2011-11-04 2011-11-04
US61/556,085 2011-11-04
US13/646,102 2012-10-05
US13/646,102 US10051289B2 (en) 2011-11-04 2012-10-05 Adaptive center band offset filter for video coding
PCT/US2012/063273 WO2013067318A1 (en) 2011-11-04 2012-11-02 Adaptive center band offset filter for video coding

Publications (2)

Publication Number Publication Date
RU2014122539A RU2014122539A (en) 2015-12-10
RU2575418C2 true RU2575418C2 (en) 2016-02-20

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2238586C2 (en) * 2000-03-27 2004-10-20 Лук Дайнэмикс, Инк. Device and method for describing, encoding, string and searching images on basis of their geometry
RU2369897C2 (en) * 2003-10-23 2009-10-10 Майкрософт Корпорейшн Graphic user interface for three-dimensional display of data collection based on data attribute

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2238586C2 (en) * 2000-03-27 2004-10-20 Лук Дайнэмикс, Инк. Device and method for describing, encoding, string and searching images on basis of their geometry
RU2369897C2 (en) * 2003-10-23 2009-10-10 Майкрософт Корпорейшн Graphic user interface for three-dimensional display of data collection based on data attribute

Similar Documents

Publication Publication Date Title
JP7044765B2 (en) Linear model chroma intra prediction for video coding
AU2016271140B2 (en) Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
AU2012332318B2 (en) Adaptive center band offset filter for video coding
US9161046B2 (en) Determining quantization parameters for deblocking filtering for video coding
RU2584498C2 (en) Intra-mode video encoding
RU2602380C2 (en) Context amount reducing for context adaptive binary arithmetic coding
US9332257B2 (en) Coded black flag coding for 4:2:2 sample format in video coding
RU2580082C2 (en) Signalling syntax elements for transform coefficients for sub-sets of leaf-level coding unit
US20130195199A1 (en) Residual quad tree (rqt) coding for video coding
RU2629437C2 (en) Obtaining the context to encode the last position when performing the encoding
AU2013249532A1 (en) Coefficient groups and coefficient coding for coefficient scans
KR20140096130A (en) Adaptive overlapped block motion compensation
EA035121B1 (en) Decoding video data for escape-mode pixels in palette-mode coded blocks
KR20150140729A (en) Sample adaptive offset scaling based on bit-depth
KR20200007044A (en) Intra-frame prediction method and apparatus
RU2575418C2 (en) Filter of central band adaptive shift for video coding
RU2575398C2 (en) Reduction of number of contexts for context adaptive binary arithmetic coding
RU2575409C2 (en) Context reduction for context-adaptive binary arithmetic coding