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

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

Перекрестная ссылка на родственную заявку

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

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

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

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

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

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

Сущность изобретения

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

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

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

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

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

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

Когда merge_gpm_partition_idx[x0][y0] или geo_partition_idx[x0][y0] отсутствует, предполагается, что он равен 0.

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

Битовый поток может быть получен в соответствии с беспроводной сетью или проводной сетью. Битовый поток может передаваться с веб-сайта, сервера или из другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радиосвязь, микроволновая связь, WIFI, Bluetooth, LTE или 5G.

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

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

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

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

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

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

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

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

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

Как правило, значение merge_gpm_partition_idx[x0][y0] декодируется из битового потока. В примере диапазон значений для merge_gpm_partition_idx[ ][ ] составляет от 0 до 63, включая 0 и 63. В примере процесс декодирования для merge_gpm_partition_idx[ ][ ] является «обходным».

Когда merge_gpm_partition_idx[x0][y0] отсутствует, предполагается, что значение этого параметра равно 0.

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

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

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

В варианте осуществления переменная angleIdx угла разделения (угловой параметр) и переменная DistanceIdx расстояния режима геометрического разделения устанавливаются в соответствии со значением merge_gpm_partition_idx[xCb][yCb] (указатель), как задано в приведенной ниже таблице. В реализации эта взаимосвязь может быть реализована согласно таблице 1 или согласно функции.

Таблица 1. Спецификация angularIdx и DistanceIdx на основе merge_gpm_partition_idx

В одной реализации значение индекса partIdx удовлетворяет условию:

partIdx = (angleIdx >= threshold1 &&angleIdx <=threshold2 )? 1 : 0,

где threshold1 и threshold2 принимают целые значения, и threshold1 меньше threshold2.

Соответственно, когда значение индекса angleIdx угла находится в интервале между threshold1 и threshold2, или когда значение индекса angleIdx угла равно threshold1 или threshold2, значение индекса partIdx устанавливается равным 1, в противном случае, когда значение индекса angleIdx угла находится за пределами этого интервала, значение индекса partIdx устанавливается равным 0. Текущий блок кодирования декодируется в соответствии со значением индекса partIdx. Например, значение индекса partIdx определяет то, какой из двух подблоков является первым подблоком (имеющим partIdx = 0), а какой вторым декодируемым подблоком (имеющим partIdx = 1).

В примере threshold1 равен 13, и threshold2 равен 27.

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

isFlip = (angleIdx >= 13 && angleIdx <= 27) ? 1 : 0.

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

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

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

В одной реализации значение индекса partIdx соответствует:

partIdx = (angleIdx >= threshold1 &&angleIdx <=threshold2 )? 1 : 0,

где threshold1 и threshold2 принимают целые значения, и threshold1 меньше threshold2.

В одной реализации threshold1 равен 13, и threshold2 равен 27.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

фиг. 6а – пример совмещенного блока;

фиг. 6b – пример пространственных соседних блоков;

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

фиг. 8 – несколько примеров режима предсказания подблока;

фиг. 9-12 – некоторые примеры разделения блока;

фиг. 13 – пример реализации заданной таблицы поиска для stepD;

фиг. 14 – пример реализации заданной таблицы поиска для f();

фиг. 15 – пример аспекта квантования, относящегося к заданной таблице поиска для stepD;

фиг. 16 – пример схемы квантования, где максимальное расстояние ρmax определено для данного блока кодирования;

фиг. 17 – пример схемы квантования, где альтернативное максимальное расстояние ρmax определено для данного блока кодирования;

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

фиг. 19 – схема, иллюстрирующая структуру примера терминального устройства;

фиг. 20 – вариант осуществления настоящего изобретения;

фиг. 21 – другой вариант осуществления настоящего изобретения;

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

фиг. 23 – блок-схема, иллюстрирующая вариант осуществления устройства согласно настоящему изобретению; и

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

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

Подробное описание изобретения

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

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

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

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

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

В следующих вариантах осуществления системы 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 изображения также могут называться необработанным изображением или данными 17 необработанного изображения.

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

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

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

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

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

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

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

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

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

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

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

Устройство 34 отображения устройства-адресата 14 выполнено с возможностью приема данных 33 изображения после последующей обработки для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного изображения, например, интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, микросветодиодные дисплеи, жидкие кристаллы на кремнии (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) и группы экспертов по движущимся изображениям (MPEG) ISO/IEC. Обычный специалист в данной области техники поймет, что варианты осуществления, раскрытые в данном документе, не ограничиваются HEVC или VVC.

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

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

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

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

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

(Цифровое) изображение представляют собой или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве может также называться пикселем (сокращенная форма английского словосочетания "picture element" (элемент изображения)) или пэлом. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета, как правило, используются три цветовых компонента, то есть изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель, как правило, представлен в формате яркости и цветности или в цветовом пространстве, например, YCbCr, которое содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или короткой яркости) представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), в то время как два компонента цветности (или короткой цветности) Cb и Cr представляют компоненты цветности или информации о цвете. Соответственно, изображение в формате 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), например, напрямую или в закодированном виде через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.

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

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

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

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

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

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

Фильтрация

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

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

Буфер декодированного изображения

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

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

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

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

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

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

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

Разделение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 разрядов), затем старший бит отбрасывается, поэтому полученное дополнение до двух равно 0111,1111,1111,1111 (десятичное число 32767), что совпадает с результатом при применении формулы (1) и (2).

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

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

u = (mvpy + mvdy +2bitDepth) % 2bitDepth … (7)

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

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

Способ 2. Удалить старший бит переполнения путем отсечения значения

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

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

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

На фиг. 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 может быть реализовано в широком разнообразии конфигураций.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выработанные кандидаты

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

