ВЫВЕДЕНИЕ ВЕСА ВЫБОРКИ ЦВЕТНОСТИ ДЛЯ ГЕОМЕТРИЧЕСКОГО РЕЖИМА РАЗДЕЛЕНИЯ Российский патент 2024 года по МПК H04N19/132 H04N19/105 H04N19/159 H04N19/186 H04N19/176 

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

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

Настоящая патентная заявка испрашивает приоритет по международной патентной заявке PCT/EP2019/066516, поданной 21 июня 2019 г. Раскрытие вышеупомянутой патентной заявки включено в данный документ по этой ссылке в полном объеме.

ОБЛАСТЬ ТЕХНИКИ

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

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

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

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

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

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

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

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

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

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

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

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

получение объединенного значения выборок предсказания посредством объединения первого значения предсказания и второго значения предсказания.

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

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

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

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

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

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

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

sampleWeightC1(x, y)=sampleWeight1 (2*x, 2*y);

где x и y являются координатами выборки цветности относительно верхней левой координаты блока цветности блока кодирования, sampleWeightC1(a, b) является первым значением веса для выборки цветности, которая расположена в координате (a, b) выборки в блоке цветности текущего блока, где a и b являются значениями координат; и sampleWeight1(c, d) представляет значение веса, соответствующее выборке яркости, которая расположена в координате (c, d) выборки в блоке яркости текущего блока, где c и d являются значениями координат; а K является целочисленным значением.

Следует понимать, что такие выражения, как (2*x,2*y) и (2x, 2y), считаются одинаковыми.

Таким образом, согласно описанному выше способу, значение веса выборки цветности в местоположении (x, y) выборки цветности может быть равно значению веса выборки яркости в местоположении (2x, 2y) выборки яркости. Эта взаимосвязь между весом выборки яркости и весом выборки цветности позволяет пропустить вычисление веса выборки цветности. Другими словами, из-за приведенной выше взаимосвязи, т.е. sampleWeightC1(x, y)=sampleWeight1 (2*x, 2*y), после вычисления sampleWeight1() для всех выборок яркости в блоке яркости больше нет необходимости вычислять sampleWeightC1(). Для всех выборок цветности в блоке цветности sampleWeightC1() могут быть получены, используя значения, вычисленные для sampleWeight1 (). Следовательно, настоящее раскрытие позволяет разработчикам уменьшить схему, необходимую для вычисления sampleWeightC1. Нет необходимости реализовывать аппаратную схему для вычисления sampleWeightC1, значения sampleWeightC1() могут быть получены посредством обращения к значениям уже вычисленных sampleWeight1(). Также в программном обеспечении, после вычисления sampleWeightC1(), скорости кодирования и декодирования увеличатся из-за сокращения числа операций, которые необходимо выполнить для получения sampleWeightC1().

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

sampleWeightC1(x, y)=sampleWeight1 (2*x-1, 2*y-1);

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + K)>>1;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + sampleWeight1 (2*x, 2*y - 1) + sampleWeight1 (2*x - 1, 2*y) + K)>>2;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + sampleWeight1 (2*x, 2*y - 1) + sampleWeight1 (2*x - 1, 2*y) + 2)>>2;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + 1)>>1;

где x и y являются координатами выборки цветности относительно верхней левой координаты блока цветности блока кодирования, sampleWeightC1(a, b) является первым значением веса для выборки цветности, которая расположена в координате (a, b) выборки в блоке цветности текущего блока, где a и b являются значениями координат; и sampleWeight1(c, d) представляет значение веса, соответствующее выборке яркости, которая расположена в координате (c, d) выборки в блоке яркости текущего блока, где c и d являются значениями координат; а K является целочисленным значением.

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

В описанном выше способе параметр может быть параметром угла или параметром расстояния.

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

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

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

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

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

Настоящее раскрытие дополнительно обеспечивает декодер, содержащий:

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

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

Настоящее раскрытие дополнительно обеспечивает декодер, содержащий:

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

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

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

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

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

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

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

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

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

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

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

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

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

получение объединенного значения выборок предсказания посредством объединения первого значения предсказания и второго значения предсказания.

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

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

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

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

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

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

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

sampleWeightC1(x, y)=sampleWeight1 (2*x, 2*y);

где x и y являются координатами выборки цветности относительно верхней левой координаты блока цветности блока кодирования, sampleWeightC1(a, b) является первым значением веса для выборки цветности, которая расположена в координате (a, b) выборки в блоке цветности текущего блока, где a и b являются значениями координат; и sampleWeight1(c, d) представляет значение веса, соответствующее выборке яркости, которая расположена в координате (c, d) выборки в блоке яркости текущего блока, где c и d являются значениями координат; а K является целочисленным значением.

Таким образом, согласно описанному выше способу, значение веса выборки цветности в местоположении (x, y) выборки цветности может быть равно значению веса выборки яркости в местоположении (2x, 2y) выборки яркости. Эта взаимосвязь между весом выборки яркости и весом выборки цветности позволяет пропустить вычисление веса выборки цветности. Другими словами, из-за приведенной выше взаимосвязи, т.е. sampleWeightC1(x, y)=sampleWeight1 (2*x, 2*y ), после вычисления sampleWeight1() для всех выборок яркости в блоке яркости больше нет необходимости вычислять sampleWeightC1(). Для всех выборок цветности в блоке цветности sampleWeightC1() могут быть получены, используя значения, вычисленные для sampleWeight1 (). Следовательно, настоящее раскрытие позволяет разработчикам уменьшить схему, необходимую для вычисления sampleWeightC1. Нет необходимости реализовывать аппаратную схему для вычисления sampleWeightC1, значения sampleWeightC1() могут быть получены посредством обращения к значениям уже вычисленных sampleWeight1(). Также в программном обеспечении, после вычисления sampleWeightC1(), скорости кодирования и декодирования увеличатся из-за сокращения числа операций, которые необходимо выполнить для получения sampleWeightC1().

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

