RU2811983C2 - Encoder, decoder and related methods for sub-block partition mode - Google Patents
Encoder, decoder and related methods for sub-block partition mode Download PDFInfo
- Publication number
- RU2811983C2 RU2811983C2 RU2022101005A RU2022101005A RU2811983C2 RU 2811983 C2 RU2811983 C2 RU 2811983C2 RU 2022101005 A RU2022101005 A RU 2022101005A RU 2022101005 A RU2022101005 A RU 2022101005A RU 2811983 C2 RU2811983 C2 RU 2811983C2
- Authority
- RU
- Russia
- Prior art keywords
- value
- parameter
- block
- prediction
- sample
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 101
- 238000005192 partition Methods 0.000 title claims description 21
- 238000005070 sampling Methods 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims description 59
- 230000006835 compression Effects 0.000 abstract description 10
- 238000007906 compression Methods 0.000 abstract description 10
- 239000000126 substance Substances 0.000 abstract 1
- 238000013139 quantization Methods 0.000 description 83
- 230000006870 function Effects 0.000 description 40
- 239000013598 vector Substances 0.000 description 40
- 230000006854 communication Effects 0.000 description 32
- 238000004891 communication Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 30
- 238000003491 array Methods 0.000 description 22
- 239000000872 buffer Substances 0.000 description 20
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 19
- 230000005540 biological transmission Effects 0.000 description 17
- 238000000638 solvent extraction Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 238000001914 filtration Methods 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 10
- 241000023320 Luma <angiosperm> Species 0.000 description 9
- 230000002457 bidirectional effect Effects 0.000 description 9
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 230000000295 complement effect Effects 0.000 description 8
- 230000002441 reversible effect Effects 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 7
- 238000000926 separation method Methods 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 230000006837 decompression Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 101150039623 Clip1 gene Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101150114515 CTBS gene Proteins 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Abstract
Description
ОБЛАСТЬ ТЕХНИКИTECHNICAL FIELD
Варианты осуществления настоящей заявки (раскрытия) в общем относятся к области обработки изображений и, более конкретно, к предсказанию, использующему режимы субблочного разделения.Embodiments of the present application (disclosure) generally relate to the field of image processing and, more specifically, to prediction using sub-block modes.
УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE ART
Осуществление видеокодирования (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.Video encoding (video encoding and decoding) is used in a wide range of digital video applications, such as digital broadcast television, video transmission over the Internet and mobile networks, and real-time conversational applications such as video chat, video conferencing, DVD and Blu-ray discs. , systems for collecting and editing video content and video cameras for security applications.
Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для осуществления кодирования видеоданных перед передачей или сохранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео у получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео, желательны улучшенные методы сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.The amount of video data required to present even a relatively short video can be significant, which can lead to difficulties when the data must be streamed or otherwise transmitted over a communications network with limited bandwidth. Thus, video data is typically compressed before being transmitted over modern telecommunications networks. Video size can also be an issue when the video is stored on a storage device, as memory resources may be limited. Video compression devices often use software and/or hardware at the source to encode video data before transmission or storage, thereby reducing the amount of data required to represent digital video images. The compressed data is then received by a video decompression device at the recipient, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques that improve compression rates with little or no loss in image quality are desired.
СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION
Варианты осуществления настоящей заявки обеспечивают устройства и способы для кодирования и декодирования согласно независимым пунктам формулы изобретения.Embodiments of the present application provide devices and methods for encoding and decoding according to independent claims.
Вышеупомянутые и другие цели достигаются решением по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.The above and other objectives are achieved by solving the independent claims. Additional forms of implementation are obvious from the dependent claims, description and figures.
Первый аспект настоящего изобретения обеспечивает способ осуществления кодирования, реализуемый устройством декодирования, причем способ содержит: получение битового потока; получение значения указателя для текущего блока согласно битовому потоку; получение значения первого параметра для текущего блока и значения второго параметра для текущего блока согласно значению указателя и предопределенной таблице поиска; получение значения расстояния выборки для выборки, которая находится в текущем блоке, согласно значению первого параметра и значению второго параметра; и получение значения предсказания для выборки согласно значению расстояния выборки для выборки.The first aspect of the present invention provides a method for performing encoding implemented by a decoding apparatus, the method comprising: obtaining a bit stream; obtaining a pointer value for the current block according to the bit stream; obtaining the value of the first parameter for the current block and the value of the second parameter for the current block according to the pointer value and the predefined lookup table; obtaining a sample distance value for a sample that is in the current block according to the value of the first parameter and the value of the second parameter; and obtaining a prediction value for the sample according to the sampling distance value for the sample.
Согласно вариантам осуществления настоящего изобретения параметры для разделения блока (например, параметр угла, параметр расстояния… и тому подобное) хранятся в предопределенной таблице поиска, следовательно, фактические значения этих параметров не нужно передавать в битовом потоке, и значения этих параметров получают согласно значению указания, кодируемому в битовом потоке. Таким образом, эффективность кодирования может быть улучшена. According to embodiments of the present invention, parameters for block division (for example, an angle parameter, a distance parameter... and the like) are stored in a predefined lookup table, therefore, the actual values of these parameters do not need to be transmitted in the bit stream, and the values of these parameters are obtained according to the indication value, encoded in the bitstream. In this way, encoding efficiency can be improved.
Как показано на Фиг 15, раскрыт способ осуществления кодирования, реализуемый устройством декодирования, причем способ содержит:As shown in FIG. 15, a method for performing encoding implemented by a decoding apparatus is disclosed, the method comprising:
S1501: получение битового потока. S1501: receive bit stream.
Битовый поток может быть получен согласно беспроводной сети или проводной сети. Битовый поток может передаваться с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радио связь, микроволновая связь, WIFI, Bluetooth, LTE или 5G.The bit stream can be obtained according to a wireless network or a wired network. The bit stream can be transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, microwave, WIFI, Bluetooth, LTE or 5G.
В варианте осуществления битовый поток представляет собой последовательность битов, например в форме потока единиц уровня сетевой абстракции (NAL) или байтового потока, который формирует представление последовательности единиц доступа (AU), формирующей одну или более кодированных видеопоследовательностей (CVS).In an embodiment, a bit stream is a sequence of bits, for example in the form of a network abstraction layer (NAL) unit stream or a byte stream that forms a representation of a sequence of access units (AUs) forming one or more coded video sequences (CVS).
В некоторых вариантах осуществления для процесса декодирования сторона декодера считывает битовый поток и выводит декодированные изображения из битового потока; для процесса кодирования сторона кодера создает битовый поток.In some embodiments, for the decoding process, the decoder side reads the bitstream and outputs decoded images from the bitstream; For the encoding process, the encoder side creates a bit stream.
Обычно битовый поток будет содержать элементы синтаксиса, которые формируются синтаксической структурой. элемент синтаксиса: Элемент данных, представленный в битовом потоке.Typically the bitstream will contain syntax elements that are formed by the syntax structure. syntax element: A data element represented in a bitstream.
синтаксическая структура: ноль или более элементов синтаксиса, присутствующих вместе в битовом потоке в специфицированном порядке.syntax structure: zero or more syntax elements present together in a bitstream in a specified order.
В конкретном примере форматы битового потока специфицируют взаимосвязь между потоком единиц уровня сетевой абстракции (NAL) и байтовым потоком, каждый из которых называется битовым потоком.In a specific example, bitstream formats specify the relationship between a stream of Network Abstraction Layer (NAL) units and a byte stream, each of which is called a bitstream.
Битовый поток может быть, например, в одном из двух форматов: в формате потока единиц NAL или в формате байтового потока. Формат потока единиц NAL концептуально является более «базовым» типом. Формат потока единиц NAL содержит последовательность синтаксических структур, называемых единицами NAL. Эта последовательность упорядочена в порядке декодирования. Существуют ограничения, налагаемые на порядок декодирования (и содержимое) единиц NAL в потоке единиц NAL.The bit stream may be, for example, in one of two formats: a NAL unit stream format or a byte stream format. The NAL unit stream format is conceptually a more "basic" type. The NAL unit stream format contains a sequence of syntactic structures called NAL units. This sequence is ordered in decoding order. There are restrictions placed on the decoding order (and content) of NAL units in a NAL unit stream.
Формат байтового потока может быть построен из формата потока единиц NAL путем упорядочивания единиц NAL в порядке декодирования и добавления к каждой единице NAL начального кодового префикса и нуля или более байтов с нулевым значением для формирования потока из байтов. Формат потока единиц NAL может быть извлечен из формата байтового потока путем поиска местоположения уникального шаблона начального кодового префикса в пределах этого потока из байтов.A byte stream format can be constructed from a NAL unit stream format by arranging the NAL units in decoding order and appending to each NAL unit an initial code prefix and zero or more null-valued bytes to form a byte stream. The NAL unit stream format can be extracted from the byte stream format by searching for the location of a unique starting code prefix pattern within that byte stream.
В этом разделе описывается вариант осуществления взаимосвязи между исходными и декодированными изображениями, которая передается через битовый поток.This section describes an embodiment of the relationship between the original and decoded images, which is carried through a bitstream.
Источник видео, который представлен битовым потоком, представляет собой последовательность изображений в порядке декодирования.The video source, which is represented by a bitstream, is a sequence of images in decoding order.
Каждое из исходных и декодированных изображений состоит из одного или более массивов выборок:Each of the original and decoded images consists of one or more sample arrays:
- Только яркость (Y) (монохромная).- Brightness (Y) only (monochrome).
- Яркость и две цветности (YCbCr или YCgCo).- Brightness and two chromaticities (YCbCr or YCgCo).
- Зеленый, синий и красный (GBR, также известный как RGB).- Green, Blue and Red (GBR, also known as RGB).
- Массивы, представляющие другие неопределенные монохромные или трехстимульные выборки цветов (например, YZX, также известные как XYZ).- Arrays representing other unspecified monochrome or tristimulus color samples (eg, YZX, also known as XYZ).
Переменные и термины, ассоциированные с этими массивами, упоминаются как яркость (либо L, либо Y) и цветность, причем два массива цветности упоминаются как Cb и Cr; независимо от фактического используемого способа представления цвета. Фактический используемый способ представления цвета может быть указан в синтаксисе, который специфицирован в параметрах VUI как специфицировано в ITU-T H.SEI | ISO/IEC 23002-7.The variables and terms associated with these arrays are referred to as luma (either L or Y) and chroma, with the two chroma arrays referred to as Cb and Cr; regardless of the actual color representation method used. The actual color representation method used may be specified in the syntax that is specified in the VUI parameters as specified in ITU-T H.SEI | ISO/IEC 23002-7.
Переменные SubWidthC и SubHeightC специфицированы в таблице 2 в зависимости от структуры выборки (дискретизации) формата цветности, которая специфицирована через sps_chroma_format_idc и sps_separate_colour_plane_flag.The SubWidthC and SubHeightC variables are specified in Table 2 depending on the chroma format sampling structure, which is specified through sps_chroma_format_idc and sps_separate_colour_plane_flag.
Таблица 2 - Значения SubWidthC и SubHeightC, выводимые из sps_chroma_format_idc и sps_separate_colour_plane_flagTable 2 - SubWidthC and SubHeightC values derived from sps_chroma_format_idc and sps_separate_colour_plane_flag
В монохромной выборке есть только один массив выборок, который номинально считается массивом яркости.In a monochrome sample there is only one sample array, which is nominally considered the luma array.
В выборке 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости.In a 4:2:0 sample, each of the two chroma arrays is half the height and half the width of the luma array.
В выборке 4:2:2 каждый из двух массивов цветности имеет аналогичную высоту и половину ширины массива яркости.In a 4:2:2 sample, each of the two chroma arrays has the same height and half the width of the lumina array.
В выборке 4:4:4, в зависимости от значения sps_separate_colour_plane_flag, применяется следующее:In a 4:4:4 sample, depending on the value of sps_separate_colour_plane_flag, the following applies:
- Если sps_separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет одинаковую высоту и ширину, что и массив яркости.- If sps_separate_colour_plane_flag is 0, each of the two chroma arrays has the same height and width as the luminance array.
- Иначе (sps_separate_colour_plane_flag равен 1) три цветовые плоскости обрабатываются отдельно как подвергаемые монохромной выборке изображения.- Otherwise (sps_separate_colour_plane_flag is equal to 1) the three color planes are treated separately as monochrome sampled images.
S1502: получение значения указателя для текущего блока согласно битовому потоку.S1502: Get the pointer value for the current block according to the bit stream.
В варианте осуществления значение указателя используется для специфицирования формы разделения в режиме слияния с геометрическим разделением. Например, указателем может быть merge_gpm_partition_idx[ x0 ][ y0 ], при этом merge_gpm_partition_idx[ x0 ][ y0 ] специфицирует форму разделения режима слияния геометрического разделения. Индексы x0, y0 массива специфицируют местоположение (x0, y0 ) верхней левой выборки яркости рассматриваемого блока кодирования относительно верхней левой выборки яркости изображения. In an embodiment, the pointer value is used to specify the shape of the split in geometric split merge mode. For example, the pointer could be merge_gpm_partition_idx[ x0 ][ y0 ], where merge_gpm_partition_idx[ x0 ][ y0 ] specifies the partition form of the geometric partition merge mode. The array indices x0, y0 specify the location (x0, y0) of the top left luminance sample of the encoding block in question relative to the top left luminance sample of the image.
Обычно значение merge_gpm_partition_idx[ x0 ][ y0 ] декодируется из битового потока. В примере диапазон значений для merge_gpm_partition_idx[ ][ ] составляет от 0 до 63, в том числе 0 и 63. В примере процессом декодирования для merge_gpm_partition_idx[ ][ ] является «обход».Typically the merge_gpm_partition_idx[ x0 ][ y0 ] value is decoded from the bitstream. In the example, the range of values for merge_gpm_partition_idx[ ][ ] is from 0 to 63, including 0 and 63. In the example, the decoding process for merge_gpm_partition_idx[ ][ ] is "bypass".
Когда merge_gpm_partition_idx[ x0 ][ y0 ] не присутствует, он подразумевается равным 0.When merge_gpm_partition_idx[ x0 ][ y0 ] is not present, it is assumed to be 0.
S1503: получение значения первого параметра для текущего блока и значения второго параметра для текущего блока согласно значению указателя и предопределенной таблице поиска.S1503: Obtain the value of the first parameter for the current block and the value of the second parameter for the current block according to the pointer value and the predefined lookup table.
В одной реализации первый параметр представляет угол (или является угловым) для разделения текущего блока.In one implementation, the first parameter represents the angle (or is the angle) for dividing the current block.
В одной реализации второй параметр представляет расстояние для разделения текущего блока.In one implementation, the second parameter represents the distance to split the current block.
В одной реализации предопределенная таблица поиска содержит пары первого и второго параметров,In one implementation, the predefined lookup table contains pairs of first and second parameters,
при этом когда первый параметр в паре представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, соответствующий второй параметр в этой паре не представляет расстояние в ноль выборок от центра текущего блока.provided that when the first parameter in a pair represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270 or 315 degrees, the corresponding second parameter in that pair does not represent a distance of zero samples from the center of the current block.
В одной реализации предопределенная таблица поиска содержит пары первого и второго параметров,In one implementation, the predefined lookup table contains pairs of first and second parameters,
при этом первый параметр в паре представляет угол, не соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.wherein the first parameter in the pair represents an angle other than one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in the pair represents a distance of zero samples from the center of the current block.
В одной реализации предопределенная таблица поиска содержит пары первого и второго параметров,In one implementation, the predefined lookup table contains pairs of first and second parameters,
при этом первый параметр в паре представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.wherein the first parameter in the pair represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in the pair represents a distance of zero samples from the center of the current block.
В одной реализации второй параметр специфицирует индекс расстояния геометрического раздела, или второй параметр описывает расстояние от линии разграничения до центра текущего блока.In one implementation, the second parameter specifies the distance index of the geometric section, or the second parameter describes the distance from the demarcation line to the center of the current block.
В варианте осуществления переменная угла разделения angleIdx (параметр 1) и переменная расстояния distanceIdx (параметр 2) режима геометрического разделения устанавливаются согласно значению merge_gpm_partition_idx[ xCb ][ yCb ] (указатель), как специфицировано в нижеследующей таблице. Можно понять, что в упомянутой реализации эта взаимосвязь может быть реализована согласно таблице 1 или согласно некоторой функции.In an embodiment, the partition angle variable angleIdx (parameter 1) and the distance variable distanceIdx (parameter 2) of the geometric partition mode are set according to the value of merge_gpm_partition_idx[ xCb ][ yCb ] (pointer) as specified in the following table. It can be understood that in the mentioned implementation, this relationship may be implemented according to Table 1 or according to some function.
Таблица 1: Спецификация angleIdx и distanceIdx на основе merge_gpm_partition_idxTable 1: Specification of angleIdx and distanceIdx based on merge_gpm_partition_idx
S1504: получение значения расстояния выборки для выборки, которая находится в текущем блоке, согласно значению первого параметра и значению второго параметра.S1504: Obtaining the sampling distance value for the sample that is in the current block according to the value of the first parameter and the value of the second parameter.
В варианте осуществления этот этап содержит:In an embodiment, this step comprises:
Этап 3.1: получение индексного значения параметра угла (alphaN или angleIdx) для текущего блока, значения ширины (W) текущего блока, значения высоты (H) текущего блока. W и H представляют ширину и высоту текущего блока числом выборок. Например, блок кодирования, ширина и высота которого равны 8, представляет собой квадратный блок, содержащий 64 выборки. В другом примере W и H представляют ширину и высоту текущего блока числом выборок яркости. Индексное значение параметра угла может быть получено согласно приведенному выше описанию, относящемуся к таблице 1.Step 3.1: Get the index value of the angle parameter (alphaN or angleIdx) for the current block, the width (W) value of the current block, the height (H) value of the current block. W and H represent the width and height of the current block by the number of samples. For example, a coding block whose width and height are 8 is a square block containing 64 samples. In another example, W and H represent the width and height of the current block by the number of brightness samples. The index value of the angle parameter can be obtained according to the above description referring to Table 1.
Этап 3.2: получение значения соотношения whRatio согласно значению W и значению H, значение whRatio представляет соотношение между шириной и высотой текущего блока кодирования.Step 3.2: Obtaining the whRatio value according to the W value and the H value, the whRatio value represents the ratio between the width and height of the current encoding block.
В примере whRatio=H/W; или whRatio=W/H.In the example whRatio=H/W; or whRatio=W/H.
В другом примере две переменные nCbW и nCbH специфицируют ширину и высоту текущего блока кодирования, а переменная cIdx специфицирует индекс цветового компонента.In another example, two variables nCbW and nCbH specify the width and height of the current encoding block, and the variable cIdx specifies the color component index.
переменные nW, nH и whRatio выводятся следующим образом:The variables nW, nH and whRatio are output as follows:
nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;
nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;
whRatio=nH/nW.whRatio=nH/nW.
В примере переменные SubWidthC и SubHeightC специфицированы в таблице 2.In the example, the variables SubWidthC and SubHeightC are specified in Table 2.
Этап 3.3: Получение значения shiftHor согласно таблице поиска, значению альфа и значению whRatio, в примере значение альфа (alphaN или angleIdx) и значение whRatio используются в качестве индексных значений таблицы поиска. Значение shiftHor также может быть получено согласно функции, при этом значение альфа (alphaN или angleIdx) и значение whRatio представляют собой входные данные упомянутой функции, а значение shiftHor представляет собой выходные данные упомянутой функции. В примере результат функции аналогичен или совпадает с таблицей поиска. В примере значение shiftHor представляет размер шага квантования для процесса вычисления расстояния выборки.Step 3.3: Retrieving the shiftHor value according to the lookup table, alpha value and whRatio value, in the example the alpha value (alphaN or angleIdx) and whRatio value are used as index values of the lookup table. The shiftHor value can also be obtained according to a function, wherein the alpha value (alphaN or angleIdx) and the whRatio value represent the input of the function, and the shiftHor value represents the output of the function. In the example, the function result is the same as or the same as the lookup table. In the example, the value shiftHor represents the quantization step size for the sampling distance calculation process.
В другом примере функция может быть представлена как shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.In another example, the function could be represented as shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.
Этап 3.4: значение sample_dist вычисляется согласно значению shiftHor.Step 3.4: The value of sample_dist is calculated according to the value of shiftHor.
В примере, для вычисления расстояния выборки (sample_dist) сначала следующим образом выводятся переменные offsetX и offsetY:In the example, to calculate the sample distance (sample_dist), the offsetX and offsetY variables are first output as follows:
Если shiftHor равен 0, применяется следующее:If shiftHor is 0, the following applies:
offsetX=( −nW ) >> 1, offsetX=( −nW ) >> 1,
offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );
Иначе (shiftHor равен 1), применяется следующее:Otherwise (shiftHor is 1), the following applies:
offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) ); offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) );
offsetY=( − nH ) >> 1;offsetY=( − nH ) >> 1;
- Переменные xL и yL выводятся следующим образом:- Variables xL and yL are output as follows:
xL=( cIdx== 0 ) ? x : x * SubWidthC xL=( cIdx== 0 ) ? x : x * SubWidthC
yL=( cIdx== 0 ) ? y : y * SubHeightC yL=( cIdx== 0 ) ? y : y * SubHeightC
sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY ) << 1 ) + 1 ) ) * disLut[ displacementY ].sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY ) << 1 ) + 1 ) ) * disLut[ displacementY ].
Переменные displacementX и displacementY выводятся следующим образом:The displacementX and displacementY variables are output as follows:
hwRatio=cbHeight/cbWidth;hwRatio=cbHeight/cbWidth;
displacementX=angleIdx;displacementX=angleIdx;
displacementY=( angleIdx+8 ) % 32.displacementY=( angleIdx+8 ) % 32.
Массив disLut специфицирован в таблице 3 ниже.The disLut array is specified in Table 3 below.
В некоторых вариантах осуществления согласно геометрической модели выборки в блоке кодирования считаются находящимися в двух субблоках. Субблок A или субблок B может содержать часть (но не все) выборок в текущем блоке кодирования. Субблок А или субблок В может быть представлен согласно знаку sample_dist каждой из выборок. Sample_dist может быть получено согласно примерам и вариантам осуществления в других абзацах.In some embodiments, according to the geometric model, samples in a coding block are considered to be in two subblocks. Subblock A or subblock B may contain some (but not all) of the samples in the current encoding block. Subblock A or subblock B can be represented according to the sample_dist sign of each of the samples. Sample_dist can be obtained according to the examples and embodiments in other paragraphs.
S1505: получение значения предсказания для выборки согласно значению расстояния выборки для выборки.S1505: Obtain the prediction value for the sample according to the sampling distance value for the sample.
В одной реализации получение значения предсказания для выборки согласно значению расстояния выборки для выборки содержит:In one implementation, obtaining the prediction value for a sample according to the sampling distance value for a sample comprises:
вычисление двух весовых коэффициентов согласно значению расстояния выборки; иcalculating two weight coefficients according to the sampling distance value; And
получение значения предсказания для выборки согласно первому значению предсказания, второму значению предсказания и упомянутым двум весовым коэффициентам.obtaining a prediction value for the sample according to the first prediction value, the second prediction value, and the two weights.
В одной реализации значение расстояния выборки представляет собой расстояние по горизонтали или расстояние по вертикали, или комбинацию расстояний по вертикали и по горизонтали от упомянутой выборки до линии разграничения, при этом линия разграничения используется для разбиения блока кодирования на два субблока.In one implementation, the sample distance value is a horizontal distance or a vertical distance, or a combination of vertical and horizontal distances, from said sample to a demarcation line, wherein the demarcation line is used to split a coding block into two sub-blocks.
В одном примере вычисленное sample_dist используется для вычисления весовых коэффициентов, причем весовые коэффициенты используются для объединения первого значения предсказания и второго значения предсказания, соответствующих упомянутой выборке. В примере весовые коэффициенты обозначаются как sampleWeight1 и sampleWeight2, имея ввиду вес, соответствующий первому значению предсказания, и вес, соответствующий второму значению предсказания.In one example, the calculated sample_dist is used to calculate weights, wherein the weights are used to combine a first prediction value and a second prediction value corresponding to said sample. In the example, the weights are denoted as sampleWeight1 and sampleWeight2, meaning a weight corresponding to the first prediction value and a weight corresponding to the second prediction value.
В одном примере весовые коэффициенты вычисляются согласно следующим функциямIn one example, the weights are calculated according to the following functions
weightIdxL=partFlip ? 32+sample_dist : 32 − sample_dist;weightIdxL=partFlip ? 32+sample_dist : 32 − sample_dist;
wValue=Clip3( 0, 8, ( weightIdxL+4 ) >> 3 ).wValue=Clip3( 0, 8, ( weightIdxL+4 ) >> 3 ).
В этом примере wValue представляет собой sampleWeight1, а 8-wValue представляет собой sampleWeight2. Переменная partFlip определяется согласно значению angleIdx. В примере partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, или partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 1 : 0.In this example, wValue represents sampleWeight1 and 8-wValue represents sampleWeight2. The partFlip variable is defined according to the angleIdx value. In the example, partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, or partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 10.
В одном примере объединенное значение выборки предсказания в координате выборки (x, y) вычисляется согласно первому значению предсказания в координате (x, y), второму значению предсказания в координате (x, y), sampleWeight1 и sampleWeight2.In one example, the combined prediction sample value at the sample coordinate (x,y) is calculated according to the first prediction value at the (x,y) coordinate, the second prediction value at the (x,y) coordinate, sampleWeight1, and sampleWeight2.
В примере значение выборки предсказания выводится следующим образом:In the example, the prediction sample value is output as follows:
pbSamples[ x ][ y ]=Clip3( 0, ( 1 << BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 ) >> shift1 ).pbSamples[ x ][ y ]=Clip3( 0, ( 1 << BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 ) >>> shift1).
При этом bitDepth представляет битовую глубину выборки, переменную shift1 получают согласно упомянутой bitDepth, в примере shift1= Max( 5, 17 - BitDepth ); Переменную offset1 получают согласно shift1, в примере offset1= 1 << ( shift1-1 ), predSamplesLA и predSamplesLB представляют собой два (nCbW)x(nCbH) массива.In this case, bitDepth represents the bit depth of the sample, the shift1 variable is obtained according to the mentioned bitDepth, in the example shift1= Max( 5, 17 - BitDepth ); The variable offset1 is obtained according to shift1, in the example offset1= 1 << ( shift1-1 ), predSamplesLA and predSamplesLB are two (nCbW)x(nCbH) arrays.
В одном варианте осуществления раскрыт способ осуществления кодирования, реализуемый устройством кодирования, содержащий: выбор значения первого параметра и значения второго параметра;In one embodiment, a method for performing encoding implemented by an encoding device is disclosed, comprising: selecting a first parameter value and a second parameter value;
получение индексного значения согласно значению первого параметра, значению второго параметра и поисковой таблице; и кодирование индексного значения в битовый поток.obtaining an index value according to the value of the first parameter, the value of the second parameter and the lookup table; and encoding the index value into the bit stream.
Детали для каждого этапа на стороне кодера соответствуют приведенным выше примерам на стороне декодера.The details for each stage on the encoder side correspond to the examples above on the decoder side.
Как показано на Фиг.16, второй аспект настоящего изобретения обеспечивает устройство 1600 декодирования, причем устройство декодирования содержит:As shown in FIG. 16, a second aspect of the present invention provides a
модуль 1601 приема, который выполнен с возможностью получения битового потока и получения значения указателя для текущего блока согласно битовому потоку;a receiving unit 1601, which is configured to receive a bit stream and obtain a pointer value for a current block according to the bit stream;
модуль 1602 обработки параметров разделения, который выполнен с возможностью получения значения первого параметра для текущего блока и значения второго параметра для текущего блока согласно значению указателя и предопределенной таблице поиска;a division parameter processing unit 1602, which is configured to obtain a first parameter value for the current block and a second parameter value for the current block according to the pointer value and the predefined lookup table;
модуль 1603 вычисления, который выполнен с возможностью получения значения расстояния выборки для выборки, которая находится в текущем блоке, согласно значению первого параметра и значению второго параметра; иa calculation unit 1603, which is configured to obtain a sample distance value for a sample that is in the current block according to the value of the first parameter and the value of the second parameter; And
модуль 1604 предсказания, который выполнен с возможностью получения значения предсказания для выборки согласно значению расстояния выборки для выборки.a prediction module 1604, which is configured to obtain a prediction value for a sample according to a sampling distance value for the sample.
Способ согласно первому аспекту изобретения может быть выполнен устройством согласно второму аспекту изобретения. Дополнительные признаки и формы реализации вышеуказанных способов соответствуют признакам и формам реализации устройства согласно второму аспекту изобретения.The method according to the first aspect of the invention can be carried out by a device according to the second aspect of the invention. Additional features and forms of implementation of the above methods correspond to the features and forms of implementation of the device according to the second aspect of the invention.
В варианте осуществления раскрыт декодер (30) или кодер (20), содержащий схему обработки для выполнения способа согласно любому из вышеупомянутых вариантов осуществления и реализации.In an embodiment, a decoder (30) or encoder (20) is disclosed comprising processing circuitry for performing a method according to any of the above embodiments and implementations.
В варианте осуществления раскрыт компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому из вышеупомянутых вариантов осуществления и реализации.In an embodiment, a computer program product is disclosed comprising program code for executing a method according to any of the above embodiments and implementations.
В варианте осуществления раскрыт декодер или кодер, содержащий:In an embodiment, a decoder or encoder is disclosed, comprising:
один или более процессоров; иone or more processors; And
долговременный считываемый компьютером носитель, связанный с процессорами и хранящий программную часть для исполнения процессорами, причем программная часть, когда исполняется процессорами, конфигурирует декодер или кодер для выполнения способа согласно любому из вышеупомянутых вариантов осуществления и реализации.a non-transitory computer-readable medium coupled to the processors and storing a program portion for execution by the processors, wherein the program portion, when executed by the processors, configures a decoder or encoder to perform a method according to any of the above embodiments and implementations.
В варианте осуществления раскрыт долговременный запоминающий носитель, который включает в себя закодированный битовый поток, декодируемый устройством декодирования изображений, причем битовый поток генерируется посредством разбиения кадра видеосигнала или сигнала изображения на множество блоков и включает в себя множество синтаксических элементов, при этом упомянутое множество синтаксических элементов содержит указатель (синтаксис) согласно любому из вышеупомянутых вариантов осуществления и реализации.In an embodiment, a non-transitory storage medium is disclosed that includes an encoded bit stream decoded by an image decoding apparatus, wherein the bit stream is generated by dividing a frame of a video signal or an image signal into a plurality of blocks and includes a plurality of syntax elements, wherein the plurality of syntax elements comprises: pointer (syntax) according to any of the above embodiments and implementations.
Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.Details of one or more embodiments are set forth in the accompanying drawings and in the following description. Other features, objects and advantages will be apparent from the description, drawings and claims.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
Ниже варианты осуществления изобретения описаны более подробно со ссылкой на приложенные фигуры и чертежи, на которых:Below, embodiments of the invention are described in more detail with reference to the accompanying figures and drawings, in which:
ФИГ. 1A является блок-схемой, показывающей пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;FIG. 1A is a block diagram showing an example of a video encoding system configured to implement embodiments of the invention;
ФИГ. 1B является блок-схемой, показывающей другой пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;FIG. 1B is a block diagram showing another example of a video encoding system configured to implement embodiments of the invention;
ФИГ. 2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;FIG. 2 is a block diagram showing an example of a video encoder configured to implement embodiments of the invention;
ФИГ. 3 является блок-схемой, показывающей примерную структуру видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;FIG. 3 is a block diagram showing an exemplary structure of a video decoder configured to implement embodiments of the invention;
ФИГ. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;FIG. 4 is a block diagram illustrating an example of an encoding device or a decoding device;
ФИГ. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;FIG. 5 is a block diagram illustrating another example of an encoding device or a decoding device;
ФИГ. 6a иллюстрирует пример совместно размещенного блока;FIG. 6a illustrates an example of a co-located block;
ФИГ. 6b иллюстрирует пример пространственных соседних блоков.FIG. 6b illustrates an example of spatial neighboring blocks.
ФИГ. 7 иллюстрирует некоторые примеры режима треугольного предсказания.FIG. 7 illustrates some examples of the triangular prediction mode.
ФИГ. 8 иллюстрирует некоторые примеры режима субблочного предсказания.FIG. 8 illustrates some examples of the sub-block prediction mode.
ФИГ. 9-12 показывают некоторые примеры разделения блока.FIG. 9-12 show some examples of block splitting.
ФИГ. 13 является блок-схемой, показывающей примерную структуру системы 3100 поставки контента, которая реализует услугу доставки контента.FIG. 13 is a block diagram showing an exemplary structure of a content delivery system 3100 that implements a content delivery service.
ФИГ. 14 является блок-схемой, показывающей структуру примерного терминального устройства.FIG. 14 is a block diagram showing the structure of an exemplary terminal device.
ФИГ. 15 является блок-схемой последовательности операций, показывающей вариант осуществления способа, относящегося к настоящему изобретению.FIG. 15 is a flowchart showing an embodiment of a method related to the present invention.
ФИГ. 16 является блок-схемой, показывающей вариант осуществления устройства, относящегося к настоящему изобретению.FIG. 16 is a block diagram showing an embodiment of an apparatus related to the present invention.
Одинаковые ссылочные позиции далее относятся к идентичным или по меньшей мере функционально эквивалентным признакам, если явно не указано иное.Identical reference numerals hereinafter refer to identical or at least functionally equivalent features unless expressly indicated otherwise.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯDETAILED DESCRIPTION OF IMPLEMENTATION OPTIONS
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.In the following description, reference is made to the accompanying drawings, which form a part of this disclosure and which show, by way of illustration, specific aspects of embodiments of the invention or specific aspects in which embodiments of the present invention may be used. It is understood that embodiments of the present invention may be used in other aspects and contain structural or logical changes not shown in the figures. Therefore, the following detailed description should not be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.For example, it will be understood that the disclosure associated with the described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or a plurality of specific method steps are described, the corresponding apparatus may include one or a plurality of blocks, such as functional blocks, to perform the one or multiple method steps described (e.g., one block performing one or a plurality of steps, or a plurality of blocks, each of which performs one or more of a plurality of steps), even if such one or more blocks are not explicitly described or illustrated in the figures. On the other hand, for example, if a particular device is described in terms of one or a plurality of blocks, such as functional blocks, the corresponding method may include one step for performing the functionality of the one or multiple blocks (e.g., one step performing the functionality of the one or multiple blocks , or a plurality of steps, each of which performs the functionality of one or more of a plurality of blocks), even if such one or multiple steps are not explicitly described or illustrated in the figures. It is further understood that features of various exemplary embodiments and/or aspects described herein may be combined with each other unless specifically stated otherwise.
Видеокодирование обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» термины «кадр» или «картинка» могут использоваться как синонимы в области видеокодирования. Видеокодирование (или осуществление кодирования (coding) в целом) содержит две части: видеокодирование (video encoding) и видеодекодирование. Видеокодирование выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеоизображений для сокращения объема данных, требуемого для представления видеоизображений (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видеоизображений или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется CODEC (кодирование и декодирование).Video encoding generally refers to the processing of a sequence of images that form a video or video sequence. Instead of the term "image", the terms "frame" or "picture" may be used interchangeably in the field of video coding. Video encoding (or the implementation of encoding in general) contains two parts: video encoding and video decoding. Video encoding is performed at the source side and typically involves processing (eg, through compression) of the source video images to reduce the amount of data required to represent the video images (for more efficient storage and/or transmission). Video decoding is performed at the receiver end and typically involves reverse processing from the encoder to reconstruct video images. Embodiments relating to "coding" video images (or images in general) are to be understood as referring to "encoding" or "decoding" video images or corresponding video sequences. The combination of an encoding part and a decoding part is also called CODEC (encoding and decoding).
В случае видеокодирования без потерь исходные видеоизображения могут быть восстановлены, т.е. восстановленные видеоизображения имеют такое же качество, что и исходные видеоизображения (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае видеокодирования с потерями выполняется дополнительное сжатие, например посредством квантования, для сокращения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены на декодере, т.е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.In the case of lossless video encoding, the original video images can be restored, i.e. the restored video images are of the same quality as the original video images (assuming there is no transmission loss or other data loss during storage or transmission). In the case of lossy video encoding, additional compression is performed, for example through quantization, to reduce the amount of data representing video images that cannot be fully reconstructed at the decoder, i.e. The quality of the restored video images is lower or worse compared to the quality of the original video images.
Несколько стандартов видеокодирования принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборок и кодирование с 2D преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например с использованием пространственного (интра-изображения) предсказания и/или временного (интер-изображения) предсказания для генерирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут генерировать идентичные предсказания (например, интра- и интер-предсказания) и/или реконструкции для обработки, то есть осуществления кодирования (coding), последующих блоков.Several video coding standards belong to the group of “hybrid lossy video codecs” (that is, they combine spatial and temporal sample-domain prediction and 2D transform coding to apply quantization to the transform domain). Each image of a video sequence is usually divided into a set of non-overlapping blocks, and coding is usually performed at the block level. In other words, in an encoder, video is typically processed, i.e. encoded, at the block (video block) level, for example using spatial (intra-image) prediction and/or temporal (inter-image) prediction to generate a prediction block, the prediction block is subtracted from the current block (the block that is currently being processed/to be processed) to obtain a residual block, the residual block is transformed and this residual block is quantized in the transformation domain to reduce the amount of data (compression) to be transmitted, whereas in the decoder the reverse processing is compared to applied by the encoder to an encoded or compressed block to reconstruct the current block for presentation. In addition, the encoder duplicates the decoder's processing loop so that they will both generate identical predictions (eg, intra- and inter-predictions) and/or reconstructions for processing, ie encoding, of subsequent blocks.
В нижеследующих вариантах осуществления системы 10 видеокодирования, видеокодер 20 и видеодекодер 30 описаны на основе Фиг. с 1 по 3.In the following embodiments, the
ФИГ. 1A представляет собой схематичное блочное представление, иллюстрирующее примерную систему 10 кодирования, например систему 10 видеокодирования (или сокращенно систему 10 кодирования), которая может использовать методы из настоящей заявки. Видеокодер 20 (или сокращенно кодер 20) и видеодекодер 30 (или сокращенно декодер 30) системы 10 видеокодирования представляют примеры устройств, которые могут быть выполнены с возможностью выполнения методов в соответствии с различными примерами, описанными в настоящей заявке.FIG. 1A is a schematic block diagram illustrating an
Как показано на ФИГ. 1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 изображения, например в устройство-получатель 14 для декодирования кодированных данных 13 изображения.As shown in FIG. 1A, the
Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. опционально, содержать источник 16 изображений, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 изображений, а также интерфейс связи или блок 22 связи.The source device 12 contains an
Источник 16 изображений может содержать или быть устройством захвата изображений любого типа, например камерой для захвата изображения реального мира, и/или устройством генерирования изображений любого типа, например процессором компьютерной графики для генерирования компьютерного анимированного изображения, или любым типом другого устройства для получения и/или предоставления изображения реального мира, генерируемого компьютером изображения (например, содержимого экрана, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображения дополненной реальности (AR)). Источником изображений может быть любой тип памяти или хранилища, где хранятся любые из вышеупомянутых изображений.The image source 16 may contain or be any type of image capturing device, such as a camera for capturing a real world image, and/or any type of image generating device, such as a computer graphics processor for generating a computer animated image, or any type of other device for capturing and/or providing a real-world image, a computer-generated image (e.g., screen content, virtual reality (VR) image), and/or any combination thereof (e.g., augmented reality (AR) image). The source of the images can be any type of memory or storage where any of the above images are stored.
В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, изображение или данные 17 изображения также могут именоваться необработанным (raw) изображением или необработанными данными 17 изображения.In contrast to the preprocessor 18 and the processing performed by the preprocessing unit 18, the image or image data 17 may also be referred to as a raw image or raw image data 17.
Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки в отношении этих данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Должно быть понятно, что модуль 18 предварительной обработки может быть опциональным компонентом. The preprocessor 18 is configured to receive (raw) image data 17 and perform preprocessing on the image data 17 to obtain a preprocessed image 19 or preprocessed image data 19 . Preprocessing performed by preprocessor 18 may, for example, comprise cropping, color format conversion (eg, RGB to YCbCr), color correction, or noise reduction. It should be understood that the pre-processing module 18 may be an optional component.
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления кодированных данных 21 изображения (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).
Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи этих кодированных данных 21 изображения (или любой их дальнейшей обработанной версии) по каналу 13 связи в другое устройство, например устройство-получатель 14 или любое другое устройство, для сохранения или непосредственного восстановления.The communication interface 22 of the source device 12 may be configured to receive encoded image data 21 and transmit this encoded image data 21 (or any further processed version thereof) over the communication channel 13 to another device, such as the
Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. опционально, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения.The
Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема кодированных данных 21 изображения (или любой их дальнейшей обработанной версии), например непосредственно от устройства-источника 12 или из любого другого источника, например запоминающего устройства, например устройства хранения кодированных данных изображений, и предоставления кодированных данных 21 изображения в декодер 30.The communication interface 28 of the
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображений или кодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.The communication interface 22 and the communication interface 28 may be configured to transmit or receive encoded image data 21 or encoded data 13 through a direct communication link between the source device 12 and the
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки кодированных данных 21 изображения в надлежащий формат, например, в пакеты, и/или обработки кодированных данных изображения с использованием любого типа кодирования передачи или обработки для передачи по линии связи или сети связи.The communications interface 22 may, for example, be configured to package the encoded image data 21 into an appropriate format, such as packets, and/or process the encoded image data using any type of transmission encoding or processing for transmission over a communications link or network.
Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки и/или распаковки передачи для получения кодированных данных 21 изображения.The communication interface 28, which is analogous to the communication interface 22, may, for example, be configured to receive transmitted data and process the transmission data using any kind of appropriate decoding or transmission processing and/or decompression to obtain encoded image data 21.
Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены как интерфейсы однонаправленной связи, как показано стрелкой для канала 13 связи на Фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например отправки и приема сообщений, например для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например передаче кодированных данных изображения. Both communication interface 22 and communication interface 28 may be configured as unidirectional communication interfaces, as shown by the arrow for communication channel 13 in FIG. 1A pointing from a source device 12 to a
Декодер 30 выполнен с возможностью приема кодированных данных 21 изображения и предоставления декодированных данных 31 изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг. 3 или Фиг. 5).The decoder 30 is configured to receive encoded image data 21 and provide decoded image data 31 or decoded image 31 (further details will be described below, for example, based on FIG. 3 or FIG. 5).
Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки декодированных данных 31 изображения (также называемых данными восстановленного изображения), таких как декодированное изображение 31, чтобы получить пост-обработанные данные 33 изображения, такие как пост-обработанное изображение 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например для подготовки декодированных данных 31 изображения для отображения, например с помощью устройства 34 отображения.The post-processor 32 of the
Устройство 34 отображения из состава устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 изображения для отображения изображения, например пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленного изображения, например, интегрированного или внешнего дисплея, или монитора. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, жидкий кристалл на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.The display device 34 of the
Хотя Фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.Although Fig. 1A illustrates source device 12 and
Как будет очевидно для специалиста на основе описания, наличие и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг. 1A, может меняться в зависимости от фактического устройства и применения.As will be apparent to one skilled in the art from the description, the presence and (precise) separation of functionality of various blocks or functionality in source device 12 and/or
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на Фиг. 1B, такую как один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретную логику, аппаратное обеспечение, выделенное видеокодирование или любые их комбинации. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 с ФИГ. 2 и/или любой другой системы кодера или подсистемы, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с ФИГ. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на фиг. 5, если методики частично реализуются в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем, долговременном считываемом компьютером носителе данных и может исполнять инструкции в аппаратном обеспечении, используя один или более процессоров для выполнения методик согласно этому раскрытию. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг. 1B.Encoder 20 (eg, video encoder 20) or decoder 30 (eg, video decoder 30) or both
Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), широковещательное приемное устройство, широковещательное передающее устройство или подобное, и могут использовать операционную систему любого типа или обходиться без нее. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.Source device 12 and
В некоторых случаях система 10 видеокодирования, проиллюстрированная на Фиг. 1A, является лишь примером, а методы настоящей заявки могут применяться к настройкам видеокодирования (такого как видеокодирование или видеодекодирование), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство видеокодирования может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.In some cases, the
Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективное видеокодирование (HEVC) или на эталонное программное обеспечение универсального видеокодирования (VVC), стандарт видеокодирования следующего поколения, разрабатываемый объединенной группой сотрудничества по видеокодированию (JCT-VC) экспертной группы по видеокодированию ITU-T (VCEG) и экспертной группы по движущимся изображениям ISO/IEC (MPEG). Обычный специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.For ease of description, embodiments of the present invention are described herein, for example, with reference to High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software, a next generation video coding standard being developed by the Joint Collaboration on Video Coding (JCT-VC) Expert Group. ITU-T Video Coding (VCEG) and ISO/IEC Moving Picture Expert Group (MPEG). One of ordinary skill in the art will understand that embodiments of the present invention are not limited to HEVC or VVC.
Кодер и способ кодированияEncoder and encoding method
ФИГ. 2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации методик по настоящей заявке. В примере на Фиг. 2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (DPB) декодированных изображений, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 интер-предсказания, блок 254 интра-предсказания и блок 262 разделения. Блок 244 интер-предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на Фиг. 2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.FIG. 2 shows a schematic block diagram of an
Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относится к формированию прямого пути прохождения сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 244 интер-предсказания и блок 254 интра-предсказания могут относится к формированию обратного пути прохождения сигнала видеокодера 20, при этом обратный путь прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (см. видеодекодер 30 на Фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 244 интер-предсказания и блок 254 интра-предсказания также относятся к формированию «встроенного декодера» видеокодера 20.The remainder calculation block 204, transform
Изображения и разделение изображений (изображения и блоки)Images and image division (images and blocks)
Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 изображения 17 (или данных 17 изображения), например изображения из последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения также могут представлять собой предварительно обработанное изображение 19 (или предварительно обработанные данные 19 изображения). Для простоты нижеследующее описание ссылается на изображение 17. Изображение 17 также может именоваться текущим изображением или изображением, которое подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).The
(Цифровое) изображение является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента изображения) или pel (элемент изображения). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовые компоненты, т.е. изображение может быть представлено или включать в себя три массива выборок. В цветовом пространстве или формате RBG изображение содержит соответствующий массив красных, зеленых или синих выборок. Однако при видеокодировании каждый пиксель обычно представлен в цветовом пространстве или формате яркости и цветности, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновом изображении), в то время как две компоненты Cb и Cr цветности (chrominance) (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Изображения в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.A (digital) image is, or can be viewed as, a two-dimensional array or matrix of samples with intensity values. A selection in an array may also be referred to as a pixel (short form of image element) or pel (image element). The number of samples in the horizontal and vertical direction (or axis) of the array or image determines the size and/or resolution of the image. Three color components are usually used to represent color, i.e. the image may be represented by or include three arrays of samples. In a color space or RBG format, an image contains a corresponding array of red, green, or blue samples. However, in video encoding, each pixel is typically represented in a color space or luminance and chrominance format, such as YCbCr, which contains a luminance component, denoted Y (sometimes L is also used instead), and two chrominance components (chrominance components), denoted Cb and Cr. The Y component of luminance (or luma for short) represents the brightness or intensity of the gray level (such as in a grayscale image), while the two components Cb and Cr are chrominance (or chrominance for short). chroma) represent components of chromaticity or color information. Accordingly, an image in YCbCr format contains an array of luminance samples with luminance sample values (Y) and two chrominance sample arrays with chrominance values (Cb and Cr). Images in RGB format can be converted or converted to YCbCr format and vice versa, a process also known as color conversion or conversion. If the image is monochrome, it can only contain an array of luminance samples. Accordingly, the image may be, for example, an array of luminance samples in a monochrome format, or an array of luminance samples and two corresponding arrays of chrominance samples in 4:2:0, 4:2:2 and 4:4:4 color formats.
Варианты осуществления видеокодера 20 могут содержать блок разделения изображения (не показан на Фиг. 2), выполненный с возможностью разделения изображения 17 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разделения изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или подмножествами, или группами изображений и разделения каждого изображения на соответствующие блоки.Embodiments of
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 изображения 17, например одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения также может именоваться текущим блоком изображения или блоком изображения, подлежащим кодированию.In additional embodiments, the video encoder may be configured to receive directly a block 203 of an image 17, such as one, more, or all of the blocks forming the image 17. The image block 203 may also be referred to as a current image block or an image block to be encoded.
Подобно изображению 17, блок 203 изображения снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 17 или массив яркости или цветности в случае цветного изображения) или три массива выборок (например, яркость и два массива цветности в случае цветного изображения 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, быть MxN (M-столбец на N-строка) массивом выборок или MxN массивом коэффициентов преобразования.Like image 17, image block 203 is again, or can be viewed as, a two-dimensional array or matrix of samples with intensity values (sample values), albeit smaller in size than image 17. In other words, block 203 may contain, for example, one array of samples (e.g. , a luminance array in the case of a monochrome image 17 or a luminance or chrominance array in the case of a color image) or three sample arrays (for example, luminance and two chroma arrays in the case of a color image 17) or any other number and/or type of arrays depending on the color used format. The number of samples in the horizontal and vertical direction (or axis) of block 203 determines the size of block 203. Accordingly, the block may, for example, be an MxN (M-column by N-row) array of samples or an MxN array of transform coefficients.
Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть выполнены с возможностью кодирования изображения 17 блок за блоком, например кодирование и предсказание выполняется для каждого блока 203.Embodiments of
Вычисление остаткаCalculating the remainder
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также именуемого остатком 205) на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания приведены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборок.Residual calculation block 204 may be configured to calculate residual block 205 (also referred to as residual 205) based on image block 203 and prediction block 265 (additional details about prediction block 265 are provided below), for example, by subtracting the sample values of prediction block 265 from the values samples the image block 203 sample by sample (pixel by pixel) to obtain a residual block 205 in the sample region.
ПреобразованиеConversion
Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.Transform processing
Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе определенных ограничений, например коэффициенты масштабирования представляют собой степень двойки для операций сдвига, битовая глубина коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например блоком 312 обработки обратного преобразования в видеодекодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например блоком 206 обработки преобразования, могут быть заданы надлежащим образом в кодере 20.Transform processing
Варианты осуществления видеокодера 20 (соответственно блока 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например типа преобразования или преобразований, например, непосредственно или кодированных или сжатых через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.Embodiments of video encoder 20 (respectively transform processing unit 206) may be configured to output transform parameters, such as the type of transform or transforms, for example, directly or encoded or compressed via
КвантованиеQuantization
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.The
Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для предопределенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать тонкому квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть изменена из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.The quantization process may reduce the bit depth associated with some or all of the
Варианты осуществления видеокодера 20 (соответственно блока 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.Embodiments of video encoder 20 (respectively quantization unit 208) may be configured to output quantization parameters (QPs), such as directly or encoded through
Обратное квантованиеInverse quantization
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например путем применения обратной схемы квантования относительно таковой, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования. The
Обратное преобразованиеReverse conversion
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования относительно преобразования, применяемого блоком 206 обработки преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST) или других обратных преобразований для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.The inverse
ВосстановлениеRecovery
Блок 214 восстановления (например, блок сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т. е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например посредством сложения - выборка за выборкой - значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.A reconstruction block 214 (e.g., an add block or an adder 214) is configured to add a transform block 213 (i.e., a reconstructed residual block 213) with a prediction block 265 to obtain a reconstructed block 215 in the sample domain, such as through sample-by-sample addition. - sample values of the reconstructed residual block 213 and sample values of the prediction block 265.
ФильтрацияFiltration
Блок 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на ФИГ. 2 как внутриконтурный (in loop) фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как пост-контурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.Loop filter block 220 (or “loop filter” 220 for short) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or more generally to filter the reconstructed samples to obtain filtered samples. The edge filter unit, for example, is configured to smooth pixel transitions or otherwise improve video quality.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять аналогичные параметры контурного фильтра или соответствующие контурные фильтры для декодирования.Embodiments of video encoder 20 (respectively, loop filter block 220) may be configured to output loop filter parameters (such as sample-adaptive offset information), such as directly or encoded through
Буфер декодированных изображенийDecoded Image Buffer
Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных изображений может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего изображения или разных изображений, например ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, т.е. декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для интер-предсказания. Буфер 230 декодированных изображений (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.Decoded picture buffer (DPB) 230 may be a memory that stores reference pictures or, more generally, reference picture data for encoding video data by
Выбор режима (разделение и предсказание)Mode selection (separation and prediction)
Блок 260 выбора режима содержит блок 262 разделения, блок 244 интер-предсказания и блок 254 интра-предсказания и выполнен с возможностью приема или получения исходных данных изображения, например исходного блока 203 (текущего блока 203 текущего изображения 17), и восстановленных данных изображения, например отфильтрованных и/или нефильтрованных восстановленных выборок или блоков того же самого (текущего) изображения и/или из одного или множества ранее декодированных изображений, например из буфера 230 декодированных изображений или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленного изображения используются в качестве данных опорного изображения для предсказания, например интер-предсказания или интра-предсказания, чтобы получить блок 265 предсказания или предиктор 265.The
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (в том числе без разделения) и режима предсказания (например, режима интра- или интер-предсказания) и генерирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.The
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разделения и режима предсказания (например, из тех, которые поддерживаются блоком 260 выбора режима или доступны для него), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные непроизводительные затраты на сигнализацию (минимальные непроизводительные затраты на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба фактора. Блок 260 выбора режима может быть выполнен с возможностью определения режима разделения и предсказания на основе оптимизации скорость/искажение (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение при определенной скорости. Такие термины, как «лучший», «минимальный», «оптимальный» и т. д. в этом контексте не обязательно относятся к всеобъемлющему «лучшему», «минимуму», «оптимальному» и т. д., но также могут относиться к выполнению критерия выбора или прекращения, например когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к «субоптимальному выбору», но уменьшающих сложность и время обработки.Embodiments of the
Другими словами, блок 262 разделения может быть выполнен с возможностью разделения блока 203 на более мелкие разделы блока или субблоки (которые снова образуют блоки), например итеративно с использованием разделения квадродерева (QT), двоичного разделения (BT), или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделов блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разделяемого блока 203, а режимы предсказания применяются к каждому из разделов блока или субблоков.In other words, partitioning
Далее более подробно поясняется разделение (например, посредством блока 260 разделения) и обработка предсказания (посредством блока 244 интер-предсказания и блока 254 интра-предсказания), выполняемая примерным видеокодером 20.Next, the division (for example, through the division block 260) and prediction processing (through the
РазделениеSeparation
Блок 262 разделения может разделять (или разбивать) текущий блок 203 на более мелкие разделы, например блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разделение не будет завершено, например из-за выполнения критерия прекращения, например достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), а дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).
Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью изображения. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).As mentioned earlier, the term "block" as used herein may be a portion, particularly a square or rectangular portion of an image. With respect to, for example, HEVC and VVC, a block may be or correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) and a transform unit (TU) and/or corresponding blocks, such as a coding tree block (CTB ), a coding block (CB), a transform block (TB), or a prediction block (PB).
Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением.For example, a coding tree unit (CTU) may be or contain a CTB of luma samples, two corresponding CTBs of chroma samples of an image that has three arrays of samples, or a CTB of samples of a monochrome image or an image that is encoded using three separate color planes and the syntax structures used for encoding samples. Accordingly, a coding tree block (CTB) may be an N×N block of samples for some value of N, such that dividing a component by the CTB is a division. A coding unit (CU) may be or comprise a luma sample encoding unit, two corresponding chroma sample encoding units of an image that has three sample arrays, or a monochrome image sample encoding unit or an image that is encoded using three separate color planes and syntax structures used for encoding samples. Accordingly, a coding block (CB) may be an M×N block of samples for some values of M and N, so that dividing the CTB into coding blocks is a division.
В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разбита на CU с использованием структуры квадродерева, обозначенной в качества дерева кодирования. Решение о том, следует ли кодировать область изображения с использованием предсказания интер-изображения (временного) или интра-изображения (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU в соответствии с типом разбиения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU.In embodiments, for example, according to HEVC, a coding tree unit (CTU) can be partitioned into CUs using a quadtree structure designated as a coding tree. The decision of whether to encode an image region using inter-image (temporal) or intra-image (spatial) prediction is made at the CU level. Each CU can be further partitioned into one, two or four PUs according to the PU partition type. Within a single PU, the same prediction process is applied, and the relevant information is passed to the PU-based decoder. After obtaining the residual block by applying a prediction process based on the partition type on the PU, the CU can be divided into transform units (TUs) according to another quadtree structure similar to the encoding tree for the CU.
В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом видеокодирования, который называется универсальное видеокодирование (VVC), для разделения блока кодирования используется разделение квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или троичной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с блочной структурой QTBT было предложено использовать множественное разделение, например разделение троичного дерева.In embodiments, such as the newest video coding standard currently under development called Versatile Video Coding (VVC), a quadtree-binary tree (QTBT) partition is used to divide the encoding block. In a block structure, the QTBT CU can be either square or rectangular in shape. For example, a coding tree unit (CTU) is first divided into a quadtree structure. The leaf nodes of a quadtree are further separated by a binary tree or ternary (or triple) tree structure. The leaf nodes of a partitioning tree are called coding units (CUs), and this partitioning is used to process prediction and transformation without any further partitioning. This means that CU, PU and TU have the same block size in the QTBT coding block structure. In parallel, multiple partitioning, such as ternary tree partitioning, has been proposed to be used in conjunction with the QTBT block structure.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любой комбинации методик разделения, описанных в данном документе.In one example, the
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы интра-предсказания и/или режимы интер-предсказания.As described above,
Интра-предсказаниеIntra-prediction
Набор режимов интра-предсказания может содержать 35 различных режимов интра-предсказания, например ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов интра-предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены для VVC.The set of intra-prediction modes may contain 35 different intra-prediction modes, such as non-directional modes such as DC (or average) mode and planar mode, or directed modes such as those defined in HEVC, or may contain 67 different intra-prediction modes eg, non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined for VVC.
Блок 254 интра-предсказания выполнен с возможностью использования восстановленных выборок соседних блоков одного и того же текущего изображения для генерирования блока 265 интра-предсказания согласно режиму интра-предсказания из набора режимов интра-предсказания.The
Блок 254 интра-предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров интра-предсказания (или, в общем, информации, указывающей выбранный режим интра-предсказания для блока) в блок 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения так, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.The intra-prediction block 254 (or, more generally, the mode selection block 260) is further configured to output intra-prediction parameters (or, generally, information indicating the selected intra-prediction mode for the block) to the
Интер-предсказаниеInter-prediction
Набор (возможных) режимов интер-предсказания зависит от доступных опорных изображений (то есть предыдущих, по меньшей мере частично декодированных изображений, например сохраненных в DBP 230) и других параметров интер-предсказания, например используется ли опорное изображение целиком или только часть, например область окна поиска вокруг области текущего блока, опорного изображения для поиска наиболее подходящего опорного блока и/или, например, применяется ли интерполяция пикселей, например полупиксельная (half/semi-pel) и/или четвертьпиксельная (quarter-pel) интерполяция, или нет.The set of (possible) inter-prediction modes depends on the available reference pictures (i.e., previous, at least partially decoded pictures, such as those stored in DBP 230) and other inter-prediction parameters, such as whether the entire reference picture is used or only a portion, such as a region search windows around the area of the current block, a reference image to search for the most suitable reference block, and/or, for example, whether pixel interpolation, such as half/semi-pel and/or quarter-pel interpolation, is applied or not.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.In addition to the above prediction modes, a skip mode and/or a direct mode may be used.
Блок 244 интер-предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба не показаны на Фиг. 2). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например восстановленных блоков одного или множества других/отличных ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.The
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или разных изображений из множества других изображений и обеспечения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров интер-предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).The
Блок компенсации движения выполнен с возможностью получения, например, приема параметра интер-предсказания и выполнения интер-предсказания на основе или с использованием параметра интер-предсказания для получения блока 265 интер-предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может генерировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число блоков предсказания-кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных изображений.The motion compensation unit is configured to obtain, for example, receiving an inter-prediction parameter and performing inter-prediction based on or using the inter-prediction parameter to obtain an inter-prediction unit 265. The motion compensation performed by the motion compensation block may include obtaining or generating a prediction block based on a motion vector/block determined by motion estimation, possibly performing interpolations with sub-pixel precision. Interpolation filtering can generate additional pixel samples from known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to encode an image block. After receiving the motion vector for the PU of the current image block, the motion compensation unit may locate the prediction block pointed to by the motion vector in one of the reference image lists.
Блок компенсации движения может также генерировать синтаксические элементы, связанные с блоками и слайсами видео, для использования видеодекодером 30 при декодировании блоков изображения слайса видео.The motion compensation block may also generate syntax elements associated with video blocks and slices for use by video decoder 30 when decoding video slice image blocks.
Энтропийное кодированиеEntropy coding
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого метода или методологии энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров интер-предсказания, параметров интра-предсказания, параметров контурного фильтра и/или других синтаксических элементов для получения кодированных данных 21 изображения, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования, . Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.The
Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.Other changes to the structure of
Декодер и способ декодированияDecoder and decoding method
ФИГ. 3 показывает пример видеодекодера 30, который выполнен с возможностью реализации методов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 изображения (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированное изображение 331. Кодированные данные изображения или битовый поток содержит информацию для декодирования кодированных данных изображения, например данных, которые представляют блоки изображения кодированного слайса видео и связанные синтаксические элементы.FIG. 3 shows an example of a video decoder 30 that is configured to implement the methods of the present application. Video decoder 30 is configured to receive encoded image data 21 (e.g., encoded bitstream 21), such as encoded by
В примере на Фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных изображений, блок 344 интер-предсказания и блок 354 интра-предсказания. Блок 344 интер-предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять проход декодирования, в целом обратный проходу кодирования, описанному в отношении видеокодера 100 на ФИГ. 2.In the example in FIG. 3, decoder 30 includes an
Как описано в отношении кодера 20 блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 344 интер-предсказания и блок 354 интра-предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных изображений может быть идентичен по функции буферу 230 декодированных изображений. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.As described with respect to the
Энтропийное декодированиеEntropy Decoding
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, кодированных данных 21 изображения) и выполнения, например, энтропийного декодирования кодированных данных 21 изображения, чтобы получить, например, квантованные коэффициенты 309 и/или декодированные параметры кодирования (не показаны на Фиг. 3), например, любые или все из параметров интер-предсказания (например, индекс опорного изображения и вектор движения), параметра интра-предсказания (например, индекс или режим интра-предсказания), параметров преобразования, параметров квантования, параметров контурного фильтра и/или других синтаксических элементов. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров интер-предсказания, параметра интра-предсказания и/или других синтаксических элементов блоку 360 выбора режима и других параметров другим блокам декодера 30. Видеодекодер 30 может принимать синтаксические элементы на уровне слайса видео и/или уровне блока видео.
Обратное квантованиеInverse quantization
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе, для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.The
Обратное преобразованиеReverse conversion
Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также может именоваться блоками 213 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311.The inverse
ВосстановлениеRecovery
Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.The reconstruction block 314 (e.g., add block or adder 314) may be configured to add the reconstructed residual block 313 with the prediction block 365 to obtain a reconstructed block 315 in the sample domain, for example by adding the sample values of the reconstructed residual block 313 and the sample values of the block 365 predictions.
ФильтрацияFiltration
Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любую их комбинацию. Хотя блок 320 контурного фильтра показан на ФИГ. 3 как внутриконтурный (in loop) фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как пост-контурный фильтр.A loop filter block 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to produce a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality.
Буфер декодированных изображенийDecoded Image Buffer
Декодированные видеоблоки 321 изображения затем сохраняются в буфере 330 декодированных изображений, который сохраняет декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или для вывода, соответственно, отображения.The decoded video image blocks 321 are then stored in a decoded image buffer 330, which stores the decoded images 331 as reference images for subsequent motion compensation for other images and/or for display output, respectively.
Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312 для представления или просмотра пользователем.The decoder 30 is configured to output the decoded image 311, for example, through an
ПредсказаниеPrediction
Блок 344 интер-предсказания может быть идентичен блоку 244 интер-предсказания (в частности, блоку компенсации движения), а блок 354 интра-предсказания может быть идентичен блоку 254 интер-предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 выбора режима может быть выполнен с возможностью осуществления предсказания (интра- или интер-предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.The
Когда видеослайс кодируется как интра-кодируемый (I) слайс, блок 354 интра-предсказания блока 360 выбора режима выполнен с возможностью генерирования блока 365 предсказания для блока изображения текущего видеослайса на основе просигнализированного режима интра-предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как интер-кодируемый (т.е. B или P) слайс, блок 344 интер-предсказания (например, блок компенсации движения) блока 360 выбора режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, принимаемых от блока 304 энтропийного декодирования. Для интер-предсказания блоки предсказания могут быть созданы из одного из опорных изображений в пределах одного из списков опорных изображений. Видеодекодер 30 может строить списки опорных кадров, Список 0 и Список 1, используя методы построения по умолчанию на основе опорных изображений, хранящихся в DPB 330.When a video slice is encoded as an intra-encoded (I) slice, an
Блок 360 выбора режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения и других синтаксических элементов, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, интра- или интер-предсказание), используемого для кодирования видеоблоков видеослайса, типа слайса интер-предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных изображений для слайса, векторов движения для каждого интер-кодированного видеоблока слайса, статуса интер-предсказания для каждого интер-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе.The mode selector 360 is configured to determine prediction information for a video block of the current video slice by parsing motion vectors and other syntax elements, and uses the prediction information to create prediction blocks for the current video block to be decoded. For example, mode apply block 360 uses some of the received syntax elements to determine the prediction mode (eg, intra- or inter-prediction) used to encode video slice video blocks, the type of inter-prediction slice (eg, B-slice, P-slice, or GPB -slice), construction information for one or more reference picture lists for the slice, motion vectors for each inter-coded video block of the slice, inter-prediction status for each inter-coded video block of the slice, and other information for decoding the video blocks in the current video slice.
Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.Other embodiments of the video decoder 30 may be used to decode the encoded image data 21. For example, decoder 30 may produce an output video stream without
Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как Clip (усечение) или смещение, может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации.It should be understood that in the
Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон составляет -32768 ~ 32767; если bitDepth установлена равной 18, диапазон составляет -131072~131071. Здесь представлены два способа ограничения вектора движения.It should be noted that additional operations may be applied to the resulting current block motion vectors (including, but not limited to, affine mode checkpoint motion vectors, affine mode, planar, ATMVP mode subblock motion vectors, temporary motion vectors, and the like). For example, the value of a motion vector is limited to a predefined range according to its representing bit. If the representing bit of the motion vector is bitDepth, then the range is -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is set to 16, the range is -32768 ~ 32767; if bitDepth is set to 18, the range is -131072~131071. Here are two ways to limit the motion vector.
Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операцийMethod 1: Removing MSB (Most Significant Bit) Overflow via Streaming Operations
ux= ( mvx+2bitDepth ) % 2bitDepth (1)ux= ( mvx+2 bitDepth ) % 2 bitDepth (1)
mvx=( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (2)mvx=( ux >= 2bitDepth-1) ? (ux − 2bitDepth ): ux (2)
uy= ( mvy+2bitDepth ) % 2bitDepth (3)uy= ( mvy+2 bitDepth ) % 2 bitDepth (3)
mvy=( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (4)mvy=( uy >= 2bitDepth-1) ? (uy − 2bitDepth ): uy (4)
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двух. Дополнением до двух для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двух является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).For example, if the value of mvx is -32769, after applying formulas (1) and (2), the resulting value is 32767. In a computer system, decimal numbers are stored as two's complement. The two's complement of -32769 is 1,0111,1111,1111,1111 (17 bits), then the MSB is discarded, so the resulting two's complement is 0111,1111,1111,1111 (decimal is 32767), which is the same as the output from the application of formulas (1) and (2).
ux= ( mvpx+mvdx +2bitDepth ) % 2bitDepth (5)ux= ( mvpx+mvdx +2 bitDepth ) % 2 bitDepth (5)
mvx=( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (6)mvx=( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ): ux (6)
uy= ( mvpy+mvdy +2bitDepth ) % 2bitDepth (7)uy= ( mvpy+mvdy +2 bitDepth ) % 2 bitDepth (7)
mvy=( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (8)mvy=( uy >= 2bitDepth-1) ? (uy − 2bitDepth ): uy (8)
Операции могут применяться во время суммирования mvp и mvd, как показано в формулах с (5) по (8).Operations can be applied during the summation of mvp and mvd, as shown in formulas (5) to (8).
Способ 2: удаление MSB переполнения посредством усечения значенияMethod 2: Remove MSB overflow by truncating the value
vx=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)vx=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)vy=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
где определение функции Clip3 является следующим:where the definition of the Clip3 function is as follows:
Clip3( x, y, z )= Clip3( x, y, z )=
Операция "?" обычно используется как сокращение для представления условия "if … else" ("если … в ином случае"). Например “X<K?X=1:X=0” можно интерпретировать как "если X меньше K, X устанавливается равным 1, в ином случае (если X не меньше K) X устанавливается равным 0".Operation "?" usually used as a shorthand to represent an "if...else" condition. For example, “X<K?X=1:X=0” can be interpreted as “if X is less than K, X is set to 1, otherwise (if X is not less than K) X is set to 0.”
ФИГ. 4 является схематичным представлением устройства 400 видеокодирования согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30 по ФИГ. 1A, или кодером, таким как видеокодер 20 по ФИГ. 1А.FIG. 4 is a schematic diagram of a
Устройство 400 видеокодирования содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.The
Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Следовательно, включение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает трансформацию устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.The
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).
ФИГ. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг. 1 согласно примерному варианту осуществления. FIG. 5 is a simplified block diagram of a
Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более одного процессора.The
Память 504 в устройстве 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодирования, которое выполняет описанные в данном документе способы.
Устройство 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать сенсорные вводы (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.
Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, устройство 500 может быть реализовано в самых разнообразных конфигурациях.Although depicted here as a single bus,
В примере построения списка кандидатов на слияние в соответствии с ITU-T H.265 список кандидатов на слияние строится на основе следующих кандидатов:In the example of constructing a list of merge candidates in accordance with ITU-T H.265, the list of merge candidates is built based on the following candidates:
1. пространственные кандидаты вплоть до четырех, которые выводятся из пяти пространственных соседних блоков,1. up to four spatial candidates, which are derived from five spatial neighboring blocks,
2. один временной кандидат, выводимый из двух временных, совместно размещенных блоков,2. one temporary candidate derived from two temporary, co-located blocks,
3. дополнительные кандидаты, в том числе объединенные кандидаты двунаправленного предсказания и3. additional candidates, including combined bidirectional prediction candidates and
4. кандидаты нулевых векторов движения.4. Candidates of zero motion vectors.
Пространственные кандидатыSpatial candidates
Информация движения пространственных соседних блоков сначала добавляется в список кандидатов на слияние (в примере, список кандидатов на слияние может быть пустым списком до добавления первого вектора движения в этот список кандидатов на слияние) в качестве кандидатов информации движения. Здесь соседние блоки, которые считаются вставляемыми в список слияния, проиллюстрированы на Фиг. 6b. Для слияния блоков интер-предсказания в список слияния вставляются вплоть до четырех кандидатов путем последовательной проверки A1, B1, B0, A0 и B2 в указанном порядке.The motion information of spatial neighboring blocks is first added to a merging candidate list (in an example, the merging candidate list may be an empty list before adding the first motion vector to the merging candidate list) as motion information candidates. Here, adjacent blocks that are considered to be inserted into the merge list are illustrated in FIG. 6b. To merge inter-prediction blocks, up to four candidates are inserted into the merge list by sequentially testing A1, B1, B0, A0 and B2 in that order.
Информация движения может содержать все данные движения, в том числе информацию о том, используются ли один или два списка опорных изображений, а также опорный индекс и вектор движения для каждого списка опорных изображений.The motion information may include all motion data, including information about whether one or two reference picture lists are used, as well as a reference index and a motion vector for each reference picture list.
В одном примере после проверки того, доступен ли соседний блок и содержит ли он информацию движения, выполняются некоторые дополнительные проверки избыточности, прежде чем принимать все данные движения соседнего блока в качестве кандидата информации движения. Эти проверки избыточности можно разделить на две категории для двух разных целей:In one example, after checking whether an adjacent block is available and contains motion information, some additional redundancy checks are performed before accepting all motion data of the adjacent block as a motion information candidate. These redundancy checks can be divided into two categories for two different purposes:
Категория 1, избегают наличия кандидатов с избыточными данными движения в упомянутом списке,
Категория 2, предотвращают слияние двух разделов, которые могли бы быть выражены другими средствами, что создавало бы избыточный синтаксис.Category 2, prevent the merging of two sections that could be expressed by other means, creating redundant syntax.
Временные кандидатыTemporary candidates
На фигуре 6a проиллюстрированы координаты блоков, из которых извлекаются временные кандидаты информации движения. Совместно размещенный блок является блоком, который имеет те же -x, -y координаты, что и у текущего блока, но находится на другом изображении (одном из опорных изображений). Временные кандидаты информации движения добавляются в список слияния, если список не является полым (в примере список слияния не является полным, когда количество кандидатов в списке слияния меньше порога, например, порог может равняться 4, 5, 6 и т. д.).Figure 6a illustrates the coordinates of blocks from which temporary motion information candidates are extracted. A co-located block is a block that has the same -x, -y coordinates as the current block, but is on a different image (one of the reference images). Temporary motion information candidates are added to the merge list if the list is not complete (in the example, the merge list is not complete when the number of candidates in the merge list is less than a threshold, for example, the threshold could be 4, 5, 6, etc.).
Генерируемые кандидатыGenerated candidates
После вставки пространственных и временных кандидатов информации движения, если список слияния все еще не является полным, генерируемые кандидаты добавляются для заполнения списка. Размер списка указывается в наборе параметров последовательности и фиксируется на всем протяжении кодированной видеопоследовательности.After inserting spatial and temporal motion information candidates, if the merge list is still not complete, the generated candidates are added to fill the list. The list size is specified in the sequence parameter set and is fixed throughout the encoded video sequence.
Двунаправленное предсказаниеBidirectional Prediction
Специальный режим интер-предсказания называется «двунаправленное (би-) предсказание», в котором два вектора движения используются для предсказания блока. Векторы движения могут указывать на одинаковые или разные опорные изображения, при этом опорное изображение может быть указано с помощью ID списка опорных изображений и индекса опорного изображения. Например, первый вектор движения может указывать на первое изображение в списке L0 опорных изображений, а второй вектор движения может указывать на первое изображение в списке L1 опорных изображений. Два списка опорных изображений (например, L0 и L1) могут поддерживаться, и изображение, указанное первым вектором движения, выбирается из списка L0, а изображение, указанное вторым вектором движения, выбирается из списка L1.A special mode of inter-prediction is called "bi-directional (bi-)prediction", in which two motion vectors are used to predict a block. The motion vectors may point to the same or different reference pictures, and the reference picture may be indicated by a reference picture list ID and a reference picture index. For example, the first motion vector may point to the first image in the reference picture list L0, and the second motion vector may point to the first image in the reference picture list L1. Two reference picture lists (eg, L0 and L1) may be maintained, and the picture indicated by the first motion vector is selected from the L0 list, and the picture indicated by the second motion vector is selected from the L1 list.
В примере, если информация движения указывает двунаправленное предсказание, тогда информация движения включает в себя две части:In the example, if the motion information indicates bidirectional prediction, then the motion information includes two parts:
- Часть L0: Вектор движения и индекс опорного изображения, который указывает на запись в списке L0 опорных изображений.- L0 part: Motion vector and reference picture index that points to an entry in the L0 reference picture list.
- Часть L1: Вектор движения и индекс опорного изображения, который указывает на запись в списке L1 опорных изображений.- L1 Part: Motion vector and reference picture index, which points to an entry in the L1 reference picture list.
Счетчик очередности изображений (POC): Переменная, которая ассоциирована с каждым изображением, однозначно идентифицирует ассоциированное изображение среди всех изображений в CVS (кодированной видеопоследовательности), и когда ассоциированное изображение должно быть выведено из буфера декодированных изображений, указывает позицию ассоциированного изображения в очередности вывода относительно позиций в очередности вывода других изображений в той же самой CVS, которые должны быть выведены из буфера декодированных изображений.Picture Order Counter (POC): A variable that is associated with each picture uniquely identifies the associated picture among all pictures in the CVS (coded video sequence), and when the associated picture is to be output from the decoded picture buffer, indicates the position of the associated picture in the output order relative to the positions in order of output of other images in the same CVS that should be output from the decoded image buffer.
Каждый из списков L0 и L1 опорных изображений может включать в себя одно или более опорных изображений, каждое из которых идентифицируется с помощью POC. Ассоциация с каждым опорным индексом и значением POC может сигнализироваться в битовом потоке. В качестве примера списки L0 и L1 опорных изображений могут включать в себя следующие опорные изображения:Each of the reference picture lists L0 and L1 may include one or more reference pictures, each of which is identified by a POC. The association with each reference index and POC value may be signaled in the bit stream. As an example, the reference picture lists L0 and L1 may include the following reference pictures:
В приведенном выше примере первая запись (указанная опорным индексом 0) в списке L1 опорных изображений является опорным изображением со значением POC 13. Вторая запись (указанная опорным индексом 1) в списке L1 опорных изображений является опорным изображением со значением POC 14.In the above example, the first entry (indicated by reference index 0) in the reference picture list L1 is a reference picture with a POC value of 13. The second entry (indicated by a reference index 1) in the reference picture list L1 is a reference picture with a POC value of 14.
Процесс построения списка слияния в ITU-T H.265 и VVC выводит список кандидатов информации движения. Процесс построения списка слияния VVC описан в разделе «8.3.2.2 Derivation process for luma motion vectors for merge mode» документа JVET-L1001_v2 Универсальное Видеокодирование (Проект 3), который общедоступен по адресу http://phenix.it-sudparis.eu/jvet/. Термин «информация движения» относится к данным движения, которые необходимы для выполнения процесса предсказания с компенсацией движения. Информация движения обычно относится к следующей информации:The merge list construction process in ITU-T H.265 and VVC outputs a list of traffic information candidates. The VVC merge list construction process is described in section "8.3.2.2 Derivation process for luma motion vectors for merge mode" of JVET-L1001_v2 Universal Video Coding (Project 3), which is publicly available at http://phenix.it-sudparis.eu/jvet /. The term “motion information” refers to motion data that is needed to perform a motion-compensated prediction process. Motion information generally refers to the following information:
- Применяет ли блок однонаправленное или двунаправленное предсказание.- Whether the block applies unidirectional or bidirectional prediction.
- ID опорного изображения, который используется при предсказании (2 ID, если блок применяет двунаправленное предсказание).- ID of the reference picture that is used in prediction (2 IDs if the block uses bidirectional prediction).
- Вектор движения (2 вектора движения, если блок подлежит двунаправленному предсказанию).- Motion vector (2 motion vectors if the block is subject to bidirectional prediction).
- Дополнительная информация. - Additional Information.
В VVC и H.265 список кандидатов, которые выводятся при построении списка слияния, включает в себя N информаций движения кандидатов. Число N обычно включается в битовый поток и может быть положительным целым числом, например 5, 6 и т. д. Кандидаты, которые включаются в список слияния, который строится, могут включать в себя информацию однонаправленного предсказания или информацию двунаправленного предсказания. Это означает, что кандидат, который выбирается из списка слияния, может указывать операцию двунаправленного предсказания.In VVC and H.265, the candidate list that is output when constructing the merge list includes N candidate traffic information. The number N is typically included in the bitstream and may be a positive integer, such as 5, 6, etc. The candidates that are included in the merge list that is constructed may include unidirectional prediction information or bidirectional prediction information. This means that the candidate that is selected from the merge list can specify a bidirectional prediction operation.
Режим треугольного предсказанияTriangle Prediction Mode
Концепция режима треугольного предсказания заключается во введении нового треугольного раздела для предсказания с компенсацией движения. Как показано на Фиг. 7, две треугольные единицы предсказания используются для CU, в диагональном или обратном диагональном направлении. Каждая треугольная единица предсказания для CU подвергается интер-предсказанию с использованием однонаправленного вектора движения и индекса опорного кадра, которые выводятся из списка кандидатов однонаправленного предсказания. Процесс адаптивного взвешивания выполняется для диагонального края после того, как выборки, которые ассоциированы с каждой треугольной единицей предсказания, были предсказаны, например, посредством компенсации движения или интра-предсказания изображения. Затем процесс преобразования и квантования применяется ко всей CU. Следует отметить, что этот режим применяется только к режиму пропуска и режиму слияния.The concept of triangular prediction mode is to introduce a new triangular section for motion compensated prediction. As shown in FIG. 7, two triangular prediction units are used for CU, in the diagonal or reverse diagonal direction. Each triangular prediction unit for a CU is inter-predicted using a unidirectional motion vector and a reference frame index, which are derived from the unidirectional prediction candidate list. The adaptive weighting process is performed on the diagonal edge after the samples that are associated with each triangular prediction unit have been predicted, for example, by motion compensation or image intra-prediction. The conversion and quantization process is then applied to the entire CU. It should be noted that this mode only applies to skip mode and merge mode.
В режиме треугольного предсказания блок разбивают на две треугольные части (как на фигуре 7), и каждая часть может быть предсказана с использованием одного вектора движения. Вектор движения, который используется для предсказания одной треугольной части (обозначаемой PU1), может отличаться от вектора движения, который используется для предсказания другой треугольной части (обозначаемой PU2). В примере, отмечается, что каждая часть может быть предсказана только с использованием одного вектора движения (однонаправленное предсказание), чтобы уменьшить сложность выполнения режима треугольного предсказания. Другими словами, PU1 и PU2 могут не предсказываться с использованием двунаправленного предсказания, которое содержит два вектора движения.In the triangular prediction mode, a block is divided into two triangular parts (as in FIG. 7), and each part can be predicted using one motion vector. The motion vector that is used to predict one triangular portion (denoted PU1) may be different from the motion vector that is used to predict another triangular portion (denoted PU2). In the example, it is noted that each part can be predicted using only one motion vector (unidirectional prediction) to reduce the complexity of performing the triangular prediction mode. In other words, PU1 and PU2 may not be predicted using bidirectional prediction that contains two motion vectors.
Режим субблочного предсказанияSub-block prediction mode
Режим треугольного предсказания является специальным случаем субблочного предсказания, когда блок делится на два блока. В приведенных выше примерах проиллюстрированы два направления деления блоков (45 градусные и 135 градусные разделы). Также возможны другие углы разделения и пропорции разделения для субблочного предсказания (примеры на Фиг. 8).Triangular prediction mode is a special case of sub-block prediction where a block is divided into two blocks. The examples above illustrate two directions for dividing blocks (45 degree and 135 degree sections). Other split angles and split proportions for sub-block prediction are also possible (examples in FIG. 8).
В некоторых примерах блок разбивается на 2 субблока, и каждая часть (субблок) предсказывается с помощью однонаправленного предсказания.In some examples, a block is split into 2 sub-blocks and each part (sub-block) is predicted using unidirectional prediction.
В примере, согласно использованию режима субблочного разделения, следующие этапы применяются для получения выборок предсказания для блока:In the example, according to the use of sub-block partitioning mode, the following steps are applied to obtain prediction samples for a block:
- Этап 1: деление блока кодирования на 2 субблока согласно геометрической модели. Эта модель может привести в результате к разбиению блока линией разграничения (например, прямой линией), как показано в примерах на Фиг. 9-12.- Stage 1: dividing the coding block into 2 subblocks according to the geometric model. This model may result in the block being divided by a demarcation line (eg, a straight line), as shown in the examples in FIGS. 9-12.
Можно понять, что результат Этапа 1 может быть просто концептуальным представлением. Например, после Этапа 1 нет явного объекта «субблок 1» или «субблок 2»; а генерируются и получаются параметры, относящиеся к линии разграничения. Выборки принадлежат к разным субблокам согласно упомянутым параметрам, относящимся к линии разграничения.It can be understood that the output of
На этом этапе, согласно геометрической модели, выборки в блоке кодирования считаются находящимися в двух субблоках. Субблок A или субблок B может содержать часть (но не все) выборок в текущем блоке кодирования. Субблок А или субблок В может быть представлен согласно знаку sample_dist каждой из выборок. Sample_dist может быть получено согласно примерам и вариантам осуществления в других абзацах.At this stage, according to the geometric model, the samples in the encoding block are considered to be in two sub-blocks. Subblock A or subblock B may contain some (but not all) of the samples in the current encoding block. Subblock A or subblock B can be represented according to the sample_dist sign of each of the samples. Sample_dist can be obtained according to the examples and embodiments in other paragraphs.
- Этап 2: получение первого режима предсказания для первого субблока и второго режима предсказания для второго субблока. В одном примере первый режим предсказания не идентичен второму режиму предсказания. В одном примере режим предсказания (первый режим предсказания или второй режим предсказания) может быть режимом интер-предсказания, информация для режима интер-предсказания может содержать индекс опорного изображения и вектор движения. В другом примере режим предсказания может быть режимом интра-предсказания, информация для режима интра-предсказания может содержать индекс режима интра-предсказания.- Step 2: obtaining the first prediction mode for the first sub-block and the second prediction mode for the second sub-block. In one example, the first prediction mode is not identical to the second prediction mode. In one example, the prediction mode (the first prediction mode or the second prediction mode) may be an inter-prediction mode, the information for the inter-prediction mode may include a reference image index and a motion vector. In another example, the prediction mode may be an intra-prediction mode, the information for the intra-prediction mode may include an index of the intra-prediction mode.
- Этап 3: Получение первых значений предсказания и вторых значений предсказания, используя первый режим предсказания и второй режим предсказания, соответственно.- Step 3: Obtaining the first prediction values and the second prediction values using the first prediction mode and the second prediction mode, respectively.
- Этап 4: получение объединенных значений выборок предсказания в соответствии с объединением первых значений предсказания и вторых значений предсказания, согласно делению, которое раскрыто на Этапе 1. Процесс объединения выборок из первого предсказания и второго предсказания для получения объединенных значений выборок предсказания блока может содержать операции фильтрации, операции маскирования или копирование выборок.- Step 4: obtaining the combined values of the prediction samples in accordance with the combining of the first prediction values and the second prediction values, according to the division that is disclosed in
В примере, на этапе 1, блок кодирования делят на 2 субблока различными способами. На Фиг. 9 показан пример разделения блока кодирования, линия 1250 разграничения делит упомянутый блок на 2 субблока. Чтобы описать упомянутую линию 1250, сигнализируются два параметра, одним параметром является угол альфа 1210, а другим параметром является расстояние dist 1230.In the example, in
В некоторых вариантах осуществления упомянутый угол, как показано на Фигуре 9, измеряется между осью x и линией разграничения, тогда как упомянутое расстояние измеряется длиной вектора, который перпендикулярен линии разграничения и проходит через центр текущего блока.In some embodiments, said angle, as shown in Figure 9, is measured between the x-axis and the demarcation line, while said distance is measured by the length of a vector that is perpendicular to the demarcation line and passes through the center of the current block.
В другом примере на Фиг. 10 показан альтернативный способ представления линии разграничения, где примеры угла и расстояния отличаются от примеров, показанных на Фиг. 9.In another example in FIG. 10 shows an alternative way of representing a demarcation line, where the examples of angle and distance differ from the examples shown in FIG. 9.
В некотором примере, на этапе 4, деление, раскрытое на Этапе 1, используется для объединения двух упомянутых предсказаний, чтобы получить окончательное предсказание. В примере операция смешивания применяется на этапе 4 для устранения любых артефактов (резкого или неровного вида вдоль линии разграничения). Операция смешивания может быть описана как операция фильтрации вдоль линии разграничения.In some example, in Step 4, the division disclosed in
В примере, на стороне кодера, линия разграничения (параметры, определяющие эту линию, например, угол и расстояние) определяется на основе функции стоимости, основанной на соотношении "скорость-искажение". Определенные параметры линии кодируются в битовый поток. На стороне декодера параметры линии декодируются (получаются) согласно битовому потоку. На стороне декодера параметры линии используются для объединения первых значений предсказания и вторых значений предсказания, чтобы получить окончательные значения предсказания. Этап 1 не требует наличия двух объектов-субблоков кодирования, декодер может использовать блок кодирования и параметры линии для представления двух объектов-субблоков кодирования.In the example, on the encoder side, the demarcation line (parameters that define this line, such as angle and distance) is determined based on a cost function based on the rate-distortion relationship. Certain line parameters are encoded into a bit stream. At the decoder side, the line parameters are decoded (obtained) according to the bit stream. On the decoder side, line parameters are used to combine the first prediction values and the second prediction values to obtain the final prediction values.
Поскольку существует множество возможностей деления блока кодирования на 2 субблока, сигнализация (кодирование) такого деления требует слишком большого числа битов. И поскольку значения угла и расстояния могут иметь много разных значений, слишком много вспомогательной информации требуется сигнализировать в битовом потоке.Since there are many possibilities for dividing a coding block into 2 sub-blocks, signaling (coding) such a division requires too many bits. And since the angle and distance values can have many different values, too much auxiliary information needs to be signaled in the bitstream.
Варианты осуществления настоящего изобретения касаются сигнализации параметров разделения. Эффективное кодирование достигается следующими особенностями:Embodiments of the present invention relate to signaling of separation parameters. Efficient coding is achieved by the following features:
- Параметры (например, угол и расстояние) для разделения блока сохраняются в предопределенной таблице, так что фактические значения угла и расстояния передавать не нужно. - Parameters (such as angle and distance) for block division are stored in a predefined table, so that the actual angle and distance values do not need to be transferred.
- Упомянутая таблица содержит параметры разделения, которые являются наиболее вероятными и которые включают в себя достаточно вариаций.- The table mentioned contains the splitting parameters that are most likely and which include sufficient variation.
- Индекс в таблицу кодируется в битовый поток (или получается из него).- The index into the table is encoded into a bit stream (or obtained from it).
Варианты осуществления изобретения обеспечивают способ совместного кодирования параметров, которые описывают разделение блока кодирования на субблоки.Embodiments of the invention provide a method for jointly encoding parameters that describe the division of an encoding block into subblocks.
Вариант 1 осуществления (с позиции декодера): Option 1 (from the decoder position):
В этом варианте осуществления следующие этапы применяются для получения объединенного значения предсказания для некоторой выборки из блока кодирования.In this embodiment, the following steps are applied to obtain a combined prediction value for some sample from the encoding block.
Этап 1: Получение значения указателя для текущего блока декодирования согласно битовому потоку.Step 1: Obtain the pointer value for the current decoding block according to the bitstream.
В варианте осуществления значение указателя используется для специфицирования формы разделения в режиме слияния с геометрическим разделением. Например, указателем может быть merge_gpm_partition_idx[x0][y0 ], при этом merge_gpm_partition_idx[ x0 ][ y0 ] специфицирует форму разделения режима слияния с геометрическим разделением. Индексы x0, y0 массива специфицируют местоположение (x0, y0) верхней левой выборки яркости рассматриваемого блока кодирования относительно верхней левой выборки яркости изображения.In an embodiment, the pointer value is used to specify the shape of the split in geometric split merge mode. For example, the pointer could be merge_gpm_partition_idx[x0][y0 ], where merge_gpm_partition_idx[ x0 ][ y0 ] specifies the partition form of the geometric partition merge mode. The array indices x0, y0 specify the location (x0, y0) of the top left luminance sample of the encoding block in question relative to the top left luminance sample of the image.
Обычно значение merge_gpm_partition_idx[ x0 ][ y0 ] декодируется из битового потока. В примере диапазон значений для merge_gpm_partition_idx[ ][ ] составляет от 0 до 63, в том числе 0 и 63. В примере процессом декодирования для merge_gpm_partition_idx[ ][ ] является «обход».Typically the merge_gpm_partition_idx[ x0 ][ y0 ] value is decoded from the bitstream. In the example, the range of values for merge_gpm_partition_idx[ ][ ] is from 0 to 63, including 0 and 63. In the example, the decoding process for merge_gpm_partition_idx[ ][ ] is "bypass".
Когда merge_gpm_partition_idx[ x0 ][ y0 ] не присутствует, он подразумевается равным 0.When merge_gpm_partition_idx[ x0 ][ y0 ] is not present, it is assumed to be 0.
Этап 2: На основе значения указателя и предопределенной таблицы поиска получение значения первого параметра и значения второго параметра.Step 2: Based on the pointer value and the predefined lookup table, obtain the value of the first parameter and the value of the second parameter.
(Parameter1, parameter2)=lookupTable (указатель)(Parameter1, parameter2)=lookupTable (pointer)
В варианте осуществления переменная угла разделения angleIdx (параметр 1) и переменная расстояния distanceIdx (параметр 2) режима геометрического разделения устанавливаются согласно значению merge_gpm_partition_idx[ xCb ][ yCb ] (указатель), как специфицировано в нижеследующей таблице. Можно понять, что в упомянутой реализации эта взаимосвязь может быть реализована согласно таблице 1 или согласно некоторой функции.In an embodiment, the partition angle variable angleIdx (parameter 1) and the distance variable distanceIdx (parameter 2) of the geometric partition mode are set according to the value of merge_gpm_partition_idx[ xCb ][ yCb ] (pointer) as specified in the following table. It can be understood that in the mentioned implementation, this relationship may be implemented according to Table 1 or according to some function.
Таблица 1: Спецификация angleIdx и distanceIdx на основе merge_gpm_partition_idxTable 1: Specification of angleIdx and distanceIdx based on merge_gpm_partition_idx
Этап 3: Для выборки в текущем блоке декодирования расстояние выборки (sample_dist) вычисляется согласно значению первого параметра и значению второго параметра.Step 3: For a sample in the current decoding block, the sampling distance (sample_dist) is calculated according to the value of the first parameter and the value of the second parameter.
В варианте осуществления этап 3 содержит:In an embodiment,
Этап 3.1: получение индексного значения параметра угла (alphaN или angleIdx) для текущего блока, значения ширины (W) текущего блока, значения высоты (H) текущего блока. W и H представляют ширину и высоту текущего блока числом выборок. Например, блок кодирования, ширина и высота которого равны 8, представляет собой квадратный блок, содержащий 64 выборки. В другом примере W и H представляют ширину и высоту текущего блока числом выборок яркости. Индексное значение параметра угла может быть получено согласно приведенному выше описанию, относящемуся к таблице 1.Step 3.1: getting the index value of the angle parameter (alphaN or angleIdx) for the current block, the width (W) value of the current block, the height (H) value of the current block. W and H represent the width and height of the current block by the number of samples. For example, a coding block whose width and height are 8 is a square block containing 64 samples. In another example, W and H represent the width and height of the current block by the number of brightness samples. The index value of the angle parameter can be obtained according to the above description referring to Table 1.
Этап 3.2: получение значения соотношения whRatio согласно значению W и значению H, значение whRatio представляет соотношение между шириной и высотой текущего блока кодирования.Step 3.2: Obtaining the whRatio value according to the W value and the H value, the whRatio value represents the ratio between the width and height of the current encoding block.
В примере whRatio=H/W; или whRatio=W/H.In the example whRatio=H/W; or whRatio=W/H.
В другом примере две переменные nCbW и nCbH специфицируют ширину и высоту текущего блока кодирования, а переменная cIdx специфицирует индекс цветового компонента.In another example, two variables nCbW and nCbH specify the width and height of the current encoding block, and the variable cIdx specifies the color component index.
переменные nW, nH и whRatio выводятся следующим образом:The variables nW, nH and whRatio are output as follows:
nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;
nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;
whRatio=nH/nW.whRatio=nH/nW.
В примере, переменные SubWidthC и SubHeightC специфицируются в таблице 2 в зависимости от структуры выборки формата цветности, которая специфицируется с помощью chroma_format_idc (chroma_format_idc специфицирует выборку цветности относительно выборки яркости) и separate_colour_plane_flag (separate_colour_plane_flag, равный 1, специфицирует, что три цветовых компонента формата цветности 4:4:4 кодируются по отдельности. separate_colour_plane_flag, равный 0, специфицирует, что эти цветовые компоненты не кодируются по отдельности. Когда separate_colour_plane_flag не присутствует, он подразумевается равным 0. Когда separate_colour_plane_flag равен 1, кодированное изображение состоит из трех отдельных компонентов, каждый из которых состоит из кодированных выборок одной цветовой плоскости (Y, Cb или Cr) и использует синтаксис монохромного кодирования. В этом случае каждая цветовая плоскость ассоциирована с конкретным значением colour_plane_id). Другие значения chroma_format_idc, SubWidthC и SubHeightC могут быть специфицированы в будущем ITU-T | ISO/IEC.In the example, the variables SubWidthC and SubHeightC are specified in Table 2 depending on the chroma format sample structure, which is specified using chroma_format_idc (chroma_format_idc specifies the chroma sample relative to the luminance sample) and separate_colour_plane_flag (separate_colour_plane_flag equal to 1 specifies that the three color components of the chroma 4 :4:4 are encoded separately. separate_colour_plane_flag equal to 0 specifies that these color components are not encoded separately. When separate_colour_plane_flag is not present, it is implied to be 0. When separate_colour_plane_flag is equal to 1, the encoded image consists of three separate components, each of which consists of encoded samples of a single color plane (Y, Cb or Cr) and uses monochrome encoding syntax, in which case each color plane is associated with a specific color_plane_id value). Other values for chroma_format_idc, SubWidthC and SubHeightC may be specified in the future by ITU-T | ISO/IEC.
Таблица 2 - Значения SubWidthC и SubHeightC, выводимые из chroma_format_idc и separate_colour_plane_flagTable 2 - SubWidthC and SubHeightC values derived from chroma_format_idc and separate_colour_plane_flag
В монохромной выборке есть только один массив выборок, который номинально считается массивом яркости.In a monochrome sample there is only one sample array, which is nominally considered the luma array.
В выборке 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости.In a 4:2:0 sample, each of the two chroma arrays is half the height and half the width of the luma array.
В выборке 4:2:2 каждый из двух массивов цветности имеет аналогичную высоту и половину ширины массива яркости.In a 4:2:2 sample, each of the two chroma arrays has the same height and half the width of the lumina array.
В выборке 4:4:4, в зависимости от значения separate_colour_plane_flag, применяется следующее:In a 4:4:4 sample, depending on the value of separate_colour_plane_flag, the following applies:
- Если separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет одинаковую высоту и ширину, что и массив яркости.- If separate_colour_plane_flag is 0, each of the two chroma arrays has the same height and width as the luminance array.
- Иначе (separate_colour_plane_flag равен 1) три цветовые плоскости обрабатываются отдельно как подвергаемые монохромной выборке изображения.- Otherwise (separate_colour_plane_flag is equal to 1) the three color planes are treated separately as monochrome sampled images.
Этап 3.3: Получение значения shiftHor согласно таблице поиска, значению альфа и значению whRatio, в примере значение альфа (alphaN или angleIdx) и значение whRatio используются в качестве индексных значений таблицы поиска. Должно быть понятно, что значение shiftHor также может быть получено согласно функции, при этом значение альфа (alphaN или angleIdx) и значение whRatio представляют собой входные данные в упомянутую функцию, а значение shiftHor представляет собой выходные данные упомянутой функции. В примере результат функции аналогичен или совпадает с таблицей поиска. В примере значение shiftHor представляет размер шага квантования для процесса вычисления расстояния выборки.Step 3.3: Retrieving the shiftHor value according to the lookup table, alpha value and whRatio value, in the example the alpha value (alphaN or angleIdx) and whRatio value are used as index values of the lookup table. It should be understood that the value of shiftHor can also be obtained according to a function, wherein the alpha value (alphaN or angleIdx) and the whRatio value represent the input to the function, and the shiftHor value represents the output of the function. In the example, the function result is the same as or the same as the lookup table. In the example, the value shiftHor represents the quantization step size for the sampling distance calculation process.
В другом примере функция может быть представлена как shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.In another example, the function could be represented as shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.
Этап 3.4: значение sample_dist вычисляется согласно значению shiftHor.Step 3.4: The value of sample_dist is calculated according to the value of shiftHor.
В примере, для вычисления расстояния выборки (sample_dist) сначала следующим образом выводятся переменные offsetX и offsetY:In the example, to calculate the sample distance (sample_dist), the offsetX and offsetY variables are first output as follows:
Если shiftHor равен 0, применяется следующее:If shiftHor is 0, the following applies:
offsetX=( −nW ) >> 1, offsetX=( −nW ) >> 1,
offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );
Иначе (shiftHor равен 1), применяется следующее:Otherwise (shiftHor is 1), the following applies:
offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) ); offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) );
offsetY=( − nH ) >> 1;offsetY=( − nH ) >> 1;
- Переменные xL и yL выводятся следующим образом:- Variables xL and yL are output as follows:
xL=( cIdx== 0 ) ? x : x * SubWidthC xL=( cIdx== 0 ) ? x : x * SubWidthC
yL=( cIdx== 0 ) ? y : y * SubHeightC yL=( cIdx== 0 ) ? y : y * SubHeightC
sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY ) << 1 ) + 1 ) ) * disLut[ displacementY ].sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY ) << 1 ) + 1 ) ) * disLut[ displacementY ].
Переменные displacementX и displacementY выводятся следующим образом:The displacementX and displacementY variables are output as follows:
hwRatio=cbHeight/cbWidth;hwRatio=cbHeight/cbWidth;
displacementX=angleIdx;displacementX=angleIdx;
displacementY=( angleIdx+8 ) % 32.displacementY=( angleIdx+8 ) % 32.
Массив disLut специфицируется в таблице 3 следующим образом:The disLut array is specified in Table 3 as follows:
Таблица 3 Спецификация массива disLut расстояний геометрического разделенияTable 3 Specification of the disLut array of geometric separation distances
В другом варианте осуществления, в примере, Этап 3 в вышеупомянутых вариантах осуществления может содержать следующие этапы:In another embodiment, in an example,
Этап 3.1: получение значения параметра угла (alphaN или angleIdx) для текущего блока, значения индекса расстояния (distanceIdx), значения ширины (W) текущего блока, значения высоты (H) текущего блока. W и H представляют ширину и высоту текущего блока числом выборок. Например, блок кодирования, ширина и высота которого равны 8, представляет собой квадратный блок, содержащий 64 выборки. В другом примере W и H представляют ширину и высоту текущего блока числом выборок яркости. Индексное значение параметра угла может быть получено согласно приведенному выше описанию, относящемуся к таблице 1.Step 3.1: getting the angle parameter value (alphaN or angleIdx) for the current block, the distance index value (distanceIdx), the width (W) value of the current block, the height (H) value of the current block. W and H represent the width and height of the current block by the number of samples. For example, a coding block whose width and height are 8 is a square block containing 64 samples. In another example, W and H represent the width and height of the current block by the number of brightness samples. The index value of the angle parameter can be obtained according to the above description referring to Table 1.
Этап 3.2: получение значения соотношения whRatio согласно значению W и значению H, значение whRatio представляет соотношение между шириной и высотой текущего блока кодирования.Step 3.2: Obtaining the whRatio value according to the W value and the H value, the whRatio value represents the ratio between the width and height of the current encoding block.
В примере whRatio=H/W; или whRatio=W/H.In the example whRatio=H/W; or whRatio=W/H.
В другом примере две переменные nCbW и nCbH специфицируют ширину и высоту текущего блока кодирования, а переменная cIdx специфицирует индекс цветового компонента.In another example, two variables nCbW and nCbH specify the width and height of the current encoding block, and the variable cIdx specifies the color component index.
переменные nW, nH и whRatio выводятся следующим образом:The variables nW, nH and whRatio are output as follows:
nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;nW=( cIdx== 0 ) ? nCbW : nCbW * SubWidthC;
nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;nH=( cIdx== 0 ) ? nCbH : nCbH * SubHeightC;
whRatio=nH/nW. whRatio=nH/nW.
Этап 3.3: Получение значения shiftHor согласно таблице поиска, значению альфа и значению whRatio, в примере, значение alphaN и значение whRatio используются в качестве индексных значений таблицы поиска. В примере значение shiftHor представляет размер шага квантования для процесса вычисления расстояния выборки. Значение shiftHor также может быть получено согласно функции, при этом значение альфа (alphaN или angleIdx) и значение whRatio представляют собой входные данные упомянутой функции, а значение shiftHor представляет собой выходные данные упомянутой функции. В примере результат функции аналогичен или совпадает с таблицей поиска. В примере значение shiftHor представляет размер шага квантования для процесса вычисления расстояния выборки.Step 3.3: Retrieving the shiftHor value according to the lookup table, alpha value and whRatio value, in the example, alphaN value and whRatio value are used as index values of the lookup table. In the example, the value shiftHor represents the quantization step size for the sampling distance calculation process. The shiftHor value can also be obtained according to a function, wherein the alpha value (alphaN or angleIdx) and the whRatio value represent the input of the function, and the shiftHor value represents the output of the function. In the example, the function result is the same as or the same as the lookup table. In the example, the value shiftHor represents the quantization step size for the sampling distance calculation process.
В другом примере функция может быть представлена как shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.In another example, the function could be represented as shiftHor=( angleIdx % 16== 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.
Этап 3.4: вычисление значения sample_dist согласно значению shiftHor, значению distanceIdx, значению угла (alphaN или angleIdx), значению W и значению H.Step 3.4: Calculate sample_dist value according to shiftHor value, distanceIdx value, angle value (alphaN or angleIdx), W value and H value.
В примере, для вычисления расстояния выборки (sample_dist) сначала следующим образом выводятся переменные offsetX и offsetY:In the example, to calculate the sample distance (sample_dist), the offsetX and offsetY variables are first output as follows:
Если shiftHor равен 0, применяется следующее:If shiftHor is 0, the following applies:
offsetX=( −nW ) >> 1, offsetX=( −nW ) >> 1,
offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );offsetY=( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) );
Иначе (shiftHor равен 1), применяется следующее:Otherwise (shiftHor is 1), the following applies:
offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) ); offsetX=( ( −nW ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3 ) );
offsetY=( − nH ) >> 1;offsetY=( − nH ) >> 1;
- Переменные xL и yL выводятся следующим образом:- Variables xL and yL are output as follows:
xL=( cIdx== 0 ) ? x : x * SubWidthC xL=( cIdx== 0 ) ? x : x * SubWidthC
yL=( cIdx== 0 ) ? y : y * SubHeightC yL=( cIdx== 0 ) ? y : y * SubHeightC
sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY ) << 1 ) + 1 ) ) * disLut[ displacementY ].sample_dist=( ( ( xL+offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY ) << 1 ) + 1 ) ) * disLut[ displacementY ].
Переменные displacementX и displacementY выводятся следующим образом:The displacementX and displacementY variables are output as follows:
hwRatio=cbHeight/cbWidth;hwRatio=cbHeight/cbWidth;
displacementX=angleIdx;displacementX=angleIdx;
displacementY=( angleIdx+8 ) % 32.displacementY=( angleIdx+8 ) % 32.
Массив disLut специфицирован в приведенной выше таблице 3.The disLut array is specified in Table 3 above.
Этап 4: Использование вычисленного sample_dist для вычисления весовых коэффициентов, причем весовые коэффициенты используются для объединения первого значения предсказания и второго значения предсказания, соответствующего упомянутой выборке. В примере весовые коэффициенты обозначаются как sampleWeight1 и sampleWeight2, имея ввиду вес, соответствующий первому значению предсказания, и вес, соответствующий второму значению предсказания.Step 4: Using the calculated sample_dist to calculate weights, the weights being used to combine the first prediction value and the second prediction value corresponding to said sample. In the example, the weights are denoted as sampleWeight1 and sampleWeight2, meaning a weight corresponding to the first prediction value and a weight corresponding to the second prediction value.
В одном примере весовые коэффициенты вычисляются согласно следующим функциямIn one example, the weights are calculated according to the following functions
weightIdxL=partFlip ? 32+sample_dist : 32 − sample_dist;weightIdxL=partFlip ? 32+sample_dist : 32 − sample_dist;
wValue=Clip3( 0, 8, ( weightIdxL+4 ) >> 3 ).wValue=Clip3( 0, 8, ( weightIdxL+4 ) >> 3 ).
В этом примере wValue представляет собой sampleWeight1, а 8-wValue представляет собой sampleWeight2. Переменная partFlip определяется согласно значению angleIdx. В примере partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, или partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 1 : 0.In this example, wValue represents sampleWeight1 and 8-wValue represents sampleWeight2. The partFlip variable is defined according to the angleIdx value. In the example, partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, or partFlip=( angleIdx >= 13 && angleIdx <= 27 ) ? 10.
Этап 5: Вычисление объединенного значения выборки предсказания в координате выборки (x, y) согласно первому значению предсказания в координате (x, y), второму значению предсказания в координате (x, y), sampleWeight1 и sampleWeight2.Step 5: Calculate the combined prediction sample value at sample coordinate (x, y) according to the first prediction value at (x, y) coordinate, second prediction value at (x, y) coordinate, sampleWeight1 and sampleWeight2.
В примере значение выборки предсказания выводится следующим образом:In the example, the prediction sample value is output as follows:
pbSamples[ x ][ y ]=Clip3( 0, ( 1 << BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 ) >> shift1 ).pbSamples[ x ][ y ]=Clip3( 0, ( 1 << BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 ) >>> shift1).
При этом bitDepth представляет битовую глубину выборки, переменную shift1 получают согласно упомянутой bitDepth, в примере shift1= Max( 5, 17 - BitDepth ); Переменную offset1 получают согласно shift1, в примере offset1= 1 << ( shift1-1 ), predSamplesLA и predSamplesLB представляют собой два (nCbW)x(nCbH) массива.In this case, bitDepth represents the bit depth of the sample, the shift1 variable is obtained according to the mentioned bitDepth, in the example shift1= Max( 5, 17 - BitDepth ); The variable offset1 is obtained according to shift1, in the example offset1= 1 << ( shift1-1 ), predSamplesLA and predSamplesLB are two (nCbW)x(nCbH) arrays.
Вариант 2 осуществления (с позиции кодера):Option 2 (from the encoder's perspective):
В этом варианте осуществления применяются следующие этапы.In this embodiment, the following steps apply.
Этап 0: Выбор значения первого параметра и значения второго параметра, в примере значение первого параметра и значение второго параметра получают согласно метрике "скорость-искажение".Step 0: Selecting the value of the first parameter and the value of the second parameter, in the example, the value of the first parameter and the value of the second parameter are obtained according to the speed-distortion metric.
Этап 1: Получение индексного значения согласно значению первого параметра, значению второго параметра и согласно таблице поиска так, что:Step 1: Obtaining the index value according to the value of the first parameter, the value of the second parameter and according to the lookup table so that:
(Parameter1, parameter2)=lookupTable (индекс)(Parameter1, parameter2)=lookupTable (index)
Этап 2: Кодирование индексного значения в битовый поток.Step 2: Encoding the index value into the bit stream.
Опционально в данном варианте осуществления используются следующие этапы:Optionally, this embodiment uses the following steps:
Этап 3: Для выборки в блоке кодирования вычисление расстояния выборки (sample_dist) согласно значению первого параметра и значению второго параметра.Step 3: For a sample in the encoding block, calculate the sampling distance (sample_dist) according to the value of the first parameter and the value of the second parameter.
Этап 4: Использование вычисленного sample_dist для вычисления весовых коэффициентов для объединения первого значения предсказания и второго значения предсказания, соответствующего упомянутой выборке. Весовые коэффициенты обозначаются как sampleWeight1 и sampleWeight2, имея ввиду значение веса, соответствующее первому значению предсказания, и значение веса, соответствующее второму значению предсказания.Step 4: Use the calculated sample_dist to calculate weights to combine the first prediction value and the second prediction value corresponding to said sample. The weights are denoted as sampleWeight1 and sampleWeight2, referring to the weight value corresponding to the first prediction value and the weight value corresponding to the second prediction value.
Этап 5: Вычисление объединенного значения предсказания для выборки в координате (x, y) согласно первому значению предсказания в координате (x, y), второму значению предсказания в координате (x, y), sampleWeight1 и sampleWeight2.Step 5: Calculate the combined prediction value for the sample at (x, y) coordinate according to the first prediction value at (x, y) coordinate, the second prediction value at (x, y) coordinate, sampleWeight1 and sampleWeight2.
Детали для каждого этапа на стороне кодера соответствуют приведенным выше примерам, описывающим сторону декодера.The details for each stage on the encoder side are consistent with the examples above describing the decoder side.
Согласно примеру, таблица поиска в варианте 1 осуществления является такой же, как таблица поиска в варианте 2 осуществления, так что кодер и декодер могут получать одинаковый результат.According to the example, the lookup table in
В некоторых примерах значение расстояния может представлять расстояние по горизонтали или расстояние по вертикали, или комбинацию расстояния по вертикали и по горизонтали от упомянутой выборки до линии разграничения (линия разграничения используется для деления блока кодирования на два субблока). Упомянутая выборка представлена координатами (x, y) относительно верхней левой выборки блока кодирования. Пример координаты выборки и sample_dist показаны на Фиг. 11 и Фиг. 12.In some examples, the distance value may represent a horizontal distance or a vertical distance, or a combination of a vertical and a horizontal distance, from said sample to a demarcation line (the demarcation line is used to divide a coding block into two sub-blocks). Said sample is represented by coordinates (x, y) relative to the top left sample of the encoding block. An example sample coordinate and sample_dist are shown in FIG. 11 and Fig. 12.
В примере первый параметр представляет квантованное значение угла (angleIdx), а второй параметр представляет квантованное значение расстояния (distanceIdx). Эти два параметра описывают уравнение линии. В примере расстояние 1230 может быть получено согласно distanceIdx (второй параметр), а угол альфа (1210) может быть получен согласно angleIdx (первый параметр). Расстояние 1230 может быть расстоянием до центра блока кодирования, а угол может быть углом между линией разграничения и горизонтальной (или, что эквивалентно, вертикальной) линией, проходящей через центральную точку блока кодирования.In the example, the first parameter represents the quantized angle value (angleIdx) and the second parameter represents the quantized distance value (distanceIdx). These two parameters describe the equation of the line. In the example, distance 1230 can be obtained according to distanceIdx (second parameter), and angle alpha (1210) can be obtained according to angleIdx (first parameter). Distance 1230 may be the distance to the center of the coding block, and the angle may be the angle between the demarcation line and a horizontal (or, equivalently, vertical) line passing through the center point of the coding block.
В одном примере таблица поиска предопределена.In one example, the lookup table is predefined.
В примере может быть более одной предопределенной таблицы поиска. В примере одна таблица поиска используется для блока кодирования, если соотношение сторон (соотношение сторон=W>H ? W/H : H/W) блока равно 1. В другом примере одна или более таблиц поиска (которые не идентичны упомянутой одной таблице поиска) используются, если соотношение сторон не равно 1, где W и H являются шириной и высотой блока кодирования.The example may have more than one predefined lookup table. In an example, one lookup table is used for an encoding block if the aspect ratio (aspect ratio=W>H ? W/H : H/W) of the block is 1. In another example, one or more lookup tables (which are not identical to said one lookup table) are used if the aspect ratio is not 1, where W and H are the width and height of the encoding block.
В другом примере может быть более одной предопределенной таблицы поиска, одна таблица поиска для блоков кодирования, W*H блока превышает порог; и одна или более таблиц поиска (которые не идентичны упомянутой одной таблице поиска) используются для блока, если W*H блока меньше или равно порогу. Например, если размер текущего блока, который должен быть предсказан, меньше или равен 32×32 выборкам яркости, используется первая таблица поиска. Иначе, если размер текущего блока кодирования больше 32×32 выборок яркости, используется вторая таблица поиска. Эти две таблицы поиска могут содержать разные наборы параметров в отношении различных свойств блоков разных размеров. Например, вторая таблица поиска может содержать больше параметров, чем первая таблица поиска, чтобы обеспечить большую гибкость разделения для больших блоков.In another example, there may be more than one predefined lookup table, one lookup table for encoding blocks, the block's W*H exceeds a threshold; and one or more lookup tables (which are not identical to said one lookup table) are used for a block if the block's W*H is less than or equal to a threshold. For example, if the size of the current block to be predicted is less than or equal to 32x32 luminance samples, the first lookup table is used. Otherwise, if the size of the current encoding block is greater than 32x32 luminance samples, the second lookup table is used. These two lookup tables may contain different sets of parameters for different properties of different block sizes. For example, the second lookup table may contain more parameters than the first lookup table to provide greater partitioning flexibility for larger blocks.
В некоторых примерах, если для блока используется более 1 предопределенной таблицы поиска, функция f(W, H) может использоваться для определения одной таблицы поиска для этого блока, где W и H являются шириной и высотой блока кодирования.In some examples, if more than 1 predefined lookup table is used for a block, the function f(W, H) can be used to define one lookup table for that block, where W and H are the width and height of the encoding block.
В другом примере расстояние выборки sample_dist вычисляется по формуле:In another example, the sampling distance sample_dist is calculated using the formula:
sample_dist=((x<<1) + 1)*Dis[angleIdx1] + ((y<<1) + 1))*Dis[angleIdx2] - offset(distanceIdx). Гдеsample_dist=((x<<1) + 1)*Dis[angleIdx1] + ((y<<1) + 1))*Dis[angleIdx2] - offset(distanceIdx). Where
- Значение angleIdx1 и значение angleIdx2 берутся из битового потока или выводятся/вычисляются на основе другой информации, полученной из битового потока, angleIdx1 и angleIdx2 представляют квантованные тригонометрические параметры линии разграничения, первый имеет тип косинуса, а второй имеет тип синуса. В примере x и y являются -x и -y координатами выборки относительно левой верхней выборки блока кодирования.- The value of angleIdx1 and the value of angleIdx2 are taken from the bitstream or output/calculated based on other information obtained from the bitstream, angleIdx1 and angleIdx2 represent the quantized trigonometric parameters of the demarcation line, the first is of cosine type and the second is of sine type. In the example, x and y are the -x and -y sample coordinates relative to the top left sample of the encoding block.
- Dis[] является таблицей поиска. Dis[angleIdx1] описывает изменение расстояния выборки (sample_dist) относительно единичного увеличения (увеличения со значением 1) -x координаты упомянутой выборки. Dis[angleIdx2] описывает изменение расстояния выборки (sample_dist) относительно единичного увеличения (увеличения со значением 1) -y координаты упомянутой выборки. В одном примере angleIdx1 равен angleIdx, а angleIdx2 равен (displacementX+8)%32.- Dis[] is a lookup table. Dis[angleIdx1] describes the change in sample distance (sample_dist) relative to a unit increment (increase with a value of 1) -x coordinate of said sample. Dis[angleIdx2] describes the change in sample distance (sample_dist) relative to a unit increment (increase with a value of 1) -y coordinate of said sample. In one example, angleIdx1 is equal to angleIdx and angleIdx2 is equal to (displacementX+8)%32.
- offset (distanceIdx) является значением смещения, которое является функцией индексного значения (distanceIdx), причем индексное значение получается из битового потока или выводится/вычисляется на основе другой информации, получаемой из битового потока.- offset (distanceIdx) is an offset value that is a function of the index value (distanceIdx), where the index value is obtained from the bitstream or is inferred/computed based on other information obtained from the bitstream.
Построение таблицы поиска:Building a lookup table:
Согласно одному примеру диапазон значений для первого параметра может составлять от 0 до 4K-1, где K является целым числом, которое больше 0; диапазон значений для второго параметра может составлять от 0 до N. В этом случае строки упомянутой таблицы поиска могут включать в себя все комбинации первого параметра и второго параметра, за исключением комбинаций:According to one example, the range of values for the first parameter may be from 0 to 4K-1, where K is an integer that is greater than 0; the range of values for the second parameter may be from 0 to N. In this case, the rows of said lookup table may include all combinations of the first parameter and the second parameter, except for the combinations:
- Первый набор пар: значение второго параметра равно 0, а значение первого параметра равно одному из {0, K, 2K, 3K}.- First set of pairs: the value of the second parameter is 0, and the value of the first parameter is one of {0, K, 2K, 3K}.
- Второй набор пар: значение второго параметра=0, значение первого параметра равно одному из {K/2, 3K/2, 5K/2, 7K/2}.- Second set of pairs: the value of the second parameter=0, the value of the first parameter is one of {K/2, 3K/2, 5K/2, 7K/2}.
- Третий набор параметров: значение второго параметра=0, значение первого параметра больше или равно 2K.- Third set of parameters: second parameter value=0, first parameter value greater than or equal to 2K.
В примере значение K равно 8 или 4. Число K описывает то, сколько дискретных значений угла используются для разделения угла в 90 градусов. В примере, если число K равно 8, линия разграничения может иметь следующие значения углов: 0, 11,25, 22,5, 33,75, 45, … градусов. В другом примере, если значение K равно 4, тогда значениями углов являются: 0, 22,5, 45, 67,5, … градусов.In the example, the value of K is 8 or 4. The number K describes how many discrete angle values are used to subdivide a 90-degree angle. In the example, if the K number is 8, the demarcation line can have the following angle values: 0, 11.25, 22.5, 33.75, 45, ... degrees. In another example, if the value of K is 4, then the angle values are: 0, 22.5, 45, 67.5, ... degrees.
В примере значение N равно 4. В общем случае N может быть целым числом больше 0.In the example, the value of N is 4. In general, N can be an integer greater than 0.
В некоторых вариантах осуществления второй параметр описывает расстояние от линии разграничения до центра блока кодирования. Если значение второго параметра равно нулю, это означает, что линия разграничения проходит через центр блока кодирования. Если значение первого параметра равно K, это означает, что линия разграничения ориентирована либо по горизонтали, либо по вертикали (значение угла равно 0, 90, 270 или 360 градусов). Первый набор пар исключается из таблицы поиска, поскольку он создавал бы избыточный раздел, который также может быть достигнут путем двоичного разделения (то есть на два) блока кодирования с помощью двоичного дерева. Двоичное разбиение является механизмом, который разделяет блок кодирования на 2 блока кодирования равного размера по вертикальной или горизонтальной оси (а не на субблоки). Следовательно, согласно вариантам осуществления настоящего изобретения, Первый набор пар исключается из таблицы поиска.In some embodiments, the second parameter describes the distance from the demarcation line to the center of the coding block. If the value of the second parameter is zero, this means that the demarcation line passes through the center of the coding block. If the value of the first parameter is K, this means that the demarcation line is oriented either horizontally or vertically (the angle value is 0, 90, 270, or 360 degrees). The first set of pairs is excluded from the lookup table because it would create a redundant partition, which can also be achieved by binary splitting (i.e. into two) the encoding block using a binary tree. Binary partitioning is a mechanism that divides a coding block into 2 coding blocks of equal size along a vertical or horizontal axis (rather than into sub-blocks). Therefore, according to embodiments of the present invention, the First set of pairs is excluded from the lookup table.
Второй набор пар исключается из таблицы поиска, поскольку второй набор пар создавал бы получаемые делением области, которые могут быть достигнуты режимом треугольного предсказания. Поэтому исключение второго набора пар предотвратит избыточные субблочные разделы.The second set of pairs is excluded from the lookup table because the second set of pairs would create division regions that can be achieved by the triangular prediction mode. Therefore, excluding the second set of pairs will prevent redundant subblock partitions.
Третий набор пар исключается из таблицы, так как при угле, равном X или X+180, создавались бы одинаковые разделы, если второй параметр равняется нулю.The third set of pairs is excluded from the table because an angle equal to X or X+180 would create identical partitions if the second parameter were zero.
Согласно другому примеру, из таблицы поиска могут быть исключены следующие пары:According to another example, the following pairs could be excluded from the lookup table:
- Значение Второго параметра, равное N, и значение Первого параметра, равное одному из {K/2, 3K/2, 5K/2, 7K/2}.- The value of the Second parameter is equal to N, and the value of the First parameter is equal to one of {K/2, 3K/2, 5K/2, 7K/2}.
- Значение Второго параметра, равное N, и значение Первого параметра, равное одному из {K/2-1, 3K/2-1, 5K/2-1, 7K/2-1, K/2+1, 3K/2+1, 5K/2+1, 7K/2+1}.- The value of the Second parameter is equal to N, and the value of the First parameter is equal to one of {K/2-1, 3K/2-1, 5K/2-1, 7K/2-1, K/2+1, 3K/2 +1, 5K/2+1, 7K/2+1}.
В некоторых вариантах осуществления указанные выше пары могут быть исключены из таблицы поиска, поскольку они создают 2 субблока, один из которых может быть слишком маленьким. Если значение первого параметра равно K/2, 3k/2, …,, это означает, что угол линии разграничения составляет 45 градусов, 135 градусов, 225 градусов или 315 градусов. Если значение второго параметра равно N (которое имеет наивысшее значение), то один из субблоков будет содержать небольшую часть одного угла блока кодирования, которая будет слишком мала для операции деления.In some embodiments, the above pairs may be excluded from the lookup table because they create 2 sub-blocks, one of which may be too small. If the value of the first parameter is K/2, 3k/2, ...,, this means that the angle of the demarcation line is 45 degrees, 135 degrees, 225 degrees or 315 degrees. If the value of the second parameter is N (which has the highest value), then one of the subblocks will contain a small portion of one corner of the encoding block, which will be too small for the division operation.
Очередность пар в таблице поиска:The order of pairs in the lookup table is:
Согласно одному примеру пары (первый параметр, второй параметр) могут быть добавлены в конец таблицы поиска, если второй параметр равен N (где N имеет наивысшее возможное значение второго параметра). Другими словами, если есть P пар, в которых значение второго параметра равно N, то последние P записей в таблице поиска могут содержать упомянутую P-пару. Например, если N равно 4, а K равно 8, то существует P=4K*1=32 пары параметров, для которых второй параметр равен 4.According to one example, pairs (first parameter, second parameter) may be added to the end of the lookup table if the second parameter is equal to N (where N is the highest possible value of the second parameter). In other words, if there are P pairs in which the value of the second parameter is N, then the last P entries in the lookup table may contain said P-pair. For example, if N is 4 and K is 8, then there are P=4K*1=32 parameter pairs for which the second parameter is 4.
Согласно другому примеру пары параметров упорядочиваются в соответствии с эвристическим процессом. Этот эвристический процесс может быть определен из обучающих данных, которые, например, отражают появление или использование пар параметров в наборе обучающих данных. Таким образом, наиболее часто встречающиеся пары параметров помещаются в начало списка, а менее часто встречающиеся пары параметров помещаются в конец списка.In another example, parameter pairs are ordered according to a heuristic process. This heuristic process can be determined from training data that, for example, reflects the occurrence or use of parameter pairs in the training data set. Thus, the most frequently occurring parameter pairs are placed at the beginning of the list, and the less frequently occurring parameter pairs are placed at the end of the list.
Когда второй параметр равен N, один субблок меньше другого субблока. Выбор такого разделения менее вероятен (по сравнению со случаями, когда число выборок в каждом субблоке является более близким). Более того, индексное значение (таблицы поиска), которое имеет более высокое значение, обычно требует большего числа битов для того, чтобы кодироваться в битовый поток. Следовательно, это увеличивает эффективность сжатия за счет включения менее вероятных пар в конец таблицы, следовательно, начало таблицы может быть выделено более вероятным парам (например, парам, которые приводят в результате к более благоприятным разделениям на субблоки).When the second parameter is N, one subblock is smaller than the other subblock. The choice of such a split is less likely (compared to cases where the number of samples in each sub-block is closer). Moreover, an index value (lookup table) that has a higher value usually requires more bits in order to be encoded into the bitstream. Consequently, this increases compression efficiency by including less likely pairs at the end of the table, hence the beginning of the table can be allocated to more likely pairs (eg, pairs that result in more favorable subblock divisions).
Ниже приведены один пример указателя (geo_partition_idx) и таблица поиска. Индикатор имеет значение от 0 до 139, которое используется для выбора первого параметра и второго параметра с использованием таблицы поиска. Примером таблицы поиска является Таблица 4.Below is one example index (geo_partition_idx) and lookup table. The indicator has a value from 0 to 139, which is used to select the first parameter and the second parameter using a lookup table. An example of a lookup table is Table 4.
Таблица 4: таблица поиска, где geo_partition_idx является индексом в таблицу, а angleIdx является первым параметром, а distanceIdx является вторым параметром.Table 4: Lookup table, where geo_partition_idx is the index into the table and angleIdx is the first parameter and distanceIdx is the second parameter.
Должно быть понятно, что таблица 4 является лишь примером, чтобы показать возможные комбинации значений для первого параметра и второго параметра, в других реализациях для получения первого параметра и второго параметра в качестве таблицы поиска может использоваться часть таблицы 4.It should be understood that Table 4 is just an example to show possible combinations of values for the first parameter and the second parameter; other implementations may use a portion of Table 4 as a lookup table to obtain the first parameter and the second parameter.
Пример 1. Способ осуществления кодирования, реализуемый устройством декодирования, содержащий:Example 1. Encoding method implemented by a decoding device, containing:
получение битового потока;receiving bit stream;
получение значения указателя для текущего блока согласно битовому потоку;obtaining a pointer value for the current block according to the bit stream;
получение значения первого параметра для текущего блока и значения второго параметра для текущего блока согласно значению указателя и предопределенной таблице поиска;obtaining the value of the first parameter for the current block and the value of the second parameter for the current block according to the pointer value and the predefined lookup table;
получение значения расстояния выборки для выборки, которая находится в текущем блоке, согласно значению первого параметра и значению второго параметра;obtaining a sample distance value for a sample that is in the current block according to the value of the first parameter and the value of the second parameter;
получение значения предсказания для выборки согласно значению расстояния выборки для выборки.obtaining a prediction value for the sample according to the sampling distance value for the sample.
Пример 2. Способ по примеру 1, в котором первый параметр представляет угол для разделения текущего блока.Example 2: Method as in Example 1, where the first parameter represents the angle to split the current block.
Пример 3. Способ по примеру 1 или 2, в котором второй параметр представляет расстояние для разделения текущего блока.Example 3: Method as in Example 1 or 2, in which the second parameter represents the distance to split the current block.
Пример 4. Способ по любому из примеров с 1 по 3, в котором предопределенная таблица поиска состоит из пар первого и второго параметров (в примере каждая запись в таблице представляет собой уникальную пару первого параметра и второго параметра),Example 4. The method as in any one of Examples 1 to 3, wherein the predefined lookup table consists of pairs of first and second parameters (in the example, each entry in the table is a unique pair of the first parameter and the second parameter),
следующая пара находится в предопределенной таблице поиска:the following pair is in the predefined lookup table:
первый параметр представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре не представляет расстояние в ноль выборок от центра текущего блока.the first parameter represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in that pair does not represent a distance of zero samples from the center of the current block.
Пример 5. Способ по любому из примеров с 1 по 4, в котором предопределенная таблица поиска состоит из пар первого и второго параметров (в примере каждая запись в таблице представляет собой уникальную пару первого параметра и второго параметра),Example 5. The method as in any one of Examples 1 to 4, wherein the predefined lookup table consists of pairs of first and second parameters (in the example, each entry in the table is a unique pair of the first parameter and the second parameter),
следующая пара находится в предопределенной таблице поиска;the next pair is in a predefined lookup table;
первый параметр представляет угол, не соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.the first parameter represents an angle other than one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in the pair represents a distance of zero samples from the center of the current block.
Пример 6. Способ по любому из примеров с 1 по 5, в котором предопределенная таблица поиска состоит из пар первого и второго параметров (в примере каждая запись в таблице представляет собой уникальную пару первого параметра и второго параметра),Example 6. The method as in any one of Examples 1 to 5, wherein the predefined lookup table consists of pairs of first and second parameters (in the example, each entry in the table is a unique pair of the first parameter and the second parameter),
следующая пара не содержится в предопределенной таблице поиска;the next pair is not contained in the predefined lookup table;
первый параметр представляет угол, соответствующий одному из углов 0, 45, 90, 135, 180, 225, 270 или 315 градусов, а соответствующий второй параметр в этой паре представляет расстояние в ноль выборок от центра текущего блока.the first parameter represents an angle corresponding to one of 0, 45, 90, 135, 180, 225, 270, or 315 degrees, and the corresponding second parameter in this pair represents the distance of zero samples from the center of the current block.
Пример 7. Декодер (30), содержащий схему обработки для выполнения способа по любому из примеров с 1 по 6.Example 7 A decoder (30) containing processing circuitry for performing the method of any one of Examples 1 to 6.
Пример 8. Компьютерный программный продукт, содержащий программный код для выполнения способа по любому из примеров с 1 по 6.Example 8. A computer program product containing program code for executing the method of any of Examples 1 to 6.
Пример 9. Декодер, содержащий:Example 9. Decoder containing:
один или более процессоров; иone or more processors; And
долговременный считываемый компьютером носитель, связанный с процессорами и хранящий программную часть для исполнения процессорами, причем программная часть, когда исполняется процессорами, конфигурирует декодер для выполнения способа согласно любому из примеров с 1 по 6. a non-transitory computer-readable medium coupled to the processors and storing a program portion for execution by the processors, wherein the program portion, when executed by the processors, configures a decoder to perform the method according to any of Examples 1 to 6.
Ниже приводится пояснение по применениям способа кодирования, а также способа декодирования, показанных в вышеописанных вариантах осуществления, а также использующей их системы.Below is an explanation of the applications of the encoding method as well as the decoding method shown in the above-described embodiments, as well as the system using them.
ФИГ. 13 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Данная система 3100 поставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и опционально включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.FIG. 13 is a block diagram showing a content delivery system 3100 for implementing a content distribution service. This content delivery system 3100 includes a
Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по отдельности.The
В системе 3100 поставки контента терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR) / цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.In the content delivery system 3100, the
Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR) / цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.For a terminal device with its own display, such as a 3108 smartphone or tablet, 3110 computer or laptop, 3112 Network Video Recorder (NVR)/Digital Video Recorder (DVR), 3114 TV, 3122 Personal Digital Assistant (PDA), or 3124 vehicle-mounted device, terminal the device can transmit decoded data to its display. For a non-display terminal device, such as the STB 3116, video conferencing system 3118, or
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображений или устройство декодирования изображений, как показано в вышеупомянутых вариантах осуществления.When each device in this system performs encoding or decoding, an image encoding device or an image decoding device may be used as shown in the above embodiments.
ФИГ. 14 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.FIG. 14 is a diagram showing the structure of an
После того, как блок 3202 обработки протокола обработает поток, генерируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования.After the
Посредством обработки демультиплексирования генерируются элементарный видеопоток (ES), аудио ES и, опционально, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерирования видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для генерирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на ФИГ. 14) перед его подачей в блок 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на ФИГ. 14) перед его подачей в блок 3212 синхронизации.Through demultiplexing processing, an elementary video stream (ES), audio ES, and optionally subtitles are generated. The
Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио в видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.The
Если субтитр включен в поток, декодер 3210 субтитров декодирует субтитр и синхронизирует его с видеокадром и аудиокадром и передает видео/аудио/субтитр на дисплей 3216 видео/аудио/субтитров.If a subtitle is included in the stream, the
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования изображений, либо устройство декодирования изображений из вышеупомянутых вариантов осуществления может быть включено в другую систему, например, автомобильную систему.The present invention is not limited to the above system, and either the image encoding device or the image decoding device from the above embodiments can be included in another system, such as an automobile system.
Математические операторыMathematical operators
Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т. д.The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are defined more precisely, and additional operations such as exponentiation and real-valued division are also defined. Numbering and counting conventions specify starting at 0, for example, "first" is equivalent to 0, "second" is equivalent to 1, etc.
Арифметические операторыArithmetic operators
Следующие арифметические операторы определены следующим образом:The following arithmetic operators are defined as follows:
Логические операторыLogical operators
Следующие логические операторы определены следующим образом:The following logical operators are defined as follows:
x && y - Булево логическое «и» между x и yx && y - Boolean logical "and" between x and y
x | | y - Булево логическое «или» между x и yx | | y - Boolean logical "or" between x and y
! - Булево логическое «не»! - Boolean logical "not"
x ? y : z - Если значением x является ИСТИНА или оно не равно 0, принимается значение y; иначе, принимается значение z.x? y : z - If the value of x is TRUE or is not 0, the value of y is accepted; otherwise, the z value is assumed.
Реляционные операторыRelational Operators
Следующие реляционные операторы определены следующим образом:The following relational operators are defined as follows:
> - Больше> - More
>= - Больше или равно>= - Greater than or equal to
< - Меньше< - Less
<= - Меньше или равно<= - Less than or equal to
= = - Равно= = - Equal
!= - Не равно!= - Not equal
Когда реляционный оператор применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение «na» не считается равным любому другому значению.When a relational operator is applied to a syntactic element or variable that is assigned the value "na" (not applicable), the value "na" is treated as a separate value for the syntactic element or variable. The value "na" is not considered equal to any other value.
Побитовые операторыBitwise operators
Следующие побитовые операторы определены следующим образом:The following bitwise operators are defined as follows:
& Побитовое «и». При работе с целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.& Bitwise "and". When working with integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits equal to 0.
| Побитовое «или». При работе с целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.| Bitwise "or". When working with integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits equal to 0.
^ Побитовое «исключающее ИЛИ». При работе с целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.^ Bitwise exclusive OR. When working with integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits equal to 0.
x>>y Арифметический сдвиг вправо целочисленного представления дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB x до операции сдвига.x>>y Arithmetic right shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the most significant bits (MSB) by a right shift have a value equal to MSB x before the shift operation.
x<<y Арифметический сдвиг влево целочисленного представления дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0.x<<y Arithmetic left shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the least significant bits (LSB) by left shifting have a value of 0.
Операторы присваиванияAssignment Operators
Следующие арифметические операторы определены следующим образом:The following arithmetic operators are defined as follows:
= Оператор присваивания= Assignment operator
++ Приращение, т.е. x++ эквивалентно x=x+1; при использовании в индексе массива принимает значение переменной до операции приращения.++ Increment, i.e. x++ is equivalent to x =
−− Уменьшение, т.е. x−− эквивалентно x=x-1; при использовании в индексе массива принимает значение переменной до операции уменьшения.−− Decrease, i.e. x−− is equivalent to x = x- 1; when used in an array index, takes the value of the variable before the decrement operation.
+= Приращение на указанную величину, т.е. x += 3 эквивалентно x=x+3, а x+=(−3) эквивалентно x=x+(−3).+= Increment by the specified amount, i.e. x += 3 is equivalent to x=x+3, and x+=(−3) is equivalent to x=x+(−3).
−= Уменьшение на указанную величину, т.е. x −= 3 эквивалентно x=x−3, а x−=(−3) эквивалентно x=x−(−3).−= Decrease by the specified amount, i.e. x −= 3 is equivalent to x=x−3, and x−=(−3) is equivalent to x=x−(−3).
Обозначение диапазонаRange designation
Следующее обозначение используется для указания диапазона значений:The following notation is used to indicate a range of values:
x=y..z x принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, а z больше y.x=y..z x takes integer values from y to z, inclusive, where x, y and z are integers and z is greater than y.
Математические функцииMathematical functions
Определены следующие математические функции:The following mathematical functions are defined:
Abs( x ) = Abs( x ) =
Asin( x ) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан.Asin( x ) is a trigonometric arcsine function operating on an argument x that ranges from -1.0 to 1.0 inclusive, with an output value ranging from -π÷2 to π÷2 inclusive, in units of radians.
Atan( x ) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от −π÷2 до π÷2 включительно в единицах радиан.Atan( x ) is a trigonometric arctangent function operating on an argument x, with an output value ranging from −π÷2 to π÷2 inclusive, in units of radians.
Atan2( y, x ) = Atan2( y, x ) =
Ceil( x ) наименьшее целое число, большее или равное x.Ceil( x ) is the smallest integer greater than or equal to x.
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x )Clip1 Y ( x ) = Clip3( 0, ( 1 << BitDepth Y ) − 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x )Clip1 C ( x ) = Clip3( 0, ( 1 << BitDepth C ) − 1, x )
Clip3( x, y, z ) = Clip3( x, y, z ) =
Cos( x ) тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.Cos( x ) is a trigonometric cosine function that operates on x in units of radians.
Floor( x ) наибольшее целое число, меньшее или равное x.Floor( x ) is the largest integer less than or equal to x.
GetCurrMsb( a, b, c, d ) = GetCurrMsb( a, b, c, d ) =
Ln( x ) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2,718 281 828 ...).Ln( x ) natural logarithm of x (logarithm to base e, where e is the base constant of the natural logarithm 2.718 281 828 ...).
Log2( x ) логарифм x по основанию 2.Log2( x ) logarithm of x to base 2.
Log10( x ) логарифм x по основанию 10. Log10( x ) is the logarithm of x to
Min( x, y ) = Min( x, y ) =
Max( x, y ) = Max( x, y ) =
Round( x ) = Sign( x ) * Floor( Abs( x ) + 0,5 ) Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )
Sign( x ) = Sign( x ) =
Sin( x ) тригонометрическая функция синуса, работающая с аргументом x в единицах радиан. Sin( x ) is a trigonometric sine function that operates on x in units of radians.
Sqrt( x ) = Sqrt( x ) =
Swap( x, y ) = ( y, x ) Swap( x, y ) = ( y, x )
Tan( x ) тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан.Tan( x ) is a trigonometric tangent function that operates on x in units of radians.
Порядок приоритетности операцийOrder of priority of operations
Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:When the order of precedence in an expression is not explicitly specified using parentheses, the following rules apply:
- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.- Higher priority operations are evaluated before any lower priority operation.
- Операции с одинаковым приоритетом оцениваются последовательно слева направо.- Operations with the same priority are evaluated sequentially from left to right.
В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.The table below lists the priority of operations from highest to lowest; a higher position in the table indicates higher priority.
Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.For those operators that are also used in the C programming language, the order of precedence used in this description is the same as in the C programming language.
Таблица: Приоритетность операций от наивысшего (в верхней части таблицы) до низшего (в нижней части таблицы)Table: Operation priority from highest (at the top of the table) to lowest (at the bottom of the table)
Текстовое описание логических операцийText description of logical operations
В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:
if( условие 0 )if( condition 0 )
определение 0 definition 0
else if( условие 1 )else if( condition 1 )
определение 1
......
else /* информативный комментарий по оставшемуся условию */else /* informative comment on the remaining condition */
определение ndefinition of n
может быть описано следующим образом:can be described as follows:
... как указано ниже / ... применяется следующее:... as below / ... the following applies:
- If условие 0, определение 0- If condition 0, definition 0
- Иначе, If условие 1, определение 1- Otherwise, If
- ...- ...
- Иначе (информативный комментарий по оставшемуся условию), определение n- Otherwise (informative comment on the remaining condition), definition n
Каждое определение «If ... Иначе, If ... Иначе, ...» в тексте вводится словами «... как указано ниже» или «...применяется следующее», за которым сразу следует «If ...». Последним условием «If ... Иначе, If ... Иначе, ...» всегда является «Иначе, ...». Чередование определений «If ... Иначе, If ... Иначе, ...» могут быть идентифицированы путем сопоставления «... как указано ниже» или «... применяется следующее» с завершающим «Иначе, ...».Each definition of "If...Else, If...Else,..." in the text is introduced by the words "...as below" or "...the following applies" followed immediately by "If..." . The last condition of "If... Else, If... Else, ..." is always "Else, ...". Alternating definitions "If...Else, If...Else,..." can be identified by matching "...as below" or "...the following applies" with the final "Else,...".
В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:
if( условие 0a && условие 0b )if( condition 0a && condition 0b )
определение 0 definition 0
else if( условие 1a | | условие 1b )else if( condition 1a | | condition 1b )
определение 1
...
else
определение n...
else
definition of n
может быть описано следующим образом:can be described as follows:
... как указано ниже / ... применяется следующее:... as below / ... the following applies:
- Если все из следующих условий истинны, определение 0:- If all of the following conditions are true, definition 0:
-- условие 0a-- condition 0a
-- условие 0b-- condition 0b
- Иначе, если истинными являются одно или более из следующих условий, определение 1:- Else, if one or more of the following conditions are true, Definition 1:
-- условие 1a-- condition 1a
-- условие 1b-- condition 1b
- ...- ...
- Иначе, определение n- Otherwise, the definition of n
В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:
if( условие 0 )if( condition 0 )
определение 0 definition 0
if( условие 1 )if( condition 1 )
определение 1
может быть описано следующим образом:can be described as follows:
Когда условие 0, определение 0When condition is 0, definition is 0
Когда условие 1, определение 1.When condition is 1, definition is 1.
Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного изображения, т.е. обработки или кодирования отдельного изображения независимо от любого предшествующего или последующего изображения, как при видеокодировании. В общем, только блоки 244 интер-предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодирование для обработки изображения ограничено одним изображением 17. Все другие функциональные возможности (также именуемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных изображений, например вычисления 204/304 остатка, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, интра-предсказания 254/354 и/или контурной фильтрации 220, 320 и энтропийного кодирования 270 и энтропийного декодирования 304.Although embodiments of the present invention have been primarily described in terms of video encoding, it should be noted that embodiments of
Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций, или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям, которые являются долговременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами, или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.Embodiments of, for example,
В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.By way of example, and not limitation, such computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other media that can used to store desired program code in the form of instructions or data structures and can be accessed by a computer. Additionally, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave communications, then coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave communications are included in the definition of media. However, it should be understood that computer readable and storage media do not include connections, carrier waves, signals, or other short-lived media, but are instead directed to long-term, tangible storage media. The disc and disc used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where discs are typically reproduce data magnetically, while discs (discs) reproduce data optically using lasers. Combinations of the above should also be included in the scope of computer readable media.
Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах, или логических элементах.The instructions 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), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term “processor” as used herein can refer to any of the above structure or any other structure suitable for implementing the techniques described herein. Additionally, 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 bundled codec. In addition, the techniques may be fully implemented in one or more circuits, or logic elements.
Методики этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных компонентов, в том числе беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.The techniques of this disclosure may be implemented in a wide variety of devices or hardware components, including a wireless telephone, an integrated circuit (IC), or a set of ICs (eg, a chipset). This disclosure describes various components, modules, or blocks to highlight functional aspects of devices configured to implement the disclosed technologies, but not necessarily required to be implemented by different hardware units. Rather, as described above, the various blocks may be combined into a codec hardware block or provided by a collection of interacting hardware blocks, including one or more processors as described above, together with suitable software and/or firmware.
Claims (41)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EPPCT/EP2019/066432 | 2019-06-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2022101005A RU2022101005A (en) | 2023-07-21 |
RU2811983C2 true RU2811983C2 (en) | 2024-01-22 |
Family
ID=
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110200111A1 (en) * | 2010-02-18 | 2011-08-18 | Qualcomm Incorporated | Encoding motion vectors for geometric motion partitioning |
US20120147961A1 (en) * | 2010-12-09 | 2012-06-14 | Qualcomm Incorporated | Use of motion vectors in evaluating geometric partitioning modes |
RU2571509C2 (en) * | 2011-03-08 | 2015-12-20 | Квэлкомм Инкорпорейтед | Encoding transform coefficients for video coding |
WO2018149995A1 (en) * | 2017-02-16 | 2018-08-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Filter apparatus and methods |
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110200111A1 (en) * | 2010-02-18 | 2011-08-18 | Qualcomm Incorporated | Encoding motion vectors for geometric motion partitioning |
US20120147961A1 (en) * | 2010-12-09 | 2012-06-14 | Qualcomm Incorporated | Use of motion vectors in evaluating geometric partitioning modes |
RU2571509C2 (en) * | 2011-03-08 | 2015-12-20 | Квэлкомм Инкорпорейтед | Encoding transform coefficients for video coding |
WO2018149995A1 (en) * | 2017-02-16 | 2018-08-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Filter apparatus and methods |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113613013B (en) | Video decoding device, decoding method implemented by decoding device and decoder | |
US11909959B2 (en) | Encoder, a decoder and corresponding methods for merge mode | |
KR20210141712A (en) | Encoder, Decoder and Corresponding Methods Using IBC Merge List | |
US11876997B2 (en) | Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction | |
US20220021883A1 (en) | Chroma sample weight derivation for geometric partition mode | |
JP2022547293A (en) | High-level signaling method and apparatus for weighted prediction | |
JP7384998B2 (en) | Encoders, decoders, and corresponding methods for chroma intramode derivation | |
JP7532597B2 (en) | Calculating sample distances for geometric partitioning modes | |
RU2811983C2 (en) | Encoder, decoder and related methods for sub-block partition mode | |
RU2814812C2 (en) | Deriving chroma sample weight for geometric separation mode | |
RU2822450C1 (en) | Encoding process for geometric separation mode |