КОДИРОВАНИЕ КОЭФФИЦИЕНТОВ И ОСТАТКА ДЛЯ КОДИРОВАНИЯ ВИДЕО Российский патент 2024 года по МПК H04N19/70 

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

Область техники, к которой относится изобретение

Настоящее раскрытие относится к кодированию и сжатию видео. Более конкретно, настоящее раскрытие относится к усовершенствованиям и упрощениям кодирования коэффициентов и остатка для кодирования видео.

Уровень техники

Для сжатия видеоданных могут использоваться различные способы кодирования видео. Кодирование видео выполняется в соответствии с одним или несколькими стандартами кодирования видео. Например, стандарты кодирования видео включают в себя универсальное кодирование видео (VVC), модель совместного исследования (JEM), высокоэффективное кодирование видео (H.265/HEVC), усовершенствованное кодирование видео (H.264/AVC), кодирование по стандартам группы экспертов по движущимся изображениям (MPEG) и т.п. При кодировании видео используются, как правило, способы предсказания (например, межкадровое предсказание, внутрикадровое предсказание и т.п.), которые используют избыточность, присутствующую в видеоизображениях или последовательностях. Важной целью способов кодирования видео является сжатие видеоданных в форму, использующую более низкую скорость передачи данных, при этом избегая или сводя к минимуму ухудшение качества видео.

Раскрытие сущности изобретения

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

Согласно первому аспекту настоящего раскрытия предусмотрен способ кодирования видео. Способ может включать в себя этапы, на которых: принимают декодером флаг кодирования остатка набора параметров последовательности (SPS), который указывает, присутствует ли индекс sh_ts_residual_coding_rice_idx в синтаксических структурах SH, относящихся к SPS; в ответ на определение, что значение флага кодирования остатка SPS равно 1, определяют, что sh_ts_residual_coding_rice_idx присутствует в синтаксических структурах заголовка слайса (Slice Head, SH), относящихся к SPS; а в ответ на определение, что значение флага кодирования остатка равно 0, определяют, что sh_ts_residual_coding_rice_idx не присутствует в синтаксических структурах SH, относящихся к SPS.

Согласно второму аспекту настоящего раскрытия предусмотрен способ кодирования видео. Способ может включать в себя этапы, на которых: принимают декодером флаг включения адаптации набора параметров последовательности (SPS), который указывает, используется ли альтернативное получение параметра Райса для бинаризации синтаксисов abs_remaining и dec_abs_level; в ответ на определение, что значение флага включения адаптации SPS равно 1, определяют, что используется альтернативное получение параметра Райса для бинаризации синтаксисов; а в ответ на определение, что значение флага включения адаптации SPS равно 0, определяют, что альтернативное получение параметра Райса для бинаризации синтаксисов не используется.

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

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

Краткое описание чертежей

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

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

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

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

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

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

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

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

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

Фиг. 5 - иллюстрация изображения с CTU яркости 18 на 12 согласно примеру настоящего раскрытия.

Фиг. 6A - иллюстрация примера запрещенного разделения троичного дерева (TT) и двоичного дерева (BT) в VTM согласно примеру настоящего раскрытия.

Фиг. 6B - иллюстрация примера запрещенного разделения TT и BT в VTM согласно примеру настоящего раскрытия.

Фиг. 6C - иллюстрация примера запрещенного разделения TT и BT в VTM согласно примеру настоящего раскрытия.

Фиг. 6D - иллюстрация примера запрещенного разделения TT и BT в VTM согласно примеру настоящего раскрытия.

Фиг. 6E - иллюстрация примера запрещенного разделения TT и BT в VTM согласно примеру настоящего раскрытия.

Фиг. 6F - иллюстрация примера запрещенного разделения TT и BT в VTM согласно примеру настоящего раскрытия.

Фиг. 6G - иллюстрация примера запрещенного разделения TT и BT в VTM согласно примеру настоящего раскрытия.

Фиг. 6H - иллюстрация примера запрещенного разделения TT и BT в VTM согласно примеру настоящего раскрытия.

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

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

Фиг. 9 - иллюстрация двух скалярных квантователей согласно примеру настоящего раскрытия.

Фиг. 10A - иллюстрация перехода между состояниями согласно примеру настоящего раскрытия.

Фиг. 10B - иллюстрация выбора квантователя согласно примеру настоящего раскрытия.

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

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

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

Фиг. 14А - изображение горизонтального поперечного сканирования согласно настоящему раскрытию.

Фиг. 14B - иллюстрация вертикального поперечного сканирования согласно настоящему раскрытию.

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

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

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

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

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

Фиг. 19 иллюстрирует способ кодирования видео согласно примеру настоящего раскрытия.

Фиг. 20 иллюстрирует способ кодирования видео согласно примеру настоящего раскрытия.

Фиг. 21 иллюстрирует способ кодирования видео согласно примеру настоящего раскрытия.

Осуществление изобретения

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

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

Следует понимать, что, хотя термины «первый», «второй», «третий» и т.д. могут использоваться в данном документе для описания различной информации, информация не должна ограничиваться этими терминами. Эти термины используются только для того, чтобы отличить одну категорию информации от другой. Например, не выходя за рамки настоящего раскрытия, первая информация может называться второй информацией; и аналогично, вторая информация также может называться первой информацией. Используемый в данном документе термин «если» в зависимости от контекста можно рассматривать как означающий «когда», или «после», или «в ответ на суждение».

Первая версия стандарта HEVC была доработана в октябре 2013 года, что обеспечивает примерно 50-процентную экономию скорости передачи данных или эквивалентное качество восприятия по сравнению со стандартом кодирования видео предыдущего поколения H.264/MPEG AVC. Хотя стандарт HEVC обеспечивает значительные улучшения кодирования по сравнению с его предшественником, есть доказательства того, что более высокая эффективность кодирования может быть достигнута с помощью дополнительных средств кодирования по сравнению с HEVC. Исходя из этого, в рамках как VCEG, так и MPEG начались исследование новых технологий кодирования для будущей стандартизации кодирования видео. Одна объединенная группа экспертов по исследованию видео (JVET) была сформирована в октябре 2015 года с использованием ITU-T VECG и ISO/IEC MPEG для начала значительного изучения передовых технологий, которые могут обеспечить существенное повышение эффективности кодирования. Одно эталонное программное обеспечение под названием модель совместного исследования (JEM) поддерживалось JVET путем интеграции нескольких дополнительных средств кодирования поверх тестовой модели (HM) HEVC.

В октябре 2017 года ITU-T и ISO/IEC выпустили совместное заявление для предложений (CfP) по сжатию видео с возможностями, отличными от HEVC. В апреле 2018 года на 10-й конференции JVET было получено и оценено 23 ответа CfP, которые продемонстрировали прирост эффективности сжатия по сравнению с HEVC примерно на 40%. Основываясь на таких результатах оценки, JVET запустил новый проект по разработке стандарта кодирования видео нового поколения, который называется универсальным кодированием видео (Versatile Video Coding, VVC). В том же месяце была создана одна восстановленная база программного кода, называемая тестовой моделью VVC (VTM), для демонстрации эталонной реализации стандарта VVC.

Как и HEVC, VVC построен на блочной структуре гибридного кодирования видео.

На фиг. 1 показана общая схема блочного видеокодера для VVC. В частности, на фиг. 1 показан типичный кодер 100. Кодер 100 имеет видеовход 110, блок 112 компенсации движения, блок 114 оценки движения, блок 116 принятия решения о режиме внутрикадрового/межкадрового предсказания, блочный предиктор 140, сумматор 128, блок 130 преобразования, блок 132 квантования, блок 142 получения информации, относящей к предсказанию, блок 118 внутрикадрового предсказания, буфер 120 изображений, блок 134 обратного квантования, блок 136 обратного преобразования, сумматор 126, память 124, внутриконтурный фильтр 122, блок 138 энтропийного кодирования и выход 144 для битового потока.

В кодере 100 видеокадр разделяется на множество видеоблоков для обработки. Для каждого заданного видеоблока формируется предсказание на основе либо подхода межкадрового предсказания, либо подхода внутрикадрового предсказания.

Остаток предсказания, представляющий разность между текущим видеоблоком, частью входного видеосигнала 110, и его предиктором, частью блочного предиктора 140, отправляется в квантования блок 130 преобразования из сумматора 128. Затем коэффициенты преобразования отправляются из блока 130 преобразования в блок 132 квантования для уменьшения энтропии. Затем квантованные коэффициенты подаются в блок 138 энтропийного кодирования для выработки сжатого битового видеопотока. Как показано на фиг. 1, информация 142, относящаяся к предсказанию, из блока 116 принятия решения о внутрикадровом/межкадровом режиме, такая как информация о разделе видеоблока, векторы движения (MV), индекс восстановленного изображения и режим внутрикадрового предсказания, также подается с использованием блока 138 энтропийного кодирования и сохраняется в виде сжатого битового потока 144. Сжатый битовый поток 144 включает в себя битовый видеопоток.

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

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

При временном предсказании (также называемое «межкадровым предсказанием») используется восстановленные пиксели из уже кодированных видеоизображений для предсказания текущего видеоблока. Временное предсказание уменьшает временную избыточность, присущую видеосигналу. Сигнал временного предсказания для данной единицы кодирования (CU) или блока кодирования, как правило, сигнализируется с использованием одного или нескольких MV, которые указывают количество и направление движения между текущей CU и ее временным репером. Кроме того, если поддерживается несколько восстановленных изображений, дополнительно отправляется один индекс восстановленного изображения, который используется для идентификации того, из какого восстановленного изображения в хранилище опорных изображений поступает сигнал временного предсказания.

Блок 114 оценки движения принимает входной видеосигнал 110 и сигнал из буфера 120 изображения и выводит, сигнал оценки движения в блок 112 компенсации движения. Блок 112 компенсации движения принимает входной видеосигнал 110, сигнал из буфера 120 изображений и сигнал оценки движения из блока 114 оценки движения и выводит сигнал компенсации движения в блок 116 принятия решения о внутрикадровом/межкадровом режиме.

После выполнения пространственного и/или временного предсказания блок 116 принятия решения о внутрикадровом/межкадровом режиме в кодере 100 выбирает наилучший режим предсказания, например, на основе способа оптимизации «скорость-искажение». Блочный предиктор 140 затем вычитается из текущего видеоблока, и результирующий остаток предсказания декоррелируется с использованием блока 130 преобразования и блока 132 квантования. Коэффициенты результирующего квантованного остатка подвергаются обратному квантованию с помощью блока 134 обратного квантования и обратному преобразованию с помощью блока 136 обратного преобразования для формирования восстановленного остатка, который затем добавляется обратно в блоку предсказания для формирования восстановленного сигнала CU. Кроме того, внутриконтурная фильтрация 122, такая как деблочный фильтр, адаптивное смещение отсчетов (SAO) и/или адаптивный внутриконтурный фильтр (ALF), может быть применена к восстановленной CU, прежде чем она будет помещена в хранилище восстановленных изображений буфера 120 изображений и использована для кодирования будущих видеоблоков. Для формирования выходного битового видеопотока 144 информация о режиме кодирования (внутрикадровом или межкадровом), информация о режиме предсказания, информация о движении и коэффициенты квантованного остатка отправляются в модуль 138 энтропийного кодирования для дальнейшего сжатия и упаковки для формирования битового потока.

На фиг. 1 показана блок-схема типичной блочной гибридной системы кодирования видео. Входной видеосигнал обрабатывается блок за блоком (которые называются единицами кодирования (CU)). В VTM-1.0 CU может иметь размер вплоть до 128x128 пикселей. Однако, в отличие от HEVC, которое разделяет блоки только на основе квадродеревьев, в VVC одна единица дерева кодирования (CTU) разделена на CU для адаптации к различным локальным характеристикам на основе квадро-двоичного/троичного дерева. По определению, блок дерева кодирования (CTB) представляет собой блок размером NxN отсчетов для некоторого значения N, таким образом разбиение компонента на CTB представляет собой разделение. CTU включает в себя CTB отсчетов яркости, два соответствующих CTB отсчетов цветности изображения, которое имеет три массива отсчетов, или CTB отсчетов монохромного изображения или изображения, закодированного с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. Кроме того, в HEVC удалена концепция множественного типа блока разделения, то еcли в VVC больше не существует разделения на CU, блок предсказания (PU) и блок преобразования (TU); вместо этого каждый CU всегда используется как базовая единица как для предсказания, так и для преобразования без дополнительных разделов. В многотипной древовидной структуре одна CTU сначала разделяется с использованием структуры квадродерева. Затем каждый листовой узел квадродерева может быть дополнительно разделен с использованием двоичной и троичной древовидной структуры. Как показано на фиг. 3A, 3B, 3C, 3D и 3E, имеется пять типов разделения: разделение на четыре части, горизонтальное двоичное разделение, вертикальное двоичное разделение, горизонтальное троичное разделение и вертикальное троичное разделение.

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

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

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

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

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