список кандидатов информации движения получается в процессе составления списка слияния в ITU-T H.265 и в VVC. Процесс составления списка слияния VVC описан в разделе «8.3.2.2 Процесс получения векторов движения яркости для режима слияния» документа JVET-L1001_v2 Versatile Video Coding (Draft 3), который находится в открытом доступе по адресу http://phenix.it-sudparis.eu/jvet/. Термин информация движения относится к данным движения, которые необходимы для выполнения процесса предсказания с компенсацией движения. Информация движения, как правило, относится к следующей информации:

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

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

• Вектор движения (2 вектора движения, если блок предсказывается двунаправленно)

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

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

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

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

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

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

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

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

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

L0 0 12 L0 1 13 L1 0 13 L1 1 14

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

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

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

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

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

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

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

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

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

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

• Этап 1. Блок кодирования считается разделенным на 2 подблока в соответствии с геометрической моделью. Эта модель может привести к разделению блока разделительной линией (например, прямой), как показано на фиг. 9-12. На этом этапе в соответствии с геометрической моделью выборки в блоке кодирования рассматриваются как расположенные в двух подблоках. Подблок A или подблок B содержит часть выборок (но не все выборки) в текущем блоке кодирования. Концепции «Подблок А» или «Подблок В» могут быть указаны параметром, относящимся к разделительной линии.

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

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

• Этап 4. Получить объединенные значения выборок предсказания в соответствии с комбинацией первых значений предсказания и вторых значений предсказания.

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

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

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

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

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

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

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

В примере параметр alphaIdx квантованного угла и параметр DistanceIdx квантованного расстояния сигнализируются для параметров разделения.

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

alphaIdx = Round(alpha / ∆alpha),

distanceIdx = Round(dist / ∆dist),

где переменные ∆alpha и ∆dist представляют собой размеры шага квантования для углового параметра и параметра расстояния разделительной линии. Соответственно, угол alpha и расстояние dist могут быть восстановлены с использованием значений alphaIdx и DistanceIdx, полученных из битового потока в виде

alpha = alphaIdx*∆alpha,

dist = distanceIdx*∆dist.

В примере, если размер шага углового квантования равен ∆alpha = 11,25°, значение alphaIdx может находиться в диапазоне от 0 до 31 (включая 0 и 31) с тем, чтобы охватить разрешенные углы в евклидовой плоскости. В другом примере значение размера шага углового квантования равно ∆alpha = 22,5°, причем значение alphaIdx может находиться в диапазоне от 0 до 15 (включая 0 и 15).

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

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

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

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

На первом этапе максимальное расстояние ρmax может быть получено в зависимости от угла, так что все разделительные линии со значением расстояния 0 < dist < ρmax ограничены блоком кодирования (например, они пересекают границу блока кодирования). Это показано на фиг. 15 для блока кодирования размером 16x4 выборок яркости.

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

, ,

где alphaR – угол, ранее обозначенный как alpha, в единицах излучения, w – ширина, и h – высота блока в единицах яркости. В примере значение размера шага квантования расстояния, зависящего от угла, ∆dist(alpha) можно получить в виде

где N-1 – максимальное значение DistanceIdx. Это показано на фиг. 16 со значениями угла ∆ =22,5° и N=4.

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

где ρth – параметр, используемый для изменения интервала между разделительными линиями для блока кодирования. В примере для ρth установлено значение ρth = 1,5.

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

,

где alphaR – угол в радианах, w – ширина, и h – высота блока в единицах яркости. Это показано на фиг. 17 со значениями угла ∆ =22,5° и N=4.

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

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

stepD = Round( ∆dist*2 prec ),

где stepD – размер шага расстояния в линейном масштабе, и prec – переменная, используемая для регулировки точности процесса масштабирования. В примере значение prec установлено равным prec=7.

В примере дополнительно сохраняются предварительно вычисленные значения stepD на основе соотношения сторон, обозначаемого whRatio, которое зависит от ширины и высоты блока кодирования. Кроме того, предварительно вычисленные значения stepD сохраняются на основе (нормализованного) значения угла angleN, которое представляет собой значение индекса, относящееся к углам в первом квадранте евклидовой плоскости (например, 0 ≤ angleN*∆alpha ≤ 90°). Пример применения такой таблицы поиска показан на фиг. 13.

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

Этап 1. Для выборки в текущем блоке кодирования (блоке декодирования или блоке кодирования) вычисляется расстояние выборки (sample_dist).

В некоторых примерах расстояние выборки может представлять собой расстояние по горизонтали или расстояние по вертикали, или комбинацию расстояния по вертикали и горизонтали от упомянутой выборки до разделительной линии (разделительная линия используется для указания того, что блок кодирования разделен на два подблока). Упомянутая выборка представлена координатами (x, y) относительно верхнего левого выборки блока кодирования. Координата выборки и sample_dist показаны на фиг. 11 и фиг. 12. Подблоки необязательно являются прямоугольными, и они могут иметь треугольную или трапециевидную форму.

В примере первый параметр представляет собой квантованное значение угла (angleIdx), и второй параметр представляет квантованное значение расстояния (distanceIdx). Два параметра описывают линейное уравнение. В примере расстояние 1230 может быть получено в соответствии с DistanceIdx (второй параметр), и угол alpha 1210 может быть получен в соответствии с angleIdx (первый параметр). Расстояние 1230 может быть расстоянием до центра блока кодирования, и угол может быть углом между разделительной линией и горизонтальной (или, что то же самое, вертикальной) линией, проходящей через центральную точку блока кодирования.

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

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

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

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