sampleWeightC1(x, y)=sampleWeight1 (2*x-1, 2*y-1);

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + K)>>1;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + sampleWeight1 (2*x, 2*y - 1) + sampleWeight1 (2*x - 1, 2*y) + K)>>2;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + sampleWeight1 (2*x, 2*y - 1) + sampleWeight1 (2*x - 1, 2*y) + 2)>>2;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + 1)>>1;

где x и y являются координатами выборки цветности относительно верхней левой координаты блока цветности блока кодирования, sampleWeightC1(a, b) является первым значением веса для выборки цветности, которая расположена в координате (a, b) выборки в блоке цветности текущего блока, где a и b являются значениями координат; и sampleWeight1(c, d) представляет значение веса, соответствующее выборке яркости, которая расположена в координате (c, d) выборки в блоке яркости текущего блока, где c и d являются значениями координат; а K является целочисленным значением.

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

В описанном выше способе параметр может быть параметром угла или параметром расстояния.

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

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

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

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

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

Настоящее раскрытие может дополнительно обеспечивать кодер, содержащий:

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

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

Настоящее раскрытие может дополнительно обеспечивать кодер, содержащий:

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

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

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

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

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

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

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

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

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

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

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

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

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

Согласно шестому аспекту изобретения кодер содержит:

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

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

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

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

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

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

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

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

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

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

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

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

ФИГ. 6a иллюстрирует пример совместно размещенного блока;

ФИГ. 6b иллюстрирует пример пространственных соседних блоков;

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

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

ФИГ. 9 показывает пример относительно разделения блока;

ФИГ. 10 показывает дополнительный пример относительно разделения блока;

ФИГ. 11 показывает дополнительный пример относительно разделения блока;

ФИГ. 12 показывает еще один дополнительный пример относительно разделения блока;

ФИГ. 13 показывает пример относительно значений весовых коэффициентов после процесса функции смешивания;

ФИГ. 14 показывает другой пример относительно значений весовых коэффициентов после процесса функции смешивания;

ФИГ. 15 показывает некоторые примеры относительно функций смешивания.

ФИГ. 16 иллюстрирует взаимосвязь между координатами цветности и координатами яркости.

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

ФИГ. 18 иллюстрирует декодер согласно варианту осуществления настоящего раскрытия.

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

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

Ниже термины "совместно расположенные" и "совмещенные" следует понимать как имеющие идентичные значения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Квантование

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

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

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

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

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

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

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

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

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

Фильтрация

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

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

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

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

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

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

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

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

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

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

Разделение

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

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

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

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

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

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

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

Интра-предсказание

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

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

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

Интер-предсказание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фильтрация

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

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

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

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

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

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

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

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

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

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

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

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

ux= ( mvx+2bitDepth ) % 2bitDepth (1)

mvx=( ux >= 2bitDepth-1 ) ? (ux - 2bitDepth ) : ux (2)

uy= ( mvy+2bitDepth ) % 2bitDepth (3)

mvy=( uy >= 2bitDepth-1 ) ? (uy - 2bitDepth ) : uy (4)

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

ux= ( mvpx+mvdx +2bitDepth ) % 2bitDepth (5)

mvx=( ux >= 2bitDepth-1 ) ? (ux - 2bitDepth ) : ux (6)

uy= ( mvpy+mvdy +2bitDepth ) % 2bitDepth (7)

mvy=( uy >= 2bitDepth-1 ) ? (uy - 2bitDepth ) : uy (8)

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

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

vx=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)

vy=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)

где определение функции Clip3 является следующим:

Clip3( x, y, z )=

Операция "?" обычно используется как сокращение для представления условия "if … else" ("если … в ином случае"). Например “X<K?X=1:X=0” можно интерпретировать как "если X меньше K, X устанавливается равным 1, в ином случае (если X не меньше K) X устанавливается равным 0".

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

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

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

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

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

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

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

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

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

Обычно видеосигнал представляется с использованием 3 каналов, одного канала яркости (luma) и 2 каналов цветности (chroma). Упомянутые 2 канала цветности могут быть представлены с помощью сокращений Cb и Cr, когда используется цветовое преобразование YCbCr. Cb и Cr обычно означают разность относительно синего и разность относительно красного. Варианты осуществления изобретения относятся к случаю, когда видеосигнал представлен с использованием 3 каналов (или более широко сигнала). Для удобства каналы цветности подлежат представлению каналами Cb и Cr, хотя варианты осуществления изобретения применяются аналогично к сценариям с другими 3 каналами сигнала.

Когда видеоданные разделены на 3 канала сигнала, блок кодирования может иметь остаточную информацию, относящуюся к каждому из этих 3 каналов сигнала (каналу яркости, каналу Cb- цветности и каналу Cr-цветности). На ФИГ. 2, остаточные данные соответствуют 205 (остаточному блоку) или 207 (коэффициентам преобразования), или 209 (квантованным коэффициентам преобразования). 205, 207 или 209 фактически состоят из 3 частей (когда видеоданные разделены на 3 канала), соответствующих 3 каналам цветности и яркости. ФИГ. 2 представляет перспективу кодера.

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

В примере построения списка кандидатов на слияние в соответствии с ITU-T H.265 список кандидатов на слияние строится на основе следующих кандидатов:

1. пространственные кандидаты вплоть до четырех, которые выводятся из пяти пространственных соседних блоков,

2. один временной кандидат, выводимый из двух временных, совместно размещенных блоков,

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

4. кандидаты нулевых векторов движения.

Пространственные кандидаты

Информация движения пространственных соседних блоков сначала добавляется в список кандидатов на слияние (в примере, список кандидатов на слияние может быть пустым списком до добавления первого вектора движения в этот список кандидатов на слияние) в качестве кандидатов информации движения. Здесь соседние блоки, которые считаются вставляемыми в список слияния, проиллюстрированы на Фиг. 6b. Для слияния блоков интер-предсказания в список слияния вставляются вплоть до четырех кандидатов путем последовательной проверки A1, B1, B0, A0 и B2 в указанном порядке.

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

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

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

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