На фиг. 1 показано, что может выполняться пространственное предсказание и/или временное предсказание. Пространственное предсказание (или «внутрикадровое предсказание») использует пиксели из отсчетов уже закодированных соседних блоков (которые называются восстановленными отсчетами) в одном и том же видеоизображении/слайсе для предсказания текущего видеоблока. Пространственное предсказание уменьшает пространственную избыточность, присущую видеосигналу. При временном предсказании (также называемом «межкадровым предсказанием» или «предсказанием с компенсацией движения») используются восстановленные пиксели из уже кодированных видеоизображений для предсказания текущего видеоблока. Временное предсказание уменьшает временную избыточность, присущую видеосигналу. Сигнал временного предсказания для данной CU, как правило, сигнализируется одним или несколькими векторами движения (MV), которые указывают величину и направление движения между текущей CU и его временном репером. Кроме того, если поддерживается несколько восстановленных изображений, дополнительно отправляется один индекс восстановленного изображения, который используется для идентификации того, из какого восстановленного изображения в хранилище восстановленных изображений поступает сигнал временного предсказания. После пространственного и/или временного предсказания блок принятия решения о режиме в кодере выбирает наилучший режим предсказания, например, на основе способа оптимизации «скорость-искажение». Затем блок предсказания вычитается из текущего видеоблока; и остаток предсказания декоррелируется с использованием преобразования и квантуется. Коэффициенты квантованного остатка подвергаются обратному квантованию и обратному преобразованию для формирования восстановленного остатка, который затем добавляется обратно в блок предсказания для формирования восстановленного сигнала CU. Кроме того, внутриконтурная фильтрация, такая как деблокирующий фильтр, адаптивное смещение отсчетов (SAO) и адаптивный внутриконтурный фильтр (ALF), может применяться к восстановленному CU, прежде чем она будет помещена в хранилище восстановленных изображений и использована для кодирования будущих видеоблоков. Для формирования выходного битового видеопотока информация о режиме кодирования (внутрикадровом или межкадровом), информация о режиме предсказания, информация о движении и коэффициенты квантованного остатка отправляются в блок энтропийного кодирования для дальнейшего сжатия и упаковки для формирования битового потока.

На фиг. 2 показана общая блок-схема видеодекодера для VVC. В частности, на фиг. 2 показана типичная блок-схема декодера 200. Декодер 200 имеет вход 210 для битового потока, блок 212 энтропийного декодирования, блок 214 обратного квантования, блок 216 обратного преобразования, сумматор 218, блок 220 выбора режима внутрикадрового/межкадрового предсказания, блок 222 внутрикадрового предсказания, память 230, внутриконтурный фильтр 228, блок 224 компенсации движения, буфер 226 изображения, блок 234 получения информации, относящейся к предсказанию, и видеовыход 232.

Декодер 200 аналогичен секции, связанной с восстановлением и находящейся в кодере 100, показанном на фиг. 1. В декодере 200 входящий битовый видеопоток 210 сначала декодируется с использованием блока 212 энтропийного декодирования для получения уровней квантованных коэффициентов и информации, относящейся к предсказанию. Затем уровни квантованных коэффициентов обрабатываются с использованием блока 214 обратного квантования и блока 216 обратного преобразования для получения восстановленного остатка предсказания. Механизм блочного предсказания, реализованный в селекторе 220 внутреннего/межрежимного режима, выполнен с возможностью выполнения либо внутрикадрового предсказания 222, либо компенсации 224 движения на основе декодированной информации предсказания. Набор нефильтрованных восстановленных пикселей получается путем суммирования восстановленного остатка предсказания, поступающего из блока 216 обратного преобразования, и предсказанного выходного сигнала, выработанного механизмом блочного предсказания, с использованием сумматора 218.

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

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

В общем, базовая схема внутрикадрового предсказания, применяемая в VVC, остается такой же, как и в HEVC, за исключением того, что некоторые модули дополнительно усовершенствованы и/или улучшены, например, режим кодирования при внутрикадровом предсказании подразделов (ISP), расширенное внутрикадровое предсказание с широкоугольными внутрикадровыми направлениями, объединение позиционно-зависимого внутрикадрового предсказания (PDPC) и 4-отводная внутрикадровая интерполяция.

Разделение изображений, групп тайлов, тайлов и CTU в VVC

В VVC тайл определяется как прямоугольная область CTU в пределах конкретного столбца тайла и конкретной строки тайла в изображении. Группа тайлов представляет собой группу из целого числа тайлов изображения, которые содержатся исключительно в одной единице NAL. Концепция группы тайлов по существу такая же, как и слайс, определенный в HEVC. Например, изображения разделены на группы тайлов и тайлы. Тайл представляет собой последовательность CTU, покрывающих прямоугольную область изображения. Группа тайлов содержит несколько тайлов изображения. Поддерживаются два режима групп тайлов, а именно режим группы тайлов растрового сканирования и режим группы прямоугольных тайлов. В режиме группы тайлов растрового сканирования группа тайлов содержит последовательность тайлов при растровом сканировании тайлов изображения. В режиме группы прямоугольных тайлов группа тайлов содержит ряд тайлов изображения, которые вместе образуют прямоугольную область изображения. Тайлы в пределах прямоугольной группы тайлов расположены в порядке растрового сканирования группы тайлов.

На фиг. 4 показан пример разделения изображения на группы тайлов растрового сканирования, где изображение разделено на 12 тайлов и 3 группы тайлов растрового сканирования. На фиг. 4 представлены тайлы 410, 412, 414, 416 и 418. Каждый тайл имеет 18 CTU. Более конкретно, на фиг. 4 показано изображение с CTU яркости размером 18 на 12, которое разделено на 12 тайлов и 3 группы тайлов (информативно). Три группы тайлов выглядят следующим образом: (1) первая группа тайлов включает в себя тайлы 410 и 412, (2) вторая группа тайлов включает в себя тайлы 414, 416, 418, 420 и 422, и (3) третья группа тайлов включает в себя тайлы 424, 426, 428, 430 и 432.

На фиг. 5 показан пример разделения изображения на группы прямоугольных тайлов, где изображение разделено на 24 тайла (6 столбцов тайлов и 4 строки тайлов) и 9 групп прямоугольных тайлов. На фиг. 5 изображение включает в себя тайл 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554 и 556. Более конкретно, на фиг. 5 показано изображение с CTU яркости размером 18 на 12, которое разделено на 24 тайла и 9 групп тайлов (информативно). Группа тайлов содержит тайлы, и тайл содержит CTU. Девять групп прямоугольных тайлов включают в себя (1) два тайла 510 и 512, (2) два тайла 514 и 516, (3) два тайла 518 и 520, (4) четыре тайла 522, 524, 534 и 536, (5) четыре группы тайлов 526, 528, 538 и 540, (6) четыре тайла 530, 532, 542 и 544, (7) два тайла 546 и 548, (8) два тайла 550 и 552 и (9) два тайла 554 и 556.

Преобразования блоков большого размера с высокочастотным обнулением в VVC

В VTM4 разрешены преобразования больших блоков размером вплоть до 64×64, что в первую очередь полезно для видео с более высоким разрешением, например, последовательностей 1080p и 4K. Коэффициенты высокочастотного преобразования обнуляются для блоков преобразования с размером (шириной или высотой, или как шириной, так и высотой), равным 64, поэтому сохраняются только низкочастотные коэффициенты. Например, для блока преобразования размером M×N с M в качестве ширины блока и N в качестве высоты блока, когда M равно 64, сохраняются только левые 32 столбца коэффициентов преобразования. Аналогичным образом, когда N равно 64, сохраняются только верхние 32 строки коэффициентов преобразования. Когда режим пропуска преобразования используется для большого блока, весь блок используется без обнуления каких-либо значений.

Виртуальные конвейерные блоки данных (VPDU) в VVC

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

Чтобы сохранить размер VPDU в виде отсчетов яркости размером 64x64, в VTM5 применяются следующие нормативные ограничения разделения (с изменением синтаксической сигнализации):

Разделение TT не разрешено для CU, у которых либо ширина, либо высота, либо и ширина, и высота равны 128.

Для CU 128xN при N ≤ 64 (то еcли ширина равна 128, и высота меньше 128), горизонтальный BT не допускается.

Для CU Nx128 при N ≤ 64 (то еcли высота равна 128, и ширина меньше 128), вертикальный BT не допускается.

На фиг. 6A, 6B, 6C, 6D, 6E, 6F, 6G и 6H показаны примеры запрещенного разделения TT и BT в VTM.

Кодирование коэффициента преобразования в VVC

Кодирование коэффициента преобразования в VVC похоже на HEVC в том смысле, что они оба используют неперекрывающиеся группы коэффициентов (также называемые CG или подблоками). Однако между ними есть и некоторые различия. В HEVC каждая CG коэффициентов имеет фиксированный размер 4x4. В проекте VVC 6 размер CG становится зависимым от размера TB. Как следствие, в VVC доступны различные размеры компьютерной графики (1x16, 2x8, 8x2, 2x4, 4x2 и 16x1). CG внутри блока кодирования и коэффициенты преобразования внутри CG кодируются в соответствии с заданными порядками сканирования.

Чтобы ограничить максимальное количество контекстно-кодированных бинов на пиксель, площадь ТВ и тип видеокомпонента (например, компонент яркости по сравнению с компонентом цветности) используются для получения максимального количества контекстно-кодированных бинов (CCB) для TB. Максимальное количество бинов с контекстным кодированием равно TB_zosize*1,75. В данном документе TB_zosize указывает количество отсчетов в TB после обнуления коэффициента. Следует отметить, что coded_sub_block_flag, который является флагом, указывающим то, содержит ли CG ненулевой коэффициент или нет, не учитывается при подсчете CCB.

Обнуление коэффициента представляет собой операцию, выполняемую над блоком преобразования, чтобы заставить коэффициенты, расположенные в определенной области блока преобразования, быть равными 0. Например, в текущем VVC преобразование размером 64x64 имеет асссоциированную операцию обнуления. В результате все коэффициенты преобразования, расположенные за пределами верхней левой области 32x32 внутри блока преобразования 64x64, принудительно равны 0. Фактически, в текущем VVC для любого блока преобразования с размером более 32 по определенному измерению выполняется операция обнуления коэффициентов по этому измерению, чтобы заставить коэффициенты, расположенные за пределами верхней левой области 32x32, быть равными 0.

При кодировании коэффициента преобразования в VVC переменная remBinsPass1 сначала устанавливается равной максимальному разрешенному количеству контекстно-кодированных элементов (MCCB). В процессе кодирования переменная уменьшается на единицу каждый раз, когда сигнализируется контекстно-кодированный бин. В то время как remBinsPass1 больше или равно четырем, коэффициент сначала сигнализируется через синтаксис sig_coeff_flag, abs_level_gt1_flag, par_level_flag и abs_level_gt3_flag, каждый из которых использует контекстно-кодированные бины в первом проходе. Остальная часть информации об уровне коэффициента кодируется синтаксическим элементом abs_remainder с использованием кода Голомба-Райса и бинов с обходным кодированием во втором проходе. Когда remBinsPass1 становится меньше 4 при кодировании первого прохода, текущий коэффициент не кодируется при первом проходе, а напрямую кодируется при втором проходе с помощью синтаксического элемента dec_abs_level с использованием кода Голомба-Райса и бинов с обходным кодированием. Процесс получения параметра Райса для dec_abs_level[] получается таким образом, как указано в таблице 3. После всего вышеупомянутого кодирования уровней знаки (sign_flag) для всех позиций сканирования с sig_coeff_flag, равным 1, окончательно кодируются как обходные бины. Такой процесс изображен на фиг. 7. RemBinsPass1 сбрасывается для каждого TB. Переход от использования бинов с контекстным кодированием для sig_coeff_flag, abs_level_gt1_flag, par_level_flag и abs_level_gt3_flag к использованию бинов с обходным кодированием для остальных коэффициентов происходит не более одного раза на TB. Для подблока коэффициентов, если remBinsPass1 меньше 4 перед кодированием его самого первого коэффициента, весь подблок коэффициентов кодируется с использованием бинов с обходным кодированием.

На фиг. 7 показана иллюстрация структуры кодирования остатка для блоков преобразования.

Получение унифицированного (одного и того же) параметра Райса (RicePara) используется для сигнализации о синтаксисе abs_remainder и dec_abs_level. Единственное отличие состоит в том, что базовый уровень baseLevel устанавливается на 4 и 0 для кодирования abs_remainder и dec_abs_level, соответственно. Параметр Райса определяется не только на основе суммы абсолютных уровней пяти соседних коэффициентов преобразования в локальном шаблоне, но и на соответствующем базовом уровне следующим образом:

RicePara = RiceParTable[max(min(31, sumAbs - 5 * baseLevel), 0)]

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

Таблица 2. Семантика кодирования остатка

Таблица 3. Процесс получения параметра Райса для abs_remainder[] и dec_abs_level[]

Таблица 4. Спецификация cRiceParam на основе locSumAbs

locSumAbs 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cRiceParam 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 locSumAbs 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 cRiceParam 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3

Кодирование остатка для режима пропуска преобразования в VVC

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

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

отсутствие сигнализации последней позиции x/y;

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

Контекстное моделирование sig_coeff_flag с двумя соседними коэффициентами;

par_level_flag, использующий только одну контекстную модель;

дополнительные флаги, превышающие 5, 7, 9;

модифицированное получение параметра Райса для бинаризации остатка;

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

Проход 1: sig_coeff_flag, coeff_sign_flag, abs_level_gt1_flag, par_level_flag

Проход 2: abs_level_gt3_flag, abs_level_gt5_flag, abs_level_gt7_flag, abs_level_gt9_flag

Проход 3: abs_remainder

На фиг. 8 показана иллюстрация структуры кодирования остатка для блоков пропуска преобразования.

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

Таблица 5. Синтаксис кодирования остатка для режима пропуска преобразования

Квантование