Этап 3. Объединенное значение выборки предсказания в координатах выборки (x,y) вычисляется в соответствии с первым значением предсказания в координатах (x,y), вторым значением предсказания в координатах (x,y), SampleWeight1 и sampleWeight2.

Например, этап 1 в приведенных выше примерах может содержать следующие этапы:

Этап 1.1. Получить значение индекса параметра угла (alphaN) для текущего блока, значение ширины текущего блока (W) и значение высоты текущего блока (H). W и H представляют собой ширину и высоту текущего блока в количестве выборок. Например, блок кодирования, ширина и высота которого равны 8, представляет собой квадратный блок, который содержит 64 выборки. В другом примере W и H представляют собой ширину и высоту текущего блока в количестве выборок яркости.

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

Этап 1.3. Получить значение stepD согласно таблице поиска, значение alpha и значение whRatio, в примере, показанном на фиг. 13, значение alpha и значение whRatio используются в качестве значений индекса таблицы поиска.

Этап 1.4. Значение sample_dist вычисляется в соответствии со значением stepD.

В другом примере этап 1 в приведенных выше примерах может содержать следующие этапы:

Этап 1.1. Получить значение параметра угла (alphaN) для текущего блока, значение индекса расстояния (distanceIdx), значение ширины текущего блока (W), значение высоты текущего блока (Н).

Этап 1.2. Получить значение отношения whRatio в соответствии со значением W и значением H, значение whRtaio представляет собой отношение между шириной и высотой текущего блока кодирования.

Этап 1.3. Получить значение stepD согласно таблице поиска, значение alpha и значение whRatio, в примере, показанном на фиг. 13, значение alphaN и значение whRatio используются в качестве значений индекса таблицы поиска. В примере значение stepD представляет собой размер шага квантования для процесса вычисления расстояния выборки.

Этап 1.4. Значение sample_dist вычисляется в соответствии со значением stepD, значением DistanceIdx, значением угла (alphaN), значением W и значением H.

В одном примере значение whRatio получается с использованием формулы:

whRatio = (wIdx >= hIdx) ? wIdx – hIdx: hIdx – wIdx,

где значение wIdx равно log2(W) – 3, и значение hIdx равно log2(H) – 3.

В другом примере значение whRatio вычисляется как whRatio = (W >= H) ? В/В : В/В.

В примере значение угла alpha может быть получено из битового потока (в декодере). В одном примере диапазон значений угла представляет собой диапазон квантованных значений от 0 до 31 (включая 0 и 31), обозначенный как angleIdx. В одном примере квантованное значение угла принимает только 32 разных значения (поэтому значений между 0-31 достаточно для того, чтобы представить то, какое значение угла выбрано). В другом примере диапазон значений значения угла может находиться в диапазоне от 0 до 15, что означает, что можно выбрать 16 различных квантованных значений угла. Следует отметить, что в общем случае значение угла может быть целочисленным значением, большим или равным нулю.

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

alphaN= angleIdx if angleIdx >= 0 && angleIdx <=Lim, или alphaN = 2*Lim − angleIdx if angleIdx > Lim && angleIdx<= 2*Lim, или alphaN = angleIdx – 2*Lim if angleIdx > 2*Lim && angleIdx <=3*Lim, или alphaN = 4*Lim − angleIdx в противном случае,

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

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

alphaN= angleIdx, или

alphaN = 2*Lim − angleIdx, или

alphaN = angleIdx − 2*Lim, или

alpha N= 4*Lim – angleIdx.

В приведенной выше формуле Lim представляет собой постоянное заданное значение, которое связано с количеством квантованных значений угла. Например, если имеется 32 различных квантованных значения угла, число Lim может быть равно 8 (4*Lim равно 32). В другом примере Lim может быть равно 4, что соответствует всего 16 различным квантованным значениям угла.

В примере значение sample_dist получается по формуле:

sample_dist = ((2*x) − W + K)*f1(alpha) + ((2*y) − H + K))*f2(alpha) − distanceIdx*stepD*scaleStep, где:

• f1() и f2() – функции, и alpha – входные данные для функций. В примере f1() и f2() реализованы как таблицы поиска, значение alpha является значением индекса для таблиц поиска.

• значение scaleStep равно либо значению ширины блока кодирования (декодирования или кодирования), либо значению высоты блока кодирования.

• x и y – координаты упомянутой выборки относительно левой верхней выборки блока кодирования.

• K – целочисленное значение смещения. В примере значение для K равно 1.

В примере функции f1() и f2() реализованы как таблицы поиска. В примере функции f1() и f2() представляют собой постепенное изменение значения sample_dist по отношению к изменению значений x и y. В некоторых примерах f1(index) представляет собой изменение значения sample_dist при увеличении значения x на одну единицу (увеличение на единицу может быть равно 1), тогда как f2(index) представляет изменение значения sample_dist при увеличении на одну единицу в значении у. Значение индекса может быть получено из значения указателя в битовом потоке.

В другом примере значение sample_dist получается по формуле:

sample_dist = ((2*x) − W + K)*f(dispIdxN) + ((2*y) − H + K))*f(dispIdxS) − distanceIdx*stepD*scaleStep, где:

• f() – функция, в примере функция f() реализована в виде таблицы поиска.

• dispIdxN или dispIdxS – значения индекса, полученные из битового потока или вычисленные на основе значения указателя в битовом потоке.

• значение scaleStep равно либо значению ширины блока кодирования (декодирования или кодирования), либо значению высоты блока кодирования.

• x и y – координаты упомянутой выборки относительно левой верхней выборки блока кодирования.

• K – целочисленное значение смещения. В примере значение для K равно 1.

