RU2772897C2 - Encoding method and decoding method lut and corresponding devices - Google Patents

Encoding method and decoding method lut and corresponding devices Download PDF

Info

Publication number
RU2772897C2
RU2772897C2 RU2018131947A RU2018131947A RU2772897C2 RU 2772897 C2 RU2772897 C2 RU 2772897C2 RU 2018131947 A RU2018131947 A RU 2018131947A RU 2018131947 A RU2018131947 A RU 2018131947A RU 2772897 C2 RU2772897 C2 RU 2772897C2
Authority
RU
Russia
Prior art keywords
color
value
vertex
octant
lut
Prior art date
Application number
RU2018131947A
Other languages
Russian (ru)
Other versions
RU2018131947A (en
RU2018131947A3 (en
Inventor
Филипп БОРД
Пьер АНДРИВОН
Эммануэль ЖОЛИ
Original Assignee
Долби Интернэшнл Аб
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Долби Интернэшнл Аб filed Critical Долби Интернэшнл Аб
Publication of RU2018131947A publication Critical patent/RU2018131947A/en
Publication of RU2018131947A3 publication Critical patent/RU2018131947A3/ru
Application granted granted Critical
Publication of RU2772897C2 publication Critical patent/RU2772897C2/en

Links

Images

Abstract

FIELD: data processing.
SUBSTANCE: group of inventions relates to video processing technologies. Disclosed is a method of encoding a color three-dimensional look-up table. Table is given in the form of a grid of vertices using an octree, and stores at least one value for each vertex, which is a set of input color values. Method comprises a step of encoding a split flag for the current octant of said octree, indicating whether at least one of its immediate child octants is recursively encoded. Further, according to the method, at least one value for the vertex in the current octant is predicted from the restoration of the value(s) of at least one neighboring vertex, to obtain prediction.
EFFECT: high efficiency of encoding/decoding video data by reducing the amount of encoded/decoded data.
10 cl, 18 dwg, 9 tbl

Description

1. ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ1. FIELD OF TECHNOLOGY TO WHICH THE INVENTION RELATES

Раскрывается способ кодирования Справочной таблицы, заданной в виде сетки вершин, где по меньшей мере одно значение ассоциируется с каждой вершиной сетки. Для примера, значение является значением цвета. Раскрываются соответствующий способ декодирования, устройство кодирования и устройство декодирования.Disclosed is a method for encoding a Lookup Table defined as a grid of vertices, where at least one value is associated with each vertex of the grid. For example, the value is a color value. A corresponding decoding method, an encoding device, and a decoding device are disclosed.

2. УРОВЕНЬ ТЕХНИКИ ИЗОБРЕТЕНИЯ2. BACKGROUND OF THE INVENTION

Как изображено на фиг.1, масштабируемое декодирование видео заключается в декодировании (соответственно кодированию) потока битов базового слоя (BL) и по меньшей мере одного потока битов улучшающего слоя (EL). Как правило, изображения EL предсказываются из декодированных изображений BL (по возможности, подвергнутых повышающей дискретизации). Однако, когда изображения EL и изображения BL представляются с помощью разных цветовых пространств и/или по-разному откорректированы по цвету, предсказание менее эффективно. Чтобы улучшить предсказание, известно применение преобразования цветов к декодированным изображениям BL. Точнее говоря, преобразование цветов отображает цвета в цветовом пространстве BL (первом цветовом пространстве) в цвета в цветовом пространстве EL (втором цветовом пространстве), используя информацию о цвете.As shown in FIG. 1, scalable video decoding consists of decoding (respectively encoding) a base layer (BL) bitstream and at least one enhancement layer (EL) bitstream. Typically, EL pictures are predicted from decoded BL pictures (upsampled if possible). However, when EL images and BL images are represented with different color spaces and/or are color-corrected differently, the prediction is less efficient. In order to improve the prediction, it is known to apply a color transform to decoded BL images. More specifically, color conversion maps colors in the BL color space (first color space) to colors in the EL color space (second color space) using color information.

Как изображено на фиг.2, при распространении видеоконтента преобразование цветов обычно применяется к декодированным изображениям, чтобы преобразованные декодированные изображения были приспособлены к возможности визуализации у конечного устройства.As shown in FIG. 2, when distributing video content, color transformation is typically applied to decoded images so that the transformed decoded images are adapted to the rendering capability of the end device.

Это преобразование цветов также известно как Функция отображения цветов (CMF). CMF приближенно выражается, например, матрицей 3x3 коэффициентов усиления плюс смещение (Модель усиления-смещения). В этом случае CMF задается 12 параметрами. Однако такое приближение CMF не очень точное, потому что оно предполагает модель линейного преобразования. Следовательно, для описания такой CMF используется Справочная таблица 3D (также известная как 3D LUT), без какой-либо заранее заданной модели CMF. 3D LUT гораздо более точная, потому что ее размер можно увеличивать в зависимости от необходимой точности. Однако 3D LUT может, таким образом, представлять огромный набор данных. Передача 3D LUT в приемник потребует, соответственно, кодирования LUT.This color conversion is also known as Color Mapping Function (CMF). The CMF is approximated by, for example, a 3x3 matrix of gains plus offset (Gain-Bias Model). In this case, the CMF is given by 12 parameters. However, this CMF approximation is not very accurate because it assumes a linear transformation model. Therefore, a 3D Lookup Table (also known as a 3D LUT) is used to describe such a CMF, without any predefined CMF model. The 3D LUT is much more accurate because its size can be increased depending on the required accuracy. However, a 3D LUT can thus represent a huge data set. Transferring the 3D LUT to the receiver will require the LUT to be encoded accordingly.

LUT, приближенно выражающая CMF, ассоциирует по меньшей мере одно значение цвета в первом цветовом пространстве с другим значением цвета во втором цветовом пространстве. LUT допускает разбиение первого цветового пространства на набор областей, разделенных вершинами LUT. Для примера 3D LUT ассоциирует тройку значений цвета в первом цветовом пространстве с набором значений цвета. Набор значений цвета может быть тройкой значений цвета во втором цветовом пространстве или набором значений цвета, характеризующим преобразование цветов (например, локально заданные параметры CMF), используемое для преобразования значений цвета в первом цветовом пространстве в значения цвета во втором цветовом пространстве. На фиг.3 квадратная 3D LUT представляется в виде сетки с NxNxN вершинами. Для каждой вершины V(c1,c2,c3) в 3D LUT нужно хранить соответствующую тройку значений цвета (Vc1, Vc2, Vc3). Объем данных, ассоциированный с 3D LUT, составляет NxNxNxK, где K – количество битов, используемых для хранения одного значения тройки LUT. Значением тройки является, например, тройка (R, G, B), тройка (Y, U, V) или тройка (Y, Cb, Cr), и т. п. Кодирование всех значений вершин не эффективно, поскольку представляет огромный объем данных.A LUT that approximates a CMF associates at least one color value in a first color space with another color value in a second color space. The LUT allows the first color space to be partitioned into a set of regions separated by LUT vertices. For example, a 3D LUT associates a triplet of color values in a first color space with a set of color values. The set of color values may be a triple of color values in the second color space, or a set of color values characterizing the color transformation (eg, locally defined CMF parameters) used to convert color values in the first color space to color values in the second color space. 3, a square 3D LUT is represented as a grid with NxNxN vertices. For each vertex V(c1,c2,c3) in the 3D LUT, you need to store the corresponding triplet of color values (V c1 , V c2 , V c3 ). The amount of data associated with a 3D LUT is NxNxNxK, where K is the number of bits used to store one LUT triple value. The value of a triple is, for example, a triple (R, G, B), a triple (Y, U, V), or a triple (Y, Cb, Cr), etc. Encoding all vertex values is inefficient because it represents a huge amount of data .

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

Цель изобретения – устранить по меньшей мере один из недостатков известного уровня техники. Раскрывается способ кодирования LUT, заданной в виде сетки вершин. По меньшей мере одно значение ассоциируется с каждой вершиной сетки. Способ кодирования для текущей вершины содержит:The purpose of the invention is to eliminate at least one of the disadvantages of the prior art. A method for encoding a LUT defined as a grid of vertices is disclosed. At least one value is associated with each mesh vertex. The encoding method for the current vertex contains:

- предсказание по меньшей мере одного значения, ассоциированного с текущей вершиной, из другого значения; и- predicting at least one value associated with the current vertex from another value; and

- кодирование в поток битов по меньшей мере одного остатка, вычисленного между упомянутым по меньшей мере одним значением текущей вершины и его предсказанием в потоке битов.encoding into the bitstream at least one remainder calculated between said at least one current node value and its prediction in the bitstream.

Преимущественно, что другое значение получается из восстановленных значений, ассоциированных с соседними вершинами.Preferably, another value is obtained from the recovered values associated with neighboring vertices.

В соответствии с характерной особенностью изобретения значение является значением цвета. В соответствии с конкретным вариантом осуществления значение цвета соответствует преобразованию цветов. В соответствии с характерной особенностью изобретения значение цвета является параметром усиления или смещением.In accordance with a feature of the invention, the value is a color value. In accordance with a particular embodiment, the color value corresponds to a color conversion. In accordance with a characteristic feature of the invention, the color value is a gain parameter or offset.

В соответствии с конкретным вариантом осуществления LUT является 3D LUT, кодированной с использованием октодерева, и с каждой вершиной сетки ассоциируются три значения. В этом случае соседние вершины, используемые для предсказания, принадлежат родительскому октанту текущего октанта, которому принадлежит текущая вершина.According to a particular embodiment, the LUT is an octree encoded 3D LUT and three values are associated with each mesh vertex. In this case, the neighboring vertices used for prediction belong to the parent octant of the current octant to which the current vertex belongs.

В соответствии с характерной особенностью изобретения предсказание по меньшей мере одного значения, ассоциированного с текущей вершиной, из восстановленных значений, ассоциированных с соседними вершинами, содержит интерполяцию по меньшей мере одного значения из соответствующих восстановленных значений соседних вершин.In accordance with an aspect of the invention, predicting at least one value associated with the current vertex from the recovered values associated with neighboring vertices comprises interpolating at least one value from the corresponding recovered values of neighboring vertices.

В соответствии с характерной особенностью способ дополнительно содержит кодирование индекса в поток битов, указывающего тип интерполяции.According to a characteristic feature, the method further comprises encoding an index into the bit stream indicating the type of interpolation.

В соответствии с конкретным вариантом осуществления кодирование по меньшей мере одного остатка содержит квантование по меньшей мере одного остатка с помощью квантователя в квантованный остаток и энтропийное кодирование квантованного остатка в поток битов, и где способ дополнительно содержит кодирование квантователя в поток битов.In accordance with a specific embodiment, encoding at least one residue comprises quantizing at least one residue with a quantizer into a quantized residue and entropy encoding the quantized residue into a bit stream, and where the method further comprises encoding the quantizer into a bit stream.

В соответствии с характерной особенностью изобретения для текущей вершины кодируется флаг, указывающий, кодируется ли по меньшей мере один остаток для вершины.In accordance with an aspect of the invention, a flag is encoded for the current vertex indicating whether at least one remainder for the vertex is encoded.

В соответствии с разновидностью для каждого значения текущей вершины кодируется флаг, указывающий, кодируется ли остаток для того значения, или является ли остаток не кодируемым и подразумеваемым равным нулю.According to the flavor, for each value of the current vertex, a flag is encoded indicating whether the remainder for that value is encoded, or whether the remainder is unencoded and implied to be zero.

Преимущественно, что для текущего октанта кодируется флаг разделения, указывающий, кодируются ли его непосредственные потомки рекурсивно, или подразумеваются ли равными нулю все остатки вершин всех его еще не кодированных потомков.Advantageously, for the current octant, a split flag is encoded indicating whether its immediate children are recursively encoded, or whether all vertex residues of all its not-yet-encoded descendants are assumed to be zero.

Также раскрывается способ декодирования LUT, заданной в виде сетки вершин. По меньшей мере одно значение ассоциируется с каждой вершиной сетки. Способ декодирования для текущей вершины содержит:Also disclosed is a method for decoding a LUT defined as a grid of vertices. At least one value is associated with each mesh vertex. The decoding method for the current vertex contains:

- декодирование по меньшей мере одного остатка из потока битов;- decoding at least one residue from the bitstream;

- предсказание по меньшей мере одного значения, ассоциированного с текущей вершиной, из другого значения; и- predicting at least one value associated with the current vertex from another value; and

- восстановление по меньшей мере значения текущей вершины из его предсказания и по меньшей мере одного декодированного остатка.- recovering at least the value of the current vertex from its prediction and at least one decoded residual.

Преимущественно, что другое значение получается из восстановленных значений, ассоциированных с соседними вершинами.Preferably, another value is obtained from the recovered values associated with neighboring vertices.

В соответствии с характерной особенностью изобретения значение является значением цвета. В соответствии с конкретным вариантом осуществления значение цвета соответствует преобразованию цветов. В соответствии с характерной особенностью изобретения значение цвета является параметром усиления или смещением.In accordance with a feature of the invention, the value is a color value. In accordance with a particular embodiment, the color value corresponds to a color conversion. In accordance with a characteristic feature of the invention, the color value is a gain parameter or offset.

В соответствии с конкретным вариантом осуществления LUT является 3D LUT, декодированной с использованием октодерева, и с каждой вершиной сетки ассоциируются три значения, соседние вершины принадлежат родительскому октанту текущего октанта, которому принадлежит текущая вершина.In accordance with a specific embodiment, the LUT is a 3D LUT decoded using an octree, and three values are associated with each grid vertex, neighboring vertices belong to the parent octant of the current octant to which the current vertex belongs.

В соответствии с характерной особенностью изобретения предсказание по меньшей мере одного значения, ассоциированного с текущей вершиной, из восстановленных значений, ассоциированных с соседними вершинами, содержит интерполяцию по меньшей мере одного значения из соответствующих восстановленных значений соседних вершин.In accordance with an aspect of the invention, predicting at least one value associated with the current vertex from the recovered values associated with neighboring vertices comprises interpolating at least one value from the corresponding recovered values of neighboring vertices.

В соответствии с характерной особенностью способ дополнительно содержит декодирование индекса из потока битов, указывающего тип интерполяции.In accordance with a characteristic feature, the method further comprises decoding an index from the bit stream indicating the type of interpolation.

В соответствии с конкретным вариантом осуществления декодирование по меньшей мере одного остатка содержит энтропийное декодирование квантованного остатка из потока битов и обратное квантование квантованного остатка с помощью квантователя в декодированный остаток, и где способ дополнительно содержит декодирование квантователя из потока битов.In accordance with a specific embodiment, decoding at least one residue comprises entropy decoding the quantized residue from the bitstream and dequantizing the quantized residue with a quantizer into a decoded residue, and where the method further comprises decoding the quantizer from the bitstream.

В соответствии с характерной особенностью изобретения для каждой вершины декодируется флаг, указывающий, кодируется ли по меньшей мере один остаток для вершины.In accordance with an aspect of the invention, a flag is decoded for each vertex indicating whether at least one residue for the vertex is encoded.

В соответствии с разновидностью для каждого значения текущей вершины декодируется флаг, указывающий, декодируется ли остаток для того значения, или подразумевается ли остаток равным нулю.According to the flavor, for each value of the current vertex, a flag is decoded indicating whether the remainder is decoded for that value, or whether the remainder is assumed to be zero.

Преимущественно, что для текущего октанта декодируется флаг разделения, указывающий, декодируются ли его непосредственные потомки рекурсивно, или подразумеваются ли равными нулю все остатки вершин всех его еще не декодированных потомков.Advantageously, for the current octant, a split flag is decoded indicating whether its immediate children are recursively decoded, or whether all vertex residues of all its not-yet-decoded descendants are assumed to be zero.

Кодер для кодирования LUT, заданной в виде сетки вершин, где по меньшей мере одно значение ассоциируется с каждой вершиной сетки, содержащий, для текущей вершины:An encoder for encoding a LUT specified as a grid of vertices, where at least one value is associated with each grid vertex, containing, for the current vertex:

- средство для предсказания по меньшей мере одного значения, ассоциированного с текущей вершиной, из другого значения; иmeans for predicting at least one value associated with the current vertex from another value; and

- средство для кодирования в поток битов по меньшей мере одного остатка, вычисленного между упомянутым по меньшей мере одним значением текущей вершины и его предсказанием в потоке битов.means for encoding into the bit stream at least one residual calculated between said at least one current vertex value and its prediction in the bit stream.

Преимущественно, что другое значение получается из восстановленных значений, ассоциированных с соседними вершинами.Preferably, another value is obtained from the recovered values associated with neighboring vertices.

Кодер конфигурируется для исполнения этапов способа кодирования.The encoder is configured to execute the steps of the encoding method.

Декодер для декодирования LUT, заданной в виде сетки вершин, где по меньшей мере одно значение ассоциируется с каждой вершиной сетки, содержащий:A decoder for decoding a LUT defined as a grid of vertices, where at least one value is associated with each grid vertex, comprising:

- средство для декодирования по меньшей мере одного остатка, ассоциированного с текущей вершиной, из потока битов;means for decoding at least one residue associated with the current node from the bit stream;

- средство для предсказания по меньшей мере одного значения, ассоциированного с текущей вершиной, из другого значения; иmeans for predicting at least one value associated with the current vertex from another value; and

- средство для восстановления по меньшей мере значения текущей вершины из его предсказания и по меньшей мере одного декодированного остатка.means for recovering at least the value of the current vertex from its prediction and at least one decoded residual.

Преимущественно, что другое значение получается из восстановленных значений, ассоциированных с соседними вершинами.Preferably, another value is obtained from the recovered values associated with neighboring vertices.

Кодер конфигурируется для исполнения этапов способа декодирования.The encoder is configured to execute the steps of the decoding method.

Раскрывается поток битов, кодирующий по меньшей мере LUT, заданную в виде сетки вершин. По меньшей мере одно значение ассоциируется с каждой вершиной сетки, и поток битов содержит по меньшей мере один кодированный в нем остаток, вычисленный между упомянутым по меньшей мере одним значением текущей вершины и его предсказанием.A bitstream is disclosed encoding at least a LUT defined as a grid of vertices. At least one value is associated with each grid vertex, and the bitstream contains at least one encoded residual computed between said at least one current vertex value and its prediction.

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

Другие флаги и преимущества изобретения проявятся вместе с нижеследующим описанием некоторых из его вариантов осуществления, причем это описание выполняется применительно к чертежам, на которых:Other flags and advantages of the invention will appear with the following description of some of its embodiments, this description being made in relation to the drawings, in which:

- фиг.1 иллюстрирует архитектуру масштабируемого видеодекодера, который использует масштабируемость гаммы в соответствии с известным уровнем техники;- Fig.1 illustrates the architecture of a scalable video decoder that uses gamma scalability in accordance with the prior art;

- фиг.2 иллюстрирует архитектуру видеодекодера, который содержит преобразование цветов, чтобы приспособиться к характеристикам визуализации дисплея в соответствии с известным уровнем техники;- figure 2 illustrates the architecture of a video decoder that contains a color conversion to adapt to the rendering characteristics of the display in accordance with the prior art;

- фиг.3 схематически показывает квадратную 3D LUT, представленную в виде сетки с NxNxN вершинами, в соответствии с известным уровнем техники;- figure 3 schematically shows a square 3D LUT, represented as a grid with NxNxN vertices, in accordance with the prior art;

- фиг.4 изображает блок-схему алгоритма способа кодирования в соответствии с примерным вариантом осуществления изобретения;- Fig.4 depicts a block diagram of the algorithm of the encoding method in accordance with an exemplary embodiment of the invention;

- фиг.5 схематически показывает 2D LUT;- Fig.5 schematically shows a 2D LUT;

- фиг.6 представляет блок-схему алгоритма способа кодирования в соответствии с другим примерным вариантом осуществления изобретения;- Fig. 6 is a flowchart of an encoding method according to another exemplary embodiment of the invention;

фиг.7A и 7B схематически показывают рекурсивное подразделение куба на октанты (слева) и соответствующее октодерево (справа);Fig.7A and 7B schematically show the recursive division of the cube into octants (left) and the corresponding octree (right);

- фиг.8 иллюстрирует интерполяцию значений цвета вершины в соответствии с изобретением;- Fig. 8 illustrates the interpolation of vertex color values in accordance with the invention;

- фиг.9A схематически показывает 3D LUT, представленную в виде неравномерной сетки;- Fig.9A schematically shows a 3D LUT, represented as a non-uniform grid;

- фиг.9B иллюстрирует предсказание значения, ассоциированного с вершиной, в соответствии с конкретным и неограничивающим вариантом осуществления;- Fig.9B illustrates the prediction of the value associated with the top, in accordance with a specific and non-limiting embodiment;

- фиг.9C представляет октант, в котором кодируются только 4 вершины из 8;- Fig.9C represents an octant in which only 4 out of 8 vertices are encoded;

- фиг.9D представляет октанты, совместно использующие вершины;- Fig.9D represents octants sharing tops;

- фиг.10 представляет блок-схему алгоритма способа декодирования в соответствии с примерным вариантом осуществления изобретения;- Fig. 10 is a flowchart of a decoding method according to an exemplary embodiment of the invention;

- фиг.11 представляет блок-схему алгоритма способа декодирования в соответствии с другим примерным вариантом осуществления изобретения;- Fig. 11 is a flowchart of a decoding method according to another exemplary embodiment of the invention;

- фиг.12 схематически показывает кодер для кодирования LUT в соответствии с изобретением;- Fig.12 schematically shows an encoder for encoding LUT in accordance with the invention;

- фиг.13 схематически показывает декодер для декодирования LUT в соответствии с изобретением; и- Fig.13 schematically shows a decoder for decoding LUTs in accordance with the invention; and

- фиг.14 изображает положение 8 вершин октанта.- Fig.14 depicts the position of 8 vertices of the octant.

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

Фиг.4 представляет блок-схему алгоритма способа кодирования в соответствии с примерным вариантом осуществления изобретения. Способ предназначен для кодирования LUT, заданной в виде сетки вершин, где по меньшей мере одно значение, например значение цвета, ассоциируется с каждой вершиной сетки. В отношении декодирования термины "восстановление" и "декодирование" очень часто используются как синонимы. В дальнейшем термин "значение цвета" содержит значения цвета в заданном цветовом пространстве, например значения RGB, YUV или Y,Cb,Cr, и дополнительно содержит значения, характеризующие преобразование цветов, например параметры CMF, то есть параметры матрицы и значения смещения.4 is a flowchart of an encoding method according to an exemplary embodiment of the invention. The method is for encoding a LUT defined as a grid of vertices, where at least one value, such as a color value, is associated with each grid vertex. With respect to decoding, the terms "recovery" and "decoding" are very often used interchangeably. In the following, the term "color value" contains color values in a given color space, such as RGB, YUV or Y, Cb, Cr values, and additionally contains values characterizing the color conversion, such as CMF parameters, i.e. matrix parameters and offset values.

На этапе 40 по меньшей мере одно значение цвета у текущей вершины предсказывается из восстановленных значений цвета, ассоциированных с соседними вершинами.At step 40, at least one color value at the current vertex is predicted from the reconstructed color values associated with neighboring vertices.

В качестве примера на фиг.5 изображается 2D LUT, ассоциирующая вершину V0(c10,c20) с соответствующей парой значений (V0c1, V0c2), например значений цвета. Значения, ассоциированные с вершиной V0, предсказываются например, из соседних в пространственном отношении вершин V1(c11,c21), V2(c12,c22), V3(c13,c23) и V4(c14,c24) с соответствующей парой значений (Vic1, Vic2)i=1,..4. Предсказание P(Pc1, Pc2) вычисляется, например, с использованием интерполяции следующим образом:As an example, FIG. 5 shows a 2D LUT associating a vertex V0(c1 0 ,c2 0 ) with a corresponding pair of values (V0 c1 , V0 c2 ), such as color values. The values associated with the vertex V0 are predicted, for example, from the spatially neighboring vertices V1(c1 1 ,c2 1 ), V2(c1 2 ,c2 2 ), V3(c1 3 ,c2 3 ) and V4(c1 4 ,c2 4 ) with the corresponding pair of values (Vi c1 , Vi c2 ) i=1,..4 . The prediction P(Pc1, Pc2) is calculated, for example, using interpolation as follows:

Pc1=0,25*(V1c1+ V2c1+ V3c1+V4c1)Pc1=0.25*(V1 c1 + V2 c1 + V3 c1 +V4 c1 )

Pc2=0,25*(V1c2+ V2c2+ V3c2+V4c2)Pc2=0.25*(V1 c2 + V2 c2 + V3 c2 +V4 c2 )

В соответствии с разновидностью 2D LUT ассоциирует вершину V0(c10,c20) с набором параметров (m11, m12, m21, m22, o1, o2) вместо пары значений (V0c1, V0c2). Этот набор параметров может использоваться для восстановления значений (V0c1, V0c2) из значений (c10,c20) у V0 следующим образом:In accordance with the variant of 2D LUT, associates the vertex V0(c1 0 ,c2 0 ) with the set of parameters (m11, m12, m21, m22, o1, o2) instead of the pair of values (V0 c1 , V0 c2 ). This set of parameters can be used to recover the values (V0 c1 , V0 c2 ) from the values (c1 0 ,c2 0 ) of V0 as follows:

V0c1=m11* c10+m12* c20 +o1V0 c1 =m11* c1 0 +m12* c2 0 +o1

V0c2=m21* c10+m22* c20 +o2V0 c2 =m21* c1 0 +m22* c2 0 +o2

Параметры, ассоциированные с вершиной V0, предсказываются, например, из восстановленных параметров, ассоциированных с соседними в пространственном отношении вершинами V1(c11,c21), V2(c12,c22), V3(c13,c23) и V4(c14,c24). Предсказание вычисляется, например, для параметра текущей вершины с использованием интерполяции.The parameters associated with the vertex V0 are predicted, for example, from the reconstructed parameters associated with the spatially neighboring vertices V1(c1 1 ,c2 1 ), V2(c1 2 ,c2 2 ), V3(c1 3 ,c2 3 ) and V4 (c1 4 ,c2 4 ). The prediction is calculated, for example, for the current vertex parameter using interpolation.

На этапе 42 определяется по меньшей мере один остаток между, по меньшей мере, одним значением цвета у текущей вершины и его предсказанием и дополнительно кодируется в поток F битов. Остаток определяется путем вычитания предсказания по меньшей мере из одного значения цвета у текущей вершины. Кодирование обычно содержит энтропийное кодирование. В соответствии с разновидностью кодирование содержит квантование остатка с помощью квантователя q и энтропийное кодирование квантованного остатка.At step 42, at least one residual between at least one color value at the current vertex and its prediction is determined and further encoded into an F bit stream. The remainder is determined by subtracting the prediction from at least one color value at the current vertex. The encoding usually contains entropy encoding. According to a variant, the coding comprises quantization of the residual with the quantizer q and entropy coding of the quantized residual.

В качестве примера первый и второй остатки вычисляются для вершины V0 в случае 2D LUT. Первый остаток равен (V0c1-Pc1), а второй остаток равен (V0c2-Pc2). Остатки, или квантованные остатки (V0c1-Pc1)/q и (V0c2-Pc2)/q, затем энтропийно кодируются в поток F битов. Энтропийное кодирование применяет традиционные методики двоичного кодирования, например экспоненциальное кодирование Голомба, метод Хаффмана, CABAC (английская аббревиатура для "контекстно-адаптивное двоичное арифметическое кодирование").As an example, the first and second residuals are calculated for the vertex V0 in the case of a 2D LUT. The first remainder is (V0 c1 -Pc1) and the second remainder is (V0 c2 -Pc2). The residuals, or quantized residuals (V0 c1 -Pc1)/q and (V0 c2 -Pc2)/q, are then entropy encoded into an F bit stream. Entropy coding uses traditional binary coding techniques such as Exponential Golomb Coding, Huffman Method, CABAC (English abbreviation for "Context Adaptive Binary Arithmetic Coding").

Этапы 40 и 42 повторяются для кодирования дальнейшей вершины LUT до тех пор, пока не будут кодированы все вершины LUT.Steps 40 and 42 are repeated to encode a further LUT vertex until all LUT vertices have been encoded.

При желании способ кодирования содержит кодирование значения q квантователя в поток F битов. По меньшей мере одно значение цвета у текущей вершины дополнительно восстанавливается для использования в предсказании других вершин. Каждое восстановленное значение цвета равно соответствующему исходному значению цвета, если не используется никакого квантователя, то есть q=1. В противном случае по меньшей мере одно восстановленное значение цвета определяется путем деквантования остатка и сложения деквантованного остатка с предсказанием.Optionally, the encoding method comprises encoding the quantizer value q into a bit stream F. At least one color value at the current vertex is additionally restored for use in predicting other vertices. Each recovered color value is equal to the corresponding original color value if no quantizer is used, i.e. q=1. Otherwise, at least one reconstructed color value is determined by dequantizing the residual and adding the dequantized residual to the prediction.

В соответствии с разновидностью способ кодирования дополнительно содержит кодирование типа интерполяции в поток F битов, используемого для предсказания по меньшей мере одного значения цвета у вершины. Точнее говоря, из потока битов декодируется индекс, который идентифицирует тип интерполяции. В качестве примера индекс 0 идентифицирует билинейную интерполяцию, индекс 1 идентифицирует интерполяцию по ближайшим соседним элементам, индекс 2 идентифицирует линейную интерполяцию с 2 ближайшими соседними элементами.According to a variant, the encoding method further comprises encoding an interpolation type into a bit stream F used to predict at least one color value at a vertex. More specifically, an index is decoded from the bitstream that identifies the type of interpolation. As an example, index 0 identifies bilinear interpolation, index 1 identifies nearest neighbor interpolation, index 2 identifies 2 nearest neighbor linear interpolation.

В соответствии с разновидностью не все вершины в LUT кодируются в поток F битов. Например, если абсолютное значение всех остатков или всех квантованных остатков вершины меньше порогового значения TH, то для той вершины не кодируется никакого остатка, например TH=0 или TH=1. Соответственно, в поток битов для каждой вершины кодируется двоичный флаг, указывающий, кодируется ли по меньшей мере один остаток для той вершины, или подразумеваются ли равными нулю остатки, которые не кодируются.According to the flavor, not all vertices in the LUT are encoded into the F bitstream. For example, if the absolute value of all residuals or all quantized residuals of a vertex is less than a threshold value TH, then no residual is encoded for that vertex, eg TH=0 or TH=1. Accordingly, a binary flag is encoded into the bitstream for each vertex, indicating whether at least one residue for that vertex is encoded, or whether residuals that are not encoded are meant to be zero.

В соответствии с разновидностью для каждого значения цвета каждой вершины кодируется двоичный флаг, указывающий, кодируется ли остаток для того значения цвета, или является ли остаток не кодируемым и подразумеваемым равным нулю.According to the flavor, for each color value of each vertex, a binary flag is encoded indicating whether the remainder for that color value is encoded, or whether the remainder is unencoded and implied to be zero.

Размер LUT при желании также кодируется в поток битов.The LUT size is optionally encoded into the bitstream as well.

Фиг.6 представляет блок-схему алгоритма способа кодирования в соответствии с другим примерным вариантом осуществления изобретения. Способ предназначен для кодирования 3D LUT, заданной в виде сетки вершин, с использованием октодерева, где набор из n значений цвета, например тройка значений цвета, ассоциируется с каждой вершиной сетки, где n – целое число ≥ 1. Октодерево предназначено для разбиения цветового пространства 3D путем его рекурсивного подразделения на восемь октантов, как изображено на фиг.7A и 7B. На фиг.7A разбиение симметрично, тогда как на фиг.7B разбиение асимметрично. Октант уровня N имеет родительский октант на уровне N-1. Октодеревья являются трехмерным аналогом квадродеревьев. Способ кодирования раскрывается для кодирования текущей вершины V сетки, которая принадлежит текущему октанту. В дальнейшем n=3.6 is a flowchart of an encoding method in accordance with another exemplary embodiment of the invention. The method is designed to encode a 3D LUT defined as a grid of vertices using an octree, where a set of n color values, such as a triple of color values, is associated with each vertex of the grid, where n is an integer ≥ 1. The octree is designed to partition a 3D color space by recursively dividing it into eight octants, as shown in FIGS. 7A and 7B. In Fig. 7A, the partition is symmetrical, while in Fig. 7B, the partition is asymmetrical. The N-level octant has a parent octant at the N-1 level. Octrees are the 3D analogue of quadtrees. An encoding method is disclosed for encoding the current grid vertex V, which belongs to the current octant. Further n=3.

На этапе 50 каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V с координатами (r, g, b), предсказывается из восстановленных значений цвета, ассоциированных с соседними вершинами, то есть вершинами, которые принадлежат родительскому октанту у текущего октанта. Для упрощения записей используется (r, g, b) вместо (c1, c2, c3). Однако изобретение не ограничивается цветовым пространством (R, G, B). Оно может применяться к представлениям цветовых пространств (Y,U,V), (Y,Cb,Cr) и т. п.In step 50, each of the three color values (V r , V g , V b ) associated with the current vertex V at coordinates (r, g, b) is predicted from the reconstructed color values associated with neighboring vertices, that is, vertices that belong to the parent octant of the current octant. To simplify the notation, (r, g, b) is used instead of (c1, c2, c3). However, the invention is not limited to the (R, G, B) color space. It can be applied to representations of color spaces (Y,U,V), (Y,Cb,Cr), etc.

Соответственно, определяется предсказание для каждого значения цвета с использованием, например, трилинейной интерполяции, как проиллюстрировано с помощью фиг.8:Accordingly, a prediction is determined for each color value using, for example, trilinear interpolation, as illustrated by FIG. 8:

Figure 00000001
Figure 00000001

где: (ri, gj, bk) при i=0, 1, j=0, 1 и k=0, 1 являются координатами вершин родительского октанта в цветовом пространстве 3D;where: (ri, gj, bk) at i=0, 1, j=0, 1 and k=0, 1 are the coordinates of the vertices of the parent octant in the 3D color space;

(r, g, b) являются координатами текущей вершины;(r, g, b) are the coordinates of the current vertex;

Figure 00000002
является первым значением цвета, ассоциированным с вершиной (ri, gj, bk);
Figure 00000002
is the first color value associated with the vertex (ri, gj, bk);

Figure 00000003
Figure 00000003

s0(t)=t1-t и s1(t)=t-t0 при t=r, g или b.s 0 (t)=t 1 -t and s 1 (t)=tt 0 when t=r, g or b.

Такие же уравнения используются для g и b. Можно использовать другой тип интерполяции, например призматическую, пирамидальную или тетраэдральную.The same equations are used for g and b. You can use another type of interpolation, such as prismatic, pyramidal, or tetrahedral.

Сетка не обязательно является равномерной, как изображено на фиг.9A.The grid is not necessarily uniform as depicted in FIG. 9A.

В разновидности этапа 50 каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V с координатами (r, g, b) в текущем октанте с индексом j, предсказывается по меньшей мере из одного восстановленного значения цвета, ассоциированного с одной соседней вершиной Vp с координатами (rp, gp, bp), то есть вершиной, которая принадлежит соседнему октанту с индексом (j-1). Соседний октант является октантом, совместно использующим по меньшей мере одну вершину с текущим октантом и/или предшествующим текущему октанту в списке кодирования октантов. Список кодирования октантов является списком, задающим порядок кодирования октанта. В конкретном варианте осуществления все октанты принадлежат одному и тому же уровню. Соответственно, определяется предсказание для каждого значения цвета, как проиллюстрировано с помощью фиг.9B для компоненты r:

Figure 00000004
=PredAr+PredBr, где PredAr является значением, которое зависит от положения вершины в 3D LUT, а PredBr является значением, которое зависит от восстановленного значения цвета, ассоциированного с соседней вершиной Vp. PredAr, например, равно rp. Для примера PredBr=V’r - PredA’r, где V’r является восстановленным значением цвета вершины Vp в соседнем октанте, а PredA’r является значением, которое зависит от положения вершины Vp в 3D LUT. PredA’r, например, равно rp. Такие же уравнения используются для g и b.In a variation of step 50, each of the three color values (V r , V g , V b ) associated with the current vertex V at coordinates (r, g, b) in the current octant at index j is predicted from at least one recovered color value , associated with one neighboring vertex Vp with coordinates (r p , g p , b p ), that is, a vertex that belongs to the neighboring octant with index (j-1). A neighbor octant is an octant that shares at least one vertex with the current octant and/or preceding the current octant in the octant encoding list. The octant encoding list is a list specifying the octant encoding order. In a specific embodiment, all octants belong to the same level. Accordingly, a prediction for each color value is determined, as illustrated by FIG. 9B for the r component:
Figure 00000004
=PredA r +PredB r , where PredA r is a value that depends on the position of the vertex in the 3D LUT, and PredB r is a value that depends on the reconstructed color value associated with the neighboring vertex Vp. PredA r , for example, is equal to r p . For example, PredB r =V'r - PredA' r , where V'r is the reconstructed color value of the Vp vertex in the adjacent octant, and PredA' r is a value that depends on the position of the Vp vertex in the 3D LUT. PredA' r , for example, is equal to r p . The same equations are used for g and b.

На этапе 52 вычисляются три остатка для текущей вершины, по одному для каждой цветовой компоненты: resr=(Vr-

Figure 00000004
), resg=(Vg-
Figure 00000005
) и resb=(Vb-
Figure 00000006
).In step 52, three residuals are computed for the current vertex, one for each color component: res r =(V r -
Figure 00000004
), res g =(V g -
Figure 00000005
) and res b =(V b -
Figure 00000006
).

Остатки затем энтропийно кодируются в поток битов или квантуются перед энтропийным кодированием. Энтропийное кодирование применяет традиционные методики двоичного кодирования, например экспоненциальное кодирование Голомба, метод Хаффмана, CABAC (английская аббревиатура для "контекстно-адаптивное двоичное арифметическое кодирование").The residuals are then entropy encoded into the bitstream or quantized prior to entropy encoding. Entropy coding uses traditional binary coding techniques such as Exponential Golomb Coding, Huffman Method, CABAC (English abbreviation for "Context Adaptive Binary Arithmetic Coding").

Октант уровня 0 не имеет родительского октанта. Точно так же первый октант в списке кодирования октантов не имеет предшествующего октанта. Следовательно, каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V этого октанта, предсказывается из известного значения цвета, например значения 128. В соответствии с разновидностью используются разные известные значения для разных вершин октанта уровня 0. В соответствии с другой разновидностью предсказание из известных значений цвета также выполняется для других октантов помимо октанта уровня 0. В соответствии с разновидностью каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V этого октанта, предсказывается из уже восстановленных значений цвета, ассоциированных с соседними вершинами, которые принадлежат тому же октанту.Level 0 octant has no parent octant. Similarly, the first octant in the octant encoding list has no preceding octant. Therefore, each of the three color values (V r , V g , V b ) associated with the current vertex V of this octant is predicted from a known color value, such as the value 128. According to the variant, different known values are used for different vertices of the level 0 octant According to another variant, prediction from known color values is also performed for octants other than the level 0 octant . from the already recovered color values associated with neighboring vertices that belong to the same octant.

При желании способ кодирования содержит кодирование значения q квантователя в поток битов. Три значения цвета текущей вершины далее восстанавливаются и могут использоваться для предсказания других вершин. Каждое из восстановленных значений цвета равно исходному значению цвета, если не используется никакого квантователя (q=1). В противном случае каждое восстановленное значение цвета определяется путем деквантования соответствующего остатка и сложения деквантованного остатка с соответствующим предсказанием.Optionally, the encoding method comprises encoding the quantizer value q into a bitstream. The three color values of the current vertex are then recovered and can be used to predict other vertices. Each of the restored color values is equal to the original color value if no quantizer is used (q=1). Otherwise, each recovered color value is determined by dequantizing the corresponding residual and adding the dequantized residual to the corresponding prediction.

В соответствии с разновидностью способ кодирования дополнительно содержит кодирование типа интерполяции в поток битов, используемого для предсказания по меньшей мере одного значения цвета у вершины. Точнее говоря, в поток битов кодируется индекс, который идентифицирует тип интерполяции. В качестве примера индекс 0 идентифицирует трилинейную интерполяцию, индекс 1 идентифицирует призматическую интерполяцию, индекс 2 идентифицирует пирамидальную интерполяцию, а индекс 3 идентифицирует тетраэдральную интерполяцию.According to a variation, the encoding method further comprises encoding an interpolation type into a bitstream used to predict at least one color value at a vertex. More specifically, an index is encoded into the bitstream that identifies the type of interpolation. As an example, index 0 identifies trilinear interpolation, index 1 identifies prismatic interpolation, index 2 identifies pyramidal interpolation, and index 3 identifies tetrahedral interpolation.

В соответствии с разновидностью не все вершины в LUT кодируются в поток битов. Например, если абсолютные значения всех остатков или всех квантованных остатков вершины меньше порогового значения TH, то для той вершины не кодируется никакого остатка, например TH=0 или TH=1. Соответственно, в поток битов для каждой вершины кодируется двоичный флаг, указывающий, кодируется ли по меньшей мере один остаток для той вершины. В соответствии с разновидностью для каждого значения цвета каждой вершины кодируется двоичный флаг, указывающий, кодируется ли остаток для того значения цвета, или является ли остаток не кодируемым и подразумеваемым равным нулю. В другой разновидности кодируются только определенные вершины, как изображено на фиг.9C. На этой фигуре кодируются только 4 вершины из 8 на октант.According to the flavor, not all vertices in the LUT are encoded into the bitstream. For example, if the absolute values of all residuals or all quantized residuals of a vertex are less than a threshold value TH, then no residual is encoded for that vertex, eg TH=0 or TH=1. Accordingly, a binary flag is encoded into the bitstream for each vertex, indicating whether at least one residue for that vertex is encoded. According to the flavor, for each color value of each vertex, a binary flag is encoded indicating whether the remainder for that color value is encoded, or whether the remainder is unencoded and implied to be zero. In another variant, only certain vertices are encoded, as depicted in FIG. 9C. In this figure, only 4 vertices out of 8 per octant are encoded.

LUT обычно кодируется в поток битов для использования в преобразовании изображений из видео в таких приложениях, как цветовая адаптация или масштабируемость цветовой гаммы у визуализации дисплея. LUT можно кодировать и передавать вместе с видео. Если способу кодирования известно, что некоторые части 3D LUT не будут использоваться приложением, то не кодируются вершины, которые принадлежат этой части 3D LUT. Точно так же, если способу кодирования известно, что некоторые части 3D LUT обладают небольшим влиянием на окончательную визуализацию видео, то не кодируются вершины, которые принадлежат этой части 3D LUT.The LUT is typically encoded into a bitstream for use in converting images from video in applications such as color adaptation or color gamut scalability in display rendering. LUT can be encoded and transmitted along with the video. If the encoding method knows that some parts of the 3D LUT will not be used by the application, then the vertices that belong to this part of the 3D LUT are not encoded. Similarly, if the encoding method knows that certain parts of the 3D LUT have little effect on the final rendering of the video, then the vertices that belong to that part of the 3D LUT are not encoded.

Способ применяется рекурсивно для кодирования всей 3D LUT. В этом случае кодируются все октанты октодерева. Как только кодированы все вершины текущего октанта, кодируются вершины дочернего октанта у текущего октанта.The method is applied recursively to encode the entire 3D LUT. In this case, all octants of the octree are encoded. Once all the vertices of the current octant are encoded, the child octant vertices of the current octant are encoded.

В одной разновидности 3D LUT предварительно обрабатывается перед кодированием. В этом случае с каждым октантом в октодереве ассоциируется флаг разделения, и сначала устанавливается в ложь. Во время этапа предварительной обработки определяются значения флага разделения для каждого октанта. Если по меньшей мере одна кодируемая вершина текущего октанта содержит меньшей мере один, по возможности квантованный, остаток больше TH, то флаг разделения у его родительского октанта устанавливается в "истину". Таким образом, флаг разделения у текущего октанта уровня N указывает, кодируются ли рекурсивно его непосредственные потомки (то есть потомки уровня N+1), или подразумеваются ли равными нулю все остатки вершин всех его еще не кодированных потомков (то есть потомков уровня N+k при k>0).In one variation, the 3D LUT is pre-processed before encoding. In this case, a split flag is associated with each octant in the octree, and is first set to false. During the pre-processing step, the split flag values for each octant are determined. If at least one encoded vertex of the current octant contains at least one, possibly quantized, remainder greater than TH, then the split flag of its parent octant is set to true. Thus, the split flag at the current level N octant indicates whether its immediate children (i.e., level N+1 children) are encoded recursively, or whether all vertex residues of all its not-yet-encoded children (i.e., level N+k children) are assumed to be zero. for k>0).

Во время этапа кодирования флаги разделения и остатки кодируются в поток битов. Как только кодированы все вершины текущего октанта, кодируются вершины дочернего октанта у текущего октанта, если флагом разделения текущего октанта является истина. Вершины, которые принадлежат двум октантам, предпочтительно кодируются только один раз. В одной разновидности вершины, совместно используемые между несколькими октантами, кодируются более одного раза. В частности, вершины кодируются несколько раз разными значениями, по одному значению для каждого октанта, которому она принадлежит. Со ссылкой на фиг.9D вершина V1 совместно используется между октантом (j) и октантом (j-1). Поэтому V1 можно кодировать дважды: одним значением для октанта (j), а другим значением – для октанта (j-1). Первое значение и другое значение могут отличаться. Точно так же вершину V2, которая совместно используется между 4 октантами, можно кодировать 4 раза.During the encoding step, split flags and residuals are encoded into a bit stream. Once all vertices of the current octant have been encoded, the child octant vertices of the current octant are encoded if the split flag of the current octant is true. Vertices that belong to two octants are preferably encoded only once. In one variation, vertices shared between multiple octants are encoded more than once. In particular, vertices are encoded several times with different values, one value for each octant to which it belongs. Referring to FIG. 9D, V1 is shared between an octant (j) and an octant (j-1). Therefore, V1 can be encoded twice: with one value for the octant (j) and another value for the octant (j-1). The first value and the other value may be different. Similarly, a V2 node that is shared between 4 octants can be encoded 4 times.

3D LUT кодируется, например, в VPS ("Набор параметров видео"), SPS ("Набор параметров последовательности"), PPS ("Набор параметров изображения") или в одном сообщении SEI ("Дополнительная информация улучшения"), которые заданы в стандартах кодирования видео AVC, HEVC, SVC или SHVC. 3D LUT кодируется, например, в сообщении SEI, заданном ниже. Размер S у LUT при желании также кодируется в поток битов. S является количеством вершин в одном направлении.The 3D LUT is encoded, for example, in a VPS ("Video Parameter Set"), SPS ("Sequence Parameter Set"), PPS ("Picture Parameter Set"), or in one SEI ("Enhancement Additional Information") message, which are specified in the standards AVC, HEVC, SVC or SHVC video encoding. The 3D LUT is encoded, for example, in the SEI message defined below. The size S of the LUT is optionally encoded into the bitstream as well. S is the number of vertices in one direction.

В соответствии с разновидностью n 3D LUT, состоящих из вершин с 1 значением цвета, кодируются вместо кодирования одной 3D LUT, состоящей из вершин с n ассоциированными значениями цвета, например n=3, как раскрыто выше.According to a variant, n 3D LUTs consisting of vertices with 1 color value are encoded instead of encoding a single 3D LUT consisting of vertices with n associated color values, such as n=3, as discussed above.

В соответствии с разновидностью, когда размер 3D LUT равен S=2, кодируется флаг, указывающий декодеру вычислить матрицу 3×3 коэффициентов усиления плюс смещение из декодированной 3D LUT и использовать ее в качестве CMF вместо 3D LUT.According to a variant, when the 3D LUT size is S=2, a flag is encoded to tell the decoder to compute a 3×3 matrix of gains plus an offset from the decoded 3D LUT and use it as the CMF instead of the 3D LUT.

В соответствии с другой разновидностью одна 3D LUT, состоящая из вершин с n ассоциированными значениями цвета, используется для кодирования локально заданных параметров преобразования цветов. Для примера каждая вершина 3D LUT ассоциируется с 12 значениями цвета, характеризующими преобразование цветов. Вместо ассоциации 3 значений цвета (Vr, Vg, Vb) с текущей вершиной V 12 значений цвета, характеризующих преобразование цветов, ассоциируются с вершиной V(r,g,b), где 12 значений цвета [ai, bi, ci, oi] при i=0, 1 или 2 задаются так, чтобы подтверждалось следующее уравнение:According to another variant, one 3D LUT consisting of vertices with n associated color values is used to encode locally defined color conversion parameters. For example, each vertex of the 3D LUT is associated with 12 color values that characterize the color conversion. Instead of associating 3 color values (V r , V g , V b ) with the current node V, 12 color values characterizing the color transformation are associated with the node V(r,g,b), where the 12 color values [ai, bi, ci, oi] for i=0, 1 or 2 are set so that the following equation is confirmed:

Figure 00000007
Figure 00000007

В соответствии с разновидностью только параметры [ai, bi, ci] при i=0, 1 или 2 ассоциируются с вершинами.According to the variant, only the parameters [ai, bi, ci] for i=0, 1, or 2 are associated with vertices.

Конечно, в случае 3D LUT с размером 2 (один единственный октант с 8 вершинами) можно выбрать три значения цвета у вершин так, чтобы 3D LUT была эквивалента Модели усиления-смещения, заданной следующим уравнением:Of course, in the case of a 3D LUT with a size of 2 (one single octant with 8 vertices), you can choose three color values at the vertices so that the 3D LUT is equivalent to the Gain-Bias Model given by the following equation:

Figure 00000008
Figure 00000008

Для этого нужно установить 3 значения цвета (yX, uX, vX)X=A,…H у 8 вершин с A по H в следующие значения:To do this, you need to set 3 color values (y X , u X , v X ) X=A,…H for 8 vertices from A to H to the following values:

Figure 00000009
Figure 00000009

Figure 00000010
Figure 00000010

K является постоянной, которая зависит от количества битов, используемых для представления каждого значения цвета. K=255, если значения цвета представляются на 8 битах, K=1023, если значения цвета представляются на 10 битах, и т.п. Тогда трилинейная интерполяция эквивалентна Модели усиления-смещения.K is a constant that depends on the number of bits used to represent each color value. K=255 if color values are represented on 8 bits, K=1023 if color values are represented on 10 bits, etc. Then trilinear interpolation is equivalent to the Gain-Bias Model.

Фиг.10 представляет блок-схему алгоритма способа декодирования в соответствии с примерным вариантом осуществления изобретения.10 is a flowchart of a decoding method according to an exemplary embodiment of the invention.

На этапе 140 из потока F битов декодируется по меньшей мере один остаток. Декодирование обычно содержит энтропийное декодирование. В соответствии с разновидностью декодирование содержит энтропийное декодирование квантованного остатка и обратное квантование квантованного остатка с помощью квантователя q. Энтропийное декодирование применяет традиционные методики двоичного декодирования, например экспоненциальное кодирование Голомба, метод Хаффмана, CABAC (английская аббревиатура для "контекстно-адаптивное двоичное арифметическое кодирование").At 140, at least one residual is decoded from the F bit stream. The decoding usually contains entropy decoding. According to a variant, the decoding comprises entropy decoding of the quantized residual and inverse quantization of the quantized residual using a quantizer q. Entropy decoding uses traditional binary decoding techniques such as Exponential Golomb Coding, Huffman Method, CABAC (English abbreviation for "Context Adaptive Binary Arithmetic Coding").

При желании способ декодирования содержит декодирование значения q квантователя из потока F битов.Optionally, the decoding method comprises decoding the quantizer value q from the bit stream F.

В соответствии с разновидностью не все вершины в LUT кодируются в поток F битов. При желании из потока битов для каждой вершины декодируется двоичный флаг, указывающий, кодируется ли по меньшей мере один остаток для той вершины. Если не кодируется никакого остатка, то для этой вершины остаток (остатки) предполагается (предполагаются) равным нулю.According to the flavor, not all vertices in the LUT are encoded into the F bitstream. Optionally, a binary flag is decoded from the bitstream for each vertex, indicating whether at least one residue for that vertex is encoded. If no remainder is encoded, then for that vertex the remainder(s) are (are) assumed to be zero.

На этапе 142 по меньшей мере одно значение цвета у текущей вершины предсказывается из восстановленных значений цвета, ассоциированных с соседними вершинами. В качестве примера на фиг.5 изображается 2D LUT, ассоциирующая вершину V0(c1,c2) с соответствующей парой значений цвета (V0c1, V0c2). Значения цвета, ассоциированные с вершиной V0, предсказываются из соседних в пространственном отношении вершин V1, V2, V3 и V4. В качестве примера предсказание P(Pc1, Pc2) вычисляется с использованием интерполяции следующим образом:At 142, at least one color value at the current vertex is predicted from the reconstructed color values associated with neighboring vertices. As an example, FIG. 5 shows a 2D LUT associating a vertex V0(c1,c2) with a corresponding pair of color values (V0 c1 , V0 c2 ). Color values associated with vertex V0 are predicted from spatially adjacent vertices V1, V2, V3, and V4. As an example, the prediction P(Pc1, Pc2) is calculated using interpolation as follows:

Pc1=0,25*(V1c1+ V2c1+ V3c1+V4c1)Pc1=0.25*(V1 c1 + V2 c1 + V3 c1 +V4 c1 )

Pc2=0,25*(V1c2+ V2c2+ V3c2+V4c2)Pc2=0.25*(V1 c2 + V2 c2 + V3 c2 +V4 c2 )

В соответствии с разновидностью 2D LUT ассоциирует вершину V0(c10,c20) с набором параметров (m11, m12, m21, m22, o1, o2) вместо пары значений (V0c1, V0c2). Этот набор параметров может использоваться для восстановления значений (V0c1, V0c2) из значений (c10,c20) у V0 следующим образом:In accordance with the variant of 2D LUT, associates the vertex V0(c1 0 ,c2 0 ) with the set of parameters (m11, m12, m21, m22, o1, o2) instead of the pair of values (V0 c1 , V0 c2 ). This set of parameters can be used to recover the values (V0 c1 , V0 c2 ) from the values (c1 0 ,c2 0 ) of V0 as follows:

V0c1=m11* c10+m12* c20 +o1V0 c1 =m11* c1 0 +m12* c2 0 +o1

V0c2=m21* c10+m22* c20 +o2V0 c2 =m21* c1 0 +m22* c2 0 +o2

Параметры, ассоциированные с вершиной V0, предсказываются, например, из восстановленных параметров, ассоциированных с соседними в пространственном отношении вершинами V1(c11,c21), V2(c12,c22), V3(c13,c23) и V4(c14,c24). Предсказание вычисляется, например, для параметра текущей вершины с использованием интерполяции.The parameters associated with the vertex V0 are predicted, for example, from the reconstructed parameters associated with the spatially neighboring vertices V1(c1 1 ,c2 1 ), V2(c1 2 ,c2 2 ), V3(c1 3 ,c2 3 ) and V4 (c1 4 ,c2 4 ). The prediction is calculated, for example, for the current vertex parameter using interpolation.

На этапе 144 восстанавливается вершина. Точнее говоря, восстанавливается по меньшей мере одно значение цвета у текущей вершины из предсказания и по меньшей мере одного декодированного остатка.At step 144, the vertex is restored. More specifically, at least one color value at the current vertex is recovered from the prediction and at least one decoded residual.

В качестве примера в случае 2D LUT декодируются два остатка RC1 и Rc2 для текущей вершины V0. Таким образом, текущая вершина восстанавливается путем вычисления двух значений цвета следующим образом: (RC1+Pc1) и (Rc2+ Pc2).As an example, in the case of a 2D LUT, two residuals R C1 and R c2 for the current vertex V0 are decoded. Thus, the current vertex is restored by calculating two color values as follows: (R C1 + Pc1) and (R c2 + Pc2).

В соответствии с разновидностью способ декодирования дополнительно содержит декодирование из потока F битов типа интерполяции, используемого для предсказания по меньшей мере одного значения цвета у вершины. Точнее говоря, из потока битов декодируется индекс, который идентифицирует тип интерполяции. В качестве примера индекс 0 идентифицирует билинейную интерполяцию, а индекс 1 идентифицирует интерполяцию по ближайшим вершинам.According to a variation, the decoding method further comprises decoding from an interpolation type bit stream F used to predict at least one color value at a vertex. More specifically, an index is decoded from the bitstream that identifies the type of interpolation. As an example, index 0 identifies bilinear interpolation and index 1 identifies nearest vertex interpolation.

Размер LUT при желании также декодируется из потока битов.The LUT size is optionally decoded from the bitstream as well.

Фиг.11 представляет блок-схему алгоритма способа декодирования в соответствии с другим примерным вариантом осуществления изобретения. Способ предназначен для декодирования 3D LUT, заданной в виде сетки вершин, с использованием октодерева, где с каждой вершиной сетки ассоциируется тройка значений цвета. Способ декодирования раскрывается для декодирования текущей вершины V сетки, которая принадлежит текущему октанту.11 is a flowchart of a decoding method according to another exemplary embodiment of the invention. The method is intended for decoding a 3D LUT defined as a grid of vertices using an octree, where a triplet of color values is associated with each grid vertex. The decoding method is disclosed for decoding the current grid vertex V, which belongs to the current octant.

На этапе 150 из потока F битов декодируются три остатка resr, resg, resb. Декодирование обычно содержит энтропийное декодирование. В соответствии с разновидностью декодирование содержит энтропийное декодирование квантованного остатка и обратное квантование квантованного остатка с помощью квантователя q. Энтропийное декодирование применяет традиционные методики двоичного декодирования, например экспоненциальное кодирование Голомба, метод Хаффмана, CABAC (английская аббревиатура для "контекстно-адаптивное двоичное арифметическое кодирование").In step 150, the three residues res r , res g , res b are decoded from the bit stream F. The decoding usually contains entropy decoding. According to a variant, the decoding comprises entropy decoding of the quantized residual and inverse quantization of the quantized residual using a quantizer q. Entropy decoding uses traditional binary decoding techniques such as Exponential Golomb Coding, Huffman Method, CABAC (English abbreviation for "Context Adaptive Binary Arithmetic Coding").

При желании способ декодирования содержит декодирование значения q квантователя из потока F битов.Optionally, the decoding method comprises decoding the quantizer value q from the bit stream F.

В соответствии с разновидностью не все вершины в LUT кодируются в поток F битов. При желании из потока битов для каждой вершины декодируется двоичный флаг, указывающий, кодируется ли по меньшей мере один остаток для той вершины. Если не кодируется никакого остатка, то для этой вершины остаток (остатки) предполагается (предполагаются) равным нулю. В другой разновидности декодируются только определенные вершины, как изображено на фиг.9C. На этой фигуре декодируются только 4 вершины из 8 на октант.According to the flavor, not all vertices in the LUT are encoded into the F bitstream. Optionally, a binary flag is decoded from the bitstream for each vertex, indicating whether at least one residue for that vertex is encoded. If no remainder is encoded, then for that vertex the remainder(s) are (are) assumed to be zero. In another variant, only certain vertices are decoded, as depicted in FIG. 9C. In this figure, only 4 vertices out of 8 per octant are decoded.

На этапе 152 каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V с координатами (r, g, b), предсказывается из восстановленных значений цвета, ассоциированных с соседними вершинами, то есть вершинами, которые принадлежат родительскому октанту у текущего октанта. Для упрощения записей используется (r, g, b) вместо (c1, c2, c3). Однако изобретение не ограничивается цветовым пространством (R, G, B). Оно может применяться к представлениям цветовых пространств (Y,U,V), (Y,Cb,Cr) и т. п.In step 152, each of the three color values (V r , V g , V b ) associated with the current vertex V at coordinates (r, g, b) is predicted from the reconstructed color values associated with neighboring vertices, that is, vertices that belong to the parent octant of the current octant. To simplify the notation, (r, g, b) is used instead of (c1, c2, c3). However, the invention is not limited to the (R, G, B) color space. It can be applied to representations of color spaces (Y,U,V), (Y,Cb,Cr), etc.

Соответственно, предсказание определяется для каждого значения цвета.Accordingly, a prediction is determined for each color value.

Соответственно, определяется предсказание для каждого значения цвета с использованием, например, трилинейной интерполяции, как проиллюстрировано с помощью фиг.8:Accordingly, a prediction is determined for each color value using, for example, trilinear interpolation, as illustrated by FIG. 8:

Figure 00000001
Figure 00000001

где: (ri, gj, bk) при i=0, 1, j=0, 1 и k=0, 1 являются координатами вершин родительского октанта в цветовом пространстве 3D;where: (ri, gj, bk) at i=0, 1, j=0, 1 and k=0, 1 are the coordinates of the vertices of the parent octant in the 3D color space;

(r, g, b) являются координатами текущей вершины;(r, g, b) are the coordinates of the current vertex;

Figure 00000002
является первым значением цвета, ассоциированным с вершиной (ri, gj, bk);
Figure 00000002
is the first color value associated with the vertex (ri, gj, bk);

Figure 00000003
Figure 00000003

s0(t)=t1-t и s1(t)=t-t0 при t=r, g или b.s 0 (t)=t 1 -t and s 1 (t)=tt 0 when t=r, g or b.

Такие же уравнения используются для g и b. Можно использовать другой тип интерполяции, например призматическую, пирамидальную или тетраэдральную. Сетка не обязательно является равномерной, как изображено на фиг.9A.The same equations are used for g and b. You can use another type of interpolation, such as prismatic, pyramidal, or tetrahedral. The grid is not necessarily uniform as depicted in FIG. 9A.

В разновидности этапа 152 каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V с координатами (r, g, b) в текущем октанте с индексом j, предсказывается по меньшей мере из одного восстановленного значения цвета, ассоциированного с одной соседней вершиной Vp с координатами (rp, gp, bp), то есть вершиной, которая принадлежит соседнему октанту с индексом (j-1). Соседний октант является октантом, совместно использующим по меньшей мере одну вершину с текущим октантом и/или предшествующим текущему октанту в списке кодирования октантов. Список кодирования октантов является списком, задающим порядок кодирования октанта. В конкретном варианте осуществления все октанты принадлежат одному и тому же уровню. Соответственно, определяется предсказание для каждого значения цвета, как проиллюстрировано с помощью фиг.9B для компоненты r:

Figure 00000004
=PredAr+PredBr, где PredAr является значением, которое зависит от положения вершины в 3D LUT, а PredBr является значением, которое зависит от восстановленного значения цвета, ассоциированного с соседней вершиной Vp. PredAr, например, равно rp. Для примера PredBr=V’r - PredA’r, где V’r является восстановленным значением цвета вершины Vp в соседнем октанте, а PredA’r является значением, которое зависит от положения вершины Vp в 3D LUT. PredA’r, например, равно rp. Такие же уравнения используются для g и b.In a variation of step 152, each of the three color values (V r , V g , V b ) associated with the current vertex V at coordinates (r, g, b) in the current octant at index j is predicted from at least one recovered color value , associated with one neighboring vertex Vp with coordinates (r p , g p , b p ), that is, a vertex that belongs to the neighboring octant with index (j-1). A neighbor octant is an octant that shares at least one vertex with the current octant and/or preceding the current octant in the octant encoding list. The octant encoding list is a list specifying the octant encoding order. In a specific embodiment, all octants belong to the same level. Accordingly, a prediction for each color value is determined, as illustrated by FIG. 9B for the r component:
Figure 00000004
=PredA r +PredB r , where PredA r is a value that depends on the position of the vertex in the 3D LUT, and PredB r is a value that depends on the reconstructed color value associated with the neighboring vertex Vp. PredA r , for example, is equal to r p . For example, PredB r =V'r - PredA' r , where V'r is the reconstructed color value of the Vp vertex in the adjacent octant, and PredA' r is a value that depends on the position of the Vp vertex in the 3D LUT. PredA' r , for example, is equal to r p . The same equations are used for g and b.

На этапе 154 вычисляются (соответственно, восстанавливаются) три значения цвета для текущей вершины из их предсказания и соответствующих декодированных остатков (resr, resg, resb). Таким образом, текущая вершина восстанавливается путем вычисления трех значений цвета следующим образом: (resr+

Figure 00000004
), (resg+
Figure 00000005
) и (resb+
Figure 00000006
).In step 154, three color values for the current vertex are computed (respectively restored) from their prediction and the corresponding decoded residuals (res r , res g , res b ). Thus, the current vertex is restored by calculating three color values as follows: (res r +
Figure 00000004
), (res g +
Figure 00000005
) and (res b +
Figure 00000006
).

Октант уровня 0 не имеет родительского октанта. Точно так же первый октант в списке кодирования октантов не имеет предшествующего октанта. Следовательно, каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V этого октанта, предсказывается из известного значения цвета, например значения 128. В соответствии с разновидностью каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V этого октанта, предсказывается из уже восстановленных значений цвета, ассоциированных с соседними вершинами, которые принадлежат тому же октанту.Level 0 octant has no parent octant. Similarly, the first octant in the octant encoding list has no preceding octant. Therefore, each of the three color values (V r , V g , V b ) associated with the current vertex V of this octant is predicted from a known color value, such as the value 128. According to the variant, each of the three color values (V r , V g , V b ) associated with the current vertex V of this octant is predicted from the already recovered color values associated with neighboring vertices that belong to the same octant.

Способ применяется рекурсивно для декодирования всей 3D LUT. Вершины, которые принадлежат двум октантам, предпочтительно декодируются только один раз. В одной разновидности вершины, совместно используемые между несколькими октантами, декодируются более одного раза. В частности, вершины декодируются несколько раз разными значениями, по одному значению для каждого октанта, которому она принадлежит. Со ссылкой на фиг.9D вершина V1 совместно используется между октантом (j) и октантом (j-1). Поэтому V1 можно декодировать дважды: одним значением для октанта (j), а другим значением – для октанта (j-1). Первое значение и другое значение могут отличаться. Точно так же вершину V2, которая совместно используется между 4 октантами, можно декодировать 4 раза.The method is applied recursively to decode the entire 3D LUT. Vertices that belong to two octants are preferably only decoded once. In one variation, vertices shared between multiple octants are decoded more than once. In particular, a vertex is decoded several times with different values, one value for each octant to which it belongs. Referring to FIG. 9D, V1 is shared between an octant (j) and an octant (j-1). Therefore, V1 can be decoded twice, with one value for octant (j) and another value for octant (j-1). The first value and the other value may be different. Similarly, a V2 node that is shared between 4 octants can be decoded 4 times.

Как только декодированы все вершины текущего октанта (уровень N), декодируются вершины дочерних (уровень N+1) октантов у текущего октанта.Once all vertices of the current octant (level N) have been decoded, the vertices of the child (level N+1) octants of the current octant are decoded.

В соответствии с разновидностью декодируется флаг разделения для текущего октанта уровня N, который указывает, декодируются ли рекурсивно его непосредственные потомки (то есть потомки уровня N+1), или подразумеваются ли равными нулю все остатки вершин всех еще не декодированных потомков (то есть потомков уровня N+k при k>0).According to the flavor, a split flag is decoded for the current level N octant, which indicates whether its immediate descendants (i.e., level N+1 children) are recursively decoded, or whether all vertex residues of all yet undecoded descendants (i.e., level descendants) are assumed to be zero. N+k for k>0).