В текущем VVC максимальное значение QP было увеличено с 51 до 63, и, соответственно, была изменена сигнализация начального QP. Начальное значение SliceQpY может быть изменено на уровне сегмента слайса, когда закодировано ненулевое значение slice_qp_delta. Для блока пропуска преобразования минимально допустимый параметр квантования (QP) определен как 4, так как размер шага квантования становится равным 1, когда QP равно 4.

В дополнение к этому, одно и то же скалярное квантование HEVC используется с новой концепцией, называемой зависимым скалярным квантованием. Зависимое скалярное квантование относится к подходу, в котором набор допустимых значений восстановления для коэффициента преобразования зависит от значений уровней коэффициента преобразования, которые предшествуют текущему уровню коэффициента преобразования в порядке восстановления. Основной эффект этого подхода состоит в том, что по сравнению с обычным независимым скалярным квантованием, используемым в HEVC, допустимые векторы восстановления упаковываются более плотно в N-мерном векторном пространстве (N - количество коэффициентов преобразования в блоке преобразования). Это означает, что для заданного среднего числа допустимых векторов восстановления на единицу N-мерного объема среднее искажение между входным вектором и ближайшим вектором восстановления уменьшается. Подход зависимого скалярного квантования реализуется путем: (а) определения двух скалярных квантователей с разными уровнями восстановления и (b) определения процесса переключения между двумя скалярными квантователями.

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

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

Как показано на фиг. 10А и 10В, переключение между двумя скалярными квантователями (Q0 и Q1) реализуется через конечный автомат с четырьмя состояниями квантователя (QState). QState может принимать четыре разных значения: 0, 1, 2, 3. Он однозначно определяется четностью уровней коэффициентов преобразования, предыдущих текущему коэффициенту преобразования в порядке кодирования/восстановления. В начале обратного квантования для блока преобразования состояние устанавливается равным 0. Коэффициенты преобразования восстанавливаются в порядке сканирования (то есть в том же порядке, в котором они энтропийно декодируются). После восстановления текущего коэффициента преобразования состояние обновляется, как показано на фиг. 10, где k обозначает значение уровня коэффициента преобразования.

На фиг. 10А показана схема переходов, иллюстрирующая переход состояния для предложенного зависимого квантования.

На фиг. 10B показана таблица, иллюстрирующая выбор квантователя для предложенного зависимого квантования.

Кроме того, она также поддерживается для сигнализации по умолчанию и определяемых пользователем матриц масштабирования. Матрицы масштабирования режима DEFAULT являются плоскими, с элементами, равными 16 для всех размеров TB. В настоящее время режимы IBC и внутрикадрового кодирования используют одни и те же матрицы масштабирования. Таким образом, для случая матриц USER_DEFINED количество MatrixType и MatrixType_DC обновляется следующим образом:

Значения DC отдельно кодируются для следующих матриц масштабирования: 16×16, 32×32 и 64×64. Для TB размером менее 8×8 сигнализируются все элементы в одной матрице масштабирования. Если TB имеют размер больше или равный 8×8, только 64 элемента в одной матрице масштабирования 8×8 сигнализируются как базовая матрица масштабирования. Для получения квадратных матриц размером более 8×8 базовая матрица масштабирования размером 8×8 подвергается повышающей дискретизации (путем дублирования элементов) до соответствующего размера квадрата (то еcли 16×16, 32×32, 64×64). Когда применяется обнуление высокочастотных коэффициентов для 64-точечного преобразования, соответствующие высокие частоты матриц масштабирования также обнуляются. То есть, если ширина или высота TB больше или равна 32, сохраняется только левая или верхняя половина коэффициентов, и остальные коэффициенты приравниваются к нулю. Кроме того, количество элементов, сигнализируемых для матрицы масштабирования 64×64, также уменьшается с 8×8 до трех подматриц 4×4, так как нижние правые элементы 4×4 никогда не используются.

Контекстное моделирование для кодирования коэффициента преобразования

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

На фиг. 11 показана иллюстрация шаблона, используемого для выбора вероятностных моделей. Черный квадрат указывает текущую позицию сканирования, и квадраты со знаком «x» представляют используемую локальную окрестность.

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

numSig: количество ненулевых уровней в локальной окрестности;

sumAbs1: сумма частично восстановленных абсолютных уровней (absLevel1) после первого прохода в локальной окрестности;

sumAbs: сумма восстановленных абсолютных уровней в локальной окрестности;

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

На основе значений numSig, sumAbs1 и d выбирают вероятностные модели для кодирования sig_coeff_flag, abs_level_gt1_flag, par_level_flag и abs_level_gt3_flag. Параметр Райса для бинаризации abs_remainder и dec_abs_level выбирается на основе значений sumAbs и numSig.

В текущем VVC сокращенный 32-точечный MTS (также называемый RMTS32) основан на пропуске высокочастотных коэффициентов и используется для снижения вычислительной сложности 32-точечного DST-7/DCT-8. И это сопровождается изменением кодирования коэффициентов, включая все типы обнуления (то еcли RMTS32 и существующее обнуление для высокочастотных компонентов в DCT2). В частности, бинаризация кодирования последней позиции ненулевого коэффициента кодируется на основе уменьшенного размера TU, и выбор контекстной модели для кодирования последней позиции ненулевого коэффициента определяется исходным размером TU. В дополнение к этому, 60 контекстных моделей используются для кодирования sig_coeff_flag коэффициентов преобразования. Выбор индекса контекстной модели основан на сумме максимум пяти ранее частично восстановленных абсолютных уровней, называемых locSumAbsPass1, и состоянии зависимого квантования QState следующим образом:

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

ctxInc = 12 * Max(0, QState - 1) +

Min((locSumAbsPass1 + 1) >> 1, 3) + (d < 2 ? 8 : (d < 5 ? 4 : 0))

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

ctxInc = 36 + 8 * Max(0, QState - 1) +

Min((locSumAbsPass1 + 1) >> 1, 3) + (d < 2 ? 4 : 0)

Режим палитры

Основная идея режима палитры состоит в том, что отсчеты в CU представлены маленьким набором репрезентативных цветовых значений. Этот набор называется палитрой. Кроме того, можно также указать цветовое значение, которое исключено из палитры, путем его сигнализации как цвета выделения, для которого значения трех цветовых компонентов непосредственно сигнализируются в битовом потоке. Это показано на фиг. 12.

На фиг. 12 показан пример блока, закодированного в режиме палитры. Более конкретно, на фиг. 12 показан блок 1210, закодированный в режиме палитры, и палитру 1220.

На фиг. 12 размер палитры равен 4. В первых 3 отсчетах для восстановления используются элементы палитры 2, 0 и 3, соответственно. Синий отсчет представляет собой символ выделения (escape). Флаг уровня CU panel_escape_val_present_flag указывает то, присутствуют ли какие-либо символы выделения в CU. При наличии символов выделения размер палитры увеличивается на единицу, и последний индекс используется для обозначения символа выделения. Таким образом, на фиг. 12 символу выделения присвоен индекс 4.

Для декодирования блока с палитровым кодированием декодер должен иметь следующую информацию:

таблицу палитры; и

индексы палитры.

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

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

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

На следующем этапе сортируются кластеры в порядке убывания использования. Затем обновляется запись палитры, соответствующая каждой записи. Как правило, в качестве элемента палитры используется центроид кластера. Однако анализ искажения скорости выполняется для того, чтобы проанализировать то, может ли какая-либо запись из предиктора палитры быть более подходящей для использования в качестве обновленной записи палитры вместо центроида, когда принимается во внимание стоимость кодирования записей палитры. Этот процесс продолжается до тех пор, пока не будут обработаны все кластеры или не будет достигнут максимальный размер палитры. Наконец, если в кластере имеется только один отсчет, и в предикторе палитры отсутствует соответствующая запись палитры, отсчет преобразуется в символ выделения. Кроме того, повторяющиеся элементы палитры удаляются, и их кластеры объединяются.

После получения палитры каждого отсчета в блоке присваивается индекс ближайшей (в SAD) записи палитры. Затем отсчеты назначаются режиму «INDEX» или «COPY_ABOVE», для каждого отсчета, для которой возможен режим 'INDEX' или 'COPY_ABOVE'. Затем рассчитывается стоимость кодирования режима. Выбирается тот режим, у которого ниже стоимость.

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

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

На фиг. 13 показано использование предиктора палитры для сигнализации записей палитры. На фиг. 13 представлена предыдущая палитра 1310 и текущая палитра 1320.

Флаги повторного использования отправляются с использованием нулевого кодирования длин серий. После этого число новых записей палитры сигнализируется с использованием экспоненциального кода Голомба 0-го порядка. Наконец, для новых записей палитры сигнализируются значения компонентов.

Индексы палитры кодируются с использованием горизонтального и вертикального сканирования, как показано на фиг. 14А и 14В. Порядок сканирования явно сигнализируется в битовом потоке с помощью флага Palette_transpose_flag.

На фиг. 14А показано горизонтальное поперечное сканирование.

На фиг. 14В показано вертикальное поперечное сканирование.

Для кодирования индексов палитры используется режим палитры на основе группы линейных коэффициентов (CG), который делит CU на множество сегментов с 16 отсчетами на основе режима поперечного сканирования, как показано на фиг. 15A и 15B, где прогоны индекса, значения индекса палитры и квантованные цвета для режима выделения кодируются/анализируются последовательно для каждой CG.

На фиг. 15A показано сканирование индексной карты на основе подблоков для палитры.

На фиг. 15B показано сканирование индексной карты на основе подблоков для палитры.

Индексы палитры кодируются с использованием двух основных режимов отсчетов палитры: 'INDEX' и 'COPY_ABOVE'. Как объяснялось ранее, символу выделения назначается индекс, равный максимальному размеру палитры. В режиме 'COPY_ABOVE' индекс палитры отсчета копируется в строке, расположенной выше. В режиме 'INDEX' явно сигнализируется индекс палитры. Порядок кодирования для кодирования прогона палитры в каждом сегменте выглядит следующим образом:

Для каждого пикселя сигнализируется 1 контекстно-кодированный бин run_copy_flag = 0, указывающий то, находится ли пиксель в том же режиме, что и предыдущий пиксель, то есть имеются ли как предыдущий отсканированный пиксель, так и текущий пиксель тип COPY_ABOVE прогона, или имеются ли как предыдущий отсканированный пиксель, так и текущий пиксель тип INDEX прогон и одно и то же значение индекса. В противном случае сигнализируется run_copy_flag = 1.

Если пиксель и предыдущий пиксель имеют разный режим, сигнализируется один контекстно-кодированный бин copy_above_palette_indices_flag, указывающий тип прогона, то есть INDEX или COPY_ABOVE, пикселя. Декодер не должен анализировать тип прогона, если отсчет находится в первой строке (горизонтальное сканирование) или в первом столбце (вертикальное сканирование), так как по умолчанию используется режим INDEX. Кроме того, декодеру не нужно анализировать тип прогона, если ранее проанализированный тип прогона представлял собой COPY_ABOVE.

После того, как палитра запустит кодирование пикселей в одном сегменте, значения индекса для режима INDEX (palette_idx_idc) и квантованные цвета выделения (palette_escape_val) кодируются с обходом.

Усовершенствования кодирования коэффициентов и остатка

В VVC, при кодировании коэффициентов преобразования, получение унифицированного (одного и того же) параметра Райса (RicePara) используется для сигнализации синтаксиса abs_remainder и dec_abs_level. Единственное отличие состоит в том, что базовый уровень baseLevel установлен на 4 и 0 для кодирования abs_remainder и dec_abs_level, соответственно. Параметр Райса определяется на основе не только суммы абсолютных уровней пяти соседних коэффициентов преобразования в локальном шаблоне, но и соответствующего базового уровня, как показано ниже:

RicePara = RiceParTable[max(min(31, sumAbs - 5 * baseLevel), 0)]

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

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

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

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

В текущем VVC доступны две разные схемы отображения уровней, которые применяются к обычному преобразованию и пропуску преобразования, соответственно. Каждая схема отображения уровней связана с различными условиями, функцией отображения и позицией отображения. Для блоков, в которых применяется регулярное преобразование, схема отображения уровней используется после того, как количество контекстно-кодированных бинов (CCB) превысит предельное значение. Позиция отображения, обозначенная как ZeroPos[n], и результат отображения, обозначенный как AbsLevel[xC][yC], получаются таким образом, как указано в таблице 2. Для блоков, где применяется пропуск преобразования, используется другая схема отображения уровней, прежде чем количество бинов с контекстным кодированием (CCB) превысит предельное значение. Позиция отображения, обозначенная как predCoeff, и результат отображения, обозначенный как AbsLevel[xC][yC], получаются таким образом, как указано в таблице 5. Такая неунифицированная конфигурация может быть неоптимальной с точки зрения стандартизации.

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

Предложенные способы

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

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

Во-первых, используется та же процедура для определения кодового слова для abs_remainder, что и в текущем VVC, но всегда с выбранным фиксированным параметром Райса (например, 1, 2 или 3).

Во-вторых, бинаризация фиксированной длины.

В-третьих, усеченная бинаризация Райса.

В-четвертых, процесс усеченной двоичной (TB) бинаризации.

В-пятых, процесс бинаризации экспоненциального кода Голомба k-го порядка (EGk).

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