В примере функция f() реализована как таблица поиска. Функция f() представляет постепенное изменение значения sample_dist по отношению к изменению значений x и y. Например, f(index1) представляет собой изменение значения sample_dist при увеличении значения x на одну единицу, тогда как f(index2) представляет изменение значения sample_dist при увеличении значения y на одну единицу. Значение index1 и index2 представляют собой индекс таблицы (имеющий целочисленное значение больше или равное 0), который может быть получен в соответствии со значением указателя в битовом потоке.

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

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

В примере, показанном на фиг. 13, значение stepD получается в соответствии со значением whRatio и значением угла (alpha). Например, значение stepD может быть получено как stepD = lookupTable[alphaN][whRatio], где значение alphaN – значение индекса, полученное из битового потока, или значение alphaN вычисляется на основе значения указателя, полученного из битового потока. Например, alpha может быть рассчитана по формуле:

alphaN= angleIdx if angleIdx >= 0 && angleIdx <=8, или alphaN = 16 − angleIdx if angleIdx > 8 && angleIdx<= 16, или alphaN = angleIdx − 16 if angleIdx > 16 && angleIdx <=24, или alphaN = 32 − angleIdx в противном случае,

где angleIdx – значение индекса, полученное в соответствии с битовым потоком.

В другом примере:

alphaN= angleIdx if angleIdx >= 0 && angleIdx <=Lim, или alphaN = 2*Lim − angleIdx if angleIdx > Lim && angleIdx<= 2*Lim, или alphaN = angleIdx – 2*Lim if angleIdx > 2*Lim && angleIdx <=3*Lim, или alphaN = 4*Lim − angleIdx в противном случае.

Или в другом примере:

alphaN=angleIdx, или

alphaN = 2*Lim − angleIdx, или

alphaN = angleIdx - 2*Lim, или

alphaN = 4*Lim – angleIdx.

В приведенной выше формуле Lim представляет собой постоянное заданное значение, которое связано с количеством квантованных значений угла. Например, если имеется 32 различных квантованных значения угла, то число Lim может быть равно 8 (4*Lim равно 32). В другом примере Lim может быть равно 4, что соответствует всего 16 различным квантованным значениям угла.

В одном примере значение sample_dist получается в соответствии с DistanceIdx*stepD*scaleStep, где DistanceIdx – значение индекса, полученное в соответствии с битовым потоком, и значение scaleStep получается в соответствии либо со значением ширины блока или значением высоты блока. Результатом умножения является расстояние от разделительной линии до центральной точки блока кодирования (которая имеет координаты x=W/2 и y=H/2).

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

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

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

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

• размер таблицы остается маленьким (что потребует памяти).

В другом примере значение sample_dist получается в соответствии с DistanceIdx*(stepD+T)*scaleStep, где T – значение смещения, которое имеет целочисленное значение. В примере значение T равно 32.

В другом примере (как с точки зрения декодера, так и с точки зрения кодера):

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

Два подблока имеют индекс 0 и 1. Первый подблок имеет индекс 0, и второй подблок имеет индекс 1.

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

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

Если значение sample_dist каждой выборки в одном подблоке меньше (или равно) нулю, то значение индекса для подблока устанавливается равным 0.

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

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

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

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

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

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

На фиг. 20 нижняя левая выборка принадлежит первому подблоку с индексом 0, при этом индексы подблоков неизменны.

На фиг. 21 нижняя левая выборка принадлежит второму подблоку с индексом 1 (фигура 21a), следовательно, индексы двух подблоков меняются местами, или их значения изменяются на противоположные, как показано на фиг. 21b, порядок обработки будет основан на изменении индексов местами или изменении их значений на противоположные.

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

Этап 1. Разделить текущий блок кодирования на два подблока на основе режима разделения;

Sept2. Вычислить значение sample_dist для выборки в одном подблоке;

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

или

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

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

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

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

S101: получение режима разделения (или разбиения) для текущего блока кодирования.

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

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

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

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

Функция 1

Указатель X представляет собой входные данные (0-63).

if (X<4)

Angle = 0, Dist =(X>=2)?X-4:X+1;

Else if (X>=60)

Angle = 8, Dist = (X>61)?X-64:X-59;

Else

Z=(X-4)/14;

K = Z+1+Z/3;

Angle = (X-4)%14<7 ? K: 16-K;

Dist = (X-4)%7 – 3.

Указатель X имеет значение от 0 до 63, которое используется для получения первого параметра (Angle) и второго параметра (Dist). Пример выходных результатов приведен в таблице 2.

Таблица 2. Таблица входных и выходных данных функции 1, где geo_partition_idx (например, указатель X) является индексом таблицы, и angleIdx (например, angle) является первым параметром, и DistanceIdx (например, Dist) является вторым параметром.

geo_partition_idx angleIdx distanceIdx 0 0 1 1 0 2 2 0 -2 3 0 -1 4 1 -3 5 1 -2 6 1 -1 7 1 0 8 1 1 9 1 2 10 1 3 11 15 -3 12 15 -2 13 15 -1 14 15 0 15 15 1 16 15 2 17 15 3 18 2 -3 19 2 -2 20 2 -1 21 2 0 22 2 1 23 2 2 24 2 3 25 14 -3 26 14 -2 27 14 -1 28 14 0 29 14 1 30 14 2 31 14 3 32 3 -3 33 3 -2 34 3 -1 35 3 0 36 3 1 37 3 2 38 3 3 39 13 -3 40 13 -2 41 13 -1 42 13 0 43 13 1 44 13 2 45 13 3 46 5 -3 47 5 -2 48 5 -1 49 5 0 50 5 1 51 5 2 52 5 3 53 11 -3 54 11 -2 55 11 -1 56 11 0 57 11 1 58 11 2 59 11 3 60 8 1 61 8 2 62 8 -2 63 8 -1