Временные кандидаты

На ФИГ. 6a проиллюстрированы координаты блоков, из которых извлекаются временные кандидаты информации движения. Совместно размещенный блок является блоком, который имеет те же координаты -x, -y, что и текущий блок, но находится на другом изображении (одном из опорных изображений). Временные кандидаты информации движения добавляются в список слияния, если список не является полым (в примере список слияния не является полным, когда количество кандидатов в списке слияния меньше порога, например, порог может равняться 4, 5, 6 и т. д.).

Генерируемые кандидаты

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

Двунаправленное предсказание (бипредсказание)

Специальный режим интер-предсказания называется «двунаправленное предсказание», в котором 2 вектора движения используются для предсказания блока. Векторы движения могут указывать на одинаковые или разные опорные изображения, при этом опорное изображение может быть указано с помощью ID списка опорных изображений и индекса опорного изображения. Например, первый вектор движения может указывать на первое изображение в списке L0 опорных изображений, а второй вектор движения может указывать на первое изображение в списке L1 опорных изображений. Два списка опорных изображений (например, L0 и L1) могут поддерживаться, и изображение, указанное первым вектором движения, выбирается из списка L0, а изображение, указанное вторым вектором движения, выбирается из списка L1.

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

- Часть L0: Вектор движения и индекс опорного изображения, который указывает на запись в списке L0 опорных изображений.

- Часть L1: Вектор движения и индекс опорного изображения, который указывает на запись в списке L1 опорных изображений.

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

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

Список опорных изображений Опорный индекс POC L0 0 12 L0 1 13 L1 0 13 L1 1 14

В приведенном выше примере первая запись (указанная опорным индексом 0) в списке L1 опорных изображений является опорным изображением со значением POC 13. Вторая запись (указанная опорным индексом 1) в списке L1 опорных изображений является опорным изображением со значением POC 14.

Процесс построения списка слияния в ITU-T H.265 и VVC выводит список кандидатов информации движения. Процесс построения списка слияния VVC описан в разделе «8.3.2.2 Derivation process for luma motion vectors for merge mode» документа JVET-L1001_v2 Универсальное Видеокодирование (Проект 3), который общедоступен по адресу http://phenix.it-sudparis.eu/jvet/. Термин «информация движения» относится к данным движения, которые необходимы для выполнения процесса предсказания с компенсацией движения. Информация движения обычно относится к следующей информации:

- Применяет ли блок однонаправленное или двунаправленное предсказание.

- ID опорного изображения, которое используется в предсказании. (2 ID, если блок применяет двунаправленное предсказание).

- Вектор движения (2 вектора движения, если блок подлежит двунаправленному предсказанию).

- Дополнительная информация

В VVC и H.265 список кандидатов, которые выводятся при построении списка слияния, включает в себя N информаций движения кандидатов. Число N обычно включается в битовый поток и может быть положительным целым числом, например 5, 6 и т. д. Кандидаты, которые включаются в список слияния, который строится, могут включать в себя информацию однонаправленного предсказания или информацию двунаправленного предсказания. Это означает, что кандидат, который выбирается из списка слияния, может указывать операцию двунаправленного предсказания.

Режим треугольного предсказания

Концепция режима треугольного предсказания заключается во введении нового треугольного раздела для предсказания с компенсацией движения. На ФИГ. 7, в качестве примера, две треугольные единицы предсказания используются для CU, в диагональном или обратном диагональном направлении. Каждая треугольная единица предсказания для CU подвергается интер-предсказанию с использованием вектора движения однонаправленного предсказания и индекса опорного кадра, которые выводятся из списка кандидатов однонаправленного предсказания. Процесс адаптивного взвешивания выполняется для диагонального края после того, как выборки, которые ассоциированы с каждой треугольной единицей предсказания, были предсказаны, например, посредством компенсации движения или интра-предсказания изображения. Затем процесс преобразования и квантования применяется ко всей CU. Следует отметить, что этот режим применяется только к режиму пропуска и режиму слияния.

В режиме треугольного предсказания блок разбивают на две треугольные части (как на ФИГ. 7), и каждая часть может быть предсказана с использованием одного вектора движения. Вектор движения, который используется для предсказания одной треугольной части (обозначаемой PU1), может отличаться от вектора движения, который используется для предсказания другой треугольной части (обозначаемой PU2). В примере, отмечается, что каждая часть может быть предсказана только с использованием одного вектора движения (однонаправленное предсказание), чтобы уменьшить сложность выполнения режима треугольного предсказания. Другими словами, PU1 и PU2 могут не предсказываться с использованием двунаправленного предсказания, которое содержит два вектора движения.

Режим субблочного предсказания

Режим треугольного предсказания является специальным случаем субблочного предсказания, когда блок делится на два блока. В приведенных выше примерах проиллюстрированы два направления деления блоков (45 градусные и 135 градусные разделы). Также возможны другие углы разделения и пропорции разделения для субблочного предсказания (например, примеры на ФИГ. 8).

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

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

- Этап 1: деление блока кодирования на 2 субблока согласно геометрической модели. Эта модель может привести в результате к разбиению блока линией разграничения (например, прямой линией), как показано в примерах на ФИГ. 9-12.

- Этап 2: получение первого режима предсказания для первого субблока и второго режима предсказания для второго субблока. В одном примере первый режим предсказания не идентичен второму режиму предсказания. В одном примере режим предсказания (первый режим предсказания или второй режим предсказания) может быть режимом интер-предсказания, информация для режима интер-предсказания может содержать индекс опорного изображения и вектор движения. В другом примере режим предсказания может быть режимом интра-предсказания, информация для режима интра-предсказания может содержать индекс режима интра-предсказания.