Согласно второму аспекту настоящего раскрытия предлагается использовать фиксированный набор кодовых слов для кодирования определенных синтаксических элементов, например, abs_remainder и dec_abs_level, при кодировании коэффициента преобразования. Двоичные кодовые слова могут быть сформированы с использованием различных способов. Некоторые примеры способов перечислены ниже.

Во-первых, используется та же процедура для определения кодовых слов для abs_remainder и dec_abs_level, что и в текущем VVC, но с фиксированным параметром, например, 1, 2 или 3. Значение baseLevel все еще может разным для abs_remainder и dec_abs_level, которые используются в текущем VVC (например, для baseLevel установлено значение 4 и 0 для кодирования abs_remainder и dec_abs_level, соответственно).

Во-вторых, используется та же процедура для определения кодовых слов для abs_remainder и dec_abs_level, что и в текущем VVC, но с фиксированным параметром Райса, например, 1, 2 или 3. Значение baseLevels для abs_remainder и dec_abs_level выбирается одинаковым, например, в обоих параметрах используется 0 или 4.

В-третьих, бинаризация фиксированной длины.

В-четвертых, усеченная бинаризация Райса.

В-пятых, процесс усеченной двоичной (TB) бинаризации.

В-шестых, процесс бинаризации экспоненциального кода Голомба k-го порядка (EGk).

В-седьмых, ограниченная бинаризация с использованием экспоненциального кода Голомба k-го порядка.

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

Согласно четвертому аспекту настоящего раскрытия предлагается использовать переменные наборы двоичных кодовых слов для кодирования определенных синтаксических элементов, например, abs_remainder, при кодировании остатка, и выбор набора двоичных кодовых слов определяется в соответствии с определенной кодированной информацией о текущем блоке, например, в соответствии с параметром квантования (QP), ассоциированным с TB/CB и/или слайсом, режимами предсказания CU (например, режимом IBC или внутрикадровым или межкадровым режимом) и/или типом слайса (например, I-слайса, P-слайса или B-слайса). Для получения переменных наборов двоичных кодовых слов можно использовать различные способы, при этом некоторые примеры способов перечислены ниже.

Во-первых, используется та же процедура для определения кодового слова для abs_remainder, которая используется в текущем VVC, но с другими параметрами Райса.

Во-вторых, процесс бинаризации экспоненциального кода Голомба k-го порядка (EGk)

В-третьих, ограниченная бинаризация с использованием экспоненциального кода Голомба k-го порядка

Таблица 6. Определение параметров Райса на основе значения QP

if(QPCU <TH1)
{
rice parameter = K0
}
else if(QPCU <TH2)
{
rice parameter = K1
}
else if(QPCU <TH3)
{
rice parameter = K2
}
else if(QPCU <TH4)
{
rice parameter = K3
}
else
{
rice parameter = K4
}

Те же самые способы, поясненные в четвертом аспекте, также применимы к кодированию с эффективным преобразованием. Согласно пятому аспекту настоящего раскрытия предлагается использовать переменные наборы двоичных кодовых слов для кодирования определенных синтаксических элементов, например, abs_remainder и dec_abs_level, при кодировании коэффициента преобразования, и выбор набора двоичных кодовых слов определяется в соответствии с определенной кодированной информацией о текущем блоке, например, в соответствии с параметром квантования (QP), ассоциированным с TB/CB и/или слайсом, режимами предсказания CU (например, режимом IBC или внутрикадровым или межкадровым режимом) и/или типом слайса (например, I-слайса, P-слайса или B-слайса). Опять же, для получения наборов переменных двоичных кодовых слов можно использовать разные способы, при этом некоторые примеры способов перечислены ниже.

Во-первых, используется та же процедура для определения кодового слова для abs_remainder, которая используется в текущем VVC, но с другими параметрами Райса.

Во-вторых, процесс бинаризации с использованием экспоненциального кода Голомба (Exp-Golomb) порядка k (EGk).

В-третьих, ограниченная бинаризация с использованием экспоненциального кода Голомба k-го порядка.

В этих вышеприведенных способах разные параметры Райса могут использоваться для получения разных наборов двоичных кодовых слов. Для заданного блока отсчетов остатка используемые параметры Райса определяются в соответствии с QP CU, обозначаемым как QPCU, вместо информации соседнего уровня. Один конкретный пример показан в таблице 6, где TH1-TH4 - заданные пороговые значения, удовлетворяющие условию (TH1<TH2<TH3<TH4), и K0-K4 -заданные параметры Райса. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, некоторые уравнения или справочная таблица можно также использовать для получения одних и тех же параметров Райса, как показано в таблице 6, из значения QP текущей CU.

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

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

В одном примере параметр Райса, используемый для определения кодовых слов для кодирования синтаксиса abs_remainder при кодировании остатка с пропуском преобразования, сигнализируется в заголовке слайса, заголовке изображения, PPS и/или SPS. Сигнализируемый параметр Райса используется для определения кодового слова для кодирования синтаксиса abs_remainder, когда CU кодируется как режим пропуска преобразования, и CU ассоциируется с вышеупомянутым заголовком слайса, заголовком изображения, PPS и/или SPS и т.д.

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

В одном примере кодовое слово для abs_remainder, ассоциированное с преобразованием кодирования остатка с преобразованием, которое используется в текущем VVC, используется как для блоков яркости, так и для блоков цветности, но разные фиксированные параметры Райса используются блоком яркости и блоком цветности, соответственно (например, K1 для блока яркости, K2 для блока цветности, где K1 и K2 - целые числа)

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

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

Согласно восьмому аспекту настоящего раскрытия различные k-е порядки бинаризации экспоненциального кода Голомба могут использоваться для получения различных наборов двоичных кодовых слов для значений выделения кодирования в режиме палитры. В одном примере для заданного блока отсчетов выделения используемый параметр Exp-Golomb, то есть значение k, определяется в соответствии со значением QP блока, обозначенным как QPCU. Тот же пример, что проиллюстрирован в таблице 6, можно использовать для получения значения параметра k на основе заданного значения QP блока. Хотя в этом примере перечислены четыре различных пороговых значения (от TH1 до TH4), и пять различных значений k (от K0 до K4) можно получить на основе этих пороговых значений и QPCU, стоит упомянуть, что количество пороговых значений предназначено только для иллюстрации. На практике разное количество пороговых значений можно использовать для разделения всего диапазона значений QP на разное количество сегментов значений QP, и для каждого сегмента значений QP можно использовать другое значение k для получения соответствующих двоичных кодовых слов для значений выделения кодирования блока, который закодирован в режиме палитры. Стоит также отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

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

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

В одном примере согласно аспекту k-е порядки бинаризации экспоненциального кода Голомба используются для определения кодовых слов для кодирования синтаксиса pause_escape_val в режиме палитры, и значение k сигнализируется в битовом потоке в декодер. Значение k может сигнализироваться на разных уровнях, например, оно может передаваться в заголовке слайса, заголовке изображения, PPS и/или SPS и т.д. Сигнализируемый параметр Exp-Golomb используется для определения кодового слова для кодирования синтаксиса pause_escape_val, когда CU закодирована как режим палитры, и CU ассоциируется с вышеупомянутым заголовком слайса, заголовком изображения, PPS и/или SPS и т.д.

Гармонизация отображения уровней для режима пропуска преобразования и режима регулярного преобразования

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

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

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

Упрощение получения параметра Райса при кодировании остатка

Согласно тринадцатому аспекту настоящего раскрытия предлагается использовать простую логику, такую как операция сдвига или деления, вместо таблицы поиска для получения параметра Райса при кодировании синтаксического элемента abs_remainder/dec_abs_level с использованием кода Голомба-Райса. В соответствии с настоящим раскрытием таблица поиска, как указано в таблице 4, может быть удалена. В одном примере параметр Райса cRiceParam получается следующим образом: cRiceParam = (locSumAbs >> n), где n - положительное число, например, 3. Следует отметить, что на практике для достижения тех же результатов можно использовать другую логику, например, операцию деления на значение, равное 2 в степени n. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже с изменениями, выделенными жирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Таблица 7. Процесс получения параметра Райса

Согласно четырнадцатому аспекту настоящего раскрытия предлагается использовать меньшее количество соседних позиций для получения параметра Райса при кодировании синтаксического элемента abs_remainder/dec_abs_level с использованием кода Голомба-Райса. В одном примере предлагается использовать только 2 соседние позиции для получения параметра Райса при кодировании синтаксического элемента abs_remainder/dec_abs_level. Соответствующий процесс декодирования, основанный на проекте VVC, показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Таблица 8. Процесс получения параметра Райса

В другом примере предлагается использовать только одну соседнюю позицию для получения параметра Райса при кодировании синтаксического элемента abs_remainder/dec_abs_level. Соответствующий процесс декодирования, основанный на проекте VVC, показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Таблица 9. Процесс получения параметра Райса

Согласно пятнадцатому аспекту настоящего раскрытия предлагается использовать разные логические схемы для корректировки значения locSumAbs на основе значения baseLevel для получения параметра Райса при кодировании синтаксического элемента abs_remainder/dec_abs_level с использованием кода Голомба-Райса. В одном примере применяются дополнительные операции масштабирования и смещения в виде «(locSumAbs - baseLevel * 5) *alpha + beta». Когда альфа принимает значение 1,5, и бета принимает значение 1, соответствующий процесс декодирования на основе проекта VVC показан ниже, с изменениями, выделенными полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Таблица 10. Процесс получения параметра Райса

Согласно шестнадцатому аспекту настоящего раскрытия предлагается удалить операции обрезания для получения параметра Райса в синтаксическом элементе abs_remainder/dec_abs_level с использованием кода Голомба-Райса. В соответствии с настоящим раскрытием пример процесса декодирования в проекте VVC проиллюстрирован ниже с изменениями, выделенными полужирным шрифтом и курсивом, и удаленным содержанием, показанным зачеркнутым шрифтом.

Таблица 11. Процесс получения параметра Райса

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

Таблица 12. Процесс получения параметра Райса

Согласно семнадцатому аспекту настоящего раскрытия предлагается изменить начальное значение locSumAbs с 0 на ненулевое целое число для получения параметра Райса при кодировании синтаксического элемента abs_remainder/dec_abs_level с использованием кода Голомба-Райса. В одном примере начальное значение 1 присвоено locSumAbs, и соответствующий процесс декодирования на основе проекта VVC показан ниже, с изменениями, выделенными полужирным шрифтом и курсивом, и удаленным содержанием, показанным зачеркнутым шрифтом.

Таблица 13. Процесс получения параметра Райса

Согласно восемнадцатому аспекту настоящего раскрытия предлагается использовать максимальное значение значений уровня соседних позиций вместо их суммарного значения для получения параметра Райса при кодировании синтаксического элемента abs_remainder/dec_abs_level с использованием кода Голомба-Райса. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Таблица 14. Процесс получения параметра Райса

Согласно девятнадцатому аспекту настоящего раскрытия параметр Райса предлагается получать на основе относительной амплитуды каждого значения AbsLevel в соседних позициях и значения базового уровня при кодировании синтаксического элемента abs_remainder/dec_abs_level с использованием кода Голомба-Райса. В одном примере параметр Райса получается на основе того, сколько значений AbsLevel в соседних позициях больше базового уровня. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Таблица 15. Процесс получения параметра Райса

В другом примере параметр Райса получается на основе суммы значений (AbsLevel - baseLevel) для тех соседних позиций, значения AbsLevel которых выше базового уровня. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Таблица 16. Процесс получения параметра Райса

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

Таблица 17. Процесс получения параметра Райса

Упрощение получения позиции отображения уровня при кодировании остатка

Согласно двадцатому аспекту настоящего раскрытия предлагается удалить QState из производного ZeroPos[n], чтобы ZeroPos[n] получался исключительно из cRiceParam. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Таблица 18. Процесс получения параметров Райса

Согласно двадцать первому аспекту настоящего раскрытия ZeroPos[n] предлагается получать на основе значения locSumAbs. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Таблица 19. Процесс получения параметра Райса

Согласно двадцать второму аспекту настоящего раскрытия ZeroPos[n] предлагается получать на основе значения AbsLevel соседних позиций. В одном примере ZeroPos[n] получается на основе максимального значения AbsLevel[xC+1][yC] и AbsLevel[xC][yC+1]. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

Согласно двадцать третьему аспекту настоящего раскрытия как cRiceParam, так и ZeroPos[n] предлагается получать на основе максимального значения всех значений AbsLevel соседних позиций. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом.

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

predCoeff = Max(absLeftCoeff, absAboveCoeff) + 1

Кодирование остатка для коэффициентов преобразования

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

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

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

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

Получение параметра Райса при кодировании остатка на основе текущей разработки

Согласно двадцать четвертому аспекту настоящего раскрытия предлагается использовать различные способы получения параметров Райса для кодирования определенных синтаксических элементов, например, abs_remainder/dec_abs_level, при кодировании остатка, и выбор определяется в соответствии с определенной кодированной информацией текущего блока, например, в соответствии с параметром квантования или битовой глубиной кодирования, ассоциированной с TB/CB и/или слайсом/профилем, и/или в соответствии с новым флагом, ассоциированным с уровнем TB/CB/слайса/изображения/последовательности, например, extended_precision_processing_flag. Для получения параметра Райса можно использовать различные способы, некоторые примеры которых перечислены ниже.

Во-первых, cRiceParam = (cRiceParam << a)+ (cRiceParam >> b)+c, где a, b и c являются положительными числами, например, {a,b,c}={1,1,0}. Следует отметить, что на практике для достижения тех же результатов можно использовать и другие различные логические схемы, например, операцию умножения на значение, равное 2 в степени n.