В соответствии с разновидностью способ декодирования дополнительно содержит декодирование из потока F битов типа интерполяции, используемого для предсказания по меньшей мере одного значения цвета у вершины. Точнее говоря, из потока битов декодируется индекс, который идентифицирует тип интерполяции. В качестве примера индекс 0 идентифицирует трилинейную интерполяцию, индекс 1 идентифицирует призматическую интерполяцию, индекс 2 идентифицирует пирамидальную интерполяцию, а индекс 3 идентифицирует тетраэдральную интерполяцию.According to a variation, the decoding method further comprises decoding from an interpolation type bit stream F used to predict at least one color value at a vertex. More specifically, an index is decoded from the bitstream that identifies the type of interpolation. As an example, index 0 identifies trilinear interpolation, index 1 identifies prismatic interpolation, index 2 identifies pyramidal interpolation, and index 3 identifies tetrahedral interpolation.

3D LUT декодируется, например, из VPS, SPS, PPS или из одного сообщения SEI, которые заданы в стандартах кодирования видео AVC, HEVC, SVC или SHVC. Размер LUT при желании также декодируется из потока битов. 3D LUT декодируется, например, из сообщения SEI, заданного ниже.The 3D LUT is decoded, for example, from a VPS, SPS, PPS, or from a single SEI message, which are defined in the AVC, HEVC, SVC, or SHVC video coding standards. The LUT size is optionally decoded from the bitstream as well. The 3D LUT is decoded, for example, from the SEI message given below.

