Способ кодирования и способ декодирования lut и соответствующие устройства

Иллюстрации

Показать все

Изобретение относится к вычислительной технике. Технический результат заключается в повышении эффективности кодирования за счет снижения объема кодируемых данных. Способ кодирования цветовой 3-мерной справочной таблицы, ассоциированной с октантами октодерева, содержит этапы, на которых кодируют флаг разделения для текущего октанта, указывающий, кодируется ли рекурсивно по меньшей мере один из его непосредственных дочерних октантов, и кодируют упомянутый текущий октант в ответ на упомянутый флаг разделения. 4 н. и 24 з.п. ф-лы, 18 ил., 9 табл.

Реферат

1. ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Раскрывается способ кодирования Справочной таблицы, заданной в виде сетки вершин, где по меньшей мере одно значение ассоциируется с каждой вершиной сетки. Для примера, значение является значением цвета. Раскрываются соответствующий способ декодирования, устройство кодирования и устройство декодирования.

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

Как изображено на фиг.1, масштабируемое декодирование видео заключается в декодировании (соответственно кодированию) потока битов базового слоя (BL) и по меньшей мере одного потока битов улучшающего слоя (EL). Как правило, изображения EL предсказываются из декодированных изображений BL (по возможности, подвергнутых повышающей дискретизации). Однако, когда изображения EL и изображения BL представляются с помощью разных цветовых пространств и/или по-разному откорректированы по цвету, предсказание менее эффективно. Чтобы улучшить предсказание, известно применение преобразования цветов к декодированным изображениям BL. Точнее говоря, преобразование цветов отображает цвета в цветовом пространстве BL (первом цветовом пространстве) в цвета в цветовом пространстве EL (втором цветовом пространстве), используя информацию о цвете.

Как изображено на фиг.2, при распространении видеоконтента преобразование цветов обычно применяется к декодированным изображениям, чтобы преобразованные декодированные изображения были приспособлены к возможности визуализации у конечного устройства.

Это преобразование цветов также известно как Функция отображения цветов (CMF). CMF приближенно выражается, например, матрицей 3x3 коэффициентов усиления плюс смещение (Модель усиления-смещения). В этом случае CMF задается 12 параметрами. Однако такое приближение CMF не очень точное, потому что оно предполагает модель линейного преобразования. Следовательно, для описания такой CMF используется Справочная таблица 3D (также известная как 3D LUT), без какой-либо заранее заданной модели CMF. 3D LUT гораздо более точная, потому что ее размер можно увеличивать в зависимости от необходимой точности. Однако 3D LUT может, таким образом, представлять огромный набор данных. Передача 3D LUT в приемник потребует, соответственно, кодирования LUT.

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), и т. п. Кодирование всех значений вершин не эффективно, поскольку представляет огромный объем данных.

3. СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Цель изобретения – устранить по меньшей мере один из недостатков известного уровня техники. Раскрывается способ кодирования LUT, заданной в виде сетки вершин. По меньшей мере одно значение ассоциируется с каждой вершиной сетки. Способ кодирования для текущей вершины содержит:

- предсказание по меньшей мере одного значения, ассоциированного с текущей вершиной, из другого значения; и

- кодирование в поток битов по меньшей мере одного остатка, вычисленного между упомянутым по меньшей мере одним значением текущей вершины и его предсказанием в потоке битов.

Преимущественно, что другое значение получается из восстановленных значений, ассоциированных с соседними вершинами.

В соответствии с характерной особенностью изобретения значение является значением цвета. В соответствии с конкретным вариантом осуществления значение цвета соответствует преобразованию цветов. В соответствии с характерной особенностью изобретения значение цвета является параметром усиления или смещением.

В соответствии с конкретным вариантом осуществления LUT является 3D LUT, кодированной с использованием октодерева, и с каждой вершиной сетки ассоциируются три значения. В этом случае соседние вершины, используемые для предсказания, принадлежат родительскому октанту текущего октанта, которому принадлежит текущая вершина.

В соответствии с характерной особенностью изобретения предсказание по меньшей мере одного значения, ассоциированного с текущей вершиной, из восстановленных значений, ассоциированных с соседними вершинами, содержит интерполяцию по меньшей мере одного значения из соответствующих восстановленных значений соседних вершин.