Во-вторых, cRiceParam = (cRiceParam << a) +b, где a и b являются положительными числами, например, {a,b}= {1,1}. Следует отметить, что на практике для достижения тех же результатов можно использовать другие различные логические схемы, например, операцию умножения на значение, равное 2 в степени n.

В-третьих, cRiceParam = (cRiceParam*a) +b, где a и b являются положительными числами, например, {a,b}={1,5,0}. Следует отметить, что на практике для достижения тех же результатов можно использовать другие различные логические схемы, например, операцию умножения на значение, равное 2 в степени n.

Пример соответствующего процесса декодирования на основе проекта VVC проиллюстрирован ниже с изменениями, выделенными полужирным шрифтом и курсивом, и удаленным содержанием, показанным зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 22 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика на практике может быть реализована по-разному. Например, некоторые уравнения или справочная таблица можно также использовать для получения одних и тех же параметров Райса из значения BitDepth текущей CU/последовательности.

Таблица 22. Процесс получения параметра Райса

В другом примере, когда BitDepth больше или равно заданному пороговому значению (например, 10, 11, 12, 13, 14, 15 или 16), параметр Райса cRiceParam получается как: cRiceParam = (cRiceParam << a)+ (cRiceParam >> b)+c, где a, b и c - положительные числа, например, 1. Соответствующий процесс декодирования на основе проекта VVC показан ниже с изменениями, выделенными жирным и курсивным шрифтом, и удаленным содержанием с зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 23 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, некоторые уравнения или справочная таблица можно также использовать для получения одних и тех же параметров Райса из значения BitDepth текущей CU/последовательности.

Таблица 23. Процесс получения параметра Райса

Двоичные способы при кодировании остатка для профилей за пределами 10 битов

Согласно двадцать пятому аспекту настоящего раскрытия предлагается использовать переменные наборы двоичных кодовых слов для кодирования определенных синтаксических элементов, например, abs_remainder/dec_abs_level, при кодировании остатка, и выбор определяется в соответствии с определенной кодированной информацией текущего блока, например, в соответствии с параметром квантования или битовой глубиной кодирования, ассоциированной с TB/CB и/или слайсом/профилем, и/или в соответствии с новым флагом, ассоциированным с уровнем TB/CB/слайса/изображения/последовательности, например, extended_precision_processing_flag. Для получения переменных наборов двоичных кодовых слов можно использовать различные способы, при этом некоторые примеры способов перечислены ниже.

Во-первых, используется та же процедура для определения кодового слова для abs_remainder, что и в текущем VVC, но всегда с выбранным фиксированным параметром Райса (например, 2, 3, 4, 5, 6, 7 или 8). Фиксированное значение может отличаться в различных условиях в соответствии с определенной кодированной информацией текущего блока, например, в соответствии с параметром квантования или битовой глубиной кодирования, ассоциированной с TB/CB и/или слайсом/профилем, и/или в соответствии с синтаксическим элементом, ассоциированным с уровнем TB/CB/слайса/изображения/последовательности, например, rice_ parameter_value. Один конкретный пример показан в таблице 24, где TH1-TH4 - заданные пороговые значения, удовлетворяющие условию (TH1<TH2<TH3<TH4), и K0-K4 - заданные параметры Райса. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, определенные уравнения или справочная таблица также можно использовать для получения одних и тех же параметров Райса, как показано в таблице 24, из значения BitDepth текущей CU/последовательности.

Во-вторых, бинаризация фиксированной длины.

В-третьих, усеченная бинаризация Райса.

В-четвертых, процесс усеченной двоичной (TB) бинаризаци.

В-пятых, процесс бинаризации экспоненциального кода Голомба k-го порядка (EGk).

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

Таблица 24. Определение параметров Райса на основе битовой глубины

if(BitDepth <TH1)
{
rice parameter = K0
}
else if(BitDepth <TH2)
{
rice parameter = K1
}
else if(BitDepth <TH3)
{
rice parameter = K2
}
else if(BitDepth <TH4)
{
rice parameter = K3
}
else
{
rice parameter = K4
}

В одном примере, когда новый флаг, например, extended_precision_processing_flag, равен 1, параметр Райса cRiceParam имеет фиксированное значение n, где n - положительное число (например, 2, 3, 4, 5, 6, 7 или 8). Фиксированное значение может отличаться в разных условиях. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 25 жирным шрифтом и курсивом.

Таблица 25. Процесс получения параметра Райса

Параметр Райса cRiceParam получается следующим образом:
- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.

- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В другом примере предлагается использовать только одно фиксированное значение для параметра Райса при кодировании синтаксического элемента abs_remainder/dec_abs_level, когда новый флаг, например, extended_precision_processing_flag, равен 1. Соответствующий процесс декодирования на основе проекта VVC показан ниже с изменениями, выделенными полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 26 жирным шрифтом и курсивом.

В еще одном примере, когда BitDepth больше или равно заданному пороговому значению (например, 10, 11, 12, 13, 14, 15 или 16), параметр Райса cRiceParam имеет фиксированное значение n, где n - положительное число, например, 4, 5, 6, 7 или 8. Фиксированное значение может отличаться в разных условиях. Пример соответствующего процесса декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное пороговое значение (например, 10, 11, 12, 13, 14, 15 или 16). Изменения в проекте VVC показаны в таблице 27 жирным шрифтом и курсивом, и изменения, выделенные жирным шрифтом и курсивом и с удаленным содержанием показаны зачеркнутым шрифтом.

Таблица 27. Процесс получения параметра Райса

Параметр Райса cRiceParam получается следующим образом:
- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.

- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере предлагается использовать только одно фиксированное значение для параметра Райса при кодировании синтаксического элемента abs_remainder/dec_abs_level, когда BitDepth больше заданного порогового значения (например, 10, 11, 12, 13, 14, 15 или 16). Соответствующий процесс декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное пороговое значение (например, 10, 11, 12, 13, 14, 15 или 16), и с изменениями, выделенными жирным шрифтом и курсивом, и с удаленным содержанием, показанным перечеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 28 жирным шрифтом и курсивом.

Таблица 28. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

Получение параметра Райса при кодировании остатка

Согласно двадцать шестому аспекту настоящего раскрытия предлагается использовать различные способы получения параметров Райса для кодирования определенных синтаксических элементов, например, abs_remainder/dec_abs_level, при кодировании остатка, и выбор определяется в соответствии с определенной кодированной информацией текущего блока, например, в соответствии с параметром квантования или битовой глубиной кодирования, ассоциированной с TB/CB и/или слайсом/профилем, и/или в соответствии с новым флагом, ассоциированным с уровнем TB/CB/слайса/изображения/последовательности, например, extended_precision_processing_flag. Для получения параметра Райса можно использовать различные способы, некоторые примеры которых перечислены ниже.

Во-первых, предлагается использовать счетчики для получения параметра Райса. Счетчики определяются в соответствии со значением кодированного коэффициента и определенной кодированной информацией текущего блока, например, идентификатором компонента. Одним конкретным примером является параметр riceParameter = counter / a, где a - положительное число, например, 4, и он поддерживает 2 счетчика (разделенные по яркости/цветности). Эти счетчики сбрасываются на 0 в начале каждого слайса. После кодирования счетчик обнуляется, если это первый коэффициент, закодированный в под-TU следующим образом:

if (coeffValue >= (3 << rice)) counter++

if (((coeffValue << 1) < (1 << riceParameter)) && (counter > 0)) counter--;

Во-вторых, предлагается добавить операцию сдвига при получении параметра Райса в VVC. Сдвиг определяется по значению кодированного коэффициента. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже, смещение определяется в соответствии со счетчиками способа 1, и изменения выделены полужирным и курсивным шрифтом, и удаленное содержание показано зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 29 жирным шрифтом и курсивом.

Во-первых, предлагается добавить операцию сдвига при получении параметра Райса в VVC. Сдвиг определяется в соответствии с определенной кодированной информацией текущего блока, например, в соответствии с битовой глубиной кодирования, ассоциированной с TB/CB, и/или профилем слайса (например, 14-битным профилем или 16-битовым профилем). Пример соответствующего процесса декодирования на основе проекта VVC показан ниже, смещение определяется в соответствии со счетчиками способа 1, и изменения выделены полужирным и курсивным шрифтом, и удаленное содержание показано зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 30 жирным шрифтом и курсивом.

Кодирование остатка для пропуска преобразования

Согласно двадцать седьмому аспекту настоящего раскрытия предлагается использовать переменные наборы двоичных кодовых слов для кодирования определенных синтаксических элементов, например, abs_remainder, при кодировании остатка с пропуском преобразования, и выбор определяется в соответствии с определенной кодированной информацией текущего блока, например, в соответствии с параметром квантования или битовой глубиной кодирования, ассоциированная с TB/CB и/или слайсом/профилем, и/или в соответствии с новым флагом, ассоциированным с уровнем TB/CB/слайса/изображения/последовательности, например, extended_precision_processing_flag. Для получения переменных наборов двоичных кодовых слов можно использовать различные способы, при этом некоторые примеры способов перечислены ниже.

Во-первых, используется та же процедура для определения кодового слова для abs_remainder, что и в текущем VVC, но всегда с выбранным фиксированным параметром Райса (например, 2, 3, 4, 5, 6, 7 или 8). Фиксированное значение может отличаться в различных условиях в зависимости от определенной кодированной информации текущего блока, например, параметра квантования, типа кадра (например, I, P или B), идентификатора компонента (например, яркости или цветности), цветового формата (например,, 420, 422 или 444) или битовой глубиной кодирования, ассоциированной с TB/CB и/или слайсом/профилем, и/или в зависимости от синтаксического элемента, ассоциированного с уровнем TB/CB/слайса/изображения/последовательности, например, rice_ parameter_value. Один конкретный пример показан в таблице 7, где TH1-TH4 - заданные пороговые значения, удовлетворяющие условию (TH1<TH2<TH3<TH4), и K0-K4 - заданные параметры Райса. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, некоторые уравнения или справочная таблица также можно использовать для получения одних и тех же параметров Райса, как показано в таблице 7, из значения BitDepth текущей CU/последовательности.

Во-вторых, бинаризация фиксированной длины.

В-третьих, усеченная бинаризация Райса.

В-четвертых, процесс усеченной двоичной (TB) бинаризаци.

В-пятых, процесс бинаризации экспоненциального кода Голомба k-го порядка (EGk).

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

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

Таблица 31. Процесс получения параметра Райса

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

- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В другом примере предлагается использовать только одно фиксированное значение для параметра Райса при кодировании синтаксического элемента abs_remainder, когда новый флаг, например, extended_precision_processing_flag, равен 1. Соответствующий процесс декодирования на основе проекта VVC проиллюстрирован ниже с изменениями, выделенными полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 32 жирным шрифтом и курсивом.

Таблица 32. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере, когда новый флаг, например, extended_precision_processing_flag, равен 1, параметр Райса cRiceParam имеет фиксированное значение n, где n представляет собой положительное число (например, 2, 3, 4, 5, 6, 7 или 8). Фиксированное значение может отличаться в разных условиях. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже: изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 33 жирным шрифтом и курсивом.

Таблица 33. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере, когда BitDepth больше или равно заданному пороговому значению (например, 10, 11, 12, 13, 14, 15 или 16), параметр Райса cRiceParam имеет фиксированное значение n, где n - положительное число, например, 4, 5, 6, 7 или 8. Фиксированное значение может отличаться в разных условиях. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже, где TH - заданное пороговое значение (например, 10, 11, 12, 13, 14, 15 или 16), с изменениями, выделенными полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 34 жирным шрифтом и курсивом.

Таблица 34. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере один управляющий флаг сигнализируется в заголовке слайса для того, чтобы указать, включена или отключена сигнализация параметра Райса для блоков пропуска преобразования. Когда управляющий флаг сигнализируется как включенный, дополнительно сигнализируется один синтаксический элемент для каждого слайса пропуска преобразования, чтобы указать параметр Райса этого слайса. Когда управляющий флаг сигнализируется как отключенный (например, установленный равным «0»), никакие дополнительные синтаксические элементы не сигнализируются на более низком уровне для того, чтобы указать параметр Райса для слайса пропуска преобразования, и параметр Райса (например, 1) используется по умолчанию для каждого слайса пропуска преобразования. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже, где TH - заданное значение (например, 0, 1, 2), изменения выделены полужирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом. Изменения в проекте VVC показаны в таблице 35 жирным шрифтом и курсивом. Следует отметить, что параметр sh_ts_residual_coding_rice_index может быть закодирован по-разному и/или иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка с фиксированным шаблоном, использующая n битов, записанная (слева направо) с первым битом слева, также может использоваться для кодирования/декодирования одного и того же синтаксического элемента.

Синтаксис заголовка слайса

Значение sh_ts_residual_coding_rice_flag, равное 1, указывает то, что sh_ts_residual_coding_rice_index может присутствовать в текущем фрагменте. sh_ts_residual_coding_rice_flag, равный 0, указывает то, что sh_ts_residual_coding_rice_index не присутствует в текущем фрагменте. Когда sh_ts_residual_coding_rice_flag отсутствует, предполагается, что значение sh_ts_residual_coding_rice_flag равно 0.

sh_ts_residual_coding_rice_index задает параметр Райса, используемый для синтаксической структуры residual_ts_coding().