В соответствии с разновидностью n 3D LUT, состоящих из вершин с 1 значением цвета, декодируются вместо декодирования одной 3D LUT, состоящей из вершин с n значениями цвета, например n=3.According to a variant, n 3D LUTs consisting of vertices with 1 color value are decoded instead of decoding one 3D LUT consisting of vertices with n color values, for example, n=3.

В соответствии с разновидностью, когда размер 3D LUT равен S=2, декодируется флаг, указывающий декодеру вычислить матрицу 3x3 коэффициентов усиления плюс смещение из декодированной 3D LUT и использовать ее в качестве CMF вместо 3D LUT.According to a variant, when the 3D LUT size is S=2, a flag is decoded to tell the decoder to calculate a 3x3 matrix of gains plus an offset from the decoded 3D LUT and use it as the CMF instead of the 3D LUT.

Такие же варианты, раскрытые по отношению к способу кодирования в соответствии с фиг.4 и 6, могут применяться на стороне декодера.The same options disclosed with respect to the encoding method according to FIGS. 4 and 6 can be applied on the decoder side.

На фиг.4, 6, 10 и 11 представленные прямоугольники являются исключительно функциональными объектами, которые не обязательно соответствуют физическим отдельным объектам. Как поймет специалист в данной области техники, аспекты настоящих принципов можно воплотить в виде системы, способа либо машиночитаемого носителя. Соответственно, аспекты настоящих принципов могут принимать вид полностью аппаратного варианта осуществления, полностью программного варианта осуществления (включая микропрограммное обеспечение, резидентное программное обеспечение, микрокод и так далее) или варианта осуществления, объединяющего программные и аппаратные аспекты, которые в этом документе можно в целом называть "схемой", "модулем" или "системой". Кроме того, аспекты настоящих принципов могут принимать вид машиночитаемого носителя информации. Может использоваться любое сочетание одного или нескольких машиночитаемых носителей информации.4, 6, 10 and 11, the rectangles shown are purely functional objects that do not necessarily correspond to physical individual objects. As one skilled in the art will appreciate, aspects of the present principles may be embodied in a system, method, or computer-readable medium. Accordingly, aspects of these principles may take the form of an all-hardware implementation, an all-software implementation (including firmware, resident software, microcode, and so on), or an implementation that combines software and hardware aspects, which may be collectively referred to in this document as " circuit", "module", or "system". In addition, aspects of these principles may take the form of a computer-readable storage medium. Any combination of one or more computer-readable media may be used.