Другой пример указателя (geo_partition_idx) и заданного способа или функции приведен ниже.

Функция 2

Указатель X представляет собой входные данные (0-63).

if (X<4)

Angle = 0, Dist =(X>=2)?X-4:X+1;

Else if (X>=60)

Angle = 8, Dist = (X>61)?X-64:X-59;

Else

Z=(X-4)/14;

K = Z+1+Z/3;

Angle = (X-4)%14<7 ? K: 16-K;

Dist = (X-4)%7 – 3.

If (Dist < 0)

Angle = Angle + 16;

Dist = - Dist.

Указатель X имеет значение от 0 до 63, которое используется для получения первого параметра (Angle) и второго параметра (Dist). Пример выходных результатов приведен в таблице 3.

Таблица 3. Таблица ввода и вывода функции 2, где geo_partition_idx (например, указатель X) представляет собой индекс таблицы, и angleIdx (например, Angle) является первым параметром, и DistanceIdx (например, Dist) является вторым параметром.

geo_partition_idx angleIdx distanceIdx 0 0 1 1 0 2 2 16 2 3 16 1 4 17 3 5 17 2 6 17 1 7 1 0 8 1 1 9 1 2 10 1 3 11 31 3 12 31 2 13 31 1 14 15 0 15 15 1 16 15 2 17 15 3 18 18 3 19 18 2 20 18 1 21 2 0 22 2 1 23 2 2 24 2 3 25 30 3 26 30 2 27 30 1 28 14 0 29 14 1 30 14 2 31 14 3 32 19 3 33 19 2 34 19 1 35 3 0 36 3 1 37 3 2 38 3 3 39 29 3 40 29 2 41 29 1 42 13 0 43 13 1 44 13 2 45 13 3 46 21 3 47 21 2 48 21 1 49 5 0 50 5 1 51 5 2 52 5 3 53 27 3 54 27 2 55 27 1 56 11 0 57 11 1 58 11 2 59 11 3 60 8 1 61 8 2 62 24 2 63 24 1

S102. Текущий блок кодирования считается разделенным на два подблока (подблок A, подблок B) на основе режима разделения.

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

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

На фиг. 9 показан пример разделения блока кодирования, блок считается разделенным на 2 подблока в соответствии с разделительной линией 1250. Для описания линии 1250 сигнализируются два параметра: один параметр - это угол alpha 1210, и другой параметр – расстояние dist 1230.

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

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

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

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

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

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

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

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

S103. Установить значение индекса подблока А в соответствии с заданной позицией выборки в текущем блоке кодирования.

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

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

или

Когда заданная позиция выборки не расположена в подблоке A (например, заданная позиция выборки расположена в подблоке B), значение индекса подблока A устанавливается равным второму значению, в этом примере значение индекса подблока B будет установлено равным первому значению.

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

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

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

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

Вариант 2 осуществления

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

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

isFlip = ( angleIdx >= 13 && angleIdx <= 27 ) ? 1 : 0.

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

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

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

В одном примере значение показателя (индекса) подблока А геометрического разделения может быть получено из следующей таблицы поиска. Если значение partIdx[AngleIdx] равно 0, это означает, что индекс части раздела подблока A из геометрического разделения, равен 0, значение partIdx[AngleIdx], равное 1, означает, что индекс части раздела подблока A из геометрического разделения равен 1.

Таблица 4. Таблица поиска PartIndx для подблока A на основе AngleIdx

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

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

partIdx = angleIdx >=13 && angleIdx <=27 ? 1 : 0.

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

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

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

В некоторых примерах в режиме геометрического разделения значение предиктора равно predictorA *Mask1 + predictor B *Mask2, где значение предиктора A или значение предиктора B может быть получено из другого режима (например, режима слияния), Mask1 и Mask2 являются масками смешивания для подблоков, разделенных по форме геометрического разделения. Маски смешивания предварительно вычисляются на основе других указателей. В одном примере angularIdx и DistanceIdx получаются из geo_partition_idx, geo_partition_idx синтаксически анализируется из двунаправленного потока. Расстояние между местоположением выборки и границей раздела вычисляется на основе angleIdx и DistanceIdx, маска смешивания в зависимости от этого расстояния с использованием заданной таблицы поиска.

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

В одном примере, если значение индекса подблока равно первому значению (например, 0), то для этого подблока используется Mask1 для выработки значения предиктора; если значение индекса подблока равно второму значению (например, 1), то для этого подблока используется Mask2 для выработки значения предиктора.

В одном примере, если значение индекса подблока А равно 0, то Mask1 используется для подблока А, Mask2 используется для подблока В (в этом примере значение индекса подблока В равно 1).

Окончательный предиктор = predictorA * Mask1 + predictorB * Mask2.

В одном примере, если значение индекса подблока А равно 1, то Mask2 используется для подблока А, Mask1 используется для подблока В (в этом примере значение индекса подблока В равно 0).

Окончательный предиктор = predictorA * Mask2 + predictorB * Mask1.

В общем виде:

Окончательный предиктор = PartIdx[AngleIdx] ?

predictorA * Mask2 + predictorB * Mask1 :

predictorA * Mask1 + predictorB * Mask2.

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

S2201. Получить значение индекса режима разделения для текущего блока кодирования.

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

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

Когда merge_gpm_partition_idx[ x0 ][y0 ] или geo_partition_idx[x0][y0] отсутствует, предполагается, что значение этого параметра равно 0.

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

Битовый поток может быть получен в соответствии с беспроводной сетью или проводной сетью. Битовый поток может передаваться с веб-сайта, сервера или из другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радиосвязь, микроволновая связь, WIFI, Bluetooth, LTE. или 5G.

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

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

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

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

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

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

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

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

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