В соответствии с характерной особенностью способ дополнительно содержит кодирование индекса в поток битов, указывающего тип интерполяции.

В соответствии с конкретным вариантом осуществления кодирование по меньшей мере одного остатка содержит квантование по меньшей мере одного остатка с помощью квантователя в квантованный остаток и энтропийное кодирование квантованного остатка в поток битов, и где способ дополнительно содержит кодирование квантователя в поток битов.

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

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

Преимущественно, что для текущего октанта кодируется флаг разделения, указывающий, кодируются ли его непосредственные потомки рекурсивно, или подразумеваются ли равными нулю все остатки вершин всех его еще не кодированных потомков.

Также раскрывается способ декодирования LUT, заданной в виде сетки вершин. По меньшей мере одно значение ассоциируется с каждой вершиной сетки. Способ декодирования для текущей вершины содержит:

- декодирование по меньшей мере одного остатка из потока битов;

- предсказание по меньшей мере одного значения, ассоциированного с текущей вершиной, из другого значения; и

- восстановление по меньшей мере значения текущей вершины из его предсказания и по меньшей мере одного декодированного остатка.

Преимущественно, что другое значение получается из восстановленных значений, ассоциированных с соседними вершинами.

В соответствии с характерной особенностью изобретения значение является значением цвета. В соответствии с конкретным вариантом осуществления значение цвета соответствует преобразованию цветов. В соответствии с характерной особенностью изобретения значение цвета является параметром усиления или смещением.

В соответствии с конкретным вариантом осуществления LUT является 3D LUT, декодированной с использованием октодерева, и с каждой вершиной сетки ассоциируются три значения, соседние вершины принадлежат родительскому октанту текущего октанта, которому принадлежит текущая вершина.

В соответствии с характерной особенностью изобретения предсказание по меньшей мере одного значения, ассоциированного с текущей вершиной, из восстановленных значений, ассоциированных с соседними вершинами, содержит интерполяцию по меньшей мере одного значения из соответствующих восстановленных значений соседних вершин.

В соответствии с характерной особенностью способ дополнительно содержит декодирование индекса из потока битов, указывающего тип интерполяции.

В соответствии с конкретным вариантом осуществления декодирование по меньшей мере одного остатка содержит энтропийное декодирование квантованного остатка из потока битов и обратное квантование квантованного остатка с помощью квантователя в декодированный остаток, и где способ дополнительно содержит декодирование квантователя из потока битов.

В соответствии с характерной особенностью изобретения для каждой вершины декодируется флаг, указывающий, кодируется ли по меньшей мере один остаток для вершины.

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

Преимущественно, что для текущего октанта декодируется флаг разделения, указывающий, декодируются ли его непосредственные потомки рекурсивно, или подразумеваются ли равными нулю все остатки вершин всех его еще не декодированных потомков.

Кодер для кодирования LUT, заданной в виде сетки вершин, где по меньшей мере одно значение ассоциируется с каждой вершиной сетки, содержащий, для текущей вершины:

- средство для предсказания по меньшей мере одного значения, ассоциированного с текущей вершиной, из другого значения; и

- средство для кодирования в поток битов по меньшей мере одного остатка, вычисленного между упомянутым по меньшей мере одним значением текущей вершины и его предсказанием в потоке битов.

Преимущественно, что другое значение получается из восстановленных значений, ассоциированных с соседними вершинами.

Кодер конфигурируется для исполнения этапов способа кодирования.

Декодер для декодирования LUT, заданной в виде сетки вершин, где по меньшей мере одно значение ассоциируется с каждой вершиной сетки, содержащий:

- средство для декодирования по меньшей мере одного остатка, ассоциированного с текущей вершиной, из потока битов;

- средство для предсказания по меньшей мере одного значения, ассоциированного с текущей вершиной, из другого значения; и

- средство для восстановления по меньшей мере значения текущей вершины из его предсказания и по меньшей мере одного декодированного остатка.

Преимущественно, что другое значение получается из восстановленных значений, ассоциированных с соседними вершинами.

Кодер конфигурируется для исполнения этапов способа декодирования.