Блок-схема алгоритма и/или блок-схемы на фигурах иллюстрируют конфигурацию, работу и функциональные возможности у возможных реализаций систем, способов и компьютерных программных продуктов в соответствии с различными вариантами осуществления настоящего изобретения. В этой связи каждый блок на блок-схеме алгоритма или блок-схемах может представлять собой модуль, сегмент или часть кода, который (которая) содержит одну или несколько исполняемых команд для реализации заданной логической функции (функций). Также следует отметить, что в некоторых альтернативных реализациях функции, указанные в блоке, могут совершаться не в том порядке, указанном на фигурах. Например, показанные последовательно два блока фактически могут исполняться практически одновременно, или блоки иногда могут исполняться в обратном порядке, или блоки могут исполняться в альтернативном порядке в зависимости от заложенных функциональных возможностей. Также отметим, что каждый блок из блок-схем и/или блок-схемы алгоритма и сочетания блоков на блок-схемах и/или блок-схеме алгоритма можно реализовать с помощью специализированных аппаратных систем, которые выполняют заданные функции и/или действия, либо сочетаний специализированных аппаратных средств и компьютерных команд. Хотя и не описано явно, настоящие варианты осуществления могут применяться в любой комбинации или подкомбинации.The flowchart and/or block diagrams in the figures illustrate the configuration, operation, and functionality of possible implementations of systems, methods, and computer program products in accordance with various embodiments of the present invention. In this regard, each block in the flowchart or flowcharts may be a module, segment, or piece of code that contains one or more executable instructions to implement the given logical function(s). It should also be noted that in some alternative implementations, the functions specified in the block may not be performed in the order shown in the figures. For example, two blocks shown in sequence may actually be executed almost simultaneously, or blocks may sometimes be executed in reverse order, or blocks may be executed in an alternate order depending on the underlying functionality. Also note that each block of the block diagrams and/or block diagram of the algorithm and combinations of blocks on the block diagrams and/or block diagram of the algorithm can be implemented using specialized hardware systems that perform specified functions and/or actions, or combinations. specialized hardware and computer commands. Although not explicitly described, the present embodiments may be used in any combination or subcombination.