Как правило, значение merge_gpm_partition_idx[x0][y0] декодируется из битового потока. В примере диапазон значений для merge_gpm_partition_idx[ ][ ] составляет от 0 до 63, включая 0 и 63. В примере процесс декодирования для merge_gpm_partition_idx[ ][ ] является «обходным».

Когда merge_gpm_partition_idx[x0][y0] отсутствует, предполагается, что значение этого параметра равно 0.

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

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

В примере, angleIdx задает индекс угла геометрического раздела.

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

В варианте осуществления переменная angleIdx угла разделения (параметр угла) и переменная DistanceIdx расстояния режима геометрического разделения устанавливаются в соответствии со значением merge_gpm_partition_idx[xCb][yCb] (указатель), как задано в приведенной ниже таблице. В реализации эта взаимосвязь может быть реализовано согласно таблице 1 или согласно функции.

Таблица 1. Спецификация angularIdx и DistanceIdx на основе merge_gpm_partition_idx

S2203. Установить значение индекса partIdx в соответствии со значением индекса angleIdx угла;

В одной реализации значение индекса partIdx соответствует:

partIdx = (angleIdx >= threshold1 &&angleIdx <=threshold2 )? 1 : 0,

где threshold1 и threshold2 принимают целые значения, и threshold1 меньше threshold2.

В примере threshold1 равен 13, и threshold2 равен 27.

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

isFlip = (angleIdx >= 13 && angleIdx <= 27) ? 1 : 0.

S2204. Декодировать текущий блок кодирования в соответствии со значением индекса partIdx.

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

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

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

На фиг. 23 показан видеодекодер, причем декодер содержит: блок 2301 синтаксического анализа, который выполнен с возможностью получения значения индекса режима разделения для текущего блока кодирования; блок 2302 получения значения индекса угла, который выполнен с возможностью получения значения индекса angleIdx угла для текущего блока кодирования в соответствии со значением индекса режима разделения и таблицей; блок 2303 установки, который выполнен с возможностью установки значения индекса partIdx в соответствии со значением индекса angleIdx угла; блок 2304 обработки, который выполнен с возможностью декодирования текущего блока кодирования в соответствии со значением индекса partIdx.

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

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

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

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

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

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

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

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

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

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

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

Флаги списка предсказаний predListFlagA и predListFlagB.

Переменные numSbX и numSbY, задающие количество блоков 4×4 в текущем блоке кодирования в горизонтальном и вертикальном направлениях, соответственно, устанавливаются равными cbWidth >> 2 и cbHeight >> 2, соответственно.

Переменные, displacementX, displacementY, isFlip и shiftHor получаются следующим образом:

displacementX = angleIdx

displacementY = ( angleIdx + 8 ) % 32

isFlip = ( angleIdx >= 13 && angleIdx <= 27 ) ? 1 : 0

shiftHor = ( angleIdx % 16 = = 8 | | ( angleIdx % 16 != 0 && cbHeight >= cbWidth ) ) ? 0 : 1

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

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

offsetX = ( −cbWidth ) >> 1

offsetY = ( ( −cbHeight ) >> 1 ) +
( angleIdx < 16 ? ( distanceIdx * cbHeight ) >> 3 : −( ( distanceIdx * cbHeight ) >> 3 ) )В противном случае (shiftHor равно 1) применяется следующее:

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

offsetY = ( −cbHeight ) >> 1

Для каждого подблока 4×4 с индексом подблока ( xSbIdx, ySbIdx ) при xSbIdx = 0..numSbX - 1 и ySbIdx = 0..numSbY - 1 применяется следующее:

Переменная motionIdx вычисляется на основе массива disLut, заданного в таблице 37, следующим образом:

motionIdx = ( ( ( 4 * xSbIdx + offsetX ) << 1 ) + 5 ) * disLut[ displacementX ] +
( ( ( 4 * ySbIdx + offsetY ) << 1 ) + 5 ) * disLut[ displacementY ]

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

sType = abs( motionIdx ) < 32 ? 2 : ( motionIdx <= 0 ? ( 1 − isFlip ) : isFlip )

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

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

predFlagL0 = ( predListFlagA = = 0 ) ? 1 : 0

predFlagL1 = ( predListFlagA = = 0 ) ? 0 : 1

refIdxL0 = ( predListFlagA = = 0 ) ? refIdxA : −1

refIdxL1 = ( predListFlagA = = 0 ) ? −1 : refIdxA

mvL0[ 0 ] = ( predListFlagA = = 0 ) ? mvA[ 0 ] : 0

mvL0[ 1 ] = ( predListFlagA = = 0 ) ? mvA[ 1 ] : 0

mvL1[ 0 ] = ( predListFlagA = = 0 ) ? 0 : mvA[ 0 ]

mvL1[ 1 ] = ( predListFlagA = = 0 ) ? 0 : mvA[ 1 ]

В противном случае, если sType равно 1 (или sType равно 2) и predListFlagA + predListFlagB не равно 1, применяется следующее:

predFlagL0 = ( predListFlagB = = 0 ) ? 1 : 0

predFlagL1 = ( predListFlagB = = 0 ) ? 0 : 1

refIdxL0 = ( predListFlagB = = 0 ) ? refIdxB : −1

refIdxL1 = ( predListFlagB = = 0 ) ? −1 : refIdxB

mvL0[ 0 ] = ( predListFlagB = = 0 ) ? mvB[ 0 ] : 0

mvL0[ 1 ] = ( predListFlagB = = 0 ) ? mvB[ 1 ] : 0

mvL1[ 0 ] = ( predListFlagB = = 0 ) ? 0 : mvB[ 0 ]

mvL1[ 1 ] = ( predListFlagB = = 0 ) ? 0 : mvB[ 1 ]

