RU2575418C2 - Filter of central band adaptive shift for video coding - Google Patents
Filter of central band adaptive shift for video coding Download PDFInfo
- 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
Links
- 230000003044 adaptive Effects 0.000 title claims abstract description 27
- 238000005070 sampling Methods 0.000 claims description 8
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 238000005755 formation reaction Methods 0.000 claims 1
- 238000001914 filtration Methods 0.000 abstract description 31
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 238000000034 method Methods 0.000 description 64
- 238000004891 communication Methods 0.000 description 15
- 230000000875 corresponding Effects 0.000 description 13
- 238000007906 compression Methods 0.000 description 12
- 230000011664 signaling Effects 0.000 description 12
- 241001442055 Vipera berus Species 0.000 description 9
- 230000002123 temporal effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000003068 static Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical Effects 0.000 description 3
- 230000001131 transforming Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000002457 bidirectional Effects 0.000 description 2
- 230000000903 blocking Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000000051 modifying Effects 0.000 description 2
- 101700080201 SC29 Proteins 0.000 description 1
- 229940116821 SSD Drugs 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000001413 cellular Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001702 transmitter Effects 0.000 description 1
Images
Abstract
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
Устройство-адресат 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
В качестве альтернативы закодированные данные могут выводиться из выходного интерфейса 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
Раскрытые здесь методики не обязательно ограничиваются беспроводными приложениями или установками. Эти методики можно применить к видеокодированию для поддержки любого из разнообразных мультимедийных приложений, таких как эфирное телевизионное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео, например, через Интернет, кодирование цифрового видео для запоминания на носителе данных, декодирование цифрового видео, хранящегося на носителе данных, или другие приложения. В некоторых примерах система 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,
В примере по фиг. 1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20 и выходной интерфейс 22. В некоторых случаях выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве-источнике 12 источник 18 видео может включать в себя такой источник, как устройство захвата видео, например, видеокамеру, видеоархив, содержащий ранее захваченное видео, интерфейс подачи видео для приема видео от провайдера видеоконтента и/или системы компьютерной графики для формирования компьютерных графических данных в качестве исходного видео или комбинации указанных источников. Например, если источник 18 видео представляет собой видеокамеру, то устройство-источник 12 и устройство-адресат 14 могут образовать так называемые видеофоны или камерофоны. Однако описанные в данном изобретении методики можно применять к видеокодированию в целом и использовать для беспроводных и/или проводных приложений.In the example of FIG. 1, source device 12 includes a
Захваченное в данный момент, предварительно захваченное или сформированное компьютером видео может быть закодировано видеокодером 20. Закодированные видеоданные могут передаваться непосредственно на устройство-адресат 14 через выходной интерфейс 22 устройства-источника 12. Закодированные видеоданные также (или в качестве альтернативы) могут запоминаться в запоминающем устройстве 32 для обращения к ним в будущем со стороны устройства-адресата 14 или других устройств для декодирования и/или воспроизведения.The currently captured, pre-captured or computer-generated video can be encoded by
Устройство-адресат 14 включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В некоторых случаях входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства-адресата 14 принимает закодированные видеоданные через линию 16 связи. Закодированные видеоданные, переданные через линию 16 связи, или предусмотренные в запоминающем устройстве 32, могут включать в себя разнообразные синтаксические элементы, сформированные видеокодером 20 для использования видеодекодером, таким как видеодекодер 30, при декодировании видеоданных. Указанные синтаксические элементы могут быть включены в кодированные видеоданные, передаваемые через среду связи, запоминаемые на носителе данных или запоминаемые на файловом сервере.The destination device 14 includes an
Устройство 32 отображения может являться составной частью (или быть внешним) устройства-адресата 14. В некоторых примерах устройство-адресат 14 может включать в себя интегрированное в него устройство отображения, а также быть сконфигурировано для взаимодействия с внешним устройством отображения. В других примерах устройством-адресатом 14 может быть устройство отображения. В общем случае устройство 32 отображения отображает пользователю декодированные видеоданные и может содержать любое из разнообразных устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или устройство отображения другого типа.The
Видеокодер 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.
В качестве альтернативы видеокодер 20 и видеодекодер 30 могут работать согласно другим коммерческим или промышленным стандартам, таким как стандарт ITU-T H.264, также называемый MPEG-4, часть 10, AVC (усовершенствованное видеокодирование) или расширениям указанных стандартов. Однако методики, раскрытые в данном изобретении, не ограничиваются каким-либо конкретным стандартом кодирования. Другие примеры стандартов сжатия видео включают в себя MPEG-2 и ITU-T H.263.Alternatively,
Хотя это на фиг. 1 не показано, согласно некоторым аспектам видеокодер 20 и видеодекодер 30 могут быть интегрированы каждый с аудиокодером и аудиодекодером и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексор-демультиплексор) или другие аппаратные и программные средства для кодирования как аудио, так и видео в общем потоке данных или в отдельных потоках данных. В некоторых примерах, если это имеет место, блоки MUX-DEMUX могут соответствовать Протоколу мультиплексора ITU H.223 или другим протоколам, таким как Протокол дэйтаграмм пользователя (UDP).Although this is in FIG. 1 is not shown, in some aspects,
Видеокодер 20 и видеодекодер 30 могут быть реализованы каждый в виде любых подходящих схем кодера или декодера, таких как один или более микропроцессоров, процессоры DSP, интегральные схемы ASIC, вентильные матрицы FPGA, дискретные логические схемы, программные средства, аппаратные средства, программно-аппаратные средства или любая их комбинация. При частичной реализации указанных методик программными средствами устройство может хранить команды программного обеспечения на подходящем долговременном компьютерно-читаемом носителе для выполнения этих команд аппаратными средствами с использованием одного или более процессоров, реализующих раскрытые в изобретении методики. Как видеокодер 20, так и видеодекодер 30 могут быть включены в состав одного или более кодеров или декодеров, либо каждый из них может быть интегрирован в объединенном кодере/декодере («CODEC») в соответствующем устройстве.
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,
В общем случае блок 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,
Видеопоследовательность, как правило, включает в себя ряд видеокадров или видеоизображений. Группа изображений (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.
Например, модель 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,
После любого преобразования для создания коэффициентов преобразования видеокодер 20 может выполнить квантование коэффициентов преобразования. Квантование в общем случае относится к процессу, в ходе которого выполняется квантование коэффициентов преобразования с целью возможного сокращения объема данных, используемых для представления указанных коэффициентов, что обеспечивает дополнительное сжатие. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми упомянутыми коэффициентами. Например, n-битовое значение можно округлить в меньшую сторону, получив m-битовое значение во время квантования, где n больше, чем m.After any conversion to create conversion coefficients,
В некоторых примерах видеокодер 20 может использовать заранее определенное сканирование или порядок «сканирования» для сканирования квантованных коэффициентов преобразования, чтобы получить сериализированный вектор, который можно закодировать с использованием энтропийного кодирования. В других примерах видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора видеокодер 20 может выполнить кодирование этого одномерного вектора, используя энтропийное кодирование, например, в соответствии с контекстно-зависимым адаптивным кодированием с переменной длиной слова (CAVLC), контекстно-адаптивным бинарным арифметическим кодированием (CABAC), синтаксически ориентированным адаптивным бинарным арифметическим кодированием (SBAC), вероятностным энтропийным кодированием с интервальным разбиением (PIPE), или другим методом энтропийного кодирования. Видеокодер 20 может также, выполнить энтропийное кодирование синтаксических элементов, связанных с закодированными видеоданными, для использования видеодекодером 30 при декодировании видеоданных.In some examples,
Для выполнения кодирования CABAC видеокодер 20 может присвоить контекст в контекстной модели для символа, подлежащего передаче. Этот контекст может относиться, например, к тому, являются ли соседние значения символа ненулевыми. Для выполнения кодирования CAVLC видеокодер 20 может выбрать код переменной длины для символа, подлежащего передаче. Кодовые слова в VLC могут быть построены так, чтобы относительно более короткие коды соответствовали более вероятным символам, в то время как относительно более длинные коды соответствовали менее вероятным символам. Таким образом, использование кодирования VLC может обеспечить экономное использование бит, например, путем использования кодовых слов одинаковой длины для каждого символа, подлежащего передаче. Определение вероятности может быть основано на контексте, присвоенном данному символу.To perform CABAC encoding,
В общем случае добавление значений смещения к пикселям в видеокадре в некоторых случаях может повысить качество кодирования. Например, значения смещения могут быть использованы для пикселей восстановленного видеоблока, чтобы компенсировать изменения яркости, ошибки квантования или, в более общем контексте, сделать декодированные данные более похожими на исходные видеоданные. Способы 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
На фиг. 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
Текущий пиксель 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
В свете приведенного выше описания для каждой классификации смещения краев значения типа края можно вычислить с помощью следующего псевдокода: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 =
если (C<пикселя 1), то EdgeType=EdgeType-1;if (C <pixel 1), then EdgeType = EdgeType-1;
если (C>пикселя 2), то EdgeType=EdgeType+1;if (C> pixel 2), then EdgeType =
если (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
Как показано на фиг. 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
На фиг. 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.
В примере по фиг. 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,
Как показано на фиг. 4, видеокодер 20 принимает видеоданные, а модуль 35 разбиения разбивает эти данные на видеоблоки. Это разбиение может также включать в себя разбиение не слайсы, тайлы (мозаичные фрагменты) или другие более крупные блоки, а также разбиение видеоблоков, например, в соответствии со структурой квадродерева, куда входят блоки LCU и CU. Видеокодер 20 в общем случае содержит компоненты, которые выполняют кодирование видеоблоков в видеослайсе, подлежащем кодированию. Слайс может быть разделен на множество видеоблоков (и возможно на наборы видеоблоков, называемые здесь «тайлами»). Модуль 41 предсказания может выбрать один из множества возможных режимов кодирования, например, один из множества режимов кодирования с интра-предсказанием, или один из множества режимов кодирования с интер-предсказанием, для текущего видеоблока на основе результатов ошибок (например, скорости кодирования и уровня искажения). Модуль 41 предсказания может подать результирующий блок, закодированный с интра- или интер-предсказанием, на сумматор 50 для формирования остаточных блочных банных и на сумматор 62 для восстановления закодированного блока с целью его использования в качестве опорного изображения.As shown in FIG. 4,
Модуль 46 интра-предсказания в модуле 41 предсказания может выполнять кодирование текущего видеоблока с интра-предсказанием по отношению к одному или более соседним блокам в том же кадре или слайсе в качестве текущего блока, подлежащего кодированию, для обеспечения пространственного сжатия. Модуль 42 оценки движения и модуль 44 компенсации движения в модуле 41 предсказания выполняют кодирование с интер-предсказанием текущего видеоблока относительно одного или более предсказанных блоков в одном или более опорных изображениях, чтобы обеспечить временное сжатие.The
Модуль 42 оценки движения может быть сконфигурирован для определения режима интер-предсказания для видеослайса согласно заранее определенному шаблону для видеопоследовательности. Заранее определенный шаблон может обозначить видеослайсы в упомянутой последовательности как предсказанные слайсы (P слайсы), слайсы, с двунаправленным предсказанием (B слайсы) или обобщенные P/В слайсы (GPB слайсы). Модуль 42 оценки движения и модуль 44 компенсации движения могут быть объединены с высокой степенью интеграции, но они показаны здесь отдельно в концептуальных целях. Оценка движения, выполняемая модулем 42 оценки движения, представляет собой процесс формирования векторов движения, в ходе которого оценивается движение видеоблоков. Вектор движения, например, может указывать смещение PU видеоблока в текущем видеокадре или изображении относительно предсказанного блока в опорном изображении.
Предсказанный блок - это блок, который определяют на основе близкого соответствия блоку 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,
Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока в слайсе, закодированном с интер-предсказанием, путем сравнения позиции данного PU с позицией предсказанного блока опорного изображения. Опорное изображение может быть выбрано из первого списка опорных изображений (список 0) или второго списка опорных изображений (список 1), каждый из которых идентифицирует одно или более опорных изображений, хранящихся в памяти 64 опорных изображений. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.
Компенсация движения, выполняемая модулем 44 компенсации движения, может содержать извлечение или формирование предсказанного блока на основе вектора движения, определенного в результате оценки движения, возможно с выполнением интерполяций с точностью до долей пикселя. После получения вектора движения для PU текущего видеоблока модуль 44 компенсации движения может определить местоположение предсказанного блока, на которое указывает вектор движения, в одном из списков опорных изображений. Видеокодер 20 формирует остаточный видеоблок путем вычитания пиксельных значений предсказанного блока из пиксельных значений текущего кодируемого видеоблока, формируя значения пиксельных разностей. Значения пиксельных разностей образуют остаточные данные для рассматриваемого блока, причем они могут включать в себя разностные компоненты яркости и цветности. Сумматор 50 представляет ту компоненту или компоненты, которые выполняют указанную операцию вычитания. Модуль 44 компенсации движения может также сформировать синтаксические элементы, связанные с видеоблоками и видеослайсом, для их использования видеодекодером 30 при декодировании видеоблоков видеослайса.The motion compensation performed by the
Модуль 46 интра-предсказания может выполнить интра-предсказание на текущем блоке в качестве альтернативы интер-предсказании, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как было описано выше. В частности, модуль 46 интра-предсказания может определить режим интра-предсказания для его использования при кодировании текущего блока. В некоторых примерах модуль 46 интра-предсказания может выполнить кодирование текущего блока, используя различные режимы интра-предсказания, например, во время отдельных проходов кодирования, а модуль 46 интра-предсказания (или модуль 40 выбора режима в некоторых примерах) может выбрать необходимый режим интра-предсказания из тестируемых режимов. Например, модуль 46 интра-предсказания может вычислить значения для пары «скорость-искажение», используя анализ зависимости искажения от скорости на один отсчет для различных тестируемых режимов интра-предсказания и выбрать режим интра-предсказания, имеющий наилучшие характеристики «скорость-искажение» среди тестируемых режимов. Анализ зависимости искажения от скорости в общем случае определяет величину искажения (или ошибки) между закодированным блоком и исходным не закодированным блоком, который был закодирован для создания данного закодированного блока, а также битовую скорость (то есть, количество бит), используемую для создания данного закодированного блока. Модуль 46 интра-предсказания может вычислить соответствующие отношения, исходя из значений упомянутых искажений и скоростей, для различных закодированных блоков, чтобы определить, какой режим интра-предсказания дает наилучшее соотношение «скорость-искажение» для данного блока.The
В любом случае после выбора режима интра-предсказания для блока модуль 46 интра-предсказания может предоставить модулю 56 энтропийного кодирования информацию, указывающую выбранный режим интра-предсказания для данного блока. Модуль 56 энтропийного кодирования может выполнить кодирование информации, указывающей выбранный режим интра-предсказания, в соответствии с раскрытыми здесь методиками. Видеокодер 20 может включить данные о конфигурации в передаваемый битовый поток, которые могут содержать множество таблиц с индексами режимов интра-предсказания и множество таблиц с модифицированными индексами режимов интра-предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков и указания о наиболее вероятном режиме интра-предсказания, таблицу индексов режимов интра-предсказания и таблицу модифицированных индексов режимов интра-предсказания для их использования для каждого из упомянутых контекстов.In any case, after selecting the intra prediction mode for the block, the
После формирования модулем 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
Модуль 52 преобразования может послать результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования выполняет квантование коэффициентов преобразования для дополнительного уменьшения битовой скорости. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми упомянутыми коэффициентами. Степень квантования можно модифицировать, регулируя параметр квантования. В некоторых примерах модуль 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы, сканирование может быть выполнено модулем 56 энтропийного кодирования.
Вслед за квантованием модуль 56 энтропийного кодирования выполняет энтропийное кодирование квантованных коэффициентов преобразования. Например, модуль 56 энтропийного кодирования может выполнить контекстно-зависимое адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное бинарное арифметическое кодирование (CABAC), синтаксически ориентированное адаптивное бинарное арифметическое кодирование (SBAC), вероятностное энтропийное кодирование с интервальным разбиением (PIPE) или использовать другую методологию или методику кодирования. После выполнения модулем 56 энтропийного кодирования закодированный битовый поток может быть передан на видеодекодер 10 или заархивирован для будущей передачи или извлечения видеодекодером 30. Модуль 56 энтропийного кодирования также может выполнить энтропийное кодирование векторов движения и других синтаксических элементов для кодируемого текущего видеослайса.Following quantization,
Модуль 58 обратного квантования и модуль 60 обратного преобразования выполняют соответственно обратное квантование и обратное преобразование для восстановления остаточного блока в пиксельной области для использования в дальнейшем в качестве опорного блока опорного изображения. Модуль 44 компенсации движения может вычислить опорный блок путем добавления остаточного блока к предсказанному блоку одного из опорных изображений в одном из списков опорных изображений. Модуль 44 компенсации движения также может применить один или более интерполяционных фильтров для восстановленного остаточного блока, чтобы вычислить пиксельные значения в долях пикселя для использования при оценке движения. Сумматор 62 складывает восстановленный остаточный блок с предсказанным блоком, созданным модулем 44 компенсации движения, для создания опорного блока для его запоминания в памяти 64 опорных изображений.The
Перед запоминанием в памяти 64 может быть выполнена фильтрация восстановленного остаточного блока одним или более фильтрами. Если это необходимо, то для фильтрации восстановленных остаточных блоков также можно использовать деблокирующий фильтр 72 для устранения артефактов «блочности». Для сглаживания переходов между пикселями или иного улучшения качества видео можно также использовать другие контурные фильтры (либо на входе контура кодирования, либо после контура кодирования). Одним из примеров другого фильтра является SAO фильтр 74. Модуль 42 оценки движения и модуль 44 компенсации движения могут использовать указанный опорный блок в качестве опорного блока для интра-предсказания блока в следующем видеокадре или видеоизображении.Before storing in
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.
В некоторых конфигурациях SAO фильтр 74 может быть сконфигурирован для применения двух типов смещения (например, смещение полосы и смещение края) как было описано выше. SAO фильтр 74 также иногда может вообще не применять смещение, что само по себе можно рассматривать как третий тип смещения. О типе смещения, примененном SAO фильтром 74, может быть сообщено видеодекодеру либо в явном, либо в неявном виде. При применении смещения края пиксели могут классифицироваться на основе информации о краях в соответствии с фиг. 2, и фильтр можно будет определить на основе классификации краев. При применении смещения полос SAO фильтр 74 может классифицировать пиксели по разным полосам на основе значения пикселя, такого как значение интенсивности, причем каждая полоса будет иметь соответствующее ей смещение.In some SAO configurations, the
В целях сигнализации и формирования смещений для различных полос 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
Каждая полоса может охватывать некоторый диапазон значений пикселей. Значением пикселя может быть, например, значение интенсивности пикселя, при этом значение пикселя может описывать любое из следующих значений: значение 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
В одном примере, если предположить, что максимальным значением пикселя является 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 фильтр 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
Хотя раскрытые здесь методики описаны на примерах, в которых используются тридцать две полосы и две группы по шестнадцать полос, эти методики в общем случае применимы к схемам 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
Методики для нахождения центра можно применить к каждому блоку 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
Видеокодер 20 по фиг. 4 представляет пример видеокодера, сконфигурированного для определения значения центра для набора пикселей на основе значений этих пикселей; разделения полос значений пикселей на группы на основе значения центра; и определения значений смещения для полос на основе указанных групп. Видеокодер 20 может определить центр для первого набора пикселей посредством определения среднего значения для набора пикселей, определения значения медианы для набора пикселей и/или определения пикселя, на который попал пик гистограммы. Видеокодер 20 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения полосы для полосы первой группы на основе смещения второй полосы первой группы. Видеокодер 20 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения полосы для полосы из первой группы на основе смещения полосы, определенного для соседнего участка. Видеокодер 20 может также сообщить о значениях смещения полосы для соседнего участка. Видеокодер 20 также может сообщить видеодекодеру значения смещения полосы на основе указанных групп. В некоторых реализациях видеокодер 20 может сформировать синтаксический элемент для его включения в закодированный битовый поток, который указывает определенное значение центра. В некоторых случаях этот синтаксический элемент может представлять собой указание в явном виде о центре, определенном для группы полос, но этот синтаксический элемент не обязательно должен представлять собой указание в явном виде об определенном центре. Например, значение центра может идентифицировать первую или последнюю полосу в конкретной группе, чтобы разрешить видеодекодеру восстановить аналогичные группировки полос, определенные видеокодером 20. В указанном случае эти группировки полос, восстановленные видеодекодером, можно выровнять по тому же центру, что и группировки, определенные видеокодером, даже если указанный центр не передан в явном виде в закодированном битовом потоке.The
На фиг. 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
В ходе процесса декодирования видеодекодер 30 принимает закодированный битовый видеопоток, представляющий видеоблоки закодированного видеослайса и соответствующие синтаксические элементы от видеокодера 20. Модуль 80 энтропийного декодирования видеодекодера 30 выполняет энтропийное декодирование битового потока, чтобы сформировать квантованные коэффициенты, векторы движения и другие синтаксические элементы. Модуль 80 энтропийного декодирования направляет эти векторы движения и другие синтаксические элементы в модуль 81 предсказания. Видеодекодер 30 может принять синтаксические элементы на уровне видеослайса и/или на уровне видеоблока.During the decoding process,
Когда видеослайс закодирован с использованием интра-предсказания (I), модуль 84 интра-предсказания модуля 81 предсказания может сформировать данные предсказания для видеоблока текущего видеослайса на основе сигнализации в режиме интра-предсказания, а также на основе данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр закодирован в виде слайса с интер-предсказанием (то есть, B, P или GPB) модуль 82 компенсации движения модуля 81 предсказания создает блоки предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, полученных от модуля 80 энтропийного декодирования. Блоки предсказания можно создать из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может построить списки опорных кадров, список 0 и список 1, используя стандартные методики построения на основе опорных изображений, хранящихся в памяти 92 опорных изображений.When the video slice is encoded using intra prediction (I), the
Модуль 82 компенсации движения определяет информацию предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, модуль 82 компенсации движения использует некоторые из полученных синтаксических элементов для определения режима предсказания (например, интра- или интер-предсказание), используемого для кодирования видеоблоков видеослайса, типа слайса с интер-предсказанием (например, B слайс, P слайс или GPB слайс), информации о структуре для одного или более списков опорных изображений для данного слайса, векторов движения для каждого видеоблока слайса с интер-кодированием, статуса интер-предсказания для каждого видеоблока слайса, закодированного с интер-предсказанием, и другой информации для декодирования видеоблоков в текущем видеослайсе.
Модуль 82 компенсации движения также может выполнить интерполяцию на основе интерполяционных фильтров. Модуль 82 компенсации движения может использовать интерполяционные фильтры, как это делается видеокодером 20 в процессе кодирования видеоблоков для вычисления интерполированных значений для дробных пикселей опорных блоков. В этом случае модуль 82 компенсации движения может определить интерполяционные фильтры, используемые видеокодером 20, исходя из полученных синтаксических элементов, и использовать эти интерполяционные фильтры для создания блоков предсказания.
Модуль 86 обратного квантования выполняет обратное квантование, то есть, деквантование квантованных коэффициентов преобразования, предусмотренных в битовом потоке и декодируемых модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видеокодером 20 для каждого видеоблока в видеослайсе, для определения степени квантования по аналогии со степенью обратного квантования, которую и следует применить. Модуль 88 обратного преобразования применяет обратное преобразование, например, обратное DCT преобразование, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования к коэффициентам преобразования, чтобы обеспечить остаточные блоки в пиксельной области.The
После того, как модуль 82 компенсации движения сформировал блок предсказания для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 формирует декодированный видеоблок посредством суммирования остаточных блоков, полученных от модуля 88 обратного преобразования, с соответствующими блоками предсказания, сформированными модулем 82 компенсации движения. Сумматор 90 представляет компоненту или компоненты, которые выполняют операцию суммирования. Декодированные видеоблоки, сформированные сумматором 90 могут затем быть подвергнуты фильтрации с использованием деблокирующего фильтра 93, SAO фильтра 94 и адаптивного контурного фильтра 95. Декодированные видеоблоки в данном кадре или изображении запоминаются затем в памяти 92 опорных изображений, где хранятся опорные изображения, используемые для последующей компенсации движения. В памяти 92 опорных изображений также запоминается декодированное видео для его представления в дальнейшем на устройстве отображения, таком как дисплейное устройство 32 по фиг. 1.After the
SAO фильтр 94 может быть сконфигурирован для применения той же фильтрации (например, со смещением края и смещением полосы), какую выполняет SAO фильтр 74, обсужденный выше. Таким образом, в качестве составной части выполнения смещения полос SAO фильтр 74 может определить значение центра для первой группы полос, как было описано выше со ссылками на фиг. 4. Значение центра можно, например, определить на основе такой метрики, как среднее значение пикселя, значение медианы пикселя или определить пиксель, на который попал пик гистограммы для блока LCU или группы блоков LCU.The
В некоторых реализациях SAO фильтр 94 может принять в битовом видеопотоке указание о центре, определенном видеокодером. Это указание может быть представлено в виде действительного значения центра, вычисленного видеокодером, или может быть представлено в виде идентификации первой полосы для первой группы, указания о последней полосе первого участка второй группы, среднего значения для первой группы или какого-либо другой информации, которая позволяет SAO фильтру 94 определить группировку полос, использованную видеокодером. На основе первой группы и второй группы, определенных на основе значения центра, SAO фильтр 94 может сформировать значения смещения на основе информации, принятой в закодированном битовом видеопотоке. Для одной из групп, например, для второй группы можно предположить, что все ее значения смещения равны нулю.In some implementations of SAO, the
Для группы блоков LCU SAO фильтр 94 может определить значение центра путем определения среднего значения пикселя для группы блоков LCU. SAO фильтр 94 может определить среднее значение пикселя, просуммировав значения всех или некоторой части пикселей в группе блоков LCU и разделив полученную сумму на количество пикселей, чьи значения вошли в указанную сумму, где результирующее значение будет представлять среднее значение пикселя для группы блоков LCU. Блок 94 SAO фильтра может затем использовать полученное среднее значение пикселя вышеописанным образом для определения группировки полос.For the SAU LCU block group, the
В качестве альтернативы для группы блоков LCU, SAO фильтр 94 может определить значение центра путем определения значения медианы для группы блоков LCU. SAO фильтр 94 может определить значение медианы путем идентификации значения, при котором половина значений пикселей группы блоков LCU превышает это значение, и половины значений пикселей для группы блоков LCU, меньших указанного значения. Блок 94 SAO фильтра может затем использовать найденное значение медианы пикселей вышеописанным образом для определения группировки полос.As an alternative to an LCU block group, the
В качестве альтернативы для блоков LCU, SAO фильтр 94 может определить значение центра путем определения местонахождения пика гистограммы для блока LCU или группы блоков LCU. В общем случае гистограмму можно считать статистическим представлением распределения значений пикселей для группы блоков LCU. Таким образом, SAO фильтр 94 может определить пик гистограммы путем идентификации значения пикселя или значений пикселей, которые появляются наиболее часто в группе блоков LCU. Затем блок 94 SAO фильтра может использовать найденное значение пика в гистограмме вышеописанным образом, чтобы определить группировки полос.Alternatively for LCUs, the
Можно реализовать три примера того, каким образом можно определить значение центра (например, по среднему, медиане или пику гистограммы) любым из фильтров (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 (
Видеодекодер 30 по фиг. 5 представляет пример видеодекодера, сконфигурированного для определения значения центра для набора пикселей на основе значений указанных пикселей, разделения полос значений пикселей на группы на основе указанного значения центра и определения значений смещения для указанных полос на основе имеющихся групп. В некоторых реализациях видеодекодер 30 может определить значение центра путем получения синтаксического элемента, указывающего значение центра. Как было описано выше, этот синтаксический элемент может представлять собой, но не обязательно, указание в явном виде на значения центра. В некоторых реализациях видеодекодер 30 может определить значение центра путем определения среднего значения для набора пикселей, определения значения медианы для набора пикселей и/или определения местонахождения пика гистограммы. Видеодекодер 30 может определить значения смещения для полос на основе групп путем формирования значения смещения для полосы первой группы на основе смещения второй полосы первой группы. Видеодекодер 30 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения групп для полосы из первой группы на основе смещения полосы, определенного для соседнего участка. Видеодекодер 30 также может восстановить значения смещений полос, переданных от видеокодера, на основе групп.The
Таким образом, видеодекодер 30 по фиг. 5 представляет пример видеодекодера, сконфигурированного для определения значения центра для набора пикселей на основе значений пикселей для данной группы; разделения полос значений пикселей на группы на основе указанного значения центра; и определения значений смещения для указанных полос на основе имеющихся групп. Видеодекодер 30 может определить значение центра путем получения синтаксического элемента, указывающего значение центра, определить значение центра путем определения среднего значения для набора пикселей, определить значение центра путем определения значения медианы для набора пикселей или путем определения значения центра на основе местонахождения пика гистограммы. Указанный набор пикселей может, например, включать в себя группу самых крупных блоков кодирования (LCU). Видеодекодер 30 может определить значения смещения для полос на основе групп путем формирования значения смещения для полосы первой группы на основе смещения второй полосы первой группы. Видеодекодер 30 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения групп для полосы из первой группы на основе смещения полосы, определенного для соседнего участка.Thus, the
На фиг. 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
Видеодекодер 30 определяет значение центра для набора пикселей на основе значений пикселей (610). Видеодекодер 30 может, например, определить значение центра путем нахождения среднего значения для набора пикселей, определения значения медианы для набора пикселей и определения пикселя, на который попадает пик гистограммы. Видеодекодер 30 разделяет полосы значений пикселей на группы на основе значения центра (620). Видеодекодер 30 определяет значения смещений для полос на основе указанных групп (630). Видеодекодер 30 может определить значения смещений для полос на основе указанных групп путем формирования значения смещения полосы для полосы первой группы на основе смещения второй полосы первой группы. Видеодекодер 30 может также определить значения смещений для полос на основе указанных групп путем формирования значения смещения для полосы первой группы на основе смещения полосы, определенного для соседнего участка.
В одном или более примерах описанные функции могут быть реализованы аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. При реализации программными средствами эти функции могут храниться или передаваться в виде одной или более команд или кода на компьютерно-читаемом носителе и выполняться обрабатывающим аппаратным блоком. Компьютерно-читаемый носитель может включать в себя компьютерно-читаемый запоминающий носитель, который соответствует материальному носителю, такому как носитель хранения данных или носитель передачи, включая любой носитель, который позволяет обеспечить пересылку компьютерной программы из одного места в другое, например, согласно какому-либо протоколу связи. В этом аспекте компьютерно-читаемый носитель в общем случае может соответствовать (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. 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.
формирование синтаксического элемента для его включения в закодированный битовый поток, причем синтаксический элемент указывает упомянутое значение центра.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.
видеокодер, сконфигурированный для определения значения центра для набора пикселей, причем значение центра основано на значениях упомянутых пикселей; разделения полос значений пикселей на две или более групп полос на основе упомянутого значения центра, причем каждая полоса из упомянутых полос значений пикселей содержит диапазон значений пикселей, и причем
каждая группа из упомянутых двух или более групп полос содержит одну или более полос; и определения значений смещения для упомянутых полос на основе упомянутых двух или групп полос.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.
разделения упомянутых полос значений пикселей на две или более групп полос путем определения двух или более групп полос на основе упомянутого синтаксического элемента; и
применения фильтра адаптивного смещения отсчетов (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.
интегральной схемы;
микропроцессора; и
устройства беспроводной связи, которое включает в себя видеокодер.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. 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.
определения значения центра путем приема синтаксического элемента;
разделения полос значений пикселей на две или более групп полос путем определения двух или более групп полос на основе упомянутого синтаксического элемента; и
применения фильтра адаптивного смещения отсчетов (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.
средство для определения значения центра для набора пикселей, причем значение центра основано на значениях упомянутых пикселей;
средство для разделения полос значений пикселей на две или более группы полос на основе упомянутого значения центра, причем каждая полоса из упомянутых полос значений пикселей содержит диапазон значений пикселей, и причем каждая группа из упомянутых двух или более групп полос содержит одну или более полос; и
средство для определения значений смещения для упомянутых полос на основе упомянутых двух или более групп полос.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.
средство для формирования синтаксического элемента для его включения в закодированный битовый поток, причем синтаксический элемент указывает упомянутое значение центра.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.
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)
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)
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 |