Таблица 36. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере один управляющий флаг сигнализируется в наборе параметров последовательности (или в синтаксисе расширений диапазона набора параметров последовательности), чтобы указать, включена или отключена сигнализация параметра Райса для блоков пропуска преобразования. Когда управляющий флаг сигнализируется как включенный, дополнительно сигнализируется один синтаксический элемент для каждого слайса пропуска преобразования, чтобы указать параметр Райса этого слайса. Когда управляющий флаг сигнализируется как отключенный (например, установленный равным «0»), никакие дополнительные синтаксические элементы не сигнализируются на более низком уровне, чтобы указать параметр Райса для слайса пропуска преобразования, и параметр Райса (например, 1) используется по умолчанию для каждого слайса пропуска преобразования. Пример соответствующего процесса декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в таблице 37 жирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом. Следует отметить, что sh_ts_residual_coding_rice_idx может быть закодирован по-разному и/или может иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка с фиксированным шаблоном, использующая n битов, записанная (слева направо) с первым битом слева, также может использоваться для кодирования/декодирования одного и того же синтаксического элемента.

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

Таблица 37. Синтаксис кодирования остатка

Значение sps_ts_residual_coding_rice_present_in_sh_flag, равное 1, указывает то, что sh_ts_residual_coding_rice_idx может присутствовать в синтаксических структурах SH, относящихся к SPS. sps_ts_residual_coding_rice_present_in_sh_flag, равный 0, указывает то, что sh_ts_residual_coding_rice_idx не присутствует в синтаксических структурах SH, относящихся к SPS. Когда sps_ts_residual_coding_rice_present_in_sh_flag отсутствует, предполагается, что значение sps_ts_residual_coding_rice_present_in_sh_flag равно 0.

Синтаксис заголовка слайса

sh_ts_residual_coding_rice_idx задает параметр Райса, используемый для синтаксической структуры absolute_ts_coding().

Таблица 39. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере один синтаксический элемент сигнализируется для каждого слайса пропуска преобразования, чтобы указать параметр Райса этого слайса. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже. Изменения в проекте VVC показаны в таблице 40 жирным шрифтом и курсивом. Следует отметить, что sh_ts_residual_coding_rice_idx может быть закодирован по-разному и/или может иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка с фиксированным шаблоном, использующая n битов, записанная (слева направо) с первым битом слева, также может использоваться для кодирования/декодирования одного и того же синтаксического элемента.

Синтаксис заголовка слайса

Таблица 40. Синтаксис кодирования остатка

sh_ts_residual_coding_rice_idx задает параметр Райса, используемый для синтаксической структуры absolute_ts_coding(). Когда sh_ts_residual_coding_rice_idx отсутствует, предполагается, что значение sh_ts_residual_coding_rice_idx равно 0.

Таблица 41. Процесс получения параметра Райса

В еще одном примере один управляющий флаг сигнализируется в синтаксисе расширений диапазона набора параметров изображения, чтобы указать, включена или отключена сигнализация параметра Райса для блоков пропуска преобразования. Когда управляющий флаг сигнализируется как включенный, дополнительно сигнализируется один синтаксический элемент для указания параметра Райса этого изображения. Когда управляющий флаг сигнализируется как отключенный (например, установлен равным «0»), никакие другие синтаксические элементы не сигнализируются на более низком уровне, чтобы указать параметр Райса для слайса пропуска преобразования, и параметр Райса (например, 1) используется по умолчанию для каждого слайса пропуска преобразования. Пример соответствующего процесса декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в таблице 42 жирным шрифтом и курсивом. Следует отметить, что параметр pps_ts_residual_coding_rice_idx может быть закодирован по-разному и/или иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка с фиксированным шаблоном, использующая n битов, записанная (слева направо) с первым битом слева, также может использоваться для кодирования/декодирования одного и того же синтаксического элемента.

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

Таблица 42. Синтаксис кодирования остатка

Значение pps_ts_residual_coding_rice_flag, равное 1, указывает то, что pps_ts_residual_coding_rice_index может присутствовать в текущем изображении. Значение pps_ts_residual_coding_rice_flag, равное 0, указывает то, что pps_ts_residual_coding_rice_idx отсутствует в текущем изображении. Когда pps_ts_residual_coding_rice_flag отсутствует, предполагается, что значение pps_ts_residual_coding_rice_flag равно 0.

pps_ts_residual_coding_rice_ idx задает параметр Райса, используемый для синтаксической структуры residual_ts_coding().

Таблица 43. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере предлагается использовать только изменяющийся параметр Райса для кодирования синтаксического элемента abs_remainder. Значение применяемого параметра Райса можно определить в соответствии с определенной кодированной информацией текущего блока, например, в соответствии с размером блока, параметром квантования, битовой глубиной, типами преобразования и т.д. В одном конкретном варианте осуществления предлагается регулировать параметр Райса на основе битовой глубины кодирования и параметра квантования, который применяется к одной CU. Соответствующий процесс декодирования на основе проекта VVC показан ниже, изменения в проекте VVC показаны в таблице 44 жирным курсивом, и удаленное содержание показано зачеркнутым шрифтом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 44. Процесс получения параметра Райса

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



- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере соответствующий процесс декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное пороговое значение (например, 33 или 34). Изменения в проекте VVC показаны в таблице 45 жирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 45. Процесс получения параметра Райса

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

- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере соответствующий процесс декодирования на основе проекта VVC проиллюстрирован, как показано ниже, где THA и TH B - заданные пороговые значения (например, THA =8, TH B =33 или 34). Изменения в проекте VVC показаны в таблице 46 жирным шрифтом и курсивом, и удаленное содержание показано зачеркнутым шрифтом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 46. Процесс получения параметра Райса

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

- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере предлагается использовать изменяющийся параметр Райса только для кодирования синтаксического элемента abs_remainder, когда новый флаг, например, extended_precision_processing_flag, равен 1. Переменное значение можно определить в соответствии с определенной кодированной информацией о текущем блоке, например, в соответствии с размером блока, параметром квантования, битовой глубиной, типами преобразования и т.д. В одном конкретном варианте осуществления предлагается регулировать параметр Райса на основе битовой глубины кодирования и параметра квантования, которые применяются к одной CU. Соответствующий процесс декодирования на основе проекта VVC показан ниже. Изменения в проекте VVC показаны в таблице 47 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 47. Процесс получения параметра Райса

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


- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере соответствующий процесс декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное пороговое значение (например, 18, 19). Изменения в проекте VVC показаны в таблице 48 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 48. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере соответствующий процесс декодирования на основе проекта VVC проиллюстрирован, как показано ниже, где THA и TH B - заданные пороговые значения (например, THA =8, THB =18 или 19). Изменения в проекте VVC показаны в таблице 49 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 49. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

На фиг. 16 показан способ кодирования видео. Способ может быть применен, например, к кодеру.

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

На этапе 1612 кодер может получить параметр квантования на основе входного видеосигнала. Параметр квантования, например, может вычисляться блоком квантования в кодере.

На этапе 1614 кодер может вывести параметр Райса на основе по меньшей мере одного заданного порогового значения, битовой глубины кодирования и параметра квантования. Параметр Райса, например, используется для сигнализации синтаксисов abs_remainder и dec_abs_level.

На этапе 1616 кодер может энтропийно кодировать битовый видеопоток на основе параметра Райса. Битовый видеопоток, например, может быть подвергнут энтропийному кодированию для выработки сжатого битового видеопотока.

В еще одном примере предлагается использовать только фиксированное значение (например, 2, 3, 4, 5, 6, 7 или 8) для параметра ris при кодировании синтаксического элемента abs_remainder, когда BitDepth больше 10. Фиксированное значение может отличаться в различных условиях в зависимости от определенной кодированной информации текущего блока, например, параметра квантования. Соответствующий процесс декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное пороговое значение (например, 18, 19). Изменения в проекте VVC показаны в таблице 50 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 50. Процесс получения параметров Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере соответствующий процесс декодирования на основе проекта VVC показан ниже, где THA и THB - заданные пороговые значения (например, THA =8, THB =18 или 19). Изменения в проекте VVC показаны в таблице 51 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 51. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере соответствующий процесс декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное пороговое значение (например, 33 или 34). изменения в проекте VVC показаны в таблице 52 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 52. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере соответствующий процесс декодирования на основе проекта VVC проиллюстрирован ниже, где THA и THB - заданные пороговые значения (например, THA =8, THB =33 или 34). Изменения в проекте VVC показаны в таблице 53 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Таблица 53. Процесс получения параметра Райса

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

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

Сигнализация информации для кодирования регулярного остатка и кодирования остатка с пропуском преобразования

Согласно двадцать восьмому аспекту настоящего раскрытия предлагается сигнализировать параметр Райса двоичных кодовых слов для кодирования определенных синтаксических элементов, например, abs_remainder при кодировании остатка с пропуском преобразования, параметры сдвига и смещения для получения параметра Райса, используемого для abs_remainder/dec_abs_level при кодировании регулярного остатка и определить, следует ли сигнализировать в соответствии с определенной кодированной информацией текущего блока, например, в соответствии с параметром квантования или битовой глубиной кодирования, ассоциированной с TB/CB и/или слайсом/профилем, и/или в соответствии с новым флагом, ассоциированным с уровнем TB/CB/slice/picture/sequence, например, sps_residual_coding_info_present_in_sh_flag.

В одном примере один управляющий флаг сигнализируется в заголовке слайса для того, чтобы указать, включены или отключены сигнализация параметра Райса для блоков пропуска преобразования и сигнализация параметров сдвига и/или смещения для получения параметра Райса в блоках преобразования. Когда управляющий флаг сигнализируется как включенный, один синтаксический элемент дополнительно сигнализируется для каждого слоя пропуска преобразования для того, чтобы указать параметр Райса этого слайса, и два синтаксических элемента дополнительно сигнализируются для каждого слайса преобразования для того, чтобы указать параметры сдвига и/или смещения для получения параметра Райса этого слайса. Когда управляющий флаг сигнализируется как отключенный (например, установленный равным «0»), никакие дополнительные синтаксические элементы не сигнализируются на более низком уровне для того, чтобы указать параметр Райса для слайса пропуска преобразования, и параметр Райса (например, 1) используется по умолчанию для каждого слайса пропуска преобразования, и никакой другой синтаксический элемент не сигнализируется на более низком уровне для того, чтобы указать параметры сдвига и смещения для получения параметра Райса для слайса преобразования, и параметры сдвига и/или смещения по умолчанию (например, 0) используются для каждого слайса преобразования. Пример соответствующего процесса декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в таблице 54 жирным шрифтом и курсивом. Следует отметить, что sh_residual_coding_rice_shift, sh_residual_coding_rice_offset и sh_ts_residual_coding_rice_index могут быть закодированы по-разному и/или могут иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка с фиксированным шаблоном, использующая n битов, записанная (слева направо) с первым битом слева, также может использоваться для кодирования/декодирования одного и того же синтаксического элемента.

На фиг. 17 показан способ декодирования видео. Способ может быть, например, применен к кодеру.

На этапе 1710 кодер может принимать входной видеосигнал.

На этапе 1712 кодер может сигнализировать параметр Райса двоичных кодовых слов для кодирования синтаксических элементов. Синтаксические элементы кодирования могут включать в себя abs_remainder при кодировании остатка с пропуском преобразования.

На этапе 1714 кодер может энтропийно кодировать битовый видеопоток на основе параметра Райса и входного видеосигнала.

Синтаксис заголовка слайса

Таблица 54. Синтаксис кодирования остатка

Значение sh_residual_coding_rice_flag, равное 1, указывает то, что в текущем слайсе могут присутствовать sh_residual_coding_rice_shift, sh_residual_coding_rice_offset и sh_residual_coding_rice_index. sh_residual_coding_rice_flag, равный 0, указывает то, что sh_residual_coding_rice_shift, sh_residual_coding_rice_offset и sh_residual_coding_rice_index отсутствуют в текущем слайсе.

sh_residual_coding_rice_shift задает параметр сдвига, используемый для процесса получения параметра Райса для abs_remainder[] и dec_abs_level[]. Когда sh_residual_coding_rice_shift отсутствует, предполагается, что значение sh_residual_coding_rice_shift равно 0.

sh_residual_coding_rice_offset задает параметр смещения, используемый для процесса получения параметра Райса для abs_remainder[] и dec_abs_level[]. Когда sh_residual_coding_rice_offset отсутствует, предполагается, что значение sh_residual_coding_rice_offset равно 0.

sh_ts_residual_coding_rice_index задает параметр Райса, используемый для синтаксической структуры absolute_ts_coding(). Когда sh_ts_residual_coding_rice_index отсутствует, предполагается, что значение sh_ts_residual_coding_rice_index равно 0.

Таблица 55. Процесс получения параметра Райса


- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В другом примере один управляющий флаг сигнализируется в наборе параметров последовательности (или в синтаксисе расширений диапазона набора параметров последовательности) для того, чтобы указать то, включены или отключены сигнализация параметра Райса для блоков пропуска преобразования и сигнализация параметров сдвига и/или смещения для получения параметра Райса в блоках преобразования. Когда управляющий флаг сигнализируется как включенный, дополнительно один синтаксический элемент сигнализируется для каждого слоя пропуска преобразования для того, чтобы указать параметр Райса этого слайса, и два синтаксических элемента дополнительно сигнализируются для каждого слайса преобразования для того, чтобы указать параметры сдвига и/или смещения для получения параметра Райса этого слайса. Когда управляющий флаг сигнализируется как отключенный (например, установленный равным «0»), никакой другой синтаксический элемент не сигнализируется на более низком уровне для того, чтобы указать параметр Райса для слайса пропуска преобразования, и параметр Райса (например, 1) используется по умолчанию для каждого слайса пропуска преобразования, и никакой другой синтаксический элемент не сигнализируется на более низком уровне для того, чтобы указать параметры сдвига и/или смещения для получения параметра Райса для слайса преобразования, и параметры сдвига и/или смещения (например, 0) используются по умолчанию для каждого слайса преобразования. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в таблице 57 жирным шрифтом и курсивом. Следует отметить, что sh_residual_coding_rice_shift, sh_residual_coding_rice_offset и sh_ts_residual_coding_rice_idx могут быть закодированы по-разному и/или могут иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка с фиксированным шаблоном, использующая n битов, записанная (слева направо) с первым битом слева, также может использоваться для кодирования/декодирования одного и того же синтаксического элемента.

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

Таблица 57. Синтаксис кодирования остатка

Значение sps_residual_coding_info_present_in_sh_flag, равное 1, указывает то, что sh_residual_coding_rice_shift, sh_residual_coding_rice_offset и sh_ts_residual_coding_rice_idx могут присутствовать в синтаксических структурах SH, относящихся к SPS. Значение sps_residual_coding_info_present_in_sh_flag, равное 0, указывает то, что sh_residual_coding_rice_shift, sh_residual_coding_rice_offset и sh_ts_residual_coding_rice_idx не присутствуют в синтаксических структурах SH, относящихся к SPS. Когда sps_residual_coding_info_present_in_sh_flag отсутствует, предполагается, что значение sps_residual_coding_info_present_in_sh_flag равно 0.

Синтаксис заголовка слайса

Таблица 58. Синтаксис кодирования остатка

sh_residual_coding_rice_shift задает параметр сдвига, используемый для процесса получения параметра Райса для abs_remainder[] и dec_abs_level[]. Когда sh_residual_coding_rice_shift отсутствует, предполагается, что значение sh_residual_coding_rice_shift равно 0.

sh_residual_coding_rice_offset задает параметр смещения, используемый для процесса получения параметра Райса для abs_remainder[] и dec_abs_level[]. Когда sh_residual_coding_rice_offset отсутствует, предполагается, что значение sh_residual_coding_rice_offset равно 0.

sh_ts_residual_coding_rice_idx задает параметр Райса, используемый для синтаксической структуры absolute_ts_coding(). Когда sh_ts_residual_coding_rice_index отсутствует, предполагается, что значение sh_ts_residual_coding_rice_index равно 0.

В еще одном примере один синтаксический элемент сигнализируется для каждого слоя пропуска преобразования для того, чтобы указать параметр Райса этого слайса, и два синтаксических элемента сигнализируются для каждого слайса преобразования для того, чтобы указать параметры сдвига и/или смещения для получения параметра Райса этого слайса. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже. Изменения в проекте VVC показаны в таблице 61 жирным шрифтом и курсивом. Следует отметить, что sh_residual_coding_rice_shift, sh_residual_coding_rice_offset и sh_ts_residual_coding_rice_idx могут быть закодированы по-разному и/или могут иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка с фиксированным шаблоном, использующая n битов, записанная (слева направо) с первым битом слева, также может использоваться для кодирования/декодирования одного и того же синтаксического элемента.

Синтаксис заголовка слайса

Таблица 61. Синтаксис кодирования остатка

sh_ts_residual_coding_rice_idx задает параметр Райса, используемый для синтаксической структуры absolute_ts_coding(). Когда sh_ts_residual_coding_rice_idx отсутствует, предполагается, что значение sh_ts_residual_coding_rice_idx равно 0.

sh_residual_coding_rice_offset задает параметр смещения, используемый для процесса получения параметра Райса для abs_remainder[] и dec_abs_level[]. Когда sh_residual_coding_rice_offset отсутствует, предполагается, что значение sh_residual_coding_rice_offset равно 0.

sh_ts_residual_coding_rice_idx задает параметр Райса, используемый для синтаксической структуры absolute_ts_coding(). Когда sh_ts_residual_coding_rice_index отсутствует, предполагается, что значение sh_ts_residual_coding_rice_index равно 0.

Таблица 62. Процесс получения параметра Райса

Процесс бинаризации для abs_remainder[]

Параметр Райса cRiceParam получается следующим образом:
- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере один управляющий флаг сигнализируется в синтаксисе расширений диапазона набора параметров изображения для того, чтобы указать то, используется ли сигнализация параметра Райса для блоков пропуска преобразования, и включается или отключается сигнализация параметров сдвига и/или смещения для получения параметра Райса в блоках преобразования. Когда управляющий флаг сигнализируется как включенный, один синтаксический элемент дополнительно сигнализируется для указания параметра Райса для кодирования остатка с пропуском преобразования этого изображения, и два синтаксических элемента дополнительно сигнализируются для кодирования регулярного остатка для того, чтобы указать параметры сдвига и/или смещения для получения параметра Райса этого изображения. Когда управляющий флаг сигнализируется как отключенный (например, установлен равным «0»), никакие дополнительные синтаксические элементы не сигнализируются на более низком уровне для того, чтобы указать параметр Райса для кодирования остатка с пропуском преобразования, и параметр Райса (например, 1) используется по умолчанию для каждого кодирования остатка с пропуском преобразования, и никакой другой синтаксический элемент не сигнализируется на более низком уровне для того, чтобы указать параметры сдвига и/или смещения для получения параметра Райса для кодирования регулярного остатка, и параметры сдвига и/или смещения (например, 0) используются по умолчанию для каждого кодирования регулярного остатка. Пример соответствующего процесса декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в таблице 64 жирным шрифтом и курсивом. Следует отметить, что pps_residual_coding_rice_shift, pps_residual_coding_rice_offset и pps_ts_residual_coding_rice_idx могут быть закодированы по-разному и/или могут иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка с фиксированным шаблоном, использующая n битов, записанная (слева направо) с первым битом слева, также может использоваться для кодирования/декодирования одного и того же синтаксического элемента.

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

Таблица 64. Синтаксис кодирования остатка

Значение pps_residual_coding_info_flag, равное 1, указывает то, что pps_residual_coding_rice_shift, pps_residual_coding_rice_offset и pps_ts_residual_coding_rice_index могут присутствовать в текущем изображении. Значение pps_residual_coding_info_flag, равное 0, указывает то, что pps_residual_coding_rice_shift, pps_residual_coding_rice_offset и pps_ts_residual_coding_rice_idx отсутствуют в текущем изображении. Когда pps_residual_coding_info_flag отсутствует, предполагается, что значение pps_residual_coding_info_flag равно 0.

pps_residual_coding_rice_shift задает параметр сдвига, используемый для процесса получения параметра Райса для abs_remainder[] и dec_abs_level[]. Когда pps_residual_coding_rice_shift отсутствует, предполагается, что значение pps_residual_coding_rice_shift равно 0.

pps_residual_coding_rice_offset задает параметр смещения, используемый для процесса получения параметра Райса для abs_remainder[] и dec_abs_level[]. Когда pps_residual_coding_rice_offset отсутствует, предполагается, что значение pps_residual_coding_rice_offset равно 0.

pps_ts_residual_coding_rice_idx задает параметр Райса, используемый для синтаксической структуры absolute_ts_coding(). Когда pps_ts_residual_coding_rice_index отсутствует, предполагается, что значение pps_ts_residual_coding_rice_index равно 0.

Таблица 65. Процесс получения параметра Райса

Процесс бинаризации для abs_remainder[]

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

Согласно двадцать девятому аспекту настоящего раскрытия предлагается использовать разные параметры Райса для кодирования определенных синтаксических элементов, например, abs_remainder при кодировании остатка с пропуском преобразования, параметры сдвига и смещения для получения параметра Райса, используемого для abs_remainder/ dec_abs_level при кодировании регулярного остатка, и определения того, какой из них использовать в соответствии с определенной кодированной информацией текущего блока, например, параметром квантования или битовой глубиной кодирования, ассоциированной с TB/CB и/или слайсом/профилем, и/или в соответствии с новым флагом, ассоциированным с уровнем TB/CB/slice/picture/sequence, например, sps_residual_coding_info_present_in_sh_flag.

В одном примере один управляющий флаг сигнализируется в заголовке слайса, чтобы указать, включены или отключены процесс получения параметра Райса для блоков пропуска преобразования и процесс получения параметров сдвига и/или смещения для параметра Райса в блоках преобразования. Когда управляющий флаг сигнализируется как включенный, параметр Райса может отличаться при другом условии в зависимости от определенной кодированной информации текущего блока, например, параметра квантования и битовой глубины. И параметры сдвига и/или смещения для получения параметра Райса при кодировании регулярного остатка могут быть разными в различных условиях в зависимости от определенной кодированной информации текущего блока, например, параметра квантования и битовой глубины. Когда флаг управления сигнализируется как отключенный (например, установлен равным «0»), параметр Райса (например, 1) используется по умолчанию для всех слайсов пропуска преобразования, и параметры сдвига и/или смещения по умолчанию (например, 0) используются для всего слайса преобразования. Пример соответствующего процесса декодирования на основе проекта VVC показан ниже, где THA и THB - заданные пороговые значения (например, THA =8, THB =18 или 19). Изменения в проекте VVC показаны в таблице 67 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика может быть реализована на практике по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

Синтаксис заголовка слайса

Таблица 67. Синтаксис кодирования остатка

Значение sh_residual_coding_rice_flag, равное 1, указывает то, что в текущем слайсе используется зависящий от битовой глубины процесс получения параметра Райса. Значение sh_residual_coding_rice_flag, равное 0, указывает то, что зависящий от битовой глубины процесс получения параметра Райса не используется в текущем слайсе.

Таблица 68. Процесс получения параметра Райса

Процесс бинаризации для abs_remainder[]

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

- Если transform_skip_flag[x0][y0][cIdx] равно 1, и sh_ts_residual_coding_disabled_flag равно 0, параметр Райса cRiceParam устанавливается равным 1.
- В противном случае параметр Райса cRiceParam получается путем вызова процесса получения параметра Райса для abs_remainder[], как указано в таблице 3, с переменной baseLevel, установленной равной 4, индексом cIdx цветового компонента, местоположением яркости (x0, y0), текущим местоположением (xC, yC) сканирования коэффициента, двоичным логарифмом ширины блока преобразования log2TbWidth и двоичным логарифмом высоты блока преобразования log2TbHeight в качестве входных данных.

В еще одном примере соответствующий процесс декодирования на основе проекта VVC проиллюстрирован ниже, где TH - заданное пороговое значение (например, 18, 19). Изменения в проекте VVC показаны в таблице 70 жирным шрифтом и курсивом. Следует отметить, что одна и та же логика на практике может быть реализована по-разному. Например, для получения одних и тех же параметров Райса можно использовать определенные уравнения или справочную таблицу.

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

Например, sps_ts_residual_coding_rice_present_in_sh_flag, равный 1, указывает то, что sh_ts_residual_coding_rice_idx может присутствовать в синтаксических структурах SH, относящихся к SPS. sps_ts_residual_coding_rice_present_in_sh_flag, равный 0, указывает то, что sh_ts_residual_coding_rice_idx не присутствует в синтаксических структурах SH, относящихся к SPS. В соответствии с раскрытием предлагается добавить синтаксический элемент gci_no_ts_residual_coding_rice_constraint_flag в общий синтаксис информации об ограничениях, чтобы обеспечить те же самые общие элементы управления ограничениями, что и другие флаги. Пример процесса декодирования в проекте VVC показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.

На фиг. 19 показан способ кодирования видео согласно одному примеру настоящего раскрытия. Способ может быть, например, применен к декодеру. На этапе 1902 декодер может принять флаг кодирования остатка набора параметров последовательности (SPS), который указывает то, присутствует ли индекс sh_ts_residual_coding_rice_idx в синтаксических структурах SH, относящихся к SPS.

На этапе 1904, в ответ на определение того, что значение флага кодирования остатка SPS равно 1, декодер может определить то, что sh_ts_residual_coding_rice_idx присутствует в синтаксических структурах заголовка слайса (Slice Head, SH), относящихся к SPS.

На этапе 1906, в ответ на определение того, что значение флага кодирования остатка равно 0, декодер может определить то, что sh_ts_residual_coding_rice_idx отсутствует в синтаксических структурах SH, относящихся к SPS.

В другом примере pps_ts_residual_coding_rice_flag, равный 1, указывает то, что pps_ts_residual_coding_rice_index может присутствовать в текущем изображении. pps_ts_residual_coding_rice_flag, равный 0, указывает то, что pps_ts_residual_coding_rice_idx отсутствует в текущем изображении. В соответствии с раскрытием предлагается добавить синтаксический элемент gci_no_ts_residual_coding_rice_constraint_flag в общий синтаксис информации об ограничениях, чтобы обеспечить те же самые общие элементы управления ограничениями, что и другие флаги. Пример процесса декодирования в проекте VVC показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.

В еще одном примере, sps_ris_adaptation_enabled_flag, равный 1, указывает то, что параметр Райса для бинаризации значений abs_remaining[] и dec_abs_level может быть получен по формуле.