- Этап 3: Генерирование первых значений предсказания и вторых значений предсказания, используя первый режим предсказания и второй режим предсказания, соответственно.

- Этап 4: получение объединенных значений выборок предсказания в соответствии с объединением первых значений предсказания и вторых значений предсказания, согласно делению, которое раскрыто на Этапе 1.

В примере, на этапе 1, блок кодирования делят на 2 субблока различными способами. ФИГ. 9 показывает пример относительно разделения блока кодирования, линия 1250 разграничения делит упомянутый блок на 2 субблока. Чтобы описать упомянутую линию 1250, сигнализируются два параметра, одним параметром является угол альфа 1210, а другим параметром является расстояние dist 1230.

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

В другом примере на ФИГ. 10 показан альтернативный способ представления линии разграничения, где примеры угла и расстояния отличаются от примеров, показанных на ФИГ. 9.

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

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

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

На вышеуказанном этапе 4 необходимо получить 3 окончательных предсказания (1 предсказание яркости и 2 предсказания цветности) путем объединения первого предсказания и второго предсказания с использованием взвешенного усреднения. Этот процесс является сложным, поскольку для получения весов выборок для объединения требуется решение линейных уравнений для каждой выборки из упомянутых 3 окончательных предсказаний.

Согласно вариантам осуществления настоящего изобретения веса выборок для объединения предсказаний цветности (для получения объединенных предсказаний цветности) вычисляются согласно весам выборок для объединения предсказаний яркости. Для предсказания цветности необходимо вычислить отдельный фильтр смешивания, поскольку в применениях видео как правило применяется подход субдискретизации цветности. Субдискретизация цветности представляет собой процесс использования более низкого пространственного разрешения для двух каналов цветности, чем для каналов яркости. При этом используется преимущество свойств человеческого зрительного восприятия, которое менее чувствительно к изменениям цвета по сравнению с изменениями контрастности и эффективно снижает скорость обработки данных сжатого видео. Наиболее распространенная схема субдискретизации цветности обозначается как субдискретизация '420', которая приводит к компонентам цветности с половинным вертикальным и половинным горизонтальным пространственным разрешением по сравнению с разрешением яркости. Для алгоритмов кодирования видео, которые как правило работают на уровне блоков, это, например, означает, что блок яркости размером 32×32 в определенном местоположении (x, y) яркости относительно верхней левой выборки изображения ассоциирован с двумя 16×16 блоками цветности, расположенными в положении (x/2,y/2).

Вариант 1 осуществления (с позиций кодера и декодера):

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

Этап 4.1:

Для выборки яркости в блоке вычисляется расстояние выборки (sample_dist), причем это расстояние выборки представляет собой расстояние выборки яркости до линии разграничения блока.

Этап 4.2:

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

В примере первый весовой коэффициент (sampleWeight1) вычисляется согласно расстоянию выборки (sample_dist), второй весовой коэффициент (sampleWeight2) вычисляется согласно формуле sampleWeight2=T - sampleWeight1, где T представляет собой предопределенную константу.

Этап 4.3:

Вычисляется весовой коэффициент sampleWeightC1 (или sampleWeightC2), соответствующий выборке цветности в координате (x, y), имеющий взаимосвязь с весовым коэффициентом sampleWeight1 (или sampleWeight2) для выборки яркости в координате (x, y). Опционально второй вес sampleWeightC2 для выборки цветности вычисляется согласно уравнению: sampleWeightC2=T - sampleWeightC1, где T представляет собой предопределенную константу.

Этап 4.4:

Объединенное значение предсказания для выборки цветности в координате (x, y) вычисляется согласно первому значению предсказания цветности в координате (x, y), второму значению предсказания цветности в координате (x, y), весовому коэффициенту sampleWeightC1 и весовому коэффициенту sampleWeightC2, где (x, y) представляет собой координату выборки цветности в блоке цветности блока кодирования относительно верхней левой координаты блока цветности.

В примере расстояние выборки sample_dist вычисляется согласно формуле:

sample_dist=((x<<1) + 1)*Dis[angleIdx1] + ((y<<1) + 1))*Dis[angleIdx2] - offset(distanceIdx).

- Значение angleIdx1 и значение angleIdx2 берутся из битового потока или выводятся/вычисляются на основе другой информации, получаемой из битового потока, angleIdx1 и angleIdx2 представляют квантованные тригонометрические параметры линии разграничения, первый имеет тип косинуса, а второй имеет тип синуса.

- В примере x и y являются -x и -y координатами выборки относительно левой верхней выборки блока кодирования.

- offset (distanceIdx) является значением смещения, которое является функцией индексного значения (distanceIdx), причем индексное значение получают из битового потока или выводят/вычисляют на основе другой информации, получаемой из битового потока.

- Dis[] является таблицей поиска. Dis[angleIdx1] описывает изменение расстояния выборки (sample_dist) относительно единичного увеличения (увеличения со значением 1) -x координаты упомянутой выборки. Dis[angleIdx2] описывает изменение расстояния выборки (sample_dist) относительно единичного увеличения (увеличения со значением 1) -y координаты упомянутой выборки. В одном примере angleIdx1 равен angleIdx, а angleIdx2 равен (displacementX+8)%32.

В одном примере предопределенная константа T равняется 8, что означает, что sampleWeight1 и sampleWeight2 могут иметь значения в диапазоне значений от 0 до 8 (включая 0 и 8). В другом примере предопределенная константа T равняется 16.

В другом примере sample_dist и sampleWeight1 могут быть получены согласно следующим уравнениям:

- nCbR=( W > H ) ? ( W/H ) : (H/W )

- sample_dist=( W > H ) ? (x/nCbR - y ) : ( x - y/nCbR )

или

- sample_dist=( W > H ) ? ( H - 1 - x/nCbR - y ) : ( W - 1 - x - y/nCbR )