Раскрывается поток битов, кодирующий по меньшей мере LUT, заданную в виде сетки вершин. По меньшей мере одно значение ассоциируется с каждой вершиной сетки, и поток битов содержит по меньшей мере один кодированный в нем остаток, вычисленный между упомянутым по меньшей мере одним значением текущей вершины и его предсказанием.

4. КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Другие флаги и преимущества изобретения проявятся вместе с нижеследующим описанием некоторых из его вариантов осуществления, причем это описание выполняется применительно к чертежам, на которых:

- фиг.1 иллюстрирует архитектуру масштабируемого видеодекодера, который использует масштабируемость гаммы в соответствии с известным уровнем техники;

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

- фиг.3 схематически показывает квадратную 3D LUT, представленную в виде сетки с NxNxN вершинами, в соответствии с известным уровнем техники;

- фиг.4 изображает блок-схему алгоритма способа кодирования в соответствии с примерным вариантом осуществления изобретения;

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

- фиг.6 представляет блок-схему алгоритма способа кодирования в соответствии с другим примерным вариантом осуществления изобретения;

фиг.7A и 7B схематически показывают рекурсивное подразделение куба на октанты (слева) и соответствующее октодерево (справа);

- фиг.8 иллюстрирует интерполяцию значений цвета вершины в соответствии с изобретением;

- фиг.9A схематически показывает 3D LUT, представленную в виде неравномерной сетки;

- фиг.9B иллюстрирует предсказание значения, ассоциированного с вершиной, в соответствии с конкретным и неограничивающим вариантом осуществления;

- фиг.9C представляет октант, в котором кодируются только 4 вершины из 8;

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

- фиг.10 представляет блок-схему алгоритма способа декодирования в соответствии с примерным вариантом осуществления изобретения;

- фиг.11 представляет блок-схему алгоритма способа декодирования в соответствии с другим примерным вариантом осуществления изобретения;

- фиг.12 схематически показывает кодер для кодирования LUT в соответствии с изобретением;

- фиг.13 схематически показывает декодер для декодирования LUT в соответствии с изобретением; и

- фиг.14 изображает положение 8 вершин октанта.

5. ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

Фиг.4 представляет блок-схему алгоритма способа кодирования в соответствии с примерным вариантом осуществления изобретения. Способ предназначен для кодирования LUT, заданной в виде сетки вершин, где по меньшей мере одно значение, например значение цвета, ассоциируется с каждой вершиной сетки. В отношении декодирования термины "восстановление" и "декодирование" очень часто используются как синонимы. В дальнейшем термин "значение цвета" содержит значения цвета в заданном цветовом пространстве, например значения RGB, YUV или Y,Cb,Cr, и дополнительно содержит значения, характеризующие преобразование цветов, например параметры CMF, то есть параметры матрицы и значения смещения.

На этапе 40 по меньшей мере одно значение цвета у текущей вершины предсказывается из восстановленных значений цвета, ассоциированных с соседними вершинами.

В качестве примера на фиг.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) вычисляется, например, с использованием интерполяции следующим образом:

Pc1=0,25*(V1c1+ V2c1+ V3c1+V4c1)

Pc2=0,25*(V1c2+ V2c2+ V3c2+V4c2)

В соответствии с разновидностью 2D LUT ассоциирует вершину V0(c10,c20) с набором параметров (m11, m12, m21, m22, o1, o2) вместо пары значений (V0c1, V0c2). Этот набор параметров может использоваться для восстановления значений (V0c1, V0c2) из значений (c10,c20) у V0 следующим образом:

V0c1=m11* c10+m12* c20 +o1

V0c2=m21* c10+m22* c20 +o2

Параметры, ассоциированные с вершиной V0, предсказываются, например, из восстановленных параметров, ассоциированных с соседними в пространственном отношении вершинами V1(c11,c21), V2(c12,c22), V3(c13,c23) и V4(c14,c24). Предсказание вычисляется, например, для параметра текущей вершины с использованием интерполяции.

На этапе 42 определяется по меньшей мере один остаток между, по меньшей мере, одним значением цвета у текущей вершины и его предсказанием и дополнительно кодируется в поток F битов. Остаток определяется путем вычитания предсказания по меньшей мере из одного значения цвета у текущей вершины. Кодирование обычно содержит энтропийное кодирование. В соответствии с разновидностью кодирование содержит квантование остатка с помощью квантователя q и энтропийное кодирование квантованного остатка.

