СПОСОБ И УСТРОЙСТВО СОГЛАСОВАНИЯ ВЗВЕШЕННОГО ПРЕДСКАЗАНИЯ С НЕПРЯМОУГОЛЬНЫМИ РЕЖИМАМИ СЛИЯНИЯ Российский патент 2024 года по МПК H04N19/44 

Описание патента на изобретение RU2821011C1

ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ

Эта патентная заявка испрашивает приоритет заявки US 62/960,134, поданной 12 января 2020 г. Раскрытие вышеупомянутой патентной заявки включается в данный документ путем ссылки в полном объеме.

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

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

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

Кодирование видео (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.

Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео, желательны улучшенные способы сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.

В частности, в отношении кодирования изображений, показывающих изменения освещенности, взвешенное предсказание может преимущественно использоваться для компенсации движения в контексте межкадрового предсказания. Непрямоугольное разделение, такое как режим треугольного разделения/слияния (triangular partitioning/merge mode, TPM) и разделение/слияние по геометрическому движению (GEO), может использоваться для того, чтобы справляться с различными видами движений способом, который может быть лучше, чем межкадровое предсказание, ограниченное прямоугольным разделением. Однако для кодеков, допускающих как взвешенное предсказание, так и непрямоугольное разделение, требуется некоторое согласование.

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

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

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

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

получение битового потока для текущего изображения (например, кодированной видеопоследовательности);

получение (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) значения первого индикатора для текущего изображения в соответствии с битовым потоком, при этом первый индикатор указывает тип слайса (слайса текущего изображения);

получение (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) значения второго индикатора для текущего изображения в соответствии с битовым потоком, при этом второй индикатор указывает, присутствует ли параметр взвешенного предсказания в заголовке изображения битового потока или присутствует в заголовке слайса битового потока;

синтаксический анализ значения параметра взвешенного предсказания для текущего блока из битового потока, когда значение первого индикатора равно первому предварительно установленному значению (например, 1), а значение второго индикатора равно второму предварительно установленному значению (например, 2), при этом текущий блок содержится в текущем слайсе текущего изображения, первое предварительно установленное значение представляет собой целочисленное значение и второе предварительно установленное значение представляет собой целочисленное значение; и

предсказание текущего блока (формирование блока предсказания для текущего блока) в соответствии со значением параметра взвешенного предсказания.

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

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

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

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

получение битового потока для текущего изображения (например, кодированной видеопоследовательности);

получение (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) значения первого индикатора для текущего изображения в соответствии с битовым потоком, при этом первый индикатор указывает тип слайса (слайса текущего изображения);

получение (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) значения второго индикатора для текущего изображения в соответствии с битовым потоком, при этом второй индикатор указывает, присутствует ли параметр взвешенного предсказания в заголовке изображения битового потока или присутствует в заголовке слайса битового потока;

получение (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) значения третьего индикатора для текущего изображения в соответствии с битовым потоком, при этом третий индикатор указывает, применимо ли взвешенное предсказание к промежуточному слайсу, при этом тип слайса промежуточного слайса представляет собой B-слайс или P-слайс;

синтаксический анализ значения параметра взвешенного предсказания для текущего блока из битового потока, когда значение первого индикатора равно первому предварительно установленному значению (например, 1), значение второго индикатора равно второму предварительно установленному значению (например, 1), а значение третьего индикатора указывает, что взвешенное предсказание применимо к промежуточному слайсу, при этом текущий блок содержится в текущем слайсе текущего изображения, первое предварительно установленное значение представляет собой целочисленное значение и второе предварительно установленное значение представляет собой целочисленное значение; и

предсказание текущего блока (формирование блока предсказания для текущего блока) в соответствии со значением параметра взвешенного предсказания.

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

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

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

Способ согласно второму аспекту и его реализации обеспечивают аналогичные или те же преимущества, что и способ согласно первому аспекту и его реализации.

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

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

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

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

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

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

В соответствии с дополнительным аспектом предоставляется кодированный битовый поток для видеосигнала, при этом битовый поток содержит первый индикатор для текущего изображения, указывающий тип слайса (слайса текущего изображения), второй индикатор для текущего изображения, указывающий присутствует ли параметр взвешенного предсказания в заголовке изображения битового потока или присутствует в заголовке слайса битового потока, и третий индикатор для текущего изображения, указывающий, применимо ли взвешенное предсказание к промежуточному слайсу, при этом тип слайса промежуточного слайса - это B-слайс или P-слайс. Битовый поток, кроме того, содержит параметр взвешенного предсказания, в частности, когда значение второго индикатора равно второму предварительно установленному значению (например, 1), при этом текущий блок содержится в текущем слайсе текущего изображения, а второе предварительно установленное значение представляет собой целочисленное значение.

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

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

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

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

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

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

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

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

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

Устройство декодирования (выполненное с возможностью декодирования кодированной видеопоследовательности), содержащее:

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

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

a) получения значения первого индикатора для текущего изображения в соответствии с битовым потоком, при этом первый индикатор указывает тип слайса; и

b) получения значения второго индикатора для текущего изображения в соответствии с битовым потоком, при этом второй индикатор указывает, присутствует ли параметр взвешенного предсказания в заголовке изображения битового потока или присутствует в заголовке слайса битового потока;

блок синтаксического анализа, выполненный с возможностью синтаксического анализа значения параметра взвешенного предсказания для текущего блока из битового потока, когда значение первого индикатора равно первому предварительно установленному значению (например, 1), а значение второго индикатора равно второму предварительно установленному значению (например, 1), при этом текущий блок содержится в текущем слайсе текущего изображения, первое предварительно установленное значение представляет собой целочисленное значение и второе предварительно установленное значение представляет собой целочисленное значение; и

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

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

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

Кроме того, предусмотрено устройство декодирования (выполненное с возможностью декодирования кодированной видеопоследовательности), содержащее:

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

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

a) получения значения первого индикатора для текущего изображения в соответствии с битовым потоком, при этом первый индикатор указывает тип слайса;

b) получения значения второго индикатора для текущего изображения в соответствии с битовым потоком, при этом второй индикатор указывает, присутствует ли параметр взвешенного предсказания в заголовке изображения битового потока или присутствует в заголовке слайса битового потока; и

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

блок синтаксического анализа, выполненный с возможностью синтаксического анализа значения параметра взвешенного предсказания для текущего блока из битового потока, когда значение первого индикатора равно первому предварительно установленному значению (например, 1), значение второго индикатора равно второму предварительно установленному значению (например, 1) и значение третьего индикатора указывает, что взвешенное предсказание применимо к промежуточному слайсу, при этом текущий блок содержится в текущем слайсе текущего изображения, первое предварительно установленное значение представляет собой целочисленное значение и второе предварительно установленное значение представляет собой целочисленное значение; и

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

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

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

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

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

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

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

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

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

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

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

Фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;

Фиг. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;

Фиг. 6 - блок-схема алгоритма принятия решений на стороне кодера для взвешенного предсказания и оценки параметров;

Фиг. 7 иллюстрирует пример режима предсказания треугольника;

Фиг. 8 иллюстрирует пример режима геометрического предсказания;

Фиг. 9 иллюстрирует другой пример режима геометрического предсказания;

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

Фиг. 11 является блок-схемой, показывающей структуру примерного терминального устройства;

Фиг. 12 является блок-схемой, иллюстрирующей пример способа межкадрового предсказания согласно настоящей заявке;

Фиг. 13 является блок-схемой, иллюстрирующей пример устройства межкадрового предсказания согласно настоящей заявке;

Фиг. 14 представляет собой блок-схему, иллюстрирующую другой пример устройства межкадрового предсказания согласно настоящей заявке;

Фиг. 15 представляет собой блок-схему, иллюстрирующую способ кодирования согласно варианту осуществления;

Фиг. 16a и 16b представляют собой блок-схему, иллюстрирующую способ кодирования согласно другому варианту осуществления; и

Фиг. 17 иллюстрирует устройство декодирования согласно варианту осуществления.

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

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ

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

Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из упомянутого множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.

Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» термины «кадр» или «картинка» могут использоваться как синонимы в области кодирования видео. Кодирование видео (или кодирование (coding) в целом) содержит две части: кодирование видео (video encoding) и декодирование видео. Кодирование видео выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеоизображений для сокращения объема данных, требуемого для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне получателя (адресата) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видеоизображений или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется CODEC (Coding and Decoding, кодирование и декодирование).

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

Несколько стандартов кодирования видео принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборки и кодирование с 2D преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например с использованием пространственного (внутри изображения) предсказания и/или временного (между изображениями) предсказания для формирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут формировать идентичные предсказания (например, внутрикадрового и межкадрового предсказания) и/или восстановления для обработки, то есть кодирования (coding), последующих блоков.

В нижеследующих вариантах осуществления системы 10 кодирования видео, видеокодер 20 и видеодекодер 30 описаны на основе фиг. 1-3.

Фиг. 1A представляет собой схематичное блочное представление, иллюстрирующее примерную систему 10 кодирования, например систему 10 кодирования видео (или сокращенно систему 10 кодирования), которая может использовать способы из настоящей заявки. Видеокодер 20 (или сокращенно кодер 20) и видеодекодер 30 (или сокращенно декодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнения способов в соответствии с различными примерами, описанными в настоящей заявке.

Как показано на фиг. 1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 изображения, например в устройство-получатель 14 для декодирования кодированных данных 13 изображения.

Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. опционально, содержать источник 16 изображений, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 изображений, а также интерфейс связи или блок 22 связи.

Источник 16 изображений может содержать или быть устройством захвата изображений любого типа, например камерой для захвата изображения реального мира, и/или устройством формирования изображений любого типа, например процессором компьютерной графики для формирования компьютерного анимированного изображения, или любым типом другого устройства для получения и/или предоставления изображения реального мира, формируемого компьютером изображения (например, содержимого экрана, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображения дополненной реальности (AR)). Источником изображения может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых изображений.

В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, изображение или данные 17 изображения также могут именоваться необработанным (raw) изображением или необработанными данными 17 изображения.

Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки в отношении этих данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.

Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления кодированных данных 21 изображения (дополнительные подробности будут описаны ниже, например, на основе фиг. 2).

Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи этих кодированных данных 21 изображения (или любой их дальнейшей обработанной версии) по каналу 13 связи в другое устройство, например устройство-получатель 14 или любое другое устройство, для сохранения или непосредственного восстановления.

Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. опционально, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения.

Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема кодированных данных 21 изображения (или любой их дальнейшей обработанной версии), например непосредственно от устройства-источника 12 или из любого другого источника, например запоминающего устройства, например устройства хранения кодированных данных изображений, и предоставления кодированных данных 21 изображения в декодер 30.

Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображения или кодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.

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

Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки и/или распаковки передачи для получения кодированных данных 21 изображения.

Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены как интерфейсы однонаправленной связи, как показано стрелкой для канала 13 связи на фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например отправки и приема сообщений, например для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например передаче кодированных данных изображения.

Декодер 30 выполнен с возможностью приема кодированных данных 21 изображения и предоставления декодированных данных 31 изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основе фиг. 3 или фиг. 5.

Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки декодированных данных 31 изображения (также называемых восстановленными данными изображения), таких как декодированное изображение 31, чтобы получить пост-обработанные данные 33 изображения, такие как пост-обработанное изображение 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например для подготовки декодированных данных 31 изображения для отображения, например с помощью устройства 34 отображения.

Устройство 34 отображения из состава устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 изображения для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленного изображения, например, интегрированного или внешнего дисплея или монитора. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, дисплеии, основанные на жидкрх кристаллах на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.

Хотя фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.

Как будет очевидно для специального элемента на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функций в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на фиг. 1A, может варьироваться в зависимости от фактического устройства и применения.

Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на фиг. 1B, такую как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матрицы (FPGA), дискретной логики, аппаратного обеспечения, выделенного кодирования видео или любых их комбинаций. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 с фиг. 2 и/или любой другой системы кодера или подсистемы, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с фиг. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на фиг. 5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем не-кратковременном считываемом компьютером носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на фиг. 1B.

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

В некоторых случаях система 10 кодирования видео, проиллюстрированная на фиг. 1A, является лишь примером, а способы настоящей заявки могут применяться к настройкам кодирования видео (такого как кодирование видео или декодирование видео), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство кодирования видео может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.

Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективное кодирование видео (HEVC) или на эталонное программное обеспечение универсального кодирования видео (VVC), стандарт кодирования видео следующего поколения, разрабатываемый объединенной группой сотрудничества по кодированию видео (JCT-VC) экспертной группы по кодированию видео ITU-T (VCEG) и экспертной группой по движущимся изображениям ISO/IEC (MPEG). Специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.

Кодер и способ кодирования

Фиг. 2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации способов настоящей заявки. В примере на фиг. 2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (DPB) декодированных изображений, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 межкадрового предсказания, блок 254 внутрикадрового предсказания и блок 262 разделения. Блок 244 межкадрового предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг. 2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.

Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относиться к формированию прямого пути прохождения сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания могут относится к формированию обратного пути прохождения сигнала видеокодера 20, при этом обратный путь прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (см. видеодекодер 30 на фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер декодированных изображений (DPB) 230, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания также относятся к формированию «встроенного декодера» видеокодера 20.

Изображения и разделение изображений (изображения и блоки)

Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 изображения 17 (или данных 17 изображения), например изображения из последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения также могут представлять собой предварительно обработанное изображение 19 (или предварительно обработанные данные 19 изображения). Для простоты нижеследующее описание ссылается на изображение 17. Изображение 17 также может именоваться текущим изображением или изображением, которое подлежит кодированию (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).

Изображение (цифровое) является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента изображения) или пэл (picture element, элемент изображения). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовые компоненты, т.е. изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив красных, зеленых или синих выборок. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновом изображении), в то время как две компоненты Cb и Cr цветности (chrominance) (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Изображения в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.

Варианты осуществления видеокодера 20 могут содержать блок разделения изображения (не показан на фиг. 2), выполненный с возможностью разделения изображения 17 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разделения изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или подмножествами или группами изображений и разделения каждого изображения на соответствующие блоки.

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

Подобно изображению 17, блок 203 изображения снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 17 или массив яркости или цветности в случае цветного изображения) или три массива выборок (например, яркость и два массива цветности в случае цветного изображения 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, массив дискретных выборок MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования.

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

Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием слайсов (также именуемых видеослайсами), при этом изображение может быть разделено на или кодировано с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).

Варианты осуществления видеокодера 20, показанные на фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием групп тайлов (также называемых группами тайлов видео) и/или тайлов (также называемых тайлами видео), при этом изображение может быть разделено на или кодировано с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки.

Вычисление остатка

Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также именуемого остатком 205) на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания приведены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборок.

Преобразование

Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.

Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе определенных ограничений, например коэффициенты масштабирования представляют собой степень двойки для операций сдвига, битовая глубина коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например блоком 312 обработки обратного преобразования в видеодекодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например блоком 206 обработки преобразования, могут быть заданы надлежащим образом в кодере 20.

Варианты осуществления видеокодера 20 (соответственно блок 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.

Квантование

Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.

Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для предопределенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать тонкому квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть изменена из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.

Варианты осуществления видеокодера 20 (соответственно блок 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.

Обратное квантование

Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например путем применения обратной схемы квантования относительно таковой, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования.

Обратное преобразование

Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования относительно преобразования, применяемого блоком 206 обработки преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST) или других обратных преобразований для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.

Восстановление

Блок 214 восстановления (например, блок сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т. е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например посредством сложения - выборка за выборкой - значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.

Фильтрация

Блок 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на фиг. 2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.

Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять аналогичные параметры контурного фильтра или соответствующие контурные фильтры для декодирования.

Буфер декодированных изображений

Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающими устройствами других типов. Буфер 230 (DPB) декодированных изображений может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего изображения или разных изображений, например ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, т.е. декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. Буфер 230 декодированных изображений (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.

Выбор режима (разделение и предсказание)

Блок 260 выбора режима содержит блок 262 разделения, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания и выполнен с возможностью приема или получения исходных данных изображения, например исходного блока 203 (текущего блока 203 текущего изображения 17), и восстановленных данных изображения, например отфильтрованных и/или нефильтрованных восстановленных выборок или блоков того же самого (текущего) изображения и/или из одного или множества ранее декодированных изображений, например из буфера 230 декодированных изображений или других буферов (например, линейного (строкового) буфера, не показан). Восстановленные данные изображения используются в качестве данных опорного изображения для предсказания, например межкадрового предсказания или внутрикадрового предсказания, чтобы получить блок 265 предсказания или предиктор 265.

Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (включая отсутствие разделения) и режима предсказания (например, режима внутреннего или межкадрового предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.

Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разделения и режима предсказания (например, из тех, которые поддерживаются блоком 260 выбора режима или доступны для него), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба фактора. Блок 260 выбора режима может быть выполнен с возможностью определения режима разделения и предсказания на основе оптимизации скорость/искажение (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение при определенной скорости. Такие термины, как «лучший», «минимальный», «оптимальный» и т. д. в этом контексте не обязательно относятся к всеобъемлющему «лучшему», «минимуму», «оптимальному» и т. д., но также могут относиться к выполнению критерия выбора или прекращения, например когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к «субоптимальному выбору», но уменьшающих сложность и время обработки.

Другими словами, блок 262 разделения может быть выполнен с возможностью разделения блока 203 на более мелкие разделы блока или субблоки (которые снова образуют блоки), например итеративно с использованием разделения квадродерева (QT), двоичного разделения (BT), или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделов блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разделяемого блока 203, а режимы предсказания применяются к каждому из разделов блока или субблоков.

Далее более подробно поясняется разделение (например, посредством блока 260 разделения) и обработка предсказания (посредством блока 244 межкадрового предсказания и блока 254 внутрикадрового предсказания), выполняемые примерным видеокодером 20.

Разделение

Блок 262 разделения может разделять (или разбивать) текущий блок 203 на более мелкие разделы, например блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разделение не будет завершено, например из-за выполнения критерия прекращения, например достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), а дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).

Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью изображения. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).

Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть NxN блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть MxN блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением.

В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разделена на CU с использованием структуры квадродерева, обозначенной в качестве дерева кодирования. Решение о том, следует ли кодировать область изображения с использованием предсказания между изображениями (временного) или внутри изображения (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разделена на одну, две или четыре PU в соответствии с типом разделения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разделения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU.

В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом кодирования видео, который называется универсальное кодирование видео (VVC), для разделения блока кодирования используется, например, разделение комбинированного квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или троичной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с блочной структурой QTBT можно использовать множественный раздел, например раздел троичного дерева.

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

Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.

Внутрикадровое предсказание

Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, например ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены для VVC.

Блок 254 внутрикадрового предсказания выполнен с возможностью использования восстановленных дискретных выборок соседних блоков одного и того же текущего изображения для формирования блока 265 внутрикадрового предсказания согласно режиму внутрикадрового предсказания набора режимов внутрикадрового предсказания.

Блок 254 внутрикадрового предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутрикадрового предсказания (или, в общем, информации, указывающей выбранный режим внутрикадрового предсказания для блока) в блок 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.

Межкадровое предсказание

Набор (возможных) режимов межкадрового предсказания зависит от доступных опорных изображений (то есть предыдущих, по меньшей мере частично декодированных изображений, например сохраненных в DPB 230) и других параметров межкадрового предсказания, например используется ли опорное изображение целиком или только часть, например область окна поиска вокруг области текущего блока, опорного изображения для поиска наиболее подходящего опорного блока и/или, например, применяется ли интерполяция пикселей, например полупиксельная (half/semi-pel) и/или четвертьпиксельная (quarter-pel) интерполяция, или нет.

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

Блок 244 межкадрового предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба на фиг. 2 не показаны). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например восстановленных блоков одного или множества других/отличных ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.

Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из упомянутого множества опорных блоков одинаковых или разных изображений из множества других изображений и обеспечения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров межкадрового предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).

Блок компенсации движения выполнен с возможностью получения, например, приема параметра межкадрового предсказания и выполнения межкадрового предсказания на основе или с использованием параметра межкадрового предсказания для получения блока 265 межкадрового предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или формирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может формировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число блоков предсказания-кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных изображений.

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

Энтропийное кодирование

Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого способа или методологии энтропийного кодирования) или пропуска (без сжатия) в отношении квантованных коэффициентов 209, параметров межкадрового предсказания, параметров внутрикадрового предсказания, параметров контурного фильтра и/или других синтаксических элементов для получения кодированных данных 21 изображения, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.

Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.