В противном случае (sType равно 2, и predListFlagA + predListFlagB равно 1), применяется следующее:

predFlagL0 = 1

predFlagL1 = 1

refIdxL0 = ( predListFlagA = = 0 ) ? refIdxA : refIdxB

refIdxL1 = ( predListFlagA = = 0 ) ? refIdxB : refIdxA

mvL0[ 0 ] = ( predListFlagA = = 0 ) ? mvA[ 0 ] : mvB[ 0 ]

mvL0[ 1 ] = ( predListFlagA = = 0 ) ? mvA[ 1 ] : mvB[ 1 ]

mvL1[ 0 ] = ( predListFlagA = = 0 ) ? mvB[ 0 ] : mvA[ 0 ]

mvL1[ 1 ] = ( predListFlagA = = 0 ) ? mvB[ 1 ] : mvA[ 1 ]

Следующие назначения сделаны для x = 0..3 и y = 0..3:

MvL0[ ( xSbIdx << 2 ) + x ][ ( ySbIdx << 2 ) + y ] = mvL0

MvL1[ ( xSbIdx << 2 ) + x ][ ( ySbIdx << 2 ) + y ] = mvL1

MvDmvrL0[ ( xSbIdx << 2 ) + x ][ ( ySbIdx << 2 ) + y ] = mvL0

MvDmvrL1[ ( xSbIdx << 2 ) + x ][ ( ySbIdx << 2 ) + y ] = mvL1

RefIdxL0[ ( xSbIdx << 2 ) + x ][ ( ySbIdx << 2 ) + y ] = refIdxL0

RedIdxL1[ ( xSbIdx << 2 ) + x ][ ( ySbIdx << 2 ) + y ] = refIdxL1

PredFlagL0[ ( xSbIdx << 2 ) + x ][ ( ySbIdx << 2 ) + y ] = predFlagL0

PredFlagL1[ ( xSbIdx << 2 ) + x ][ ( ySbIdx << 2 ) + y ] = predFlagL1

BcwIdx[ ( xSbIdx << 2 ) + x ][ ( ySbIdx << 2 ) + y ] = 0

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

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

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

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

установку значения индекса подблока А в соответствии с заданной функцией или заданной таблицей.

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

Пример 3. Способ согласно примеру 1 или 2, в котором заданной функцией является:

partIdx = angleIdx >= threshold1 &&angleIdx <=threshold2 ? 1 : 0,

где AngleIdx – значение индекса угла для текущего блока кодирования, partIdx[AngleIdx] – значение индекса подблока A, threshold1 и threshold2 принимают целые значения, и threshold1 (например, значение threshold1 равно 13) меньше threshold2 (например, значение threshold2 равно 27).

Пример 4. Способ по любому из примеров 1-3, в котором заданная таблица представляет собой:

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

где AngleIdx – значение индекса угла для текущего блока кодирования, partIdx[AngleIdx] – значение индекса подблока A.

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

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

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

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

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

Пример 6. Способ согласно примеру 5, в котором установка двух значений индекса для двух подблоков в текущем блоке на основе значения расстояния выборки для заданной выборки содержит:

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

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

Пример 7. Способ согласно любому из примеров 1-6, в котором способ дополнительно содержит:

выбор значения или маски смешивания (например, Mask1 или Mask2) на основе значения индекса для подблока.

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

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

Пример 10. Декодер или кодер, содержащий:

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

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

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

Математические операторы, используемые в настоящей заявке, аналогичны тем, которые используются в языке программирования 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 равен значению "ИСТИНА" (TRUE) или не равен 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.

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

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

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

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

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

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

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

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

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

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

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

Log10(x) - десятичный логарифм x.

Round(x) = Sign(x) * Floor(Abs(x) + 0.5)

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(условие 0)
утверждение 0
else if(условие 1)
утверждение 1
...
else /* информативное замечание по оставшемуся условию */
утверждение n

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

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

– If условие 0, утверждение 0

– В противном случае, if условие 1, утверждение 1

– ...

– В противном случае (информативное замечание по оставшемуся условию), утверждение n

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

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

if(условие 0a && условие 0b)
утверждение 0
else if(условие 1a | | условие 1b)
утверждение 1
...
else
утверждение n

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

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

– Если все следующие условия верны, утверждение 0:

– условие 0a

– условие 0b

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

– условие 1a

– условие 1b

– ...

– В противном случае, утверждение n

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

if (условие 0)
утверждение 0
if (условие 1)
утверждение 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Хотя варианты осуществления, раскрытые в данном документе, были в основном описаны на основе кодирования видео, следует отметить, что варианты осуществления системы 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 или беспроводные технологии, такие как инфракрасные, радио- и микроволновые, включены в определение носителя информации. Однако следует понимать, что машиночитаемые носители информации и носители для хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, и вместо этого направлены на невременные, материальные носители информации. Используемые в данном документе термины "магнитный диск" и "оптический диск" включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий магнитный диск и Blu-ray диск, где магнитные диски, как правило, воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров, Комбинации вышеупомянутых носителей информации также должны быть включены в объем охраны машиночитаемых носителей информации.

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

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

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

название год авторы номер документа
ВЫЧИСЛЕНИЕ РАССТОЯНИЯ ДО ВЫБОРКИ ДЛЯ РЕЖИМА ГЕОМЕТРИЧЕСКОГО ДЕЛЕНИЯ 2020
  • Есенлик, Семих
  • Блазер, Макс
  • Гао, Хань
  • Чжао, Чжицзе
  • Котра, Ананд Мехер
  • Ван, Бяо
  • Альшина, Елена Александровна