В качестве примера первый и второй остатки вычисляются для вершины V0 в случае 2D LUT. Первый остаток равен (V0c1-Pc1), а второй остаток равен (V0c2-Pc2). Остатки, или квантованные остатки (V0c1-Pc1)/q и (V0c2-Pc2)/q, затем энтропийно кодируются в поток F битов. Энтропийное кодирование применяет традиционные методики двоичного кодирования, например экспоненциальное кодирование Голомба, метод Хаффмана, CABAC (английская аббревиатура для "контекстно-адаптивное двоичное арифметическое кодирование").

Этапы 40 и 42 повторяются для кодирования дальнейшей вершины LUT до тех пор, пока не будут кодированы все вершины LUT.

При желании способ кодирования содержит кодирование значения q квантователя в поток F битов. По меньшей мере одно значение цвета у текущей вершины дополнительно восстанавливается для использования в предсказании других вершин. Каждое восстановленное значение цвета равно соответствующему исходному значению цвета, если не используется никакого квантователя, то есть q=1. В противном случае по меньшей мере одно восстановленное значение цвета определяется путем деквантования остатка и сложения деквантованного остатка с предсказанием.

В соответствии с разновидностью способ кодирования дополнительно содержит кодирование типа интерполяции в поток F битов, используемого для предсказания по меньшей мере одного значения цвета у вершины. Точнее говоря, из потока битов декодируется индекс, который идентифицирует тип интерполяции. В качестве примера индекс 0 идентифицирует билинейную интерполяцию, индекс 1 идентифицирует интерполяцию по ближайшим соседним элементам, индекс 2 идентифицирует линейную интерполяцию с 2 ближайшими соседними элементами.

В соответствии с разновидностью не все вершины в LUT кодируются в поток F битов. Например, если абсолютное значение всех остатков или всех квантованных остатков вершины меньше порогового значения TH, то для той вершины не кодируется никакого остатка, например TH=0 или TH=1. Соответственно, в поток битов для каждой вершины кодируется двоичный флаг, указывающий, кодируется ли по меньшей мере один остаток для той вершины, или подразумеваются ли равными нулю остатки, которые не кодируются.

В соответствии с разновидностью для каждого значения цвета каждой вершины кодируется двоичный флаг, указывающий, кодируется ли остаток для того значения цвета, или является ли остаток не кодируемым и подразумеваемым равным нулю.

Размер LUT при желании также кодируется в поток битов.

Фиг.6 представляет блок-схему алгоритма способа кодирования в соответствии с другим примерным вариантом осуществления изобретения. Способ предназначен для кодирования 3D LUT, заданной в виде сетки вершин, с использованием октодерева, где набор из n значений цвета, например тройка значений цвета, ассоциируется с каждой вершиной сетки, где n – целое число ≥ 1. Октодерево предназначено для разбиения цветового пространства 3D путем его рекурсивного подразделения на восемь октантов, как изображено на фиг.7A и 7B. На фиг.7A разбиение симметрично, тогда как на фиг.7B разбиение асимметрично. Октант уровня N имеет родительский октант на уровне N-1. Октодеревья являются трехмерным аналогом квадродеревьев. Способ кодирования раскрывается для кодирования текущей вершины V сетки, которая принадлежит текущему октанту. В дальнейшем 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) и т. п.

Соответственно, определяется предсказание для каждого значения цвета с использованием, например, трилинейной интерполяции, как проиллюстрировано с помощью фиг.8:

где: (ri, gj, bk) при i=0, 1, j=0, 1 и k=0, 1 являются координатами вершин родительского октанта в цветовом пространстве 3D;

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

является первым значением цвета, ассоциированным с вершиной (ri, gj, bk);

s0(t)=t1-t и s1(t)=t-t0 при t=r, g или b.

Такие же уравнения используются для g и b. Можно использовать другой тип интерполяции, например призматическую, пирамидальную или тетраэдральную.

Сетка не обязательно является равномерной, как изображено на фиг.9A.

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

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