Декодер и способ декодирования

Фиг. 3 показывает пример видеодекодера 30, который выполнен с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 изображения (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированное изображение 331. Кодированные данные изображения или битовый поток содержит информацию для декодирования кодированных данных изображения, например данных, которые представляют блоки изображения кодированного слайса видео (и/или тайлов или групп тайлов и связанные синтаксические элементы.

В примере на фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных изображений, блок 360 применения режима, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания. Блок 344 межкадрового предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на фиг. 2.

Как описано в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных изображений может быть идентичен по функции буферу 230 декодированных изображений. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.

Энтропийное декодирование

Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем случае, кодированных данных 21 изображения) и выполнения, например, энтропийного декодирования кодированных данных 21 изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показано на фиг. 3), например, любой или все параметры межкадрового предсказания (например, индекс опорного изображения и вектор движения), параметр внутрикадрового предсказания (например, режим или индекс внутрикадрового предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие синтаксические элементы. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров межкадрового предсказания, параметра внутрикадрового предсказания и/или других синтаксических элементов блоку 360 применения режима и других параметров другим блокам декодера 30. Видеодекодер 30 может принимать синтаксические элементы на уровне видеослайса и/или уровне видеоблока. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут приниматься и/или использоваться группы тайлов и/или тайлы и соответствующие синтаксические элементы.

Обратное квантование

Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или тайле или группе тайлов, для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.

Обратное преобразование

Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также могут именоваться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311.

Восстановление

Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.

Фильтрация

Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 320 контурного фильтра показан на фиг. 3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.

Буфер декодированных изображений

Декодированные видеоблоки 321 изображения затем сохраняются в буфере 330 декодированных изображений, который сохраняет декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или для вывода, соответственно, отображения.

Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312 для представления или просмотра пользователю.

Предсказание

Блок 344 межкадрового предсказания может быть идентичен блоку 244 межкадрового предсказания (в частности, блоку компенсации движения), а блок 354 внутрикадрового предсказания может быть идентичен блоку 254 межкадрового предсказания по функции, и принимает решения по разделению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутрикадрового или межкадрового предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.

Когда видеослайс кодируется как внутрикадрово-кодируемый (I) слайс, блок 354 внутрикадрового предсказания блока 360 применения режима выполнен с возможностью формирования блока 365 предсказания для блока изображения текущего видеослайса на основе просигнализированного режима внутрикадрового предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как межкадрово-кодируемый (т.е. B или P) слайс, блок 344 межкадрового предсказания (например, блок компенсации движения) блока 360 применения режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, принимаемых от блока 304 энтропийного декодирования. Для межкадрового предсказания блоки предсказания могут быть созданы из одного из опорных изображений в пределах одного из списков опорных изображений. Видеодекодер 30 может создавать списки опорных кадров, Список 0 и Список 1, используя предварительно установленные способы построения на основе опорных изображений, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.

Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других синтаксических элементов, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутрикадровое или межкадровое предсказание), используемого для кодирования видеоблоков видеослайса, типа слайса межкадрового предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных изображений для слайса, векторов движения для каждого межкадрово-кодированного видеоблока слайса, статуса межкадрового предсказания для каждого межкадрово-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.

Варианты осуществления видеодекодера 30, как показано на фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием слайсов (также именуемых видеослайсами), при этом изображение может быть разделено на или декодировано с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).

Варианты осуществления видеодекодера 30, показанные на фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием групп тайлов (также называемых группами тайлов видео) и/или тайлов (также называемых тайлами видео), при этом изображение может быть разделено на или декодировано с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки.

Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.

Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как Clip (усечение) или смещение, может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации.

Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон составляет -32768 ~ 32767; если bitDepth установлена равной 18, диапазон составляет -131072~131071. Например, значение получаемого вектора движения (например, MV четырех субблоков 4x4 в одном блоке 8x8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех субблоков 4x4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.

Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операций

где mvx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, mvy представляет собой вертикальную компоненту вектора движения блока изображения или субблока, а ux и uy указывает промежуточное значение;

Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двух. Дополнением до двух для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двух является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).

Операции могут применяться во время суммирования mvp и mvd, как показано в формулах (5)-(8).

Способ 2: удаление MSB переполнения посредством усечения значения

где vx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, vy представляет собой вертикальную компоненту вектора движения блока изображения или субблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим:

Clip3( x, y, z )=

Фиг. 4 является схематичным представлением устройства 400 кодирования видео согласно варианту осуществления настоящего раскрытия. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 по фиг. 1A, или кодером, таким как видеокодер 20 по фиг. 1A.

Устройство 400 кодирования видео содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 кодирования видео также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.

Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Следовательно, включение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 кодирования видео и обеспечивает трансформацию устройства 400 кодирования видео в другое состояние. В качестве альтернативы модуль 470 кодирования реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.

Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, кратковременной и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).

Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с фиг. 1 согласно примерному варианту осуществления.

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

Память 504 в устройстве 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, при этом прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные в данном документе способы.

Устройство 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать сенсорные вводы (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.

Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, устройство 500 может быть реализовано в самых разнообразных конфигурациях.

Как упоминалось в статье Дж.М. Бойс «Взвешенное предсказание в стандарте кодирования видео H.264/MPEG AVC», Международный симпозиум IEEE по схемам и системам, май 2004 г., Канада, стр. 789-792, Взвешенное предсказание (WP) - это инструмент, который особенно полезен для кодирования затуханий (fades). Инструмент взвешенного предсказания (WP) был принят в основном и расширенном профилях стандарта кодирования видео H.264 для повышения эффективности кодирования за счет применения мультипликативного весового коэффициента и аддитивного смещения к предсказанию с компенсацией движения для формирования взвешенного предсказания. В явном режиме весовой коэффициент и смещение могут быть кодированы в заголовке слайса для каждого допустимого индекса опорного изображения. В неявном режиме весовые коэффициенты не кодируются, а выводятся на основе расстояний подсчета относительного порядка изображения (POC) двух опорных изображений. Представлены экспериментальные результаты, измеряющие повышение эффективности кодирования с использованием WP. При кодировании последовательностей постепенного перехода в черное (fade-to-black) было достигнуто снижение битрейта до 67%.

Применительно к одиночному предсказанию, как в P-изображениях, WP похож на предсказание с утечкой, который ранее был предложен для устойчивости к ошибкам. Предсказание с утечкой становится частным случаем WP с коэффициентом масштабирования, ограниченным диапазоном 0 ≤ α ≤ 1. H.264 WP допускает отрицательные коэффициенты масштабирования и коэффициенты масштабирования больше единицы. Весовой коэффициент применяется попиксельно с использованием кодированного поля метки для эффективного сжатия покрытых и непокрытых областей. Ключевым отличием инструмента WP H.264 от предыдущих предложений, включающих взвешенное предсказание для эффективности сжатия, является ассоциация индекса опорного изображения с параметрами весового коэффициента, что позволяет эффективно сигнализировать об этих параметрах в среде с несколькими опорными изображениями. Как написано в статье Р. Чжана и Г. Кота «Точная оценка параметров и эффективное обнаружение затухания для взвешенного предсказания при сжатии видео H.264», 15-я Международная конференция IEEE по обработке изображений, октябрь 2008 г., Сан-Диего, Калифорния, США, стр. 2836-2839, процедуру применения WP в системе кодирования реального времени можно формализовать как последовательность шагов, показанную на фиг. 6. Во-первых, некоторые статистические данные 611 формируются посредством видеоанализа 610. Статистические данные 611 в небольшом окне, от нескольких предыдущих изображений до текущего изображения, затем используются для обнаружения затухания. Каждому изображению назначается значение 631 состояния, указывающее, находится ли изображение в состоянии NORAML или в состоянии FADE. Такие значения состояния сохраняются для каждого изображения. При кодировании изображения, если имеется состояние FADE либо в текущем изображении, либо в одном из его опорных изображений, WP будет использоваться для этой пары текущего и опорного, и статистические данные текущего изображения и соответствующего опорного изображения обрабатывается на этапе 650 для оценки параметров WP. Затем эти параметры передаются в средство 660 кодирования. В противном случае выполняется обычное кодирование.

Как упоминалось в статье А. Леонтарис и А.М. Турапис «Способы взвешенного предсказания для улучшенной компенсации движения», 16-я Международная конференция IEEE по обработке изображений (ICIP), ноябрь 2009 г., Каир, Египет, стр. 1029-1032, макроблок в H.264 разделен на разделы макроблока. Для каждого раздела макроблока ссылка (опорный элемент) выбирается из каждого из доступных списков ссылок (часто обозначаемых в спецификациях как RefPicList), списка 0 для P- или B-кодированных слайсов или списка ссылок 1 для B-кодированных слайсов. Используемые ссылки могут быть разными для каждого раздела. Используя эти ссылки, для каждого списка создается блок предсказания, т.е. P для предсказания по одному списку и PO и P1 для двойного предсказания с использованием информации о движении с опциональной субпиксельной точностью. Блоки предсказания могут дополнительно обрабатываться в зависимости от доступности взвешенного предсказания для текущего слайса. Для P-слайсов параметры WP передаются в заголовке слайса. Для B-слайсов есть два варианта. В явном WP параметры передаются в заголовке слайса, а в неявном WP параметры выводятся на основе числа счетчика порядка изображений (POC), которое сигнализируется в заголовке слайса. В этой статье мы сосредоточимся только на явном WP и на том, как этот способ можно использовать для улучшения характеристик компенсации движения. Обратите внимание, что в HEVC и VVC PB используется аналогично разделу макроблока в AVC.

Для P-слайсов или явного WP с одним списком в B-слайсах блок предсказания рисуется из одной ссылки. Пусть p обозначает значение выборки в блоке предсказания P. Если взвешенное предсказание не используется, то окончательной выборкой межкадрового предсказания является f=p. В противном случае предсказываемая выборка:

Термины wx и ox представляют собой параметры усиления и смещения WP для списка ссылок x. Термин logWD передается в битовом потоке и управляет математической точностью процесса взвешенного предсказания. Для logWD ≥ 1 приведенное выше выражение округляется от нуля. Аналогично, для двойного предсказания рассматриваются два блока предсказания, по одному для каждого списка ссылок. Пусть p0 и p1 обозначают выборки в каждом из двух блоков предсказания P0 и P1. Если взвешенное предсказание не используется, предсказание выполняется следующим образом:

Для взвешенного двойного предсказания предсказание выполняется следующим образом:

Стоит отметить, что взвешенное предсказание может компенсировать изменения освещения, такие как постепенное появление (fade-in), постепенное исчезновение (fade-out) или постепенный переход (cross-fade).

На высоком уровне в VVC о взвешенном предсказании сигнализируется в наборе параметров последовательности (SPS), наборе параметров изображения (PPS) и заголовке слайса. В SPS для этого используются следующие синтаксические элементы:

- sps_weighted_pred_flag, равное 1, указывает, что взвешенное предсказание может применяться к P-слайсам, относящимся к SPS. sps_weighted_pred_flag, равное 0, указывает, что взвешенное предсказание не применяется к P-слайсам, относящимся к SPS;

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

В PPS для этого используются следующие синтаксические элементы:

- pps_weighted_pred_flag, равное 0, указывает, что взвешенное предсказание не применяется к P-слайсам, относящимся к PPS. pps_weighted_pred_flag, равное 1, указывает, что взвешенное предсказание применяется к P-слайсам, относящимся к PPS. Когда sps_weighted_pred_flag равно 0, значение pps_weighted_pred_flag должно быть равно 0;

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

В заголовке слайса параметры взвешенного предсказания сигнализируются как pred_weight_table() со структурой, как в таблице 1, и содержащей следующие элементы:

luma_log2_weight_denom - логарифм по основанию 2 знаменателя для всех весовых коэффициентов яркости. Значение luma_log2_weight_denom должно находиться в диапазоне от 0 до 7 включительно.

delta_chroma_log2_weight_denom - это разность логарифма по основанию 2 знаменателя для всех весовых коэффициентов цветности. Когда delta_chroma_log2_weight_denom отсутствует, предполагается, что оно равно 0.

Переменная ChromaLog2WeightDenom получается равной luma_log2_weight_denom+delta_chroma_log2_weight_denom, и ее значение должно находиться в диапазоне от 0 до 7 включительно.

luma_weight_l0_flag[i], равное 1, указывает, что присутствуют весовые коэффициенты для компонента яркости предсказания списка 0 с использованием RefPicList[0][i]. luma_weight_l0_flag[i], равное 0, указывает, что эти весовые коэффициенты отсутствуют.

chroma_weight_l0_flag[i], равное 1, указывает, что присутствуют весовые коэффициенты для значений предсказания цветности списка 0 предсказания с использованием RefPicList[0][i]. chroma_weight_l0_flag[i], равное 0, указывает, что эти весовые коэффициенты отсутствуют. Когда chroma_weight_l0_flag[i] отсутствует, предполагается, что оно равно 0.

delta_luma_weight_l0[i] - разница весового коэффициента, примененного к значению предсказания яркости для предсказания списка 0 с использованием RefPicList[0][i].

Переменная LumaWeightL0[i] получается равной (1 << luma_log2_weight_denom) + delta_luma_weight_l0[i]. Когда luma_weight_l0_flag[i] равно 1, значение delta_luma_weight_l0[i] должно находиться в диапазоне от −128 до 127 включительно. Когда luma_weight_l0_flag[i] равно 0, LumaWeightL0[i] предполагается равным 2luma_log2_weight_denom.

luma_offset_l0[i] - аддитивное смещение, применяемое к значению предсказания яркости для предсказания списка 0 с использованием RefPicList[0][i]. Значение luma_offset_l0[i] должно находиться в диапазоне от −128 до 127 включительно. Когда luma_weight_l0_flag[i] равно 0, luma_offset_l0[i] считается равным 0.

delta_chroma_weight_l0[i][j] представляет собой разницу весового коэффициента, примененного к значениям предсказания цветности для предсказания списка 0 с использованием RefPicList[0][i] с j, равным 0 для Cb, и j, равным 1 для Cr.

Переменная ChromaWeightL0[i][j] получается равной (1 << ChromaLog2WeightDenom) + delta_chroma_weight_l0[i][j]. Когда chroma_weight_l0_flag[i] равно 1, значение delta_chroma_weight_l0[i][j] должно находиться в диапазоне от -128 до 127 включительно. Когда chroma_weight_l0_flag[i] равно 0, предполагается, что ChromaWeightL0[i][j] равно 2ChromaLog2WeightDenom.

delta_chroma_offset_l0[i][j] представляет собой разность аддитивного смещения, примененного к значениям предсказания цветности для предсказания списка 0 с использованием RefPicList[0][i] с j, равным 0 для Cb, и j, равным 1 для Cr.

Переменная ChromaOffsetL0[i][j] получается следующим образом:

ChromaOffsetL0[i][j] = Clip3( −128, 127,
( 128 + delta_chroma_offset_l0[i][j] −
( ( 128 * ChromaWeightL0[i][j] )  >>  ChromaLog2WeightDenom ) ) )

Значение delta_chroma_offset_l0[i][j] должно находиться в диапазоне от −4 * 128 до 4 * 127 включительно. Когда chroma_weight_l0_flag[i] равно 0, предполагается, что ChromaOffsetL0[i][j] равно 0.

luma_weight_l1_flag[i], chroma_weight_l1_flag[i], delta_luma_weight_l1[i], luma_offset_l1[i], delta_chroma_weight_l1[i][j] и delta_chroma_offset_l1[i][j] имеют ту же семантику, что и luma_weight_l0_flag[i], chroma_weight_l0_flag[i], delta_luma_weight_l0[i], luma_offset_l0[i], delta_chroma_weight_l0[i][j] и delta_chroma_offset_l0[i][j] соответственно, при этом l0, L0, list 0 и List0 заменены на l1, L1, list 1 и List1 соответственно.

Переменная sumWeightL0Flags получается равной сумме luma_weight_l0_flag[i] + 2 * chroma_weight_l0_flag[i], для i=0..NumRefIdxActive[0] - 1.

Когда slice_type равно B, переменная sumWeightL1Flags получается равной сумме luma_weight_l1_flag[i] + 2 * chroma_weight_l1_flag[i], для i=0..NumRefIdxActive[1] - 1.

Требованием соответствия битового потока является то, что, когда slice_type равно P, sumWeightL0Flags должно быть меньше или равно 24, а когда slice_type равно B, сумма sumWeightL0Flags и sumWeightL1Flags должна быть меньше или равна 24.

Во вкладе JVET-O0244 (В. Серегин и др. «AHG17: О нулевой дельте POC в структуре опорного изображения», 15-я встреча JVET, Гетеборг, Швеция), было указано, что в текущем проекте спецификации VVC опорные изображения сигнализируются в структуре опорного изображения (RPS), где abs_delta_poc_st представляет собой значение дельта POC, которое может быть равно 0. RPS может сигнализироваться в SPS и заголовке слайса. Эта функциональность необходима, чтобы сигнализировать о разных весовых коэффициентах для одного и того же опорного изображения, и потенциально необходима, если поддерживается многоуровневая масштабируемость с одинаковыми значениями POC, используемыми на разных уровнях в единице доступа. Там утверждается, что повторяющиеся опорные изображения не нужны, когда взвешенное предсказание не разрешено. Среди прочего, в этом вкладе предлагается запретить нулевые значения дельты POC, когда взвешенное предсказание не включено.

Синтаксическая структура ref_pic_list_struct( listIdx, rplsIdx ) может присутствовать в SPS или в заголовке слайса. В зависимости от того, включена ли синтаксическая структура в заголовок слайса или в SPS, применяется следующее:

- Синтаксическая структура ref_pic_list_struct(listIdx, rplsIdx), если она присутствует в заголовке слайса, задает список опорных изображений listIdx текущего изображения (изображение, содержащее слайс).

-- В противном случае (присутствует в SPS) синтаксическая структура ref_pic_list_struct( listIdx, rplsIdx ) задает кандидата в список опорных изображений listIdx, а термин «текущее изображение» в семантике, указанной в оставшейся части этого пункта, относится к каждому изображению, которое:(1) имеет один или более слайсов, содержащих ref_pic_list_idx[listIdx], равный индексу в списке синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ), включенных в SPS, и (2) находится в CVS, который ссылается на SPS.

num_ref_entries[listIdx][rplsIdx] указывает количество записей в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ). Значение num_ref_entries[listIdx][rplsIdx] должно находиться в диапазоне от 0 до sps_max_dec_pic_buffering_minus1+14 включительно.

ltrp_in_slice_header_flag[listIdx][rplsIdx], равное 0, указывает, что младшие значащие биты (LSB) POC записей LTRP в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx) присутствуют в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx). ltrp_in_slice_header_flag[listIdx][rplsIdx], равное 1, указывает, что младшие значащие биты POC записей LTRP в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx) отсутствуют в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx).

inter_layer_ref_pic_flag[listIdx][rplsIdx][i], равное 1, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является записью ILRP. inter_layer_ref_pic_flag[listIdx][rplsIdx][i], равное 0, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) не является записью ILRP. При отсутствии предполагается, что значение inter_layer_ref_pic_flag[listIdx][rplsIdx][i] равно 0.

st_ref_pic_flag[listIdx][rplsIdx][i], равное 1, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является записью STRP. st_ref_pic_flag[listIdx][rplsIdx][i], равное 0, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является записью LTRP. Когда inter_layer_ref_pic_flag[listIdx][rplsIdx][i] равно 0, а st_ref_pic_flag[listIdx][rplsIdx][i] отсутствует, значение st_ref_pic_flag[listIdx][rplsIdx][i] считается равным 1.

Переменная NumLtrpEntries[listIdx][rplsIdx] получается следующим образом:

abs_delta_poc_st[listIdx][rplsIdx][i] указывает значение переменной AbsDeltaPocSt[listIdx][rplsIdx][i] следующим образом:

Значение abs_delta_poc_st[listIdx][rplsIdx][i] должно быть в диапазоне от 0 до 215-1 включительно.

strp_entry_sign_flag[listIdx][rplsIdx][i] равное 1 указывает, что i-я запись в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx) имеет значение больше или равное 0. strp_entry_sign_flag[listIdx][rplsIdx][i] равное 0 указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) имеет значение меньше 0. При отсутствии предполагается, что значение strp_entry_sign_flag[listIdx][rplsIdx][i] равно 1.

Список DeltaPocValSt[listIdx][rplsIdx] получается следующим образом:

rpls_poc_lsb_lt[listIdx][rplsIdx][i] задает значение счетчика порядка изображений по модулю MaxPicOrderCntLsb изображения, на которое ссылается i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ). Длина синтаксического элемента rpls_poc_lsb_lt[listIdx][rplsIdx][i] составляет log2_max_pic_order_cnt_lsb_minus4+4 бита.

ilrp_idc[listIdx][rplsIdx][i] указывает индекс в списке непосредственно зависимых уровней ILRP i-й записи в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) в списке непосредственно зависимых уровней. Значение ilrp_idc[listIdx][rplsIdx][i] должно находиться в диапазоне от 0 до GeneralLayerIdx[nuh_layer_id] − 1 включительно.

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

И значение дельты POC (переменная AbsDeltaPocSt) условно восстанавливается на стороне декодера следующим образом:

abs_delta_poc_st[listIdx][rplsIdx][i] указывает значение переменной AbsDeltaPocSt[listIdx][rplsIdx][i] следующим образом:

Режим треугольного разделения (TPM) и разделение по геометрическому движению (GEO), также известные как режим треугольного слияния и режим геометрического слияния, соответственно, представляют собой способы разделения, которые обеспечивают не горизонтальные и не вертикальные границы между разделами предсказания, где единица предсказания PU1 и единица предсказания PU1 объединяются в область с помощью процедуры взвешенного усреднения подмножеств их выборок, относящихся к разным цветовым компонентам. TMP допускает границы между предсказываемыми разделениями только по диагоналям прямоугольного блока, тогда как границы по GEO могут располагаться в произвольных позициях. В области, к которой применяется процедура взвешенного усреднения, целые числа в квадратах обозначают веса WPU1, применяемые к компоненту яркости единицы предсказания PU1. В примере веса WPU2, применяемые к компоненту яркости единицы предсказания PU2, вычисляются следующим образом:

WPU2=8 - WPU1.

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

Подробная информация о синтаксисе для TPM представлена в таблице 5, где 4 синтаксического элемента используются для сигнализации информации о TPM:

MergeTriangleFlag - это флаг, который определяет, выбран ли TPM или нет («0» означает, что TPM не выбран; в противном случае выбран TPM);

merge_triangle_split_dir - флаг направления разделения для TPM («0» означает направление разделения от верхнего левого угла к нижнему правому углу; в противном случае направление разделения - от верхнего правого угла к нижнему левому углу);

merge_triangle_idx0 и merge_triangle_idx1 - это индексы кандидатов слияния 0 и 1, используемых для TPM.

Более подробно TPM описан в следующем предложении: Р-Л. Ляо и К.С. Лим «CE10.3.1.b: Режим блока треугольного предсказания», доклад JVET-L0124 на 12-й встрече JVET, Макао, Китай, октябрь 2018 г. GEO объясняется в следующем документе: С. Эсенлик, Х. Гао, А. Филиппов, В. Руфицкий, А. М. Котра, Б. Ван, Э. Альшина, М. Блезер и Дж. Зауэр, «Не-CE4: Геометрическое разделение для промежуточных блоков», доклад JVET-O0489 на 15-й встрече JVET, Гетеборг, Швеция, июль 2019 г.

Раскрытый способ согласования TPM и/или GEO с WP заключается в их отключении при применении WP. 1-й вариант осуществления показан в таблице 6, это можно сделать, проверив, равно ли значение переменной weightedPredFlag 0 для единицы кодирования.

Переменная weightedPredFlag получается следующим образом:

- Если slice_type равно P, weightedPredFlag устанавливается равным pps_weighted_pred_flag.

- В противном случае (slice_type равно B) weightedPredFlag устанавливается равным pps_weighted_bipred_flag.

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

Как раскрыто выше, переменная weightedPredFlag указывает, следует ли использовать взвешенное предсказание на уровне слайса при получении взаимно предсказанных выборок слайса.

ciip_flag[x0][y0] указывает, применяется ли комбинированное слияние между изображениями и предсказание внутри изображения для текущей единицы кодирования. Индексы массива x0, y0 задают положение (x0, y0) левой верхней выборки яркости рассматриваемого блока кодирования относительно левой верхней выборки яркости изображения.

Если ciip_flag[x0][y0] отсутствует, это делается следующим образом:

- Если выполняются все следующие условия, ciip_flag[x0][y0] считается равным 1:

- sps_ciip_enabled_flag равно 1.

- general_merge_flag[x0][y0] равно 1.

- merge_subblock_flag[x0][y0] равно 0.

- Regular_merge_flag[x0][y0] равно 0.

- cbWidth меньше 128.

- cbHeight меньше 128.

- cbWidth * cbHeight больше или равно 64.

- В противном случае предполагается, что ciip_flag[x0][y0] равно 0.

Когда ciip_flag[x0][y0] равно 1, переменная IntraPredModeY[x][y] с x=x0..x0+cbWidth - 1 и y=y0..y0+cbHeight - 1 устанавливается равной INTRA_PLANAR.

Переменная MergeTriangleFlag[x0][y0], которая указывает, используется ли компенсация движения на основе треугольной формы для формирования выборок предсказания текущей единицы кодирования при декодировании B-слайса, выводится следующим образом:

- Если выполняются все следующие условия, MergeTriangleFlag[x0][y0] устанавливается равным 1:

- sps_triangle_enabled_flag равно 1.

- slice_type равно B.

- general_merge_flag[x0][y0] равно 1.

- MaxNumTriangleMergeCand больше или равно 2.

- cbWidth * cbHeight больше или равно 64.

- Regular_merge_flag[x0][y0] равно 0.

- merge_subblock_flag[x0][y0] равно 0.

- ciip_flag[x0][y0] равно 0.

- weightedPredFlag равно 0.

- В противном случае MergeTriangleFlag[x0][y0] устанавливается равным 0.

Второй вариант осуществления представлен в таблице 7. Если weightedPredFlag равно 1, синтаксический элемент max_num_merge_cand_minus_max_num_triangle_cand отсутствует и выводится с таким значением, что MaxNumTriangleMergeCand становится меньше 2.

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

max_num_merge_cand_minus_max_num_triangle_cand задает максимальное количество кандидатов для режима треугольного слияния, поддерживаемых в слайсе, вычитаемом из MaxNumMergeCand.

Когда max_num_merge_cand_minus_max_num_triangle_cand отсутствует, а sps_triangle_enabled_flag равно 1, slice_type равно B, weightedPredFlag равно 0, а MaxNumMergeCand больше или равно 2, max_num_merge_cand_minus_max_num_triangle_cand считается равным pps_max_num_merge_cand_minus_max_num_triangle_cand_minus1 + 1.

Когда max_num_merge_cand_minus_max_num_triangle_cand отсутствует, а sps_triangle_enabled_flag равно 1, slice_type равно B, weightedPredFlag равно 1, а MaxNumMergeCand больше или равно 2, max_num_merge_cand_minus_max_num_triangle_cand считается равным MaxNumMergeCand или MaxNumMergeCand-1.

Максимальное количество кандидатов треугольного режима слияния, MaxNumTriangleMergeCand, получается следующим образом:

MaxNumTriangleMergeCand =
MaxNumMergeCand − max_num_merge_cand_minus_max_num_triangle_cand

Когда присутствует max_num_merge_cand_minus_max_num_triangle_cand, значение MaxNumTriangleMergeCand должно находиться в диапазоне от 2 до MaxNumMergeCand включительно.

Когда max_num_merge_cand_minus_max_num_triangle_cand отсутствует и (sps_triangle_enabled_flag равно 0 или MaxNumMergeCand меньше 2), MaxNumTriangleMergeCand устанавливается равным 0.

Когда MaxNumTriangleMergeCand равно 0, режим слияния треугольников не разрешен для текущего слайса.

Раскрытые механизмы применимы не только для TPM и GEO, но также и для других непрямоугольных режимов предсказания и разделения, таких как комбинированное внутрикадрово-межкадровое предсказание с треугольными разделениями.

Поскольку TPM и GEO применяются только в B-слайсе, переменная weightedPredFlag в вышеупомянутых вариантах осуществления может быть заменена непосредственно переменной pps_weighted_bipred_flag.

Третий вариант осуществления показан в таблице 6, это можно сделать, проверив, равно ли значение переменной weightedPredFlag 0 для единицы кодирования.

Переменная weightedPredFlag получается следующим образом:

- Если выполняются все следующие условия, weightedPredFlag устанавливается в 0

luma_weight_l0_flag[i] равно 0 для i от 0 до NumRefIdxActive[0]

luma_weight_l1_flag[i] равно 0 для i от 0 до NumRefIdxActive[1]

chroma_weight_l0_flag[i] равно 0 для i от 0 до NumRefIdxActive[0]

chroma_weight_l0_flag[i] равно 0 для i от 0 до NumRefIdxActive[1]

- В противном случае, weightedPredFlag устанавливается в 1

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

Как раскрыто выше, переменная weightedPredFlag указывает, следует ли использовать взвешенное предсказание на уровне слайса при получении взаимно предсказанных выборок слайса.

Четвертый вариант осуществления показан в таблице 6, где weightedPredFlag заменяется на slice_weighted_pred_flag, о чем сигнализируется в заголовке слайса, как показано в таблице 8.

Как раскрыто выше, синтаксис slice_weighted_pred_flag указывает, следует ли использовать взвешенное предсказание на уровне слайса при получении внутрикадрово прогнозированных выборок слайса.

В частности, для 4-го варианта осуществления можно использовать следующую семантику:

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

Пятый вариант осуществления заключается в отключении TPM на блочном уровне посредством ограничения соответствия. В случае кодированного блока TPM весовые коэффициенты для компонентов яркости и цветности опорных изображений для межкадрового предиктора P0 710 и P1 720 (как показано на фиг. 7) не должны присутствовать.

Для получения дополнительной информации, refIdxA и predListFlagA определяют опорный индекс и список опорных изображений межкадрового предиктора P0; refIdxB и predListFlagB определяют опорный индекс и список опорных изображений межкадрового предиктора P1.

Переменные lumaWeightedFlag и chromaWeightedFlag получаются следующим образом:

lumaWeightedFlagA=predListFlagA ? luma_weight_l1_flag[refIdxA] : luma_weight_l0_flag[refIdxA]

lumaWeightedFlagB=predListFlagB ? luma_weight_l1_flag[refIdxB] : luma_weight_l0_flag[refIdxB]

chromaWeightedFlagA=predListFlagA ? chroma_weight_l1_flag[refIdxA] : chroma weight_l0_flag[refIdxA]

chromaWeightedFlagB=predListFlagB ? chroma_weight_l1_flag[refIdxB] : chroma weight_l0_flag[refIdxB]

lumaWeightedFlag=lumaWeightedFlagA || lumaWeightedFlagB

chromaWeightedFlag = chromaWeightedFlagA || chromaWeightedFlagB.

Требованием соответствия битового потока является то, что lumaWeightedFlag и chromaWeightedFlag должны быть равны 0.

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

Фиг. 7 и фиг. 8 иллюстрируют основную идею данного изобретения для TPM и GEO соответственно. Следует отметить, что варианты осуществления для TPM также могут быть реализованы для режима GEO.

В случае кодированного блока TPM, если присутствуют весовые коэффициенты для компонента яркости или цветности опорного изображения для межкадрового предиктора P0 710 или P1 720, взвешенный процесс в соответствии с параметрами WP (параметры WP 730 {w0 , O0} и параметры 740 {w1, O1} WP для P0 и P1 соответственно) используются для формирования блока межкадрового предиктора; в противном случае взвешенный процесс в соответствии с взвешенным параметром смешивания используется для создания межкадрового предиктора для блока 750. Как показано на фиг. 9, межкадровый предиктор 901 требует двух блоков предсказания P0 911 и P1 912, которые имеют область 921 перекрытия, где ненулевые веса применяются к обоим блокам 911 и 912 для частичного смешивания предикторов P0 911 и P1 912. Блоки, соседние с блоком 901, обозначены как 931, 932, 933, 934, 935 и 936 на фиг. 9. Фиг. 8 иллюстрирует разницу между режимами слияния TPM и GEO. В случае режима слияния GEO область перекрытия между предикторами 851 и 852 может располагаться не только по диагоналям межкадрово прогнозируемого блока 850. Предикторы P0 851 и P1 852 могут быть получены путем копирования блоков 810 и 820 из других изображений с применением или без применения весов и смещений {w0, O0} 830 и {w1, O1} 840 к блокам 810 и 820 соответственно.

Для получения дополнительной информации, refIdxA и predListFlagA определяют опорный индекс и список опорных изображений межкадрового предиктора P0; refIdxB и predListFlagB определяют опорный индекс и список опорных изображений межкадрового предиктора P1.

Переменные lumaWeightedFlag и chromaWeightedFlag получаются следующим образом:

lumaWeightedFlagA=predListFlagA ? luma_weight_l1_flag[refIdxA] : luma_weight_l0_flag[refIdxA]

lumaWeightedFlagB=predListFlagB ? luma_weight_l1_flag[refIdxB] : luma_weight_l0_flag[refIdxB]

chromaWeightedFlagA=predListFlagA ? chroma_weight_l1_flag[refIdxA] : chroma weight_l0_flag[refIdxA]

chromaWeightedFlagB=predListFlagB ? chroma_weight_l1_flag[refIdxB] : chroma weight_l0_flag[refIdxB]

lumaWeightedFlag=lumaWeightedFlagA || lumaWeightedFlagB

chromaWeightedFlag = chromaWeightedFlagA || chromaWeightedFlagB.

Затем, если lumaWeightedFlag имеет значение true, вызывается явный взвешенный процесс; если lumaWeightedFlag имеет значение false, вызывается процесс взвешенного смешивания. Кроме того, компонент цветности определяется посредством chromaWeightedFlag.

Для альтернативного варианта осуществления взвешенный флаг для всех компонентов рассматривается совместно. Если одно из значений lumaWeightedFlag или chromaWeightedFlag истинно, вызывается явный взвешенный процесс; если и lumaWeightedFlag, и chromaWeightedFalg равны false, вызывается процесс взвешенного смешивания.

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

Входные данные для этого процесса являются следующими:

- две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования,

- два массива (nCbW)x(nCbH) predSamplesA и predSamplesB,

- флаги списка предсказаний, predListFlagA и predListFlagB,

- опорные индексы, refIdxA и refIdxB,

- переменная cIdx, указывающая индекс компонента цвета,

- битовая глубина выборки, bitDepth.

Результатом этого процесса является массив (nCbW)x(nCbH) pbSamples значений дискретных выборок предсказания.

Переменная shift1 устанавливается равной Max( 2, 14 − bitDepth ).

Переменные log2Wd, o0, o1, w0 и w1 получаются следующим образом:

- Если cIdx равно 0 для образцов яркости, применяется следующее:

log2Wd=luma_log2_weight_denom+shift1

w0=predListFlagA ? LumaWeightL1[refIdxA]: LumaWeightL0[refIdxA]

w1=predListFlagB ? LumaWeightL1[refIdxB]: LumaWeightL0[refIdxB]

o0=( predListFlagA ? luma_offset_l1 [refIdxA] : luma_offset_l0 [refIdxA] ) << ( BitDepthY - 8 )

o1=( predListFlagB ? luma_offset_l1 [refIdxB] : luma_offset_l0 [refIdxB] ) << ( BitDepthY - 8 )

- В противном случае (cIdx не равно 0 для образцов цветности) применяется следующее:

log2Wd=ChromaLog2WeightDenom+shift1

w0=predListFlagA ? ChromaWeightL1 [refIdxA][cIdx - 1] : ChromaWeightL0 [refIdxA][cIdx - 1]

w1=predListFlagA ? ChromaWeightL1 [refIdxB][cIdx - 1] : ChromaWeightL0 [refIdxB][cIdx - 1]

o0=( predListFlagA ? ChromaOffsetL1 [refIdxA][cIdx - 1] : ChromaOffsetL0 [refIdxA][cIdx - 1] ) << ( BitDepthC - 8 )

o1=( predListFlagB ? ChromaOffsetL1 [refIdxB][cIdx - 1] : ChromaOffsetL0 [refIdxB][cIdx - 1] ) << ( BitDepthC - 8 )

Выборка предсказания pbSamples[x][y] с x=0..nCbW - 1 и y=0..nCbH - 1 получается следующим образом:

pbSamples[x][y]=Clip3( 0, ( 1 << bitDepth ) − 1, ( predSamplesA[x][y] * w0+predSamplesB[x][y] * w1 + ( ( o0+o1+1 ) << log2Wd )) >> ( log2Wd+1 ))

Параметры взвешенного предсказания на уровне слайса могут быть представлены в виде набора переменных, присвоенных каждому элементу списка опорных изображений. Индекс элемента далее обозначается как «i». Эти параметры могут содержать:

- LumaWeightL0[i]

- luma_offset_l0[i] - это аддитивное смещение, применяемое к значению предсказания яркости для предсказания списка 0 с использованием RefPicList[0][i]. Значение luma_offset_l0[i] должно находиться в диапазоне от −128 до 127 включительно. Когда luma_weight_l0_flag[i] равно 0, luma_offset_l0[i] считается равным 0.

Переменная LumaWeightL0[i] получается равной (1 << luma_log2_weight_denom) + delta_luma_weight_l0[i]. Когда luma_weight_l0_flag[i] равно 1, значение delta_luma_weight_l0[i] должно находиться в диапазоне от −128 до 127 включительно. Когда luma_weight_l0_flag[i] равно 0, LumaWeightL0[i] предполагается равным 2luma_log2_weight_denom.

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

Входные данные для этого процесса являются следующими:

- две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования,

- два массива (nCbW)x(nCbH) predSamplesLA и predSamplesLB

- переменная triangleDir, указывающая направление раздела,

- переменная cIdx, указывающая индекс компонента цвета.

Результатом этого процесса является массив (nCbW)x(nCbH) pbSamples значений дискретных выборок предсказания.

Переменная nCbR получается следующим образом:

nCbR=(nCbW > nCbH) ? (nCbW/nCbH): ( nCbH/nCbW )

Переменная bitDepth выводится следующим образом:

- Если cIdx равно 0, bitDepth устанавливается равной BitDepthY.

- В противном случае bitDepth устанавливается равной BitDepthC.

Переменные shift1 и offset1 выводятся следующим образом:

- Переменная shift1 устанавливается равной Max(5, 17 − bitDepth).

- Переменная offset1 устанавливается равной 1 << (shift1 − 1).

В зависимости от значений triangleDir, wS и cIdx выборки предсказания pbSamples[x][y] с x=0..nCbW - 1 и y=0..nCbH - 1 получаются следующим образом:

- Переменная wIdx выводится следующим образом:

- Если cIdx равно 0, а triangleDir равно 0, применяется следующее:

wIdx=(nCbW > nCbH) ? ( Clip3 ( 0, 8 , ( x/nCbR - y ) + 4 )) : ( Clip3( 0, 8, ( x − y/nCbR ) + 4 ))

- В противном случае, если cIdx равно 0, а triangleDir равно 1, применяется следующее:

wIdx=(nCbW > nCbH) ? ( Clip3( 0, 8, ( nCbH - 1 - x/nCbR - y ) + 4 ) ) ( Clip3( 0, 8, ( nCbW - 1 - x - y/nCbR ) + 4 ))

- В противном случае, если cIdx больше 0, а triangleDir равно 0, применяется следующее:

wIdx=(nCbW > nCbH) ? ( Clip3 ( 0, 4, ( x/nCbR - y ) + 2 )) : ( Clip3( 0, 4, ( x − y/nCbR ) + 2 ))

- В противном случае (если cIdx больше 0, а triangleDir равно 1), применяется следующее:

wIdx=(nCbW > nCbH) ? ( Clip3( 0, 4, ( nCbH - 1 - x/nCbR - y ) + 2 ) ) ( Clip3( 0, 4, ( nCbW - 1 - x - y/nCbR ) + 2 ))

- Переменная wValue, указывающая вес выборки предсказания, выводится с использованием wIdx и cIdx следующим образом:

wValue=( cIdx== 0 ) ? Clip3 (0, 8, wIdx): Clip3( 0, 8, wIdx * 2 )

- Значения выборки предсказания получаются следующим образом:

pbSamples[x][y]=Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesLA [x][y] * wValue+predSamplesLB [x][y] * ( 8 - wValue ) + offset1 ) >> shift1 )

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

Входные данные для этого процесса являются следующими:

- две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования,

- два массива (nCbW)x(nCbH) predSamplesLA и predSamplesLB

