[0001] Настоящая заявка испрашивает приоритет патентной заявки США № 16/874,057, поданной 14 мая 2020, которая претендует на преимущество предварительной заявки США 62/849,352, поданной 17 мая 2019, полное содержание каждой из которых включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие относится к кодированию видео и декодированию видео.
ПРЕДШЕСТВУЮШИЙ Уровень Техники
[0003] Возможности цифрового видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, беспроводные широковещательные системы, персональные цифровые ассистенты (PDA), портативные или настольные компьютеры, планшетные компьютеры, считыватели электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные плееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые смартфоны, устройства видео-телеконференцсвязи, устройства потокового видео и тому подобное. Цифровые видеоустройства реализуют способы кодирования видео, такие как описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (Усовершенствованное кодирование видео) (AVC), ITU-T H.265/High Efficiency Video Coding (Высокоэффективное кодирование видео) (HEVC) и расширения таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких способов кодирования видео.
[0004] Способы кодирования видео включают в себя пространственное (внутри картинки (интра), внутрикадровое) предсказание и/или временное (между картинками (интер), межкадровое) предсказание для уменьшения или удаления избыточности, присущей видеопоследовательностям. Для основанного на блоках кодирования видео, видео-вырезка (видео-слайс) (например, видео-картинка или часть видео-картинки) может быть разделена на блоки видео, которые также могут упоминаться как единицы дерева кодирования (CTU), единицы кодирования (CU) и/или узлы кодирования. Блоки видео в интра-кодированной (I) вырезке картинки кодируются с использованием пространственного предсказания относительно опорных выборок в соседних блоках в той же самой картинке. Блоки видео в интер-кодированной (P или В) вырезке картинки могут использовать пространственное предсказание относительно опорных дискретных отсчетов (выборок) в соседних блоках в той же самой картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.
КРАТКОЕ ИЗЛОЖЕНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[0005] В общем, настоящее раскрытие описывает способы для уточнения предсказания на основе градиента. Устройство кодирования видео (например, кодер видео или декодер видео) определяет один или более блоков предсказания для интер-предсказания текущего блока (например, на основе одного или более векторов движения для текущего блока). В уточнении предсказания на основе градиента, кодер видео модифицирует одну или более выборок блока предсказания на основе различных факторов, таких как смещение в горизонтальном направлении, горизонтальный градиент, смещение в вертикальном направлении и вертикальный градиент.
[0006] Например, вектор движения идентифицирует блок предсказания. Смещение в горизонтальном направлении (также называемое горизонтальным смещением) относится к изменению (например, дельта) в x-координате вектора движения, а смещение в вертикальном направлении (также называемое вертикальным смещением) относится к изменению (например, дельта) в y-координате. Горизонтальный градиент относится к результату применения фильтра к первому набору выборок в блоке предсказания, и вертикальный градиент относится к результату применения фильтра ко второму набору выборок в блоке предсказания.
[0007] Примерные методы, описанные в раскрытии, обеспечивают уточнение предсказания на основе градиента, где уровень точности смещения (например, по меньшей мере одного из горизонтального или вертикального смещения) является унифицированным (например, тем же самым) для различных режимов предсказания. Например, для первого режима предсказания (например, аффинного режима), векторы движения могут находиться на первом уровне точности, и для второго режима предсказания (например, двунаправленного оптического потока (BDOF)), векторы движения могут находиться на втором уровне точности. Соответственно, вертикальное и горизонтальное смещения для векторов движения, используемых для аффинного режима и векторов движения, используемых для BDOF, могут быть различными. В этом раскрытии, кодер видео может быть сконфигурирован, чтобы округлять (например, округлять в большую сторону или округлять в меньшую сторону) вертикальное и горизонтальное смещения для векторов движения так, чтобы уровень точности смещений был одинаковым независимо от режима предсказания (например, вертикальное и горизонтальное смещения для аффинного режима и BDOF имеют тот же самый уровень точности).
[0008] Посредством округления уровня точности смещения, примерные методы могут улучшить общую работу кодера видео. Например, уточнение предсказания на основе градиента включает операции умножения и сдвига. Если уровни точности смещений различны для разных режимов, то различные логические схемы могут потребоваться для поддержки различных уровней точности (например, логическая схема, сконфигурированная для одного уровня точности, может не подходить для других уровней точности). Поскольку уровни точности для смещений одинаковы для разных режимов, одна и та же логическая схема может быть повторно использована для блоков, что приводит к меньшей общей логической схеме и к снижению энергопотребления ввиду отсутствия необходимости энергоснабжения неиспользуемой логической схемы.
[0009] В некоторых примерах, методы определения смещения могут быть основаны на уже доступной информации в декодере видео. Например, способ, которым декодер видео определяет горизонтальное или вертикальное смещение, может быть основан на информации, которая была доступной декодеру видео для интер-предсказания текущего блока в соответствии с режимом интер-предсказания. Кроме того, могут существовать определенные режимы интер-предсказания, которые отключаются для определенных типов блоков (например, на основе размера). В некоторых примерах, эти режимы интер-предсказания, которые были отключены для определенных типов блоков, могут быть задействованы для этих типов блоков, но блоки предсказания для таких блоков могут быть модифицированы с использованием примерных методов, описанных в этом раскрытии.
[0010] В одном примере, раскрытие описывает способ декодирования данных видео, причем способ содержит определение блока предсказания для интер-предсказания текущего блока, определение горизонтального и вертикального смещений для уточнения предсказания на основе градиента одной или более выборок блока предсказания, округление горизонтального и вертикального смещений до уровня точности, который является тем же самым для различных режимов интер-предсказания, включая аффинный режим и режим BDOF, определение одного или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений, модифицирование одной или более выборок блока предсказания на основе определенного одного или более сдвигов уточнения для генерации модифицированного блока предсказания, и восстановление текущего блока на основе модифицированного блока предсказания.
[0011] В одном примере, раскрытие описывает способ кодирования данных видео, причем способ содержит определение блока предсказания для интер-предсказания текущего блока, определение горизонтального и вертикального смещений для уточнения предсказания на основе градиента одной или более выборок блока предсказания, округление горизонтального и вертикального смещений до уровня точности, который является тем же самым для различных режимов интер-предсказания, включая аффинный режим и режим BDOF, определение одного или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений, модифицирование одной или более выборок блока предсказания на основе определенного одного или более сдвигов уточнения для генерации модифицированного блока предсказания, определение остаточных значений, указывающих разность между текущим блоком и модифицированным блоком предсказания, и сигнализацию информации, указывающей остаточные значения.
[0012] В одном примере, раскрытие описывает устройство для кодирования данных видео, причем устройство содержит память, сконфигурированную, чтобы хранить одну или более выборок блока предсказания, и схему обработки. Схема обработки сконфигурирована, чтобы определять блок предсказания для интер-предсказания текущего блока, определять горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента для одной или более выборок блока предсказания, округлять горизонтальное и вертикальное смещения до уровня точности, который является тем же самым для различных режимов интер-предсказания, включая аффинный режим и режим BDOF, определять один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений, модифицировать одну или более выборок блока предсказания на основе определенного одного или более сдвигов уточнения для генерации модифицированного блока предсказания и кодировать текущий блок на основе модифицированного блока предсказания.
[0013] В одном примере, раскрытие описывает считываемый компьютером носитель данных, хранящий инструкции, которые, при исполнении, побуждают один или более процессоров определять блок предсказания для интер-предсказания текущего блока, определять горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента одной или более выборок блока предсказания, округлять горизонтальное и вертикальное смещения до уровня точности, который является тем же самым для различных режимов интер-предсказания, включая аффинный режим и режим BDOF, определять один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений, модифицировать одну или более выборок блока предсказания на основе определенного одного или более сдвигов уточнения для генерации модифицированного блока предсказания и кодировать текущий блок на основе модифицированного блока предсказания.
[0014] В одном примере, раскрытие описывает устройство для кодирования данных видео, причем устройство содержит средство для определения блока предсказания для интер-предсказания текущего блока, средство для определения горизонтального и вертикального смещений для уточнения предсказания на основе градиента одной или более выборок блока предсказания, средство для округления горизонтального и вертикального смещений до уровня точности, который является тем же самым для различных режимов интер-предсказания, включая аффинный режим и режим BDOF, средство для определения одного или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений, средство для модификации одной или более выборок блока предсказания на основе определенного одного или более сдвигов уточнения для генерации модифицированного блока предсказания и средство для кодирования текущего блока на основе модифицированного блока предсказания.
[0015] Подробности одного или более примеров изложены в прилагаемых чертежах и описании ниже. Другие признаки, объекты и преимущества будут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0016] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему кодирования и декодирования видео, которая может выполнять методы данного раскрытия.
[0017] Фиг. 2A и 2B являются концептуальными диаграммами, иллюстрирующими пример структуры квадродерева-двоичного дерева (QTBT) и соответствующей единицы дерева кодирования (CTU).
[0018] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерный кодер видео, который может выполнять методы этого раскрытия.
[0019] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный декодер видео, который может выполнять методы этого раскрытия.
[0020] Фиг. 5 представляет собой концептуальную диаграмму, иллюстрирующую расширенную область единицы кодирования (CU), используемую в двунаправленном оптическом потоке (BDOF).
[0021] Фиг. 6 представляет собой концептуальную диаграмму, иллюстрирующую пример выбора векторов движения (MV) подблока.
[0022] Фиг. 7 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ кодирования данных видео.
Подробное описание
[0023] Настоящее раскрытие относится к усовершенствованию предсказания на основе градиента. В усовершенствовании предсказания на основе градиента, устройство кодирования видео (например, кодер видео или декодер видео) определяет блок предсказания для текущего блока на основе вектора движения как часть интер-предсказания и модифицирует (например, уточняет) выборки блока предсказания для генерации модифицированных выборок предсказания (например, уточненных выборок предсказания). Кодер видео сигнализирует остаточные значения, указывающие разность между модифицированными выборками предсказания и текущим блоком. Декодер видео выполняет те же операции, что и выполняемые кодером видео для модификации выборок блока предсказания для генерации модифицированных выборок предсказания. Декодер видео добавляет остаточные значения к модифицированным выборкам предсказания для восстановления текущего блока.
[0024] Одним примерным способом модификации выборок блока предсказания для кодера видео является определение одного или более сдвигов уточнения и суммирование выборок блока предсказания со сдвигами уточнения. Один примерный способ генерации сдвигов уточнения основан на градиентах и смещениях вектора движения. Градиенты могут быть определены из градиентных фильтров, применяемых к выборкам блока предсказания.
[0025] Примеры смещений вектора движения включают в себя горизонтальное смещение вектора движения и вертикальное смещение вектора движения. Горизонтальное смещение может быть значением, которое добавляется или вычитается из x-координаты вектора движения, и вертикальное смещение может быть значением, которое добавляется или вычитается из y-координаты вектора движения. Например, горизонтальное смещение может упоминаться как Δvx, где vx является x-координатой вектора движения, а вертикальное смещение может упоминаться как Δvy, где vy является y-координатой вектора движения.
[0026] Уровень точности вектора движения текущего блока может отличаться для различных режимов интер-предсказания. Например, координата вектора движения (например, x- или y-координата) включает в себя целочисленную часть и может включать в себя десятичную часть. Десятичная часть упоминается как суб-пиксельная часть вектора движения, так как целочисленная часть вектора движения идентифицирует реальный пиксел в опорной картинке, которая включает в себя блок предсказания, а суб-пиксельная часть вектора движения корректирует вектор движения для идентификации местоположения между пикселами в опорной картинке.
[0027] Уровень точности вектора движения основан на суб-пиксельной части вектора движения и является показателем степени детализации (гранулярности) движения вектора движения от реального пиксела в опорной картинке. В качестве примера, если суб-пиксельная часть по x-координате равна 0,5, то вектор движения находится посередине между двумя горизонтальными пикселами в опорной картинке. Если суб-пиксельная часть по x-координате равна 0,25, то вектор движения находится на четверти пути между двумя горизонтальными пикселами и так далее. В этих примерах, уровень точности вектора движения может быть равен суб-пиксельной части (например, уровень точности равен 0,5; 0,25 и т.д.).
[0028] В некоторых примерах, уровень точности горизонтального и вертикального смещений может быть основан на уровне точности вектора движения или способе генерации вектора движения. Например, в некоторых примерах, таких как режим объединения (слияния), который представляет собой форму режима интер-предсказания, суб-пиксельная часть х- и у-координат вектора движения может представлять собой горизонтальное и вертикальное смещения, соответственно. В качестве другого примера, например, для аффинного режима, который представляет собой форму интер-предсказание, вектор движения может быть основан на векторах движения угловых точек, и горизонтальное и вертикальное смещения могут быть определены на основе векторов движения угловых точек.
[0029] Уровень точности горизонтального и вертикального смещений может отличаться для различных режимов интер-предсказания. Например, для некоторых режимов интер-предсказания, горизонтальное и вертикальное смещения могут быть более точными (например, уровень точности равен 1/128 для первого режима предсказания) по сравнению с другими режимами интер-предсказания (например, уровень точности равен 1/16 для второго режима предсказания).
[0030] В реализации, может потребоваться, чтобы кодер видео включал в себя различные логические схемы для обработки различных уровней точности. Выполнение уточнения предсказания на основе градиента включает в себя умножение, операцию сдвига, суммирование и другие арифметические операции. Логические схемы, сконфигурированные для одного уровня точности для горизонтального или вертикального смещений, могут быть неспособны обрабатывать горизонтальное и вертикальное смещения более высокого уровня точности. Поэтому некоторые устройства кодирования видео включают в себя один набор логических схем для выполнения уточнения предсказания на основе градиента для одного режима интер-предсказания, в котором горизонтальное и вертикальное смещения имеют первый уровень точности, и другой набор логических схем для выполнения уточнения предсказания на основе градиента для другого режима интер-предсказания, в котором горизонтальное и вертикальное смещения имеют второй уровень точности.
[0031] Однако наличие различных логических схем для выполнения уточнения предсказания на основе градиента для различных режимов интер-предсказания приводит к дополнительной логической схеме, которая увеличивает размер устройства кодирования видео, а также использует дополнительную мощность. Например, если текущий блок использует интер-предсказание в первом режиме, то применяется первый набор логических схем для уточнения предсказания на основе градиента. Однако второй набор логических схем для уточнения предсказания на основе градиента для другого режима интер-предсказания по-прежнему потребляет мощность.
[0032] Это раскрытие описывает примеры способов округления уровня точности для горизонтального и вертикального смещений до одинакового уровня точности для различных режимов интер-предсказания. Например, устройство кодирования видео может округлять первое смещение (например, первое горизонтальное или первое вертикальное смещение), имеющее первый уровень точности для первого блока, использующего интер-предсказание в первом режиме интер-предсказания, до установленного уровня точности, и может округлять второе смещение (например, второе горизонтальное или второе вертикальное смещение), имеющее второй уровень точности для второго блока, использующего интер-предсказание во втором режиме интер-предсказания, до того же самого установленного уровня точности. Иными словами, устройство кодирования видео может округлять по меньшей мере одно из горизонтального и вертикального смещений до уровня точности, который является одинаковым для различных режимов интер-предсказания. В качестве одного примера, первый режим интер-предсказания может быть аффинным режимом, и второй режим интер-предсказания может быть двунаправленным оптическим потоком (BDOF).
[0033] Таким образом, одна и та же логическая схема может использоваться для уточнения предсказания на основе градиента для различных режимов интер-предсказания, вместо того, чтобы иметь различные логические схемы для различных режимов интер-предсказания. Например, логическая схема устройства кодирования видео может быть сконфигурирована, чтобы выполнять уточнение предсказания на основе градиента для горизонтального и вертикального смещений, имеющих установленный уровень точности. Устройство кодирования видео может округлять горизонтальное и вертикальное смещения таким образом, что уровень точности округленных горизонтального и вертикального смещений равен установленному уровню точности, позволяя одной и той же логической схеме выполнять уточнение предсказания на основе градиента для различных режимов интер-предсказания.
[0034] На фиг. 1 показана блок-схема, иллюстрирующая примерную систему 100 кодирования и декодирования видео, которая может выполнять методы настоящего раскрытия. Методы настоящего раскрытия, в общем, направлены на кодирование (кодирование и/или декодирование) данных видео. В общем, данные видео включают в себя любые данные для обработки видео. Таким образом, данные видео могут включать в себя необработанное, незакодированное видео, закодированное видео, декодированное (например, восстановленное) видео и метаданные видео, такие как данные сигнализации.
[0035] Как показано на фиг. 1, система 100 включает в себя устройство-источник 102, которое предоставляет закодированные данные видео, которые должны декодироваться и отображаться устройством-получателем 116, в этом примере. В частности, устройство-источник 102 предоставляет данные видео устройству-получателю 116 через считываемый компьютером носитель 110. Устройство-источник 102 и устройство-получатель 116 могут быть любым из широкого диапазона устройств, включая настольные компьютеры, ноутбуки (т.е. портативные) компьютеры, планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как смартфоны, телевизоры, камеры, устройства отображения, цифровые мультимедийные плееры, видеоигровые консоли, устройство потокового видео, вещательное приемное устройство телевизионная приставка или тому подобное. В некоторых случаях, устройство-источник 102 и устройство-получатель 116 могут быть оснащены для беспроводной связи и, таким образом, могут упоминаться как устройства беспроводной связи.
[0036] В примере, показанном на фиг. 1, устройство-источник 102 включает в себя источник 104 видео, память 106, кодер 200 видео и выходной интерфейс 108. Устройство-получатель 116 включает в себя входной интерфейс 122, декодер 300 видео, память 120 и устройство 118 отображения. В соответствии с этим раскрытием, кодер 200 видео устройства-источника 102 и декодер 300 видео устройства-получателя 116 могут быть сконфигурированы, чтобы применять методы уточнения предсказания на основе градиента. Таким образом, устройство-источник 102 представляет пример устройства кодирования видео, в то время как устройство-получатель 116 представляет пример устройства декодирования видео. В других примерах, устройство-источник и устройство-получатель могут включать в себя другие компоненты или компоновки. Например, устройство-источник 102 может принимать данные видео от внешнего источника видео, такого как внешняя камера. Аналогично, устройство-получатель 116 может взаимодействовать с внешним устройством отображения, а не включать в себя интегрированное устройство отображения.
[0037] Система 100, как показано на фиг. 1, является просто одним примером. Вообще, любое устройство кодирования и/или декодирования цифрового видео может выполнять методы уточнения предсказания на основе градиента. Устройство-источник 102 и устройство-получатель 116 являются просто примерами таких устройств кодирования, в которых устройство-источник 102 генерирует кодированные данные видео для передачи в устройство-получатель 116. Данное раскрытие ссылается на устройство “кодирования” как на устройство, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, кодер 200 видео и декодер 300 видео представляют примеры устройств кодирования, в частности, кодера видео и декодера видео, соответственно. В некоторых примерах, устройство-источник 102 и устройство-получатель 116 могут работать по существу симметричным образом, так что каждое из устройства-источника 102 и устройства-получателя 116 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать одностороннюю или двухстороннюю передачу видео между устройством-источником 102 и устройством-получателем 116, для потокового видео, воспроизведения видео, видеовещания или видеотелефонии.
[0038] В общем, источник 104 видео представляет собой источник данных видео (т.е. необработанных, незакодированных данных видео) и обеспечивает последовательный ряд картинок (также называемых “кадрами”) данных видео в кодер 200 видео, который кодирует данные для картинок. Источник 104 видео устройства-источника 102 может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное исходное видео, и/или интерфейс ввода видео для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 104 видео может генерировать данные на основе компьютерной графики в качестве исходного видео или комбинацию реального видео, архивированного видео и сгенерированного компьютером видео. В каждом случае, кодер 200 видео кодирует захваченные, предварительно захваченные или сгенерированные компьютером данные видео. Кодер 200 видео может переупорядочить картинки из принятого порядка (иногда упоминаемого как “порядок отображения”) в порядок кодирования для кодирования. Кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео. Устройство-источник 102 может затем выводить закодированные данные видео через выходной интерфейс 108 на считываемый компьютером носитель 110 для приема и/или извлечения, например, входным интерфейсом 122 устройства-получателя 116.
[0039] Память 106 устройства-источника 102 и память 120 устройства-получателя 116 представляют собой памяти общего назначения. В некоторых примерах, памяти 106, 120 могут хранить необработанные данные видео, например, необработанное видео из источника 104 видео и необработанные, декодированные данные видео из декодера 300 видео. Дополнительно или альтернативно, памяти 106, 120 могут хранить программные инструкции, исполняемые, например, кодером 200 видео и декодером 300 видео, соответственно. Хотя показаны отдельно от кодера 200 видео и декодера 300 видео в этом примере, следует понимать, что кодер 200 видео и декодер 300 видео могут также включать в себя внутренние памяти для функционально аналогичных или эквивалентных целей. Кроме того, памяти 106, 120 могут хранить закодированные данные видео, например, выводимые из кодера 200 видео и вводимые в декодер 300 видео. В некоторых примерах, части памятей 106, 120 могут быть выделены в качестве одного или более буферов видео, например, для хранения необработанных, декодированных и/или закодированных данных видео.
[0050] Считываемый компьютером носитель 110 может представлять любой тип носителя или устройства, способного транспортировать закодированные данные видео от устройства-источника 102 к устройству-получателю 116. В одном примере, считываемый компьютером носитель 110 представляет собой коммуникационную среду для предоставления возможности устройству-источнику 102 передавать закодированные данные видео непосредственно на устройство-получатель 116 в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Выходной интерфейс 108 может модулировать сигнал передачи, включающий в себя закодированные данные видео, и входной интерфейс 122 может демодулировать принятый сигнал передачи в соответствии со стандартом связи, таким как протокол беспроводной связи. Коммуникационная среда может включать в себя любую беспроводную или проводную коммуникационную среду, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационная среда может образовывать часть пакетной сети, такой как локальная вычислительная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для облегчения связи от устройства-источника 102 к устройству-получателю 116.
[0041] В некоторых примерах, устройство-источник 102 может выводить закодированные данные из выходного интерфейса 108 в устройство хранения 112. Аналогично, устройство-получатель 116 может осуществлять доступ к закодированным данным из устройства хранения 112 через входной интерфейс 122. Устройство хранения 112 может включать в себя любой из множества распределенных или локально доступных носителей хранения данных, таких как жесткий диск, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любой другой подходящий цифровой носитель данных для хранения закодированных данных видео.
[0042] В некоторых примерах, устройство-источник 102 может выводить закодированные данные видео на файловый сервер 114 или другое промежуточное устройство хранения, которое может сохранять закодированное видео, сгенерированное устройством-источником 104. Устройство-получатель 116 может осуществлять доступ к сохраненным видеоданным из файлового сервера 114 посредством потоковой передачи или загрузки. Файловый сервер 114 может быть любым типом серверного устройства, способного сохранять закодированные данные видео и передавать эти закодированные данные видео на устройство-получатель 116. Файловый сервер 114 может представлять веб-сервер (например, для веб-сайта), сервер протокола пересылки файлов (FTP), сетевое устройство доставки контента или сетевое устройство хранения (NAS). Устройство-получатель 116 может осуществлять доступ к закодированным видеоданным от файлового сервера 114 через любое стандартное соединение передачи данных, включая Интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) или комбинацию обоих, которая является подходящей для доступа к закодированным видеоданным, сохраненным на файловом сервере 114. Файловый сервер 114 и входной интерфейс 122 могут быть сконфигурированы, чтобы работать в соответствии с протоколом потоковой передачи, протоколом передачи загрузки или их комбинацией.
[0043] Выходной интерфейс 108 и входной интерфейс 122 могут представлять собой беспроводные передатчики/приемники, модемы, компоненты проводной сети (например, Ethernet-карты), компоненты беспроводной связи, которые работают в соответствии с любым из множества стандартов IEEE 802.11, или другие физические компоненты. В примерах, где выходной интерфейс 108 и входной интерфейс 122 включают в себя беспроводные компоненты, выходной интерфейс 108 и входной интерфейс 122 могут быть сконфигурированы для передачи данных, таких как закодированные данные видео, в соответствии со стандартом сотовой связи, таким как 4G, 4G-LTE (Долгосрочное развитие), LTE Advanced (Усовершенствованный LTE), 5G или тому подобное. В некоторых примерах, где выходной интерфейс 108 включает в себя беспроводной передатчик, выходной интерфейс 108 и входной интерфейс 122 могут быть сконфигурированы для передачи данных, таких как закодированные данные видео, в соответствии с другими беспроводными стандартами, такими как спецификация IEEE 802.11, спецификация IEEE 802.15 (например, ZigBeeТМ), стандарт BluetoothТМ или тому подобное. В некоторых примерах, устройство-источник 102 и/или устройство-получатель 116 могут включать в себя соответствующие устройства типа “система на кристалле” (SoC). Например, устройство-источник 102 может включать в себя устройство SoC для выполнения функциональности, относящейся к кодеру 200 видео и/или выходному интерфейсу 108, и устройство-получатель 116 может включать в себя устройство SoC для выполнения функциональности, относящейся к декодеру 300 видео и/или входному интерфейсу 122.
[0044] Методы настоящего раскрытия могут применяться к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как широковещательные телевизионные передачи, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео через Интернет, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носителе хранения данных, декодирование цифрового видео, хранимого на носителе хранения, или другие приложения.
[0045] Входной интерфейс 122 устройства-получателя 116 принимает закодированный битовый поток видео из считываемого компьютером носителя 110 (например, устройства хранения 112, файлового сервера 114 и т.п.). Закодированный битовый поток видео считываемого компьютером носителя 110 может включать в себя информацию сигнализации, определенную кодером 200 видео, которая также используется декодером 300 видео, например синтаксические элементы, имеющие значения, описывающие характеристики и/или обработку блоков видео или других кодируемых единиц (например, вырезок, картинок, групп картинок, последовательностей и т.п.). Устройство 118 отображения отображает декодированные картинки декодированных данных видео пользователю. Устройство 118 отображения может представлять собой любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на основе органических светоизлучающих диодов (OLED) или другой тип устройства отображения.
[0046] Хотя это не показано на фиг. 1, в некоторых примерах, кодер 200 видео и декодер 300 видео могут быть объединены с кодером аудио и/или декодером аудио и могут включать в себя соответствующие модули MUX-DEMUX или другие аппаратные средства и/или программное обеспечение, чтобы обрабатывать мультиплексированные потоки, включающие в себя как аудио, так и видео в общем потоке данных. Если это применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0047] Кодер 200 видео и декодер 300 видео могут быть реализованы как любая из множества подходящих схем кодера и/или декодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, встроенное программное обеспечение или любые их комбинации. Когда методы реализованы частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем, долговременном считываемом компьютером носителе и исполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения методов данного раскрытия. Каждый из кодера 200 видео и декодера 300 видео может быть включен в один или более кодеров или декодеров, каждый из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем устройстве. Устройство, включающее в себя кодер 200 видео и/или декодер 300 видео, может включать в себя интегральную схему, микропроцессор и/или беспроводное устройство связи, такое как сотовый телефон.
[0048] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодирования видео, таким как ITU-T H.265, также упоминаемым как Высокоэффективное кодирование видео (HEVC), или его расширениями, такими как расширения много-видового кодирования и/или масштабируемого кодирования видео. Альтернативно, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или промышленными стандартами, такими как ITU-T H.266, также упоминаемое как Многоцелевое кодирование видео (Versatile Video Coding, VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 4)”, Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting: Marrakech, MA, 9-18 January 2019, JVET-M1001-v5 (далее “VVC Draft 4”). Более недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 8)”, Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 17th Meeting: Brussels, BE, 7-17 January 2020, JVET-Q2001-vD (далее “VVC Draft 8”). Однако методы настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.
[0049] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочное кодирование картинок. Термин “блок” обычно относится к структуре, включающей в себя данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть вместо кодирования данных красного, зеленого и синего (RGB) для выборок картинки, кодер 200 видео и декодер 300 видео могут кодировать компоненты яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, и декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).
[0050] Настоящее раскрытие может, в общем, относиться к кодированию (например, кодированию и декодированию) картинок, включающему в себя процесс кодирования или декодирования данных картинки. Аналогично, настоящее раскрытие может относиться к кодированию блоков картинки, включающему в себя процесс кодирования или декодирования данных для блоков, например, кодирование предсказания и/или остатка. Кодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодирования (например, режимы кодирования) и разбиение картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, следует понимать как кодирование значений для синтаксических элементов, образующих картинку или блок.
[0051] HEVC определяет различные блоки, включая единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодирования видео (такое как кодер 200 видео) разбивает единицу дерева кодирования (CTU) на CU в соответствии со структурой квадродерева. То есть устройство кодирования видео разбивает CTU и CU на четыре равных, неперекрывающихся квадрата, и каждый узел квадродерева имеет либо ноль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать в себя одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет собой разбиение TU. В HEVC, PU представляют данные интер-предсказания, в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают информацию интра-предсказания, такую как указание интра-режима.
[0052] В качестве другого примера, кодер 200 видео и декодер 300 видео могут быть сконфигурированы для работы в соответствии с JEM или VVC. Согласно JEM или VVC, устройство кодирования видео (такое как кодер 200 видео) разбивает картинку на множество единиц дерева кодирования (CTU). Кодер 200 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева-двоичного дерева (QTBT) или структура дерева множества типов (MTT). Структура QTBT исключает концепции множества типов разбиения, такие как разделение между CU, PU и TU в HEVC. Структура QTBT включает в себя два уровня: первый уровень, разделенный в соответствии с разбиением квадродерева, и второй уровень, разделенный в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).
[0053] В структуре разбиения МТТ блоки могут быть разделены, используя разбиение квадродерева (QT), разбиение двоичного дерева (BT) и один или более типов разбиений троичного дерева (TT). Троичное разбиение является разбиением, в котором блок разделен на три подблока. В некоторых примерах, троичное разбиение разделяет блок на три подблока без разделения исходного блока через центр. Типы разбиения в МТТ (например, QT, BT и TT) могут быть симметричными или асимметричными.
[0054] В некоторых примерах, кодер 200 видео и декодер 300 видео могут использовать одну структуру QTBT или МТТ для представления каждого из компонентов яркости и цветности, в то время как в других примерах кодер 200 видео и декодер 300 видео могут использовать две или более структуры QTBT или МТТ, такие как одна структура QTBT/MTT для компонента яркости и другая структура QTBT/MTT для обоих компонентов цветности (или две структуры QTBT/МТТ для соответствующих компонентов цветности).
[0055] Кодер 200 видео и декодер 300 видео могут быть сконфигурированы, чтобы использовать разбиение квадродерева на HEVC, разбиение QTBT, разбиение МТТ или другие структуры разбиения. В целях объяснения, описание методов этого раскрытия представлено в отношении разбиения QTBT. Однако следует понимать, что способы настоящего изобретения также могут применяться к устройствам кодирования видео, сконфигурированным, чтобы использовать разбиение квадродерева или других типов разбиения.
[0056] Настоящее раскрытие может использовать “N×N” и “N на N” взаимозаменяемым образом для ссылки на размеры выборки блока (такого как CU или другой блок видео) в терминах вертикального и горизонтального размеров, например, 16×16 выборок или 16 на 16 выборок. В общем случае, CU размером 16×16 будет иметь 16 выборок в вертикальном направлении (y=16) и 16 выборок в горизонтальном направлении (x=16). Аналогично, CU размером N×N обычно имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, где N представляет неотрицательное целое значение. Выборки в CU могут быть расположены в строках и столбцах. Кроме того, CU не обязательно должны иметь одинаковое количество выборок в горизонтальном направлении и в вертикальном направлении. Например, CU может содержать N×M выборок, где M не обязательно равно N.
[0057] Кодер 200 видео кодирует данные видео для CU, представляющих информацию предсказания и/или остаточную информацию и другую информацию. Информация предсказания указывает, как должна предсказываться CU, чтобы формировать блок предсказания для CU. Остаточная информация обычно представляет собой разности от выборки к выборке между выборками CU перед кодированием и блоком предсказания.
[0058] Для предсказания CU, кодер 200 видео может обычно формировать блок предсказания для CU посредством интер-предсказания или интра-предсказания. Интер-предсказание обычно относится к предсказанию CU из данных ранее кодированной картинки, в то время как интра-предсказание обычно относится к предсказанию СU из ранее кодированных данных той же самой картинки. Чтобы выполнить интер-предсказание, кодер 200 видео может генерировать блок предсказания с использованием одного или более векторов движения. Кодер 200 видео обычно может выполнять поиск движения для идентификации опорного блока, который близко согласуется с CU, например, с точки зрения разностей между CU и опорным блоком. Кодер 200 видео может вычислить метрику разности с использованием суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD), средней абсолютной разности (MAD), средне-квадратичных разностей (МSD) или других подобных разностных вычислений для определения, является ли опорный блок близко согласованным с текущей CU. В некоторых примерах, кодер 200 видео может предсказывать текущую CU с использованием однонаправленного предсказания или двунаправленного предсказания.
[0059] Некоторые примеры VVC также обеспечивают аффинный режим компенсации движения, который может рассматриваться как режим интер-предсказания. В аффинном режиме компенсации движения, кодер 200 видео может определять два или более векторов движения, которые представляют непоступательное движение, такое как увеличение или уменьшение масштаба, вращение, движение в перспективе или другие нерегулярные типы движения.
[0060] Для выполнения интра-предсказания, кодер 200 видео может выбрать режим интра-предсказания для генерации блока предсказания. Некоторые примеры VVC обеспечивает шестьдесят семь режимов интра-предсказания, включая различные направленные режимы, а также планарный режим и режим DC. В общем случае, кодер 200 видео выбирает режим интра-предсказания, который описывает соседние выборки для текущего блока (например, блока CU), из которых следует предсказывать выборки текущего блока. Такие выборки обычно могут находиться сверху, сверху и слева или слева от текущего блока в той же картинке, что и текущий блок, в предположении, что кодер 200 видео кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).
[0061] Кодер 200 видео кодирует данные, представляющие режим предсказания для текущего блока. Например, для режимов интер-предсказания, кодер 200 видео может кодировать данные, представляющие, какой из различных доступных режимов интер-предсказания используется, а также информацию движения для соответствующего режима. Например, для однонаправленного или двунаправленного интер-предсказания, кодер 200 видео может кодировать векторы движения с использованием расширенного предсказания векторов движения (AMVP) или режима объединения. Кодер 200 видео может использовать аналогичные режимы для кодирования векторов движения для аффинного режима компенсации движения.
[0062] После предсказания, такого как интра-предсказание или интер-предсказание блока, кодер 200 видео может вычислить остаточные значения для блока. Остаточные значения, такие как остаточный блок, представляют разности от выборки к выборке между данным блоком и блоком предсказания для данного блока, сформированным с использованием соответствующего режима предсказания. Кодер 200 видео может применять одно или более преобразований к остаточному блоку для получения преобразованных данных в области преобразования вместо области выборок. Например, кодер 200 видео может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным данным видео. Кроме того, кодер 200 видео может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Кодер 200 видео формирует коэффициенты преобразования после применения одного или более преобразований.
[0063] Как отмечалось выше, после любых преобразований для получения коэффициентов преобразования, кодер 200 видео может выполнять квантование коэффициентов преобразования. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить объем данных, используемых для представления коэффициентов, обеспечивая дальнейшее сжатие. Путем выполнения процесса квантования, кодер 200 видео может уменьшить битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Например, кодер 200 видео может округлять n-битовое значение до m-битового значения во время квантования, где n больше, чем m. В некоторых примерах, чтобы выполнить квантование, кодер 200 видео может выполнить побитовое смещение вправо значения, подлежащего квантованию.
[0064] После квантования, кодер 200 видео может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть спроектировано так, чтобы помещать коэффициенты преобразования более высокой энергии (и, следовательно, более низкой частоты) в начале вектора и помещать коэффициенты преобразования более низкой энергии (и, следовательно, более высокой частоты) в конце вектора. В некоторых примерах, кодер 200 видео может использовать предопределенный порядок сканирования для сканирования квантованных коэффициентов преобразования для получения вектора, преобразованного в последовательную форму, а затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, кодер 200 видео может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, кодер 200 видео может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным двоичным арифметическим кодированием (CABAC). Кодер 200 видео может также энтропийно кодировать значения для синтаксических элементов, описывающих метаданные, ассоциированные с кодированными данными видео, для использования декодером 300 видео при декодировании данных видео.
[0065] Для выполнения CABAC, кодер 200 видео может назначать контекст в рамках контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа нулевыми или нет. Определение вероятности может основываться на контексте, назначенном символу.
[0066] Кодер 200 видео может дополнительно генерировать синтаксические данные, такие как синтаксические данные на блочной основе, синтаксические данные на основе картинки и синтаксические данные на основе последовательности, для декодера 300 видео, например, в заголовке картинки, заголовке блока, заголовке вырезки, или другие синтаксические данные, такие как набор параметров последовательности (SPS), набор параметров картинки (PPS) или набор параметров видео (VPS). Декодер 300 видео может также декодировать такие синтаксические данные, чтобы определить, как декодировать соответствующие данные видео.
[0067] Таким образом, кодер 200 видео может генерировать битовый поток, включающий в себя закодированные данные видео, например, синтаксические элементы, описывающие разбиение картинки на блоки (например, CU), и информацию предсказания и/или остаточную информацию для блоков. В конечном счете, декодер 300 видео может принимать битовый поток и декодировать закодированные данные видео.
[0068] В принципе, декодер 300 видео выполняет процесс, обратный процессу, выполняемому кодером 200 видео, для декодирования закодированных данных видео битового потока. Например, декодер 300 видео может декодировать значения для синтаксических элементов битового потока с использованием CABAC, по существу аналогично, хотя и обратным образом, по отношению к процессу кодирования CABAC кодера 200 видео. Синтаксические элементы могут определять информацию разбиения картинки на CTU и разбиения каждой CTU согласно соответствующей структуре разбиения, такой как структура QTBT, для определения CU в CTU. Синтаксические элементы могут дополнительно определять предсказание и остаточную информацию для блоков (например, CU) данных видео.
[0069] Остаточная информация может быть представлена, например, квантованными коэффициентами преобразования. Декодер 300 видео может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока для восстановления остаточного блока для данного блока. Декодер 300 видео использует сигнализированный режим предсказания (интра- или интер-предсказания) и связанную информацию предсказания (например, информацию движения для интер-предсказания) для формирования блока предсказания для данного блока. Декодер 300 видео может затем объединять блок предсказания и остаточный блок (на основе от выборки к выборке) для восстановления исходного блока. Декодер 300 видео может выполнять дополнительную обработку, такую как выполнение процесса устранения блочности для уменьшения визуальных артефактов вдоль границ блока.
[0070] Настоящее раскрытие может, в общем, ссылаться на “сигнализацию” определенной информации, такой как синтаксические элементы. Термин “сигнализация” может, в общем, относиться к сообщению значений для синтаксических элементов и/или других данных, используемых для декодирования закодированных данных видео. То есть, кодер 200 видео может сигнализировать значения для синтаксических элементов в битовом потоке. В общем, сигнализация относится к генерации значения в битовом потоке. Как отмечалось выше, устройство-источник 102 может транспортировать битовый поток к устройству-получателю 116 по существу в реальном времени или не в реальном времени, как может происходить при сохранении синтаксических элементов в устройстве 112 хранения для последующего извлечения устройством-получателем 116.
[0071] В соответствии с методами настоящего раскрытия, кодер 200 видео и декодер 300 видео могут быть сконфигурированы, чтобы выполнять уточнения предсказания на основе градиента. Как описано выше, как часть интер-предсказания текущего блока, кодер 200 видео и декодер 300 видео могут определять один или более блоков предсказания (например, на основе одного или более векторов движения) для текущего блока. В уточнении предсказания на основе градиента, кодер 200 видео и декодер 300 видео модифицируют одну или более выборок (например, включая все выборки) блока предсказания.
[0072] Например, в уточнении предсказания на основе градиента, выборка интер-предсказания (например, выборка блока предсказания) в местоположении (i, j) уточняется посредством сдвига Δl(i, j), который выводится посредством смещения в горизонтальном направлении, горизонтального градиента, смещения в вертикальном направлении и вертикального градиента в местоположении (i, j). В одном примере, уточнение предсказания описывается как: Δl(i, j)=gx(i, j)*Δvx(i, j)+gy(i, j)*Δvy(i, j), где gx(i, j) - горизонтальный градиент, gy(i, j) - вертикальный градиент, Δvx(i, j) - смещение в горизонтальном направлении и Δvy(i, j) - смещение в вертикальном направлении.
[0073] Градиент изображения является мерой направленного изменения интенсивности или цвета в изображении. Например, значение градиента основано на скорости изменения цвета или интенсивности в направлении с наибольшим изменением цвета или интенсивности на основе соседних выборок. В качестве одного примера, значение градиента больше, если скорость изменения является относительно высокой, чем в случае, если скорость изменения является относительно низкой.
[0074] Кроме того, блок предсказания для текущего блока может быть в опорной картинке, которая отличается от текущей картинки, которая включает в себя текущий блок. Кодер 200 видео и декодер 300 видео могут определять сдвиг (например, Δl(i, j)) на основе значений выборок в опорной картинке (например, градиент определяется на основе значений выборок в опорной картинке). В некоторых примерах, значения, используемые для определения градиента, могут быть значениями в самом блоке предсказания или значениями, сгенерированными на основе значений блока предсказания (например, интерполированными, округленными и т.д. значениями, сгенерированными из значений в блоке предсказания). Кроме того, в некоторых примерах, значения, используемые для определения градиента, могут быть внешними по отношению к блоку предсказания и в пределах опорной картинки или сгенерированными (например, интерполированными, округленными и т.д.) из выборок, внешних по отношению к блоку предсказания и в пределах опорной картинки.
[0075] Однако, в некоторых примерах, кодер 200 видео и декодер 300 видео могут определять сдвиг на основе значений выборок в текущей картинке. В некоторых примерах, таких как внутри-блочное копирование, текущая картинка и опорная картинка являются одной и той же картинкой.
[0076] Смещение (например, вертикальное и/или горизонтальное смещение) может быть определено на основе режима интер-предсказания. В некоторых примерах, смещение определяется на основе параметров движения. Как описано более подробно, для режима уточнения движения на стороне декодера, смещение может быть основано на выборках в опорной картинке. Для других режимов интер-предсказания, смещение может не быть основано на выборках в опорной картинке, но примерные методы не ограничены этим, и выборки в опорной картинке могут использоваться для определения смещения. Могут существовать различные способы определения вертикальных и/или горизонтальных смещений, и методы не ограничены конкретным способом определения вертикальных и/или горизонтальных смещений.
[0077] Ниже описаны примерные способы для выполнения вычисления градиента. Например, для градиентного фильтра, в одном примере, Sobel-фильтр может использоваться для вычисления градиента. Градиенты вычисляются следующим образом:
и
[0078] В некоторых примерах применяется фильтр [1, 0, -1]. Градиенты могут вычисляться следующим образом: и . В некоторых примерах может применяться некоторый другой градиентный фильтр (например, Canny-фильтр). Примерные методы, описанные в этом раскрытии, не ограничиваются конкретным градиентным фильтром.
[0079] Для нормализации градиента, вычисленные градиенты могут быть нормализованы перед использованием в выведении сдвига уточнения (например, перед вычислением ΔI), или нормализация может быть выполнена после вывода сдвига уточнения. Процесс округления может применяться во время нормализации. Например, если применяется фильтр [1, 0, -1], нормализация выполняется путем добавления одного к входному значению и затем сдвига вправо на один. Если ввод масштабируется в два в степени N, то нормализация выполняется путем добавления 1<<N и затем сдвига вправо на (N+1).
[0080] Для градиента на границе, градиенты на границе блока предсказания могут быть вычислены путем расширения блока предсказания на S/2 на каждой границе, где S является шагом фильтрации для вычисления градиента. В одном примере, расширенные выборки предсказания генерируются с использованием того же вектора движения, что и блок предсказания для интер-предсказания (компенсации движения). В некоторых примерах, расширенные выборки предсказания генерируются с использованием того же вектора движения, но с использованием более короткого фильтра для процесса интерполяции при компенсации движения. В некоторых примерах, расширенные выборки предсказания генерируются с использованием округленного вектора движения для целочисленной компенсации движения. В некоторых примерах, расширенные выборки предсказания генерируются посредством заполнения, где заполнение выполняется посредством копирования граничных выборок. В некоторых примерах, если блок предсказания генерируется посредством компенсации движения на основе подблока, расширенные выборки предсказания генерируются с использованием вектора движения ближайшего подблока. В некоторых примерах, если блок предсказания генерируется посредством компенсации движения на основе подблока, расширенные выборки предсказания генерируются с использованием одного репрезентативного вектора движения. В одном примере, репрезентативный вектор движения может представлять собой вектор движения в центре блока предсказания. В одном примере, репрезентативный вектор движения может быть получен путем усреднения векторов движения граничных подблоков.
[0081] Вывод градиента на основе подблока может быть применен для облегчения параллельной обработки или удобного проектирования конвейера в аппаратных средствах. Ширина и высота подблока, обозначенные как sbW и sbH, могут быть определены следующим образом: sbW=min(blkW, SB_WIDTH) и sbH=min(blkH, SB_HEIGHT). В этом уравнении, blkW и blkH являются шириной и высотой блока предсказания, соответственно. SB_WIDTH и SB_HEIGHT являются двумя предопределенными переменными. В одном примере, SB_WIDTH и SB_HEIGHT оба равны 16.
[0082] Для горизонтального и вертикального смещений, горизонтальное и вертикальное смещения Δvx(i, j) и Δvy(i, j), которые используются в выведении уточнения, могут быть определены в зависимости от режима интер-предсказания, в некоторых примерах. Однако примерные методы не ограничены определением горизонтального и вертикального смещений на основе режима интер-предсказания.
[0083] Для интер-режима малого размера блока (например, блоки малого размера, которые являются интер-предсказанными), для уменьшения ширины полосы памяти наихудшего случая, режим интер-предсказания для малого блока может быть отключен или ограничен. Например, интер-предсказание для 4×4 блока или меньше отключается, двунаправленное предсказание для 4×8, 8×4, 4×16 и 16×4 может быть отключено. Ширина полосы памяти может быть увеличена вследствие процесса интерполяции для этих малых блоков. Целочисленная компенсация движения, без интерполяции, все еще может применяться к этим малым блокам без увеличения ширины полосы памяти наихудшего случая.
[0084] В одном или более примерных методах, интер-предсказание может быть задействовано для некоторых или всех этих малых блоков, но с целочисленной компенсацией движения и уточнением предсказания на основе градиента. Вектор движения сначала округляется до целочисленного вектора движения для компенсации движения. Затем оставшаяся часть округления, т.е. суб-пиксельная часть вектора движения, используется как Δvx(i, j) и Δvy(i, j) для уточнения предсказания на основе градиента. Например, если вектор движения для малого блока равен (2,25, 5,75), то целочисленный вектор движения, используемый для компенсации движения, будет (2, 6), и горизонтальное смещение (например, Δvx(i, j)) составит 0,25, и вертикальное смещение (например, Δvy(i, j)) составит 0,75. В этом примере, уровень точности горизонтального и вертикального смещения составляет 0,25 (или 1/4). Например, горизонтальные и вертикальные смещения могут увеличиваться с шагами 0,25.
[0085] В некоторых примерах, для интер-режима малого размера блока, уточнение предсказания на основе градиента может быть доступно, но только если блок малого размера является интер-предсказанным в режиме объединения. Примеры режима объединения описаны ниже. В некоторых примерах, для интер-режима малого размера, уточнение предсказания на основе градиента может быть отключено для блоков, имеющих целочисленный режим движения. В целочисленном режиме движения, один или более векторов движения (например, сигнализируемые векторы движения) являются целыми числами. В некоторых примерах, даже для блоков большего размера, если блоки являются интер-предсказанными в целочисленном режиме движения, уточнение предсказания на основе градиента может быть отключено для таких блоков.
[0086] Для нормального режима объединения, который является примером режима интер-предсказания, где информация движения выводится из пространственных или временных соседних кодированных блоков, Δvx(i, j) и Δvy(i, j) могут быть оставшейся частью процесса округления вектора движения (например, аналогично указанному выше примеру вектора движения (2,25, 5,75)). В одном примере, временной предсказатель вектора движения выводится посредством масштабирования вектора движения в буфере временного движения согласно счету порядка картинок, отличающемуся между текущей картинкой и опорными картинками. Процесс округления может быть выполнен для округления масштабированного вектора движения до определенной точности. Оставшаяся часть может быть использована как Δvx(i, j) и Δvy(i, j). Точность оставшейся части (т.е. уровень точности горизонтального и вертикального смещений) может быть предварительно определенной и может быть выше, чем точность предсказания вектора движения. Например, если точность вектора движения составляет 1/16, точность оставшейся части равна 1/(16*MaxBlkSize), где MaxBlkSize является максимальным размером блока. Другими словами, уровень точности для горизонтального и вертикального смещений (например, Δvx и Δvy) составляет 1/(16*MaxBlkSize).
[0087] Для объединения с режимом разности векторов движения (MMVD), который является примером режима интер-предсказания, разность векторов движения сигнализируется вместе с индексом объединения для представления информации движения. В некоторых методах, разность векторов движения (например, разность между фактическим вектором движения и предсказателем вектора движения) имеет ту же точность вектора движения. В одном или более примерах, описанных в этом раскрытии, разность векторов движения может иметь более высокую точность. Сигнализируемая разность векторов движения сначала округляется до точности вектора движения, и вектор движения, указанный индексом объединения, добавляется, чтобы сгенерировать конечный вектор движения для компенсации движения. В одном или более примерах, оставшаяся часть после округления (например, разность между округленным значением разности векторов движения и исходным значением разности векторов движения) может использоваться в качестве горизонтального и вертикального смещений (например, использоваться как Δvx(i, j) и Δvy(i, j)) для уточнения предсказания на основе градиента. В некоторых примерах Δvx(i, j) и Δvy(i, j) могут сигнализироваться как кандидаты разности векторов движения.
[0088] Для режима уточнения вектора движения на стороне декодера, выполняется компенсация движения с использованием исходных векторов движения для формирования исходных блоков двунаправленного предсказания, и вычисляется разность между предсказаниями списка 0 и списком 1, обозначенная как DistOrig. Список 0 относится к первому списку опорных картинок (RefPicList0), который включает в себя список опорных картинок, которые потенциально могут использоваться для интер-предсказания. Список 1 относится ко второму списку опорных картинок (RefPicList1), который включает в себя список опорных картинок, которые потенциально могут использоваться для интер-предсказания. Затем векторы движения в списке 0 и списке 1 округляются до ближайших целочисленных позиций. То есть, вектор движения, который относится к картинке в списке 0, округляется до ближайшей целочисленной позиции, и вектор движения, который относится к картинке в списке 1, округляется до ближайшей целочисленной позиции. Алгоритм поиска используется для поиска в диапазоне целочисленных смещений для нахождения пары смещений, которая имеет наименьшее искажение, DistNew, между блоком картинки, идентифицированным в списке 0 предсказания, и блоком картинки, идентифицированным в списке 1, с использованием новых целочисленных векторов движения для компенсации движения. Если DistNew меньше, чем DistOrig, новые целочисленные векторы движения подаются в двунаправленный оптический поток (BDOF) для получения Δvx(i, j) и Δvy(i, j) для уточнения предсказания как в списке 0, так и в списке 1 предсказания. В противном случае, BDOF выполняется в исходном списке 0 и списке 1 предсказания для уточнения предсказания.
[0089] Для аффинного режима, поле движения может быть получено для каждого пиксела (например, вектор движения может быть определен на попиксельной основе). Однако поле движения на основе 4×4 используется для компенсации аффинного движения для уменьшения сложности и ширины полосы памяти. Например, вместо определения вектора движения на попиксельной основе, вектор движения определяется для подблоков, где один подблок составляет 4×4, в качестве одного примера. Можно также использовать некоторые другие размеры подблоков, 4×2, 2×4 или 2×2 для примеров. В одном или более примерах, уточнение предсказания на основе градиента может использоваться для улучшения компенсации аффинного движения. Градиент блока может быть вычислен, как описано выше. При условии модели аффинного движения: , где a, b, c, d, e и f являются значениями, определенными кодером 200 видео и декодером 300 видео на основе векторов движения контрольных точек и длины и ширины блока, в качестве нескольких примеров. Значения для a, b, c, d, e и f могут сигнализироваться в некоторых примерах.
[0090] Ниже описаны некоторые примеры способов определения a, b, c, d, e и f. В устройстве кодирования видео (например, кодере 200 видео или декодере 300 видео), картинка разбита на подблоки для блочного кодирования, в аффинном режиме. Аффинная модель движения для блока также может быть описана тремя векторами движения (MV) , и в трех различных местоположениях, которые не находятся на одной и той же линии. Три местоположения обычно упоминаются как контрольные точки, и три вектора движения называются векторами движения контрольных точек (CMV). В случае, когда три контрольные точки находятся в трех углах блока, аффинное движение может быть описано как
где blkW и blkH - ширина и высота блока.
[0091] Для аффинного режима, кодер 200 видео и декодер 300 видео могут определять вектор движения для каждого подблока, используя репрезентативную координату подблока (например, центральную позицию подблока). В одном примере, блок разделен на неперекрывающиеся подблоки. Ширина блока равна blkW, высота блока равна blkH, ширина подблока равна sbW, а высота подблока равна sbH, тогда имеются строки blkH/sbH подблоков и blkW/sbW подблоков в каждой строке. Для шести-параметрической модели аффинного движения, вектор движения для подблока (упоминается как подблок MV) в i-ой строке (0<=i<blkW/sbW) и j-ом столбце (0<=j< blkH/sbH) выводится как
[0092] Из приведенного выше уравнения переменные a, b, c, d, e и f могут быть определены следующим образом:
e=v 0 x
f=v 0 y
[0093] Для аффинного режима, который является примером режима интер-предсказания, кодер 200 видео и декодер 300 видео могут определять смещение (например, горизонтальное или вертикальное смещения) по меньшей мере одним из следующих способов. Приведенные ниже примеры не должны рассматриваться как ограничивающие. Могут быть другие способы, которыми кодер 200 видео и декодер 300 видео могут определять смещение (например, горизонтальное или вертикальное смещения) для аффинного режима.
[0094] Для компенсации аффинного движения на основе подблока 4×4, для выведения смещения на основе 2×2, смещения в каждом подблоке 2×2 одинаковы. В каждом подблоке 4×4, Δv(i, j) для четырех подблоков 2×2 в пределах 4×4 вычисляются следующим образом:
Верхний-левый 2×2:
Верхний-правый 2×2:
Нижний-левый 2×2:
Нижний-правый 2×2:
[0095] Для выведения смещения 1×1, смещения выводятся для каждой выборки. Координата верхней-левой выборки в 4×4 может быть (0,0), в этом случае Δv(i, j) выводится как:
.
[0096] В некоторых примерах, деление на 2, которое реализуется как операция сдвига вправо, может быть перемещено в вычисление сдвига уточнения. Например, вместо выполнения операции деления на 2 при выведении горизонтального и вертикального смещения (например, Δvx и Δvy), кодер 200 видео и декодер 300 видео могут выполнять операцию деления на 2 как часть определения ΔI (например, сдвига уточнения).
[0097] Для компенсации аффинного движения на основе подблока 4×2, поле движения для хранения вектора движения все еще 4×4; однако компенсация аффинного движения составляет 4×2. Вектор движения (MV) для подблока 4×4 может быть (vx, vy), в этом случае, MV для компенсации движения левого 4×2 составляет (vx-a, vy-c), и MV для компенсации движения левого 4×2 составляет (vx+a, vy+c).
[0098] Для выведения смещения на основе 2×2, при выведении смещения на основе 2×2, смещения в каждом подблоке 2×2 одинаковы. В каждом подблоке 4×2, Δv(i, j) для 2 подблоков 2×2 в пределах 4×4 вычисляются следующим образом:
Верхний 2×2:
Нижний 2×2:
[0099] Для выведения смещения 1×1, смещения выводятся для каждой выборки. Пусть координата верхней-левой выборки в 4×2 равна (0,0), тогда Δv(i, j) может быть выведено следующим образом:
.
[0100] Деление на 2, которое может быть реализовано как операция сдвига вправо, может быть перемещено в вычисление сдвига уточнения. Например, вместо выполнения операции деления на 2 при выведении горизонтального и вертикального смещений (например, Δvx и Δvy), кодер 200 видео и декодер 300 видео могут выполнять операцию деления на 2 как часть определения ΔI (например, сдвига уточнения).
[0101] Для компенсации аффинного движения на основе 2×4, поле движения для хранения вектора движения все еще равно 4×4; однако, компенсация аффинного движения составляет 2×4. MV для подблока 4×4 может быть (vx, vy), в этом случае, MV для компенсации движения левого 4×2 равен (vx-b, vy-d), и MV для компенсации движения левого 4×2 равен (vx+b, vy+d).
[0102] Для выведения смещения на основе 2×2, смещения в каждом подблоке 2×2 одинаковы. В каждом подблоке 2×4, Δv(i, j) для подблоков 2×2 в пределах 2×4 вычисляются следующим образом:
Левый 2×2:
Правый 2×2:
[0103] Для выведения смещения 1×1, при выведении смещения на основе 1×1, смещения выводятся для каждой выборки. Координата верхней-левой выборки в 2×4 может быть (0,0), в этом случае Δv(i, j) может быть выведено следующим образом:
[0104] Деление на 2, которое может быть реализовано как операция сдвига вправо, может быть перенесено в вычисление сдвига уточнения. Например, вместо выполнения операции деления на 2 при выведении горизонтального и вертикального смещений (например, Δvx и Δvy), кодер 200 видео и декодер 300 видео могут выполнять операцию деления на 2 как часть определения ΔI (например, сдвига уточнения).
[0105] Нижеследующее описывает уточнение предсказания для аффинного режима. После того, как выполняется компенсация аффинного движения на основе подблока, сигнал предсказания может быть уточнен путем добавления сдвига, выведенного на основе попиксельного движения, и градиента сигнала предсказания. Сдвиг в местоположении (m, n) может быть вычислен как:
ΔI(m, n)=gx(m, n)*Δvx(m, n)+gy(m, n)*Δvy(m, n)
[0106] где gx(m, n) - горизонтальный градиент и gy(m, n) - вертикальный градиент сигнала предсказания, соответственно. Δvx(m, n) и Δvy(m, n) - разности по x- и y-компонентам между вектором движения, вычисленным в местоположении (m, n) пиксела местоположения и MV подблока. Пусть координата верхней-левой выборки подблока составляет (0,0), центр подблока составляет ). При данных параметрах аффинного движения a, b, c и d, Δvx(m, n) и Δvy(m, n) могут быть выведены следующим образом:
[0107] В модели аффинного движения, основанной на контрольных точках, параметры a, b, c и d аффинного движения вычисляются из CMV как
[0108] Далее описывается двунаправленный оптический поток (BDOF). Инструмент двунаправленного оптического потока (BDOF) включен в VTM4. BDOF ранее упоминался как BIO. BDOF может использоваться для уточнения сигнала двунаправленного предсказания единицы кодирования (CU) на уровне подблока 4×4. Режим BDOF основан на принципе оптического потока, которая предполагает, что движение объекта является плавным. Для каждого подблока 4×4, вычисляется уточнение движения (vx, vy) посредством минимизации разности между выборками предсказания L0 и L1 (например, выборками предсказания из опорной картинки в первом списке L0 опорных картинок и выборками предсказания из опорной картинки во втором списке L1 опорных картинок). Уточнение движения затем используется для коррекции двунаправленно предсказанных значений выборок в подблоке 4×4. Следующие этапы применяются в процессе BDOF.
[0109] Во-первых, горизонтальный и вертикальный градиенты и , k=0, 1 двух сигналов предсказания вычисляются посредством прямого вычисления разности между двумя соседними выборками, то есть
[0110] где I(k)(i, j) - значение выборки в координате (i, j) сигнала предсказания в списке k, k=0, 1.
[0111] Затем вычисляются авто- и кросс-корреляция градиентов S1, S2, S3, S5 и S6 как
,
[0112] где
,
[0113] где Ω представляет собой окно 6×6 вокруг подблока 4×4.
[0114] Уточнение движения (vx, vy) затем выводится с использованием членов кросс- и автокорреляции с использованием следующего:
[0115] где ⎣∙⎦ - функция округления до ближайшего целого в меньшую сторону (floor).
[0116] На основе уточнения движения и градиентов, вычисляется следующая коррекция для каждой выборки в подблоке 4×4:
[0117] Наконец, выборки BDOF из CU вычисляются посредством коррекции выборок двунаправленного предсказания следующим образом:
ooffset=1 << (shift - 1) т.е. сдвиг округления.
[0118] Эти значения выбираются таким образом, что множители в процессе BDOF не превышают 15 бит, а максимальная битовая ширина промежуточных параметров в процессе BDOF поддерживается в пределах 32 бит.
[0119] Для получения значений градиента, должны быть сгенерированы некоторые выборки I(k)(i,j) в списке k (k=0, 1) за пределами границ текущей CU. Как показано на фиг. 5, BDOF в VTM4 использует одну расширенную строку/столбец вокруг границ CU. Для того чтобы контролировать вычислительную сложность генерации выборок предсказания за пределами границы, выборки предсказания в расширенной области (белые позиции) генерируются путем взятия опорных выборок в близлежащих целочисленных позициях (с использованием операции floor() по координатам) непосредственно без интерполяции, и нормальный 8-отводный интерполяционный фильтр компенсации движения используется для генерации выборок предсказания в CU (серые позиции). Эти расширенные значения выборок используются только при вычислении градиента. Для оставшихся этапов в процессе BDOF, если требуются какие-либо значения выборок и градиента вне границ CU, такие выборки заполняются (т.е. повторяются) из их ближайших соседей.
[0120] Ниже описана точность смещений и градиента. В некоторых примерах, одна и та же точность для горизонтального и вертикального смещения может использоваться во всех режимах. Точность может быть предварительно определена или сигнализирована в синтаксисе высокого уровня. Поэтому, если горизонтальное и вертикальное смещения выводятся из различных режимов, имеющих различную точность, горизонтальное и вертикальное смещения округляются до предопределенной точности. Примерами предопределенной точности являются: 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 и т.д.
[0121] Как описано выше, точность, также называемая уровнем точности, может указывать, насколько точны горизонтальное и вертикальное смещения (например, Δvx и Δvy), где горизонтальное и вертикальное смещения могут быть определены с использованием одного или более примеров, описанных выше, или с использованием некоторых других способов. В общем, уровень точности определяется как десятичный (например, 0,25, 0,125, 0,0625, 0,03125, 0,015625, 0,0078125 и т.д.) или дробный (например, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 и т.д.). Например, для уровня точности 1/4, горизонтальное или вертикальное смещения могут быть представлены с шагом 0,25 (например, 0,25, 0,5 или 0,75). Для уровня точности 1/8, горизонтальное и вертикальное смещения могут быть представлены с шагом 0,125 (например, 0,125, 0,25, 0,325, 0,5, 0,625, 0,75 или 0,825). Как можно видеть, чем ниже числовое значение уровня точности (например, 1/8 меньше, чем 1/4), тем больше гранулярность для приращений, и более точное значение может быть представлено (например, для уровня точности 1/4, смещения округляются до ближайшего четвертого, но для уровня точности 1/8, смещения округляются до ближайшего восьмого).
[0122] Поскольку горизонтальное и вертикальное смещения могут иметь разные уровни точности для различных режимов интер-предсказания, кодер 200 видео и декодер 300 видео могут быть сконфигурированы, чтобы включать в себя различные логические схемы для выполнения уточнения предсказания на основе градиента для различных режимов интер-предсказания. Как описано выше, для выполнения уточнения предсказания на основе градиента, кодер 200 видео и декодер 300 видео могут выполнять следующие операции: gx(i,j)*Δvx(i,j)+gy(i,j)*Δvy(i,j), где gx и gy - первый градиент на основе первого набора выборок из выборок блока предсказания и второй градиент на основе второго набора выборок из выборок блока предсказания, соответственно, и Δvx и Δvy являются горизонтальным и вертикальным смещениями, соответственно. Как можно видеть, для уточнения предсказания на основе градиента, может потребоваться, чтобы кодер 200 видео и декодер 300 видео выполняли операции умножения и сложения, а также использовали память для хранения временных результатов, используемых в вычислении.
[0123] Однако способность логической схемы (например, схемы умножителя, схемы сумматора, регистра памяти) для выполнения математических операций может быть ограничена уровнем точности, для которого сконфигурирована логическая схема. Например, логическая схема, сконфигурированная для первого уровня точности, может быть неспособной выполнять операции, необходимые для уточнения градиентного предсказания, где горизонтальное или вертикальное смещение находится на более точном втором уровне точности.
[0124] Соответственно, некоторые методы используют различные наборы логических схем, сконфигурированных для разных уровней точности для выполнения уточнения предсказания на основе градиента для различных режимов интер-предсказания. Например, первый набор логических схем может быть сконфигурирован, чтобы выполнять уточнение предсказания на основе градиента для режимов интер-предсказания, в которых горизонтальное и/или вертикальное смещение равно 0,25, и второй набор логических схем может быть сконфигурирован, чтобы выполнять уточнение предсказания на основе градиента для режимов интер-предсказания, где горизонтальное и/или вертикальное смещение составляет 0,125. Использование этих различных наборов схем увеличивают общий размер кодера видео 200 и декодера видео 300, а также потенциально расходуемую мощность.
[0125] В некоторых примерах, описанных в этом раскрытии, один и тот же процесс вычисления градиента может использоваться для всех режимов интер-предсказания. Иными словами, одна и та же логическая схема может использоваться для выполнения уточнения предсказания на основе градиента для различных режимов интер-предсказания. Например, точность градиента может поддерживаться одинаковой для уточнения предсказания во всех режимах интер-предсказания. В некоторых примерах, для точности смещений и градиентов, примерные методы могут гарантировать, что один и тот же (или унифицированный) процесс уточнения предсказания может применяться к различным режимам, и один и тот же модуль уточнения предсказания может быть применен к различным режимам.
[0126] В качестве примера, кодер 200 видео и декодер 300 видео могут быть сконфигурированы, чтобы округлять по меньшей мере одно из горизонтального и вертикального смещений до уровня точности, который является одинаковым для различных режимов интер-предсказания (например, является одинаковым для аффинного режима и BDOF). Например, если уровень точности, до которого округлены горизонтальное и вертикальное смещения, равен 0,015625 (1/64), то если уровень точности горизонтального и/или вертикального смещений составляет 1/4 для одного режима интер-предсказания, тогда уровень точности горизонтального и/или вертикального смещения округляется до 1/64. Если уровень точности горизонтального и/или вертикального смещений равен 1/128, то уровень точности горизонтального и/или вертикального смещения округляется до 1/64.
[0127] Таким образом, логическая схема для уточнения предсказания на основе градиента может быть повторно использована для различных режимов интер-предсказания. Например, в вышеприведенном примере, кодер 200 видео и декодер 300 видео могут включать в себя логические схемы для уровня точности 0,125, и эта логическая схема может быть повторно использована для различных режимов интер-предсказания, поскольку уровень точности горизонтального и/или вертикального смещений округляется до 0,125.
[0128] В некоторых примерах, когда округление не выполняется в соответствии с методами, описанными в этом раскрытии, логическая схема для операций умножения и накопления может быть повторно использована, если логическая схема спроектирована, чтобы иметь точность относительно высокого уровня (например, логическая схема, спроектированная для конкретного уровня точности для умножения, может обрабатывать операции умножения для значений более низкого уровня точности). Однако, для операций сдвига, логическая схема, спроектированная для конкретной точности, может быть неспособной обрабатывать операции сдвига для значений более низкого уровня точности. С помощью примерных методов, описанных в этом раскрытии, с описанными способами округления, можно повторно использовать логическую схему, в том числе, для операций сдвига для различных режимов интер-предсказания.
[0129] В одном примере, сдвиг уточнения предсказания выводится следующим образом:
ΔI(i, j)=gx(i, j)*Δvx(i, j)+gy(i, j)*Δvy(i, j)+ offset >> shift
[0130] В вышеприведенном уравнении, offset равно 1<<(shift - 1), и shift определяется предопределенной точностью смещения и градиента и фиксирован для различных режимов. В некоторых примерах, offset равно 0.
[0131] В некоторых примерах, режим может включать в себя один или более из режимов, описанных выше в отношении горизонтального и вертикального смещений, таких как интер-режим малого размера блока, нормальный режим объединения, объединение с разностью векторов движения, режимом уточнения вектора движения на стороне декодера и аффинный режим. Режим может также включать в себя двунаправленный оптический поток (BDOF), описанный выше.
[0132] Может быть отдельное уточнение для каждого направления предсказания. Например, в случае двунаправленного предсказания, уточнение предсказания может выполняться отдельно для каждого направления предсказания. Результат уточнения может быть ограничен до определенного диапазона для обеспечения той же битовой ширины, что и предсказание без уточнения. Например, результат уточнения ограничивается (отсекается) до 16-битового диапазона. Как отмечено выше, примерные методы также могут быть применены к BDOF, где смещения в двух разных направлениях предполагается находящимся на одной и той же траектории движения.
[0133] Ниже описано N-битовое (например, 16 бит) ограничение умножения. Чтобы уменьшить сложность уточнения предсказания на основе градиента, умножение может поддерживаться в пределах N бит (например, 16 бит). Градиент и смещения должны быть в этом примере представлены не более чем 16 битами. Если нет, то градиент или смещение квантуется, чтобы находиться в пределах 16 бит, в этом примере. Например, сдвиг вправо может применяться для поддержания 16-битового представления.
[0134] Ниже описывается ограничение сдвига ΔI(i, j) уточнения и результата уточнения. Смещение ΔI(i, j) уточнения ограничивается до определенного диапазона. В одном примере, диапазон определяется диапазоном исходного сигнала предсказания. Диапазон ΔI(i, j) может быть таким же, как диапазон исходного сигнала предсказания, или диапазон может быть масштабированным диапазоном. Шкала может быть 1/2, 1/4, 1/8 и т.д. Результат уточнения ограничивается, чтобы иметь тот же самый диапазон, что и исходный сигнал предсказания (например, диапазон выборок в блоке предсказания). Уравнение для выполнения ограничения представляет собой:
pbSamples[x][y]=Clip3(0, (2BitDepth)−1, (predSamplesL0[x+1]
[y+1] + offset4+predSamplesL1[x+1][y+1] + bdofOffset) >> shift4)
[0135] где predSamplesL0, predSpamplesL1 являются выборками предсказания в каждом однонаправленном предсказании. bdofOffset представляет собой сдвиг уточнения, выведенный посредством BDOF. Offset4=1<<(shift4-1), и Clip3(min, max, x) представляет собой функцию для ограничения значения x, чтобы находиться в диапазоне от min до max включительно.
[0136] Таким образом, кодер 200 видео и декодер 300 видео могут быть сконфигурированы, чтобы определять блок предсказания для интер-предсказания текущего блока. Например, кодер 200 видео и декодер 300 видео могут определять вектор движения или вектор блока (например, для режима внутри-блочного копирования), который указывает на блок предсказания.
[0137] Кодер 200 видео и декодер 300 видео могут определять по меньшей мере одно из горизонтального или вертикального смещений для уточнения предсказания на основе градиента одной или более выборок блока предсказания. Примером горизонтального смещения является Δvx, и примером вертикального смещения является Δvy. В некоторых примерах, кодер 200 видео и декодер 300 видео могут определять по меньшей мере одно из горизонтального или вертикального смещения для уточнения предсказания на основе градиента одной или более выборок блока предсказания на основе режима интер-предсказания (например, определять Δvx и Δvy с использованием вышеописанных примерных методов для аффинного режима или определять Δvx и Δvy с использованием вышеописанных примерных методов для режима объединения, в качестве двух примеров).
[0138] В соответствии с одним или более примерами, кодер 200 видео и декодер 300 видео могут округлять по меньшей мере одно из горизонтального и вертикального смещений до уровня точности, который является одинаковым для различных режимов интер-предсказания. Примеры различных режимов интер-предсказания включают в себя аффинный режим и BDOF. Например, уровень точности для первого горизонтального или вертикального смещения для выполнения уточнения предсказания на основе градиента для первого блока, интер-предсказанного в первом режиме интер-предсказания, может находиться на первом уровне точности, и уровень точности для второго горизонтального или вертикального смещения для выполнения уточнения предсказания на основе градиента для второго блока, интер-предсказанного во втором режиме интер-предсказания, может находиться на втором уровне точности. Кодер 200 видео и декодер 300 видео могут быть сконфигурированы, чтобы округлять первый уровень точности для первого горизонтального или вертикального смещения до уровня точности и округлять второй уровень точности для первого горизонтального или вертикального смещения до того же самого уровня точности.
[0139] В некоторых примерах, уровень точности может быть предварительно определен (например, предварительно сохранен в кодере 200 видео и декодере 300 видео) или может сигнализироваться (например, определяется кодером 200 видео и сигнализируется в декодер 300 видео). В некоторых примерах, уровень точности может составлять 1/64.
[0140] Кодер 200 видео и декодер 300 видео могут быть сконфигурированы для определения одного или более сдвигов уточнения на основе округленного по меньшей мере одного из горизонтального или вертикального смещений. Например, кодер 200 видео и декодер 300 видео могут определять ΔI(i, j) для каждой выборки блока предсказания с использованием соответствующих округленных по меньшей мере одного из горизонтального или вертикального смещений. То есть кодер 200 видео и декодер 300 видео могут определять сдвиг уточнения для каждой выборки блока предсказания. В некоторых примерах, кодер 200 видео и декодер 300 видео могут использовать округленные горизонтальное и вертикальное смещения для определения сдвига уточнения (например, ΔI).
[0141] Как описано, для выполнения уточнения предсказания на основе градиента, кодер 200 видео и декодер 300 видео могут определять первый градиент на основе первого набора выборок из одной или более выборок блока предсказания (например, определять gx(i, j), где первый набор выборок является выборками, используемыми для определения gx(i, j)), и определять второй градиент на основе второго набора выборок из одной или более выборок блока предсказания (например, определять gy(i, j), где второй набор выборок является выборками, используемыми для определения gy(i, j)). Кодер 200 видео и декодер 300 видео могут определять сдвиги уточнения на основе округленных горизонтального и вертикального смещений и первого и второго градиентов.
[0142] Кодер 200 видео и декодер 300 видео могут модифицировать одну или более выборок блока предсказания на основе определенного одного или более сдвигов уточнения для генерации модифицированного блока предсказания (например, одной или более модифицированных выборок, которые формируют модифицированный блок предсказания). Например, кодер 200 видео и декодер 300 видео могут добавлять или вычитать ΔI(i, j) из I(i, j), где I(i, j) относится к выборке в блоке предсказания, расположенном в позиции (i, j). В некоторых примерах, кодер 200 видео и декодер 300 видео могут ограничивать один или более сдвигов уточнения (например, ограничивать ΔI(i, j)). Кодер 200 видео и декодер 300 видео могут модифицировать одну или более выборок блока предсказания на основе ограниченного одного или более сдвигов уточнения.
[0143] Для кодирования, кодер 200 видео может определять остаточные значения (например, остаточный блок), указывающие разность между текущим блоком и модифицированным блоком предсказания (например, на основе модифицированных выборок модифицированного блока предсказания), и сигнальную информацию, указывающую остаточные значения. Для декодирования, декодер 300 видео может принимать информацию, указывающую остаточные значения, и восстанавливать текущий блок на основе модифицированного блока предсказания (например, модифицированных выборок модифицированного блока предсказания) и остаточных значений (например, путем добавления остаточных значений к модифицированным выборкам).
[0144] Фиг. 2A и 2B являются концептуальной диаграммой, иллюстрирующей примерную структуру 130 квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU) 132. Сплошные линии представляют разделение квадродерева, а пунктирные линии указывают разделение двоичного дерева. В каждом разделенном (т.е. не-листовом) узле двоичного дерева, сигнализируется один флаг для указания того, какой тип разделения (т.е. горизонтальное или вертикальное) используется, где 0 указывает горизонтальное разделение, и 1 указывает вертикальное разделение в этом примере. Для разделения квадродерева, нет необходимости указывать тип разделения, так как узлы квадродерева разделяют блок по горизонтали и вертикали на 4 подблока с равным размером. Соответственно, кодер 200 видео может кодировать, и декодер 300 видео может декодировать, синтаксические элементы (такие как информация разделения) для регионального уровня дерева структуры 130 QTBT (т.е. сплошные линии) и синтаксические элементы (такие как информация разделения) для уровня дерева предсказания структуры 130 QTBT (т.е. пунктирные линии). Кодер 200 видео может кодировать, и декодер 300 видео может декодировать, видеоданные, такие как данные предсказания и преобразования, для CU, представленных концевыми листовыми узлами структуры 130 QTBT.
[0145] В общем, CTU 132, показанная на фиг. 2В, может быть ассоциирована с параметрами, определяющими размеры блоков, соответствующих узлам структуры 130 QTBT на первом и втором уровнях. Эти параметры могут включать в себя размер CTU (представляющий размер CTU 132 в выборках), минимальный размер квадродерева (MinQTSize, представляющий минимальный разрешенный размер листового узла квадродерева), максимальный размер двоичного дерева (MaxBTSize, представляющий максимальный разрешенный размер корневого узла двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющую максимальную разрешенную глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимальный разрешенный размер листового узла двоичного дерева).
[0146] Корневой узел структуры QTBT, соответствующий CTU, может иметь четыре дочерних узла на первом уровне структуры QTBT, каждый из которых может быть разделен согласно разбиению квадродерева. То есть узлы первого уровня представляют собой либо листовые узлы (не имеющие дочерних узлов), либо имеют четыре дочерних узла. Пример структуры 130 QTBT представляет такие узлы, как включающие в себя родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не больше максимального разрешенного размера корневого узла двоичного дерева (MaxBTSize), они могут быть дополнительно разделены посредством соответственных двоичных деревьев. Разделение двоичного дерева одного узла может итеративно повторяться до тех пор, пока узлы, полученные в результате разделения, не достигнут минимального разрешенного размера листового узла двоичного дерева (MinBTSize) или максимальной разрешенной глубины двоичного дерева (MaxBTDepth). Пример структуры 130 QTBT представляет такие узлы, как имеющие пунктирные линии для ветвей. Листовой узел двоичного дерева упоминается как единица кодирования (CU), которая используется для предсказания (например, внутрикадрового или межкадрового предсказания) и преобразования без какого-либо дополнительного разделения. Как обсуждалось выше, CU также могут упоминаться как “блоки видео” или “блоки”.
[0147] В одном примере структуры разбиения QTBT, размер CTU устанавливается как 128×128 (выборки яркости и две соответствующих выборки цветности 64×64 цветности), MinQTSize устанавливается как 16×6, MaxBTSize устанавливается как 64×64, MinBTSize (как для ширины, так и высоты) устанавливается как 4, и MaxBTDepth устанавливается как 4. Разбиение квадродерева применяется к CTU сначала для генерации листовых узлов квадродерева. Листовые узлы квадродерева могут иметь размер от 16×16 (то есть MinQTSize) до 128×128 (т.е. размер CTU). Если листовой узел квадродерева равен 128×128, он не будет далее разделяться посредством двоичного дерева, поскольку размер превышает MaxBTSize (т.е. 64×64, в этом примере). В противном случае, листовой узел квадродерева будет далее разделяться посредством двоичного дерева. Следовательно, листовой узел квадродерева также является корневым узлом для двоичного дерева и имеет глубину двоичного дерева как 0. Когда глубина двоичного дерева достигает MaxBTDepth (4, в этом примере), никакое дальнейшее разделение не разрешается. Когда узел двоичного дерева имеет ширину, равную MinBTSize (4, в этом примере), это означает, что никакое дальнейшее горизонтальное разделение не разрешено. Аналогично, узел двоичного дерева, имеющий высоту, равную MinBTSize, означает, что никакое дальнейшее вертикальное разделение не разрешено для этого узла двоичного дерева. Как отмечено выше, листовые узлы двоичного дерева упоминаются как CU и далее обрабатываются согласно предсказанию и преобразованию без дополнительного разбиения.
[0148] На фиг. 3 показана блок-схема, иллюстрирующая примерный кодер 200 видео, который может выполнять методы настоящего раскрытия. Фиг. 3 представлена для целей объяснения и не должна рассматриваться как ограничение методов, которые широко проиллюстрированы и описаны в этом раскрытии. В целях объяснения, данное раскрытие описывает кодер 200 видео в контексте стандартов кодирования видео, таких как стандарт кодирования видео HEVC и стандарт кодирования видео H.266 на стадии разработки. Однако методы этого раскрытия не ограничены этими стандартами кодирования видео и применимы в общем к кодированию и декодированию видео.
[0149] В примере на фиг. 9, кодер 200 видео включает в себя память 230 данных видео, модуль 202 выбора режима, модуль 204 генерации остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер декодированных картинок (DPB) 218 и модуль 220 энтропийного кодирования. Любое или все из памяти 230 данных видео, модуля 202 выбора режима, модуля 204 генерации остатка, модуля 206 обработки преобразования, модуля 208 квантования, модуля 210 обратного квантования, модуля 212 обработки обратного преобразования, модуля 214 восстановления, модуля 216 фильтрации, DPB 218 и модуля 220 энтропийного кодирования могут быть реализованы в одном или более процессорах или в схемах обработки. Кроме того, кодер 200 видео может включать в себя дополнительные или альтернативные процессоры или схемы обработки для выполнения этих и других функций.
[0150] Память 230 данных видео может сохранять данные видео, которые должны быть кодированы компонентами кодера 200 видео. Кодер 200 видео может принимать данные видео, сохраняемые в памяти 230 данных видео, например, от источника 104 видео (фиг. 1). DPB 218 может действовать как память опорных картинок, которая хранит опорные данные видео для использования в предсказании последующих данных видео кодером 200 видео. Память 230 данных видео и DPB 218 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 230 данных видео и DPB 218 могут быть обеспечены тем же самым устройством памяти или отдельными устройствами памяти. В различных примерах, память 230 данных видео может быть на чипе (однокристальной) с другими компонентами кодера 200 видео, как иллюстрируется, или вне чипа относительно этих компонентов.
[0151] В настоящем раскрытии, ссылка на память 230 данных видео не должна интерпретироваться как ограниченная памятью, внутренней для кодера 200 видео, если только специально не описана как таковая, или памятью, внешней для кодера 200 видео, если только специально не описана как таковая. Скорее, ссылку на память 230 данных видео следует понимать как опорную память, которая сохраняет данные видео, которые кодер 200 видео принимает для кодирования (например, данные видео для текущего блока, который должен быть закодирован). Память 106 на фиг. 1 может также обеспечивать временное хранение выходных данных от различных модулей кодера 200 видео.
[0152] Различные модули на фиг. 3 проиллюстрированы, чтобы способствовать пониманию операций, выполняемых кодером 200 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их комбинация. Фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое побуждает программируемые схемы работать таким образом, как определяется инструкциями программного обеспечения или встроенного программного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.
[0153] Кодер 200 видео может включать в себя арифметико-логические модули (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции кодера 200 видео выполняются с использованием программного обеспечения, исполняемого программируемыми схемами, память 106 (фиг. 1) может хранить объектный код программного обеспечения, который кодер 200 видео принимает и исполняет, или другая память в кодере 200 видео (не показана) может хранить такие инструкции.
[0154] Память 230 данных видео сконфигурирована для сохранения принятых данных видео. Кодер 200 видео может извлекать картинку данных видео из памяти 230 данных видео и передавать данные видео в модуль 204 генерации остатка и модуль 202 выбора режима. Данные видео в памяти 230 данных видео могут быть необработанными данными видео, которые должны быть закодированы.
[0155] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения, модуль 226 интра-предсказания, модуль 227 уточнения предсказания на основе градиента (GBPR). Модуль 202 выбора режима может включать в себя дополнительные функциональные блоки для выполнения предсказания видео в соответствии с другими режимами предсказания. В качестве примеров, модуль 202 выбора режима может включать в себя модуль палитры, модуль внутри-блочного копирования (который может быть частью модуля 222 оценки движения и/или модуля 224 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное.
[0156] Хотя модуль 227 GBPR показан отдельно от модуля 222 оценки движения и модуля 224 компенсации движения, в некоторых примерах, модуль 227 GBPR может быть частью модуля 222 оценки движения и/или модуля 224 компенсации движения. Модуль 227 GBPR показан отдельно от модуля 222 оценки движения и модуля 224 компенсации движения для облегчения понимания, и это не должно считаться ограничивающим.
[0157] Модуль 202 выбора режима обычно координирует множество проходов кодирования для тестирования комбинаций параметров кодирования и результирующих значений скорости-искажения для таких комбинаций. Параметры кодирования могут включать в себя разбиение CTU на CU, режимы предсказания для CU, типы преобразования для остаточных значений CU, параметры квантования для остаточных значений CU и т.д. Модуль 202 выбора режима может, в конечном счете, выбрать комбинацию параметров кодирования, имеющую значения скорости-искажения, которые лучше, чем у других тестируемых комбинаций.
[0158] Кодер 200 видео может разбивать картинку, извлеченную из памяти 230 данных видео, в последовательность CTU и инкапсулировать одну или более CTU в пределах вырезки. Модуль 202 выбора режима может разбивать CTU картинки в соответствии с древовидной структурой, такой как структура QTBT или структура квадродерева HEVC, описанная выше. Как описано выше, кодер 200 видео может формировать одну или более CU из разбиения CTU в соответствии с древовидной структурой. Такая CU может также упоминаться, в общем, как “блок видео” или “блок”.
[0159] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения, модулем 226 интра-предсказания и модулем 227 GBPR), чтобы генерировать блок предсказания для текущего блока (например, текущей CU или, в HEVC, перекрывающейся части PU и TU). Для интер-предсказания текущего блока, модуль 222 оценки движения может выполнять поиск движения для идентификации одного или более близко согласующихся опорных блоков в одной или более опорных картинках (например, в одной или более из ранее кодированных картинок, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислить значение, представляющее, насколько сходен потенциальный опорный блок с текущим блоком, например, в соответствии с суммой абсолютных разностей (SAD), суммой квадратов разностей (SSD), средней абсолютной разностью (MAD), среднеквадратичными разностями (MSD) или тому подобным. Модуль 222 оценки движения может обычно выполнять эти вычисления с использованием разностей от выборки к выборке между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, полученное в результате этих вычислений, указывая опорный блок, который наиболее близко согласуется с текущим блоком.
[0160] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые определяют позиции опорных блоков в опорных картинках относительно позиции текущего блока в текущей картинке. Модуль 222 оценки движения может затем предоставить векторы движения в модуль 224 компенсации движения. Например, для однонаправленного интер-предсказания, модуль 222 оценки движения может обеспечить один вектор движения, тогда как для двунаправленного интер-предсказания, модуль 222 оценки движения может обеспечить два вектора движения. Модуль 224 компенсации движения может затем генерировать блок предсказания с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность дробной выборки, модуль 224 компенсации движения может интерполировать значения для блока предсказания в соответствии с одним или более интерполяционными фильтрами. Кроме того, для двунаправленного интер-предсказания, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных соответствующими векторами движения, и комбинировать извлеченные данные, например, путем усреднения от выборки к выборке или взвешенного усреднения.
[0161] В качестве другого примера, для интра-предсказания или кодирования интра-предсказания, модуль 226 интра-предсказания может генерировать блок предсказания из выборок, соседних с текущим блоком. Например, для направленных режимов, модуль 226 интра-предсказания может, обычно, математически комбинировать значения соседних выборок и заполнять этими вычисленными значениями в определенном направлении текущий блок для генерации блока предсказания. В качестве другого примера, для режима DC, модуль 226 интра-предсказания может вычислять среднее значение соседних выборок для текущего блока и генерировать блок предсказания так, чтобы включать это полученное среднее значение для каждой выборки блока предсказания.
[0162] Модуль 227 GBPR может быть сконфигурирован для выполнения примерных описанных в раскрытии методов для уточнения предсказания на основе градиента. Например, модуль 227 GBPR вместе с модулем 224 компенсации движения может определять блок предсказания для интер-предсказания текущего блока (например, на основе вектора движения, определенного модулем 222 оценки движения). Модуль 227 GBPR может определять горизонтальное и вертикальное смещения (например, Δvx и Δvy) для уточнения предсказания на основе градиента одной или более выборок блока предсказания. В качестве одного примера, модуль 227 GBPR может определять режим интер-предсказания, основываясь на определениях, сделанных модулем 202 выбора режима, для интер-предсказания текущего блока. В некоторых примерах, модуль 227 GBPR может определять горизонтальное и вертикальное смещения на основе определенного режима интер-предсказания.
[0163] Модуль 227 GBPR может округлять горизонтальное и вертикальное смещения до уровня точности, который является одинаковым для разных режимов интер-предсказания. Например, текущий блок может быть первым текущим блоком, блок предсказания может быть первым блоком предсказания, горизонтальное и вертикальное смещения могут быть первыми горизонтальным и вертикальным смещениями, а округленные горизонтальное и вертикальное смещения могут быть первыми округленными горизонтальным и вертикальным смещениями. В некоторых примерах, модуль 227 GBPR может определять второй блок предсказания для интер-предсказания второго текущего блока и определять вторые горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента одной или более выборок второго блока предсказания. Модуль 227 GBPR может округлять вторые горизонтальное и вертикальное смещения до того же уровня точности, до которого округлены первые горизонтальное и вертикальное смещения, для генерации вторых округленных горизонтального и вертикального смещений.
[0164] В некоторых случаях, режим интер-предсказания для интер-предсказания первого текущего блока и режим интер-предсказания для второго текущего блока могут быть разными. Например, первый режим из этих разных режимов интер-предсказания является аффинным режимом, а второй режим из этих разных режимов интер-предсказания является режимом двунаправленного оптического потока (BDOF).
[0165] Уровень точности, до которого округляются горизонтальное и вертикальное смещения, может быть предварительно определен и сохранен для использования модулем 227 GBPR, или модуль 227 GBPR может определять уровень точности, и кодер 200 видео может сигнализировать уровень точности. В качестве одного примера, уровень точности равен 1/64.
[0166] Модуль 227 GBPR может определять один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений. Например, модуль 227 GBPR может определять первый градиент на основе первого набора выборок из одной или более выборок блока предсказания (например, определять gx(i, j) с использованием выборок блока предсказания, описанного выше) и определять второй градиент на основе второго набора выборок из одной или более выборок блока предсказания (например, определять gy(i, j) с использованием выборок блока предсказания, описанного выше). Модуль 227 GBPR может определять один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений и первого и второго градиентов. В некоторых примерах, модуль 227 GBPR может ограничивать один или более сдвигов уточнения, если значение одного или более сдвигов уточнения является слишком высоким (например, большим, чем порог).
[0167] Модуль 227 GBPR может модифицировать одну или более выборок блока предсказания на основе определенного одного или более сдвигов уточнения или ограниченного одного или более сдвигов уточнения для генерации модифицированного блока предсказания (например, одной или более модифицированных выборок, которые формируют модифицированный блок предсказания). Например, модуль 227 GBPR может определять: gx(i, j)*Δvx(i, j)+gy(i, j)*Δvy(i, j), где gx(i, j) представляет собой первый градиент для выборки из одной или более выборок, расположенных в (i, j), Δvx(i, j) представляет собой округленное горизонтальное смещение для выборки из одной или более выборок, расположенных в (i, j), gy(i, j) представляет собой второй градиент для выборки из одной или более выборок, расположенных в (i, j), и Δvy(i, j) представляет собой округленное вертикальное смещение для выборки из одной или более выборок, расположенных в (i, j). В некоторых примерах Δvx(i, j) и Δvy(i, j) могут быть одинаковыми для каждой из выборок (i, j) блока предсказания.
[0168] Результирующие модифицированные выборки могут формировать блок предсказания (например, модифицированный блок предсказания) в уточнении предсказания на основе градиента. То есть, модифицированный блок предсказания используется в качестве блока предсказания в уточнении предсказания на основе градиента. Модуль 202 выбора режима предоставляет блок предсказания на модуль 204 генерации остатка. Модуль 204 генерации остатка принимает необработанную, незакодированную версию текущего блока из памяти 230 данных видео и блок предсказания из модуля 202 выбора режима. Модуль 204 генерации остатка вычисляет разности от выборки к выборке между текущим блоком и блоком предсказания. Результирующие разности от выборки к выборке определяют остаточный блок для текущего блока. В некоторых примерах, модуль 204 генерации остатка также может определять разности между значениями выборок в остаточном блоке для генерации остаточного блока с использованием дифференциальной импульсно-кодовой модуляции остатка (RDPCM). В некоторых примерах, модуль 204 генерации остатка может быть образован использованием одной или более схем вычитания, которые выполняют двоичное вычитание.
[0169] В примерах, где модуль 202 выбора режима разбивает CU на PU, каждая PU может быть ассоциирована с единицей предсказания яркости и соответствующими единицами предсказания цветности. Кодер 200 видео и декодер 300 видео могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU, а размер PU может относиться к размеру единицы предсказания яркости PU. Предполагая, что размер конкретной CU равен 2N×2N, кодер 200 видео может поддерживать размеры PU 2N×2N или N×N для интра-предсказания и симметричные размеры PU 2N×2N, 2N×N, N×2N, N×N или аналогичные для интер-предсказания. Кодер 200 видео и декодер 300 видео также могут поддерживать асимметричное разбиение для размеров PU 2N×nU, 2N×nD, nL×2N и nR×2N для интер-предсказания.
[0170] В примерах, где модуль выбора режима дополнительно не разбивает CU на PU, каждая CU может быть ассоциирована с блоком кодирования яркости и соответствующими блоками кодирования цветности. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU. Кодер 200 видео и декодер 120 видео могут поддерживать размеры CU 2N×2N, 2N×N или N×2N.
[0171] Для других методов кодирования видео, таких как кодирование в режиме внутри-блочного копирования, кодирование в аффинном режиме и кодирование в режиме линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, посредством соответствующих модулей, ассоциированных с методами кодирования, генерирует блок предсказания для текущего кодируемого блока. В некоторых примерах, таких как кодирование в режиме палитры, модуль 202 выбора режима может не генерировать блок предсказания, а вместо этого генерировать синтаксические элементы, указывающие способ восстановления блока на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы модулю 220 энтропийного кодирования для кодирования.
[0172] Как описано выше, модуль 204 генерации остатка принимает данные видео для текущего блока и соответствующего блока предсказания. Затем модуль 204 генерации остатка генерирует остаточный блок для текущего блока. Для генерации остаточного блока, модуль 204 генерации остатка вычисляет разности от выборки к выборке между блоком предсказания и текущим блоком.
[0173] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для генерации блока коэффициентов преобразования (упоминаемого здесь как “блок коэффициентов преобразования”). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для генерации блока коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять множественные преобразования для остаточного блока, например, первичное преобразование и вторичное преобразование, такое как преобразование вращения. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.
[0174] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы сформировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования в соответствии со значением параметра квантования (QP), ассоциированным с текущим блоком. Кодер 200 видео (например, посредством модуля 202 выбора режима) может регулировать степень квантования, применяемого к блокам коэффициентов преобразования, ассоциированным с текущим блоком, путем коррекции значения QP, ассоциированного с CU. Квантование может вводить потери информации, и, таким образом, квантованные коэффициенты преобразования могут иметь более низкую точность, чем исходные коэффициенты преобразования, сформированные модулем 206 обработки преобразования.
[0175] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для восстановления остаточного блока из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя, возможно, с некоторой степенью искажения), на основе восстановленного остаточного блока и блока предсказания, генерируемого модулем 202 выбора режима. Например, модуль 214 восстановления может добавлять выборки восстановленного остаточного блока к соответствующим выборкам из блока предсказания, генерируемого модулем 202 выбора режима, чтобы сформировать восстановленный блок.
[0176] Модуль 216 фильтрации может выполнять одну или более операций на восстановленных блоках. Например, модуль 216 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности по краям CU. Операции модуля 216 фильтрации могут быть пропущены, в некоторых примерах.
[0177] Кодер 200 видео сохраняет восстановленные блоки в DPB 218. Например, в случаях, где операции модуля 216 фильтрации не требуются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, где требуются операции модуля 216 фильтрации, модуль 216 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать из DPB 218 опорную картинку, сформированную из восстановленных (и потенциально отфильтрованных) блоков, для интер-предсказания блоков последующих кодируемых картинок. Кроме того, модуль интра-предсказания 226 может использовать восстановленные блоки в DPB 218 текущей картинки для интра-предсказания других блоков в текущей картинке.
[0178] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принятые от других функциональных компонентов кодера 200 видео. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы предсказания (например, информацию движения для интер-предсказания или информацию интра-режима для интра-предсказания) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования на синтаксических элементах, которые являются другим примером данных видео, чтобы генерировать энтропийно-закодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), операцию CABAC, операцию кодирования от переменной к переменной (V2V) длине, операцию основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования с разбиением интервалов вероятности (PIPE), операцию экспоненциального кодирования Голомба или другой тип операции энтропийного кодирования данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в режиме обхода, где синтаксические элементы не являются энтропийно кодируемыми.
[0179] Кодер 200 видео может выводить битовый поток, который включает в себя энтропийно закодированные синтаксические элементы, необходимые для восстановления блоков вырезки или картинки. В частности, модуль 220 энтропийного кодирования может выводить битовый поток.
[0180] Вышеизложенные операции описаны по отношению к блоку. Такое описание следует понимать как операции для блока кодирования яркости и/или блоков кодирования цветности. Как описано выше, в некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности CU. В некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности PU.
[0181] В некоторых примерах, операции, выполняемые в отношении блока кодирования яркости, не требуется повторять для блоков кодирования цветности. В качестве одного примера, операции для идентификации вектора движения (MV) и опорной картинки для блока кодирования яркости не требуется повторять для идентификации MV и опорной картинки для блоков цветности. Скорее, MV для блока кодирования яркости может масштабироваться для определения MV для блоков цветности, и опорная картинка может быть той же самой. В качестве другого примера, процесс интра-предсказания может быть одинаковым для блока кодирования яркости и блоков кодирования цветности.
[0182] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный декодер 300 видео, который может выполнять методы настоящего раскрытия. Фиг. 4 обеспечена в целях пояснения и не ограничивает методы, широко иллюстрируемые и описанные в настоящем раскрытии. В целях объяснения, это раскрытие описывает декодер 300 видео в соответствии с методами VVC и HEVC. Тем не менее, методы этого раскрытия могут быть выполнены устройствами кодирования видео, которые сконфигурированы для других стандартов кодирования видео.
[0183] В примере на фиг. 4, декодер 300 видео включает в себя память 320 буфера кодированных картинок (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер декодированных картинок (DPB) 314. Любой или все из памяти 320 CPB, модуля 302 энтропийного декодирования, модуля 304 обработки предсказания, модуля 306 обратного квантования, модуля 308 обработки обратного преобразования, модуля 310 восстановления, модуля 312 фильтрации и DPB 314 могут быть реализованы в одном или более процессорах или в схемах обработки. Кроме того, декодер 300 видео может включать в себя дополнительные или альтернативные процессоры или схемы обработки для выполнения этих и других функций.
[0184] Модуль 304 обработки предсказания включает в себя модуль 316 компенсации движения, модуль 318 интра-предсказания и модуль 319 уточнения предсказания на основе градиента (GBPR). Модуль 304 обработки предсказания может включать в себя дополнительные модули для выполнения предсказания в соответствии с другими режимами предсказания. В качестве примеров, модуль 304 обработки предсказания может включать в себя модуль палитры, модуль внутри-блочного копирования (который может формировать часть модуля 316 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное. В других примерах, декодер 300 видео может включать в себя больше, меньше функциональных компонентов или другие функциональные компоненты.
[0185] Хотя модуль 319 GBPR проиллюстрирован как отдельный от модуля 316 компенсации движения, в некоторых примерах, модуль 319 GBPR может быть частью модуля 316 компенсации движения. Модуль 319 GBPR показан отдельно от модуля 316 компенсации движения для облегчения понимания и не должен рассматриваться как ограничение.
[0186] Память 320 CPB может хранить данные видео, такие как закодированный битовый поток видео, для декодирования компонентами декодера 300 видео. Данные видео, хранящиеся в памяти 320 CPB, могут быть получены, например, из считываемого компьютером носителя 110 (фиг. 1). Память 320 CPB может включать в себя CPB, который сохраняет закодированные данные видео (например, синтаксические элементы) из закодированного битового потока видео. Кроме того, память 320 CPB может хранить данные видео, отличные от синтаксических элементов закодированной картинки, такие как временные данные, представляющие выходы из различных модулей декодера 300 видео. DPB 314 обычно хранит декодированные картинки, которые декодер 300 видео может выводить и/или использовать в качестве опорных данных видео при декодировании последующих данных или картинок закодированного битового потока видео. Память 320 CPB и DPB 314 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 320 CPB и DPB 314 могут быть предоставлены тем же самым устройством памяти или отдельными устройствами памяти. В различных примерах, память 320 CPB может быть на чипе с другими компонентами декодера 300 видео или вне чипа относительно этих компонентов.
[0197] Дополнительно или альтернативно, в некоторых примерах, декодер 300 видео может извлекать закодированные данные видео из памяти 120 (фиг. 1). То есть, память 120 может хранить данные, как обсуждено выше для памяти 320 CPB. Аналогично, память 120 может хранить инструкции, которые должны исполняться декодером 300 видео, когда некоторая или вся из функциональности декодера 300 видео реализована в программном обеспечении, подлежащем исполнению схемами обработки декодера 300 видео.
[0188] Различные модули, показанные на фиг. 4, проиллюстрированы, чтобы способствовать пониманию операций, выполняемых декодером 300 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их комбинации. Подобно фиг. 3, фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или встроенное программное обеспечение, которое побуждает программируемые схемы работать таким образом, как определяется инструкциями программного обеспечения или встроенного программного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.
[0188] Декодер 300 видео может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции декодера 300 видео выполняются программным обеспечением, исполняемым на программируемых схемах, память на чипе или память вне чипа может хранить инструкции (например, объектный код) программного обеспечения, которые получает и исполняет декодер 300 видео.
[0190] Модуль 302 энтропийного декодирования может получать закодированные данные видео из CPB и энтропийно декодировать данные видео для воспроизведения синтаксических элементов. Модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут генерировать декодированные данные видео на основе синтаксических элементов, извлеченных из битового потока.
[0191] В общем, декодер 300 видео восстанавливает картинку на поблочной основе. Декодер 300 видео может выполнять операцию восстановления на каждом блоке индивидуально (где блок, который восстанавливается, т.е. декодируется, в текущее время, может называться “текущим блоком”).
[0192] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, определяющие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как указание(я) параметра квантования (QP) и/или режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, для определения степени квантования и, аналогично, степени обратного квантования для применения модулем 306 обратного квантования. Модуль 306 обратного квантования может, например, выполнять побитовую операцию сдвига влево для обратного квантования квантованных коэффициентов преобразования. При этом модуль 306 обратного квантования может формировать блок коэффициентов преобразования, включающий коэффициенты преобразования.
[0193] После того как модуль 306 обратного квантования сформировал блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применить одно или более обратных преобразований к блоку коэффициентов преобразования для генерации остаточного блока, ассоциированного с текущим блоком. Например, блок обработки 308 обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное преобразование вращения, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.
[0194] Кроме того, модуль 304 обработки предсказания генерирует блок предсказания в соответствии с синтаксическими элементами информации предсказания, которые были энтропийно декодированы модулем 302 энтропийного декодирования. Например, если синтаксические элементы информации предсказания указывают, что текущий блок является интер-предсказанным, модуль 316 компенсации движения может генерировать блок предсказания. В этом случае, синтаксические элементы информации предсказания могут указывать опорную картинку в DPB 314, из которой следует извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорной картинке относительно местоположения текущего блока в текущей картинке. Модуль 316 компенсации движения может, в принципе, выполнять процесс интер-предсказания способом, который по существу аналогичен тому, который описан в отношении модуля 224 компенсации движения (фиг. 3).
[0195] В качестве другого примера, если синтаксические элементы информации предсказания указывают, что текущий блок является интра-предсказанным, модуль 318 интра-предсказания может генерировать блок предсказания в соответствии с режимом интра-предсказания, указанным синтаксическими элементами информации предсказания. Вновь, модуль 318 интра-предсказания может, в принципе, выполнять процесс интра-предсказания способом, который по существу аналогичен описанному в отношении модуля 226 интра-предсказания (фиг. 3). Модуль 318 интра-предсказания может извлекать данные из соседних выборок для текущего блока из DPB 314.
[0196] В качестве другого примера, если синтаксические элементы информации предсказания указывают, что включено уточнение предсказания на основе градиента, модуль 319 GBPR может модифицировать выборки блока предсказания для генерации модифицированного блока предсказания (например, генерировать модифицированные выборки, которые формируют модифицированный блок предсказания), которые используются для восстановления текущего блока.
[0197] Модуль 319 GBPR может быть сконфигурирован для выполнения примерных методов, описанных в этом раскрытии, для уточнения предсказания на основе градиента. Например, модуль 319 GBPR, вместе с модулем 316 компенсации движения, может определять блок предсказания для интер-предсказания текущего блока (например, на основе вектора движения, определенного модулем 304 обработки предсказания). Модуль 319 GBPR может определять горизонтальное и вертикальное смещения (например, Δvx и Δvy) для уточнения предсказания на основе градиента одной или более выборок блока предсказания. В качестве одного примера, модуль 319 GBPR может определять режим интер-предсказания, на основе синтаксических элементов информации предсказания, для интер-предсказания текущего блока. В некоторых примерах, модуль 319 GBPR может определять горизонтальное и вертикальное смещения на основе определенного режима интер-предсказания.
[0198] Модуль 319 GBPR может округлять горизонтальное и вертикальное смещения до уровня точности, который является одинаковым для различных режимов интер-предсказания. Например, текущий блок может быть первым текущим блоком, блок предсказания может быть первым блоком предсказания, горизонтальное и вертикальное смещения могут быть первыми горизонтальным и вертикальным смещениями, а округленные горизонтальное и вертикальное смещения могут быть первыми округленными горизонтальным и вертикальным смещениями. В некоторых примерах, модуль 319 GBPR может определять второй блок предсказания для интер-предсказания второго текущего блока и определять вторые горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента одной или более выборок второго блока предсказания. Модуль 319 GBPR может округлять вторые горизонтальное и вертикальное смещения до того же уровня точности, до которого округлены первые горизонтальное и вертикальное смещения для генерации вторых округленных горизонтального и вертикального смещений.
[0199] В некоторых случаях, режим интер-предсказания для интер-предсказания первого текущего блока и режима интер-предсказания для второго текущего блока может быть различным. Например, первый режим из различных режимов интер-предсказания является аффинным режимом, а второй режим из различных режимов интер-предсказания является режимом двунаправленного режима оптического потока (BDOF).
[0200] Уровень точности, до которого округляются горизонтальное и вертикальное смещения, может быть предварительно определен и сохранен для использования модулем 319 GBPR, или модуль 319 GBPR может принимать информацию, указывающую уровень точности, в сигнализируемой информации (например, сигнализируется уровень точности). В качестве одного примера, уровень точности равен 1/64.
[0201] Модуль 319 GBPR может определять один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений. Например, модуль 319 GBPR может определять первый градиент на основе первого набора выборок из одной или более выборок блока предсказания (например, определять gx(i, j) с использованием выборок блока предсказания, описанного выше) и определять второй градиент на основе второго набора выборок из одной или более выборок блока предсказания (например, определять gy(i, j) с использованием выборок блока предсказания, описанного выше). Модуль 319 GBPR может определять один или более сдвигов уточнения на основе округленного горизонтального и вертикального смещений и первого и второго градиентов. В некоторых примерах, модуль 319 GBPR может ограничивать один или более сдвигов уточнения, если значение одного или более сдвигов уточнения является слишком высоким (например, большим, чем порог).
[0202] Модуль 319 GBPR может модифицировать одну или более выборок блока предсказания на основе определенного одного или более сдвигов уточнения или ограниченного одного или более сдвигов уточнения для генерации модифицированного блока предсказания (например, одной или более модифицированных выборок, которые формируют модифицированный блок предсказания). Например, модуль 319 GBPR может определять: gx(i, j)*Δvx(i, j)+gy(i, j)*Δvy(i, j), где gx(i, j) представляет собой первый градиент для выборки из одной или более выборок, расположенных в (i, j), Δvx(i, j) представляет собой округленное горизонтальное смещение для выборки из одной или более выборок, расположенных в i, j), gy(i, j) представляет собой второй градиент для выборки из одной или более выборок, расположенных в (i, j), и Δvy(i, j) представляет собой округленное вертикальное смещение для выборки из одной или более выборок, расположенных в (i, j). В некоторых примерах, Δvx и Δvy могут быть одинаковыми для каждой из выборок (i, j) блока предсказания.
[0203] Полученные модифицированные выборки могут формировать модифицированный блок предсказания в уточнении предсказания на основе градиента. То есть, модифицированный блок предсказания может использоваться в качестве блока предсказания в уточнении предсказания на основе градиента. Модуль 310 восстановления может восстанавливать текущий блок с использованием блока предсказания и остаточного блока. Например, модуль 310 восстановления может суммировать выборки остаточного блока с соответствующими выборками блока предсказания для восстановления текущего блока.
[0204] Модуль 312 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 312 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности вдоль краев восстановленных блоков. Операции модуля 312 фильтрации не обязательно выполняются во всех примерах.
[0205] Декодер 300 видео может сохранять восстановленные блоки в DPB 314. Как описано выше, DPB 314 может предоставлять опорную информацию, такую как выборки текущей картинки для интра-предсказания и ранее декодированных картинок для последующей компенсации движения, в модуль 304 обработки предсказания. Кроме того, декодер 300 видео может выводить декодированные картинки из DPB для последующего представления на устройстве отображения, таком как устройство 118 отображения на фиг. 1.
[0206] В соответствии с первыми методом этого раскрытия, устройство кодирования видео (например, кодер 200 видео и/или декодер 300 видео) может выводить разности по x- и y-компонентам между вектором движения, вычисленным в местоположении пиксела местоположения (m, n), и MV подблока (т.е. Δvx(m, n) и Δvy(m, n)) на основе MV подблоков. Например, если параметры аффинного движения a, b, c, d, e и f при выводе Δvx(m, n) и Δvy(m, n) вычисляются из CPMV (векторы движения контрольных точек), CPMV каждого блока может потребоваться хранить в буфере движения. Это хранение CPMV каждого блока может значительно увеличить размер буфера, так как CPMV имеют 3 MV для каждого направления предсказания вместо 1 MV, как в нормальном интер-режиме. Поэтому настоящее раскрытие описывает, что кодер видео выполняет выведение Δvx(m, n) и Δvy(m, n) на основе MV подблока.
[0207] Для 6-параметрической модели аффинного, могут быть выбраны 3 различных MV подблока, которые не все находятся в одной и той же строке или столбце подблока. В 4-параметрической модели аффинного, выбираются 2 различных MV подблока. В некоторых примерах, выбранный MV подблока может использоваться как , i=0, 1, 2, подобно описанным выше CPMV, причем и находятся в одной и той же строке подблока, и и находятся в одном и том же столбце подблока. Затем параметр а вычисляется как , параметр b вычисляется как , параметр c вычисляется как , и параметр d вычисляется как . В случае 4-параметрического аффинного режима, параметр a вычисляется как , параметр c вычисляется как , параметр b устанавливается в -c, и параметр d устанавливается равным а. W является расстоянием между и , и H является расстоянием между и . Однако в некоторых примерах 3 MV подблока выбираются независимо от того, используется ли 6-параметрическая аффинная модель или 4-параметрическая аффинная модель.
[0208] Кодер видео выбирает MV подблока таким образом, что W равно blkW/2, и H равно blkH/2. В одном примере, как показано на фиг. 6, является MV подблока верхнего-левого подблока в местоположении (0,0), и является MV подблока верхнего-среднего подблока в местоположении (blkW/2, 0), и является MV подблока левого-среднего подблока в местоположении (0, blkH/2). В другом примере является MV подблока верхнего-среднего подблока в местоположении (blkW/2-sbW, 0), и является MV подблока верхнего-правого подблока в местоположении (blkW-sbW, 0), и является MV подблока центрального-среднего подблока в местоположении (blkW/2-sbW, blkH/2).
[0209] В соответствии со вторым методом настоящего раскрытия, кодер видео может выполнять ограничение Δvx(m, n) и Δvy(m, n). Вычисление смещения на основе градиента может предполагать, что Δvx(m, n) и Δvy(m, n) малы. В этом методе, кодер видео может ограничивать Δvx(m, n) и Δvy(m, n) таким образом, что абсолютные значения меньше или равны предопределенному порогу ΔTH.
[0210] В качестве одного примера, предопределенный порог может быть установлен таким образом, что умножение между Δvx(m, n)/Δvy(m, n) и градиентом gx(m, n)/gy(m, n) в вычислении смещения не приводит к переполнению буфера. Например, если бюджет для результата умножения составляет 16 битов, то максимальное абсолютное значение составляет 1<<15 (1 бит для знака), ΔTH*gx(m, n) или ΔTH*gy(m, n) не должно превышать 1<<15. При условии, что градиент представлен k битами, ΔTH устанавливается равным 1<<(15-k).
[0211] В качестве другого примера, предопределенный порог (например, ΔTH) может быть установлен равным тому же значению, что и в двунаправленном оптическом потоке (BDOF), т.е. th'BIO. th'BIO может представлять собой полупиксел. Если базовой единицей для Δvx(m, n) и Δvy(m, n) является 1/q пиксела, то th'BIO составляет q/2.
[0212] В качестве другого примера, предопределенный порог (например, ΔTH) может устанавливаться на минимум между th'BIO и 1<<(15-k).
[0213] В соответствии с третьим методом настоящего раскрытия, кодер видео может устанавливать точность Δvx(m, n) и Δvy(m, n) на ту же точность, что и в BDOF. В одном примере, точность Δvx(m, n) и Δvy(m, n) определяется посредством shfit1 в секции 1.3. Поэтому одной единицей Δvx(m, n) или Δvy(m, n) является 1/(1<<shfit1) пиксела. В одном примере, сдвиг равен 6. В другом примере shfit1 установлен на max(2, 14-bitDepth), где bitDepth представляет собой внутреннюю битовую глубину сигнала видео для кодирования/декодирования.
[0214] В соответствии с четвертым методом настоящего раскрытия, кодер видео может выполнять вычисление градиента для уточнения предсказания аффинного режима с использованием того же самого процесса, что и в BDOF. По существу, один и тот же модуль кодера видео может использоваться как для BDOF, так и для вычисления градиента для уточнения предсказания аффинного режима. Однако кодер видео может использовать другой метод заполнения для выборок предсказания в расширенной области.
[0215] В качестве одного примера, кодер видео может генерировать выборки предсказания в расширенной области (белые позиции) путем взятия опорных выборок в близлежащих целочисленных позициях (с использованием операции floor() по координатам) непосредственно без интерполяции.
[0216] В качестве другого примера, кодер видео может генерировать выборки предсказания в расширенной области (белые позиции) путем взятия опорных выборок в ближайших целочисленных позициях (с использованием операции round() по координатам) непосредственно без интерполяции.
[0217] В качестве другого примера, если требуются какие-либо значения выборок за пределами границ подблока, кодер видео может заполнить необходимые выборки (т.е. повторяющиеся) из их ближайших соседей. Это также может применяться для вычисления градиента в BDOF.
[0218] В соответствии с пятым методом настоящего раскрытия, кодер видео может выполнять ограничение результата уточнения. В интер-предсказании, сигнал предсказания компенсации движения блока обычно ограничивается до того же диапазона, что и исходный сигнал блока. Однако, при двунаправленной компенсации движения, сигнал предсказания компенсации движения для каждого направления сохраняется в промежуточной точности и диапазоне для повышения точности. После процесса взвешенного усреднения двунаправленной компенсации движения, результат округляется и ограничивается до того же диапазона и точности, что и исходный сигнал блока. В этом пятом способе, в случае двунаправленного предсказания, кодер видео может ограничивать результат уточнения предсказания, чтобы иметь ту же самую промежуточную точность и диапазон, что и при нормальной компенсации движения. Например, число битов для промежуточной точности равно 14, то кодер видео может ограничивать результат уточнения предсказания в диапазоне от -(1<<14) до (1<<14).
[0219] Фиг. 7 является блок-схемой последовательности операций, иллюстрирующей примерный способ кодирования данных видео. Текущий блок может включать в себя текущую CU. Пример фиг. 7 описан в отношении схемы обработки. Примеры схем обработки включают в себя фиксированную функциональную и/или программируемую схему для кодера 200 видео, такую как модуль 227 GBPR, и декодера 300 видео, такую как модуль 319 GBPR.
[0220] В одном или более примерах, память может быть сконфигурирована, чтобы хранить выборки блока предсказания. Например, DPB 218 или DPB 314 может быть сконфигурирован, чтобы хранить выборки блока предсказания, который используется для интер-предсказания. Внутри-блочное копирование может рассматриваться как примерный режим интер-предсказания, в этом случае вектор блока, используемый для внутри-блочного копирования, является примером вектора движения.
[0221] Схема обработки может определять блок предсказания, сохраняемый в памяти для интер-предсказания текущего блока (350). Схема обработки может определять горизонтальное и вертикальное смещения (например, Δvx и Δvy) для уточнения предсказания на основе градиента одной или более выборок блока предсказания (352). В качестве одного примера, схема обработки может определять режим интер-предсказания для интер-предсказания текущего блока. В некоторых примерах, схема обработки может определять горизонтальное и вертикальное смещения на основе определенного режима интер-предсказания.
[0222] Схема обработки может округлять горизонтальное и вертикальное смещения до уровня точности, который является тем же самым для различных режимов интер-предсказания (354). Например, текущий блок может быть первым текущим блоком, блок предсказания может быть первым блоком предсказания, горизонтальное и вертикальное смещения могут быть первыми горизонтальным и вертикальным смещениями, а округленные горизонтальное и вертикальное смещения могут быть первыми округленными горизонтальным и вертикальным смещениями. В некоторых примерах, схема обработки может определять второй блок предсказания для интер-предсказания второго текущего блока и определять вторые горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента одной или более выборок второго блока предсказания. Схема обработки может округлять вторые горизонтальное и вертикальное смещения до того же уровня точности, до которого были округлены первые горизонтальное и вертикальное смещения для генерации вторых округленных горизонтального и вертикального смещений.
[0223] В некоторых случаях, режим интер-предсказания для интер-предсказания первого текущего блока и режим интер-предсказания для второго текущего блока могут быть различными. Например, первый режим из различных режимов интер-предсказания является аффинным режимом, и второй режим из различных режимов интер-предсказания является режимом двунаправленного оптического потока (BDOF).
[0224] Уровень точности, до которого округлены горизонтальное и вертикальное смещения, может предварительно определяться или сигнализироваться. В качестве одного примера, уровень точности равен 1/64.
[0225] Схема обработки может определять один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений (356). Например, схема обработки может определять первый градиент на основе первого набора выборок из одной или более выборок блока предсказания (например, определять gx(i, j) с использованием выборок блока предсказания, описанного выше) и определять второй градиент на основе второго набора выборок из одной или более выборок блока предсказания (например, определять gy(i, j) с использованием выборок блока предсказания, описанного выше). Схема обработки может определять один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений и первого и второго градиентов. В некоторых примерах, схема обработки может ограничивать один или более сдвигов уточнения, если значение одного или более сдвигов уточнения является слишком высоким (например, большим, чем порог).
[0226] Схема обработки может модифицировать одну или более выборок блока предсказания на основе определенного одного или более сдвигов уточнения или ограниченного одного или более сдвигов уточнения для генерации модифицированного блока предсказания (например, одной или более модифицированных выборок, которые формируют модифицированный блок предсказания) (358). Например, схема обработки может определять: gx(i, j)*Δvx(i, j)+gy(i, j)*Δvy(i, j), где gx(i, j) представляет собой первый градиент для выборки из одной или более выборок, расположенных в (i, j), Δvx(i, j) представляет собой округленное горизонтальное смещение для выборки из одной или более выборок, расположенных в i, j), gy(i, j) представляет собой второй градиент для выборки из одной или более выборок, расположенных в (i, j), и Δvy(i, j) представляет собой округленное вертикальное смещение для выборки из одной или более выборок, расположенных в (i, j). В некоторых примерах, Δvx и Δvy могут быть одинаковыми для каждой из выборок (i, j) блока предсказания.
[0227] Схема обработки может кодировать (например, кодировать или декодировать) текущий блок на основе модифицированного блока предсказания (например, одной или более модифицированных выборок модифицированного блока предсказания) (360). Например, для декодирования видео, схема обработки (например, декодер 300 видео) может восстанавливать текущий блок на основе модифицированного блока предсказания (например, посредством суммирования одной или более модифицированных выборок с принятыми остаточными значениями). Для кодирования видео, схема обработки (например, кодер 200 видео) может определять остаточные значения (например, остаточного блока) между текущим блоком и модифицированным блоком предсказания (например, одной или более модифицированных выборок модифицированного блока предсказания) и сигнальную информацию, указывающую остаточные значения.
[0228] Неограничивающий иллюстративный перечень примеров раскрытия описан ниже.
[0229] Пример 1. Способ кодирования данных видео, причем способ содержит:
выполнение компенсации аффинного движения на основе подблока для получения сигнала предсказания для текущего блока данных видео; и уточнение сигнала предсказания посредством по меньшей мере добавления смещений к пиксельным местоположениям в сигнале предсказания, причем значения смещений выводятся на основе значений множества векторов движения (MV) подблока для подблоков текущего блока, которые не все находятся в одной и той же строке или столбце подблока текущего блока.
[0230] Пример 2. Способ по примеру 1, дополнительно содержащий определение значения смещения в местоположении (m, n) сигнала предсказания на основе Δvx(m, n) и Δvy(m, n).
[0231] Пример 3. Способ по примеру 2, причем определение значения смещения в местоположении (m, n) сигнала предсказания содержит определение значения смещения в соответствии со следующим уравнением:
ΔI(m, n)=gx(m, n)*Δvx(m, n)+gy(m, n)*Δvy(m, n)
где gx(m, n) является горизонтальным градиентом и gy(m, n) является вертикальным градиентом сигнала предсказания.
[0232] Пример 4. Способ по любому из примеров 2 или 3, дополнительно содержащий определение значений Δvx(m, n) и Δvy(m, n) на основе значений множества подблоков MV.
[0233] Пример 5. Способ по примеру 4, причем определение значения Δvx(m, n) и Δvy(m, n) содержит определение значения Δvx(m, n) и Δvy(m, n) на основе параметра а, параметра b, параметра c и параметра d.
[0234] Пример 6. Способ по примеру 5, причем выведение Δvx(m, n) и Δvy(m, n) на основе параметра а, параметра b, параметра c и параметра d содержит выведение Δvx(m, n) и Δvy(m, n) в соответствии со следующими уравнениями:
где sbW представляет собой ширину подблока из подблоков текущего блока, sbH представляет высоту подблока из подблоков текущего блока, и (m, n) представляет местоположение пиксела в текущем блоке.
[0235] Способ по любому из примеров 5 или 6, дополнительно содержащий выведение параметра а, параметра b, параметра c и параметра d в соответствии со следующими уравнениями, где модель аффинного движения представлена 6 параметрами:
а=
b=
c=
d=
где W представляет расстояние между первым MV модели аффинного движения и вторым MV модели аффинного движения, и H представляет расстояние между первым MV модели аффинного движения и третьим MV модели аффинного движения.
[0236] Пример 8. Способ по любому из примеров 5-7, дополнительно содержащий выведение параметра а, параметра b, параметра c и параметра d в соответствии со следующими уравнениями, где модель аффинного движения представлена 4 параметрами:
а=
c=
b=-c
d=а
где W представляет расстояние между первым MV модели аффинного движения и вторым MV модели аффинного движения.
[0237] Пример 9. Способ по примеру 7 или примеру 8, причем первый MV модели аффинного движения представляет собой , второй MV модели аффинного движения представляет собой , и третий MV модели аффинного движения представляет собой .
[0238] Пример 10. Способ по любому из примеров 2-9, дополнительно содержащий ограничение Δvx(m, n) и Δvy(m, n), чтобы иметь абсолютные значения, меньшие или равные предварительно определенному порогу.
[0239] Пример 11. Способ по любому из примеров 2-10, дополнительно содержащий выполнение уточнения двунаправленного оптического потока (BDOF) по сигналам предсказания для текущего блока.
[0240] Пример 12. Способ по примеру 11, дополнительно содержащий сохранение Δvx(m, n) и Δvy(m, n) с той же точностью, которая используется для выполнения уточнения BDOF.
[0241] Пример 13. Способ по любому из примеров 11 или 12, причем выполнение уточнения BDOF содержит выполнение вычисления градиента.
[0242] Пример 14. Способ по примеру 13, в котором выполнение вычисления градиента для выполнения уточнения BDOF использует тот же процесс, что и вычисление горизонтального градиента и/или вертикального градиента сигнала предсказания.
[0243] Пример 15. Способ по любому из примеров 1-14, дополнительно содержащий ограничение уточненного сигнала предсказания, чтобы иметь ту же самую промежуточную точность, что и в компенсации неаффинного движения.
[0244] Пример 16. Способ по примеру 15, причем, когда число битов для промежуточной точности равно n, ограничение уточненного сигнала предсказания содержит ограничение уточненного сигнала предсказания до диапазона от -(1<<n) до (1<<n).
[0245] Пример 17. Способ по любому из примеров 1-16, причем кодирование содержит декодирование.
[0246] Пример 18. Способ по любому из примеров 1-17, причем кодирование содержит кодирование.
[0247] Пример 19. Устройство для кодирования данных видео, причем устройство содержит одно или более средств для выполнения способа по любому из примеров 1-18.
[0248] Пример 20. Устройство по примеру 19, причем одно или более средств содержат один или более процессоров, реализованных в схеме.
[0249] Пример 21. Устройство по любому из примеров 19 и 20, дополнительно содержащее память для хранения данных видео.
[0250] Пример 22. Устройство по любому из примеров 19-21, дополнительно содержащее дисплей, сконфигурированный для отображения декодированных данных видео.
[0251] Пример 23. Устройство по любому из примеров 19-22, причем устройство содержит одно или более из камеры, компьютера, мобильного устройства, вещательного приемного устройства или телевизионной приставки.
[0252] Пример 24. Устройство по любому из примеров 19-23, причем устройство содержит декодер видео.
[0253] Пример 25. Устройство по любому из примеров 19-24, причем устройство содержит кодер видео.
[0254] Пример 26. Считываемый компьютером носитель хранения, имеющий сохраненные на нем инструкции, которые, при исполнении, побуждают один или более процессоров выполнять способ по любому из примеров 1-18.
[0255] Следует иметь в виду, что, в зависимости от примера, некоторые действия или события любого из описанных здесь методов могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные действия или события необходимы для практической реализации методов). Кроме того, в некоторых примерах, действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или с помощью множества процессоров, а не последовательно.
[0256] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, встроенном программном обеспечении или любой их комбинации. При реализации в программном обеспечении, функции могут сохраняться или передаваться как одна или более инструкций или код на считываемом компьютером носителе и исполняться аппаратным модулем обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители хранения, которые соответствуют осязаемому носителю, такому как носители хранения данных, или коммуникационной среде, включая любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям данных, которые являются долговременными, или (2) коммуникационному носителю (среде), такому как сигнал или несущая волна. Носителями данных могут быть любые доступные носители, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0257] В качестве примера, а не ограничения, такие считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другие устройства хранения на оптических дисках, устройства хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может быть использован для хранения желательного программного кода в форме инструкций или структур данных и к которому может получить доступ компьютер. Кроме того, любое соединение надлежащим образом определяется как считываемый компьютером носитель. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасное излучение, радио и микроволны, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радио и микроволны, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители хранения и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на не-временные, осязаемые носители хранения. Магнитный диск и оптический диск, как используется в настоящем документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и Blu-ray диск, где магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.
[0258] Инструкции могут исполняться посредством одного или более процессоров, таких как один или более DSP, микропроцессоров общего назначения, ASIC, FPGA или других эквивалентных интегральных схем или дискретных логических схем. Соответственно, термин “процессор” или “схема обработки”, как используется здесь, может относиться к любой из вышеперечисленных структур или любой другой структуре, подходящей для реализации методов, описанных здесь. Кроме того, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или программных модулях, сконфигурированных для кодирования и декодирования или встроенных в комбинированный кодек. Кроме того, методы могут быть полностью реализованы в одной или более схемах или логических элементах.
[0259] Методы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводный телефон, интегральную схему (IC) или набор интегральных схем (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии с акцентом на функциональных аспектах устройств, сконфигурированных для выполнения раскрытых методов, но не обязательно требующих реализации различными аппаратными модулями. Скорее, как описано выше, различные модули могут быть объединены в аппаратный модуль кодека или обеспечены набором взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или встроенным программным обеспечением.
[0260] Были описаны различные примеры. Эти и другие примеры входят в объем следующей формулы изобретения.
Группа изобретений относится к области кодирования и декодирования видео. Технический результат заключается в обеспечении уточнения предсказания на основе градиента, где уровень точности смещения является унифицированным для разных режимов предсказания, что приводит к меньшей общей логической схеме и к снижению энергопотребления ввиду отсутствия необходимости энергоснабжения неиспользуемой логической схемы. Для этого определяют один или более блоков предсказания для интер-предсказания текущего блока. При уточнении предсказания на основе градиента модифицируют одну или более выборок блока предсказания на основе факторов, таких как смещение в горизонтальном направлении, горизонтальный градиент, смещение в вертикальном направлении и вертикальный градиент. Округляют горизонтальное и вертикальное смещения до уровня точности, который является одним и тем же для разных режимов интер-предсказания, включая аффинный режим и режим двунаправленного оптического потока (BDOF). 5 н. и 17 з.п. ф-лы, 8 ил.
1. Способ декодирования данных видео, причем способ содержит этапы, на которых:
определяют блок предсказания для интер-предсказания текущего блока;
определяют горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента для дискретных отсчетов блока предсказания;
округляют горизонтальное и вертикальное смещения до уровня точности, который является одним и тем же для разных режимов интер-предсказания, включая аффинный режим и режим двунаправленного оптического потока (BDOF);
определяют первый градиент на основе первого набора дискретных отсчетов из дискретных отсчетов блока предсказания;
определяют второй градиент на основе второго набора дискретных отсчетов из дискретных отсчетов блока предсказания;
определяют один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений и первого и второго градиентов, при этом определение одного или более сдвигов уточнения содержит определение gx(i, j)*Δvx(i, j) + gy(i, j)*Δvy(i, j), где gx(i, j) - первый градиент для дискретного отсчета из упомянутых дискретных отсчетов, расположенного в (i, j), Δvx(i, j) - округленное горизонтальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), gy(i, j) - второй градиент для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), и Δvy(i, j) - округленное вертикальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j);
выполняют уточнение предсказания на основе градиента посредством, по меньшей мере, модифицирования дискретных отсчетов блока предсказания на основе этих определенных одного или более сдвигов уточнения, чтобы сгенерировать модифицированный блок предсказания; и
восстанавливают текущий блок на основе модифицированного блока предсказания.
2. Способ по п.1, дополнительно содержащий этап, на котором ограничивают упомянутые один или более сдвигов уточнения, причем при упомянутом модифицировании дискретных отсчетов блока предсказания дискретные отсчеты блока предсказания модифицируют на основе ограниченных одного или более сдвигов уточнения.
3. Способ по п.1, дополнительно содержащий этап, на котором определяют режим интер-предсказания для интер-предсказания текущего блока, причем при упомянутом определении горизонтального и вертикального смещений горизонтальное и вертикальное смещения определяют на основе этого определенного режима интер-предсказания.
4. Способ по п.1, в котором уровень точности равен 1/64.
5. Способ по п.1, в котором блок предсказания является первым блоком предсказания, текущий блок является первым текущим блоком, горизонтальное и вертикальное смещения являются первыми горизонтальным и вертикальным смещениями, упомянутые один или более сдвигов уточнения являются первыми одним или более сдвигами уточнения, округленные горизонтальное и вертикальное смещения являются первыми округленными горизонтальным и вертикальным смещениями, и модифицированный блок предсказания является первым модифицированным блоком предсказания, причем способ дополнительно содержит этапы, на которых:
определяют второй блок предсказания для интер-предсказания второго текущего блока;
определяют вторые горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента в отношении одного или более дискретных отсчетов второго блока предсказания;
округляют вторые горизонтальное и вертикальное смещения до того же самого уровня точности, до которого округлены первые горизонтальное и вертикальное смещения, чтобы сгенерировать вторые округленные горизонтальное и вертикальное смещения;
определяют вторые один или более сдвигов уточнения на основе вторых округленных горизонтального и вертикального смещений;
модифицируют упомянутые один или более дискретных отсчетов второго блока предсказания на основе этих определенных вторых одного или более сдвигов уточнения, чтобы сгенерировать второй модифицированный блок предсказания; и
восстанавливают второй текущий блок на основе второго модифицированного блока предсказания.
6. Способ уточнения предсказания, выполняемый кодером видео, причем способ содержит этапы, на которых:
определяют блок предсказания для интер-предсказания текущего блока;
определяют горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента для дискретных отсчетов блока предсказания;
округляют горизонтальное и вертикальное смещения до уровня точности, который является одним и тем же для разных режимов интер-предсказания, включая аффинный режим и режим двунаправленного оптического потока (BDOF);
определяют первый градиент на основе первого набора дискретных отсчетов из дискретных отсчетов блока предсказания;
определяют второй градиент на основе второго набора дискретных отсчетов из дискретных отсчетов блока предсказания;
определяют один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений и первого и второго градиентов, при этом определение одного или более сдвигов уточнения содержит определение gx(i, j)*Δvx(i, j) + gy(i, j)*Δvy(i, j), где gx(i, j) - первый градиент для дискретного отсчета из упомянутых дискретных отсчетов, расположенного в (i, j), Δvx(i, j) - округленное горизонтальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), gy(i, j) - второй градиент для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), и Δvy(i, j) - округленное вертикальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j);
выполняют уточнение предсказания на основе градиента посредством, по меньшей мере, модифицирования дискретных отсчетов блока предсказания на основе этих определенных одного или более сдвигов уточнения, чтобы сгенерировать модифицированный блок предсказания;
определяют остаточные значения, указывающие разность между текущим блоком и модифицированным блоком предсказания; и
сигнализируют информацию, указывающую остаточные значения.
7. Способ по п.6, дополнительно содержащий этап, на котором ограничивают упомянутые один или более сдвигов уточнения, причем при упомянутом модифицировании дискретных отсчетов блока предсказания дискретные отсчеты блока предсказания модифицируют на основе ограниченных одного или более сдвигов уточнения.
8. Способ по п.6, дополнительно содержащий этап, на котором определяют режим интер-предсказания для интер-предсказания текущего блока, причем при упомянутом определении горизонтального и вертикального смещений горизонтальное и вертикальное смещения определяют на основе этого определенного режима интер-предсказания.
9. Способ по п.6, в котором уровень точности равен 1/64.
10. Способ по п.6, в котором блок предсказания является первым блоком предсказания, текущий блок является первым текущим блоком, горизонтальное и вертикальное смещения являются первыми горизонтальным и вертикальным смещениями, причем упомянутые один или более сдвигов уточнения являются первыми одним или более сдвигами уточнения, округленные горизонтальное и вертикальное смещения являются первыми округленными горизонтальным и вертикальным смещениями, модифицированный блок предсказания является первым модифицированным блоком предсказания, и остаточные значения содержат первые остаточные значения, причем способ дополнительно содержит этапы, на которых:
определяют второй блок предсказания для интер-предсказания второго текущего блока;
определяют вторые горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента одного или более дискретных отсчетов второго блока предсказания;
округляют вторые горизонтальное и вертикальное смещения до того же самого уровня точности, до которого округлены первые горизонтальное и вертикальное смещения, чтобы сгенерировать вторые округленные горизонтальное и вертикальное смещения;
определяют вторые один или более сдвигов уточнения на основе вторых округленных горизонтального и вертикального смещений;
модифицируют упомянутые один или более дискретных отсчетов второго блока предсказания на основе этих определенных вторых одного или более сдвигов уточнения, чтобы сгенерировать второй модифицированный блок предсказания;
определяют вторые остаточные значения, указывающие разность между вторым текущим блоком и вторым модифицированным блоком предсказания; и
сигнализируют информацию, указывающую вторые остаточные значения.
11. Устройство для кодирования данных видео, содержащее:
память, приспособленную хранить дискретные отсчеты блока предсказания; и
схему обработки, выполненную с возможностью:
определять блок предсказания для интер-предсказания текущего блока,
определять горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента для дискретных отсчетов блока предсказания,
округлять горизонтальное и вертикальное смещения до уровня точности, который является одним тем же для разных режимов интер-предсказания, включая аффинный режим и режим двунаправленного оптического потока (BDOF),
определять первый градиент на основе первого набора дискретных отсчетов из дискретных отсчетов блока предсказания,
определять второй градиент на основе второго набора дискретных отсчетов из дискретных отсчетов блока предсказания,
выполнять уточнение предсказания на основе градиента, при этом для выполнения уточнения предсказания на основе градиента схема обработки выполнена с возможностью, по меньшей мере, определять один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений и первого и второго градиентов, при этом для определения одного или более сдвигов уточнения схема обработки выполнена с возможностью определения gx(i, j)*Δvx(i, j) + gy(i, j)*Δvy(i, j), где gx(i, j) - первый градиент для дискретного отсчета из упомянутых дискретных отсчетов, расположенного в (i, j), Δvx(i, j) - округленное горизонтальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), gy(i, j) - второй градиент для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), и Δvy(i, j) - округленное вертикальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j),
модифицировать дискретные отсчеты блока предсказания на основе этих определенных одного или более сдвигов уточнения, чтобы сгенерировать модифицированный блок предсказания, и
кодировать текущий блок на основе модифицированного блока предсказания.
12. Устройство по п.11, в котором для кодирования текущего блока схема обработки выполнена с возможностью восстанавливать текущий блок на основе модифицированного блока предсказания.
13. Устройство по п.11, в котором для кодирования текущего блока схема обработки выполнена с возможностью:
определять остаточные значения, указывающие разность между текущим блоком и модифицированным блоком предсказания; и
сигнализировать информацию, указывающую остаточные значения.
14. Устройство по п.11, в котором схема обработки выполнена с возможностью ограничивать упомянутые один или более сдвигов уточнения, причем для упомянутого модифицирования дискретных отсчетов блока предсказания схема обработки выполнена с возможностью модифицировать дискретные отсчеты блока предсказания на основе ограниченных одного или более сдвигов уточнения.
15. Устройство по п.11, в котором схема обработки выполнена с возможностью определять режим интер-предсказания для интер-предсказания текущего блока, причем для упомянутого определения горизонтального и вертикального смещений схема обработки выполнена с возможностью определять горизонтальное и вертикальное смещения на основе этого определенного режима интер-предсказания.
16. Устройство по п.11, причем уровень точности равен 1/64.
17. Устройство по п.11, причем блок предсказания является первым блоком предсказания, текущий блок является первым текущим блоком, горизонтальное и вертикальное смещения являются первыми горизонтальным и вертикальным смещениями, причем упомянутые один или более сдвигов уточнения являются первыми одним или более сдвигами уточнения, округленные горизонтальное и вертикальное смещения являются первыми округленными горизонтальным и вертикальным смещениями, и модифицированный блок предсказания является первым модифицированным блоком предсказания, и при этом схема обработки выполнена с возможностью:
определять второй блок предсказания для интер-предсказания второго текущего блока;
определять вторые горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента одного или более дискретных отсчетов второго блока предсказания;
округлять вторые горизонтальное и вертикальное смещения до того же уровня точности, до которого были округлены первые горизонтальное и вертикальное смещения, чтобы сгенерировать вторые округленные горизонтальное и вертикальное смещения;
определять вторые один или более сдвигов уточнения на основе вторых округленных горизонтального и вертикального смещений;
модифицировать упомянутые один или более дискретных отсчетов второго блока предсказания на основе этих определенных вторых одного или более сдвигов уточнения, чтобы сгенерировать второй модифицированный блок предсказания; и
кодировать второй текущий блок на основе второго модифицированного блока предсказания.
18. Устройство по п.11, дополнительно содержащее дисплей, выполненный с возможностью отображения декодированных данных видео.
19. Устройство по п.11, дополнительно содержащее камеру, выполненную с возможностью захвата данных видео, подлежащих кодированию.
20. Устройство по п.11, при этом устройство содержит одно или более из камеры, компьютера, устройства беспроводной связи, устройство приема вещания и телевизионной приставки.
21. Энергонезависимый машиночитаемый носитель данных, хранящий инструкции, которые при их исполнении предписывают одному или более процессорам:
определять блок предсказания для интер-предсказания текущего блока;
определять горизонтальное и вертикальное смещения для уточнения предсказания на основе градиента для дискретных отсчетов блока предсказания;
округлять горизонтальное и вертикальное смещения до уровня точности, который является одним и тем же для разных режимов интер-предсказания, включая аффинный режим и режим двунаправленного оптического потока (BDOF);
определять первый градиент на основе первого набора дискретных отсчетов из дискретных отсчетов блока предсказания;
определять второй градиент на основе второго набора дискретных отсчетов из дискретных отсчетов блока предсказания;
определять один или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений и первого и второго градиентов, при этом инструкции, которые предписывают одному или более процессорам определять один или более сдвигов уточнения, содержат инструкции, которые предписывают одному или более процессорам определять gx(i, j)*Δvx(i, j) + gy(i, j)*Δvy(i, j), где gx(i, j) - первый градиент для дискретного отсчета из упомянутых дискретных отсчетов, расположенного в (i, j), Δvx(i, j) - округленное горизонтальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), gy(i, j) - второй градиент для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), и Δvy(i, j) - округленное вертикальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j);
выполнять уточнение предсказания на основе градиента посредством, при этом инструкции, которые предписывают одному или более процессорам выполнять уточнение предсказания на основе градиента, содержат инструкции, которые предписывают одному или более процессорам, по меньшей мере, модифицировать дискретные отсчеты блока предсказания на основе этих определенных одного или более сдвигов уточнения, чтобы сгенерировать модифицированный блок предсказания; и
кодировать текущий блок на основе модифицированного блока предсказания.
22. Устройство для кодирования данных видео, содержащее:
средство для определения блока предсказания для интер-предсказания текущего блока;
средство для определения горизонтального и вертикального смещений для уточнения предсказания на основе градиента для дискретных отсчетов блока предсказания;
средство для округления горизонтального и вертикального смещений до уровня точности, который является одним и тем же для разных режимов интер-предсказания, включая аффинный режим и режим двунаправленного оптического потока (BDOF);
средство для определения первого градиента на основе первого набора дискретных отсчетов из дискретных отсчетов блока предсказания;
средство для определения второго градиента на основе второго набора дискретных отсчетов из дискретных отсчетов блока предсказания;
средство для определения одного или более сдвигов уточнения на основе округленных горизонтального и вертикального смещений и первого и второго градиентов, при этом средство для определения одного или более сдвигов уточнения содержит средство для определения gx(i, j)*Δvx(i, j) + gy(i, j)*Δvy(i, j), где gx(i, j) - первый градиент для дискретного отсчета из упомянутых дискретных отсчетов, расположенного в (i, j), Δvx(i, j) - округленное горизонтальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), gy(i, j) - второй градиент для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j), и Δvy(i, j) - округленное вертикальное смещение для упомянутого дискретного отсчета из дискретных отсчетов, расположенного в (i, j);
средство для выполнения уточнения предсказания на основе градиента, при этом средство для выполнения уточнения предсказания на основе градиента содержит средство для модифицирования дискретных отсчетов блока предсказания на основе этих определенных одного или более сдвигов уточнения, чтобы сгенерировать модифицированный блок предсказания; и
средство для кодирования текущего блока на основе модифицированного блока предсказания.
US 20190020895 A1, 17.01.2019 | |||
WO 2019010156 A1, 10.01.2019 | |||
US 20180184083 A1, 28.06.2018 | |||
US 20190045214 A1, 07.02.2019 | |||
КОДИРОВАНИЕ ДАННЫХ ЗАХВАТА ЭКРАНА | 2014 |
|
RU2679349C1 |
Авторы
Даты
2024-04-12—Публикация
2020-05-15—Подача