- sampleWeight1=Clip3( 0, 8, sample_dist+4 ),

где W является шириной блока кодирования, H является высотой блока кодирования.

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

Объединенное значение предсказания выборки может быть вычислено согласно перемножению первого значения веса выборки (sampleWeight1) с первым значением предсказания в координате (x, y), перемножению второго значения веса выборки (sampleWeight1), со вторым значением предсказания в координате (x, y).

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

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

Согласно другому примеру операция смешивания реализуется как функция с sample_dist в качестве входных данных и sampleWeight1 или sampleWeight2 в качестве выходных данных. В примере операция смешивания может быть реализована как sampleWeight1=Clip3(0, 8, sample_dist+4). В другом примере операция смешивания может быть реализована как sampleWeight1=Clip3( 0, 8, f( sample_dist )). Функция f() может, как пример, быть операцией деления/сложения/умножения с постоянным числом, операцией сдвига вправо с постоянной величиной, операцией усечения или взятия абсолютного значения, или их комбинацией.

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

- В варианте осуществления первой операцией смешивания может быть:

Первая операция смешивания: "sampleWeight=Clip3( 0, 8, sample_dist+4)".

В варианте осуществления второй операцией смешивания может быть:

- “sampleWeight=sample_dist == 0 ? 4 : sample_dist < 0 ? 0 : 8”,

- “sampleWeight=Clip3( 0, 8, sample_dist*K+Clip3( 0, 8, sample_dist+4) )”.

K является целым числом со значением больше 0. Следует отметить, что операция смешивания становится короче (следовательно, более резкой) с увеличением K. Например, когда K=4, то вторая операция смешивания становится идентичной следующему “sampleWeight=sample_dist == 0 ? 4 : sample_dist < 0 ? 0 : 8", что было показано на примере на ФИГ. 14.

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

Согласно варианту осуществления изобретения операция смешивания может быть реализована в виде таблицы поиска, такой как таблицы, показанные на примерах на ФИГ. 15. Например, sampleWeight может быть получен как sampleWeight=geoFilter[idx], где idx получают как функцию от sample_dist, а geoFilter является одномерным линейным массивом весов фильтра. Одной из таких функций может быть: idx=min((abs(sample_dist) + 8) >> 4, maxIdx), где maxIdx является максимальным значением, которое idx может принять. Например, в случае таблицы 17-2 maxIdx равняется 7.

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

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

В некоторых примерах, для случая субдискретизации цветности, когда разрешение цветности уменьшается вдвое в вертикальном и горизонтальном направлении, значение веса цветности sampleWeightC1 может быть вычислено посредством объединения, например, средним или взвешенным средним весов яркости sampleWeight1 в различных пространственных положениях. В этом случае выборка цветности в положении (x, y) ассоциирована с четырьмя выборками яркости в положениях (2x,2y), (2x+1,2y), (2x,2y) и (2x,2y+1) в значениях координат цветности.

В другом примере, для случая субдискретизации цветности, когда разрешение цветности уменьшается вдвое в вертикальном и горизонтальном направлении, выборка яркости в координате (x+1, y+1) и выборка цветности в (x/2,y/2) являются компонентами одного и того же пикселя. В том же самом примере выборка яркости в координате (x+1, y) и выборка цветности в (x/2,y/2) могут быть компонентами одного и того же пикселя. Это означает, что одна выборка цветности используется для определения четырех разных пикселей, тогда как одна выборка яркости используется для определения одного пикселя.

Например, sampleWeightC1 может быть получен согласно одному из следующих уравнений:

- Пример 1: sampleWeightC1(x, y)=sampleWeight1 (2*x,2*y);

- Пример 2: sampleWeightC1(x, y)=sampleWeight1 (2*x-1,2*y-1);

- Пример 3: sampleWeightC1(x, y)=(sampleWeight1 (2*x-1,2*y-1) + sampleWeight1 (2*x,2*y) + K)>>1;

- Пример 4: sampleWeightC1(x, y)=(sampleWeight1 (2*x-1,2*y-1) + sampleWeight1 (2*x,2*y) + sampleWeight1 (2*x,2*y - 1) + sampleWeight1 (2*x - 1,2*y) + K)>>2;

- Пример 5: sampleWeightC1(x, y)=(sampleWeight1 (2*x-1,2*y-1) + sampleWeight1 (2*x,2*y) + sampleWeight1 (2*x,2*y - 1) + sampleWeight1 (2*x - 1,2*y) + 2)>>2;

- Пример 6: sampleWeightC1(x, y)=(sampleWeight1 (2*x-1,2*y-1) + sampleWeight1 (2*x,2*y) + 1)>>1,

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

Это также может быть сформулировано следующим образом: x и y являются координатами выборки цветности относительно верхней левой координаты блока цветности блока кодирования, sampleWeightC1(a, b) является первым значением веса для выборки цветности, которая расположена в координате (a, b) выборки в блоке цветности текущего блока, a и b являются значениями координат; и sampleWeight1(c, d) представляет значение веса, соответствующее выборке яркости, которая расположена в координате (c, d) выборки в блоке яркости текущего блока, c и d являются значениями координат; а K является целочисленным значением.

ФИГ. 16 более конкретно показывает взаимосвязь между весами для выборки цветности и весами для выборки яркости. ФИГ. 16 иллюстрирует случай Примера 1, т.е. sampleWeightC1(x, y)=sampleWeight1 (2*x,2*y). Тут следует снова отметить, что x и y являются координатами выборки цветности относительно верхней левой координаты блока цветности блока кодирования, а sampleWeightC1(x, y) является весом выборки цветности, соответствующим выборке цветности в координатах (x, y), sampleWeight1(x, y) является весом выборки, соответствующим выборке яркости в координатах (x, y) в блоке яркости. Как указано на ФИГ. 16, это также может быть записано в виде того, что координаты выборки яркости соответствуют (2xC, 2yC), где xC=x и yC=y являются координатами выборки цветности. Затем, для еще большего различия, координаты выборки яркости могут быть записаны с помощью xL и yL так, что sampleWeightC1(x, y)=sampleWeightC1(xC, yC) sampleWeight1 (2*xC,2*yC)=sampleWeight1(xL, yL).