- переменная angleIdx, указывающая индекс угла геометрического раздела,

- переменная DistanceIdx, определяющая расстояние idx геометрического раздела,

- переменная cIdx, указывающая индекс компонента цвета.

Результатом этого процесса является массив (nCbW)x(nCbH) pbSamples значений выборки предсказания и переменная partIdx.

Переменная bitDepth выводится следующим образом:

-Если cIdx равно 0, bitDepth устанавливается равной BitDepthY.

- В противном случае bitDepth устанавливается равной BitDepthC.

Переменные shift1 и offset1 выводятся следующим образом:

- Переменная shift1 устанавливается равной Max(5, 17 − bitDepth).

- Переменная offset1 устанавливается равной 1 << (shift1 − 1).

Массив весов sampleWeightL[x][y] для яркости и sampleWeightC[x][y] для цветности с x=0..nCbW - 1 и y=0..nCbH - 1 получаются следующим образом:

Устанавливаются значения следующих переменных:

- hwRatio устанавливается в nCbH/nCbW

- displacementX устанавливается в angleIdx.

- displacementY устанавливается в (displacementX + 8) % 32.

- partIdx устанавливается в angleIdx >= 13 && angleIdx <= 27 ? 1 : 0

- rho устанавливается в следующее значение с использованием справочных таблиц, обозначенных как Dis, указанных в таблице 8-12:

rho=(Dis[displacementX]<< 8) + (Dis[displacementY] << 8)

Если выполняется одно из следующих условий, переменная shiftHor устанавливается равной 0:

angleIdx% 16 равно 8

angleIdx % 16 не равно 0 и hwRatio ≥ 1

В противном случае shiftHor устанавливается равным 1.

Если shiftHor равно 0, offsetX и offsetY выводятся следующим образом:

offsetX=( 256 − nCbW ) >> 1

offsetY=( 256 − nCbH ) >> 1+angleIdx < 16 ? (distanceIdx * nCbH) >> 3 : −((distanceIdx * nCbH) >> 3)

В противном случае, если shiftHor равно 1, offsetX и offsetY получаются следующим образом:

offsetX=( 256 − nCbW ) >> 1+angleIdx < 16 ? (distanceIdx * nCbW) >> 3 : −((distanceIdx * nCbW) >> 3)

offsetY=( 256 - nCbH ) >> 1

Переменные weightIdx и weightIdxAbs рассчитываются с использованием справочной таблицы таблицы 9 с x=0..nCbW - 1 и y=0..nCbH - 1 следующим образом:

weightIdx=(((x+offsetX)<<1) + 1)*Dis[displacementX] + (((y+offsetY )<<1) + 1))*Dis[displacementY] − rho.

weightIdxAbs=Clip3(0, 26, abs(weightIdx)).

Значение sampleWeightL[x][y] при x=0..nCbW − 1 и y=0..nCbH - 1 устанавливается согласно таблице 10, обозначаемой как GeoFilter:

sampleWeightL[x][y]=weightIdx <= 0 ? GeoFilter[weightIdxAbs] : 8 - GeoFilter [weightIdxAbs]

Значение sampleWeightC[x][y] с x=0..nCbW − 1 и y=0..nCbH - 1 устанавливается следующим образом:

sampleWeightC[x][y]= sampleWeightL[(x<< (SubWidthC - 1) )][(y<<(SubHeightC - 1) )]

ПРИМЕЧАНИЕ - Значение выборки sampleWeightL[x][y] также может быть получено из sampleWeightL[x -shiftX][y-shiftY]. Если angleIdx больше 4 и меньше 12, или angleIdx больше 20 и меньше 24, shiftX является тангенсом угла разделения, а shiftY равно 1, в противном случае shiftX равно 1 угла разделения, а shiftY является котангенсом угла разделения. Если значение тангенса (соотв. котангенса) равно бесконечности, shiftX равно 1 (соотв. 0) или сдвиг Y равно 0 (повтор. 1).

Значения выборки предсказания получаются следующим образом, когда X обозначается как L или C, где cIdx равно 0 или не равно 0:

pbSamples[x][y]=partIdx?

Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesLA[x][y] * ( 8 - sampleWeightX [x][y]) + predSamplesLB [x][y] * sampleWeightX [x][y] + offset1 ) >> shift1 )

: Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesLA[x][y] * sampleWeightX [x][y] + predSamplesLB [x][y] * ( 8 - sampleWeightX [x][y]) + offset1 ) >> shift1 )

Таблица 9 Справочная таблица Dis для получения весовых коэффициентов геометрического разделения.

idx 0 1 2 4 6 7 8 9 10 12 14 15 Dis[idx] 8 8 8 8 4 2 0 -2 -4 -8 -8 -8 idx 16 17 18 20 22 23 24 25 26 28 30 31 Dis[idx] -8 -8 -8 -8 -4 -2 0 2 4 8 8 8

Таблица 10 Справочная таблица весов фильтров GeoFilter для получения весов фильтров геометрического разделения.

idx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 GeoFilter[idx] 4 4 4 4 5 5 5 5 5 5 5 6 6 6 idx 14 15 16 17 18 19 20 21 22 23 24 25 26 GeoFilter[idx] 6 6 6 6 7 7 7 7 7 7 7 7 8

В проекте 7 (Draft 7) спецификации VVC (документ JVET-P2001-vE: Б. Бросс, Дж. Чен, С. Лю, Ю.-К. Ван, «Универсальное кодирование видео (Проект 7)», выходной документ JVET-P2001 16-го собрания JVET, Женева, Швейцария; этот документ содержится в файле JVET-P2001-v14: http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/16_Geneva/wg11/JVET-P2001-v14.zip), концепция заголовка изображения (PH ) была введена путем перемещения части синтаксических элементов из заголовка слайса (SH) в PH, чтобы уменьшить накладные расходы на сигнализацию, вызванные присваиванием одинаковых или подобных значений одинаковым синтаксическим элементам в каждом SH, связанном с PH. Как показано в Таблице 11, синтаксические элементы для управления максимальным количеством кандидатов слияния для режима слияния TPM сигнализируются в PH, тогда как параметры взвешенного предсказания по-прежнему находятся в SH, как показано в Таблице 12 и Таблице 14. Семантика синтаксических элементов, используемых в Таблице 12 и Таблице 13, описана ниже.

Семантика RBSP заголовка изображения

PH содержит информацию, общую для всех слайсов кодированного изображения, связанного с PH.

non_reference_picture_flag, равное 1, указывает, что изображение, связанное с PH, никогда не используется в качестве опорного изображения. non_reference_picture_flag, равное 0, указывает, что изображение, связанное с PH, может использоваться или не использоваться в качестве опорного изображения.

gdr_pic_flag, равное 1, указывает, что изображение, связанное с PH, является изображением постепенного обновления декодирования (GDR). gdr_pic_flag, равное 0, указывает, что изображение, связанное с PH, не является изображением GDR.

no_output_of_prior_pics_flag влияет на вывод ранее декодированных изображений в буфер декодированных изображений (DPB) после декодирования изображения начала видеопоследовательности кодированного уровня (CLVSS), которое не является первым изображением в битовом потоке.

recovery_poc_cnt указывает точку восстановления декодированных изображений в порядке вывода. Если текущее изображение представляет собой изображение GDR, связанное с PH, и имеется изображение picA, которое следует за текущим изображением GDR в порядке декодирования в видеопоследовательности кодированного уровня (CLVS) и имеет PicOrderCntVal, равное PicOrderCntVal текущего изображения GDR плюс значение recovery_poc_cnt, изображение picA называется изображением точки восстановления. В противном случае первое изображение в порядке вывода, у которого PicOrderCntVal больше, чем PicOrderCntVal текущего изображения плюс значение recovery_poc_cnt, называется изображением точки восстановления. Изображение точки восстановления не должно предшествовать текущему изображению GDR в порядке декодирования. Значение recovery_poc_cnt должно находиться в диапазоне от 0 до MaxPicOrderCntLsb - 1 включительно.

ПРИМЕЧАНИЕ 1. - Когда gdr_enabled_flag равно 1, а PicOrderCntVal текущего изображения больше или равно RpPicOrderCntVal связанного изображения GDR, текущее и последующие декодированные изображения в порядке вывода точно совпадают с соответствующими изображениями, созданными при запуске процесса декодирования. из изображения предыдущей внутренней точки произвольного доступа (IRAP), если оно присутствует, предшествующее ассоциированному изображению GDR в порядке декодирования.

ph_pic_parameter_set_id указывает значение pps_pic_parameter_set_id для используемого PPS. Значение ph_pic_parameter_set_id должно находиться в диапазоне от 0 до 63 включительно.

Требованием соответствия битового потока является то, что значение TemporalId PH должно быть больше или равно значению TemporalId набора параметров изображения (PPS), у которого pps_pic_parameter_set_id равно ph_pic_parameter_set_id.

sps_poc_msb_flag, равное 1, указывает, что синтаксический элемент ph_poc_msb_cycle_present_flag присутствует в PH, ссылаясь на набор параметров последовательности (SPS). sps_poc_msb_flag, равное 0, указывает, что синтаксический элемент ph_poc_msb_cycle_present_flag отсутствует в PH, ссылающихся на SPS.

ph_poc_msb_present_flag, равное 1, указывает, что синтаксический элемент poc_msb_val присутствует в PH. ph_poc_msb_present_flag, равное 0, указывает, что синтаксический элемент poc_msb_val отсутствует в PH. Когда vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равно 0 и в текущей единице доступа (AU) на опорном уровне текущего уровня есть изображение, значение ph_poc_msb_present_flag должно быть равно 0.

poc_msb_val задает значение старшего значащего бита (MSB) счетчика порядка изображения (POC) текущего изображения. Длина синтаксического элемента poc_msb_val равна poc_msb_len_minus1+1 бит.

sps_triangle_enabled_flag указывает, можно ли использовать компенсацию движения на основе треугольной формы для межкадрового предсказания. sps_triangle_enabled_flag, равное 0, указывает, что синтаксис должен быть ограничен таким образом, чтобы компенсация движения на основе треугольной формы не использовалась в видеопоследовательности кодированного уровня (CLVS), а функции merge_triangle_split_dir, merge_triangle_idx0 и merge_triangle_idx1 не присутствовали в синтаксисе единицы кодирования CLVS. sps_triangle_enabled_flag, равное 1, указывает, что в CLVS можно использовать компенсацию движения на основе треугольной формы.

pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1, равное 0, указывает, что pic_max_num_merge_cand_minus_max_num_triangle_cand присутствует в PH слайсов, относящихся к набору параметров изображения (PPS). pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 больше 0 указывает, что pic_max_num_merge_cand_minus_max_num_triangle_cand отсутствует в PH, относящихся к PPS. Значение pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 должно находиться в диапазоне от 0 до MaxNumMergeCand - 1.

pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1, равное 0, указывает, что pic_max_num_merge_cand_minus_max_num_triangle_cand присутствует в PH слайсов, относящихся к PPS. pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 больше 0 указывает, что pic_max_num_merge_cand_minus_max_num_triangle_cand отсутствует в PH, относящихся к PPS. Значение pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 должно находиться в диапазоне от 0 до MaxNumMergeCand - 1.

pic_six_minus_max_num_merge_cand указывает максимальное количество кандидатов предсказания вектора движения со слиянием (MVP), поддерживаемых в слайсах, связанных с PH, вычтенным из 6. Максимальное количество объединяющихся кандидатов MVP, MaxNumMergeCand, получается следующим образом:

MaxNumMergeCand=6 - picsix_minus_max_num_merge_cand

Значение MaxNumMergeCand должно быть в диапазоне от 1 до 6 включительно. При отсутствии предполагается, что значение pic_six_minus_max_num_merge_cand равно pps_six_minus_max_num_merge_cand_plus1-1.

Общая семантика заголовка слайса.

При наличии значение синтаксического элемента заголовка слайса slice_pic_order_cnt_lsb должно быть одинаковым во всех заголовках слайса кодированного изображения.

Переменная CuQpDeltaVal, определяющая разницу между параметром квантования яркости для единицы кодирования, содержащей cu_qp_delta_abs, и ее предсказанием, устанавливается равной 0. Все переменные CuQpOffsetCb, CuQpOffsetCr и CuQpOffsetCbCr, задающие значения, которые должны использоваться при определении соответствующих значений параметров квантования Qp'Cb, Qp'Cr и Qp'CbCr для единицы кодирования, содержащей cu_chroma_qp_offset_flag, устанавливаются равными 0.

slice_pic_order_cnt_lsb задает счетчик порядка изображений по модулю MaxPicOrderCntLsb для текущего изображения. Длина синтаксического элемента slice_pic_order_cnt_lsb составляет log2_max_pic_order_cnt_lsb_minus4+4 бита. Значение slice_pic_order_cnt_lsb должно находиться в диапазоне от 0 до MaxPicOrderCntLsb − 1 включительно.

Когда текущее изображение является изображением GDR, переменная RpPicOrderCntVal получается следующим образом:

RpPicOrderCntVal=PicOrderCntVal+recovery_poc_cnt.

slice_subpic_id задает идентификатор субизображения для субизображения, которая содержит слайс. Если присутствует slice_subpic_id, значение переменной SubPicIdx выводится так, чтобы SubpicIdList[SubPicIdx] было равно slice_subpic_id. В противном случае (slice_subpic_id отсутствует) переменная SubPicIdx выводится равной 0. Длина slice_subpic_id в битах определяется следующим образом:

Если sps_subpic_id_signalling_present_flag равно 1, длина slice_subpic_id равна sps_subpic_id_len_minus1+1.

В противном случае, если ph_subpic_id_signalling_present_flag равно 1, длина slice_subpic_id равна ph_subpic_id_len_minus1+1.

В противном случае, если pps_subpic_id_signalling_present_flag равно 1, длина slice_subpic_id равна pps_subpic_id_len_minus1+1.

В противном случае длина slice_subpic_id равна Ceil(Log2 (sps_num_subpics_minus1+1)).

slice_address указывает адрес слайса. При отсутствии предполагается, что значение slice_address равно 0.

Если rect_slice_flag равно 0, применяется следующее:

Адрес слайса - это индекс тайла растрового сканирования.

Длина slice_address составляет Ceil(Log2 (NumTilesInPic)) бит.

Значение slice_address должно быть в диапазоне от 0 до NumTilesInPic - 1 включительно.

В противном случае (rect_slice_flag равно 1) применяется следующее:

Адрес слайса представляет собой индекс слайса в субизображении SubPicIdx-го.

Длина slice_address составляет Ceil(Log2(NumSlicesInSubpic[SubPicIdx])) бит.

Значение slice_address должно находиться в диапазоне от 0 до NumSlicesInSubpic[SubPicIdx] - 1 включительно.

Требованием соответствия битового потока являются следующие ограничения:

Если rect_slice_flag равно 0 или subpics_present_flag равно 0, значение slice_address не должно быть равно значению slice_address любой другой кодированной единицы уровня сетевой абстракции (NAL) слайса того же кодированного изображения.

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

Когда rect_slice_flag равно 0, слайсы изображения должны располагаться в порядке возрастания их значений slice_address.

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

num_tiles_in_slice_minus1 плюс 1, если присутствует, указывает количество тайлов в слайсе. Значение num_tiles_in_slice_minus1 должно быть в диапазоне от 0 до NumTilesInPic - 1 включительно.

Переменная NumCtuInCurrSlice, которая задает количество CTU в текущем слайсе, и список CtbAddrInCurrSlice[i], для i в диапазоне от 0 до NumCtuInCurrSlice − 1 включительно, задающий адрес растрового сканирования изображения i-го блока дерева кодирования (CTB) внутри слайса получаются следующим образом:

Переменные SubPicLeftBoundaryPos, SubPicTopBoundaryPos, SubPicRightBoundaryPos и SubPicBotBoundaryPos получаются следующим образом:

slice_type задает тип кодирования слайса в соответствии с таблицей 13.

Таблица 13 - Связь имени с slice_type

slice_type Имя slice_type 0 B (B-слайс) 1 P (P-слайс) 2 I (I-слайс)

slice_rpl_sps_flag[i], равное 1, указывает, что список опорных изображений i текущего слайса выводится на основе одной из синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ) с listIdx, равным i в SPS. slice_rpl_sps_flag[i], равное 0, указывает, что список опорных изображений i текущего слайса выводится на основе синтаксической структуры ref_pic_list_struct( listIdx, rplsIdx ) с listIdx, равным i, который непосредственно включен в заголовки слайсов текущего изображения.

Когда slice_rpl_sps_flag[i] отсутствует, применяется следующее:

- Если pic_rpl_present_flag равно 1, предполагается, что значение slice_rpl_sps_flag[i] равно pic_rpl_sps_flag[i].

- В противном случае, если num_ref_pic_lists_in_sps[i] равно 0, предполагается, что значение ref_pic_list_sps_flag[i] равно 0.

- В противном случае, если num_ref_pic_lists_in_sps[i] больше 0 и, если rpl1_idx_present_flag равно 0, предполагается, что значение slice_rpl_sps_flag[1] равно slice_rpl_sps_flag[0].

slice_rpl_idx[i] указывает индекс в списке синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ) с listIdx, равным i, включенных в SPS, синтаксической структуры ref_pic_list_struct( listIdx, rplsIdx ) с listIdx, равным i, которая используется для получение списка опорных изображений i текущего изображения. Синтаксический элемент slice_rpl_idx[i] представлен битами Ceil(Log2(num_ref_pic_lists_in_sps[i])). При отсутствии предполагается, что значение slice_rpl_idx[i] равно 0. Значение slice_rpl_idx[i] должно находиться в диапазоне от 0 до num_ref_pic_lists_in_sps[i] - 1 включительно. Когда slice_rpl_sps_flag[i] равно 1, а num_ref_pic_lists_in_sps[i] равно 1, предполагается, что значение slice_rpl_idx[i] равно 0. Когда slice_rpl_sps_flag[i] равно 1, а rpl1_idx_present_flag равно 0, предполагается, что значение slice_rpl_idx[1] равно slice_rpl_idx[0].

Переменная RplsIdx[i] получается следующим образом:

slice_poc_lsb_lt[i][j] задает значение счетчика порядка изображений по модулю MaxPicOrderCntLsb j-й записи LTRP в i-м списке опорных изображений. Длина синтаксического элемента slice_poc_lsb_lt[i][j] составляет log2_max_pic_order_cnt_lsb_minus4+4 бита.

Переменная PocLsbLt[i][j] получается следующим образом:

slice_delta_poc_msb_present_flag[i][j], равное 1, указывает, что slice_delta_poc_msb_cycle_lt[i][j] присутствует. slice_delta_poc_msb_present_flag[i][j], равное 0, указывает, что slice_delta_poc_msb_cycle_lt[i][j] не присутствует.

Пусть prevTid0Pic будет предыдущим изображением в порядке декодирования, которое имеет nuh_layer_id такое же, как у текущего изображения, имеет TemporalId, равное 0, и не является пропускаемым опережающим изображением произвольного доступа (Random Access Skipped Leading, RASL) или декодируемым опережающим изображением произвольного доступа (Random Access Decodable Leading, RADL). Пусть setOfPrevPocVals будет набором, состоящим из следующего:

- PicOrderCntVal для prevTid0Pic,

- PicOrderCntVal каждого изображения, на которое ссылаются записи в RefPicList[0] или RefPicList[1] prevTid0Pic, и которое имеет такой же nuh_layer_id, что и текущее изображение,

- PicOrderCntVal каждого изображения, которое следует за prevTid0Pic в порядке декодирования, имеет nuh_layer_id, такой же, как у текущего изображения, и предшествует текущему изображению в порядке декодирования.

Когда pic_rpl_present_flag равно 0 и в setOfPrevPocVals имеется более одного значения, для которого значение по модулю MaxPicOrderCntLsb равно PocLsbLt[i][j], значение slice_delta_poc_msb_present_flag[i][j] должно быть равно 1.

slice_delta_poc_msb_cycle_lt[i][j] указывает значение переменной FullPocLt[i][j] следующим образом:

Значение slice_delta_poc_msb_cycle_lt[i][j] должно находиться в диапазоне от 0 до 2(32 − log2_max_pic_order_cnt_lsb_minus4 − 4) включительно. При отсутствии предполагается, что значение slice_delta_poc_msb_cycle_lt[i][j] равно 0.