RU2826830C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ РЕЖИМА СУББЛОЧНОГО РАЗДЕЛЕНИЯ 2020
  • Эсенлик, Семих
  • Блезер, Макс
  • Чжао, Чжицзе
  • Гао, Хань
  • Котра, Ананд Меер
  • Ван, Бяо
  • Алшина, Елена Александровна
RU2811983C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО 2020
  • Чэнь Лиэнь-Фэй
  • Ли Сян
  • Ли Гуйчунь
  • Лю Шань
RU2801587C1
СПОСОБ И УСТРОЙСТВО СОГЛАСОВАНИЯ ВЗВЕШЕННОГО ПРЕДСКАЗАНИЯ С НЕПРЯМОУГОЛЬНЫМИ РЕЖИМАМИ СЛИЯНИЯ 2021
  • Филиппов, Алексей Константинович
  • Чэнь, Хуаньбан
  • Руфицкий, Василий Алексеевич
  • Ян, Хайтао
  • Алшина, Елена Александровна
RU2821011C1
СПОСОБ И УСТРОЙСТВО ДЛЯ ХРАНЕНИЯ ИНФОРМАЦИИ О ДВИЖЕНИИ 2023
  • Гао, Хань
  • Эсенлик, Семих
  • Алшина, Елена Александровна
  • Ван, Бяо
  • Котра, Ананд, Мехер
RU2815734C1
СПОСОБ И УСТРОЙСТВО ДЛЯ ХРАНЕНИЯ ИНФОРМАЦИИ О ДВИЖЕНИИ 2019
  • Гао, Хань
  • Эсенлик, Семих
  • Алшина, Елена Александровна
  • Ван, Бяо
  • Котра, Ананд, Меер
RU2793825C1
СПОСОБ И АППАРАТНЫЙ КОМПОНЕНТ СИГНАЛИЗАЦИИ ЧИСЛА КАНДИДАТОВ ДЛЯ РЕЖИМА СЛИЯНИЯ 2021
  • Филиппов, Алексей Константинович
  • Руфицкий, Василий Алексеевич
  • Алшина, Елена Александровна
RU2823267C1
ВЫВЕДЕНИЕ ВЕСА ВЫБОРКИ ЦВЕТНОСТИ ДЛЯ ГЕОМЕТРИЧЕСКОГО РЕЖИМА РАЗДЕЛЕНИЯ 2020
  • Эсенлик, Семих
  • Блезер, Макс
  • Чжао, Чжицзе
  • Гао, Хань
  • Котра, Ананд Меер
  • Ван, Бяо
  • Алшина, Елена Александровна
RU2814812C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ, КОТОРЫЕ ИСПОЛЬЗУЮТСЯ ДЛЯ ПРОЦЕССА ПРЕОБРАЗОВАНИЯ 2020
  • Гао, Хань
  • Есенлик, Семих
  • Ван, Бяо
  • Котра, Ананд Мехер
  • Чэнь, Цзяньлэ
RU2803063C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ПОЛУЧЕНИЯ ВНУТРИКАДРОВОГО РЕЖИМА ЦВЕТНОСТИ 2020
  • Ван, Бяо
  • Есенлик, Семих
  • Котра, Ананд Мехер
  • Гао, Хань
  • Альшина, Елена Александровна
RU2817389C2

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

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

Изобретение относится к области обработки изображений и, в частности, к геометрическому разделению. Технический результат заключается в улучшении технологии сжатия и распаковки, которые улучшают коэффициент сжатия практически без ущерба для качества изображения. Предложен способ декодирования, реализуемый устройством декодирования, причем способ содержит: получение значения индекса режима разделения для текущего блока кодирования; получение значения индекса angleIdx угла для текущего блока кодирования в соответствии со значением индекса режима разделения и таблицы, которая задает значение индекса angleIdx угла на основе значения индекса режима разделения; установку значения индекса partIdx в соответствии со значением индекса angleIdx угла; и декодирование текущего блока кодирования в соответствии со значением индекса partIdx. 4 н. и 6 з.п. ф-лы, 26 ил. 7 табл.

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

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

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

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

установку значения индекса partIdx в соответствии со значением индекса angleIdx угла, в котором значение индекса partIdx соответствует: partIdx = (angleIdx >= threshold1 &&angleIdx <=threshold2) ? 1 : 0, где threshold1 и threshold2 принимают целые значения, и threshold1 меньше threshold2, в котором threshold1 равен 13, и threshold2 равен 27; и

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

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

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

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

5. Видеодекодер, в котором декодер содержит:

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

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

блок установки, который выполнен с возможностью установки значения индекса partIdx в соответствии со значением индекса angleIdx угла, в котором значение индекса partIdx соответствует: partIdx = (angleIdx >= threshold1 &&angleIdx <=threshold2) ? 1 : 0, где threshold1 и threshold2 принимают целые значения, и threshold1 меньше threshold2, в котором threshold1 равно 13, и threshold2 равно 27; и

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

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

7. Декодер по п. 5 или 6, в котором значение индекса режима разделения используется для указания того, какой режим геометрического разделения используется для текущего блока кодирования.

8. Декодер по любому из пп. 5-7, в котором значение индекса angleIdx угла используется для геометрического разделения текущего блока кодирования.

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

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

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

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

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

US 2011200109 A1, 2011.08.18
US 2012106627 A1, 2012.05.03
HAN GAO et al, CE4: CE4-1.1, CE4-1.2 and CE4-1.14: Geometric Merge Mode (GEO), Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-P0068v1, 16th Meeting: Geneva, 1-11 October 2019, version 1 - date 2019-09-17
LI JINGYA et al, Non-CE4: Modifications of

RU 2 822 450 C1

Авторы

Гао, Хань

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

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

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

Ван, Бяо

Даты

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

2020-09-28Подача