Остатки затем энтропийно кодируются в поток битов или квантуются перед энтропийным кодированием. Энтропийное кодирование применяет традиционные методики двоичного кодирования, например экспоненциальное кодирование Голомба, метод Хаффмана, CABAC (английская аббревиатура для "контекстно-адаптивное двоичное арифметическое кодирование").

Октант уровня 0 не имеет родительского октанта. Точно так же первый октант в списке кодирования октантов не имеет предшествующего октанта. Следовательно, каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V этого октанта, предсказывается из известного значения цвета, например значения 128. В соответствии с разновидностью используются разные известные значения для разных вершин октанта уровня 0. В соответствии с другой разновидностью предсказание из известных значений цвета также выполняется для других октантов помимо октанта уровня 0. В соответствии с разновидностью каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V этого октанта, предсказывается из уже восстановленных значений цвета, ассоциированных с соседними вершинами, которые принадлежат тому же октанту.

При желании способ кодирования содержит кодирование значения q квантователя в поток битов. Три значения цвета текущей вершины далее восстанавливаются и могут использоваться для предсказания других вершин. Каждое из восстановленных значений цвета равно исходному значению цвета, если не используется никакого квантователя (q=1). В противном случае каждое восстановленное значение цвета определяется путем деквантования соответствующего остатка и сложения деквантованного остатка с соответствующим предсказанием.

В соответствии с разновидностью способ кодирования дополнительно содержит кодирование типа интерполяции в поток битов, используемого для предсказания по меньшей мере одного значения цвета у вершины. Точнее говоря, в поток битов кодируется индекс, который идентифицирует тип интерполяции. В качестве примера индекс 0 идентифицирует трилинейную интерполяцию, индекс 1 идентифицирует призматическую интерполяцию, индекс 2 идентифицирует пирамидальную интерполяцию, а индекс 3 идентифицирует тетраэдральную интерполяцию.

В соответствии с разновидностью не все вершины в LUT кодируются в поток битов. Например, если абсолютные значения всех остатков или всех квантованных остатков вершины меньше порогового значения TH, то для той вершины не кодируется никакого остатка, например TH=0 или TH=1. Соответственно, в поток битов для каждой вершины кодируется двоичный флаг, указывающий, кодируется ли по меньшей мере один остаток для той вершины. В соответствии с разновидностью для каждого значения цвета каждой вершины кодируется двоичный флаг, указывающий, кодируется ли остаток для того значения цвета, или является ли остаток не кодируемым и подразумеваемым равным нулю. В другой разновидности кодируются только определенные вершины, как изображено на фиг.9C. На этой фигуре кодируются только 4 вершины из 8 на октант.

LUT обычно кодируется в поток битов для использования в преобразовании изображений из видео в таких приложениях, как цветовая адаптация или масштабируемость цветовой гаммы у визуализации дисплея. LUT можно кодировать и передавать вместе с видео. Если способу кодирования известно, что некоторые части 3D LUT не будут использоваться приложением, то не кодируются вершины, которые принадлежат этой части 3D LUT. Точно так же, если способу кодирования известно, что некоторые части 3D LUT обладают небольшим влиянием на окончательную визуализацию видео, то не кодируются вершины, которые принадлежат этой части 3D LUT.

Способ применяется рекурсивно для кодирования всей 3D LUT. В этом случае кодируются все октанты октодерева. Как только кодированы все вершины текущего октанта, кодируются вершины дочернего октанта у текущего октанта.

В одной разновидности 3D LUT предварительно обрабатывается перед кодированием. В этом случае с каждым октантом в октодереве ассоциируется флаг разделения, и сначала устанавливается в ложь. Во время этапа предварительной обработки определяются значения флага разделения для каждого октанта. Если по меньшей мере одна кодируемая вершина текущего октанта содержит меньшей мере один, по возможности квантованный, остаток больше TH, то флаг разделения у его родительского октанта устанавливается в "истину". Таким образом, флаг разделения у текущего октанта уровня N указывает, кодируются ли рекурсивно его непосредственные потомки (то есть потомки уровня N+1), или подразумеваются ли равными нулю все остатки вершин всех его еще не кодированных потомков (то есть потомков уровня N+k при k>0).

