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

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

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

Эта заявка испрашивает приоритет заявки на патент Индии IN201931025013, поданной 24 июня 2019 г. в Патентное ведомство Индии, раскрытие которой полностью включено в настоящий документ посредством ссылки.

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

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

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

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

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

СУЩНОСТЬ РАСКРЫТИЯ

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

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

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

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

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

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

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

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

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

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

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

Пороговое значение может быть задано как P/2 для субпиксельной точности в 1/P pel (пикселя). Пороговое значение может составлять 8 для субпиксельной точности в 1/16 pel.

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

Целочисленная позиция (x_pos, y_pos) выборки пикселей в опорной картинке может быть получена в соответствии со следующими уравнениями:

x_pos = (x_spel_pos + (1 << (shift_val – 1))) >> shift_val

y_pos = (y_spel_pos + (1 << (shift_val – 1))) >> shift_val

где (x_spel_pos, y_spel_pos) - это полученная позиция выборки субпикселей, а shift_val выбирается в соответствии с используемой точностью выборки субпикселей. Для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя или 1/16 пикселя, можно использовать shift_val, равный 1, 2, 3 или 4 соответственно.

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

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

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

Согласно реализации, в случае, если этап уточнения целочисленного расстояния MVR приводит к нулевому смещению уточненного MV относительно начального MV, целочисленная позиция (x_pos, y_pos) выборки пикселей в опорной картинке может быть получена в соответствии со следующими уравнениями:

x_pos = x_spel_pos >> shift_val

y_pos = y_spel_pos >> shift_val

где (x_spel_pos, y_spel_pos) - это полученная позиция выборки субпикселей, а shift_val выбирается в соответствии с используемой точностью выборки субпикселей. Для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя или 1/16 пикселя, можно использовать shift_val, равный 1, 2, 3 или 4 соответственно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Система 40 видеокодировки, показанная на фиг. 1B, содержит схему обработки, реализующую как видеокодер 20, так и видеодекодер 30. Кроме того, одно или несколько устройств 41 формирования изображений, таких как камера для захвата картинок реального мира, антенна 42, одно или несколько запоминающих устройств 44, один или несколько процессоров 43 и/или устройство 45 отображения, такое как устройство 34 отображения, описанных выше, может быть предоставлено как часть системы 40 видеокодировки.

Устройство-источник 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 контурного фильтра, буфер декодированных картинок (DPB) 230, блок 260 выбора режима, блок 270 энтропийного кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разделения. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.

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

Картинки и разделение картинок (картинки и блоки)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Квантование

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

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

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

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

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

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

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

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

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

Фильтрация

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

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

Буфер декодированных картинок

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

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

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

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

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

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

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

Разделение

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

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

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

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

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

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

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

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

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

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

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

Внешнее предсказание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фильтрация

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

Буфер декодированных картинок

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

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

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

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

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

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

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

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

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

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

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

Способ 1: удалите старший бит переполнения (старший значащий бит) с помощью следующих операций:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Clip3( x, y, z )=

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

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

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

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

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

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

Уточнение вектора движения (MVR)

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

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

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

Уточнение вектора движения является частью блока 244 внешнего предсказания на фиг.2 и 344 на фиг.3.

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

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

Используя начальные векторы движения, определяются кандидатные пары векторов движения (MV) на уточнение. Могут быть определены по меньшей мере две кандидатных пары на уточнение. Обычно кандидатные пары векторов движения на уточнение определяются на основе пары начальных векторов движения (MV0, MV1). Кроме того, кандидатные пары MV могут быть определены путем добавления небольших разностей векторов движения к MV0 и MV1. Например, кандидатные пары MV могут включать в себя следующее:

(MV0, MV1)

(MV0 + (0,1), MV1 + (0, -1))

(MV0 + (1,0), MV1 + (-1,0))

(MV0 + (0, -1), MV1 + (0,1))