Также раскрывается поток битов, который кодирует LUT, например 3D LUT. Поток битов, созданный по способу кодирования из фигуры, кодирующий по меньшей мере LUT, заданную в виде сетки вершин, где по меньшей мере одно значение цвета ассоциируется с каждой вершиной сетки, где упомянутый поток битов содержит кодированный в нем по меньшей мере один остаток, вычисленный между упомянутым по меньшей мере одним значением цвета текущей вершины и его предсказанием.Also disclosed is a bitstream that encodes a LUT, such as a 3D LUT. A bitstream generated by a figure encoding method encoding at least a LUT defined as a grid of vertices, where at least one color value is associated with each grid vertex, where said bitstream contains encoded therein at least one residue computed between said at least one color value of the current vertex and its prediction.

Примерный вариант осуществления предлагается в инфраструктуре стандарта кодирования HEVC, заданного в документе JCTVC-L1003 от Объединенной команды по кодированию видео (JCT-VC) из SG16 WP3 ITU-T и JTC1/SC29/WG11 ISO/IEC, или стандарта кодирования SHVC, который является масштабируемым расширением стандарта кодирования HEVC, заданным в документе JCTVC-L1008 от Объединенной команды по кодированию видео (JCT-VC) из SG16 WP3 ITU-T и JTC1/SC29/WG11 ISO/IEC. Стандарт задает синтаксис, которому обязан соответствовать любой поток кодированных данных, чтобы быть совместимым с этим стандартом. Синтаксис задает, в частности, то, как кодируются различные элементы информации (например, данные, относящиеся к изображениям, включенным в последовательность, векторам движения и т. п.). Применительно к стандарту кодирования SHVC LUT можно кодировать в PPS или в VPS. Синтаксический элемент use_color_prediction используется для указания использования предсказания цвета в текущем изображении, как показано в Таблице 1.An exemplary embodiment is proposed in the framework of the HEVC coding standard specified in JCTVC-L1003 from the Joint Video Coding Team (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, or the SHVC coding standard, which is a scalable extension to the HEVC coding standard defined in document JCTVC-L1008 from the Joint Video Coding Team (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11. The standard specifies the syntax that any encoded data stream must conform to in order to be compatible with this standard. The syntax specifies, in particular, how the various elements of information (eg, data related to images included in the sequence, motion vectors, etc.) are encoded. With respect to the coding standard, SHVC LUTs can be encoded in PPS or VPS. The use_color_prediction syntax element is used to indicate the use of color prediction in the current image, as shown in Table 1.

use_color_predictionuse_color_prediction if(use_color_prediction)if(use_color_prediction) 3D_ LUT_ color_data ( )3D_LUT_color_data ( ) rbsp_trailing_bits( )rbsp_trailing_bits( ) Таблица 1
сигнализация параметров предсказания
Table 1
prediction parameter signaling

Если флаг use_color_prediction равен "1", то вызывается функция 3D_ LUT_ color_data, чтобы сигнализировать данные 3D LUT, которые показаны в Таблице 2.If the use_color_prediction flag is "1", then the 3D_LUT_color_data function is called to signal the 3D LUT data shown in Table 2.

3D_ LUT_ color_data ( ) {3D_LUT_color_data ( ) { ДескрипторDescriptor nbpCodenbpCode u(3)u(3) coding_octant(0, 0,0,0)coding_octant(0, 0,0,0) }} Таблица 2
кодирование данных о цвете 3D LUT
table 2
3D LUT color data encoding

nbpCode указывает размер 3D LUT, который перечислен в Таблице 4 для заданного значения nbpCode. Значение квантователя может кодироваться с помощью функции 3D_ LUT_ color_data().nbpCode indicates the size of the 3D LUT, which is listed in Table 4 for a given nbpCode value. The quantizer value can be encoded using the 3D_LUT_color_data() function.

В соответствии с разновидностью 3D_ LUT_ color_data ( ) задается в Таблице 3 следующим образом.According to the variant 3D_ LUT_ color_data ( ) is set in Table 3 as follows.

3D_ LUT_ color_data ( ) {3D_LUT_color_data ( ) { ДескрипторDescriptor nbpCodenbpCode u(3)u(3) NbitsPerSampleNbitsPerSample u(5)u(5) coding_octant(0, 0,0,0)coding_octant(0, 0,0,0) }} Таблица 3
кодирование данных о цвете 3D LUT
Table 3
3D LUT color data encoding

nbpCode указывает размер 3D LUT, который перечислен в Таблице 4 для заданного значения nbpCode. Значение квантователя может кодироваться с помощью функции 3D_ LUT_ color_data().nbpCode indicates the size of the 3D LUT, which is listed in Table 4 for a given nbpCode value. The quantizer value can be encoded using the 3D_LUT_color_data() function.

NbitsPerSample указывает количество битов, используемое для представления значений цвета.NbitsPerSample specifies the number of bits used to represent color values.

nbpCodenbpCode размер 3D LUT3D LUT size 00 22 1one 33 22 55 33 99 4four 1717 55 3333 Таблица 4
интерпретация nbpCode
Table 4
interpretation of nbpCode

Декодирование октанта (слой, y,u,v) является рекурсивной функцией, как показано в Таблице 4. Каждый октант состоит из 8 вершин, ассоциированных с флагом (encoded_flag[i]), указывающим, кодируются ли остаточные значения цвета, или все они подразумеваются равными нулю. Значения цвета восстанавливаются путем сложения остатков с предсказанием значений цвета. Предсказание значений цвета вычисляется с использованием, например, трилинейной интерполяции 8 соседних вершин с layer_id-1.The decoding of an octant (layer, y,u,v) is a recursive function, as shown in Table 4. Each octant consists of 8 vertices associated with a flag (encoded_flag[i]) indicating whether the residual color values are encoded or all of them are implied. zero. The color values are recovered by adding the residuals with the predicted color values. The color value prediction is calculated using, for example, trilinear interpolation of 8 adjacent vertices with layer_id-1.

coding_octant ( layer_id, y,u,v) {coding_octant ( layer_id, y, u, v) { ДескрипторDescriptor for( i=0; i < 8 ; i++ ) {for( i=0; i < 8 ; i++ ) { encoded_flag[i]encoded_flag[i] u(1)u(1) if ( encoded_flag[i] ) {if ( encoded_flag[i] ) { resY[j]resY[j] ue(v)ue(v) resU[j]reU[j] ue(v)ue(v) resV[j]resV[j] ue(v)ue(v) }} }} split_flagsplit_flag u(1)u(1) if ( split_flag ) {if (split_flag) { for( i=0; i < 8 ; i++ ) {for( i=0; i < 8 ; i++ ) { coding_octant ( layer_id+1, y+dy[i],u+du[i],v+dv[i])coding_octant ( layer_id+1, y+dy[i],u+du[i],v+dv[i]) }} }} }} Таблица 5
синтаксические элементы для coding_octant()
Table 5
syntax elements for coding_octant()

В соответствии с другим преимущественным вариантом осуществления LUT кодируется в сообщении SEI (SEI означает "дополнительную информацию улучшения"). Стандарт HEVC в Приложении D задает способ, которым кодируется дополнительная информация, называемая SEI. На эту дополнительную информацию ссылаются с помощью поля payloadType в синтаксисе. Сообщения SEI участвуют, например, в связанных с отображением процессах. Отметим, что если устройство декодирования не обладает функциональными возможностями, необходимыми для ее использования, то эта информация игнорируется. В соответствии с конкретным вариантом осуществления изобретения задается новый тип сообщения SEI, чтобы кодировать дополнительную информацию, относящуюся к 3D LUT. С этой целью новое значение для поля payloadType задается из числа еще не используемых значений (например, payloadType равно 24).According to another advantageous embodiment, the LUT is encoded in the SEI message (SEI stands for "Additional Enhancement Information"). The HEVC standard in Annex D specifies the way in which additional information, called SEI, is encoded. This additional information is referenced using the payloadType field in the syntax. SEI messages are involved, for example, in mapping-related processes. Note that if the decoding device does not have the functionality necessary to use it, then this information is ignored. In accordance with a specific embodiment of the invention, a new SEI message type is defined to encode additional information related to the 3D LUT. To this end, the new value for the payloadType field is set from among the values not yet used (for example, payloadType is 24).

Синтаксис данных SEI (то есть sei_payload) расширяется следующим образом:The SEI data syntax (i.e. sei_payload) is expanded as follows:

color_mapping_info( payloadSize ) {color_mapping_info( payloadSize ) { ДескрипторDescriptor color_map_idcolor_map_id ue(v)ue(v) color_map_cancel_flagcolor_map_cancel_flag u(1)u(1) if( !color_map_cancel_flag ) {if( !color_map_cancel_flag ) { color_map_repetition_periodcolor_map_repetition_period ue(v)ue(v) color_description_present_flagcolor_description_present_flag u(1)u(1) If (colour_description_present_flag) {If (colour_description_present_flag) { color_primaries_input_idcolor_primaries_input_id u(8)u(8) color_primaries_output_idcolor_primaries_output_id u(8)u(8) }} color_ output_rgbcolor_output_rgb u(1)u(1) lut_bit_depth_minus8lut_bit_depth_minus8 u(4)u(4) 3D_ LUT_ color_data ( )3D_LUT_color_data ( ) }} }} Таблица 6
сообщение SEI отображения цветов
Table 6
color display SEI message

В соответствии с разновидностью сообщение SEI дополнительно содержит индикатор color_interpolator_id, например, после color_description_present_flag, чье значение указывает тип интерполяции, который задан в Таблице 7.According to the flavor, the SEI message further contains a color_interpolator_id indicator, for example, after the color_description_present_flag, whose value indicates the type of interpolation that is specified in Table 7.

color_interpolator_idcolor_interpolator_id размер 3D LUT 3D LUT size 00 Трилинейныйtrilinear 1one Тетраэдральныйtetrahedral Таблица 7
тип интерполяции
Table 7
interpolation type

Это сообщение SEI предоставляет информацию для разрешения повторного отображения выборок цвета у выходных декодированных изображений для адаптации к конкретным средам отображения. Процесс повторного отображения отображает кодированные выборочные значения в цветовом пространстве RGB в целевые выборочные значения. Отображения выражаются либо в области яркости, либо области цветового пространства RGB и должны применяться соответственно к компоненте яркости либо к каждой компоненте RGB, порожденной преобразованием цветового пространства у декодированного изображения.This SEI message provides information for allowing re-display of color samples from output decoded pictures to adapt to specific display environments. The remapping process maps the encoded sample values in the RGB color space to the target sample values. The mappings are expressed in either the luminance or RGB color space domain and must be applied to either the luma component or each RGB component generated by the color space transform of the decoded image, respectively.

3D_ LUT_ color_data ( ) задается в Таблице 2 или 3.3D_ LUT_ color_data ( ) is specified in Table 2 or 3.

Декодированная 3D LUT применяется к декодированным изображениям, принадлежащим слою, идентифицированному, например, индексом nuh_layer_id в Заголовке блока NAL (см. раздел 7.3.1.2 стандарта кодирования HEVC, заданного в документе JCTVC-L1003 от Объединенной команды по кодированию видео (JCT-VC) из SG16 WP3 ITU-T и JTC1/SC29/WG11 ISO/IEC) в сообщении SEI.The decoded 3D LUT is applied to the decoded pictures belonging to the layer identified, for example, by the index nuh_layer_id in the NAL Unit Header (see section 7.3.1.2 of the HEVC coding standard specified in document JCTVC-L1003 from the Joint Video Coding Team (JCT-VC) of SG16 WP3 ITU-T and JTC1/SC29/WG11 ISO/IEC) in the SEI message.

color_map_id содержит идентифицирующий номер, который может использоваться для идентификации предназначения модели отображения цветов. Значения color_map_id могут использоваться так, как определено приложением. color_map_id может использоваться для поддержки операций отображения цветов, которые подходят для разных сценариев отображения. Например, разные значения color_map_id могут соответствовать разным битовым глубинам отображения.color_map_id contains an identifying number that can be used to identify the purpose of the color mapping model. Color_map_id values can be used as defined by the application. color_map_id can be used to support color mapping operations that are suitable for different display scenarios. For example, different color_map_id values may correspond to different mapping bit depths.

color_map_cancel_flag, равный 1, указывает, что сообщение SEI с информацией отображения цветов отменяет наличие любого предыдущего сообщения SEI с информацией отображения цветов в порядке вывода. color_map_cancel_flag, равный 0, указывает, что информация отображения цветов идет далее.color_map_cancel_flag equal to 1 indicates that the color mapping information SEI message cancels the presence of any previous color mapping information SEI message in the output order. color_map_cancel_flag equal to 0 indicates that the color mapping information goes on.

color_map_repetition_period задает наличие сообщения SEI с информацией отображения цветов и может задавать интервал счетчика последовательности изображений, в пределах которого в потоке битов должно присутствовать другое сообщение SEI с информацией отображения цветов с таким же значением color_map_id либо конец кодированной видеопоследовательности. color_map_repetition_period, равный 0, задает, что информация отображения цветов применяется только к текущему декодированному изображению.color_map_repetition_period specifies the presence of a color mapping information SEI message, and may specify an image sequence counter interval within which another color mapping information SEI message with the same color_map_id value or the end of an encoded video sequence must be present in the bitstream. color_map_repetition_period equal to 0 specifies that the color mapping information is applied only to the current decoded image.

color_map_repetition_period, равный 1, задает, что информация отображения цветов присутствует в порядке вывода до тех пор, пока выполняется любое из следующих условий:color_map_repetition_period equal to 1 specifies that color mapping information is present in the output order as long as any of the following conditions are met:

– Начинается новая кодированная видеопоследовательность.– A new encoded video sequence starts.

– Выводится изображение в блоке доступа, содержащем сообщение SEI с информацией отображения цветов с таким же значением color_map_id, имеющее счетчик последовательности изображений (известный как POC) больше, чем POC текущего декодированного изображения, обозначенный PicOrderCnt( CurrPic ).– A picture is output in an access block containing an SEI message with color mapping information with the same color_map_id value, having a picture sequence counter (known as POC) greater than the POC of the current decoded picture, denoted by PicOrderCnt( CurrPic ).

color_map_repetition_period, равный 0 или равный 1, указывает, что может присутствовать или не присутствовать другое сообщение SEI с информацией отображения цветов с таким же значением color_map_id.color_map_repetition_period equal to 0 or equal to 1 indicates that another SEI message with color mapping information with the same color_map_id value may or may not be present.

color_map_repetition_period больше 1 задает, что информация отображения цветов присутствует до тех пор, пока выполняется любое из следующих условий:color_map_repetition_period greater than 1 specifies that color mapping information is present as long as any of the following conditions are met:

– Начинается новая кодированная видеопоследовательность.– A new encoded video sequence starts.

– Выводится изображение в блоке доступа, содержащем сообщение SEI с информацией отображения цветов с таким же значением color_map_id, имеющее POC больше PicOrderCnt( CurrPic ) и меньше либо равный PicOrderCnt( CurrPic )+color_map_repetition_period.– An image is displayed in an access block containing an SEI message with color mapping information with the same color_map_id value, having a POC greater than PicOrderCnt( CurrPic ) and less than or equal to PicOrderCnt( CurrPic )+color_map_repetition_period.

color_map_repetition_period больше 1 указывает, что должно присутствовать другое сообщение SEI с информацией отображения цветов с таким же значением color_map_id для изображения в блоке доступа, который выводится, имеющее POC больше PicOrderCnt( CurrPic ) и меньше либо равный PicOrderCnt( CurrPic )+color_map_repetition_period; пока не закончится поток битов или не начнется новая кодированная видеопоследовательность, без вывода такого изображения.color_map_repetition_period greater than 1 indicates that another SEI message with color mapping information with the same color_map_id value should be present for an image in an access block that is output having a POC greater than PicOrderCnt( CurrPic ) and less than or equal to PicOrderCnt( CurrPic )+color_map_repetition_period; until the bitstream ends or a new encoded video sequence begins, without outputting such an image.

color_description_present_flag, равный 1, задает, что присутствуют colour_primaries_input_id и colour_primaries_output_id. colour_description_present_flag, равный 0, задает, что colour_primaries_input_id и colour_primaries_output_id отсутствуют.color_description_present_flag equal to 1 specifies that color_primaries_input_id and color_primaries_output_id are present. colour_description_present_flag equal to 0 specifies that colour_primaries_input_id and colour_primaries_output_id are not present.

color_primaries_input_id указывает координаты цветности у основных цветов источника, как задано в Таблице 8 на основе определения CIE 1931×и y, которое задано ISO 11664-1.color_primaries_input_id indicates the chromaticity coordinates of the primary colors of the source as given in Table 8 based on the CIE 1931x and y definition as given by ISO 11664-1.

color_primaries_output_id указывает координаты цветности у отображенных основных цветов, как задано в Таблице 8 на основе определения CIE 1931×и y, которое задано ISO 11664-1, как только применяется цветовая 3D lut.color_primaries_output_id indicates the chromaticity coordinates of the rendered primary colors as given in Table 8 based on the CIE 1931x and y definition that is given by ISO 11664-1 once the color 3D lut is applied.

color_output_rgb, равный 1, задает, что выходные выборки цвета являются сигналами яркости и цветности. color_output_rgb, равный 0, задает, что выходные выборки цвета являются значениями зеленого, красного, синего.color_output_rgb equal to 1 specifies that the output color samples are luminance and chrominance signals. color_output_rgb equal to 0 specifies that the output color samples are green, red, blue values.

lut_bit_depth_minus8 задает битовую глубину выборок 3D LUT.lut_bit_depth_minus8 sets the bit depth of the 3D LUT samples.

nbp_code указывает размер nbp 3D LUT, который перечислен в Таблице 4 для заданного значения nbp_code.nbp_code indicates the size of the nbp 3D LUT, which is listed in Table 4 for a given value of nbp_code.

Результатом декодирования 3D LUT является 3-мерный массив LUT размера nbp×nbp×nbp. Каждый элемент массива LUT называется вершиной и ассоциируется с 3 восстановленными выборочными значениями (recSamplesY, recSamplesU, recSamplesV) с битовой глубиной, равной (lut_bit_depth_minus8+8). Говорят, что вершина lut[i][j][k] принадлежит слою layer_id, если значения i%(nbp>>layer_id), j%(nbp>>layer_id), k%(nbp>>layer_id) равны нулю. Одна вершина может принадлежать нескольким слоям. Октант слоя layer_id состоит из 8 соседних вершин, принадлежащих layer_id (фиг.14).The result of 3D LUT decoding is a 3D LUT array of size nbp×nbp×nbp. Each element of the LUT array is called a vertex and is associated with 3 recovered sample values (recSamplesY, recSamplesU, recSamplesV) with bit depth equal to (lut_bit_depth_minus8+8). A vertex lut[i][j][k] is said to belong to layer_id if i%(nbp>>layer_id), j%(nbp>>layer_id), k%(nbp>>layer_id) are zero. One vertex can belong to several layers. The layer_id layer octant consists of 8 adjacent vertices belonging to the layer_id (FIG. 14).

Декодирование октанта (layer_id, y,u,v) является рекурсивной функцией. Каждый октант состоит из 8 вершин (i=0, … 7), ассоциированных с флагом (encoded_flag[i]), указывающим, кодируются ли значения остаточных компонент (resY[i],resU[i], resV[i]), или все они подразумеваются равными нулю. Значения компонент восстанавливаются путем сложения остатков с предсказанием значений компонент. Предсказание значений компонент вычисляется с использованием трилинейной интерполяции 8 соседних вершин с layer_id-1. Как только вершина восстановлена, она помечается как восстановленная.Octant decoding (layer_id, y,u,v) is a recursive function. Each octant consists of 8 vertices (i=0, … 7) associated with a flag (encoded_flag[i]) indicating whether the values of the residual components are encoded (resY[i],resU[i], resV[i]), or they are all assumed to be zero. The component values are recovered by adding the residuals with predicted component values. Component value prediction is computed using trilinear interpolation of 8 adjacent vertices with layer_id-1. Once a vertex is restored, it is marked as restored.

Где (y+dy[i]), (u+du[i]) и (v+dv[i]) являются координатами 8 дочерних октантов (координатами первой вершины цвета 3D) для текущего октанта (имеющего (y,u,v) в качестве координат первой вершины (i=0)). Значения dy[i], du[i] и dv[i] для данного слоя изображаются в Таблице 9.Where (y+dy[i]), (u+du[i]), and (v+dv[i]) are the coordinates of the 8 child octants (the coordinates of the first vertex of the 3D color) for the current octant (having (y,u,v ) as the coordinates of the first vertex (i=0)). The values of dy[i], du[i] and dv[i] for this layer are shown in Table 9.

Figure 00000011
Figure 00000011

ii dy[i]dy[i] du[i]du[i] dv[i]dv[i] 00 00 00 00 1one 00 00 nbp >> layer_idnbp >> layer_id 22 00 nbp >> layer_idnbp >> layer_id 00 33 00 nbp >> layer_idnbp >> layer_id nbp >> layer_idnbp >> layer_id 4four nbp >> layer_idnbp >> layer_id 00 00 55 nbp >> layer_idnbp >> layer_id 00 nbp >> layer_idnbp >> layer_id 66 nbp >> layer_idnbp >> layer_id nbp >> layer_idnbp >> layer_id 00 77 nbp >> layer_idnbp >> layer_id nbp >> layer_idnbp >> layer_id nbp >> layer_idnbp >> layer_id Таблица 9
значения dy[i], du[i] и dv[i] в функции индекса i для вершин, принадлежащих слою=layer_id.
Table 9
the values dy[i], du[i] and dv[i] in the index function i for vertices belonging to layer=layer_id.

Восстановленные выборки цветовой 3D LUT (recSamplesY[i], recSamplesU[i], recSamplesV[i]) для вершины ( (y+dy[i]), (u+du[i]), (v+dv[i]) ), принадлежащей октанту слоя=layer_id, имеют вид:Restored 3D color LUT samples (recSamplesY[i], recSamplesU[i], recSamplesV[i]) for vertex ( (y+dy[i]), (u+du[i]), (v+dv[i]) ) belonging to layer octant=layer_id have the form:

recSamplesY[i]=resY[i]+predSamplesY[i]recSamplesY[i]=resY[i]+predSamplesY[i]

где значение predSampleY[i] выводится с использованием трилинейной интерполяции с вершинами в октанте слоя=layer_id-1, который содержит текущий октант.where the value of predSampleY[i] is derived using trilinear interpolation with vertices in the layer octant=layer_id-1 that contains the current octant.

Фиг.12 представляет примерную архитектуру кодера 1. Кодер конфигурируется для исполнения этапов способа кодирования. Кодер 1 содержит следующие элементы, которые соединяются шиной 64 данных и адреса:12 represents an exemplary architecture of encoder 1. The encoder is configured to execute the steps of the encoding method. Encoder 1 contains the following elements, which are connected by data and address bus 64:

- микропроцессор 61 (или CPU), который является, например, DSP (или цифровым процессором сигналов);- a microprocessor 61 (or CPU), which is, for example, a DSP (or digital signal processor);

- ROM 62 (или постоянное запоминающее устройство);- ROM 62 (or Read Only Memory);

- RAM 63 (или оперативное запоминающее устройство);- RAM 63 (or random access memory);

- одно или несколько устройств 65 I/O (ввод/вывод), например клавиатуру, мышь, веб-камеру; и- one or more devices 65 I / O (input / output), such as a keyboard, mouse, webcam; and

- источник 66 питания.- power source 66.

В соответствии с разновидностью источник 66 питания является внешним по отношению к кодеру. Каждый из этих элементов на фиг.12 известен специалистам в данной области техники и дополнительно раскрываться не будет. В каждом упомянутом запоминающем устройстве слово "регистр", используемое в спецификации, обозначает в каждом из упомянутых запоминающих устройств зону памяти небольшой емкости (некоторые двоичный данные), а также зону памяти большой емкости (позволяющую хранить всю программу либо все или часть данных, представляющих вычисленные данные или данные для отображения). ROM 62 содержит программу и параметры кодирования (например, пороговую величину TH). Алгоритм способа кодирования в соответствии с изобретением хранится в ROM 62. При включении CPU 61 загружает программу 620 в RAM и исполняет соответствующие команды.According to the variation, the power supply 66 is external to the encoder. Each of these elements in FIG. 12 is known to those skilled in the art and will not be further disclosed. In each of said storage devices, the word "register" as used in the specification refers to, in each of said storage devices, a small capacity memory area (some binary data) as well as a large capacity memory area (allowing to store the entire program or all or part of the data representing computed data or data to display). ROM 62 contains the program and encoding parameters (eg threshold TH). The algorithm of the encoding method according to the invention is stored in ROM 62. When turned on, the CPU 61 loads the program 620 into RAM and executes the corresponding instructions.

RAM 63 содержит в регистре программу, исполняемую CPU 61 и загружаемую после включения кодера 1, входные данные в регистр, кодированные данные в разном состоянии способа кодирования в регистре и другие переменные, используемые в регистре для кодирования.The RAM 63 contains in the register the program executable by the CPU 61 and loaded after turning on the encoder 1, input data to the register, encoded data in a different state of the encoding method in the register, and other variables used in the register for encoding.

Фиг.13 представляет примерную архитектуру декодера 2. Декодер конфигурируется для исполнения этапов способа декодирования. Декодер 2 содержит следующие элементы, которые соединяются шиной 74 данных и адреса:13 represents an exemplary architecture of a decoder 2. The decoder is configured to execute the steps of the decoding method. Decoder 2 contains the following elements, which are connected by data and address bus 74:

- микропроцессор 71 (или CPU), который является, например, DSP (или цифровым процессором сигналов);- a microprocessor 71 (or CPU), which is, for example, a DSP (or digital signal processor);

- ROM 72 (или постоянное запоминающее устройство);- ROM 72 (or Read Only Memory);

- RAM 73 (или оперативное запоминающее устройство);- RAM 73 (or random access memory);

- интерфейс 75 I/O для приема от приложения данных для передачи; и- I/O interface 75 for receiving data from the application for transmission; and

- батарею 76.- battery 76.

В соответствии с разновидностью батарея 76 является внешней по отношению к декодеру. Каждый из этих элементов на фиг.13 известен специалистам в данной области техники и дополнительно раскрываться не будет. В каждом упомянутом запоминающем устройстве слово "регистр", используемое в спецификации, может соответствовать области небольшой емкости (несколько бит) или очень большой области (например, вся программа либо большой объем принятых или декодированных данных).ROM 72 содержит по меньшей мере программу и параметры декодера. Алгоритм способа декодирования в соответствии с изобретением хранится в ROM 72. При включении CPU 71 загружает программу 720 в RAM и исполняет соответствующие команды.According to the variation, the battery 76 is external to the decoder. Each of these elements in Fig. 13 is known to those skilled in the art and will not be further disclosed. In each mentioned memory device, the word "register" used in the specification can correspond to a small capacity area (a few bits) or a very large area (for example, the entire program or a large amount of received or decoded data). ROM 72 contains at least the program and parameters decoder. The algorithm of the decoding method according to the invention is stored in ROM 72. When turned on, the CPU 71 loads the program 720 into RAM and executes the corresponding instructions.

RAM 73 содержит в регистре программу, исполняемую CPU 71 и загружаемую после включения декодера 2, входные данные в регистр, декодированные данные в разном состоянии способа декодирования в регистре и другие переменные, используемые в регистре для декодирования.The RAM 73 contains in a register a program executable by the CPU 71 and loaded after turning on the decoder 2, input data to the register, decoded data in a different state of the decoding method in the register, and other variables used in the register for decoding.

Описанные в этом документе реализации можно осуществить, например, в способе или процессе, устройстве, компьютерной программе, потоке данных или сигнале. Даже если реализация обсуждается применительно лишь к одному виду реализации (например, обсуждается только как способ или устройство), реализацию обсуждаемых флагов также можно осуществить в других видах (например, в программе). Устройство можно реализовать, например, в подходящих аппаратных средствах, программном обеспечении и микропрограммном обеспечении. Способы можно реализовать, например, в устройстве, например в процессоре, который относится в общем к устройствам обработки, включая, например, компьютер, микропроцессор, интегральную схему или программируемое логическое устройство. Процессоры также включают в себя устройства связи, например компьютеры, сотовые телефоны, портативные/персональные цифровые помощники ("PDA") и другие устройства, которые упрощают передачу информации между конечными пользователями.The implementations described herein may be implemented in, for example, a method or process, device, computer program, data stream, or signal. Even if an implementation is discussed in relation to only one kind of implementation (eg, discussed only as a method or device), the implementation of the discussed flags can also be done in other forms (eg, in a program). The device can be implemented in suitable hardware, software and firmware, for example. The methods can be implemented, for example, in a device, such as a processor, which refers generally to processing devices, including, for example, a computer, microprocessor, integrated circuit, or programmable logic device. Processors also include communication devices such as computers, cellular phones, portable/personal digital assistants ("PDAs") and other devices that facilitate the transfer of information between end users.

Описанные в этом документе реализации различных процессов и флагов можно осуществить в разном оборудовании или приложениях. Примеры такого оборудования включают в себя кодер, декодер, постпроцессор, обрабатывающий вывод из декодера, препроцессор, предоставляющий ввод в кодер, видеокодер, видеодекодер, видеокодек, веб-сервер, телевизионную приставку, переносной компьютер, персональный компьютер, сотовый телефон, PDA и другие устройства связи. Как должно быть понятно, оборудование может быть мобильным и даже устанавливаться в мобильном транспортном средстве.The implementations of the various processes and flags described in this document may be implemented in different hardware or applications. Examples of such equipment include an encoder, a decoder, a post-processor that processes output from a decoder, a preprocessor that provides input to an encoder, a video encoder, a video decoder, a video codec, a web server, a set-top box, a laptop computer, a personal computer, a cell phone, a PDA, and other devices. connections. As will be appreciated, the equipment may be mobile and even mounted in a mobile vehicle.

Более того, способы можно реализовать с помощью команд, выполняемых процессором, и такие команды (и/или значения данных, созданные реализацией) можно хранить на читаемом процессором носителе, например интегральной схеме, носителе программного обеспечения или другом запоминающем устройстве, например на жестком диске, компакт-диске ("CD"), оптическом диске (например, DVD, часто называемом цифровым универсальным диском или цифровым видеодиском), оперативном запоминающем устройстве ("RAM") или постоянном запоминающем устройстве ("ROM"). Команды могут образовывать прикладную программу, материально воплощенную на читаемом процессором носителе. Команды могут входить в состав, например, аппаратных средств, микропрограммного обеспечения, программного обеспечения или их сочетания. Команды могут входить в состав, например, операционной системы, отдельного приложения или сочетания этих двух вариантов. Поэтому процессор можно описать, например, как устройство, сконфигурированное для осуществления процесса, и как устройство, которое включает в себя читаемый процессором носитель (например, запоминающее устройство), содержащий команды для осуществления процесса. Кроме того, читаемый процессором носитель может хранить созданные реализацией значения данных в дополнение к командам или вместо них.Moreover, the methods can be implemented using instructions executable by the processor, and such instructions (and/or data values generated by the implementation) can be stored on a processor-readable medium, such as an integrated circuit, a software carrier, or other storage device, such as a hard disk, compact disc ("CD"), optical disc (eg, DVD, often referred to as digital versatile disk or digital video disc), random access memory ("RAM") or read only memory ("ROM"). The instructions may constitute an application program tangibly embodied on a processor-readable medium. The instructions may be in, for example, hardware, firmware, software, or a combination thereof. Commands can be part of, for example, the operating system, a single application, or a combination of the two. Therefore, a processor can be described, for example, as a device configured to perform a process and as a device that includes a processor-readable medium (eg, memory) containing instructions for performing the process. In addition, processor-readable media may store implementation-generated data values in addition to or instead of instructions.

Как станет очевидно специалисту в данной области техники, реализации могут порождать ряд сигналов, оформленных для переноса информации, которую можно, например, хранить или передавать. Информация может включать в себя, например, команды для выполнения способа или данные, созданные одной из описанных реализаций. Например, сигнал можно оформить для переноса, в качестве данных, правил для записи или считывания синтаксиса из описанного варианта осуществления или для переноса, в качестве данных, фактических значений синтаксиса, записанных с помощью описанного варианта осуществления. Такой сигнал можно оформить, например, в виде электромагнитной волны (например, с использованием радиочастотной части спектра) или в виде основополосного сигнала. Оформление может включать в себя, например, кодирование потока данных и модулирование несущей с кодированным потоком данных. Информация, которую переносит сигнал, может быть, например, аналоговой или цифровой информацией. Сигнал, как известно, можно передавать по разным проводным или беспроводным линиям связи. Сигнал можно сохранить на читаемом процессором носителе.As will be appreciated by one of ordinary skill in the art, implementations may generate a number of signals designed to carry information that may, for example, be stored or transmitted. The information may include, for example, instructions for performing a method or data generated by one of the described implementations. For example, the signal can be designed to carry, as data, the rules for writing or reading the syntax from the described embodiment, or to carry, as data, the actual syntax values written using the described embodiment. Such a signal can be formed, for example, in the form of an electromagnetic wave (for example, using the radio frequency part of the spectrum) or in the form of a baseband signal. The decorating may include, for example, encoding the data stream and modulating the carrier with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. The signal, as is known, can be transmitted over various wired or wireless communication lines. The signal may be stored on a processor-readable medium.

Описано некоторое количество реализаций. Тем не менее, станет понятно, что можно вносить различные модификации. Например, элементы разных реализаций можно объединять, дополнять, изменять или удалять для создания других реализаций. Более того, средний специалист поймет, что раскрытые структуры и процессы можно заменить другими, и результирующие реализации будут выполнять в основном такую же функцию (функции) в основном таким же способом (способами), чтобы достичь в основном такого же результата (результатов), как и раскрытые реализации. Соответственно, данной заявкой рассматриваются эти и другие реализации. В частности, способ кодирования LUT в соответствии с изобретением можно использовать для кодирования любого вида LUT независимо от типа значений, ассоциированных с каждой вершиной.A number of implementations have been described. However, it will be appreciated that various modifications can be made. For example, elements from different implementations can be combined, added to, modified, or removed to create other implementations. Moreover, one of ordinary skill in the art will appreciate that the disclosed structures and processes can be replaced by others and the resulting implementations will perform substantially the same function(s) in substantially the same manner(s) to achieve substantially the same result(s) as and disclosed implementations. Accordingly, these and other implementations are contemplated by this application. In particular, the LUT encoding method according to the invention can be used to encode any kind of LUT, regardless of the type of values associated with each vertex.

Claims (22)

1. Способ кодирования цветовой 3-мерной справочной таблицы, заданной в виде сетки вершин, с использованием октодерева, причем цветовая 3-мерная справочная таблица хранит по меньшей мере одно значение для каждой вершины, представляющее собой набор входных значений цвета, причем способ содержит этапы, на которых:1. A method for encoding a 3D color lookup table defined as a grid of vertices using an octree, wherein the 3D color lookup table stores at least one value for each vertex, which is a set of color input values, the method comprising the steps, where: кодируют флаг разделения для текущего октанта упомянутого октодерева, указывающий, кодируется ли рекурсивно по меньшей мере один из его непосредственных дочерних октантов;encoding a split flag for the current octant of said octree indicating whether at least one of its immediate child octants is encoded recursively; предсказывают по меньшей мере одно значение для вершины в текущем октанте из восстановления значения(-й) по меньшей мере одной соседней вершины, чтобы получить предсказание;predicting at least one value for a vertex in the current octant from recovering the value(s) of at least one neighboring vertex to obtain a prediction; определяют остаток, вычисленный между упомянутым по меньшей мере одним значением для вершины и упомянутым предсказанием;determining a remainder calculated between said at least one value for the vertex and said prediction; квантуют остаток, чтобы получить квантованный остаток;quantizing the remainder to obtain a quantized remainder; энтропийно кодируют квантованный остаток; иentropy encode the quantized residue; and кодируют непосредственные дочерние октанты упомянутого текущего октанта, если флагом разделения для упомянутого текущего октанта является истина.encoding the immediate child octants of said current octant if the split flag for said current octant is true. 2. Способ по п.1, дополнительно содержащий этап, на котором кодируют двоичный флаг для упомянутой вершины, указывающий, кодируется ли или нет по меньшей мере один остаток для упомянутой вершины.2. The method of claim 1, further comprising encoding a binary flag for said node indicating whether or not at least one residue for said node is encoded. 3. Способ по п.1, в котором упомянутое по меньшей мере одно значение для вершины и упомянутое восстановление значения(-й) для упомянутой соседней вершины являются значениями цвета.3. The method of claim 1, wherein said at least one value for a vertex and said recovery of the value(s) for said neighboring vertex are color values. 4. Способ по п.3, в котором упомянутые значения цвета являются параметрами для преобразования цвета.4. The method of claim 3, wherein said color values are parameters for color conversion. 5. Способ по п.1, в котором упомянутая по меньшей мере одна соседняя вершина, используемая для получения упомянутого восстановления значения(-й) для упомянутой соседней вершины, принадлежит родительскому октанту текущего октанта.5. The method of claim 1, wherein said at least one neighbor node used to obtain said recovery value(s) for said neighbor node belongs to the parent octant of the current octant. 6. Способ декодирования цветовой 3-мерной справочной таблицы, заданной в виде сетки вершин, с использованием октодерева, причем цветовая 3-мерная справочная таблица хранит по меньшей мере одно значение для каждой вершины, представляющее собой набор входных значений цвета, причем способ содержит этапы, на которых:6. A method for decoding a 3D color lookup table defined as a grid of vertices using an octree, the 3D color lookup table storing at least one value for each vertex, which is a set of color input values, the method comprising the steps of where: декодируют флаг разделения для текущего октанта упомянутого октодерева, указывающий, должен ли быть рекурсивно декодирован по меньшей мере один из его непосредственных дочерних октантов;decoding a split flag for the current octant of said octree indicating whether at least one of its immediate child octants should be recursively decoded; предсказывают по меньшей мере одно значение для вершины в текущем октанте из другого значения, полученного из восстановления значения(-й) для по меньшей мере одной соседней вершины, чтобы получить предсказание;predicting at least one value for a vertex in the current octant from another value obtained from recovering the value(s) for at least one neighboring vertex to obtain a prediction; энтропийно декодируют энтропийно кодированный квантованный остаток упомянутого по меньшей мере одного значения для вершины в текущем октанте, чтобы получить квантованный остаток;entropy decoding an entropy encoded quantized residual of said at least one value for a vertex in the current octant to obtain a quantized residual; обратно квантуют квантованный остаток упомянутого по меньшей мере одного значения для вершины в текущем октанте, чтобы получить остаток;back quantizing the quantized residual of said at least one value for a vertex in the current octant to obtain a residual; восстанавливают упомянутое по меньшей мере одно значение для вершины из упомянутого предсказания и остатка; иrestoring said at least one value for the vertex from said prediction and the remainder; and декодируют непосредственные дочерние октанты упомянутого текущего октанта, если флагом разделения для упомянутого текущего октанта является истина.decoding the immediate child octants of said current octant if the split flag for said current octant is true. 7. Способ по п.6, дополнительно содержащий этап, на котором декодируют двоичный флаг для упомянутой вершины, указывающий, должен ли быть декодирован или нет по меньшей мере один остаток для упомянутой вершины.7. The method of claim 6, further comprising decoding a binary flag for said node indicating whether or not at least one residue for said node is to be decoded. 8. Способ по п.6, в котором упомянутое по меньшей мере одно значение для вершины, упомянутое восстановление значения(-й) для упомянутой соседней вершины являются значениями цвета.8. The method of claim 6, wherein said at least one value for a vertex, said recovery value(s) for said neighboring vertex are color values. 9. Способ по п.8, в котором упомянутые значения цвета являются параметрами для преобразования цвета.9. The method of claim 8, wherein said color values are parameters for color conversion. 10. Способ по п.6, в котором упомянутая по меньшей мере одна соседняя вершина, используемая для получения упомянутого восстановления значения(-й) для упомянутой соседней вершины, принадлежит родительскому октанту текущего октанта.10. The method of claim 6, wherein said at least one neighbor node used to obtain said recovery value(s) for said neighbor node belongs to the parent octant of the current octant.
RU2018131947A 2013-04-08 2014-03-17 Encoding method and decoding method lut and corresponding devices RU2772897C2 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
EP13305453 2013-04-08
EP13305453.6 2013-04-08
EP13306010 2013-07-15
EP13306010.3 2013-07-15
EP14305109 2014-01-27
EP14305109.2 2014-01-27

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2015147556A Division RU2667723C2 (en) 2013-04-08 2014-03-17 Method for encoding and method for decoding a lut and corresponding devices

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2022112307A Division RU2022112307A (en) 2013-04-08 2022-05-06 ENCODING METHOD AND DECODING METHOD LUT AND RELATED DEVICES

Publications (3)

Publication Number Publication Date
RU2018131947A RU2018131947A (en) 2018-10-02
RU2018131947A3 RU2018131947A3 (en) 2022-01-18
RU2772897C2 true RU2772897C2 (en) 2022-05-26

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060268297A1 (en) * 2005-05-25 2006-11-30 Lexmark International, Inc. Method for constructing a lookup table for converting data from a first color space to a second color space
US20070242894A1 (en) * 2004-10-08 2007-10-18 Kautzer Matthias Coding scheme for a data stream representing a temporally varying graphics model
RU2324302C1 (en) * 2005-10-19 2008-05-10 Самсунг Электроникс Ко., Лтд. Method for encoding flags in layer using interlayer correlation, method and device for decoding encoded flags
US20090016598A1 (en) * 2006-12-22 2009-01-15 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Method for computer-aided identification of the child octants of a parent octant, which are intersected by a beam, in an octree data structure by means of look-up tables
US20100082703A1 (en) * 2008-09-29 2010-04-01 Microsoft Corporation Octree construction on graphics processing units
US20130034166A1 (en) * 2010-04-08 2013-02-07 Taichiro Shiodera Image encoding method and image decoding method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070242894A1 (en) * 2004-10-08 2007-10-18 Kautzer Matthias Coding scheme for a data stream representing a temporally varying graphics model
US20060268297A1 (en) * 2005-05-25 2006-11-30 Lexmark International, Inc. Method for constructing a lookup table for converting data from a first color space to a second color space
RU2324302C1 (en) * 2005-10-19 2008-05-10 Самсунг Электроникс Ко., Лтд. Method for encoding flags in layer using interlayer correlation, method and device for decoding encoded flags
US20090016598A1 (en) * 2006-12-22 2009-01-15 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Method for computer-aided identification of the child octants of a parent octant, which are intersected by a beam, in an octree data structure by means of look-up tables
US20100082703A1 (en) * 2008-09-29 2010-04-01 Microsoft Corporation Octree construction on graphics processing units
US20130034166A1 (en) * 2010-04-08 2013-02-07 Taichiro Shiodera Image encoding method and image decoding method

Similar Documents

Publication Publication Date Title
JP7233501B2 (en) Methods of encoding and decoding lookup tables and corresponding apparatus
RU2693185C2 (en) Encoding method and colour conversion decoding method and corresponding devices
RU2772897C2 (en) Encoding method and decoding method lut and corresponding devices
US12034971B2 (en) Method for encoding and method for decoding a LUT and corresponding devices