ФИГ. 17 иллюстрирует способ согласно варианту осуществления настоящего раскрытия. ФИГ. 17 иллюстрирует способ кодирования, реализуемый устройством декодирования, содержащий: (этап 1601) получение значения параметра для текущего блока, причем значение параметра указывает режим разделения для текущего блока; (этап 1605) получение первого режима предсказания для текущего блока; (этап 1607) получение второго режима предсказания для текущего блока; (этап 1609) генерирование первого значения предсказания для выборки цветности в текущем блоке согласно первому режиму предсказания; (этап 1611) генерирование второго значения предсказания для выборки цветности в текущем блоке согласно второму режиму предсказания; (этап 1613) получение объединенного значения выборок предсказания посредством объединения первого значения предсказания и второго значения предсказания.

ФИГ. 18 иллюстрирует декодер 30 согласно варианту осуществления настоящего раскрытия. ФИГ. 18 иллюстрирует декодер, содержащий: модуль 3001 получения для получения значения параметра для текущего блока, причем значение параметра указывает режим разделения для текущего блока; первый модуль 3005 предсказания для получения первого режима предсказания для текущего блока; второй модуль 3007 предсказания для получения второго режима предсказания для текущего блока; первый модуль 3009 генерирования для генерирования первого значения предсказания для выборки цветности в текущем блоке согласно первому режиму предсказания; второй модуль 3011 генерирования для генерирования второго значения предсказания для выборки цветности в текущем блоке согласно второму режиму предсказания; модуль 3013 объединения для получения объединенного значения выборок предсказания посредством объединения первого значения предсказания и второго значения предсказания.

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

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

ФИГ. 19 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Данная система 3100 поставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и опционально включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.

Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует эти данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по отдельности.

В системе 3100 поставки контента терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR) / цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.

Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR) / цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.

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

ФИГ. 20 является схемой, показывающей структуру примера терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, модуль 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.

После того, как модуль 3202 обработки протокола обработает поток, генерируется файл потока. Файл выводится в модуль 3204 демультиплексирования. Модуль 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.

Посредством обработки демультиплексирования генерируются элементарный поток (ES) видео, ES аудио и, опционально, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует ES видео с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерирования видеокадра и подает эти данные в модуль 3212 синхронизации. Аудиодекодер 3208 декодирует ES аудио для генерирования аудиокадра и подает эти данные в модуль 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на ФИГ. 20) перед его подачей в модуль 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на ФИГ. 20) перед его подачей в модуль 3212 синхронизации.

Модуль 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио в видео/аудио дисплей 3214. Например, модуль 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.

Если субтитр включен в поток, декодер 3210 субтитров декодирует субтитр и синхронизирует его с видеокадром и аудиокадром и передает видео/аудио/субтитр на дисплей 3216 видео/аудио/субтитров.

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

Математические операторы

Математические операторы, используемые в этом раскрытии, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т. д.

Арифметические операторы

Следующие арифметические операторы определены следующим образом:

+ Сложение - Вычитание (как оператор с двумя аргументами) или отрицание (как унарный префиксный оператор) * Умножение, в том числе матричное умножение xy Возведение в степень. Определяет x в степени y. В других контекстах такое обозначение используется в качестве надстрочного индекса, которое не следует интерпретировать в качестве возведения в степень. / Целочисленное деление с усечением результата в сторону нуля. Например, 7/4 и -7 / -4 усекаются до 1, а -7/4 и 7 / -4 усекаются до -1. ÷ Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. Суммирование f( i ), где i принимает все целые значения от x до y включительно. x % y Операция по модулю. Остаток от деления x на y, определена только для целых чисел x и y, где x >= 0 и y > 0.

Логические операторы

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

x && y Булево логическое "и" для x и y

x | | y Булево логическое "или" для x и y

! Булево логическое "не"

x ? y : z Если x равно ИСТИНА или не равно 0, оценивается в значение y; иначе оценивается в значение z.

Операторы сравнения

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

> Больше

>= Больше или равно

< Меньше

<= Меньше или равно

== Равно

!= Не равно

Когда оператор сравнения применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение «na» не считается равным любому другому значению.

Побитовые операторы

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

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

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

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

x >> y Арифметический сдвиг вправо целочисленного представления дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига.

x << y Арифметический сдвиг влево целочисленного представления дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0.

Операторы присваивания

Следующие арифметические операторы определены следующим образом:

= Оператор присваивания

+ + Приращение, т.е. x+ + эквивалентно x=x+1; при использовании в индексе массива оценивается в значение переменной до операции приращения.

- - Уменьшение, т.е. x- - эквивалентно x=x - 1; при использовании в индексе массива оценивается в значение переменной до операции уменьшения.

+= Приращение на указанную величину, т.е. x += 3 эквивалентно x=x+3, а x += (-3) эквивалентно x=x + (-3).

-= Уменьшение на указанную величину, т.е. x -= 3 эквивалентно x=x - 3, а x -= (-3) эквивалентно x=x - (-3).

Обозначение диапазона

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

x=y..z x принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, а z больше y.

Математические функции

Определены следующие математические функции:

Abs( x )=

Asin( x ) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан

Atan( x ) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан

Atan2( y, x )=

Ceil( x ) наименьшее целое число, большее или равное x.

Clip1Y( x )=Clip3( 0, ( 1 << BitDepthY ) - 1, x )

Clip1C( x )=Clip3( 0, ( 1 << BitDepthC ) - 1, x )

Clip3( x, y, z )=

Cos( x ) тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.

