КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ С ИСПОЛЬЗОВАНИЕМ КОМПАКТНОГО MV ХРАНИЛИЩА
ENCODER, DECODER AND CORRESPONDING METHODS USING A COMPACT MV STORAGE

Область техники, к которой относится изобретение
Варианты осуществления настоящего изобретения, в общем, относятся к области обработки изображений и, в частности, к технологии уменьшения объема памяти при сохранении информации вектора движения.
Уровень техники
Кодирование видео (кодирование и декодирование видео) используется в широком диапазоне приложений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через интернет и мобильные сети, в диалоговых настоящего изобретениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray диски, системы сбора и редактирования видеоконтента и в настоящего изобретениях видеокамер безопасности.
Объем видеоданных, необходимых для изображения даже относительно короткого видео, может быть значительным, что может привести к потерям данных при передаче в потоковом режиме или иным образом передаваемых по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные обычно сжимаются перед передачей по современным телекоммуникационным сетям. Размер видео также может оказывать значительное влияние на объем хранения данных в запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео перед передачей или хранением часто используют программное обеспечение и/или оборудование в источнике для кодирования видеоданных, тем самым, уменьшая количество данных, необходимых для представления цифровых видеоизображений. Затем сжатые данные принимаются в месте назначения устройством распаковки видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательно использовать улучшенные способы сжатия и распаковки, которые повысят степень сжатия с минимальными потерями в качестве изображения или без них.
Раскрытие сущности изобретения
Задачей настоящего изобретения является обеспечение решения технической задачи снижения объема памяти при хранении информации для получения временного предсказания вектора движения при сохранении представления вектора движения и точности в приемлемом диапазоне.
Данная техническая задача решается согласно изобретению, обеспечивая способ сжатия вектора движения, содержащий: получение временного вектора движения; определение сжатого вектора движения с использованием двоичного представления временного движения вектора, содержащее экспоненциальную часть и/или часть мантиссы, причем экспоненциальная часть содержит N битов, часть мантиссы содержит M бит, где N является неотрицательным целым числом и М является положительным целым числом; и выполнение временного предсказания вектора движения (TMVP) с использованием сжатого вектора движения.
В варианте осуществления для получения сжатого вектора движения может быть использован этап выполнения, по меньшей мере, одной операции битового сдвига на основании экспоненциальной части или части мантиссы временного вектора движения.
В другом варианте осуществления экспоненциальная часть может соответствовать наиболее значимому биту (битам) (MSB) двоичного представления, и часть мантиссы может соответствовать наименее значимому биту (битам) (LSB) двоичного представления; или экспоненциальная часть может соответствовать LSB двоичного представления, а часть мантиссы может соответствовать MSB двоичного представления.
Дополнительно, когда экспоненциальная часть соответствует MSB двоичного представления и часть мантиссы соответствует LSB двоичного представления, значение сжатого вектора движения может быть получено по следующим этапам: получение первого значения сдвига, применяя правый сдвиг на М битов к двоичному представлению; получение последнего М бита двоичного представления в качестве первого базового двоичного представления; и получение значения сжатого вектора движения, применяя левый сдвиг первого значения бита к первому базовому двоичному представлению.
Альтернативно, когда экспоненциальная часть соответствует LSB двоичного представления, и часть мантиссы соответствует MSB двоичного представления, значение компоненты вектора движения может быть получено следующими этапами: получение последнего N бита двоичного представления, в качестве второго значения сдвига; получение второго базового двоичного представления, применяя правый сдвиг N битов к двоичному представлению; и получение значения сжатого вектора движения, применяя левый сдвиг второго значения сдвига ко второму базовому двоичному представлению.
Согласно варианту осуществления, временной вектор движения может содержать горизонтальную компоненту вектора движения и вертикальную компоненту вектора движения.
Согласно другому варианту осуществления способ сжатия вектора движения может содержать: кодирование первого указателя, в котором первый указатель используется для указания, сжимается ли временной вектор движения в соответствии со способом сжатия вектора движения по настоящему изобретению.
Способ сжатия вектора движения может содержать определение значения N. Кроме того, определение значения N может содержать: кодирование значения N; или установку заданного значения в качестве значения N; или получение значения N на основании разрешения блока изображения, в котором блок изображения содержит изображение или набор плитки; или получение значения N на основании размера блок дерева кодирования (CTU) или блока кодирования (CU).
Более конкретно, получение значения N на основании разрешения блока изображения может содержать: установку значения N на 0, когда ширина блока изображения меньше, чем первое пороговое значение, и высота блока изображения меньше, чем первое пороговое значение; или кодирование второго указателя для представления значения N, когда ширина блока изображения меньше, чем второе пороговое значение и высота блока изображения меньше второго порогового значения; или кодирование третьего указателя для представления значения N.
Второй указатель может быть бинаризован на бит и третий указатель может быть бинаризован двумя битами.
В варианте осуществления первый указатель, второй указатель и/или третий указатель может быть включены в набор параметров последовательности (SPS), набор параметров изображения (PPS), заголовок сегмента или заголовок группы плитки в битовом потоке.
Вышеупомянутая техническая задача также решается изобретением посредством дополнительного обеспечения способа сжатия вектора движения, содержащего: получение временного вектора движения; определение экспоненциальной части или части мантиссы временного вектора движения; выполнение, по меньшей мере, одной операции битового сдвига на основании экспоненциальной части или части мантиссы временного вектора движения для получения сжатого вектора движения, причем экспоненциальная часть соответствует наименее значимому биту (LSB) сжатого вектора движения, а часть мантиссы соответствует на наиболее значимому биту (MSB) сжатого вектора движения; выполнение временного предсказания вектора движения (TMVP) с использованием сжатого вектора движения.
M-N-1
M-N-1
Вышеупомянутая техническая задача дополнительно решается изобретением в обеспечении способа кодирования на основании вектора движения, содержащего: кодирование первого флага; выполнение первого способа, когда первый флаг является первым значением; и выполнение второго способа, когда первый флаг представляет собой второе значение, причем первое значение отличается от второго значения, исходное значение первой компоненты вектора движения текущего блока изображений бинаризуется M битами, в котором первый способ содержит: применение сдвига вправо N бита к исходному значению, при этом (M-N) равно заданному значению, где N и M являются положительными целыми числами; установку исходного значения, сдвинутого вправо, в качестве значения хранения первой компоненты вектора движения; и кодирование последующего блока изображения на основании значения хранения; и в котором второй способ содержит: применение операции ограничения к исходному значению, в котором ограниченный компонент вектора движения, представленный ограниченным исходным значением, ограничен от -2и 2- 1; установку ограниченного исходного значения в качестве значения хранения первой компоненты вектора движения; и кодирование последующего блока изображения на основании значения хранения.
В варианте осуществления после установки исходного значения, сдвинутого вправо, в качестве значения хранения вектора движения в соответствии с первым способом может дополнительно содержать: применение сдвига влево N бит к значению хранения; в котором кодирование последующего блока изображения на основании значения хранения содержит: кодирование последующего блока изображения на основании значения хранения, сдвинутого влево.
Альтернативно, после установки ограниченного исходного значения в качестве значения хранения вектора движения в соответствии со вторым способом, способ может дополнительно содержать: определение значения восстановления первой компоненты вектора движения на основании значения хранения, в котором значение восстановления бинаризовано M битами, в котором последние (M-N) биты значения восстановления являются такими же, как значение хранения и, в котором каждый из первых N битов значения восстановления равен 0, когда значение хранения положительно, и каждый из первых N бит значения восстановления равны 1, когда значение хранения отрицательно; в котором кодирование последующего блока изображений на основании значения хранения содержит: кодирование последующего блока изображения на основании значения восстановления.
В варианте осуществления последующий блок изображений и текущий блок может быть в разных изображениях, и режим предсказания последующего блока изображения может содержать временное предсказание вектора движения (TMVP) и/или альтернативное временное предсказание вектора движения (ATMVP).
В другом варианте осуществления первый флаг может быть закодирован для каждого изображения; или первый флаг может быть закодирован для каждой плитки; или первый флаг может быть закодирован для каждого набора плитки; или первый флаг может быть закодирован для каждого сегмента.
В еще одном варианте осуществления первый флаг может быть включен в набор параметров последовательности (SPS), набор параметров изображения (PPS), заголовок сегмента или заголовок группы плиток в битовом потоке.
Согласно варианту осуществления текущий блок изображения может дополнительно иметь второй компонент вектора движения, и способ кодирования может дополнительно содержать: кодирование второго флага; в котором: первый способ может быть выполнен для второго компонента вектора движения, когда второй флаг является первым значением; и второй способ может быть выполнен для второго компонента вектора движения, когда второй флаг является вторым значением.
Согласно другому варианту осуществления, перед кодированием первого флага способ кодирования может дополнительно содержать: определение, если разрешение текущего изображения больше или равно первому заданному значению, и текущий блок изображения может быть в текущем изображении.
Кроме того, когда разрешение текущего изображения меньше первого заданного значения, может быть выполнен второй способ.
Более того, когда текущее изображение разделено на наборы плитки, может быть выполнен второй способ; или, когда разрешение набора плитки меньше, чем второе заданное значение, может быть выполнен второй способ.
Согласно варианту осуществления перед кодированием первого флага способ кодирования может дополнительно содержать: определение, если размер блока дерева кодирования (CTU), блока кодирования (CU), блока изображения или блока текущего блока изображения удовлетворяет первому условию размера.
Дополнительно, если размер CTU, CU, блока изображения или блока текущего блока изображения удовлетворяет второму условию размера, может быть выполнен первый способ; или, если размер CTU, CU, блока изображения или блока текущего блока изображения удовлетворяет третьему условию размера, может быть выполнен второй способ.
M-N-1
M-N-1
Изобретение также предлагает способ кодирования на основании вектора движения, содержащий: определение размера CTU, CU, блока изображения или блока текущего блока изображения; и выполнение, по меньшей мере, одного из первого способа и второго способа на основании размера, или определение разрешения текущего изображения; и выполнение, по меньшей мере, одного из первого способа и второго способа на основании разрешения, в котором исходное значение первой компоненты вектора движения текущего блока изображения бинаризовано M битами, в котором первый способ содержит: применение сдвига вправо N бит к исходному значению, в котором (M-N) равно заданному значению, и в котором N и M являются положительными целыми числами; установку исходного значения, сдвинутого вправо, в качестве значения хранения первой компоненты вектора движения; и кодирование последующего блока изображения на основании значения хранения; и, в котором второй способ содержит: применение операции ограничения к исходному значению, в котором ограниченный компонент вектора движения, представленный ограниченным исходным значением, ограничен от -2и 2- 1; установку ограниченного исходного значения в качестве значения хранения первой компоненты вектора движения; и кодирование последующего блока изображения на основании значения хранения.
Вышеупомянутая техническая задача также решается с помощью постоянного машиночитаемого носителя, хранящего программы для выполнения схемой обработки, в котором программы, при выполнении схемой обработки, конфигурируют схему обработки выполнять любой из описанных выше способов.
Вышеупомянутая техническая задача также решается декодером, содержащим схему, выполненную с возможностью выполнять любой из способов, описанных выше.
Вышеупомянутая техническая задача также решается кодером, содержащим схему, выполненную с возможностью выполнять любой из описанных выше способов.
Кодирование, описанное выше, может быть кодированием или декодированием.
Дополнительные признаки и преимущества настоящего изобретения будут описаны со ссылкой на чертежи. В описании сделана ссылка на прилагаемые чертежи, которые предназначены для иллюстрации предпочтительных вариантов осуществления изобретения. Понятно, что такие варианты осуществления не представляют полный объем изобретения.
Краткое описание чертежей
Далее приведено более подробное описание вариантов осуществления настоящего изобретения со ссылкой на прилагаемые чертежи, на которых:
фиг. 1А является блок-схемой, показывающей пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления настоящего изобретения;
фиг. 1B является блок-схемой, показывающей другой пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления настоящего изобретения;
фиг. 2 представляет собой блок-схему, показывающую пример кодера видео, выполненного с возможностью реализации вариантов осуществления настоящего изобретения;
фиг. 3 представляет собой блок-схему, показывающую примерную структуру кодера видео, выполненного с возможностью реализации вариантов осуществления настоящего изобретения;
фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;
фиг. 5 является блок-схемой, иллюстрирующая другой пример устройства кодирования или устройства декодирования;
фиг. 6 является блок-схемой, показывающая пример реализации варианта осуществления настоящего изобретения;
фиг. 7 является блок-схемой, показывающей пример другой реализации варианта осуществления настоящего изобретения;
фиг. 8 является блок-схемой, показывающая пример другой реализации варианта осуществления настоящего изобретения;
фиг. 9 является блок-схемой, показывающая пример другой реализации варианта осуществления настоящего изобретения; и
фиг. 10 представляет собой блок-схему алгоритма, показывающую способ сжатия вектора движения согласно изобретению.
В описании идентичные ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным признакам, если явно не указано иначе.
Осуществление изобретения
В нижеследующем описании приведена ссылка на сопроводительные чертежи, которые составляют часть настоящего изобретения и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых могут использоваться варианты осуществления настоящего изобретения. Очевидно, что варианты осуществления изобретения могут использоваться в других аспектах и содержать структурные или логические изменения, не изображенные на чертежах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, очевидно, что настоящее изобретение в связи с описанным способом также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнять способ, и наоборот. Например, если описан один или более конкретных этапов способа, соответствующее устройство может включать в себя один или более блоков, например, функциональные блоки, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов) даже, если такой один или более блоков не описаны и не проиллюстрированы явно на чертежах. С другой стороны, например, если конкретное устройство описано на основании одного или множества блоков, например, функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множество блоков) даже, если такой один или множество этапов явно не описаны или не проиллюстрированы на чертежах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» можно использовать термин «кадр» или «изображение» как синонимы в области кодирования видео. Кодирование видео, используемое в настоящем изобретении (или настоящем раскрытии), указывает либо кодирование видео, либо декодирование видео. Кодирование видео выполняется на стороне источника, обычно, содержащее обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, необходимых для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне назначения и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом, как будет объяснено позже), следует понимать как относящиеся либо к «кодированию», либо к «декодированию» видеопоследовательности. Комбинация части кодирования и части декодирования также называется CODEC (Coding and Decoding).
В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, то есть восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, посредством квантования, для уменьшения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, то есть качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов кодирования видео принадлежат к группе «гибридных видеокодеков с потерями» (т.е. объединяют пространственное и временное предсказания в области выборки и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например, с использованием пространственного (внутреннее изображение) предсказания и временного (внешнее изображение) предсказания для генерирования блока предсказания, вычитание блока предсказания из текущего блока (блока, который в настоящее время обрабатывается/должен быть обработан) для получения остаточного блока, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжаты), тогда как в декодере частично выполняется обратная обработка по сравнению с кодером к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, внутреннее и внешнее предсказание) и/или повторно восстанавливать для обработки, то есть кодировать, последующие блоки.
В следующих вариантах осуществления со ссылкой на фиг. 1-3 приведено описание кодера 20 видео, декодера 30 видео и системы 10 кодирования.
Фиг. 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 может быть реализован посредством схемы обработки, как показано на фиг. 1В, таких как один или более микропроцессоров, процессоров цифровых сигналов (DSPs), специальные интегральные схемы (ASICs), программируемые пользователем вентильные матрицы (FPGAs), дискретная логика, оборудование или любые их комбинации. Кодер 20 может быть реализован схемой 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 на фиг. 2 и/или любой другой кодирующей системе или подсистеме, описанной в данном документе. Декодер 30 может быть реализован схемой 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в данном документе. Схема обработки может быть выполнена с возможностью выполнять различные операции, как описано ниже. Как показано на фиг. 5, если способы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем постоянном машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения способов настоящего изобретения. Любой из кодера 20 видео и кодера 30 видео может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в одном устройстве, например, как показано на фиг. 1B.
Устройство 12 источника и устройство 14 назначения могут содержать любое из широкого диапазона устройств, включающие в себя любые виды портативных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые приставки, устройства потокового видео (например, серверы служб контента или контент серверы доставки), широковещательное приемное устройство, широковещательное передающее устройство и т.п. и могут использовать любой тип операционной системы. В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть выполнены с возможностью осуществлять беспроводную связь. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.
В некоторых случаях система 10 кодирования видео, проиллюстрированная на фиг. 1A, является просто примером, и способы настоящего изобретения могут применяться к настройкам кодирования видео (например, кодирование видео или декодирование видео), которые не обязательно включают в себя какой-либо обмен данными между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются по сети и т.п. Устройство для кодирования видео может кодировать и сохранять данные в памяти, и/или устройство для декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в памяти и/или извлекают и декодируют данные из памяти.
Для удобства описания в настоящем документе описаны варианты осуществления изобретения, например, со ссылкой на высокоэффективное кодирование видео (HEVC) или на эталонное программное обеспечение универсального кодирования видео (VVC), стандарта кодирования видео следующего поколения, разработанного группой сотрудничества по кодированию видео (JCT-VC) группы экспертов ITU-T по кодированию видео (VCEG) и ISO/IEC группой экспертов по движущимся изображениям (MPEG). Для специалиста в данной области техники очевидно, что варианты осуществления изобретения не ограничиваются HEVC или VVC.
Кодер и способ кодирования
Фиг. 2 показывает схематическую блок-схему примерного кодера 20 видео, который выполнен с возможностью реализации способов настоящего изобретения. В примере на фиг. 2, кодер 20 видео содержит вход 201 (например, входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 декодированных изображений (DPB), блок 260 выбора режима, блок 270 энтропийного кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разделения. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Кодер 20 видео, показанный на фиг. 2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.
Например, блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима образуют прямой путь сигнала кодера 20, тогда как, например, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 244 внешнего предсказания и блок 254 внутреннего предсказания образуют обратный путь сигнала кодера 20 видео, в котором обратный путь сигнала кодера 20 видео соответствует тракту сигнала декодера (см. декодер 30 на фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию «встроенного декодера» кодера 20 видео.
Изображения & разделение изображения (изображения & блоки)
Кодер 20 выполнен с возможностью принимать, например, через вход 201 изображение 17 (или данные 17 изображения), например, изображение последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения могут также представлять собой предварительно обработанное изображение 19 (или предварительно обработанные данные 19 изображения). С целью упрощения, в последующем описании упоминается изображение 17. Изображение 17 также может относиться к текущему изображению или изображению, подлежащему кодированию (в частности, при кодировании видео для различия текущего изображения от других изображений, например, ранее кодированным и/или декодированным изображениям той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).
(Цифровое) изображение представляет собой или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может называться пикселем (сокращенная форма элемента изображения) или пикселем. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, то есть изображение может быть представлено или содержать три массива выборок. В формате 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, такие как преобразования, указанные для HEVC/H.265. По сравнению с ортогональным преобразованием DCT, такие целочисленные приближения обычно масштабируются с определенным коэффициентом. Для сохранения нормы остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования. Коэффициенты масштабирования обычно выбираются на основании определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью два для операции сдвига, разрядности коэффициентов преобразования, компромисса между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, указываются для обратного преобразования, например, блоком 212 обработки обратного преобразования (и соответствует обратному преобразованию, например, блоком 312 обработки обратного преобразования в декодере 30 видео) и могут быть определены соответствующие коэффициенты масштабирования для прямого преобразования, например, блоком 206 обработки преобразования в кодере 20.
Варианты осуществления кодера 20 видео (соответственно блока 206 обработки преобразования) могут быть выполнены с возможностью выводить параметры преобразования, например, тип преобразования, например, непосредственно или закодированные или сжатые блоком 270 энтропийного кодирования, так что, например, декодер 30 видео может принимать и использовать параметры преобразования для декодирования.
Квантование
Блок 208 квантования выполнен с возможностью квантовать коэффициенты 207 преобразования для получения квантованных коэффициентов 209 преобразования, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 преобразования также могут упоминаться как квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры этапов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заранее определенного набора применимых размеров шага квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малые размеры этапов квантования), и большие параметры квантования могут соответствовать грубому квантованию (большие размеры шага квантования) или наоборот. Квантование может содержать в себя деление по размеру шага квантования и соответствующее или обратное деквантование, например, посредством блока 210 обратного квантования, может содержать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, например HEVC может быть выполнен с возможностью использовать параметр квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен на основании параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования для восстановления нормы остаточного блока, который может быть изменен из-за масштабирования, используемого при аппроксимации с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантования могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования и сигнализироваться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шага квантования.
Варианты осуществления кодера 20 видео (соответственно, блок 208 квантования) могут быть выполнены с возможностью выводить параметры квантования (QP), например, непосредственно или закодированы блоком 270 энтропийного кодирования, так что, например, декодер 30 видео может принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применять обратное квантование блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования, применяемой блоком 208 квантования, на основании или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут называться деквантованными остаточными коэффициентами 211 и соответствовать, хотя обычно не идентичны коэффициентам преобразования из-за потерь при квантовании, коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обработки обратного преобразования выполнен с возможностью применять обратное преобразование, применяемое блоком 206 обработки преобразования, например, обратное дискретное косинусное преобразование (DCT) или обратное дискретное синусоидальное преобразование (DST) для получения блока 213 обратного преобразования в области выборки. Блок 213 обратного преобразования также может называться деквантованным блоком 213 обратного преобразования или остаточным блоком 213 обратного преобразования.
Восстановление
Блок 214 восстановления (например, сумматор 214) выполнен с возможностью добавлять блок 213 обратного преобразования (то есть восстановленный остаточный блок 213) к блоку 265 предсказания для получения восстановленного блока 215 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или коротко, «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215 для получения отфильтрованного блока 221, или, как правило, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра выполнен с возможностью сглаживать переходы пикселей или иным образом повышать качество видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр деблокинга, фильтр с адаптивным смещением (SAO) или другие фильтры, например двусторонний фильтр или адаптивный контурный фильтр (ALF), или фильтры повышения резкости или сглаживания, или коллаборативные фильтры. Хотя блок 220 контурного фильтра показан на фиг. 2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может упоминаться как фильтрованный восстановленный блок 221.
Варианты осуществления кодера 20 видео (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью выводить параметры контурного фильтра (такие как информация смещения адаптивной выборки), например, непосредственно или закодированы посредством блока 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированных изображений
Буфер 230 декодированных изображений (DPB) может быть памятью опорных изображений, в которой хранятся данные опорных изображений для использования при кодировании видеоданных кодером 20 видео. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память произвольного доступа (DRAM), включающая в себя синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы запоминающих устройств. Буфер 230 декодированных изображений (DPB) выполнен с возможностью хранить фильтрованный блок 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью хранить другие ранее отфильтрованные блоки, например, ранее восстановленные и отфильтрованные блоки 221 одного и того же текущего изображения или разных изображений, например, ранее восстановленные изображения и могут предоставлять полные ранее реконструированные, то есть декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. Буфер 230 декодированного изображения (DPB) выполнен с возможностью хранить один или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованные восстановленные выборки, например, если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра или любой другой дополнительно обработанной версией восстановленных блоков или выборок.
Выбор режима (разделение & предсказание)
Блок 260 выбора режима содержит блок 262 разделения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и выполнен с возможностью принимать или получать данные исходного изображения, например, исходный блок 203 (текущий блок 203 текущего изображения 17) и данные восстановленного изображения, например, отфильтрованные и/или неотфильтрованные восстановленные выборки того же (текущего) изображения и/или из одного или множества ранее декодированных изображений, например, из буфера 230 декодированных изображений или других буферов (например, линейный буфер, не показан). Данные восстановленного изображения используются в качестве опорного изображения для предсказания, например, внешнего предсказания или внутреннего предсказания, для получения блока 265 предсказания или предиктора 265.
Блок 260 выбора режима может быть выполнен с возможностью определять или выбирать разделение для режима предсказания текущего блока (включающее в себя отсутствие разделения) и режима предсказания (например, режим внутреннего или внешнего предсказания) и генерировать соответствующий блок 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбирать разделение и режим предсказания (например, из тех, которые поддерживаются или доступны для блока 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или уравновешивает оба. Блок 260 выбора режима может быть выполнен с возможностью определять режим разделения и предсказания на основании оптимизации искажения скорости (RDO), то есть выбирать режим предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как «лучший», «минимум», «оптимальный» и т.д. в этом контексте не обязательно относятся к общему «лучшему», «минимуму», «оптимальному» и т.д., но также могут относиться к выполнению прекращения или критерий выбора, такой как значение, превышающее или падающее ниже порогового значения, или другие ограничения, потенциально ведущие к «неоптимальному выбору», но уменьшающие сложность и время обработки.
Другими словами, блок 262 разделения может быть выполнен с возможностью разделять блок 203 на более мелкие блочные разделы или субблоки (которые снова образуют блоки), например, итеративно с использованием разделения дерева квадрантов (QT), двоичного разделения (BT) или троичного дерева (TT) или любой их комбинации и для выполнения, например, предсказания для каждого из разделов блоков или субблоков, в котором выбор режима содержит выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разделов или субблоков блока.
Далее более подробно поясняется процесс разделения (например, блоком 260 разделения) и обработка предсказания (блоком 244 внешнего предсказания и блоком 254 внутреннего предсказания), выполняемые примерным кодером 20 видео.
Разделение
Блок 262 разделения может быть выполнен с возможностью разделять (или разбивать) текущий блок 203 на меньшие разделы, например, блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут называться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например, на корневом уровне 0 дерева (уровень 0 иерархии, глубина 0) может быть рекурсивно разделен, например, разделен на два или более блока следующего более низкого уровня дерева, например, узлы на уровне 1 дерева (уровень 1 иерархии, глубина 1), в котором эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровень 2 дерева (уровень 2 иерархии, глубина 2) и т.д., пока не будет завершено разделение, например, при выполнении критерия прекращения, например, достигается максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется тройным деревом (TT) и дерево, использующее разделение на четыре раздела, называется деревом квадрантов (QT).
Как уже упоминалось ранее, термин «блок», используемый в данном документе, может быть частью, в частности, в квадратной или прямоугольной части, изображения. Со ссылкой, например, на HEVC и VVC, блок может быть или соответствовать блоку дерева кодирования (CTU), блоку кодирования (CU), блоку предсказания (PU) и блоку преобразования (TU) и/или соответствующим блокам, например, блок дерева кодирования (CTB), блок кодирования (CB), блок преобразования (TB) или блок предсказания (PB).
Например, блок дерева кодирования (CTU) может содержать CTB выборок яркости, две соответствующие CTBs выборки цветности изображения, которые имеет три массива выборок или CTB выборок монохромного изображения или изображения, которое кодировано, используя три отдельные цветные плоскости и синтаксические структуры, используемые для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может представлять собой блок NхN выборок для некоторого значения N, так что разделение компонента на CTBs является разделением. Блок кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которые имеют три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодировано с использованием трех отдельных цветных плоскостей и синтаксических структур, используемые для кодирования выборок. Соответственно, блок кодирования (CB) может представлять собой блок MхN выборок для некоторых значений M и N, так что разделение CTB на блоки кодирования представляет собой разделение.
В вариантах осуществления, например, в соответствии с HEVC, блок дерева кодирования (CTU) может быть разделен на CUs с использованием структуры дерева квадрантов, обозначенной как дерево кодирования. Решение о том, кодировать ли область изображения с использованием внешнего (временного) или внутреннего (пространственного) предсказания, принимается на CU уровне. Каждый CU может быть дополнительно разделен на один, два или четыре PUs в соответствии с типом разделения PU. Внутри одного PU применяется тот же процесс предсказания, и соответствующая информация передается в декодер на основании PU. После получения остаточного блока путем применения процесса предсказания на основании типа разделения PU, CU может быть разделен на блоки преобразования (TUs) в соответствии с другой структурой дерева квадрантов, аналогичной дереву кодирования для CU.
В вариантах осуществления, например, в соответствии с последним разрабатываемым в настоящее время стандартом кодирования видео, который называется универсальным кодированием видео (VVC), для разделения блока кодирования используется двоичное разделение и разделение дерева квадрантов (QTBT). В QTBT структуре блока CU может иметь квадратную или прямоугольную форму. Например, блок дерева кодирования (CTU) сначала распределяется структурой дерева квадрантов. Листовые узлы дерева квадрантов дополнительно распределяются структурой двоичного дерева или троичного (или тройного) древа. Листовые узлы дерева разделения называются блоками кодирования (CUs), и эта сегментация используется для процесса обработки предсказания и преобразования без какого-либо дополнительного разделения. Это означает, что CU, PU и TU имеют один и тот же размер блока в QTBT структуре блока кодирования. Параллельно, совместно со QTBT структурой блока кодирования также была предложена технология множественного разделения, например, разделение троичного дерева.
В одном примере блок 260 выбора режима кодера 20 видео может быть выполнен с возможностью выполнять любую комбинацию способов разделения, описанных в данном документе.
Как описано выше, кодер 20 выполнен с возможностью определять или выбирать наилучший или оптимальный режима предсказания из набора (предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.
Внутреннее предсказание
Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или усреднение) и планарный режим, или направленные режимы, например, как определено в H.265, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или усредненный) и планарный режим, или направленные режимы, например, как определено для VVC. Блок 254 внутреннего предсказания выполнен с возможностью использовать восстановленные выборки соседних блоков одного и того же текущего изображения для генерирования блока 265 внутреннего предсказания согласно режиму внутреннего предсказания набора режимов внутреннего предсказания.
Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью выводить параметры внутреннего предсказания (или, в общем, информацию, указывающую выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме элементов 266 синтаксиса для включения в данные 21 кодированного изображения, чтобы, например, декодер 30 видео мог принимать и использовать параметры предсказания для декодирования.
Внешнее предсказание
Набор (или возможные) режимов внешнего предсказания зависит от доступных опорных изображений (то есть предшествующих, по меньшей мере, частично декодированных изображений, например, сохраненных в DBP 230) и других параметров внешнего предсказания, например будь то опорное изображение целиком или только его часть, например, окно поиска области вокруг области текущего блока, опорного кадра используется для поиска наилучшего соответствия опорного блока и/или, например, применяется ли интерполяция пикселей, например, интерполяция пол/полупикселя, четверти пикселя, или нет.
В дополнение к вышеупомянутым режимам предсказания может применяться режим пропуска и/или прямой режим.
Блок 244 внешнего предсказания может содержать в себя блок оценки движения (ME) (не показан на фиг. 2) и блок компенсации движения (MC) (не показан на фиг. 2). Блок оценки движения выполнен с возможностью принимать или получать блок 203 изображения (блок 203 текущего изображения текущего изображения 17) и декодированного изображения 231 или, по меньшей мере, одного или множества ранее восстановленных блоков, например, восстановленные блоки одного или множества других/различных ранее декодированных изображений 231 для оценки движения. Например. видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбирать опорный блок из множества опорных блоков одинаковых или различных изображений из множества других изображений и предоставляет опорное изображение (или индекс опорного изображения) и/или смещение (пространственное смещение) между положением (X, Y) координатами опорного блока и положением текущего блока в качестве параметров внешнего предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).
Блок компенсации движения выполнен с возможностью получать, например, принимать параметр внешнего предсказания и выполнять внешнее предсказание на основании или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может содержать выборку или генерирование блока предсказания на основании вектора движения/блока, определяемого оценкой движения, возможно выполнение интерполяции до субпиксельной точности. Интерполяционная фильтрация может генерировать дополнительные выборки пикселей из известных выборок пикселей, таким образом потенциально увеличивая количество кандидатов блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений.
Блок компенсации движения может также генерировать элементы синтаксиса, ассоциированные с блоками и сегментом видео для использования декором 30 видео при декодировании блоков изображения сегмента видео.
Энтропийное кодирование
Блок 270 энтропийного кодирования выполнен с возможностью применять алгоритм или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), контекстно-адаптивной схемы VLC (CALVC), схемы арифметического кодирования, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с интервалом вероятности (PIPE) или другие технологии или способы энтропийного кодирования) к квантованным остаточным коэффициентам 209, параметрам внешнего предсказания, параметрам внутреннего предсказания и/или параметрам контурного фильтра, индивидуально или совместно (или не полностью) для получения данных 21 закодированного изображения, которые могут выводиться выходом 272, например, в форме кодированного битового потока 21, так что декодер 30 видео может принимать и использовать параметры для декодирования. Битовый поток 21 может быть передан в декодер 30 видео или сохранен в памяти для последующей передачи или извлечения декором 30 видео.
Для кодирования видеопотока могут использоваться другие структурные вариации кодера 20 видео. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
На фиг. 3 показан пример декодера 30 видео, который выполнен с возможностью реализации способов настоящего изобретения. Декодер 30 видео выполнен с возможностью принимать данные 21 кодированного изображения (например, кодированного битового потока 21), например, кодируемые кодером 20, для получения декодированного изображения 131. Данные кодированного изображения или битовый поток содержит информацию для декодирования данных кодированного изображения, например, данные, которые представляют блоки изображения кодированного сегмента видео и ассоциированные элементы синтаксиса.
В примере на фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 декодированных изображений (DBP) и блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может включать в себя блок компенсации движения. Декодер 30 видео может, в некоторых примерах, выполнять процесс декодирования, в целом, обратный этапу кодирования, описанный применительно к кодеру 100 на фиг. 2.
Как объяснялось в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 344 внешнего предсказания и блок 354 внутреннего предсказания также называется формированием «встроенного декодера» кодера 20 видео. Соответственно, блок 310 обратного квантования может быть идентичен по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичным по функциям блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функциям блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функциям контурному фильтру 220 и буфер 330 декодированных изображений может быть идентичен по функциям буферу 230 декодированных изображений. Следовательно, пояснения, предоставленные для соответствующих блоков и функций кодера 20 видео, применяются соответственно к соответствующим блокам и функциям декодера 30 видео.
Энтропийное декодирование
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, данных 21 закодированного изображения) и выполнять, например, энтропийное декодирование данных 21 кодированного изображения для получения, например, квантованных коэффициентов 309 и/или параметров декодированного кодирования (не показано на фиг. 3), например, любой или все из параметров внешнего предсказания (например, опорный индекс изображения и вектор движения), параметров внутреннего предсказания (например, режим внутреннего предсказания или индекс), параметров преобразования, параметров квантования, параметров контурного фильтра и/или других элементов синтаксиса. Блок 304 энтропийного декодирования может быть выполнен с возможностью применять алгоритмы или схемы декодирования, соответствующие схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставлять параметры внешнего предсказания, параметр внутреннего предсказания и/или другие элементы синтаксиса в блок 360 выбора режима и другие параметры в другие блоки декодера 30. Декодер 30 видео может принимать элементы синтаксиса на уровне сегмента видео и/или уровне видеоблока.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью принимать параметры квантования (QP) (или, в общем, информацию, относящуюся к обратному квантованию) и квантованные коэффициенты из данных 21 кодированного изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применять на основании параметров квантования обратное квантование к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного кодером 20 видео для каждого видеоблока в сегменте видео для определения степени квантования и аналогичным образом, степень обратного квантования, которое следует применять.
Обратное преобразование
Блок 312 обработки обратного преобразования может быть выполнен с возможностью принимать деквантованные коэффициенты 311, также называемые коэффициентами 311 преобразования и применять преобразования к деквантованным коэффициентам 311 для получения восстановленных остаточных блоков 213 в области выборки. Восстановленные остаточные блоки 213 также могут называться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью принимать параметры преобразования или соответствующую информацию из данных 21 закодированного изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) для определения преобразования, которое должно применяться к деквантованным коэффициентам 311.
Восстановление
Блок 314 восстановления (например, сумматор 314) выполнен с возможностью добавлять восстановленный остаточный блок 313 к блоку 365 предсказания для получения восстановленного блока 315 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр деблокинга, фильтр с адаптивным смещением (SAO) или один или более других фильтров, например, двухсторонний фильтр, адаптивный контурный фильтр (ALF), фильтр сглаживания или коллаборативные фильтры или любую их комбинацию. Хотя на фиг. 3 показан блок 320 контурного фильтра как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Буфер 330 декодированных изображений
В последствии, декодированные видеоблоки 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 результат обработки текущего этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после интерполяционной фильтрации, вывода вектора движения или контурной фильтрации может выполняться дополнительная операция, такая как ограничение или сдвиг, над результатом обработки интерполяционной фильтрации, вывода вектора движения или контурной фильтрации.
Следует отметить, что дополнительные операции могут быть применены к полученным векторам движения текущего блока (включающие в себя, но не ограничивающие векторы движения контрольной точки аффинного режима, векторы движения субблока в аффинном, планарном, ATMVP режимах, временных векторов движения и т.п.). Например, значение вектора движения ограничивается заданным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является BitDepth, то диапазон составляет -2 ^ (BitDepth-1) ~ 2 ^ (BitDepth-1)-1, где «^» означает возведение в степень. Например, если BitDepth установлен равный 16, диапазон составляет -32768 ~ 32767; если BitDepth установлен равным 18, диапазон составляет -131072 ~ 131071. Настоящее изобретение рассматривает два способа для ограничения вектора движения.
Способ 1. Устранить переполнение MSB (наиболее значимый бит) посредством следующих операций:
bitdepth
bitdepth
ux = (mvx + 2)% 2 … (1)
bittepth-1
bittepth
mvx = (ux> = 2)? (ux - 2): ux … (2)
bitdepth
bitdepth
uy = (mvy + 2)% 2 … (3)
bittepth-1
bittepth
mvy = (uy> = 2)? (UY - 2): uy … (4)
Например, если значение mvx составляет -32769, после применения формулы (1) и (2), полученное значение составляет 32767. В компьютерной системе десятичные числа хранятся в двухкомпонентной форме. Двухкомпонентная форма -32769 представляет собой 1, 0111,1111, 1111, 1111 (17 битов), то MSB отбрасывается, поэтому полученная двухкомпонентная форма представляет собой 0111, 1111, 1111, 1111 (десятичное число равно 32767), что такое же в качестве вывода путем применения формулы (1) и (2).
bitdepth
bitdepth
ux = (mvpx + mvdx + 2)% 2… (5)
bittepth-1
bittepth
mvx = (ux> = 2)? (ux - 2): ux … (6)
bitdepth
bitdepth
uy = (mvpy + mvdy + 2)% 2 … (7)
bittepth-1
bittepth
mvy = (uy> = 2)? (uy - 2): uy … (8)
Операции могут быть применены в пределах суммы mvp и mvd, как показано в формуле (5) до (8).
Способ 2. Устранить переполнение MSB путем ограничения значения:
bittdepth-1
bittdepth-1
vx = Clip3 (-2, 2 -1, vx)
bittdepth-1
bittdepth-1
vy = Сlip3 (-2, 2-1, vy),
где определение функции Сlip3 представляет собой следующее:
Clip3( x, y, z ) =
<img file="00000001.jpg" he="16" wi="30" img-content="undefined" img-format="jpg" />
Фиг. 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, ядер (например, как многоядерный процессор), FPGAs, ASICs и DSPs. Процессор 430 соединен с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Таким образом, использование блока 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 кодирования видео и обеспечивает преобразование устройства 400 кодирования видео в другое состояние. В качестве альтернативы модуль 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.
Память 460 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных с переполнением, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 460 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянную память (ROM), оперативную память (RAM), троичную память с адресацией по содержимому (TCAM) и/или статическую память с произвольным доступом (SRAM).
Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства 310 источника и устройства 320 назначения по фиг. 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 может быть реализовано в широком спектре конфигураций.
Точность MV, полученного путем расчета промежуточных значений векторов движения в аффинном предсказании увеличивается с ¼ в длины пикселей до 1/16. Это увеличение точности вызывает увеличение емкости хранения памяти для поля вектора движения до 18 бит на компонент вектора движения. Во время разработки видеокодека каждый MV хранился с гранулярностью 4x4 пикселей. Позднее было сделано несколько попыток уменьшить объем памяти для хранения информации вектора движения. Было принято одно из предложений о снижении гранулярности до размера 8x8 сетки. В [JVET-L0168] была предпринята еще одна попытка уменьшить точность MV (для хранения временного MV или локального линейного буфера или оба) путем простого удаления MSB (наиболее значимых битов) из значений компонентов вектора движения, что приводит к сокращению диапазона представления MV, которое может снизить эффективность предсказания и сжатия большого размера изобретения и видео 360°. Такое 16-битное представление точности вектора движения недостаточно для кодирования видео 8К или более высокого разрешения. Два других решения предлагают удалить LSB из компонентов MV как для горизонтального, так и вертикального направления, и была предпринята попытка удалить MSB/LSB адаптивно с помощью дополнительного 1 бита для сигнализации.
Задачей настоящего изобретения является обеспечение решения/способа и устройства, которое может снизить объем памяти при хранении информации для получения вектора движения временного предсказания при сохранении представления вектора движения и точности в допустимом диапазоне. Сохранение точности в допустимом диапазоне подразумевает некоторое уменьшение точности, что приводит к некоторому искажению представления. Следовательно, результатом преобразования в представлении с плавающей точкой является искаженное/квантованное/округленное значение MV.
Доступные в настоящее время решения применяют 18-битные значения каждого компонента MV для хранения с опорным кадром (фиг. 6, верх). Это приводит к увеличению памяти для хранения MVs на 12,5% для HW и на 100% для SW. Настоящее изобретение предлагается использовать 16-битные двоичное представление с плавающей точкой значений компонентов MV для хранения в пределах опорного кадра вместо 18 бит. Однако 16-битные двоичное представление с плавающей точкой является примером и изобретение также включает в себя представления с менее чем 16 бит (например, 10-битное представление). Более того, для варианта 1 осуществления, где MSB используются в качестве экспонентной части плавающего числа, в обработке кодека отсутствуют изменения в отношении текущего решения при малом разрешении изображения.
Основная концепция настоящего изобретения представляет собой 16-битное двоичное представление с плавающей точкой значений компонентов MV для хранения в пределах опорного кадра вместо 18 бит.
Для снижения объема памяти для хранения временных MVs поддерживается представление MV и точность в приемлемом диапазоне.
Для решения вышеуказанных задач предлагаются следующие изобретательские аспекты, каждый из которых может применяться индивидуально, и некоторые из них могут применяться в комбинации:
1. Использовать двоичное представление с плавающей точкой MV компонентов
Способ A. Экспонентная часть может иметь 3 бита, что позволяет иметь разную точность представления MV из 1/16 (для MV длины до 256 пикселей) до 8 пикселей (для MV длины до 32K)
Способ B. Другая возможная реализация обеспечивает 2 бита для экспонентной части, которая уменьшает максимальную MV длину бит до 512 (для точности MV 1/16) и до 8К пикселей (для MV точности равной 1 пикселю)
2. Двоичное представление с плавающей точкой может быть представлена в двух возможных реализациях (в примерах используются для экспоненты 3 бита)
Способ A. Экспонентные биты в MSB значения компонента MV фиг. 6. Со следующими этапами восстановления MV (например, для X компоненты)
i. shift = MVx >> 13
ii. Mvx = mvx & 0x01FFF
iii. Mvx << = shift
Способ B. Экспонентные биты в LSB значения компонента MV фиг. 7. Со следующими этапами восстановления MV (например, для X компоненты)
i. shift = MVx & 0x03
ii. Mvx = MVx >> 3
iii. Mvx << = shift
3. Предлагаемый подход может быть использован условно с указанием использования
этого режима в SPS/PPS/заголовке сегмента/заголовке группы плитки посредством:
Способ A. Специальный флаг для указания использования представления с плавающей точкой или HEVC 16-битное представление MV
Способ B. Количество битов для экспонентной части MV значения
4. Адаптивно изменить размер экспоненты в зависимости от
Способ A. Разрешения изображения
i. Если w <2k и h <2k: exp_size получен как 0 (не сигнализируются)
ii. Если w <4k и h <4k: сигнализирован один бит для значения сдвига
iii. В противном случае: сигнализированы два бита для значения сдвига.
Способ B. Сигнализированный в CTU/CU/блок/блок размер уровня экспоненты
Способ C. Использование в ограниченных наборах плитки движения (MCTS)
i. В этом случае размер набора плитки может сильно ограничить использование плавающей точки MV представления для небольшого разрешения набора плитки, как в аспекте 4 способа А по данному изобретению.
5. Вертикальные и горизонтальные компоненты МV могут иметь независимый размер экспонентной части.
6. Одно из возможных решений, где среднее значение компоненты вектора (среднее значение MVх, среднее значение MVy) удаляется из значений той же компоненты каждого MV, принадлежащего тому же CTU/CU/блоку/блоку.
Способ A. Среднее значение обоих компонентов хранится отдельно для каждого CTU/CU/блока/блока. MV полученный как MVx = meanMVx + MVx (i, j), MVy = meanMVy + MVy (i, j)
Способ B. Среднее значение обоих компонентов хранятся в одном субблоке каждого CTU/CU/блока/блока (сверху слева i = 0, j = 0). MV полученный как MVx = meanMVx + MVx (i, j), MVy = meanMVy + MVy (i, j), когда (i! = 0 и j! = 0) и meanMVx = MVx (0,0), meanMVy = MVy (0,0)
Способ C. Где два вышеуказанные решения (6. Способ А и 6. Способ В) с meanMVx и meanMVy в следующем представлении:
i. Двоичное плавающее 16 бит (как решение 1. Способа А)
ii. Целое число (16 бит)
Кроме того, изобретение предлагает использовать 16-битовое двоичное представление значений MV компонентов для хранения в пределах опорного кадра вместо 18 бит, в котором 16-битовые значения могут быть получены из 18-битовых значений, удалив 2 LSB (наименее значимые биты) или 2 MSB (наиболее значимые биты) в зависимости от значения, сигнализируемого в битовом потоке. Сигнализация может быть выполнена с помощью предварительно определенного механизма сигнализации, как описано в [JVET-L0168].
Для уменьшения объема памяти для хранения временных MVs, представление MV и точность сохраняется в приемлемом диапазоне.
Для решения вышеуказанных технических задач раскрываются следующие заявляемые аспекты, каждый из них может применяться индивидуально и некоторые из них могут применяться в комбинации:
7. Перед сохранением MV в буфере движения, MV компоненты преобразуются из 18-битного двоичного представления на 16-битное представление, используя один из следующих способов, в зависимости от значения, сигнализируемого в битовом потоке:
Способ A. Удаление двух LSB посредством арифметического сдвига вправо на два (как показано на фиг. 8)
15
15
Способ B. Удаление двух MSB (например, путем ограничения до диапазона [-2, 2 - 1]) (как показано на фиг. 9).
Восстановление MV компонентов (преобразование из 16-битного в 18-битное
двоичное представление) выполняется с использованием следующих правил:
• Если использован способ A, 18-битное значение получается из 16-битного значения посредством арифметического сдвига влево на 2;
• Если использован способ B, 18-битное значение получают из 16-битного значения путем установки 2 MSB (17-го и 18-го бита) на 0 для положительных значений или на 1 для отрицательных значений.
8. Аспект 7, где 16-битное двоичное представление не используется для хранения информации о движении текущего изображения. В этом случае MVs в 16-битном двоичном представлении используются, например, для TMVP (временное предсказание вектора движения) и/или ATMVP (альтернативное временное предсказание вектора движения).
9. Аспект 8, где способ преобразования из 18-битного в 16-битное двоичное представление MV компонентов (способ A или способ B) сигнализируется в битовом потоке для каждого кадра.
10. Аспект 8, где способ преобразования из 18-битного в 16-битное двоичное представление MV компонентов (способ A или способ B) сигнализируется в битовом потоке для каждой плитки.
11. Аспект 8, где способ преобразования из 18-битного в 16-битное двоичное представление MV компонентов (способ A или способ B) сигнализируется в битовом потоке для группы плиток.
12. Аспект 8, где способ преобразования из 18-битного в 16-битное двоичное представление MV компонентов (способ A или способ B) сигнализируется в битовом потоке для каждого сегмента.
13. Аспекты 7-12, где способ преобразования из 18-битного в 16-битное преобразование (способ A или способ B) сигнализируются в заголовке SPS/PPS/сегмента/заголовке группы плитки специальным флагом.
14. Аспекты 7-8, где способ преобразования из 18-битного в 16-битное двоичное представление MV компонентов адаптивно выбирается на основании:
а. Разрешения изображения
i. Если W <2K и H <2K: используется способ B (без сигнализации)
ii. В противном случае: используется способ B или А для сигнализации одного бита
b. Сигнализированного на CTU/CU/Блок/Блок уровне
с. Использование в пределах ограниченного наборов плиток движения (MCTS)
i. В этом случае размер набора плиток может сильно ограничить использование способа B для небольшого разрешения набора плитки
15. Вертикальные и горизонтальные MV компоненты могут иметь независимую сигнализацию.
На фиг. 10 показана блок-схема алгоритма общего способа сжатия вектора движения в соответствии с изобретением. Способ содержит этап 101 получения временного вектора движения; этап 102 определения сжатого вектора движения с использованием двоичного представления временного вектора движения, в котором двоичное представление содержит экспоненциальную часть и/или часть мантиссы, и в котором экспоненциальная часть содержит N битов, часть мантиссы составляет M бит, и в котором N является неотрицательным целым числом и M является положительным целым числом; и этап 103 выполнения временного предсказания вектора движения (TMVP) с использованием сжатого вектора движения.
Хотя варианты осуществления изобретения были в основном описаны на основании кодирования видео, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10) и другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного изображения, то есть обработки или кодирования отдельного изображения независимо от любого предшествующего или последующего изображения, как при кодировании видео. В общем, если обработка кодирования изображения ограничена одним изображением 17, в случае могут быть недоступны только блоки 244 (кодер) и 344 (декодер) внешнего предсказания. Все другие функции (также называемые инструментами или технологиями) кодера 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, где диски обычно воспроизводят данные магнитным способом, и диски воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем машиночитаемых носителей.
Инструкции могут выполняться одним или более процессорами, такими как один или более процессоров цифровых сигналов (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASICs), программируемые логические матрицы (FPGAs) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин «процессор», используемый в настоящем описании, может относиться к любой из вышеупомянутой структуре или любой другой структуре, подходящей для реализации описанных способов. Дополнительно, в некоторых аспектах, описанные в настоящем документе, функциональные возможности могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, выполненных с возможностью кодировать и декодировать или содержащиеся в комбинированном кодеке. Дополнительно, способы могут быть полностью реализованы в одной или более схемах или логических элементах.
Способы настоящего изобретения могут быть реализованы в большом количестве устройств или приспособлений, включающие в себя беспроводной телефон, интегральную схему (IC) или набор ICs (например, набор микросхем). В настоящем изобретении описаны различные компоненты, модули или блоки для представления функциональных аспектов устройств, выполненных с возможностью выполнять раскрытые технологии, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены набором взаимодействующих аппаратных блоков, включающий в себя один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или встроенным программным обеспечением.
Определены следующие логические операторы следующим образом:
x && y - булевская логическая операция «и» x и y
х | | y - булевская логическая операция «или» x и y
! - булевская логическая операция «не»
x? y : z — если x является TRUE или не равен 0, вычисляется значение y; в противном случае, вычисляется значение z.
Определены следующие операторы отношения следующим образом:
> - больше чем
> = - больше или равно
< - менее чем
<= - меньше или равно
= = - равно
!= - не равно
Когда применяется оператор отношения к элементу синтаксиса или переменной, которой присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для элемента синтаксиса или переменной. Значение «na» не считается равным любому другому значению.
Определены следующие побитовые операторы следующим образом:
& — побитовое «и». При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых битов, равных 0.
| — побитовое «или». При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых битов, равных 0.
^ — побитовое «исключающее ИЛИ». При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых битов, равных 0.
x >> y — арифметический сдвиг вправо целочисленного представления x с двоичным дополнением на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые в старшие значащие биты (MSBs) в результате сдвига вправо, имеют значение, равное MSB x до операции сдвига.
x<<y — арифметический сдвиг влево целочисленного представления x с дополнением до двух на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые в младшие значащие биты (LSBs) в результате сдвига влево, имеют значение, равное 0.
Таким образом, настоящее изобретение предлагает способ сжатия вектора движения, содержащий: получение временного вектора движения; определение сжатого вектора движения с использованием двоичного представления временного вектора движения, содержащее экспоненциальную часть и/или часть мантиссы, в котором экспоненциальная часть содержит N битов, часть мантиссы содержит M битов, и в котором N является неотрицательным целым числом и М является положительным целым числом; и выполнение временного предсказания вектора движения (TMVP) с использованием сжатого вектора движения.