num_ref_idx_active_override_flag, равное 1, указывает, что синтаксический элемент num_ref_idx_active_minus1[0] присутствует для P- и B-слайсов и что синтаксический элемент num_ref_idx_active_minus1[1] присутствует для B-слайсов. num_ref_idx_active_override_flag, равное 0, указывает, что синтаксические элементы num_ref_idx_active_minus1[0] и num_ref_idx_active_minus1[1] отсутствуют. При отсутствии предполагается, что значение num_ref_idx_active_override_flag равно 1.

num_ref_idx_active_minus1[i] используется для получения переменной NumRefIdxActive[i], как указано в уравнении 145. Значение num_ref_idx_active_minus1[i] должно находиться в диапазоне от 0 до 14 включительно.

Для i, равного 0 или 1, когда текущий слайс является B-слайсом, num_ref_idx_active_override_flag равно 1, а num_ref_idx_active_minus1[i] отсутствует, предполагается, что num_ref_idx_active_minus1[i] равно 0.

Когда текущий слайс является P-слайсом, num_ref_idx_active_override_flag равно 1, а num_ref_idx_active_minus1[0] отсутствует, предполагается, что num_ref_idx_active_minus1[0] равно 0.

Переменная NumRefIdxActive[i] получается следующим образом:

Значение NumRefIdxActive[i] - 1 задает максимальный опорный индекс для списка опорных изображений i, который может использоваться для декодирования слайса. Когда значение NumRefIdxActive[i] равно 0, опорный индекс для списка опорных изображений i не может использоваться для декодирования слайса.

Когда текущий слайс является P-слайсом, NumRefIdxActive[0] должно быть больше 0.

Когда текущий слайс является B-слайсом, значения NumRefIdxActive[0] и NumRefIdxActive[1] должны быть больше 0.

Семантика параметров взвешенного предсказания

luma_log2_weight_denom - логарифм по основанию 2 знаменателя для всех весовых коэффициентов яркости. Значение luma_log2_weight_denom должно находиться в диапазоне от 0 до 7 включительно.

delta_chroma_log2_weight_denom - это разность логарифма по основанию 2 знаменателя для всех весовых коэффициентов цветности. Когда delta_chroma_log2_weight_denom отсутствует, предполагается, что оно равно 0.

Переменная ChromaLog2WeightDenom получается равной luma_log2_weight_denom+delta_chroma_log2_weight_denom, и ее значение должно находиться в диапазоне от 0 до 7 включительно.

luma_weight_l0_flag[i], равное 1, указывает, что присутствуют весовые коэффициенты для компонента яркости предсказания списка 0 с использованием RefPicList[0][i]. luma_weight_l0_flag[i], равное 0, указывает, что эти весовые коэффициенты отсутствуют.

chroma_weight_l0_flag[i], равное 1, указывает, что присутствуют весовые коэффициенты для значений предсказания цветности списка 0 предсказания с использованием RefPicList[0][i]. chroma_weight_l0_flag[i], равное 0, указывает, что эти весовые коэффициенты отсутствуют. Когда chroma_weight_l0_flag[i] отсутствует, предполагается, что оно равно 0.

delta_luma_weight_l0[i] - разница весового коэффициента, примененного к значению предсказания яркости для предсказания списка 0 с использованием RefPicList[0][i].

Переменная LumaWeightL0[i] получается равной (1 << luma_log2_weight_denom) + delta_luma_weight_l0[i]. Когда luma_weight_l0_flag[i] равно 1, значение delta_luma_weight_l0[i] должно находиться в диапазоне от −128 до 127 включительно. Когда luma_weight_l0_flag[i] равно 0, LumaWeightL0[i] предполагается равным 2luma_log2_weight_denom.

luma_offset_l0[i] - аддитивное смещение, применяемое к значению предсказания яркости для предсказания списка 0 с использованием RefPicList[0][i]. Значение luma_offset_l0[i] должно находиться в диапазоне от −128 до 127 включительно. Когда luma_weight_l0_flag[i] равно 0, luma_offset_l0[i] считается равным 0.

delta_chroma_weight_l0[i][j] представляет собой разницу весового коэффициента, примененного к значениям предсказания цветности для предсказания списка 0 с использованием RefPicList[0][i] с j, равным 0 для Cb, и j, равным 1 для Cr.

Переменная ChromaWeightL0[i][j] получается равной (1 << ChromaLog2WeightDenom) + delta_chroma_weight_l0[i][j]. Когда chroma_weight_l0_flag[i] равно 1, значение delta_chroma_weight_l0[i][j] должно находиться в диапазоне от -128 до 127 включительно. Когда chroma_weight_l0_flag[i] равно 0, предполагается, что ChromaWeightL0[i][j] равно 2ChromaLog2WeightDenom.

delta_chroma_offset_l0[i][j] представляет собой разность аддитивного смещения, примененного к значениям предсказания цветности для предсказания списка 0 с использованием RefPicList[0][i] с j, равным 0 для Cb, и j, равным 1 для Cr.

Переменная ChromaOffsetL0[i][j] получается следующим образом:

ChromaOffsetL0[i][j]=Clip3(−128, 127, (128+delta_chroma_offset_l0[i][j] − ((128 * ChromaWeightL0[i][j]) >> ChromaLog2WeightDenom))

Значение delta_chroma_offset_l0[i][j] должно находиться в диапазоне от −4 * 128 до 4 * 127 включительно. Когда chroma_weight_l0_flag[i] равно 0, предполагается, что ChromaOffsetL0[i][j] равно 0.

luma_weight_l1_flag[i], chroma_weight_l1_flag[i], delta_luma_weight_l1[i], luma_offset_l1[i], delta_chroma_weight_l1[i][j] и delta_chroma_offset_l1[i][j] имеют ту же семантику, что и luma_weight_l0_flag[i], chroma_weight_l0_flag[i] , delta_luma_weight_l0[i], luma_offset_l0[i], delta_chroma_weight_l0[i][j] и delta_chroma_offset_l0[i][j] соответственно, где l0, L0, list 0 и List0 заменены на l1, L1, list 1 и List1 соответственно.

Переменная sumWeightL0Flags получается равной сумме luma_weight_l0_flag[i] + 2 * chroma_weight_l0_flag[i], для i=0..NumRefIdxActive[0] - 1.

Когда slice_type равно B, переменная sumWeightL1Flags получается равной сумме luma_weight_l1_flag[i] + 2 * chroma_weight_l1_flag[i], для i=0..NumRefIdxActive[1] - 1.

Требованием соответствия битового потока является то, что, когда slice_type равно P, sumWeightL0Flags должно быть меньше или равно 24, а когда slice_type равно B, сумма sumWeightL0Flags и sumWeightL1Flags должна быть меньше или равна 24.

Семантика структуры списка опорных изображений

Синтаксическая структура ref_pic_list_struct( listIdx, rplsIdx ) может присутствовать в SPS или в заголовке слайса. В зависимости от того, включена ли синтаксическая структура в заголовок слайса или в SPS, применяется следующее:

- Синтаксическая структура ref_pic_list_struct(listIdx, rplsIdx), если она присутствует в заголовке слайса, задает список опорных изображений listIdx текущего изображения (изображение, содержащее слайс).

- В противном случае (присутствует в SPS) синтаксическая структура ref_pic_list_struct( listIdx, rplsIdx ) задает кандидата в список опорных изображений listIdx, а термин «текущее изображение» в семантике, указанной в оставшейся части этого пункта, относится к каждому изображению, которое 1) имеет один или более слайсов, содержащих ref_pic_list_idx[listIdx], равный индексу в списке синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ), включенных в SPS, и 2) находится в кодированной видеопоследовательности (CVS), которая ссылается на SPS.

num_ref_entries[listIdx][rplsIdx] указывает количество записей в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ). Значение num_ref_entries[listIdx][rplsIdx] должно находиться в диапазоне от 0 до MaxDecPicBuffMinus1+14 включительно.

ltrp_in_slice_header_flag[listIdx][rplsIdx], равное 0, указывает, что младшие значащие биты POC записей LTRP в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx) присутствуют в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx). ltrp_in_slice_header_flag[listIdx][rplsIdx], равное 1, указывает, что младшие значащие биты POC записей долгосрочного опорного изображения (LTRP) в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx) отсутствуют в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx).

inter_layer_ref_pic_flag[listIdx][rplsIdx][i], равное 1, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является записью межуровневого опорного изображения (Inter-Layer Reference Picture, ILRP). inter_layer_ref_pic_flag[listIdx][rplsIdx][i], равное 0, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) не является записью ILRP. При отсутствии предполагается, что значение inter_layer_ref_pic_flag[listIdx][rplsIdx][i] равно 0.

st_ref_pic_flag[listIdx][rplsIdx][i], равное 1, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является записью STRP. st_ref_pic_flag[listIdx][rplsIdx][i], равное 0, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является записью LTRP. Когда inter_layer_ref_pic_flag[listIdx][rplsIdx][i] равно 0, а st_ref_pic_flag[listIdx][rplsIdx][i] отсутствует, значение st_ref_pic_flag[listIdx][rplsIdx][i] считается равным 1.

Переменная NumLtrpEntries[listIdx][rplsIdx] получается следующим образом:

abs_delta_poc_st[listIdx][rplsIdx][i] указывает значение переменной AbsDeltaPocSt[listIdx][rplsIdx][i] следующим образом:

Значение abs_delta_poc_st[listIdx][rplsIdx][i] должно быть в диапазоне от 0 до 215-1 включительно.

strp_entry_sign_flag[listIdx][rplsIdx][i] равное 1 указывает, что i-я запись в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx) имеет значение больше или равное 0. strp_entry_sign_flag[listIdx][rplsIdx][i] равное 0 указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) имеет значение меньше 0. При отсутствии предполагается, что значение strp_entry_sign_flag[listIdx][rplsIdx][i] равно 1.

Список DeltaPocValSt[listIdx][rplsIdx] получается следующим образом:

rpls_poc_lsb_lt[listIdx][rplsIdx][i] задает значение счетчика порядка изображений по модулю MaxPicOrderCntLsb изображения, на которое ссылается i-я запись в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx). Длина синтаксического элемента rpls_poc_lsb_lt[listIdx][rplsIdx][i] составляет log2_max_pic_order_cnt_lsb_minus4+4 бита.

ilrp_idx[listIdx][rplsIdx][i] указывает индекс в списке прямых опорных уровней ILRP i-й записи в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ). Значение ilrp_idx[listIdx][rplsIdx][i] должно находиться в диапазоне от 0 до NumDirectRefLayers[GeneralLayerIdx[nuh_layer_id]] - 1 включительно.

Таким образом, могут использоваться различные механизмы для управления режимами слияния GEO/TPM в зависимости от того, применяется ли WP к опорным изображениям, из которых берутся опорные блоки P0 и P1, а именно:

- Перемещение параметров WP, перечисленных в таблице 14, из SH в PH;

- Перемещение параметров GEO/TPM из PH обратно в SH;

- Изменение семантики MaxNumTriangleMergeCand, т.е. путем установки MaxNumTriangleMergeCand равным 0 или 1 для таких слайсов, когда можно использовать опорные изображения с WP (например, где по меньшей мере один из флагов lumaWeightedFlag или равен true).

Для режима слияния TPM примерные опорные блоки P0 и P1 обозначены 710 и 720 на фиг. 7 соответственно. Для режима слияния GEO примерные опорные блоки P0 и P1 обозначены 810 и 820 на фиг. 8 соответственно.

В варианте осуществления, когда параметры WP и включение непрямоугольных режимов (например, GEO и TPM) сигнализируются в заголовке изображения, может использоваться следующий синтаксис, как показано в таблице ниже:

Переменная WPDisabled устанавливается равной 1, когда все значения luma_weight_l0_flag[i], chroma_weight_l0_flag[i], luma_weight_l1_flag[j] и chroma_weight_l1_flag[j] установлены в ноль, значение i=0.. NumRefIdxActive[0]; и значение j=0.. NumRefIdxActive[1]; в противном случае значение WPDisabled устанавливается равным 0.

Когда переменная WPDisabled установлена равной 0, значение pic_max_num_merge_cand_minus_max_num_triangle_cand устанавливается равным MaxNumMergeCand

Во втором варианте осуществления сигнализация параметров WP и включение непрямоугольных режимов (например, GEO и TPM) выполняются в заголовке слайса. Примерный синтаксис приведен в таблице ниже:

….

Переменная WPDisabled устанавливается равной 1, когда все значения luma_weight_l0_flag[i], chroma_weight_l0_flag[i], luma_weight_l1_flag[j] и chroma_weight_l1_flag[j] установлены в ноль, значение i=0.. NumRefIdxActive[0]; и значение j=0.. NumRefIdxActive[1]; в противном случае значение WPDisabled устанавливается равным 0.

Когда переменная WPDisabled установлена равной 0, значение max_num_merge_cand_minus_max_num_triangle_cand устанавливается равным MaxNumMergeCand

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

В третьем варианте осуществления определение того, включен ли TPM или GEO, выполняется с учетом списков опорных изображений, которые блок может использовать для непрямоугольного взвешенного предсказания. Когда список слияния для блока содержит элементы только из одного списка опорных изображений k, значение переменной WPDisabled [k] определяет, включен ли этот режим слияния или нет.

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

Следующая часть описания иллюстрирует четвертый вариант осуществления:

Входные данные для этого процесса являются следующими:

- местоположение яркости (xCb, yCb) верхней левой выборки текущего блока кодирования яркости относительно верхней левой выборки яркости текущему изображению,

- переменная cbWidth, указывающая ширину текущего блока кодирования в выборках яркости,

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

Выходы этого процесса следующие, где X равно 0 или 1:

- флаги доступности availableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1 и availableFlagB2 соседних единиц кодирования,

- опорные индексы refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1 и refIdxLXB2 соседних единиц кодирования,

- флаги использования списка предсказания predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1 и predFlagLXB2 соседних единиц кодирования,

- векторы движения с точностью до 1/16 дробной выборки mvLXA0, mvLXA1, mvLXB0, mvLXB1 и mvLXB2 соседних единиц кодирования,

- индексы фильтра интерполяции половинной выборки hpelIfIdxA0, hpelIfIdxA1, hpelIfIdxB0, hpelIfIdxB1 и hpelIfIdxB2,

- весовые индексы двойного предсказания bcwIdxA0, bcwIdxA1, bcwIdxB0, bcwIdxB1 и bcwIdxB2.

Для получения availableFlagB1, refIdxLXB1, predFlagLXB1, mvLXB1, hpelIfIdxB1 и bcwIdxB1 применяется следующее:

- Местоположение яркости (xNbB1, yNbB1) внутри соседнего блока кодирования яркости устанавливается равным (xCb+cbWidth - 1, yCb - 1).

- Процесс определения доступности соседнего блока, как описано в пункте 6.4.4, запускается с текущим местоположением яркости ( xCurr, yCurr ), установленным равным ( xCb, yCb ), соседним местоположением яркости ( xNbB1, yNbB1 ), checkPredModeY установленным равным TRUE , и cIdx установленным равным 0 в качестве входов, а выходу присваивается флаг доступности блока availableB1.

- Переменные availableFlagB1, refIdxLXB1, predFlagLXB1, mvLXB1, hpelIfIdxB1 и bcwIdxB1 получаются следующим образом:

- Если availableB1 равно FALSE, availableFlagB1 устанавливается равным 0, оба компонента mvLXB1 устанавливаются равными 0, refIdxLXB1 устанавливается равным -1 и predFlagLXB1 устанавливается равным 0, где X равно 0 или 1, hpelIfIdxB1 устанавливается равным на 0, а bcwIdxB1 устанавливается равным 0.

- В противном случае, availableFlagB1 устанавливается равным 1 и выполняются следующие назначения:

Для получения availableFlagA1, refIdxLXA1, predFlagLXA1, mvLXA1, hpelIfIdxA1 и bcwIdxA1 применяется следующее:

- Местоположение яркости ( xNbA1, yNbA1 ) внутри соседнего блока кодирования яркости устанавливается равным ( xCb - 1, yCb+cbHeight - 1 ).

- Процесс определения доступности соседнего блока, как описано в пункте 6.4.4, запускается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb). соседнее местоположение яркости ( xNbA1, yNbA1 ), checkPredModeY устанавливается равным TRUE, а cIdx устанавливается равным 0 в качестве входных данных, а выход назначается флагу доступности блока availableA1.

- Переменные availableFlagA1, refIdxLXA1, predFlagLXA1, mvLXA1, hpelIfIdxA1 и bcwIdxA1 получаются следующим образом:

- Если одно или более из следующих условий выполняются, availableFlagA1 устанавливается равным 0, оба компонента mvLXA1 устанавливаются равными 0, refIdxLXA1 устанавливается равным -1 и predFlagLXA1 устанавливается равным 0, где X равно 0 или 1, hpelIfIdxA1 устанавливается равным 0, а bcwIdxA1 устанавливается равным 0:

- availableA1 равно FALSE.

- availableB1 равно TRUE, а местоположения яркости (xNbA1, yNbA1) и (xNbB1, yNbB1) имеют одинаковые векторы движения и одинаковые опорные индексы.

- WPDisabledX[RefIdxLX[xNbA1][yNbA1]] имеет значение 0, а режим слияния является непрямоугольным (например, флаг треугольника устанавливается равным 1 для блока в текущем местоположении яркости ( xCurr, yCurr ))

- WPDisabledX[RefIdxLX[xNbB1][yNbB1]] имеет значение 0, а режим слияния является непрямоугольным (например, флаг треугольника устанавливается равным 1 для блока в текущем местоположении яркости ( xCurr, yCurr ))

- В противном случае, availableFlagA1 устанавливается равным 1 и выполняются следующие назначения:

Для получения availableFlagB0, refIdxLXB0, predFlagLXB0, mvLXB0, hpelIfIdxB0 и bcwIdxB0 применяется следующее:

- Местоположение яркости (xNbB0, yNbB0) внутри соседнего блока кодирования яркости устанавливается равным (xCb+cbWidth, yCb - 1).

- Процесс определения доступности соседнего блока, как описано в пункте 6.4.4, запускается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb), соседним местоположением яркости (xNbB0, yNbB0), checkPredModeY установленным равным TRUE , и cIdx установленным равным 0 в качестве входов, а выходу присваивается флаг доступности блока availableB0.

- Переменные availableFlagB0, refIdxLXB0, predFlagLXB0, mvLXB0, hpelIfIdxB0 и bcwIdxB0 получаются следующим образом:

- Если одно или более из следующих условий выполняются, availableFlagB0 устанавливается равным 0, оба компонента mvLXB0 устанавливаются равными 0, refIdxLXB0 устанавливается равным -1 и predFlagLXB0 устанавливается равным 0, где X равно 0 или 1, hpelIfIdxB0 устанавливается равным 0, а bcwIdxB0 устанавливается равным 0:

- availableB0 равно FALSE.

- availableB1 равно TRUE, а местоположения яркости (xNbB1, yNbB1) и (xNbB0, yNbB0) имеют одинаковые векторы движения и одинаковые опорные индексы.

- WPDisabledX[RefIdxLX[xNbB0][yNbB0]] имеет значение 0, а режим слияния является непрямоугольным (например, флаг треугольника устанавливается равным 1 для блока в текущем местоположении яркости ( xCurr, yCurr ))

- WPDisabledX[RefIdxLX[xNbB1][yNbB1]] имеет значение 0, а режим слияния является непрямоугольным (например, флаг треугольника устанавливается равным 1 для блока в текущем местоположении яркости ( xCurr, yCurr ))

- В противном случае, availableFlagB0 устанавливается равным 1 и выполняются следующие назначения:

Для получения availableFlagA0, refIdxLXA0, predFlagLXA0, mvLXA0, hpelIfIdxA0 и bcwIdxA0 применяется следующее:

- Местоположение яркости (xNbA0, yNbA0) внутри соседнего блока кодирования яркости устанавливается равным (xCb - 1, yCb+cbWidth).

- Процесс определения доступности соседнего блока, как описано в пункте 6.4.4, запускается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb). соседнее местоположение яркости ( xNbA0, yNbA0 ), checkPredModeY устанавливается равным TRUE, а cIdx устанавливается равным 0 в качестве входных данных, а выход назначается флагу доступности блока availableA0.

- Переменные availableFlagA0, refIdxLXA0, predFlagLXA0, mvLXA0, hpelIfIdxA0 и bcwIdxA0 получаются следующим образом:

- Если одно или более из следующих условий выполняются, availableFlagA0 устанавливается равным 0, оба компонента mvLXA0 устанавливаются равными 0, refIdxLXA0 устанавливается равным -1 и predFlagLXA0 устанавливается равным 0, где X равно 0 или 1, hpelIfIdxA0 устанавливается равным 0, а bcwIdxA0 устанавливается равным 0:

- availableA0 равно FALSE.

- availableA1 равно TRUE, а местоположения яркости (xNbA1, yNbA1) и (xNbA0, yNbA0) имеют одинаковые векторы движения и одинаковые опорные индексы.

- WPDisabledX[RefIdxLX[xNbA0][yNbA0]] имеет значение 0, а режим слияния является непрямоугольным (например, флаг треугольника устанавливается равным 1 для блока в текущем местоположении яркости ( xCurr, yCurr ))

- WPDisabledX[RefIdxLX[xNbA1][yNbA1]] имеет значение 0, а режим слияния является непрямоугольным (например, флаг треугольника устанавливается равным 1 для блока в текущем местоположении яркости ( xCurr, yCurr ))

- В противном случае, availableFlagA0 устанавливается равным 1 и выполняются следующие назначения:

Для получения availableFlagB2, refIdxLXB2, predFlagLXB2, mvLXB2, hpelIfIdxB2 и bcwIdxB2 применяется следующее:

- Положение яркости (xNbB2, yNbB2) внутри соседнего блока кодирования яркости устанавливается равным (xCb-1, yCb-1).

- Процесс определения доступности соседнего блока, как описано в пункте 6.4.4, запускается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb), соседним местоположением яркости (xNbB2, yNbB2), checkPredModeY установленным равным TRUE , и cIdx установленным равным 0 в качестве входов, а выходу присваивается флаг доступности блока availableB2.

- Переменные availableFlagB2, refIdxLXB2, predFlagLXB2, mvLXB2, hpelIfIdxB2 и bcwIdxB2 получаются следующим образом:

- Если одно или более из следующих условий выполняются, availableFlagB2 устанавливается равным 0, оба компонента mvLXB2 устанавливаются равными 0, refIdxLXB2 устанавливается равным -1 и predFlagLXB2 устанавливается равным 0, где X равно 0 или 1, hpelIfIdxB2 устанавливается равным 0, а bcwIdxB2 устанавливается равным 0:

- availableB2 равно FALSE.

- availableA1 равно TRUE, а местоположения яркости (xNbA1, yNbA1) и (xNbB2, yNbB2) имеют одинаковые векторы движения и одинаковые опорные индексы.

- availableB1 равно TRUE, а местоположения яркости (xNbB1, yNbB1) и (xNbB2, yNbB2) имеют одинаковые векторы движения и одинаковые опорные индексы.

- availableFlagA0+availableFlagA1+availableFlagB0+availableFlagB1 равно 4.

- WPDisabledX[RefIdxLX[xNbB1][yNbB1]] имеет значение 0, а режим слияния является непрямоугольным (например, флаг треугольника устанавливается равным 1 для блока в текущем местоположении яркости ( xCurr, yCurr ))

- WPDisabledX[RefIdxLX[xNbB2][yNbB2]] имеет значение 0, а режим слияния является непрямоугольным (например, флаг треугольника устанавливается равным 1 для блока в текущем местоположении яркости ( xCurr, yCurr ))

- В противном случае, availableFlagB2 устанавливается равным 1 и выполняются следующие назначения:

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

Переменная WPDisabled0[i] устанавливается равной 1, когда все значения luma_weight_l0_flag[i] и chroma_weight_l0_flag[i] установлены в ноль, значение i =0.. NumRefIdxActive[0]. В противном случае значение WPDisabled0[i] устанавливается равным 0.

Переменная WPDisabled1[i] устанавливается равной 1, когда все значения luma_weight_l1_flag[i] и chroma_weight_l1_flag[i] установлены в ноль, значение i=0.. NumRefIdxActive[1]. В противном случае значение WPDisabled1 [1] устанавливается равным 0.

В других вариантах осуществления переменная SliceMaxNumTriangleMergeCand определяется в заголовке слайса в соответствии с одним из следующих выражений:

- SliceMaxNumTriangleMergeCand=(lumaWeightedFlag || chromaWeightedFlag) ? 0 : MaxNumTriangleMergeCand ;

- SliceMaxNumTriangleMergeCand=(lumaWeightedFlag || chromaWeightedFlag) ? 1 : MaxNumTriangleMergeCand ;

- SliceMaxNumTriangleMergeCand=slice_weighted_pred_flag ? 0 : MaxNumTriangleMergeCand ;

или

- SliceMaxNumTriangleMergeCand=slice_weighted_pred_flag ? 1 : MaxNumTriangleMergeCand

В разных вариантах осуществления используются разные случаи, перечисленные выше.

Значение этой переменной в дальнейшем используется при синтаксическом анализе информации о слиянии на уровне блоков. Примерный синтаксис приведен в таблице ниже:

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

Таким образом, могут использоваться различные механизмы для управления режимами слияния GEO/TPM в зависимости от того, применяется ли WP к опорным изображениям, из которых берутся опорные блоки P0 и P1, а именно:

- Перемещение параметров WP, перечисленных в таблице 14, из SH в PH;

- Перемещение параметров GEO из PH обратно в SH;

- Изменение семантики MaxNumGeoMergeCand, т.е. путем установки MaxNumGeoMergeCand равным 0 или 1 для таких слайсов, когда можно использовать опорные изображения с WP (например, где по меньшей мере один из флагов lumaWeightedFlag или равен true).

Для режима слияния GEO примерные опорные блоки P0 и P1 обозначены 810 и 820 на фиг. 8 соответственно.

В варианте осуществления, когда параметры WP и включение непрямоугольных режимов (например, GEO и TPM) сигнализируются в заголовке изображения, может использоваться следующий синтаксис, как показано в таблице ниже:

….

Переменная WPDisabled устанавливается равной 1, когда все значения luma_weight_l0_flag[i], chroma_weight_l0_flag[i], luma_weight_l1_flag[j] и chroma_weight_l1_flag[j] установлены в ноль, значение i=0..NumRefIdxActive[0]; и значение j=0..NumRefIdxActive[1]; в противном случае значение WPDisabled устанавливается равным 0.

Когда переменная WPDisabled установлена равной 0, значение pic_max_num_merge_cand_minus_max_num_geo_cand устанавливается равным MaxNumMergeCand.

В другом варианте осуществления pic_max_num_merge_cand_minus_max_num_geo_cand устанавливается равным MaxNumMergeCand - 1.

Во втором варианте осуществления сигнализация параметров WP и включение непрямоугольных режимов (например, GEO и TPM) выполняются в заголовке слайса. Примерный синтаксис приведен в таблице ниже:

Переменная WPDisabled устанавливается равной 1, когда все значения luma_weight_l0_flag[i], chroma_weight_l0_flag[i], luma_weight_l1_flag[j] и chroma_weight_l1_flag[j] установлены в ноль, значение i=0..NumRefIdxActive[0]; и значение j=0..NumRefIdxActive[1]; в противном случае значение WPDisabled устанавливается равным 0.

Когда переменная WPDisabled установлена равной 0, значение max_num_merge_cand_minus_max_num_geo_cand устанавливается равным MaxNumMergeCand.

В другом варианте осуществления, когда переменная WPDisabled установлена равной 0, значение max_num_merge_cand_minus_max_num_geo_cand установлено равным MaxNumMergeCand - 1.

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

В других вариантах осуществления переменная SliceMaxNumGeoMergeCand определяется в заголовке слайса в соответствии с одним из следующих выражений:

- SliceMaxNumGeoMergeCand=(lumaWeightedFlag || chromaWeightedFlag) ? 0 : MaxNumGeoMergeCand ;

- SliceMaxNumGeoMergeCand=(lumaWeightedFlag || chromaWeightedFlag) ? 1 : MaxNumGeoMergeCand ;

- SliceMaxNumGeoMergeCand=slice_weighted_pred_flag ? 0 : MaxNumGeoMergeCand ;

или

- SliceMaxNumGeoMergeCand=slice_weighted_pred_flag ? 1 : MaxNumGeoMergeCand

В разных вариантах осуществления используются разные случаи, перечисленные выше.

Значение этой переменной в дальнейшем используется при синтаксическом анализе информации о слиянии на уровне блоков. Примерный синтаксис приведен в таблице ниже:

7.3.9.7 Синтаксис слияния данных

Семантика связанного заголовка изображения выглядит следующим образом:

pic_max_num_merge_cand_minus_max_num_geo_cand задает максимальное количество кандидатов для режима геометрического слияния, поддерживаемых в слайсах, связанных с заголовком изображения, вычтенным из MaxNumMergeCand.

Когда pic_max_num_merge_cand_minus_max_num_geo_cand отсутствует, sps_geo_enabled_flag равно 1, а MaxNumMergeCand больше или равно 2, предполагается, что pic_max_num_merge_cand_minus_max_num_geo_cand равно pps_max_num_merge_cand_minus_max_num_geo_cand_plus1 − 1.

Максимальное количество кандидатов для режима геометрического слияния, MaxNumGeoMergeCand определяется следующим образом:

MaxNumGeoMergeCand = MaxNumMergeCand - pic_max_num_merge_cand_minus_max_num_geo_cand (87)

Когда присутствует pic_max_num_merge_cand_minus_max_num_geo_cand, значение MaxNumGeoMergeCand должно находиться в диапазоне от 2 до MaxNumMergeCand включительно.

Когда pic_max_num_merge_cand_minus_max_num_geo_cand отсутствует и (sps_geo_enabled_flag равно 0 или MaxNumMergeCand меньше 2), MaxNumGeoMergeCand устанавливается равным 0.

Когда MaxNumGeoMergeCand равно 0, режим геометрического слияния не разрешен для слайсов, связанных с PH.

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

- синтаксические элементы, относящиеся к количеству кандидатов для режима слияния (), сигнализируются в наборе параметров последовательности (SPS), что позволяет для конкретных реализаций получать количество кандидатов для непрямоугольного режима слияния (MaxNumGeoMergeCand) на уровне SPS;

- PH может сигнализироваться в SH, когда изображение содержит только один слайс;

- Механизм переопределения параметров PH/SH определен следующим образом:

Флаги PPS, которые указывают, присутствует ли синтаксический элемент связанного инструмента кодирования либо в PH, либо в SH (но не в обоих).

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

- таблица весовых коэффициентов предсказания - пятый тип данных, которые могут сигнализироваться либо в PH, либо в SH (например, ALF, деблокирование, RPL и SAO);

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

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

В частности, введены два флага, pic_inter_slice_present_flag и pic_intra_slice_present_flag.

В варианте осуществления 1 синтаксические элементы, относящиеся к количеству кандидатов для режима слияния (), сигнализируются в наборе параметров последовательности (SPS), что позволяет для конкретных реализаций получать количество кандидатов для непрямоугольного режима слияния (MaxNumGeoMergeCand) на уровне SPS. Этот аспект может быть реализован с помощью процесса кодирования или декодирования на основе следующего синтаксиса.

7.3.2.3 Синтаксис RBSP набора параметров последовательности

Описанный выше синтаксис имеет следующую семантику.

sps_six_minus_max_num_merge_cand_plus1, равное 0, указывает, что pic_six_minus_max_num_merge_cand присутствует в PH, относящихся к PPS. sps_six_minus_max_num_merge_cand_plus1 больше 0 указывает, что pic_six_minus_max_num_merge_cand отсутствует в PH, относящихся к PPS. Значение sps_six_minus_max_num_merge_cand_plus1 должно находиться в диапазоне от 0 до 6 включительно.

sps_max_num_merge_cand_minus_max_num_geo_cand_plus1, равное 0, указывает, что pic_max_num_merge_cand_minus_max_num_geo_cand присутствует в PH слайсов, относящихся к PPS. sps_max_num_merge_cand_minus_max_num_geo_cand_plus1 больше 0 указывает, что pic_max_num_merge_cand_minus_max_num_geo_cand отсутствует в PH, относящихся к PPS. Значение sps_max_num_merge_cand_minus_max_num_geo_cand_plus1 должно находиться в диапазоне от 0 до MaxNumMergeCand - 1.

Семантика соответствующих элементов PH следующая:

pic_six_minus_max_num_merge_cand указывает максимальное количество кандидатов предсказания вектора движения со слиянием (MVP), поддерживаемых в слайсах, связанных с PH, вычтенным из 6. Максимальное количество объединяющихся кандидатов MVP, MaxNumMergeCand, получается следующим образом:

MaxNumMergeCand=6 - pic_six_minus_max_num_merge_cand (85)

Значение MaxNumMergeCand должно быть в диапазоне от 1 до 6 включительно. При отсутствии предполагается, что значение pic_six_minus_max_num_merge_cand равно sps_six_minus_max_num_merge_cand_plus1-1.

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

Когда sps_max_num_merge_cand_minus_max_num_geo_cand отсутствует, sps_geo_enabled_flag равно 1, а MaxNumMergeCand больше или равно 2, предполагается, что pic_max_num_merge_cand_minus_max_num_geo_cand равно sps_max_num_merge_cand_minus_max_num_geo_cand_plus1 − 1.

Максимальное количество кандидатов для режима геометрического слияния, MaxNumGeoMergeCand определяется следующим образом:

MaxNumGeoMergeCand=MaxNumMergeCand - pic_max_num_merge_cand_minus_max_num_geo_cand (87)

Когда присутствует pic_max_num_merge_cand_minus_max_num_geo_cand, значение MaxNumGeoMergeCand должно находиться в диапазоне от 2 до MaxNumMergeCand включительно.

Когда pic_max_num_merge_cand_minus_max_num_geo_cand отсутствует и (sps_geo_enabled_flag равно 0 или MaxNumMergeCand меньше 2), MaxNumGeoMergeCand устанавливается равным 0.

Когда MaxNumGeoMergeCand равно 0, режим геометрического слияния не разрешен для слайсов, связанных с PH.

Альтернативный синтаксис и семантика для этого варианта осуществления следующие:

sps_six_minus_max_num_merge_cand указывает максимальное количество кандидатов слияния предсказания вектора движения (MVP), поддерживаемых в слайсах, связанных с PH, вычтенным из 6. Максимальное количество объединяющихся кандидатов MVP, MaxNumMergeCand, получается следующим образом:

MaxNumMergeCand=6 - sps_six_minus_max_num_merge_cand (85)

Значение MaxNumMergeCand должно быть в диапазоне от 1 до 6 включительно.

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

Максимальное количество кандидатов для режима слияния, MaxNumGeoMergeCand определяется следующим образом:

MaxNumGeoMergeCand=MaxNumMergeCand - sps_max_num_merge_cand_minus_max_num_geo_cand (87)

Когда присутствует sps_max_num_merge_cand_minus_max_num_geo_cand, значение MaxNumGeoMergeCand должно находиться в диапазоне от 2 до MaxNumMergeCand включительно.

Когда sps_max_num_merge_cand_minus_max_num_geo_cand отсутствует и (sps_geo_enabled_flag равно 0 или MaxNumMergeCand меньше 2), MaxNumGeoMergeCand устанавливается равным 0.

Когда MaxNumGeoMergeCand равно 0, режим геометрического слияния не разрешен.

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

- когда для значения i=0 .. NumRefIdxActive[0] и значение j=0 .. NumRefIdxActive[1] все значения luma_weight_l0_flag[i], chroma_weight_l0_flag[i], luma_weight_l1_flag[j] и chroma_weight_l1_flag[j] либо равны нулю, либо отсутствуют;

- когда флаг в SPS или PPS указывает на наличие двунаправленного взвешенного предсказания (pps_weighted_bipred_flag);

- когда наличие двунаправленного взвешенного предсказания указано либо в заголовке изображения (PH), либо в заголовке слайса (SH).

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

Синтаксический элемент «sps_wp_enabled_flag» определяет, можно ли включить взвешенное предсказание на более низком уровне (PPS, PH или SH). Примерная реализация приведена ниже:

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

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

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

В варианте осуществления 2 списки опорных изображений могут быть указаны либо в PPS, либо либо в PH, либо в SH (но не в обоих). Как известно из уровня техники, сигнализация списка опорных изображений зависит от синтаксических элементов, которые указывают наличие взвешенного предсказания (например, pps_weighted_pred_flag и pps_weighted_bipred_flag). Следовательно, в зависимости от того, указан ли список опорных изображений в PPS, PH или SH, параметры взвешенного предсказания сигнализируются перед списком опорных изображений соответственно в PPS, PH или SH.

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

rpl_present_in_ph_flag, равное 1, указывает, что сигнализация списка опорных изображений отсутствует в заголовках слайсов, относящихся к PPS, но может присутствовать в PH, относящихся к PPS. rpl_present_in_ph_flag, равное 0, указывает, что сигнализация списка опорных изображений отсутствует в PH, относящихся к PPS, но может присутствовать в заголовках слайсов, относящихся к PPS.

sao_present_in_ph_flag, равное 1, указывает, что синтаксические элементы для разрешения использования SAO отсутствуют в заголовках слайсов, относящихся к PPS, но могут присутствовать в PH, относящихся к PPS. sao_present_in_ph_flag, равное 0, указывает, что синтаксические элементы для разрешения использования SAO отсутствуют в PH, относящихся к PPS, но могут присутствовать в заголовках слайсов, относящихся к PPS.

alf_present_in_ph_flag, равное 1, указывает, что синтаксические элементы для разрешения использования ALF отсутствуют в заголовках слайсов, относящихся к PPS, но могут присутствовать в PH, относящихся к PPS. alf_present_in_ph_flag, равное 0, указывает, что синтаксические элементы для разрешения использования ALF отсутствуют в PH, относящихся к PPS, но могут присутствовать в заголовках слайсов, относящихся к PPS.

weighted_pred_table_present_in_ph_flag, равное 1, указывает, что таблица взвешенного предсказания отсутствует в заголовках слайсов, относящихся к PPS, но может присутствовать в PH, относящихся к PPS. weighted_pred_table_present_in_ph_flag, равное 0, указывает, что таблица взвешенного предсказания отсутствует в PH, относящихся к PPS, но может присутствовать в заголовках слайсов, относящихся к PPS. При отсутствии предполагается, что значение weighted_pred_table_present_in_ph_flag равно 0.

deblocking_filter_override_enabled_flag, равное 1, указывает, что переопределение фильтра деблокирования может присутствовать в PH или в заголовках слайсов, относящихся к PPS. deblocking_filter_override_enabled_flag, равное 0, указывает, что это переопределение фильтра деблокирования не присутствует ни в PH, ни в заголовках слайсов, относящихся к PPS. При отсутствии предполагается, что значение deblocking_filter_override_enabled_flag равно 0.

deblocking_filter_override_present_in_ph_flag, равное 1, указывает, что переопределение фильтра деблокирования отсутствует в заголовках слайсов, относящихся к PPS, но может присутствовать в PH, относящихся к PPS. deblocking_filter_override_present_in_ph_flag, равное 0, указывает, что переопределение фильтра деблокирования отсутствует в PH, относящихся к PPS, но может присутствовать в заголовках слайсов, относящихся к PPS.

Альтернативный синтаксис для заголовка изображения выглядит следующим образом:

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

Этот вариант осуществления вводит флаг ("picture_header_in_slice_header_flag"), который указывает, объединены ли заголовки изображения и слайса. Синтаксис битового потока согласно этому варианту осуществления следующий:

Семантика для picture_header_in_slice_header_flag и соответствующих ограничений битового потока выглядит следующим образом:

picture_header_in_slice_header_flag, равное 1, указывает, что синтаксическая структура заголовка изображения присутствует в заголовке слайса. picture_header_in_slice_header_flag, равное 0, указывает, что синтаксическая структура заголовка изображения отсутствует в заголовке слайса.

Требование соответствия битового потока состоит в том, чтобы значение picture_header_in_slice_header_flag было одинаковым во всех слайсах CLVS.

Когда picture_header_in_slice_header_flag равно 1, требование соответствия битового потока состоит в том, что в CLVS не присутствует единица NAL с типом единицы NAL, равным PH_NUT.

Когда picture_header_in_slice_header_flag равно 0, требование соответствия битового потока состоит в том, что единица NAL с типом единицы NAL, равным PH_NUT, присутствует в PU, предшествующем первой единице VCL NAL для PU.

Комбинация варианта осуществления 2 и варианта осуществления 3 является нетривиальной, поскольку оба варианта осуществления относятся к предмету передачи сигналов PH и SH.

Комбинация аспектов этих вариантов осуществления выглядит следующим образом.