(MV0 + (-1,0), MV1 + (1,0))

Где (1, -1) обозначает вектор, который имеет смещение на 1 целочисленный пиксель в горизонтальном (или x) направлении и смещение на -1 целочисленный пиксель в вертикальном (или y) направлении.

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

Уточнение кандидатных пар векторов движения (MV) образуют пространство поиска процесса уточнения вектора движения.

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

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

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

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

где nCbH и nCbW - высота и ширина блоков предсказания, функция abs (a) определяет абсолютное значение аргумента a, predSamplesL0 и predSamplesL1 - выборки блоков предсказания, полученные в соответствии с кандидатной парой MV, которая обозначена (CMV0, CMV1).

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

Один иллюстративный пример уточнения вектора движения объясняется в документе JVET-M1001-v3, «Versatile Video Coding (Draft 4)” of JVET (of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11) which is publicly available under http://phenix.it-sudparis.eu/jvet/. Раздел “8.4.3 Decoder side motion vector refinement process» в документе иллюстрирует уточнение вектора движения.

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

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

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

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

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

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

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

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

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

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

Уточнение оптического потока с двунаправленным предсказанием (BPOF)

Уточнение двунаправленного оптического потока (BPOF) или двунаправленного оптического потока (BDOF) - это процесс повышения точности двойного предсказания блока без явной дополнительной сигнализации в потоке битов, кроме сигнализации для двойного предсказания. Это часть блока 244 внешнего предсказания на фиг.2 и 344 на фиг.3.

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

Двойное предсказание= предсказание1 * W1+предсказание2 * W2+K,

где W1 и W2 - весовые коэффициенты, которые могут сигнализироваться в потоке битов или могут быть заранее определены на стороне кодера и/или на стороне декодера. K - аддитивный коэффициент, который также может быть сигнализирован в потоке битов или заранее определен на стороне кодера и/или на стороне декодера. Например, двойное предсказание может быть получено с использованием

Двойное предсказание=(предсказание1+предсказание2)/2

где W1 и W2 равны 1/2, а K равно 0.

Целью уточнения оптического потока является повышение точности двойного предсказания. Оптический поток - это картина видимого движения объектов изображения между двумя последовательными кадрами. Оптический поток вызывается движением объекта и/или камеры. Процесс уточнения оптического потока повышает точность двойного предсказания за счет применения уравнения оптического потока (решения уравнения оптического потока).

В примере пиксель I (x, y, t) расположен в первом кадре (x и y соответствуют пространственным координатам, t соответствует временному измерению). Объект, представленный пикселем, перемещается на расстояние (dx, dy) в следующем кадре, снятом после времени dt. В предположении, что эти пиксели одинаковы и интенсивность не меняется, уравнение оптического потока определяется следующим образом:

I (x, y, t)== I (x+ dx , y+ dy , t+dt

где I (x, y, t) указывает интенсивность (значение выборки) пикселя в координатах (x, y, t).

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

= 0

где и - горизонтальный и вертикальный градиенты пространственной выборки в позиции (x, y), производная по времени в позиции (x, y), а vx=dx/dt and vy=dy/dt представляет собой скорость перемещения.

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

Реализация уточнения оптического потока обычно включает в себя следующие этапы:

1. Вычисление градиентов выборки;

2. Вычисление разностей между первым предсказанием и вторым предсказанием;

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

где I(0) соответствует значению выборки в первом предсказании, I(1) - значение выборки во втором предсказании, vx и vy - скорости перемещения, вычисленные в направлениях x и y, а ∂I(0)/ ∂x, ∂I(0)/ ∂y , ∂I(1)/ ∂x и ∂I(1)/ ∂y - градиенты в направлениях x и y в первом и втором предсказаниях соответственно. и обозначают временные расстояния от текущей картинки в порядке отображения до соответствующих опорных картинок, где получают первое предсказание и второе предсказание. Некоторые подходы минимизируют сумму квадратов ошибок, в то время как некоторые подходы минимизируют сумму абсолютных ошибок.

4. Использование реализации уравнения оптического потока, такого как приведенное ниже:

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

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

∂I(x, y, t) / ∂x = I(x + 1, y, t) - I(x - 1, y, t)

∂I(x, y, t) / ∂y = I(x, y + 1, t) - I(x, y - 1, t)

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

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

Один пример уточнения оптического потока объяснен в разделе 8.5.6.4 «Bidirectional optical flow prediction process» документа JVET-N1001, Versatile Video Coding (Draft 5), which is publicly available under http://phenix.it-sudparis.eu/jvet/, ссылка на который приведена ниже для справки.

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

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

два (nCbW+2) x (nCbH+2) массива выборок предсказания яркости predSamplesL0 и predSamplesL1,

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

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

флаги bdofUtilizationFlag[ xIdx ][ yIdx ] использования двунаправленного оптического потока с xIdx = 0..( nCbW >> 2 ) − 1, yIdx = 0..( nCbH >> 2 ) – 1.

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

Переменные bitDepth, shift1, shift2, shift3, shift4, offset4 и mvRefineThres выводятся следующим образом:

Переменная bitDepth устанавливается равной BitDepthY, то есть битовой глубине компонента яркости.

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

Переменная shift2 устанавливается равной Max (4, bitDepth - 8).

Переменная shift3 устанавливается равной Max (1, bitDepth - 11).

Переменная shift4 устанавливается равной Max (3, 15 - bitDepth), а переменная offset4 устанавливается равной 1  <<  ( shift4 − 1 ).

– Переменная mvRefineThres устанавливается равной 1 << Max( 5, bitDepth − 7 ).

Для xIdx = 0..( nCbW >> 2 ) − 1 и yIdx = 0..( nCbH >> 2 ) − 1 применяется следующее:

Переменная xSb устанавливается равной (( xIdx << 2) + 1, а ySb устанавливается равной ( yIdx << 2 ) + 1.

Если bdofUtilizationFlag [xIdx] [yIdx] равно FALSE, для x=xSb - 1..xSb+2, y=ySb - 1 .. ySb+2 значения выборки предсказания для текущего субблока выводятся следующим образом:

pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) − 1, ( predSamplesL0[ x + 1 ][ y + 1 ] + offset4 +
predSamplesL1[ x + 1 ][ y + 1 ] )  >>  shift4 )

В противном случае (bdofUtilizationFlag [xIdx] [yIdx] равно TRUE) значения выборки предсказания текущего субблока выводятся следующим образом:

Для x=xSb - 1..xSb+4, y=ySb - 1..ySb+4 применяются следующие упорядоченные шаги:

1. Положения (hx, vy ) для каждого из соответствующих позиций выборки (x, y) внутри массивов выборок предсказания выводятся следующим образом:

hx=Clip3 (1, nCbW, x)

vy=Clip3 (1, nCbH, y)

2. Переменные gradientHL0 [x] [y], gradientVL0 [x] [y], gradientHL1 [x] [y] и gradientVL1 [x] [y] выводятся следующим образом:

gradientHL0[ x ][ y ]  =  (predSamplesL0[ hx + 1 ][vy] − predSampleL0[ hx − 1 ][ v] ) >> shift1

gradientVL0[ x ][ y ]  =   (predSampleL0[ hx ][ vy + 1 ] − predSampleL0[ h][vy − 1 ] ) >> shift1

gradientHL1[ x ][ y ]  =  (predSamplesL1[ hx + 1 ][vy] − predSampleL1[ hx − 1 ][ v] ) >> shift1

gradientVL1[ x ][ y ]  =   (predSampleL1[ hx ][ vy + 1 ] − predSampleL1[ h][vy − 1 ] ) >> shift1

3. Переменные diff [x] [y], tempH [x] [y] и tempV [x] [y] выводятся следующим образом:

diff[ x ][ y ] = (predSamplesL0[ hx ][ vy ] >> shift2 ) − ( predSamplesL1[ hx ][ vy ] >> shift2 )

tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ] ) >> shift3

tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ] ) >> shift3

Переменные sGx2, sGy2, sGxGy, sGxdI и sGydI выводятся следующим образом:

sGx2 = ΣiΣj( tempH[ xSb + i ][ ySb + j ] * tempH[ xSb + i ][ ySb + j ] ) с i, j = −1..4

sGy2 = ΣiΣj( tempV[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) с i, j = −1..4

sGxGy = ΣiΣj( tempH[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) с i, j  −1..4

sGxGym = sGxGy >> 12

sGxGys =  sGxGy & ( ( 1 << 12 ) − 1 )

sGxdI = ΣiΣj( −tempH[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) с i, j = −1..4

sGydI = ΣiΣj( −tempV[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) с i, j = −1..4

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

vx = sGx2 > 0  ?  Clip3( −mvRefineThres, mvRefineThres, −( sGxdI << 3 ) >> Floor( Log2( sGx2 ) ) )  :  0

vy = sGy2 > 0  ?  Clip3( −mvRefineThres, mvRefineThres, ( ( sGydI << 3 ) – 

( ( vx * sGxGym ) << 12 + vx * sGxGys ) >> 1 ) >> Floor( Log2( sGx2 ) ) )  :  0

Для x=xSb - 1..xSb+2, y=ySb - 1..ySb+2 значения выборки предсказания текущего субблока выводятся следующим образом:

bdofOffset = Round( ( vx * ( gradientHL1[ x + 1 ][ y + 1 ] − gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 )

+ Round( ( vy * (gradientVL1[ x + 1 ][ y + 1 ] − gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )

[Операция Round() определена для ввода с плавающей запятой. Операция Round() здесь может быть опущена.]

pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) − 1, ( predSamplesL0[ x + 1 ][ y + 1 ]  + offset4 + predSamplesL1[ x + 1 ][ y + 1 ] + bdofOffset )  >>  shift4 )

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

Технические задачи, которые рассматриваются в раскрытии

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

Градиенты выборок требуются для всех позиций выборок в блоке 4×4 (как описано в разделе уровня техники в отношении BPOF) для вычисления оптического потока и для применения коррекции на основе вычисленного оптического потока. Для получения градиентов выборки 4×4 требуются значения расширенной выборки для того и другого, причем опорные точки выходят за рамки значений выборки 4×4. При использовании фильтра [-1 0 1] для вычисления градиентов в каждой опорной точке требуется одно значение расширенной выборки по всему блоку 4×4. Другими словами, для градиентов выборок 4×4 требуется область выборок 6×6 (за исключением четырех угловых выборок области 6×6).

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

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

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

Предлагаемый способ

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

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

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

Этап 1310, получение вектора движения (MV) текущего блока;

Этап 1320, получение позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе MV;

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

Этап 1330, обработка полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке; и

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

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

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

Пусть верхняя левая выборка текущего субблока размером M x N выборок, для которых выполняется двойное предсказание с BPOF/BDOF, расположена в (sb_start_x, sb_start_y). Пусть (mvx0, mvy0) будет MV с точностью до 1/16 пикселя для текущего субблока относительно первого опорного кадра L0, а (mvx1, mvxy1) будет MV с точностью до 1/16 пикселя для текущего субблока относительно второго опорного кадра L1.

Позиция с точностью до 1/16 пикселя в L0, соответствующая левой верхней позиции текущего субблока в L0, задается как ((sb_start_x << 4) + mvx0, (sb_start_y << 4) + mvy0). Позиция с точностью до 1/16 пикселя в L1, соответствующая левой верхней позиции текущего субблока в L0, задается как ((sb_start_x << 4) + mvx1, (sb_start_y << 4) + mvy1). Понятно, что могут использоваться различные субпиксельные точности, такие как полупиксель, четверть пикселя или 1/8 пикселя, при этом верхняя левая позиция текущих субблоков определяется путем применения соответствующего сдвига влево на 1 , 2 или 3 соответственно.

Для позиций M x N в опорных кадрах L0 и L1, соответствующих субблоку, 2-мерная разделяемая интерполяция с компенсацией движения по K-отводам выполняется в соответствующем опорном кадре на основе точности субпикселя, например, 1/16 , соответствующей позиции выборки и используемой в качестве предсказанных значений выборки, которые используются в процессе BDOF для вычисления градиентов выборки.

Чтобы получить предсказанные значения выборки для оставшихся расширенных соответствующих позиций выборки, которые выходят за пределы центральных позиций выборки M x N в блоке (M+2) x (N+2) позиций выборки с целью вычисления градиента граничной выборки субблока M x N, выполняется следующая процедура (для общей точности выборки субпикселей):

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

x_pos = (x_spel_pos + (1 << (shift_val – 1))) >> shift_val

y_pos = (y_spel_pos + (1 << (shift_val – 1))) >> shift_val

где shift_val выбирается в соответствии с используемой точностью выборки субпикселей. Для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя и 1/16 пикселя, shift_val равны 1, 2, 3 и 4 соответственно.

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

На фиг.6 показано, из какой позиции в опорной картинке выбирается значение пикселя. На диаграмме (A), показывающей уровень техники, в качестве MV, указывающего на дробную позицию в опорных картинках, дробная часть отбрасывается, и только целая часть используется для выбора значения пикселя. Например, для MV (4, 0), MV (9, 0), которые находятся в формате Q4, позиция (0, 0) в опорной картинке используется для выбора значения пикселя (опорная выборка). Напротив, на диаграмме (B), согласно настоящему раскрытию, дробная часть рассматривается для округления до ближайшего целого числа, которое в конечном итоге используется для выбора значения пикселя. Например, для MV (4, 0), MV (9, 0), которые находятся в формате Q4, позиция (0, 0) и позиция (16, 0), соответственно, в опорной картинке используются для выбора соответствующего значения пикселей, которые могут значительно повысить точность выбора опорной выборки.

На фиг. 7B показан описанный способ определения позиции опорной выборки целочисленной сетки на основе позиции выборки точности субпикселя (с точностью до субпикселя)(т. е. 1/16 пикселя). Можно видеть, что в горизонтальном и вертикальном направлениях ближайшая целочисленная позиция выборки выбирается на основе (половинного) округления горизонтальной и вертикальной составляющих позиции. Таким образом, смещения субпиксельной точности от (i - 8/16) до (i+7/16) в горизонтальном направлении и от (j - 8/16) до (j+7/16) в вертикальном направлении используют ( i, j) как ближайшую целочисленную позицию выборки. По сравнению с этим рис. 7A иллюстрирует проблему с выбором целочисленной позиции выборки посредством усечения, где точное смещение субпикселя от i до (i+15/16) по горизонтали и j до (j+15/16) в вертикальном направлении используют (i, j) как целочисленную позицию выборки.

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

В позиции выборки верхней границы блока M x N градиент выборки вертикальной границы вычисляется путем взятия разницы между значением выборки позиции под ней (которая вычисляется с использованием 2-мерной разделяемой интерполяции K-отводов) и значением выборки позиции расширенной выборки сверху (которому присваивается округленное ближайшее восстановленное значение опорной выборки, как описано выше). Точно так же в позиции выборки нижней границы блока M x N градиент выборки вертикальной границы вычисляется путем взятия разницы между значением выборки позиции ниже (которому присваивается округленное ближайшее восстановленное значение опорной выборки, как описано выше) и примерное значение позиции сверху (которое вычисляется с использованием 2-мерной разделяемой интерполяции K-отводов).

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

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

Когда MVR и BDOF оба применяются для данного блока кодирования, которому принадлежит текущий субблок, но MVR приводит к целочисленному смещению на этапе уточнения целочисленного расстояния MVR относительно начальной пары MV, т. е. уточненной пары MV после этапа уточнения целочисленного расстояния отличается от начальной пары MV, значение выборки для позиции расширенной выборки (x_spel_pos, y_spel_pos) получается как восстановленное значение опорной выборки в позиции (x_pos, y_pos), вычисленное следующим образом:

x_pos = x_spel_pos >> shift_val

y_pos = y_spel_pos >> shift_val

где shift_val выбирается в соответствии с используемой точностью выборки субпикселей. Для точности выборки субпикселей в половину пикселя, четверть пикселя, 1/8 пикселя и 1/16 пикселя используются shift_val 1, 2, 3 и 4 соответственно. Другими словами, дробная часть позиции как в горизонтальном, так и в вертикальном направлениях игнорируется при получении позиции выборки для этого случая.

Преимущества предлагаемого способа:

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

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

Процесс выборки целочисленных выборок яркости (Luma)

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

– расположение яркости в блоках полной выборки ( xIntL, yIntL ),

расположение яркости в блоках дробной выборки (( xFracL, yFracL ),

массив опорных выборок яркости refPicLXL,

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

Сдвиг переменной устанавливается равным Max (2, 14 - BitDepthY ).

Переменная picW устанавливается равной pic_width_in_luma_samples, а переменная picH устанавливается равной pic_height_in_luma_samples.

Положения яркости в единицах полной выборки (xInt, yInt) выводятся следующим образом:

xOffset = xFracL > 7 ? 1 : 0

yOffset = yFracL  > 7 ? 1 : 0

xInt = Clip3( 0, picW − 1, sps_ref_wraparound_enabled_flag ?
ClipH( ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, xIntL − 1 + xOffset) : xIntL − 1 + xOffset)

yInt = Clip3( 0, picH − 1, yIntL − 1 + yOffset)

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

predSampleLXL = refPicLXL[ xInt ][ yInt ] << shift3

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

Фиг. 8 показывает блок-схему способа кодирования/декодирования видео согласно варианту осуществления раскрытия. Проиллюстрированный способ выполняет двойное предсказание оптического потока на основе значения выборки из позиции выборки, принадлежащей расширенной области предсказанного блока, используемого в предсказании двунаправленного оптического потока текущего блока, следующим образом: на этапе 1310 получают вектор движения (MV) текущего блока. На этапе 1320 позицию выборки субпикселей в расширенной области предсказанного блока в опорной картинке получают на основе MV. На этапе 1330 полученная позиция выборки субпикселей обрабатывается, в частности, округляется, чтобы получить целочисленную позицию выборки пикселей в опорной картинке. На этапе 1340, наконец, выполняется двойное предсказание оптического потока путем обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке.

Фиг. 9 показывает блок-схему, иллюстрирующую пример аппаратуры кодирования/декодирования согласно варианту осуществления этого раскрытия. Аппаратура 20/30 кодирования/декодирования содержит блок 1440 предсказания, сконфигурированный для выполнения предсказания двунаправленного оптического потока текущего блока, первый блок 1410 получения, сконфигурированный для получения вектора движения (MV) текущего блока, второй блок 1420 получения, сконфигурированный для получения позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе MV, и

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

x && y

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

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

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

Операторы отношения

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

> Больше

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

< Меньше

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

== Равно

!= Не равно

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

Битовые операторы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Abs( x )=

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

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

Atan2( y, x )=

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

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

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

Clip3( x, y, z )=

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

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

GetCurrMsb( a, b, c, d )=

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

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

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

Min( x, y )=

Max( x, y )=

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

Sign( x )=

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

Sqrt( x )=

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

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

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

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

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

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

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

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

Таблица: Приоритетность операций от наивысшего (в верхней части таблицы) до низшего (в нижней части таблицы)

операции (с операндами x, y и z) "x++", "x− −" "!x", "−x" (как унарный префиксный оператор) xy "x * y", "x / y", "x ÷ y", "", "x % y" "x+y", "x − y" (как оператор с двумя аргументами), " " "x << y", "x >> y" "x < y", "x <= y", "x > y", "x >= y" "x== y", "x != y" "x & y" "x | y" "x && y" "x | | y" "x ? y : z" "x..y" "x=y", "x += y", "x −= y"

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

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

если ( условие 0 ) определение 0

иначе если( условие 1 )

определение 1 ...

иначе /* информативный комментарий по оставшемуся условию */ определение n

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

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

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

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

- ...

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

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

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

если( условие 0a && условие 0b ) определение 0

иначе если( условие 1a | | условие 1b ) определение 1 ... иначе определение n

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

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

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

- условие 0a

- условие 0b

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

- условие 1a

- условие 1b

- ...

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

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

если ( условие 0 ) определение 0 если ( условие 1 ) определение 1

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

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

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

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

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

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

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

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

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

название год авторы номер документа
РАННЕЕ ПРЕКРАЩЕНИЕ УТОЧНЕНИЯ ОПТИЧЕСКОГО ПОТОКА 2020
  • Эсенлик, Семих
  • Сетураман, Срирам
  • А, Джива Радж
  • Котеча, Сагар
RU2808608C2
СПОСОБ И АППАРАТУРА ДЛЯ АФФИННОГО ВНЕШНЕГО ПРЕДСКАЗАНИЯ СУББЛОКОВ ЦВЕТНОСТИ 2020
  • Руфицкий Василий Алексеевич
  • Соловьев Тимофей Михайлович
  • Филиппов Алексей Константинович
  • Чен, Цзянле
RU2816202C2
УТОЧНЕНИЕ ПРЕДСКАЗАНИЯ НА ОСНОВЕ ГРАДИЕНТА ДЛЯ КОДИРОВАНИЯ ВИДЕО 2020
  • Хуан, Хань
  • Чиэнь, Вэй-Цзюн
  • Карчевич, Марта
RU2817298C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Гао, Хань
  • Чен, Цзянле
RU2800681C2
СПОСОБ И УСТРОЙСТВО ИНТЕРПОЛЯЦИОННОЙ ФИЛЬТРАЦИИ ДЛЯ КОДИРОВАНИЯ С ПРЕДСКАЗАНИЕМ 2019
  • Руфицкий, Василий Алексеевич
  • Чэнь, Цзяньлэ
  • Филиппов, Алексей Константинович
RU2787217C1
ВНУТРЕННЕЕ ПРЕДСКАЗАНИЕ ИЗ ПРЕДСКАЗЫВАЮЩЕГО БЛОКА 2014
  • Го Ливэй
  • Пан Чао
  • Ким Воо-Шик
  • Пу Вэй
  • Соле Рохальс Хоэль
  • Джоши Раджан Лаксман
  • Карчевич Марта
RU2679190C2
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО 2020
  • Куо, Чэ-Вэй
  • Лим, Чонг Соон
  • Тео, Хан Боон
  • Ли, Цзин Я
  • Сунь, Хай Вэй
  • Ванг, Чу Тонг
  • Тома, Тадамаса
  • Ниси, Такахиро
  • Абе, Киёфуми
  • Като, Юсуке
RU2813135C1
ПЕРЕДАЧА В СЛУЖЕБНЫХ СИГНАЛАХ ПРЕДИКТОРА ВЕКТОРА ДВИЖЕНИЯ НА ОСНОВЕ СУБЪЕДИНИЦ ПРЕДСКАЗАНИЯ 2019
  • Хуан, Хань
  • Чиэнь, Вэй-Цзюн
  • Серегин, Вадим
  • Карчевич, Марта
RU2783333C2
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ МЕЖКАДРОВОГО ПРЕДСКАЗАНИЯ 2020
  • Сетхураман, Срирам
  • Котеча, Сагар
  • А, Джива Радж
RU2809192C2
СПОСОБ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ИНТРА-ПРЕДСКАЗАНИЯ В СИСТЕМЕ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ 2020
  • Хео, Дзин
RU2747381C1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8. Способ по п. 6 или 7, в котором пороговое значение задается как P/2 для точности субпикселя 1/P пикселя.

9. Способ по п. 8, в котором пороговое значение составляет 8 для точности субпикселя 1/16 пикселя.

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

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

11. Способ по п. 10, в котором целочисленную позицию (x_pos, y_pos) выборки пикселей в опорной картинке получают в соответствии со следующими уравнениями:

x_pos = (x_spel_pos + (1 << (shift_val – 1))) >> shift_val,

y_pos = (y_spel_pos + (1 << (shift_val – 1))) >> shift_val,

где (x_spel_pos, y_spel_pos) - это полученная позиция выборки субпикселей, а shift_val выбирается в соответствии с используемой точностью выборки субпикселей.

12. Способ по п. 11, отличающийся тем, что для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя или 1/16 пикселя, используется shift_val, равный 1, 2, 3 или 4 соответственно.

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

14. Способ по п. 13, в котором MVR содержит этап уточнения целочисленного расстояния по отношению к начальному MV; и

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

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

16. Способ по п. 14, в котором в случае, если этап уточнения целочисленного расстояния MVR приводит к нулевому смещению уточненного MV относительно начального MV, целочисленная позиция (x_pos, y_pos) выборки пикселей в опорной картинке получается согласно следующим уравнениям:

x_pos = x_spel_pos >> shift_val,

y_pos = y_spel_pos >> shift_val,

где (x_spel_pos, y_spel_pos) - это полученная позиция выборки субпикселей, а shift_val выбирается в соответствии с используемой точностью выборки субпикселей.

17. Способ по п. 16, отличающийся тем, что для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя или 1/16 пикселя, используется shift_val, равный 1, 2, 3 или 4 соответственно.

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

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

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

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

22. Кодер (20), содержащий:

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

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

23. Декодер (30), содержащий:

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

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

24. Кодер (20), содержащий:

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

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

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

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

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

25. Кодер (20) по п. 24, в котором обработка полученной позиции выборки субпикселей включает в себя округление полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке.

26. Кодер (20) по п. 24 или 25, в котором обработка полученной позиции выборки субпикселей включает в себя:

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

27. Кодер (20) по п. 26, в котором округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении включает в себя:

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

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

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

28. Кодер (20) по п. 27, в котором ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении получается путем добавления смещения на 1 к целочисленной позиции усеченной выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей; и

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

29. Декодер (30), содержащий:

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

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

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

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

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

30. Декодер (30) по п. 29, в котором обработка полученной позиции выборки субпикселей включает в себя округление полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке.

31. Декодер (30) по п. 29 или 30, в котором обработка полученной позиции выборки субпикселей включает в себя:

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

32. Декодер (30) по п. 31, в котором округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении включает в себя:

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

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

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

33. Декодер (30) по п. 32, в котором ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении получается путем добавления смещения на 1 к целочисленной позиции усеченной выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей; и

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

34. Носитель данных, хранящий поток битов, полученный с использованием способа декодирования/кодирования, который использует способ по любому из пп. 1-19.

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

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

WO 2018156628 A1, 30.08.2018
WO 2007091213 A2, 16.08.2007
US 2019089975 A1, 21.03.2019
US 2013272410, 17.10.2013.

RU 2 820 638 C2

Авторы

Сетураман, Срирам

А, Джива Радж

Котеча, Сагар

Даты

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

2020-06-23Подача