Floor( x ) наибольшее целое число, меньшее или равное x.

GetCurrMsb( a, b, c, d )=

Ln( x ) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2,718 281 828…).

Log2( x ) логарифм x по основанию 2.

Log10( x ) логарифм x по основанию 10.

Min( x, y )=

Max( x, y )=

Round( x )=Sign( x ) * Floor( Abs( x ) + 0,5 )

Sign( x )=

Sin( x ) тригонометрическая функция синуса, работающая с аргументом x в единицах радиан

Sqrt( x )=

Swap( x, y )=( y, x )

Tan( x ) тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан

Порядок приоритетности операций

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

- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.

- Операции с одинаковым приоритетом оцениваются последовательно слева направо.

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

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

Таблица: Приоритетность операций от наивысшей (в верхней части таблицы) до низшей (в нижней части таблицы) операции (с операндами x, y и z) "x++", "x- -" "!x", "-x" (как унарный префиксный оператор) xy "x * y", "x/y", "x ÷ y", "" "x % y" "x+y", "x - y" (как оператор с двумя аргументами), " " "x << y", "x >> y" "x < y", "x <= y", "x > y", "x >= y" "x == y", "x != y" "x & y" "x | y" "x && y" "x | | y" "x ? y : z" "x..y" "x=y", "x += y", "x -= y"

Текстовое описание логических операций

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

if( condition 0 )

statement 0

else if( condition 1 )

statement 1 ... else /* информативный комментарий по оставшемуся условию */

statement n

может быть описано следующим образом:

... как указано ниже / ... применяется следующее:

- Если условие 0, определение 0

- Иначе, если условие 1, определение 1

- ...

-- Иначе (информативный комментарий по оставшемуся условию), определение n.

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

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

if( condition 0a && condition 0b )

statement 0

else if( condition 1a | | condition 1b )

statement 1

...

else

statement n

может быть описано следующим образом:

... как указано ниже / ... применяется следующее:

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

- условие 0a

- условие 0b

- Иначе, если одно или более из следующих условий выполняются, определение 1:

- условие 1a

- условие 1b

- ...

- Иначе, определение n

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

if( condition 0 )

statement 0

if( condition 1 )

statement 1

может быть описано следующим образом:

Когда условие 0, определение 0

Когда условие 1, определение 1.

Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного изображения, т.е. обработки или кодирования отдельного изображения независимо от любого предшествующего или последующего изображения, как при видеокодировании. В общем, только модули 244 интер-предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодирование для обработки изображения ограничено одним изображением 17. Все другие функциональные возможности (также именуемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных изображений, например вычисления 204/304 остатка, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, интра-предсказания 254/354 и/или контурной фильтрации 220, 320 и энтропийного кодирования 270 и энтропийного декодирования 304.

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

В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.

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

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

Настоящее раскрытие обеспечивает следующие дополнительные пять аспектов.

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

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

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

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

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

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

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

sampleWeightC1(x, y)=sampleWeight1 (2*x, 2*y);

или

sampleWeightC1(x, y)=sampleWeight1 (2*x-1, 2*y-1);

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + K)>>1;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + sampleWeight1 (2*x, 2*y - 1) + sampleWeight1 (2*x - 1, 2*y) + K)>>2;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + sampleWeight1 (2*x, 2*y - 1) + sampleWeight1 (2*x - 1, 2*y) + 2)>>2;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + 1)>>1;

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

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

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

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

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

название год авторы номер документа
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ РЕЖИМА СУББЛОЧНОГО РАЗДЕЛЕНИЯ 2020
  • Эсенлик, Семих
  • Блезер, Макс
  • Чжао, Чжицзе
  • Гао, Хань
  • Котра, Ананд Меер
  • Ван, Бяо
  • Алшина, Елена Александровна
RU2811983C2
ДЕБЛОКИРУЮЩИЙ ФИЛЬТР ДЛЯ ГРАНИЦ ПОДРАЗДЕЛОВ, ВОЗНИКАЮЩИХ ПОД ДЕЙСТВИЕМ ИНСТРУМЕНТА КОДИРОВАНИЯ ИНТРА-ПОДРАЗДЕЛОВ 2020
  • Ван, Бяо
  • Котра, Ананд Меер
  • Эсенлик, Семих
  • Гао, Хань
  • Чэнь, Цзяньлэ
RU2777967C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ, ИСПОЛЬЗУЮЩИЕ ВЫСОКОУРОВНЕВЫЙ ФЛАГ РАЗРЕШЕНИЯ DCT2 2020
  • Гао, Хань
  • Чен, Цзянле
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Ван, Бяо
RU2821334C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ, ИСПОЛЬЗУЮЩИЕ ВЫСОКОУРОВНЕВЫЙ ФЛАГ РАЗРЕШЕНИЯ DCT2 2020
  • Гао, Хань
  • Чен, Цзянле
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Ван, Бяо
RU2801589C2
КОМБИНАЦИЯ ПОЗИЦИОННО-ЗАВИСИМОГО ИНТРА-ПРЕДСКАЗАНИЯ, РАСШИРЕННАЯ УГЛОВЫМИ РЕЖИМАМИ 2019
  • Ван Дер Аувера, Герт
  • Серегин, Вадим
  • Саид, Амир
  • Карчевич, Марта
RU2785816C2
Кодирование изображения или видео на основе остатка АСТ 2021
  • Чжао, Цзе
  • Ким, Сеунгхван
RU2797995C1
СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПОДКАРТИНКИ 2020
  • Хендри, Хендри
RU2803187C1
КОДИРОВАНИЕ ИЗОБРАЖЕНИЯ ИЛИ ВИДЕО НА ОСНОВЕ ОСТАТКА АСТ 2021
  • Чжао, Цзе
  • Ким, Сеунгхван