Когда picture_header_in_slice_header_flag равно 0 (вариант осуществления 4), флаги, которые указывают, присутствует ли синтаксический элемент связанного инструмента кодирования либо в PH, либо в SH (но не в обоих);

В противном случае (когда picture_header_in_slice_header_flag равно 1), эти флаги выводятся равными 0, что указывает на сигнализацию параметров инструмента на уровне слайса.

Альтернативная комбинация выглядит следующим образом:

Когда picture_header_in_slice_header_flag равно 0 (вариант осуществления 4), флаги, которые указывают, присутствует ли синтаксический элемент связанного инструмента кодирования либо в PH, либо в SH (но не в обоих);

В противном случае (когда picture_header_in_slice_header_flag равно 1), эти флаги предполагаются равными 0, что указывает на сигнализацию параметров инструмента на уровне заголовка изображения.

Эта комбинация имеет следующий синтаксис:

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

Синтаксис и семантика в этом варианте осуществления определяются следующим образом:

num_l0_weighted_ref_pics указывает количество взвешенных опорных изображений в списке 0 опорных изображений. Значение num_l0_weighted_ref_pics должно находиться в диапазоне от 0 до MaxDecPicBuffMinus1+14 включительно.

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

num_l1_weighted_ref_pics определяет количество взвешенных опорных изображений в списке 1 опорных изображений. Значение num_l1_weighted_ref_pics должно находиться в диапазоне от 0 до MaxDecPicBuffMinus1+14 включительно.

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

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

Семантика pic_max_num_merge_cand_minus_max_num_geo_cand в этом варианте осуществления такая же, как и в предыдущих вариантах осуществления.

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

Синтаксис для этого варианта осуществления приведен ниже:

7.4.3.6 Семантика RBSP заголовка изображения

pic_inter_slice_present_flag, равное 1, указывает, что в изображении, связанном с PH, может присутствовать один или более слайсов с slice_type, равным 0 (B) или 1 (P). pic_inter_slice_present_flag, равное 0, указывает, что в изображении, связанном с PH, не может присутствовать ни один слайс с slice_type, равным 0 (B) или 1 (P).

pic_intra_slice_present_flag, равное 1, указывает, что один или более слайсов с slice_type, равным 2 (I), могут присутствовать в изображении, связанном с PH. pic_intra_slice_present_flag, равное 0, указывает, что в изображении, связанном с PH, не может присутствовать ни один слайс с slice_type, равным 2 (I). При отсутствии предполагается, что значение pic_intra_slice_only_flag равно 1.

ПРИМЕЧАНИЕ - : Значения как pic_inter_slice_present_flag, так и pic_intra_slice_present_flag устанавливаются равными 1 в заголовке изображения, связанного с изображением, содержащим один или более подизображений, содержащих внутрикадрово-кодированные слайсы, которые могут быть объединены с одним или более подизображениями, содержащими межкадрово-кодированные слайсы.

7.4.8.1 Общая семантика заголовка слайса

slice_type определяет тип кодирования слайса в соответствии с таблицей 7 5.

Таблица 7 5 - Связь имени с slice_type

slice_type Имя slice_type 0 B (B-слайс) 1 P (P-слайс) 2 I (I-слайс)

Когда nal_unit_type является значением nal_unit_type в диапазоне от IDR_W_RADL до CRA_NUT включительно, а текущее изображение является первым изображением в единице доступа, slice_type должно быть равно 2.

При отсутствии предполагается, что значение slice_type считается равным 2.

Когда pic_intra_slice_present_flag равно 0, значение slice_type должно находиться в диапазоне от 0 до 1 включительно.

Вариант 4 осуществления можно комбинировать с сигнализацией pred_weight_table() в заголовке изображения. Сигнализация pred_weight_table() в заголовке изображения раскрыта в предыдущих вариантах осуществления.

Примерный синтаксис выглядит следующим образом:

При указании присутствия pred_weight_table() в заголовке изображения может использоваться следующая комбинация синтаксиса с вариантом осуществления 3.

Альтернативные варианты осуществления могут использовать следующий синтаксис:

Альтернативные варианты осуществления могут использовать следующий синтаксис:

В приведенном выше синтаксисе pic_inter_bipred_slice_present_flag указывает на наличие всех типов слайсов, I-, B- и P-слайсы, которые относятся к заголовку изображения.

Когда pic_inter_bipred_slice_present_flag равно 0, изображение содержит только слайсы I- или B-типа.

В этом случае непрямоугольные режимы отключены.

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

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

В этом варианте осуществления семантика определяется следующим образом:

7.4.10.7 Семантика слияния данных

Переменная MergeGeoFlag[x0][y0], которая указывает, используется ли компенсация движения на основе геометрической формы для формирования выборок предсказания текущей единицы кодирования при декодировании B-слайса, выводится следующим образом:

- Если выполняются все следующие условия, MergeGeoFlag[x0][y0] устанавливается равным 1:

- sps_geo_enabled_flag равно 1.

- slice_type равно B.

- general_merge_flag[x0][y0] равно 1.

- MaxNumGeoMergeCand больше или равно 2.

- cbWidth больше или равно 8

- cbHeight больше или равно 8

- cbWidth меньше, чем 8*cbHeight

- cbHeight меньше, чем 8*cbWidth

- Regular_merge_flag[x0][y0] равно 0.

- merge_subblock_flag[x0][y0] равно 0.

- ciip_flag[x0][y0] равно 0.

- В противном случае MergeGeoFlag[x0][y0] устанавливается равным 0.

Требованием соответствия битового потока является то, что если один из явно взвешенных флагов яркости или цветности CU является истинным, MergeGeoFlag[x0][y0] должно быть равно 0.

Вариант 7 осуществления можно объяснить как часть спецификации VVC следующим образом:

8.5.7 Процесс декодирования промежуточных геометрических блоков

8.5.7.1 Общие положения

Этот процесс вызывается при декодировании единицы кодирования с MergeGeoFlag[xCb][yCb], равным 1.

Входные данные для этого процесса являются следующими:

- местоположение яркости ( xCb, yCb ), указывающее верхнюю левую выборку текущего блока кодирования относительно верхней левой выборки яркости текущего изображения,

- переменная cbWidth, указывающая ширину текущего блока кодирования в выборках яркости,

- переменная cbHeight, указывающая высоту текущего блока кодирования в дискретных выборок яркости,

- векторы движения яркости с точностью до 1/16 дробной выборки mvA и mvB,

- векторы движения цветности mvCA и mvCB

- опорные индексы refIdxA и refIdxB,

- флаги predListFlagA и predListFlagB списка предсказания.

Пусть predSamplesLAL и predSamplesLBL будут (cbWidth)x(cbHeight) массивами предсказываемых значений образцов яркости, а predSamplesLACb, predSamplesLBCb, predSamplesLACr и predSamplesLBCr будут (cbWidth/SubWidthC)x(cbHeight/SubHeightC) массивами предсказываемых значений образцов цветности.

predSamplesL, predSamplesCb и predSamplesCr получаются с помощью следующих упорядоченных этапов:

1. Для N, являющегося каждым из A и B, применяется следующее:

2. Угол разделения и расстояние для переменных angleIdx и DistanceIdx в режиме геометрического слияния устанавливаются в соответствии со значением merge_geo_partition_idx[xCb][yCb], как указано в таблице 36.

3. Переменная explictWeightedFlag получается следующим образом:

lumaWeightedFlagA=predListFlagA ? luma_weight_l1_flag[refIdxA] : luma_weight_l0_flag[refIdxA]

lumaWeightedFlagB=predListFlagB ? luma_weight_l1_flag[refIdxB] : luma_weight_l0_flag[refIdxB]

chromaWeightedFlagA=predListFlagA ? chroma_weight_l1_flag[refIdxA] : chroma weight_l0_flag[refIdxA]

chromaWeightedFlagB=predListFlagB ? chroma_weight_l1_flag[refIdxB] : chroma weight_l0_flag[refIdxB]

weightedFlag = lumaWeightedFlagA | | lumaWeightedFlagB | | chromaWeightedFlagA | | chromaWeightedFlagB

4. Выборки предсказания внутри текущего блока кодирования яркости, predSamplesL[xL][yL] с xL=0..cbWidth - 1 и yL=0..cbHeight - 1, получаются путем вызова процесса взвешенного предсказания выборки для заданного режима геометрического слияния, описанного в пункте 8.5.7.2, если weightedFlag равно 0, и процесса явного взвешенного предсказания выборки в пункте 8.5.6.6.3, если weightedFlag равно 1, с шириной блока кодирования nCbW, установленной равной cbWidth, высотой блока кодирования nCbH установленой равной в cbHeight, выборочными массивами predSamplesLAL и predSamplesLBL, а также переменными angleIdx и DistanceIdx и cIdx, равными 0, в качестве входных данных.

5. Выборки предсказания внутри текущего блока кодирования компонента цветности Cb, predSamplesCb[xC][yC] с xC=0..cbWidth/SubWidthC - 1 и yC=0..cbHeight/SubHeightC - 1, получаются путем вызова процесса взвешенного предсказания выборки для режима геометрического слияния, описанного в пункте 8.5.7.2, если weightedFlag равно 0, и процесса явного взвешенного предсказания выборки в пункте 8.5.6.6.3, если weightedFlag равно 1, с шириной блока кодирования nCbW, установленной равной cbWidth/SubWidthC, высотой блока кодирования nCbH, установленной равной cbHeight/SubHeightC, выборочными массивами predSamplesLACb и predSamplesLBCb, а также переменными angleIdx и DistanceIdx и cIdx, равными 1, в качестве входных данных.

6. Выборки предсказания внутри текущего блока кодирования компонента цветности Cr, predSamplesCr[xC][yC] с xC=0..cbWidth/SubWidthC - 1 и yC=0..cbHeight/SubHeightC - 1, получаются путем вызова процесса взвешенного предсказания выборки для режима геометрического слияния, описанного в пункте 8.5.7.2, если weightedFlag равно 0, и процесса явного взвешенного предсказания выборки в пункте 8.5.6.6.3, если weightedFlag равно 1, с шириной блока кодирования nCbW, установленной равной cbWidth/SubWidthC, высотой блока кодирования nCbH, установленной равной cbHeight/SubHeightC, выборочными массивами predSamplesLACr и predSamplesLBCr, а также переменными angleIdx и DistanceIdx и cIdx, равными 2, в качестве входных данных.

7. Процесс сохранения вектора движения для геометрического режима слияния, описанного в пункте 8.5.7.3, вызывается с указанием местоположения блока кодирования яркости ( xCb, yCb ), ширины блока кодирования яркости cbWidth, высоты блока кодирования яркости cbHeight, направления разделения angleIdx и DistanceIdx, векторами движения яркости mvA и mvB, опорными индексами refIdxA и refIdxB и флагами predListFlagA и predListFlagB списка предсказаний в качестве входных данных.

Таблица 36 - Описание значений angleIdx и DistanceIdx на основе значения merge_geo_partition_idx.

8.5.6.6.3 Процесс явного взвешенного предсказания выборки

Входные данные для этого процесса являются следующими:

- две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования,

- два массива (nCbW)x(nCbH) predSamplesL0 и predSamplesL1,

- флаги использования списка предсказаний, predFlagL0 и predFlagL1,

- опорные индексы, refIdxL0 и refIdxL1,

- переменная cIdx, указывающая индекс компонента цвета,

- битовая глубина выборки, bitDepth.

Результатом этого процесса является массив (nCbW)x(nCbH) pbSamples значений дискретных выборок предсказания.

Переменная shift1 устанавливается равной Max( 2, 14 − bitDepth ).

Переменные log2Wd, o0, o1, w0 и w1 получаются следующим образом:

- Если cIdx равно 0 для образцов яркости, применяется следующее:

- В противном случае (cIdx не равно 0 для образцов цветности) применяется следующее:

Выборка предсказания pbSamples[x][y] с x=0..nCbW - 1 и y=0..nCbH - 1 получается следующим образом:

- Если predFlagL0 равно 1, а predFlagL1 равно 0, значения выборки предсказания получаются следующим образом:

- В противном случае, если predFlagL0 равно 0, а predFlagL1 равно 1, значения выборки предсказания получаются следующим образом:

- В противном случае (predFlagL0 равно 1, а predFlagL1 равно 1) значения выборки предсказания получаются следующим образом:

Вариант осуществления 8 раскрывает синтаксис параметра данных слияния, который содержит проверку переменной, указывающей на наличие непрямоугольного режима слияния (например, режима GEO). Пример синтаксиса приведен ниже:

Переменная MaxNumGeoMergeCand выводится в соответствии с любым из предыдущих вариантов осуществления.

Вариант осуществления 9 использует альтернативную переменную SliceMaxNumGeoMergeCand, которая получается из переменной MaxNumGeoMergeCand. Значение MaxNumGeoMergeCand получается на более высоких уровнях сигнализации (т.е. PH, PPS или SPS).

В этом варианте осуществления SliceMaxNumGeoMergeCand выводится на основе значения MaxNumGeoMergeCand и дополнительных проверок, которые выполняются для слайса.

- Например, SliceMaxNumGeoMergeCand = (num_l0_weighted_ref_pics>0 || num_l1_weighted_ref_pics>0) ? 0 : MaxNumGeoMergeCand.

Вариант осуществления 10 является разновидностью варианта осуществления 9, в котором используется следующее выражение для определения значения MaxNumGeoMergeCand:

SliceMaxNumGeoMergeCand=(!pic_inter_slice_present_flag) ? 0 : MaxNumGeoMergeCand

Вариант осуществления 11 представляет собой комбинацию с вариантом осуществления 4.

Определена следующая синтаксическая таблица:

Переменная MaxNumGeoMergeCand получается следующим образом:

SliceMaxNumGeoMergeCand=(!pic_inter_bipred_slice_present_flag) ? 0 : MaxNumGeoMergeCand

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

Фиг. 15 представляет собой блок-схему, иллюстрирующую способ кодирования согласно варианту осуществления.

Способ, показанный на фиг. 15, содержит этап 1510 получения битового потока для текущего изображения (например, кодированной видеопоследовательности). Значение первого индикатора для текущего изображения получается 1520 (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) в соответствии с битовым потоком. Первый индикатор указывает тип слайса (слайса текущего изображения). Кроме того, способ содержит этап получения 1530 (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) значения второго индикатора для текущего изображения в соответствии с битовым потоком, при этом второй индикатор указывает, присутствует ли параметр взвешенного предсказания в заголовке изображения битового потока или присутствует в заголовке слайса битового потока.

Затем значение параметра взвешенного предсказания синтаксически анализируется 1540 для текущего блока из битового потока, когда значение первого индикатора равно первому предварительно установленному значению (например, 1), а значение второго индикатора равно второму предварительно установленному значению (например, 2), указывающее, что параметр взвешенного предсказания присутствует в заголовке изображения битового потока или присутствует в заголовке слайса битового потока, при этом текущий блок содержится в текущем слайсе текущего изображения. Первое предварительно установленное значение представляет собой целочисленное значение и второе предварительно установленное значение представляет собой целочисленное значение. Затем текущий блок предсказывается 1550 (блок предсказания формируется для текущего блока) в соответствии со значением синтаксически проанализированного параметра взвешенного предсказания.

Способ кодирования согласно другому варианту осуществления показан на фиг. 16a и 16b.

Этот способ содержит этап получения 1610 битового потока для текущего изображения (например, кодированной видеопоследовательности). Получен ряд значений индикатора. Таким образом, этот способ содержит получение 1620 (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) значения первого индикатора для текущего изображения в соответствии с битовым потоком, при этом первый индикатор указывает тип слайса (слайса из текущего изображения), получение 1630 (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) значения второго индикатора для текущего изображения в соответствии с битовым потоком, при этом второй индикатор указывает, присутствует ли параметр взвешенного предсказания в заголовке изображения битового потока или присутствует в заголовке слайса битового потока, и получение 1640 (например, путем синтаксического анализа соответствующего синтаксического элемента, содержащегося в битовом потоке) значения третьего индикатора для текущего изображения в соответствии с битовым потоком, при этом третий индикатор указывает, применимо ли взвешенное предсказание к промежуточному слайсу, при этом тип слайса промежуточного слайса представляет собой B-слайс или P-слайс.

Затем значение параметра взвешенного предсказания синтаксически анализируется 1650 для текущего блока из битового потока, когда a) значение первого индикатора равно первому предварительно установленному значению (например, 1), b) значение второго индикатора равно второму предварительно установленному значению (например, 1) и c) значение третьего индикатора указывает, что взвешенное предсказание применимо к промежуточному слайсу, при этом текущий блок содержится в текущем слайсе текущего изображения, первое предварительно установленное значение представляет собой целочисленное значение и второе предварительно установленное значение представляет собой целочисленное значение. Текущий блок предсказывается 1660 (блок предсказания формируется для текущего блока) в соответствии с синтаксически проанализированным значением параметра взвешенного предсказания.

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

Предоставляется устройство 1700 декодирования, как показано на фиг. 17. Устройство 1700 декодирования содержит блок 1710 получения битового потока, блок 1720 получения значения индикатора, блок 1730 синтаксического анализа и блок 1740 предсказания.

Блок 1710 получения битового потока выполнен с возможностью получения битового потока для текущего изображения.

Согласно варианту осуществления блок 1720 получения значения индикатора выполнен с возможностью

a) получения значения первого индикатора для текущего изображения в соответствии с битовым потоком, при этом первый индикатор указывает тип слайса; и

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

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

Согласно другому варианту осуществления блок 1720 получения значения индикатора выполнен с возможностью

a) получения значения первого индикатора для текущего изображения в соответствии с битовым потоком, при этом первый индикатор указывает тип слайса;

b) получения значения второго индикатора для текущего изображения в соответствии с битовым потоком, при этом второй индикатор указывает, присутствует ли параметр взвешенного предсказания в заголовке изображения битового потока или присутствует в заголовке слайса битового потока; и

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

В этом случае блок 1730 синтаксического анализа выполнен с возможностью синтаксического анализа значения параметра взвешенного предсказания для текущего блока из битового потока, когда значение первого индикатора равно первому предварительно установленному значению (например, 1), значение второго индикатора равно второму предварительно установленному значению (например, 1), а значение третьего индикатора указывает, что взвешенное предсказание применимо к промежуточному слайсу, при этом текущий блок содержится в текущем слайсе текущего изображения, первое предварительно установленное значение представляет собой целочисленное значение и второе предварительно установленное значение представляет собой целочисленное значение; и блок 1740 предсказания выполнен с возможностью предсказания текущего блока в соответствии со значением параметра взвешенного предсказания.

Устройство 1700 декодирования, показанное на фиг. 17, может быть или может состоять из декодера 30, показанного на фиг. 1A, 1B и 3, и видеодекодера 3206, показанного на фиг. 11. Устройство 1700 декодирования, показанное на фиг. 17, может состоять из устройства 400 кодирования видео, показанного на фиг. 4, устройства 500, показанного на фиг. 5, терминального устройства 3106, показанного на фиг. 10, устройства 1300, показанного на фиг. 13, и устройства 1400, показанного на фиг. 14.

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

Фиг. 10 является блок-схемой, показывающей систему 3100 доставки контента для реализации услуги распространения контента. Данная система 3100 доставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и опционально включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.

Устройство 3102 захвата формирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может передавать данные на сервер потоковой передачи (не показан на фигурах), а сервер кодирует эти данные и передает кодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет кодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет кодированные аудиоданные и кодированные видеоданные на терминальное устройство 3106 по отдельности.

В системе 3100 доставки контента терминальное устройство 310 принимает и воспроизводит кодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR) / цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые кодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда кодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда кодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.

Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR) / цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.

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

Фиг. 11 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.

После того, как блок 3202 обработки протокола обработает поток, формируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования.

Посредством обработки демультиплексирования формируются элементарный поток (ES) видео, ES аудио и, опционально, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует ES видео с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для формирования видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для формирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на фиг. 11) перед его подачей в блок 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на фиг. 11) перед его подачей в блок 3212 синхронизации.

Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио в видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.

Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.

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

Математические операторы

Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т. д.

Арифметические операторы

Следующие арифметические операторы определены следующим образом:

Логические операторы

Следующие логические операторы определены следующим образом:

Операторы отношения

Следующие операторы отношения определены следующим образом:

Когда оператор сравнения применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение «na» (not applicable, не применимо), значение «na» обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение «na» не считается равным любому другому значению.

Битовые операторы

Следующие побитовые операторы определены следующим образом:

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

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

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

x >> y - Арифметический сдвиг вправо целочисленного представления дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига.