Во время этапа кодирования флаги разделения и остатки кодируются в поток битов. Как только кодированы все вершины текущего октанта, кодируются вершины дочернего октанта у текущего октанта, если флагом разделения текущего октанта является истина. Вершины, которые принадлежат двум октантам, предпочтительно кодируются только один раз. В одной разновидности вершины, совместно используемые между несколькими октантами, кодируются более одного раза. В частности, вершины кодируются несколько раз разными значениями, по одному значению для каждого октанта, которому она принадлежит. Со ссылкой на фиг.9D вершина V1 совместно используется между октантом (j) и октантом (j-1). Поэтому V1 можно кодировать дважды: одним значением для октанта (j), а другим значением – для октанта (j-1). Первое значение и другое значение могут отличаться. Точно так же вершину V2, которая совместно используется между 4 октантами, можно кодировать 4 раза.

3D LUT кодируется, например, в VPS ("Набор параметров видео"), SPS ("Набор параметров последовательности"), PPS ("Набор параметров изображения") или в одном сообщении SEI ("Дополнительная информация улучшения"), которые заданы в стандартах кодирования видео AVC, HEVC, SVC или SHVC. 3D LUT кодируется, например, в сообщении SEI, заданном ниже. Размер S у LUT при желании также кодируется в поток битов. S является количеством вершин в одном направлении.

В соответствии с разновидностью n 3D LUT, состоящих из вершин с 1 значением цвета, кодируются вместо кодирования одной 3D LUT, состоящей из вершин с n ассоциированными значениями цвета, например n=3, как раскрыто выше.

В соответствии с разновидностью, когда размер 3D LUT равен S=2, кодируется флаг, указывающий декодеру вычислить матрицу 3×3 коэффициентов усиления плюс смещение из декодированной 3D LUT и использовать ее в качестве CMF вместо 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 задаются так, чтобы подтверждалось следующее уравнение:

В соответствии с разновидностью только параметры [ai, bi, ci] при i=0, 1 или 2 ассоциируются с вершинами.

Конечно, в случае 3D LUT с размером 2 (один единственный октант с 8 вершинами) можно выбрать три значения цвета у вершин так, чтобы 3D LUT была эквивалента Модели усиления-смещения, заданной следующим уравнением:

Для этого нужно установить 3 значения цвета (yX, uX, vX)X=A,…H у 8 вершин с A по H в следующие значения:

K является постоянной, которая зависит от количества битов, используемых для представления каждого значения цвета. K=255, если значения цвета представляются на 8 битах, K=1023, если значения цвета представляются на 10 битах, и т.п. Тогда трилинейная интерполяция эквивалентна Модели усиления-смещения.

Фиг.10 представляет блок-схему алгоритма способа декодирования в соответствии с примерным вариантом осуществления изобретения.

На этапе 140 из потока F битов декодируется по меньшей мере один остаток. Декодирование обычно содержит энтропийное декодирование. В соответствии с разновидностью декодирование содержит энтропийное декодирование квантованного остатка и обратное квантование квантованного остатка с помощью квантователя q. Энтропийное декодирование применяет традиционные методики двоичного декодирования, например экспоненциальное кодирование Голомба, метод Хаффмана, CABAC (английская аббревиатура для "контекстно-адаптивное двоичное арифметическое кодирование").

При желании способ декодирования содержит декодирование значения q квантователя из потока F битов.

В соответствии с разновидностью не все вершины в LUT кодируются в поток F битов. При желании из потока битов для каждой вершины декодируется двоичный флаг, указывающий, кодируется ли по меньшей мере один остаток для той вершины. Если не кодируется никакого остатка, то для этой вершины остаток (остатки) предполагается (предполагаются) равным нулю.

На этапе 142 по меньшей мере одно значение цвета у текущей вершины предсказывается из восстановленных значений цвета, ассоциированных с соседними вершинами. В качестве примера на фиг.5 изображается 2D LUT, ассоциирующая вершину V0(c1,c2) с соответствующей парой значений цвета (V0c1, V0c2). Значения цвета, ассоциированные с вершиной V0, предсказываются из соседних в пространственном отношении вершин V1, V2, V3 и V4. В качестве примера предсказание P(Pc1, Pc2) вычисляется с использованием интерполяции следующим образом:

Pc1=0,25*(V1c1+ V2c1+ V3c1+V4c1)

Pc2=0,25*(V1c2+ V2c2+ V3c2+V4c2)

В соответствии с разновидностью 2D LUT ассоциирует вершину V0(c10,c20) с набором параметров (m11, m12, m21, m22, o1, o2) вместо пары значений (V0c1, V0c2). Этот набор параметров может использоваться для восстановления значений (V0c1, V0c2) из значений (c10,c20) у V0 следующим образом:

V0c1=m11* c10+m12* c20 +o1

V0c2=m21* c10+m22* c20 +o2

Параметры, ассоциированные с вершиной V0, предсказываются, например, из восстановленных параметров, ассоциированных с соседними в пространственном отношении вершинами V1(c11,c21), V2(c12,c22), V3(c13,c23) и V4(c14,c24). Предсказание вычисляется, например, для параметра текущей вершины с использованием интерполяции.

На этапе 144 восстанавливается вершина. Точнее говоря, восстанавливается по меньшей мере одно значение цвета у текущей вершины из предсказания и по меньшей мере одного декодированного остатка.

В качестве примера в случае 2D LUT декодируются два остатка RC1 и Rc2 для текущей вершины V0. Таким образом, текущая вершина восстанавливается путем вычисления двух значений цвета следующим образом: (RC1+Pc1) и (Rc2+ Pc2).

В соответствии с разновидностью способ декодирования дополнительно содержит декодирование из потока F битов типа интерполяции, используемого для предсказания по меньшей мере одного значения цвета у вершины. Точнее говоря, из потока битов декодируется индекс, который идентифицирует тип интерполяции. В качестве примера индекс 0 идентифицирует билинейную интерполяцию, а индекс 1 идентифицирует интерполяцию по ближайшим вершинам.

Размер LUT при желании также декодируется из потока битов.

Фиг.11 представляет блок-схему алгоритма способа декодирования в соответствии с другим примерным вариантом осуществления изобретения. Способ предназначен для декодирования 3D LUT, заданной в виде сетки вершин, с использованием октодерева, где с каждой вершиной сетки ассоциируется тройка значений цвета. Способ декодирования раскрывается для декодирования текущей вершины V сетки, которая принадлежит текущему октанту.

На этапе 150 из потока F битов декодируются три остатка resr, resg, resb. Декодирование обычно содержит энтропийное декодирование. В соответствии с разновидностью декодирование содержит энтропийное декодирование квантованного остатка и обратное квантование квантованного остатка с помощью квантователя q. Энтропийное декодирование применяет традиционные методики двоичного декодирования, например экспоненциальное кодирование Голомба, метод Хаффмана, CABAC (английская аббревиатура для "контекстно-адаптивное двоичное арифметическое кодирование").

При желании способ декодирования содержит декодирование значения q квантователя из потока F битов.

В соответствии с разновидностью не все вершины в LUT кодируются в поток F битов. При желании из потока битов для каждой вершины декодируется двоичный флаг, указывающий, кодируется ли по меньшей мере один остаток для той вершины. Если не кодируется никакого остатка, то для этой вершины остаток (остатки) предполагается (предполагаются) равным нулю. В другой разновидности декодируются только определенные вершины, как изображено на фиг.9C. На этой фигуре декодируются только 4 вершины из 8 на октант.

На этапе 152 каждое из трех значений цвета (Vr, Vg, Vb), ассоциированное с текущей вершиной V с координатами (r, g, b), предсказывается из восстановленных значений цвета, ассоциированных с соседними вершинами, то есть вершинами, которые принадлежат родительскому октанту у текущего октанта. Для упрощения записей используется (r, g, b) вместо (c1, c2, c3). Однако изобретение не ограничивается цветовым пространством (R, G, B). Оно может применяться к представлениям цветовых пространств (Y,U,V), (Y,Cb,Cr) и т. п.

Соответственно, предсказание определяется для каждого значения цвета.

Соответственно, определяется предсказание для каждого значения цвета с использованием, например, трилинейной интерполяции, как проиллюстрировано с помощью фиг.8:

где: (ri, gj, bk) при i=0, 1, j=0, 1 и k=0, 1 являются координатами вершин родительского октанта в цве