RU2819337C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ, ИСПОЛЬЗУЮЩИЕ ВЫДЕЛЕННЫЙ БУФЕР IBC, И ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ, ОБНОВЛЯЮЩЕЕ КОМПОНЕНТ ЯРКОСТИ И ЦВЕТНОСТИ 2020
  • Гао, Хань
  • Есенлик, Семих
  • Ван, Бяо
  • Котра, Ананд Мехер
  • Чэнь, Цзяньлэ
RU2801326C2
СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПОДКАРТИНКИ 2023
  • Хендри, Хендри
RU2820304C1

Иллюстрации к изобретению RU 2 814 812 C2

Реферат патента 2024 года ВЫВЕДЕНИЕ ВЕСА ВЫБОРКИ ЦВЕТНОСТИ ДЛЯ ГЕОМЕТРИЧЕСКОГО РЕЖИМА РАЗДЕЛЕНИЯ

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

Формула изобретения RU 2 814 812 C2

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

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

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

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

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

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

получение объединенного значения выборок предсказания посредством объединения первого значения предсказания и второго значения предсказания;

причем способ дополнительно содержит:

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

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

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

при этом sample dist=((x<<1) + 1)*Dis[angleIdx1] + ((y<<1) + 1)*Dis[angleIdx2] - offset(distanceIdx), и при этом angleIdx1 и angleIdx2 выводятся на основе другой информации, получаемой из битового потока, x и y являются -x и -y координатами выборки относительно левой верхней выборки блока кодирования, offset(distanceIdx) является значением смещения, которое является функцией индексного значения (distanceIdx), и Dis[] является таблицей поиска.

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

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

sampleWeightC1(x, y)=sampleWeight1 (2*x, 2*y);

где x и y являются координатами выборки цветности относительно верхней левой координаты блока цветности блока кодирования, sampleWeightC1(a, b) является первым значением веса для выборки цветности, которая расположена в координате (a, b) выборки в блоке цветности текущего блока, где a и b являются значениями координат; и sampleWeight1(c, d) представляет значение веса, соответствующее выборке яркости, которая расположена в координате (c, d) выборки в блоке яркости текущего блока, где c и d являются значениями координат; а K является целочисленным значением.

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

sampleWeightC1(x, y)=sampleWeight1 (2*x-1, 2*y-1);

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + K)>>1;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + sampleWeight1 (2*x, 2*y - 1) + sampleWeight1 (2*x - 1, 2*y) + K)>>2;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + sampleWeight1 (2*x, 2*y - 1) + sampleWeight1 (2*x - 1, 2*y) + 2)>>2;

или

sampleWeightC1(x, y)=(sampleWeight1 (2*x-1, 2*y-1) + sampleWeight1 (2*x, 2*y) + 1)>>1;

где x и y являются координатами выборки цветности относительно верхней левой координаты блока цветности блока кодирования, sampleWeightC1(a, b) является первым значением веса для выборки цветности, которая расположена в координате (a, b) выборки в блоке цветности текущего блока, где a и b являются значениями координат; и sampleWeight1(c, d) представляет значение веса, соответствующее выборке яркости, которая расположена в координате (c, d) выборки в блоке яркости текущего блока, где c и d являются значениями координат; а K является целочисленным значением.

5. Способ по любому из пп. 1-4, в котором режим разделения представляет собой геометрическую модель.

6. Способ по любому из пп. 1-5, в котором параметр представляет собой параметр угла или параметр расстояния.

7. Способ по любому из пп. 1-6, в котором первый режим предсказания и второй режим предсказания не идентичны.

8. Способ по любому из пп. 1-7, в котором первый режим предсказания или второй режим предсказания является режимом интер-предсказания, при этом информация для режима интер-предсказания содержит индекс опорного изображения и/или вектор движения.

9. Способ по любому из пп. 1-8, в котором первый режим предсказания или второй режим предсказания является режимом интра-предсказания, при этом информация для режима интра-предсказания содержит индекс режима интра-предсказания.

10. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1-9.

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

12. Декодер, содержащий:

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

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

13. Декодер, содержащий:

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

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

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

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

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

модуль (3013) объединения для получения объединенного значения выборок предсказания посредством объединения первого значения предсказания и второго значения предсказания,

при этом модуль объединения дополнительно выполнен с возможностью:

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

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

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

при этом sample dist=((x<<1) + 1)*Dis[angleIdx1] + ((y<<1) + 1)*Dis[angleIdx2] - offset(distanceIdx), и при этом angleIdx1 и angleIdx2 выводятся на основе другой информации, получаемой из битового потока, x и y являются -x и -y координатами выборки относительно левой верхней выборки блока кодирования, offset(distanceIdx) является значением смещения, которое является функцией индексного значения (distanceIdx), и Dis[] является таблицей поиска.

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

R-L LIAO et al, "CE10.3.1.b: Triangular prediction unit mode", JVET-L0124, 12-th Meeting, Macao, 2018
Способ получения цианистых соединений 1924
  • Климов Б.К.
SU2018A1
US 9912950 B2, 06.03.2018
US 9462272 B2, 04.10.2016
CN 103339943 B, 13.06.2017
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами 1924
  • Ф.А. Клейн
SU2017A1
СИГНАЛИЗАЦИЯ ЭЛЕМЕНТОВ СИНТАКСИСА ДЛЯ КОЭФФИЦИЕНТОВ ПРЕОБРАЗОВАНИЯ ДЛЯ ПОДНАБОРОВ ЕДИНИЦЫ КОДИРОВАНИЯ НА УРОВНЕ ЛИСТЬЕВ 2012
  • Карчевич Марта
  • Ван Сянлинь
  • Го Ливэй
RU2580082C2

RU 2 814 812 C2

Авторы

Эсенлик, Семих

Блезер, Макс

Чжао, Чжицзе

Гао, Хань

Котра, Ананд Меер

Ван, Бяо

Алшина, Елена Александровна

Даты

2024-03-05Публикация

2020-06-19Подача