x << y - Арифметический сдвиг влево целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие значающие биты (LSB) в результате сдвига влево, имеют значение, равное 0.

Операторы присваивания

Следующие арифметические операторы определены следующим образом:

Обозначение диапазона

Следующее обозначение используется для специфицирования диапазона значений:

x=y..z - x принимает целочисленные значения от y до z включительно, где x, y и z являются целыми числами, а z больше y.

Математические функции

Определены следующие математические функции:

Abs(x)=

Asin(x) - тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан

Atan(x) - тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан

Atan2(y, x)=

Ceil(x) - наименьшее целое число, которое больше или равно x.

Clip1Y(x)=Clip3( 0, ( 1 << BitDepthY ) − 1, x )

Clip1C(x)=Clip3( 0, ( 1 << BitDepthC ) − 1, x )

Clip3(x, y, z)=

Cos(x) - тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.

Floor(x) наибольшее целое число, меньшее или равное x.

GetCurrMsb(a, b, c, d)=

Ln(x) - натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма, равная 2,718 281 828...).

Log2(x) - логарифм x по основанию 2

Log10(x) - логарифм x по основанию 10.

Min(x, y)=

Max(x, y)=

Round( x )=Sign( x ) * Floor( Abs( x ) + 0,5)

Sign(x)=

Sin(x) - тригонометрическая функция синуса, работающая с аргументом x в единицах радиан.

Sqrt(x)=

Swap(x, y)=(y, x)

Tan(x) - тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан.

Порядок приоритетности операций

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

-- Операции с более высоким приоритетом выполняются перед любой операцией с более низким приоритетом.

-- Операции с одинаковым приоритетом выполняются последовательно слева направо.

В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.

Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.

Таблица: Приоритетность операций от наивысшей (в верхней части таблицы) до низшей (в нижней части таблицы)

Текстовое описание логических операций

В тексте определение логических операций, которое математически бы описывалось в следующей форме:

if( условие 0 )

определение 0

else if( условие 1 )

определение 1

...
else /* информативный комментарий по оставшемуся условию */

определение n

может быть описано следующим образом:

... как указано ниже / ... применяется следующее:

- Если условие 0, определение 0

- Иначе, Если условие 1, определение 1

- ...

-- Иначе (информативный комментарий по оставшемуся условию), определение n.

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

В тексте определение логических операций, которое математически бы описывалось в следующей форме:

if( условие 0a && условие 0b )

определение 0

else if( условие 1a | | условие 1b )

определение 1

...

else

определение n

может быть описано следующим образом:

... как указано ниже / ... применяется следующее:

-- Если все из следующих условий выполняются, определение 0:

- условие 0a

- условие 0b

-- Иначе, если истинными являются одно или более из следующих условий, определение 1:

- условие 1a

- условие 1b

- ...

- Иначе, определение n

В тексте определение логических операций, которое математически бы описывалось в следующей форме:

if( условие 0 )

определение 0

if( условие 1 )

определение 1

может быть описано следующим образом:

Когда условие 0, определение 0

Когда условие 1, определение 1

Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. При реализации в программном обеспечении, функции могут храниться на считываемом компьютером носителе данных или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером запоминающим носителям, которые являются не-кратковременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель данных.

В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель данных, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемым компьютером носителем данных. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на не-кратковременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.

Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах функциональные возможности, описанные в данном документе, могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования, или включены в комбинированный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.

Методики этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных компонентов, в том числе таких как беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.

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

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

Вариант 2 осуществления: Способ по варианту осуществления 1, в котором включение непрямоугольного межкадрового предсказания выполняется путем указания максимального количества кандидатов треугольного слияния (MaxNumTriangleMergeCand), которое больше 1.

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

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

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

Вариант 6 осуществления: Способ согласно любым вариантам осуществления 1-5, в котором параметры режима межкадрового предсказания содержат опорный индекс, используемый для определения опорного изображения, и информацию о векторе движения, используемую для определения положения опорного блока в опорном изображении.

Вариант 7 осуществления: Способ в соответствии с любыми вариантами осуществления 1-6, где непрямоугольный режим слияния представляет собой режим треугольного разделения.

Вариант 8 осуществления: Способ в соответствии с любыми вариантами осуществления 1-7, где непрямоугольный режим слияния представляет собой режим GEO.

Вариант 9 осуществления: Способ в соответствии с любыми вариантами осуществления 1-8, в котором взвешенное предсказание представляет собой механизм компенсации яркости на уровне слайса (такой как глобальное взвешенное предсказание).

Вариант 10 осуществления: Способ в соответствии с любыми вариантами осуществления 1-9, в котором взвешенное предсказание представляет собой механизм компенсации яркости на уровне блоков, такой как компенсация локального освещения (LIC).

Вариант 11 осуществления: Способ в соответствии с любыми вариантами осуществления 1-10, в котором параметры взвешенного предсказания содержат: набор флагов, указывающих, применяется ли взвешенное предсказание к компонентам яркости и цветности предсказанного блока; Параметры линейной модели \alpha и \betta, определяющие линейное преобразование значений предсказываемого блока.

В первом аспекте настоящей заявки, как показано на фиг. 12, раскрыт способ 1200 межкадрового предсказания, который содержит: S1201: определение, разрешен ли непрямоугольный режим межкадрового предсказания для группы блоков; S1202: получение одного или более параметров режима межкадрового предсказания и параметров взвешенного предсказания для группы блоков; и S1203: получение значения предсказания текущего блока на основе одного или более параметров режима межкадрового предсказания и параметров взвешенного предсказания, при этом один из параметров режима межкадрового предсказания указывает информацию опорного изображения для текущего блока, и при этом группа блоков содержит текущий блок.

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

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

В возможной реализации разрешено определение режима непрямоугольного межкадрового предсказания, содержащее: указание максимального количества кандидатов треугольного слияния (MaxNumTriangleMergeCand) больше 1.

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

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

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

В возможной реализации режим непрямоугольного межкадрового предсказания представляет собой режим геометрического (GEO) разделения.

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

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

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

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

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

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

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

В возможной реализации информация указания содержит максимальное количество кандидатов треугольного слияния (MaxNumTriangleMergeCand) больше 1.

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

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

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

В возможной реализации режим непрямоугольного межкадрового предсказания представляет собой режим геометрического (GEO) разделения.

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

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

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

В четвертом аспекте настоящей заявки, как показано на фиг. 14, раскрыто устройство 1400 межкадрового предсказания, которое содержит: модуль 1401 определения, выполненный с возможностью определения того, разрешен ли непрямоугольный режим межкадрового предсказания для группы блоков; модуль 1402 получения, выполненный с возможностью получения одного или более параметров режима межкадрового предсказания и параметров взвешенного предсказания для группы блоков; и модуль 1403 предсказания, выполненный с возможностью получения значения предсказания текущего блока на основе одного или более параметров режима межкадрового предсказания и параметров взвешенного предсказания, при этом один из параметров режима межкадрового предсказания указывает информацию опорного изображения для текущего блока, и при этом группа блоков включает в себя текущий блок.

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

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

В возможной реализации модуль 1401 определения, в частности, выполнен с возможностью: указания, что максимальное количество кандидатов треугольного слияния (MaxNumTriangleMergeCand) больше 1.

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

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

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

В возможной реализации режим непрямоугольного межкадрового предсказания представляет собой режим геометрического (GEO) разделения.

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

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

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

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

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

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

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

В возможной реализации разрешено определение режима непрямоугольного межкадрового предсказания, содержащее: указание максимального количества кандидатов треугольного слияния (MaxNumTriangleMergeCand) больше 1.

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

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

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

В возможной реализации режим непрямоугольного межкадрового предсказания представляет собой режим геометрического (GEO) разделения.

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

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

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

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

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

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

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

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

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

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

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

В возможной реализации информация указания содержит максимальное количество кандидатов треугольного слияния (MaxNumTriangleMergeCand) больше 1.

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

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

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

В возможной реализации режим непрямоугольного межкадрового предсказания представляет собой режим геометрического (GEO) разделения.

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

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

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

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

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

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

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

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

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

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

В возможной реализации режим непрямоугольного межкадрового предсказания представляет собой режим геометрического (GEO) разделения.

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

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

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

Кроме того, в настоящем документе представлены следующие варианты осуществления.

1. Способ кодирования видеопоследовательности, содержащий

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

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

2. Способ по варианту осуществления 1, в котором флаг в наборе параметров изображения

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

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

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

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

6. Способ по варианту осуществления 5, в котором флаг в наборе параметров изображения

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

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

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

9. Способ межкадрового предсказания текущего блока группы блоков видеопоследовательности, содержащий этапы любого из вариантов осуществления 1-8 и дополнительно содержащий:

получение одного или более параметров режима межкадрового предсказания и параметров взвешенного предсказания для группы блоков; и

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

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

11. Способ по варианту осуществления 9 или 10, в котором режим непрямоугольного межкадрового предсказания включается, когда взвешенное предсказание отключено.

12. Способ по любому из вариантов осуществления 9-11, в котором группа блоков состоит из изображения, и в котором информация для определения того, разрешен ли режим непрямоугольного межкадрового предсказания, содержится в заголовке изображения.

13. Способ по любому из вариантов осуществления 9-11, в котором группа блоков состоит из слайса, и в котором информация для определения того, разрешен ли режим непрямоугольного межкадрового предсказания, находится в заголовке слайса.

14. Способ по любому из вариантов осуществления 9-13, в котором режим непрямоугольного межкадрового предсказания представляет собой режим треугольного разделения.

15. Способ по любому из вариантов осуществления 9-13, в котором режим непрямоугольного межкадрового предсказания представляет собой режим геометрического разделения.

16. Способ по любому из вариантов осуществления 1-15, в котором заголовок изображения сигнализируется в заголовке слайса, когда изображение содержит только один слайс.

17. Способ по любому из вариантов осуществления 1-16, в котором параметры взвешенного предсказания используются для компенсации яркости на уровне слайса.

18. Способ по любому из вариантов осуществления 1-16, в котором параметры взвешенного предсказания используются для компенсации яркости на уровне блоков.

19. Способ по любому из вариантов осуществления 1-18, в котором параметры взвешенного предсказания содержат:

флаги, указывающие, применяется ли взвешенное предсказание к компонентам яркости и/или цветности блока предсказания; и

параметры линейной модели, определяющие линейное преобразование значения блока предсказания.

20. Устройство межкадрового предсказания, содержащее:

не-кратковременную память, в которой хранятся исполняемые процессором инструкции; и

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

Похожие патенты RU2821011C1

название год авторы номер документа
УПРАВЛЕНИЕ ОПОРНЫМ ИЗОБРАЖЕНИЕМ ПРИ ВИДЕОКОДИРОВАНИИ 2019
  • Хендри, Фну
  • Ван, Е-Куй
RU2795700C2
СИГНАЛИЗАЦИЯ ЗАГОЛОВКА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО 2020
  • Хендри, Фну
  • Ван, Е-Куй
  • Чен, Цзянле
RU2819585C1
ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2821429C1
УКАЗАНИЕ ТОЧКИ ПРОИЗВОЛЬНОГО ДОСТУПА И ВЫВОД ИЗОБРАЖЕНИЯ В КОДИРОВАННОМ ВИДЕОПОТОКЕ 2021
  • Чой Бёнду
  • Венгер Стефан
  • Лю Шань
RU2787579C1
УКАЗАНИЕ ИСПОЛЬЗОВАНИЯ ПАРАЛЛЕЛЬНОЙ ВОЛНОВОЙ ОБРАБОТКИ В КОДИРОВАНИИ ВИДЕО 2012
  • Ван Е-Куй
  • Кобан Мухаммед Зейд
RU2609073C2
ПЕРЕДАЧА МЕЖСЛОЙНОГО ПРЕДСКАЗАНИЯ В БИТОВОМ ПОТОКЕ ВИДЕО 2020
  • Чой Беондоо
  • Венгер Штефан
  • Лю Шань
RU2791938C1
УСТРОЙСТВО ВИДЕОКОДИРОВАНИЯ, УСТРОЙСТВО ВИДЕОДЕКОДИРОВАНИЯ, СПОСОБ ВИДЕОКОДИРОВАНИЯ, СПОСОБ ВИДЕОДЕКОДИРОВАНИЯ И ПРОГРАММА 2011
  • Тоно Кеиити
  • Сенда Юзо
  • Тадзиме Дзундзи
  • Аоки Хирофуми
  • Сензаки Кента
RU2562432C2
УСТРОЙСТВО ВИДЕОКОДИРОВАНИЯ, УСТРОЙСТВО ВИДЕОДЕКОДИРОВАНИЯ, СПОСОБ ВИДЕОКОДИРОВАНИЯ, СПОСОБ ВИДЕОДЕКОДИРОВАНИЯ И ПРОГРАММА 2011
  • Тоно Кеиити
  • Сенда Юзо
  • Тадзиме Дзундзи
  • Аоки Хирофуми
  • Сензаки Кента
RU2606306C2
ОГРАНИЧЕНИЕ ПРЕДСТАВЛЕНИЯ ДИФФЕРЕНЦИАЛЬНОЙ ИМПУЛЬСНО-КОДОВОЙ МОДУЛЯЦИИ КВАНТОВОГО ОСТАТКА КОДИРОВАННОГО ВИДЕО 2020
  • Чжу, Вэйцзя
  • Чжан, Ли
  • Сюй, Цзичжэн
  • Чуан, Хсяо Чиан
RU2807214C2
УСТРОЙСТВО ВИДЕОКОДИРОВАНИЯ, УСТРОЙСТВО ВИДЕОДЕКОДИРОВАНИЯ, СПОСОБ ВИДЕОКОДИРОВАНИЯ, СПОСОБ ВИДЕОДЕКОДИРОВАНИЯ И ПРОГРАММА 2017
  • Тоно Кеиити
  • Сенда Юзо
  • Тадзиме Дзундзи
  • Аоки Хирофуми
  • Сензаки Кента
RU2647682C1

Иллюстрации к изобретению RU 2 821 011 C1

Реферат патента 2024 года СПОСОБ И УСТРОЙСТВО СОГЛАСОВАНИЯ ВЗВЕШЕННОГО ПРЕДСКАЗАНИЯ С НЕПРЯМОУГОЛЬНЫМИ РЕЖИМАМИ СЛИЯНИЯ

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

Формула изобретения RU 2 821 011 C1

1. Способ кодирования, реализуемый устройством декодирования, при этом способ содержит:

получение битового потока для текущего изображения;

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

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

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

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

2. Способ по п. 1, в котором значение первого индикатора получается в соответствии с заголовком изображения, содержащимся в битовом потоке, или в котором значение второго индикатора получается в соответствии с набором параметров изображения, содержащимся в битовом потоке, или в котором значение параметра взвешенного предсказания синтаксически анализируется из заголовка изображения, содержащегося в битовом потоке.

3. Способ по п. 1 или 2, в котором первое предварительно установленное значение равно 1 и второе предварительно установленное значение равно 1.

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

5. Способ по п. 4, в котором промежуточный слайс содержит B-слайс или P-слайс.

6. Способ кодирования, реализуемый устройством декодирования, при этом способ содержит:

получение битового потока для текущего изображения;

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

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

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

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

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

7. Способ по п. 6, в котором значение первого индикатора получается в соответствии с заголовком изображения, содержащимся в битовом потоке, или в котором значение второго индикатора получается в соответствии с набором параметров изображения, содержащимся в битовом потоке, или в котором значение параметра взвешенного предсказания получается в соответствии с заголовком изображения, содержащимся в битовом потоке, или при этом значение третьего индикатора получается в соответствии с набором параметров изображения, содержащимся в битовом потоке.

8. Способ по п. 6 или 7, в котором первое предварительно установленное значение равно 1 и второе предварительно установленное значение равно 1.

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

10. Способ по любому из пп. 6-9, в котором значение третьего индикатора, равное 1, указывает, что взвешенное предсказание применимо к промежуточному слайсу.

11. Декодер (30), содержащий схему обработки для осуществления способа по любому из пп. 1-10.

12. Декодер (30), содержащий:

один или более процессоров; и

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

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

14. Устройство (1700) декодирования, содержащее:

блок (1710) получения битового потока, выполненный с возможностью получения битового потока для текущего изображения;

блок (1720) получения значения индикатора, выполненный с возможностью

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

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

блок (1730) синтаксического анализа, выполненный с возможностью синтаксического анализа значения параметра взвешенного предсказания для текущего блока из битового потока, когда значение первого индикатора равно первому предварительно установленному значению и значение второго индикатора равно второму предварительно установленному значению, при этом текущий блок содержится в текущем слайсе текущего изображения, первое предварительно установленное значение представляет собой целочисленное значение и второе предварительно установленное значение представляет собой целочисленное значение; и

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

15. Устройство декодирования (1700) по п. 14, в котором

блок (1720) получения значения индикатора выполнен с возможностью получения значения первого индикатора в соответствии с заголовком изображения, содержащимся в битовом потоке, или значения второго индикатора в соответствии с набором параметров изображения, содержащимся в битовом потоке; или

блок (1730) синтаксического анализа выполнен с возможностью синтаксического анализа значения параметра взвешенного предсказания из заголовка изображения, содержащегося в битовом потоке.

16. Устройство декодирования (1700) по п. 14 или 15, в котором первое предварительно установленное значение равно 1 и второе предварительно установленное значение равно 1.

17. Устройство (1700) декодирования по любому из пп. 14-16, в котором значение первого индикатора, равное первому предварительно установленному значению, представляет, что тип слайса, по меньшей мере, одного слайса, содержащегося в текущем изображении, является промежуточным слайсом.

18. Устройство декодирования (1700) по п. 17, в котором промежуточный слайс содержит B-слайс или P-слайс.

19. Устройство (1700) декодирования, содержащее:

блок (1710) получения битового потока, выполненный с возможностью получения битового потока для текущего изображения;

блок (1720) получения значения индикатора, выполненный с возможностью

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

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

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

блок (1730) синтаксического анализа, выполненный с возможностью синтаксического анализа значения параметра взвешенного предсказания для текущего блока из битового потока, когда значение первого индикатора равно первому предварительно установленному значению, значение второго индикатора равно второму предварительно установленному значению и значение третьего индикатора указывает, что взвешенное предсказание применимо к промежуточному слайсу, при этом текущий блок содержится в текущем слайсе текущего изображения, первое предварительно установленное значение представляет собой целочисленное значение и второе предварительно установленное значение представляет собой целочисленное значение; и

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

20. Устройство декодирования (1700) по п. 19, в котором

блок (1720) получения значения индикатора выполнен с возможностью получения значения первого индикатора в соответствии с заголовком изображения, содержащегося в битовом потоке, или значения второго индикатора в соответствии с набором параметров изображения, содержащимся в битовом потоке, или значения третьего индикатора в соответствии с набором параметров изображения, содержащимся в битовом потоке, или

блок (1730) синтаксического анализа выполнен с возможностью синтаксического анализа параметра взвешенного предсказания из заголовка изображения, содержащегося в битовом потоке.

21. Устройство (1700) декодирования по п. 19 или 20, в котором первое предварительно установленное значение равно 1 и второе предварительно установленное значение равно 1.

22. Устройство (1700) декодирования по любому из пп. 19-21, в котором значение первого индикатора, равное первому предварительно установленному значению, представляет, что тип слайса по меньшей мере одного слайса, содержащегося в текущем изображении, является промежуточным слайсом.

23. Устройство (1700) декодирования по любому из пп. 19-22, в котором значение третьего индикатора, равное 1, указывает, что взвешенное предсказание применимо к промежуточному слайсу.

Документы, цитированные в отчете о поиске Патент 2024 года RU2821011C1

Многоступенчатая активно-реактивная турбина 1924
  • Ф. Лезель
SU2013A1
Многоступенчатая активно-реактивная турбина 1924
  • Ф. Лезель
SU2013A1
Многоступенчатая активно-реактивная турбина 1924
  • Ф. Лезель
SU2013A1
Колосоуборка 1923
  • Беляков И.Д.
SU2009A1
Способ и оборудование для кодирования и декодирования видеосигналов 2015
  • Бугдайси Доне
  • Лайнема Яни
  • Угур Кемал
  • Ханнуксела Миска
RU2668723C2

RU 2 821 011 C1

Авторы

Филиппов, Алексей Константинович

Чэнь, Хуаньбан

Руфицкий, Василий Алексеевич

Ян, Хайтао

Алшина, Елена Александровна

Даты

2024-06-14Публикация

2021-01-12Подача