Формула может включать в себя: RiceParam = RiceParam + shiftVal и shiftVal = (localSumAbs < Tx[0])? Rx[0]: ((localSumAbs < Tx[1])? Rx[1]: ((localSumAbs < Tx[2])? Rx[2]: ((localSumAbs < Tx[3])? Rx[3]: Rx[4]))),
где списки Tx[] и Rx[] задаются следующим образом: Tx[] = { 32, 128, 512, 2048 }> >(1523) Rx[] = { 0, 2, 4, 6, 8 }

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

На этапе 2004, в ответ на определение того, что значение флага включения адаптации SPS равно 1, декодер может определить то, что используется альтернативное получение параметра Райса для бинаризации синтаксисов.

На этапе 2006, в ответ на определение того, что значение флага включения адаптации SPS равно 0, декодер может определить то, что альтернативное получение параметра Райса для бинаризации синтаксисов не используется.

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

На фиг. 21 показан способ кодирования видео согласно одному примеру настоящего раскрытия. Способ может быть, например, применен к декодеру. На этапе 2102 декодер может принять флаг ограничения параметра Райса для кодирования остатка, чтобы обеспечить управление общими ограничениями для других флагов.

На этапе 2104, в ответ на определение, что значение флага ограничения параметра Райса для кодирования остатка равно 1, декодер может определить, что значение других флагов равно 0.

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

Вышеупомянутые способы могут быть реализованы с использованием устройства, которое включает в себя одну или несколько схем, которые включают в себя специализированные интегральные схемы (ASIC), процессоры цифровых сигналов (DSP), устройства цифровой обработки сигналов (DSPD), программируемые логические устройства (PLD), программируемые пользователем вентильные матрицы (FPGA), контроллеры, микроконтроллеры, микропроцессоры или другие электронные компоненты. Устройство может использовать схемы в сочетании с другими аппаратными или программными компонентами для выполнения вышеописанных способов. Каждый модуль, подмодуль, блок или подблок, раскрытые выше, могут быть реализованы по меньшей мере частично с использованием одной или нескольких схем.

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

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

На фиг. 18 показана вычислительная среда 1810, связанная с пользовательским интерфейсом 1860. Вычислительная среда 1810 может быть частью сервера обработки данных. Вычислительная среда 1810 включает в себя процессор 1820, память 1840 и интерфейс 1850 ввода/вывода.

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

Память 1840 выполнена с возможностью хранения различных типов данных для поддержки работы вычислительной среды 1810. Память 1840 может включать в себя заданное программное обеспечение 1842. Примеры таких данных включают в себя инструкции для любых приложений или способов, работающих в вычислительной среде 1810, наборы видеоданных, данные изображений и т.д. Память 1840 может быть реализована с использованием любого типа энергозависимых или энергонезависимых запоминающих устройств или их комбинации, таких как статическое оперативное запоминающее устройство (SRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), стираемое программируемое постоянное запоминающее устройство (EPROM), программируемое постоянное запоминающее устройство (PROM), постоянное запоминающее устройство (ROM), магнитная память, флэш-память, магнитный или оптический диск.

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

В некоторых вариантах осуществления также предусмотрен энергонезависимый машиночитаемый носитель информации, содержащий множество программ, таких, например, которые содержатся в памяти 1840, исполняемых процессором 1820 в вычислительной среде 1810 для выполнения вышеописанных способов. Например, энергонезависимый машиночитаемый носитель информации может быть ROM, RAM, CD-ROM, магнитной лентой, гибким диском, оптическим устройством хранения данных и т.п.

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

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

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

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

Похожие патенты RU2820669C1

название год авторы номер документа
КОДИРОВАНИЕ ОСТАТКОВ И КОЭФФИЦИЕНТОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО 2022
  • Цзху, Хун-Цзхэн
  • Сю, Сяоюй
  • Чэнь, И-Вэнь
  • Чэнь, Вэй
  • Ко, Чэ-Вэй
  • Ван, Сянлинь
  • Юй, Бин
RU2824946C2
СПОСОБ И УСТРОЙСТВО СОГЛАСОВАНИЯ ВЗВЕШЕННОГО ПРЕДСКАЗАНИЯ С НЕПРЯМОУГОЛЬНЫМИ РЕЖИМАМИ СЛИЯНИЯ 2021
  • Филиппов, Алексей Константинович
  • Чэнь, Хуаньбан
  • Руфицкий, Василий Алексеевич
  • Ян, Хайтао
  • Алшина, Елена Александровна
RU2821011C1
СИГНАЛИЗАЦИЯ ЗАГОЛОВКА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО 2020
  • Хендри, Фну
  • Ван, Е-Куй
  • Чен, Цзянле
RU2819585C1
СИГНАЛИЗАЦИЯ ЗАГОЛОВКА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО 2020
  • Хендри, Фну
  • Ван, Е-Куй
  • Чен, Цзянле
RU2822313C1
ОПРЕДЕЛЕНИЕ РЕЖИМА РАЗДЕЛЕНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ РАЗМЕРА БЛОКА 2020
  • Дэн, Чжипинь
  • Чжан, Ли
  • Чжан, Кай
  • Лю, Хунбинь
RU2815443C2
Устройство и способ видеокодирования и видеодекодирования 2020
  • Ханнуксела Миска
RU2790177C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Гао, Хань
  • Чен, Цзянле
RU2800681C2
УСТРОЙСТВО, СПОСОБ И МАШИНОЧИТАЕМЫЙ НОСИТЕЛЬ ДЛЯ ВИДЕОКОДИРОВАНИЯ И ВИДЕОДЕКОДИРОВАНИЯ 2020
  • Ханнуксела Миска
RU2787545C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ УПРОЩЕНИЯ СИГНАЛИЗАЦИИ ЗАГОЛОВКА КАРТИНКИ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Гао, Хань
  • Котра, Ананд Меер
  • Алшина, Елена Александровна
RU2823042C1
СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПРЕОБРАЗОВАНИЯ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ 2020
  • Коо, Моонмо
  • Лим, Дзаехиун
  • Ким, Сеунгхван
  • Салехифар, Мехди
RU2806283C2

Иллюстрации к изобретению RU 2 820 669 C1

Реферат патента 2024 года КОДИРОВАНИЕ КОЭФФИЦИЕНТОВ И ОСТАТКА ДЛЯ КОДИРОВАНИЯ ВИДЕО

Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Принимают декодером флаг кодирования остатка набора параметров последовательности (SPS), который указывает, присутствует ли синтаксический элемент, используемый для синтаксической структуры кодирования остатка с пропуском преобразования, в синтаксических структурах заголовка слайса (Slice Head, SH), относящихся к SPS. В ответ на определение, что значение флага кодирования остатка SPS равно 1, определяют, что синтаксический элемент присутствует в синтаксических структурах SH, относящихся к SPS. А в ответ на определение, что значение флага кодирования остатка SPS равно 0, определяют, что синтаксический элемент не присутствует в синтаксических структурах SH, относящихся к SPS. Когда синтаксический элемент не присутствует, считают, что значение синтаксического элемента равно нулю. 5 н. и 7 з.п. ф-лы, 35 ил., 70 табл.

Формула изобретения RU 2 820 669 C1

1. Способ кодирования видео, содержащий этапы, на которых:

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

в ответ на определение, что значение флага кодирования остатка SPS равно 1, определяют, что синтаксический элемент присутствует в синтаксических структурах SH, относящихся к SPS; а

в ответ на определение, что значение флага кодирования остатка SPS равно 0, определяют, что синтаксический элемент не присутствует в синтаксических структурах SH, относящихся к SPS, причем,

когда синтаксический элемент не присутствует, считают, что значение синтаксического элемента равно нулю.

2. Способ кодирования видео по п. 1, дополнительно содержащий этапы, на которых:

принимают декодером флаг параметра Райса для кодирования остатка набора параметров изображения (PPS) для указания, присутствует ли индекс pps_ts_residual_coding_rice_index в текущем изображении видео;

в ответ на определение, что значение флага параметра Райса для кодирования остатка PPS равно 1, определяют, что индекс pps_ts_residual_coding_rice_index присутствует в текущем изображении; а

в ответ на определение, что значение флага параметра Райса для кодирования остатка PPS равно 0, определяют, что индекс pps_ts_residual_coding_rice_index отсутствует в текущем изображении.

3. Способ кодирования видео, содержащий этапы, на которых:

принимают декодером флаг включения адаптации набора параметров последовательности (SPS), который указывает, используется ли альтернативное получение параметра Райса для бинаризации синтаксисов abs_remaining и dec_abs_level;

в ответ на определение, что значение флага включения адаптации SPS равно 1, определяют, что используется альтернативное получение параметра Райса для бинаризации синтаксисов; а

в ответ на определение, что значение флага включения адаптации SPS равно 0, определяют, что альтернативное получение параметра Райса для бинаризации синтаксисов не используется.

4. Способ кодирования видео по п. 3, дополнительно содержащий этапы, на которых:

принимают декодером флаг параметра Райса для кодирования остатка набора параметров изображения (PPS) для указания, присутствует ли индекс pps_ts_residual_coding_rice_index в текущем изображении видео;

в ответ на определение, что значение флага параметра Райса для кодирования остатка PPS равно 1, определяют, что индекс pps_ts_residual_coding_rice_index присутствует в текущем изображении; а

в ответ на определение, что значение флага параметра Райса для кодирования остатка PPS равно 0, определяют, что индекс pps_ts_residual_coding_rice_index отсутствует в текущем изображении.

5. Способ кодирования видео, содержащий этапы, на которых:

принимают декодером флаг ограничения параметра Райса для кодирования остатка для обеспечения общего управления ограничениями по меньшей мере для одного из других флагов набора параметров последовательности (SPS); и

в ответ на определение, что значение флага ограничения параметра Райса для кодирования остатка равно 1, определяют, что значение указанного по меньшей мере одного из других флагов SPS равно 0.

6. Способ кодирования видео по п. 5, в котором на этапе, в ответ на определение, что значение параметра Райса для кодирования остатка равно 1, определяют, что значение указанного по меньшей мере одного из других флагов SPS равно 0:

в ответ на определение, что значение флага ограничения параметра Райса для кодирования остатка равно 1, определяют, что значение флага кодирования остатка SPS равно 0.

7. Способ кодирования видео по п. 5, в котором флаг ограничения параметра Райса для кодирования остатка является флагом ограничения параметра Райса для кодирования остатка с пропуском преобразования, при этом на этапе, в ответ на определение, что значение флага ограничения параметра Райса для кодирования остатка равно 1, определяют, что значение указанного по меньшей мере одного из других флагов SPS равно 0:

в ответ на определение, что значение флага ограничения параметра Райса для кодирования остатка с пропуском преобразования равно 1, определяют, что значение флага присутствия параметра Райса для кодирования остатка с пропуском преобразования SPS равно 0.

8. Способ кодирования видео по п. 5, в котором флаг ограничения параметра Райса для кодирования остатка является флагом ограничения параметра Райса для регулярного кодирования остатка, при этом на этапе, в ответ на определение, что значение флага ограничения параметра Райса для кодирования остатка равно 1, определяют, что значение указанного по меньшей мере одного из других флагов SPS равно 0:

в ответ на определение, что значение флага ограничения параметра Райса для регулярного кодирования остатка равно 1, определяют, что значение флага расширения для регулярного кодирования остатка SPS равно 0.

9. Способ кодирования видео по п. 5, в котором флаг ограничения параметра Райса для кодирования остатка является флагом ограничения адаптации параметра Райса для кодирования остатка, при этом на этапе, в ответ на определение, что значение флага ограничения параметра Райса для кодирования остатка равно 1, определяют, что значение указанного по меньшей мере одного из других флагов SPS равно 0:

в ответ на определение, что значение флага ограничения адаптации параметра Райса для кодирования остатка равно 1, определяют, что значение флага адаптации кодирования остатка SPS равно 0.

10. Способ кодирования видео по п. 5, в котором на этапе, в ответ на определение, что значение флага ограничения параметра Райса для кодирования остатка равно 1, определяют, что значение указанного по меньшей мере одного из других флагов SPS равно 0:

в ответ на определение, что значение флага ограничения параметра Райса для кодирования остатка равно 1, определяют, что значение флага включения адаптации SPS равно 0.

11. Устройство для кодирования видео, содержащее:

один или более процессоров; и

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

12. Энергонезависимый машиночитаемый носитель информации для кодирования видео, на котором хранятся исполняемые компьютером инструкции, которые при их исполнении одним или более компьютерными процессорами вызывают выполнение указанным одним или более компьютерными процессорами способа по любому из пп. 1-10 для обработки видеопотока и сохранения обработанного видеопотока в энергонезависимом машиночитаемом носителе информации.

Документы, цитированные в отчете о поиске Патент 2024 года RU2820669C1

Hong-Jheng Jhu et al, "CE-2.1: Slice based Rice parameter selection for transform skip residual coding", JVET-U0075-v2, 21st Meeting by teleconference, 31.12.2020
Tomonori Hashimoto et al., "CE-1.3 and CE-3.1: Rice parameter derivation for high bit-depth coding", JVET-U0050, 21st Meeting by teleconference, 29.12.2020
Karam Naser et al., "AhG9:

RU 2 820 669 C1

Авторы

Цзху, Хун-Цзхен

Сю, Сяоюй

Чэнь, И-Вэнь

Чэнь, Вэй

Ко, Чэ-Вэй

Ван, Сянлинь

Юй, Бин

Даты

2024-06-07Публикация

2022-01-04Подача