RU2801587C1 - Способ и устройство для кодирования видео - Google Patents
Способ и устройство для кодирования видео Download PDFInfo
- Publication number
- RU2801587C1 RU2801587C1 RU2021128174A RU2021128174A RU2801587C1 RU 2801587 C1 RU2801587 C1 RU 2801587C1 RU 2021128174 A RU2021128174 A RU 2021128174A RU 2021128174 A RU2021128174 A RU 2021128174A RU 2801587 C1 RU2801587 C1 RU 2801587C1
- Authority
- RU
- Russia
- Prior art keywords
- weight
- index
- video
- shift operation
- current block
- Prior art date
Links
Images
Abstract
Изобретение относится к области кодирования. Техническим результатом является повышение эффективности и скорости кодирования. Предложен способ и устройства, в которых декодируется информация предсказания текущего блока текущего изображения в кодированном битовом потоке. Информация предсказания указывает режим геометрического разделения (GPM) для текущего блока. Текущий блок разделяется на два раздела в режиме GPM. Каждый из разделов ассоциируется с соответствующим предиктором. Определяется весовой индекс для отсчета текущего блока на основе положения отсчета. Вычисляется весовой коэффициент на основе весового индекса отсчета согласно уравнению, которое преобразует весовой индекс в весовой коэффициент. Восстанавливается отсчет на основе весового коэффициента и предиктора, соответствующих отсчету. 5 н. и 17 з.п. ф-лы, 18 ил., 5 табл.
Description
ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[1] Настоящая заявка испрашивает приоритет по заявке на патент США №17/063,149 «СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО», поданной 5 октября 2020 года, в которой испрашивается приоритет по предварительной заявке США №62/953,457 «УПРОЩЕНИЕ ДЛЯ ГЕО ИНТЕР-БЛОКА», поданной 24 декабря 2019 г., и предварительной заявки США №62/955,825 «СПОСОБ БЕЗ ИСПОЛЬЗОВАНИЯ СПРАВОЧНОЙ ТАБЛИЦЫ ДЛЯ ВЕСОВОГО ИНДЕКСА ДЛЯ ПРЕОБРАЗОВАНИЯ ВЕСА ДЛЯ ГЕО ИНТЕР-БЛОКА», поданной 31 декабря 2019 г. Полное раскрытие предшествующих заявок полностью включено в настоящее описание посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[2] Настоящее изобретение описывает варианты осуществления, в основном относящиеся к кодированию видео.
УРОВЕНЬ ТЕХНИКИ
[3] Описание уровня техники, приведенное в данном документе, предназначено для общего представления контекста изобретения. Работа названных здесь изобретателей, в той мере, в какой она описана в этом разделе описания уровня техники, а также аспекты описания, которые в противном случае не могут считаться предшествующим уровнем техники на момент подачи заявки, ни прямо, ни косвенно не признаются в качестве предшествующего уровня техники в отношении настоящего изобретения.
[4] Кодирование и декодирование видео могут выполняться с использованием межкадрового предсказания с компенсацией движения. Несжатое цифровое видео может включать в себя серию изображений, при этом каждое изображение имеет пространственный размер, например, 1920×1080 отсчетов сигнала яркости и связанных отсчетов сигнала цветности. Серия изображений может иметь фиксированную или переменную частоту изображений (неофициально также известную как частота кадров), например, 60 изображений в секунду или 60 Гц. Несжатое видео имеет значительные требования к битрейту. Например, для видео 1080р60 4:2:0 с частотой 8 бит на отсчет (разрешение 1920×1080 отсчетов яркости при частоте кадров 60 Гц) требуется полоса пропускания, близкая к 1,5 Гбит/с. Час такого видео требует более 600 ГБ дискового пространства.
[5] Одной из целей кодирования и декодирования видео может быть уменьшение избыточности входного видеосигнала посредством сжатия. Сжатие может помочь снизить вышеупомянутые требования к полосе пропускания или пространству для хранения, в некоторых случаях на два порядка или более. Могут использоваться как сжатие без потерь, так и сжатие с потерями, а также их комбинация. Сжатие без потерь относится к методам, при которых из сжатого исходного сигнала может быть восстановлена точная копия исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может не быть идентичным исходному сигналу, но искажение между исходным и восстановленным сигналами достаточно мало, чтобы сделать восстановленный сигнал полезным для предполагаемого применения. В случае видео широко применяется сжатие с потерями. Допустимая степень искажения зависит от приложения; например, пользователи определенных потребительских приложений потоковой передачи могут допускать более высокие искажения, чем пользователи приложений распределения телевидения. Достижимая степень сжатия может отражать следующее: более высокое разрешаемое/допустимое искажение может привести к более высокой степени сжатия.
[6] Видеокодер и видеодекодер могут использовать методы из нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.
[7] Технологии видеокодеков могут включать в себя методы, известные как интерпредсказание. Для каждой единицы кодирования (CU) с интерпредсказанием параметры движения включают в себя векторы движения, индексы опорных изображений и индекс использования списка опорных изображений, а также дополнительную информацию, которая должна использоваться для генерации отсчетов с интерпредсказанием. Параметры движения могут сигнализироваться явным или неявным образом. Когда CU кодируется в режиме пропуска, CU ассоциируется с одной единицей предсказания (PU) и не имеет значимых остаточных коэффициентов, кодированной дельты вектора движения или индекса опорного изображения. Указывается режим слияния, при котором параметры движения для текущей CU получаются из соседних CU, включая пространственные и временные кандидаты, а также вводятся дополнительные расписания, например, в VVC. Режим слияния может применяться к любой CU с интерпредсказанием, а не только к режиму пропуска. Альтернативой режиму слияния является явная передача параметров движения. Вектор движения, соответствующий индекс опорного изображения для каждого списка опорных изображений и флаг использования списка опорных изображений и другая необходимая информация сигнализируются явно для каждой CU.
[8] Некоторые инструменты кодирования с интерпредсказанием включают в себя расширенное предсказание слияния, режим слияния с разностью векторов движения (MMVD), расширенный режим предсказания вектора движения (AMVP) с сигнализацией симметричной разности векторов движения (MVD), аффинное предсказание с компенсацией движения, временное предсказание вектора движения на основе субблоков (SbTMVP), адаптивное разрешение вектора движения (AMVR), хранение поля движения (хранение 1/16 MV отсчета яркости и сжатие поля движения 8×8), двойное предсказание с взвешенным усреднением (BWA), двунаправленный оптический поток (BDOF), уточнение вектора движения на стороне декодера (DMVR), режим треугольного разделения (ТРМ) и комбинированное интер- и интрапредсказание (CIIP).
[9] В некоторых случаях список кандидатов на слияние создается путем включения следующих пяти типов кандидатов по порядку: (1) пространственный MVP из пространственных соседних CU; (2) временный MVP из совмещенных CU; (3) MVP на основе истории из таблицы FIFO; (4) попарный средний MVP; и (5) нулевые MV.
[10] Размер списка слияния сигнализируется в заголовке слайса, и в некоторых случаях максимально допустимый размер списка слияния составляет, например, 6. Для каждого кода CU в режиме слияния индекс лучшего кандидата на слияние кодируется с использованием усеченной унарной бинаризации (TU). Первая ячейка индекса слияния кодируется контекстом, а для других ячеек используется обходное кодирование.
[11] На фиг. 1А показаны примерные положения кандидатов на пространственное слияние. В некоторых случаях среди кандидатов, находящихся в положениях, изображенных на фиг. 1А, может быть выбрано до четырех кандидатов на слияние. Порядок выбора следующий: B1, А1, В0, А0 и В2. Кандидат в положении В2 рассматривается только тогда, когда любая CU в положениях А0, В0, В1 или А1 недоступна (например, CU в положении А0 принадлежит другому слайсу или тайлу) или не закодирована с помощью интеркодирования. После того как кандидат в положении А1 добавлен в список кандидатов на слияние, добавление оставшихся кандидатов подлежит проверке избыточности, которая гарантирует, что кандидаты с одинаковой информацией о движении исключены из списка кандидатов на слияние, так что эффективность кодирования повышается.
[12] На фиг. 1В показаны пары кандидатов, рассматриваемые для проверки избыточности кандидатов на пространственное слияние. Чтобы уменьшить вычислительную сложность, не все возможные пары кандидатов рассматриваются при проверке избыточности. Вместо этого рассматриваются только пары, обозначенные стрелкой на фиг. 1В, и кандидат добавляется в список кандидатов на слияние, только если соответствующий кандидат, используемый для проверки избыточности, не имеет такой же информации о движении.
[13] На фиг. 1С показано масштабирование вектора движения для кандидата на временное слияние. В некоторых случаях в список кандидатов на слияние можно добавить только одного кандидата на временное слияние. В частности, при получении этого кандидата на временное слияние получают масштабированный вектор движения на основе совмещенной CU, принадлежащей совмещенному опорному изображению. Список опорных изображений, используемый для получения совмещенной CU, явно сигнализируется в заголовке слайса. Масштабированный вектор движения для кандидата на временное слияние получается, как показано пунктирной линией на фиг. 1С. Масштабированный вектор движения получается из вектора движения совмещенной CU с использованием расстояний tb и td счетчика порядка изображений (РОС), где tb определяется как разность РОС между опорным изображением текущего изображения и текущим изображением, a td определяется как разность РОС между опорным изображением совмещенного изображения и совмещенным изображением. Индекс опорного изображения кандидата на временное слияние может быть установлен равным нулю.
[14] На фиг. 1D показаны примерные положения для кандидата на временное слияние. Кандидат на временное слияние выбирается между CU в положениях С0 и С1. Если CU в положении С0 недоступна, не кодирована с помощью интеркодирования или находится вне текущего ряда CTU, используется CU в положении С1. В противном случае CU в положении С0 используется при получении кандидата на временное слияние.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[15] Аспекты изобретения относятся к способам и устройствам для кодирования/декодирования видео. В некоторых примерах устройство для декодирования видео включает в себя схему обработки.
[16] Согласно аспектам раскрытия, предусмотрен способ декодирования видео в декодере. В этом способе декодируется информация предсказания текущего блока текущего изображения в кодированном битовом потоке. Информация предсказания указывает режим геометрического разделения (GPM) для текущего блока. Текущий блок разделяется на два раздела в режиме GPM. Каждый из разделов ассоциируется с соответствующим предиктором. Весовой индекс для отсчета текущего блока определяется на основе положения отсчета. Весовой коэффициент вычисляется на основе весового индекса отсчета согласно уравнению, которое преобразует весовой индекс в весовой коэффициент. Отсчет восстанавливается на основе весового коэффициента и предиктора, соответствующих отсчету.
[17] В варианте осуществления операция сдвига вправо выполняется над суммой весового индекса и значения смещения. Результат операции сдвига вправо усекается до предварительно заданного диапазона.
[18] В варианте осуществления значение смещения основано на количестве битов, сдвинутых операцией сдвига вправо, а количество битов, сдвинутых операцией сдвига вправо, основано по меньшей мере на одном из весового индекса и размера таблицы косинусов, используемой для вычисления весового индекса.
[19] В варианте осуществления индекс угла и индекс расстояния, которые задают границу разделения между разделами текущего блока, определяются на основе GPM. Определяется весовой индекс для отсчета на основе положения отсчета, индекса угла и индекса расстояния.
[20] В варианте осуществления определяется индекс разделения на основе индекса угла. Весовой коэффициент рассчитывается на основе индекса раздела.
[21] В варианте осуществления уравнение имеет вид
в котором
где idx2wShiftBit указывает количество битов, сдвинутых операцией сдвига вправо, weight - весовой коэффициент, partIdx - индекс раздела, wIdx - весовой индекс, и Clip3() - функция усечения.
[22] В варианте осуществления уравнение представляет собой кусочно-постоянную функцию, которая включает в себя начальное значение и множество единичных ступенчатых функций. Начальное значение представляет собой одно из минимального значения весового коэффициента и максимального значения весового коэффициента, а количество множества единичных ступенчатых функций равно общему количеству различных значений весовых коэффициентов минус один.
[23] Аспекты раскрытия предусматривают устройство, конфигурированное для выполнения любого одного или комбинации способов декодирования видео. В варианте осуществления устройство включает в себя схему обработки, которая декодирует информацию предсказания текущего блока текущего изображения в кодированном битовом потоке. Информация предсказания указывает режим геометрического разделения (GPM) для текущего блока. Текущий блок разделяется на два раздела в режиме GPM. Каждый из разделов ассоциируется с соответствующим предиктором. Схема обработки определяет весовой индекс для отсчета текущего блока на основе положения отсчета. Схема обработки вычисляет весовой коэффициент на основе весового индекса отсчета согласно уравнению, которое преобразует весовой индекс в весовой коэффициент. Схема обработки восстанавливает отсчет на основе весового коэффициента и предиктора, соответствующих отсчету.
[24] Аспекты изобретения также предусматривают невременный машиночитаемый носитель, хранящий инструкции, которые при выполнении компьютером для декодирования видео побуждают компьютер выполнять любой или комбинацию способов декодирования видео.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[25] Дополнительные признаки, сущность и различные преимущества раскрытого объекта изобретения будут более понятны из следующего подробного описания и прилагаемых чертежей, на которых изображено следующее.
[26] На фиг. 1А показаны примерные положения кандидатов на пространственное слияние.
[27] На фиг. 1В показаны пары кандидатов, рассматриваемые для проверки избыточности кандидатов на пространственное слияние.
[28] На фиг. 1С показан пример масштабирования вектора движения для кандидата на временное слияние.
[29] На фиг. 1D показаны примерные положения для кандидата на временное слияние.
[30] На фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы системы связи согласно варианту осуществления.
[31] На фиг. 3 показана схематическая иллюстрация упрощенной блок-схемы системы связи согласно варианту осуществления.
[32] На фиг. 4 показана схематическая иллюстрация упрощенной блок-схемы декодера согласно варианту осуществления.
[33] На фиг. 5 показана схематическая иллюстрация упрощенной блок-схемы кодера согласно варианту осуществления.
[34] На фиг. 6 показана блок-схема кодера согласно другому варианту осуществления.
[35] На фиг. 7 показана блок-схема декодера согласно другому варианту осуществления.
[36] На фиг. 8А и 8В показаны два примерных треугольных раздела согласно некоторым вариантам осуществления.
[37] На фиг. 9 показан выбор вектора движения с одним предсказанием для режима треугольного раздела согласно некоторым вариантам осуществления.
[38] На фиг. 10А и 10В показаны примерные весовые карты для яркости и цветности согласно некоторым вариантам осуществления.
[39] На фиг. 11 показан примерный режим геометрического разделения согласно некоторым вариантам осуществления изобретения.
[40] На фиг. 12 показана блок-схема, описывающая примерный процесс согласно варианту осуществления.
[41] На фиг. 13 показана схематическая иллюстрация компьютерной системы согласно варианту осуществления.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[42] Настоящее раскрытие включает в себя варианты осуществления, направленные на режим геометрического слияния (GEO), который также может называться режимом геометрического разделения (GPM). Варианты осуществления включают в себя способы, устройства и невременные машиночитаемые носители для улучшения GEO. Кроме того, блок может относиться к блоку предсказания, блоку кодирования или единице кодирования.
[43] I. Видеокодер и декодер
[44] На фиг. 2 проиллюстрирована упрощенная блок-схема системы (200) связи согласно варианту осуществления настоящего изобретения. Система (200) связи включает в себя множество оконечных устройств, которые могут связываться друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере с фиг. 2 первая пара оконечных устройств (210) и (220) выполняет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, которые захватываются оконечным устройством (210)) для передачи другому оконечному устройству (220) через сеть (250). Кодированные видеоданные могут быть переданы в форме одного или более кодированных битовых потоков видео. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения в соответствии с восстановленными видеоданными. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.
[45] В другом примере система (200) связи включает в себя вторую пару оконечных устройств (230) и (240), которые выполняют двунаправленную передачу кодированных видеоданных, которая может происходить, например, во время видео конференц-связи. Для двунаправленной передачи данных, в примере, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, которые захватываются оконечным устройством) для передачи на другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать кодированные видеоданные, переданные другим оконечным устройством из оконечных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений и может отображать видеоизображения на доступном устройстве отображения в соответствии с восстановленными видеоданными.
[46] В примере с фиг. 2 оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но принципы настоящего раскрытия не могут быть ограничены этим. Варианты осуществления настоящего изобретения находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференц-связи. Сеть (250) представляет собой любое количество сетей, которые передают кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные (соединенные проводами) и/или беспроводные сети связи. Сеть (250) связи может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего описания архитектура и топология сети (250) могут быть несущественными для работы настоящего изобретения, если это не объясняется в данном документе ниже.
[47] На фиг. 3 проиллюстрировано, в качестве примера применения для раскрытого объекта изобретения, размещение видеокодера и видеодекодера в среде потоковой передачи. Раскрытый объект изобретения может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т.п.
[48] Система потоковой передачи может включать в себя подсистему (313) захвата, которая может включать в себя источник (301) видео, например цифровую камеру, создающий, например, поток видеоизображений (302), которые не сжаты. В примере поток видеоизображений (302) включает в себя отсчеты, снятые цифровой камерой. Поток видеоизображений (302), изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или кодированными битовыми потоками видео), может обрабатываться электронным устройством (320), которое включает в себя видео кодер (303), подключенный к источнику (301) видео. Видеокодер (303) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию для включения или реализации аспектов раскрытого объекта изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или кодированный битовый поток видео (304)), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком видеоизображений (302), могут быть сохранены на сервере потоковой передачи (305) для будущего использования. Одна или более клиентских подсистем потоковой передачи, таких как клиентские подсистемы (306) и (308) на фиг. 3, могут получить доступ к потоковому серверу (305) для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может включать в себя видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток видеоизображений (311), которые могут быть визуализированы на дисплее (312) (например, экране дисплея) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи кодированные видеоданные (304), (307) и (309) (например, битовые потоки видео) могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию МСЭ-Т Н.265. В одном примере разрабатываемый стандарт кодирования видео неофициально известен как универсальное кодирование видео (VVC). Раскрытый объект изобретения может использоваться в контексте VVC.
[49] Следует отметить, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя видеодекодер (не показан), а электронное устройство (330) также может включать в себя видеокодер (не показан).
[50] На фиг. 4 показана блок-схема видеодекодера (410) согласно варианту осуществления настоящего раскрытия. Видеодекодер (410) может быть включен в электронное устройство (430). Электронное устройство (430) может включать в себя приемник (431) (например, приемную схему). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере с фиг. 3.
[51] Приемник (431) может принимать одну или более кодированных видеопоследовательностей, которые должны быть декодированы видеодекодером (410); в том же или другом варианте осуществления - по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (401), который может быть аппаратной/программной связью с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (431) может принимать закодированные видеоданные с другими данными, например, закодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть отправлены их соответствующим использующим объектам (не изображены). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с дрожанием в сети между приемником (431) и энтропийным декодером/парсером (420) (далее «парсер (420)») может быть подключена буферная память (415). В некоторых приложениях буферная память (415) является частью видеодекодера (410). В других случаях она может находиться снаружи видеодекодера (410) (не показано). В других случаях может иметься буферная память (не изображена) снаружи видеодекодера (410), например, для борьбы с дрожанием сети, и, кроме того, другая буферная память (415) внутри видеодекодера (410), например, для обработки времени воспроизведения. Когда приемник (431) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буферная память (415) может не понадобиться или может быть небольшой. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буферная память (415), которая может быть сравнительно большой и может быть предпочтительно адаптивного размера, и может по меньшей мере частично быть реализована в операционной системе или аналогичных элементах (не изображены) снаружи видеодекодера (410).
[52] Видеодекодер (410) может включать в себя парсер (420) для восстановления символов (421) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (410), и потенциально информацию для управления устройством визуализации, таким как устройство визуализации (412) (например, экран дисплея), которое не является неотъемлемой частью электронного устройство (430), но может быть подключено к электронному устройству (430), как показано на фиг. 4. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров дополнительной расширенной информации (сообщения SEI) или информации о пригодности видео (VUI) (не изображены). Парсер (420) может выполнять парсинг/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование закодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видео кодирования и может следовать различным принципам, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Парсер (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Парсер (420) также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.
[53] Парсер (420) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, принятой из буферной памяти (415), чтобы создавать символы (421).
[54] Восстановление символов (421) может включать в себя множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: интер- и интраизображение, интер- и интраблок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации подгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью парсера (420). Поток такой информации управления подгруппой между парсером (420) и множеством модулей ниже не показан для ясности.
[55] Помимо уже упомянутых функциональных блоков, видеодекодер (410) может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть, по меньшей мере частично, интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.
[56] Первым модулем является модуль (451) масштабирования/обратного преобразования. Модуль (451) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (421) от парсера (420). Модуль (451) масштабирования/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (455).
[57] В некоторых случаях выходные отсчеты модуля (451) масштабирования/обратного преобразования могут относиться к интра-кодированному блоку; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (452) внутрикадрового предсказания. В некоторых случаях модуль (452) внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из буфера (458) текущих изображений. Буфер (458) текущих изображений буферизует, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (455) в некоторых случаях добавляет для каждого отсчета информацию предсказания, сгенерированную модулем (452) интрапредсказания, к информации выходных отсчетов, предоставляемой модулем (451) масштабирования/обратного преобразования.
[58] В других случаях выходные отсчеты модуля (451) масштабирования/обратного преобразования могут относиться к интеркодированному блоку и потенциально блоку с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может обращаться к памяти (457) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (421), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (455) к выходу модуля (451) масштабирования/обратного преобразования (в данном случае называемые остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю (453) предсказания с компенсацией движения в форме символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения суботсчетов, механизмы предсказания вектора движения и так далее.
[59] Выходные отсчеты агрегатора (455) могут подвергаться различным методам петлевой фильтрации в модуле (456) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в кодированную видеопоследовательность (также называемую битовым потоком кодированного видео) и предоставляемые модулю (456) петлевой фильтрации как символы (421) из парсера (420), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные петлей значения отсчетов.
[60] Выходной сигнал модуля (456) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (412) визуализации, а также сохранен в памяти (457) опорных изображений для использования в будущем межкадровом предсказании.
[61] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. Например, после того, как кодированное изображение, соответствующее текущему изображению, полностью восстановлено, и кодированное изображение было идентифицировано как опорное изображение (например, парсером (420)), буфер (458) текущих изображений может стать частью памяти (457) опорных изображений, и буфер свежего текущего изображения может быть перераспределен перед началом восстановления следующего кодированного изображения.
[62] Видеодекодер (410) может выполнять операции декодирования согласно заранее определенной технологии сжатия видео в стандарте, таком как Рекомендации МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность соответствует как синтаксису технологии или стандарту сжатия видео, так и профилям, задокументированным в технологии или стандарте сжатия видео. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах границ, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, сигнализируемых в кодированной видеопоследовательности.
[63] В варианте осуществления приемник (431) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных слоев или слоев улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.
[64] На фиг. 5 показана блок-схема видеодекодера (503) согласно варианту осуществления настоящего раскрытия. Видеокодер (503) включен в электронное устройство (520). Электронное устройство (520) включает в себя передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере с фиг. 3.
[65] Видеокодер (503) может принимать отсчеты видео от источника (501) видео (который не является частью электронного устройства (520) в примере с фиг. 5), который может захватывать видеоизображение(я) для кодирования с помощью видеокодера (503). В другом примере источник (501) видео является частью электронного устройства (520).
[66] Источник (501) видео может предоставить исходную видеопоследовательность для кодирования видеокодером (503) в форме цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру дискретизации (например, Y CrCb 4: 2: 0, Y CrCb 4: 4: 4). В системе обслуживания мультимедиа источник (501) видео может быть запоминающим устройством, хранящим предварительно подготовленное видео. В системе видеоконференц-связи источник (501) видео может быть камерой, которая фиксирует информацию локального изображения в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры дискретизации, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.
[67] Согласно варианту осуществления видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально связан с другими функциональными модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером (550), могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение, …), размеру изображения, макету группы изображений (GOP), максимально допустимой опорной области вектора движения и так далее. Контроллер (550) может быть конфигурирован так, чтобы иметь другие подходящие функции, которые относятся к видеокодеру (503), оптимизированному для определенной конструкции системы.
[68] В некоторых вариантах осуществления видеокодер (503) конфигурирован для работы в контуре кодирования. В качестве упрощенного описания, в примере контур кодирования может включать в себя кодер (530) источника (например, ответственный за создание символов, таких как поток символов, на основе входного изображения для кодирования, и опорного изображения (изображений), а также (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) восстанавливает символы для создания данных отсчетов аналогично тому, как (удаленный) декодер также может создавать (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте изобретения). Восстановленный поток отсчетов (данные отсчетов) вводится в память опорных изображений (534). Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое в памяти опорных изображений (534) также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые бы «видел» декодер при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) также используется в некоторых смежных областях техники.
[69] Работа «локального» декодера (533) может быть такой же, как у «удаленного» декодера, такого как видеодекодер (410), который уже был подробно описан выше в связи с фиг. 4. Кратко ссылаясь также на фиг. 4, однако, поскольку символы доступны, и кодирование/декодирование символов в закодированную видеопоследовательность энтропийным кодером (545) и парсером (420) может быть без потерь, части энтропийного декодирования видеодекодера (410), включая буферную память (415) и парсер (420), не могут быть полностью реализованы в локальном декодере (533).
[70] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсинга/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать в, по существу, идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[71] Во время работы в некоторых примерах исходный кодер (530) может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входное изображение с предсказанием со ссылкой на одно или более ранее кодированных изображений из видеопоследовательности, которые были обозначены как «опорные изображения». Таким образом, механизм (532) кодирования кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве эталона(ов) предсказания для входного изображения.
[72] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть обозначены как опорные изображения, на основе символов, созданных кодером (530) источника. Операции механизма (532) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 5), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных изображениях, и может вызывать сохранение восстановленных опорных изображений в кэше (534) опорных изображений. Таким образом, видеокодер (503) может локально хранить копии восстановленных опорных изображений, которые имеют общий контент, в качестве восстановленных опорных изображений, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).
[73] Предиктор (535) может выполнять поиски с предсказанием для механизма (532) кодирования. То есть, для нового изображения, которое должно быть закодировано, предиктор (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном предсказания для новых изображений. Предиктор (535) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны предсказания. В некоторых случаях, как определено результатами поиска, полученными предиктором (535), входное изображение может иметь эталоны предсказания, взятые из множества опорных изображений, сохраненных в памяти (534) опорных изображений.
[74] Контроллер (550) может управлять операциями кодирования кодера (530) источника, включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[75] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сгенерированные различными функциональными модулями, в закодированную видеопоследовательность путем сжатия без потерь символов согласно таким технологиям, как кодирование Хаффмана, кодирование с переменной длиной, арифметическое кодирование и так далее.
[76] Передатчик (540) может буферизовать кодированную видеопоследовательность(и), созданию энтропийным кодером (545), чтобы подготовиться к передаче через канал (560) связи, который может быть аппаратным/программным соединением с устройством хранения, которое будет хранить кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из видеокодера (503) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[77] Контроллер (550) может управлять работой видеокодера (503). Во время кодирования контроллер (550) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов изображений:
[78] Интра-изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы интра-изображений, включая, например, изображения с независимым обновлением декодера («IDR»). Специалисту в области техники известны эти варианты 1-изображений и их соответствующие применения и особенности.
[79] Изображение с предсказанием (Р-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[80] Изображение с двунаправленным предсказанием (В-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[81] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и закодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интрапредсказание). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[82] Видеокодер (503) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как Рекомендации МСЭ-Т Н.265. В своей работе видеокодер (503) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[83] В варианте осуществления передатчик (540) может передавать дополнительные данные с кодированным видео. Исходный кодер (530) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные слои/слои улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и так далее.
[84] Видео может быть захвачено как множество исходных изображений (видеоизображений) во временной последовательности. Внутрикадровое предсказание (часто сокращенно называемое интрапредсказанием) использует пространственную корреляцию в данном изображении, а межкадровое предсказание использует (временную или другую) корреляцию между изображениями. В примере конкретное изображение при кодировании/декодировании, называемое текущим изображением, разделяется на блоки. Когда блок в текущем изображении подобен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может быть кодирован вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.
[85] В некоторых вариантах осуществления при межкадровом предсказании может использоваться метод двойного предсказания. Согласно методу двойного предсказания, используются два опорных изображения, такие как первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может быть кодирован первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан комбинацией первого опорного блока и второго опорного блока.
[86] Кроме того, в межкадровом предсказании может использоваться метод режима слияния для повышения эффективности кодирования.
[87] Согласно некоторым вариантам осуществления изобретения, предсказания, такие как межкадровые предсказания и внутрикадровые предсказания, выполняются в единице блоков. Например, в соответствии со стандартом HEVC, изображение в последовательности видеоизображений разделяется на единицы дерева кодирования (CTU) для сжатия, причем CTU в изображении имеют одинаковый размер, например 64×64 пикселей, 32×32 пикселей или 16×16 пикселей. В общем, CTU включает в себя три блока дерева кодирования (СТВ), которые представляют собой один СТВ яркости и два СТВ цветности. Каждая CTU может быть рекурсивно разделена квадродеревом на одну или несколько CU. Например, CTU размером 64×64 пикселей можно разделить на одну CU из 64×64 пикселей, или 4 CU из 32×32 пикселей, или 16 CU из 16×16 пикселей. В примере каждая CU анализируется для определения типа предсказания для CU, такого как тип интерпредсказания или тип интрапредсказания. CU разделяется на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. Обычно каждая PU включает в себя блок предсказания яркости (РВ) и два РВ цветности. В варианте осуществления операция предсказания при кодировании (кодировании/декодировании) выполняется в единицах блоков предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, такую как 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[88] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления раскрытия. Видеокодер (603) конфигурирован для приема блока обработки (например, блока предсказания) из значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое является частью кодированной видеопоследовательности. В одном примере видеокодер (603) используется вместо видеокодера (303) на примере с фиг. 3.
[89] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, такого как блок предсказания из 8×8 отсчетов и т.п. Видеокодер (603) определяет, кодируется ли блок обработки лучше всего при использовании интра-режима, интер-режима или режима двойного предсказания, использующего, например, оптимизацию скорости-искажения. Когда блок обработки должен быть кодирован в интра-режиме, видеокодер (603) может использовать метод интрапредсказания для кодирования блока обработки в кодированное изображение; а когда блок обработки должен быть кодирован в интер-режиме или режиме двойного предсказания, видеокодер (603) может использовать метод интер предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях кодирования видео, режим слияния может быть субрежимом межкадрового предсказания, в котором вектор движения выводят из одного или более предикторов вектора движения без преимущества кодированного компонента вектора движения вне предикторов. В некоторых других технологиях кодирования видео может присутствовать компонент вектора движения, применимый к рассматриваемому блоку. В одном примере видеокодер (603) включает в себя другие компоненты, такие как модуль выбора режима (не показан), для определения режима блоков обработки.
[90] На примере с фиг. 6 видеокодер (603) включает в себя интер-кодер (630), интра-кодер (622), вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные вместе, как показано на фиг. 6.
[91] Интер-кодер (630) конфигурирован для приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоков в предыдущих изображениях и последующих изображениях), генерации информации интерпредсказания (например, описания избыточной информации согласно методу интеркодирования, векторов движения, информации режима слияния) и вычисления результатов интерпредсказания (например, предсказанный блок) на основе информации интерпредсказания с использованием любого подходящего метода. В некоторых примерах опорные изображения являются декодированными опорными изображениями, которые декодируются на основе кодированной видеоинформации.
[92] Интра-кодер (622) конфигурирован для приема отсчетов текущего блока (например, блока обработки), в некоторых случаях сравнения блока с блоками, уже кодированными в том же изображении, генерации квантованных коэффициентов после преобразования, а в некоторых случаях также информации интрапредсказания (например, информации направления интрапредсказания согласно одному или более методов интракодирования). В одном примере интра-кодер (622) также вычисляет результаты интрапредсказания (например, предсказанный блок) на основе информации интрапредсказания и опорных блоков в одном и том же изображении.
[93] Общий контроллер (621) конфигурирован для определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. В одном примере общий контроллер (621) определяет режим блока и подает управляющий сигнал на переключатель (626) на основе режима. Например, когда режим является интра-режимом, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат интра-режима для использования вычислителем (623) остатка, и управляет энтропийным кодером (625), чтобы выбрать информацию интрапредсказания и включить информацию интрапредсказания в битовый поток; и когда режимом является интер-режим, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат интерпредсказания для использования вычислителем (623) остатка, и управляет энтропийным кодером (625), чтобы выбрать информацию интерпредсказания и включить информацию интерпредсказания в битовый поток.
[94] Вычислитель (623) остатка конфигурирован для вычисления разницы (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (622) или интер-кодера (630). Кодер (624) остатка конфигурирован для работы на основе данных остатка, чтобы кодировать данные остатка, чтобы генерировать коэффициенты преобразования. В одном примере кодер (624) остатка конфигурирован для преобразования данных остатка из пространственной области в частотную область и генерации коэффициентов преобразования. Коэффициенты преобразования затем подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также включает в себя декодер (628) остатка. Декодер (628) остатка конфигурирован для выполнения обратного преобразования и генерации декодированных данных остатка. Декодированные данные остатка могут подходящим образом использоваться интра-кодером (622) и интер-кодером (630). Например, интер-кодер (630) может генерировать декодированные блоки на основе декодированных данных остатка и информации интерпредсказания, а интра-кодер (622) может генерировать декодированные блоки на основе декодированных данных остатка и информации интрапредсказания. Декодированные блоки соответствующим образом обрабатываются для генерирования декодированных изображений, и декодированные изображения могут быть буферизованы в схеме памяти (не показана) и использоваться в качестве опорных изображений в некоторых примерах.
[95] Энтропийный кодер (625) конфигурирован для форматирования битового потока, чтобы включить в него кодированный блок. Энтропийный кодер (625) конфигурирован для включения различной информации в соответствии с подходящим стандартом, таким как стандарт HEVC. В одном примере энтропийный кодер (625) конфигурирован для включения общих данных управления, выбранной информации предсказания (например, информации интрапредсказания или информации интерпредсказания), информации остатка и другой подходящей информации в битовом потоке. Следует отметить, что согласно раскрытому объекту изобретения при кодировании блока в субрежиме слияния либо интер-режима, либо режима двойного предсказания информация остатка отсутствует.
[96] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления раскрытия. Видеодекодер (710) конфигурирован для приема кодированных изображений, которые являются частью кодированной видеопоследовательности, и декодирования кодированных изображений для создания восстановленных изображений. В одном примере видеодекодер (710) используется вместо видеодекодера (310) в примере с фиг. 3.
[97] В примере с фиг. 7 видеодекодер (710) включает в себя энтропийный декодер (771), интер-декодер (780), декодер (773) остатка, модуль (774) восстановления и интра-декодер (772), соединенные вместе, как показано на фиг. 7.
[98] Энтропийный декодер (771) может быть конфигурирован для восстановления из кодированного изображения определенных символов, которые представляют элементы синтаксиса, из которых состоит кодированное изображение. Такие символы могут включать в себя, например, режим, в котором кодируется блок (такой как, например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в субрежиме слияния или другом субрежиме), информацию предсказания (такую как, например, информация интрапредсказания или информация интерпредсказания), которая может идентифицировать определенный отсчет или метаданные, которые используются для предсказания интра-декодером (772) или интер-декодером (780), соответственно, остаточную информацию в форме, например, квантованных коэффициентов преобразования и т.п. В одном примере, когда режимом предсказания является интер-режим или режим двунаправленного предсказания, информация интерпредсказания предоставляется в интер-декодер (780); а когда тип предсказания является типом интрапредсказания, информация интрапредсказания предоставляется в интра-декодер (772). Остаточная информация может подвергаться обратному квантованию и предоставляется декодеру (773) остатка.
[99] Интер-декодер (780) конфигурирован для приема информации интерпредсказания и генерации результатов интерпредсказания на основе информации интерпредсказания.
[100] Интра-декодер (772) конфигурирован для приема информации интрапредсказания и генерации результатов предсказания на основе информации интрапредсказания.
[101] Декодер (773) остатка конфигурирован для выполнения обратного квантования для извлечения деквантованных коэффициентов преобразования, и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка может также потребовать определенную управляющую информацию (чтобы включить параметр квантователя (QP)), и эта информация может быть предоставлена энтропийным декодером (771) (путь данных не показан, поскольку это может быть только управляющая информация малого объема).
[102] Модуль (774) восстановления конфигурирован для объединения в пространственной области остатка, выводимого декодером (773) остатка, и результатов предсказания (выводимых модулями интер- или интрапредсказания, в зависимости от случая) для формирования восстановленного блока, который может быть частью восстановленного изображения, которое, в свою очередь, может быть частью восстановленного видео. Следует отметить, что другие подходящие операции, такие как операция деблокирования и т.п., могут выполняться для улучшения визуального качества.
[103] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любого подходящего метода. В варианте осуществления видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видео кодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[104] II. Режим треугольного раздела (ТРМ) для интер предсказания
[105] В некоторых случаях ТРМ может поддерживаться для интерпредсказания. ТРМ может применяться только к CU размером 8×8 или больше. ТРМ может сигнализироваться с использованием флага уровня CU в качестве одного из видов режима слияния, с другими режимами слияния, такими как обычный режим слияния, режим MMVD, режим СИР и режим слияния субблоков.
[106] Когда используется ТРМ, CU можно разделить равномерно на два раздела в форме треугольника, используя либо диагональное, либо антидиагональное разделение, как, например, показано на фиг. 8А и 8В. Каждый треугольный раздел в CU может быть предсказан с помощью интерпредсказания с использованием его собственных параметров движения. Для каждого раздела может быть разрешено только одно предсказание. То есть каждый раздел имеет один вектор движения и один опорный индекс. Ограничение движения с одним предсказанием применяется, чтобы гарантировать, что треугольный раздел такой же, как и при обычном двойном предсказании. То есть для каждой CU необходимы только два предсказания с компенсацией движения. Движение с одним предсказанием для каждого раздела может быть получено с использованием процесса, описанного на фиг. 1A-1D.
[107] Если ТРМ используется для текущей CU, то можно дополнительно сигнализировать флаг, указывающий направление (диагональное или антидиагональное) ТРМ, и два индекса слияния (по одному для каждого раздела). Максимальный размер кандидата ТРМ может быть явно сигнализирован на уровне слайса и указывать бинаризацию синтаксиса для индексов слияния ТМР. После предсказания каждого из треугольных разделов значения отсчета вдоль диагонального или антидиагонального края можно скорректировать с использованием процесса смешивания с адаптивными весовыми значениями. После получения сигнала предсказания для всей CU процесс преобразования и квантования может быть дополнительно применен ко всей CU, как и в других режимах предсказания. Наконец, можно сохранить поле движения CU, которое предсказывается с помощью ТРМ.
[108] В некоторых случаях ТРМ нельзя использовать в сочетании с преобразованием субблоков (SBT). То есть, когда сигнализируемый треугольный режим равен 1, cu_sbt_flag считается равным 0 без сигнализации.
[109] Список кандидатов на одно предсказание может быть получен непосредственно из списка кандидатов на слияние, созданного в соответствии с расширенным процессом предсказания слияния. Обозначим N как индекс движения с единым предсказанием в списке кандидатов на одно треугольное предсказание. Вектор движения LX N-го расширенного кандидата на слияние, где X равен четности N, используется в качестве N-го вектора движения с одним предсказанием для ТРМ. Эти векторы движения отмечены как «X» на фиг. 9. В случае, если соответствующий вектор движения LX N-го расширенного кандидата на слияние не существует, вектор движения L(1-X) того же кандидата используется вместо вектора движения с одним предсказанием для ТРМ.
[110] После предсказания каждого треугольного раздела с использованием его собственных параметров движения процесс смешивания может быть применен к двум сигналам предсказания для получения отсчетов по диагональному или антидиагональному краю. В процессе смешивания используются следующие весовые значения: {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} для яркости и {6/8, 4/8, 2/8} для цветности, как показано на фиг. 10А и 10В.
[111] В некоторых случаях векторы движения CU, кодированные в ТРМ, могут быть сгенерированы с использованием следующего процесса. Если Mv1 и Mv2 взяты из разных списков опорных изображений (например, один из L0, а другой из L1), то Mv1 и Mv2 просто объединяются для формирования вектора движения с двойным предсказанием. В противном случае, если Mv1 и Mv2 из одного и того же списка, сохраняется только движение с одним предсказанием Mv2.
[112] III. Режим геометрического слияния (GEO)
[113] Режим геометрического слияния (GEO), также называемый режимом геометрического разделения (GPM), может поддерживать множество различных методик разделения. Методики разделения можно определить по углам и краям. Например, 140 различных методик разделения можно различить по 32 углам (квантованным от 0 до 360° с равным разделением 11,25°) и 5 краям относительно центра CU.
[114] На фиг. 11 показан примерный GEO. На фиг. 11 угол ϕi представляет квантованный угол между 0 и 360 градусами, а смещение расстояния ρi представляет собой квантованное смещение наибольшего расстояния ρmax. Значение ρmax может быть получено геометрически по уравнению 1 для a w или h, который равен 8 и масштабируется с помощью масштабированной по log2 длины короткого края. Переменные h и w представляют высоту и ширину текущего блока. Когда ϕ равно 0°, ρmax равно w/2. Когда ϕ равно 90°, ρmax равно h/2. В уравнении 1, ρmargin=1,0 предотвращает слишком близкое расположение границы разделения к углу текущего блока.
[115] Каждому режиму раздела (т.е. паре индекса угла и индекса края) в GEO может быть назначена пиксельно-адаптивная весовая таблица для смешивания отсчетов в двух разделенных частях. Весовое значение отсчета может находиться в диапазоне, например, от 0 до 8 и определяться расстоянием L2 от центрального положения пикселя до края. При назначении весовых значений может соблюдаться ограничение на единицу прироста. Например, когда небольшое весовое значение назначается разделу GEO, большое дополнительное значение назначается другому разделу, в сумме получается 8.
[116] IV. Процесс предсказания взвешенного отсчета для GEO
[117] В GEO финальный предиктор РВ отсчета может быть получен с помощью двух 3-битных масок смешивания (т.е. весовых значений или весовых коэффициентов) W0 и W1 и двух предикторов Р0 и P1 согласно уравнению 2.
[118] Маски смешивания W0 и W1 могут быть получены из справочной таблицы на основе их весовых индексов. Весовой индекс может быть получен на основе расстояния между положением отсчета (х, у) и границей разделения, как показано в уравнении 3.
где
[119] В уравнении 4, n представляет собой шаги квантования общего расстояния, a i представляет собой индекс шага расстояния для GEO с углом ϕ, и i<n.
[120] Наконец, маски смешивания W0 и W1 (или весовые значения) образца могут быть установлены с помощью таблицы 3, обозначенной как GeoFilter, как показано в уравнении 5.
[121] Примерный процесс предсказания взвешенного отсчета описывается следующим образом. Входные данные для этого процесса включают две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования, два (nCbW)×(nCbH) массива predSamplesLA и predSamplesLB, переменную angleIdx, определяющую индекс угла геометрического раздела, переменную distanceIdx, определяющую расстояние idx геометрического раздела, и переменную cIdx, определяющую индекс компонента цвета. Выходные данные этого процесса включают массив (nCbW)×(nCbH) pbSamples значений отсчета предсказания и (nCbW>>2)×(nCbH>>2) массив motionIdx.
[122] Переменная bitDepth может быть получена следующим образом: если cIdx=0, bitDepth=BitDepthY; в противном случае bitDepth=BitDepthC.
[123] Переменные shift1=Max(5, 17-bitDepth) и offset1=1<<(shift1-1).
[124] Массив весов sampleWeightL[x][y] для яркости и sampleWeightC[x][y] для цветности с x=0..nCbW-1 и у=0..nCbH-1 может быть получен следующим образом:
[125] Переменные wIdx=log2(nCbW) и hIdx=log2(nCbH).
[126] Переменная whRatio=(wIdx>=hIdx)?wIdx-hIdx:hIdx wIdx, scaleIdx=(wIdx>=hIdx)?hIdx-3:wIdx-3.
[127] Переменные displacementX=angleIdx и displacementY=(displacementX+8)%32.
[128] Переменный угол N=(wIdx>=hIdx)?(angleIdx>>3&l)?angleIdx%8:8-angleIdx%8:(angleIdx>>3&1)?8-angleIdx%8:angleIdx%8.
[129] Переменная rho может быть установлена, с помощью справочных таблиц, на следующее значение, обозначенное как stepDis и Dis, указанное в Таблице 1 и Таблице 2. rho=distanceIdx*(stepDis[whRatio][angleN]<<scaleIdx)+(Dis[displacementX]<<wIdx)+(Dis[displacementY]<<hIdx).
[130] Переменные weightIdx и weightIdxAbs могут быть вычислены с использованием справочной таблицы 2 с x=0..nCbW-1 и у=0…nCbH-1. weightIdx=((x<<1)+1)*Dis[displacementX]+((y<<1)+1))*Dis[displacementY]-rho. weightIdxAbs=Clip3(0,26, (abs(weightIdx)+4)>>3).
[131] Переменная partIdx может быть установлена на weightIdx>0, если х=0 и у=nCbH-1.
[132] Значение sampleWeightL[x][y] с x=0..nCbW-1 и у=0..nCbH-1 может быть установлено в соответствии с таблицей 3, обозначенное как GeoFilter. sampleWeightL[x][у]=weightIdx<=0?GeoFilter[weightIdxAbs]:8-GeoFilter [weightIdxAbs].
[133] Значение sampleWeightC[x][y] с x=0..nCbW 1 и у=0..nCbH-1 может быть установлено следующим образом: sampleWeightC[x][y]=sampleWeightL[(x<<(SubWidthC-1))][(y<<(SubHeightC-1))].
[134] Чтобы уменьшить требования к хранению предварительно рассчитанных масок смешивания, способ хранения минимальной маски смешивания может обеспечить сокращение требований к памяти для хранения весов смешивания на 84-91%.
[135] Пусть g_sampleWeightL [] представляет собой предварительно определенные маски для весов смешивания. Предполагая, что N представляет собой количество предварительно определенных масок в каждом наборе, и N установлено в NA>>1, где NA - количество углов, поддерживаемых в GEO. М×М представляет собой размер предварительно определенных масок для весов смешивания, а M установлен равным 128+((ND-1)×(128>>S))<<1, где ND - количество шагов, поддерживаемых в GEO, и S установлен в ND-1. Для 32 углов с 5-ступенчатой настройкой N установлено в 16, а M установлено в 192. Для 24 углов с 4-ступенчатой настройкой N установлено в 12, а M установлено в 224.
[136] Для блока размером W×H с геометрическим индексом раздела K веса смешивания для отсчетов яркости получают следующим образом. Переменные угла ϕ и расстояния ρ получают из справочной таблицы с использованием индекса геометрического раздела K. Переменные offsetX и offsetY могут быть вычислены следующим образом:
[137] Примерный процесс предсказания взвешенного отсчета с хранением минимальной маски веса смешивания для GEO описывается следующим образом. Входные данные для этого процесса включают в себя две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования, два (nCbW)×(nCbH) массива predSamplesLA и predSamplesLB, переменную angleIdx, определяющую индекс угла геометрического раздела, переменную distancIdx, определяющую расстояние idx геометрического раздела, и переменную cIdx, определяющую индекс компонента цвета. Выходные данные этого процесса включают в себя массив pbSamples (nCbW)x(nCbH) значений отсчета предсказания и переменную partIdx.
[138] Переменная bitDepth может быть получена следующим образом: если cIdx=0, bitDepth=BitDepthY; в противном случае bitDepth=BitDepthC.
[139] Переменные shift1=Max (5, 17-bitDepth) и offset1=1<<(shift1-1).
[140] Массив весов sampleWeightL[x][y] для яркости и sampleWeightC[x][у] для цветности с x=0..nCbW-1 и у=0..nCbH-1 может быть получен следующим образом:
[141] Переменная hwRatio=nCbH/nCbW.
[142] Переменные displacementX=angleIdx и displacementY=(displacementX+8)%32.
[143] Переменная partIdx=(angleIdx>=13&& angleIdx<=27) ? 1:0.
[144] Переменная rho может быть установлена на следующее значение с использованием справочной таблицы 2. rho=(Dis[displacementX]<<8)+(Dis[displacementY]<<8).
[145] Если верно одно из следующих условий, переменная shiftHor=0: (1) angleIdx%16=8; и (2) angleIdx%16!=0 и hwRatio≥1. В противном случае shiftHor=1.
[146] Если shiftHor=0, offsetX=(256-nCbW)>>1, offsetY=(256-nCbH)>>1+angleIdx<16?(distanceIdx*nCbH)>>3: - ((distanceIdx*nCbH)>>3).
[147] В противном случае, если shiftHor=1, offsetX=(256-nCbW)>>1+angleIdx<16?(distanceIdx*nCbW)>>3:-((distanceIdx*nCbW)>>3), offsetY=(256-nCbH)>>1.
[148] Переменные weightIdx и weightIdxAbs могут быть вычислены с использованием справочной таблицы 2 с x=0..nCbW-1 и у=0..nCbH-1 следующим образом: weightIdx=(((x+offsetX)<<1)+1)*Dis[displacementX]+(((y+offsetY)<<1)+1))*Dis[displacementY]-rho, weightIdxAbs=Clip3(0, 26, abs (weightIdx)).
[149] Значение sampleWeightL[x][у] с x=0..nCbW-1 и y=0..nCbH-1 может быть установлено в соответствии с таблицей 3, обозначенное как GeoFilter. sampleWeightL[x][y]=weightIdx<=0?GeoFilter [weightIdxAbs]:8-GeoFilter[weightIdxAbs].
[150] Значение sampleWeightC[x][у] с x=0..nCbW-1 и у=0..nCbH-1 может быть установлено следующим образом: sampleWeightC[x][y]=sampleWeightL[(x<<(SubWidthC-1))][(y<<(SubHeightC-1))].
[151] V. Процесс сохранения вектора движения для GEO
[152] В некоторых случаях веса отсчетов яркости в четырех углах единицы хранения движения 4×4 могут быть суммированы. Сумму можно сравнить с двумя пороговыми значениями, чтобы определить, сохранена ли одна из двух информации движения с одним предсказанием и информации движения с двойным предсказанием. Информация о движении с двойным предсказанием может быть получена с использованием того же процесса, что и ТРМ.
[153] Примерный процесс сохранения вектора движения для GEO описывается следующим образом.
[154] Массив motionIdx[xSbIdx][ySbIdx] с xSbIdx=0..(nCbW>>2)-1 и ySbIdx=0..(nCbH>>2)-1 может быть получен следующим образом:
[155] Переменные threshScaler=(wIdx+hIdx)>>1)-1, threshLower=32>>threshScaler, threshUpper=32-threshLower, Cnt=sampleWeightL[(xSbIdx<<2)][(ySbIdx<<2)]+sampleWeightL[(xSbIdx<<2)+3][(ySbIdx<<2)]+sampleWeightL[(xSbIdx<<2)][(ySbIdx<<2)+3]+sampleWeightL[(xSbIdx<<2)+3][(ySbIdx<<2)+3], Cnt=partIdx?32-Cnt:Cnt, motionIdx[xSbIdx][ySbIdx]=Cnt<=threshLower?0:Cnt>=threshUpper?1:2.
[156] Если the merge_geo_flag[xCb][yCb]=1, sType=motionIdx[xSbIdx][ySbIdx] with xSbIdx=0..numSbX-1, and ySbIdx=0..numSbY-1.
[157] В некоторых случаях процесс сохранения вектора движения дополнительно упрощается. Расстояние между центральным положением единицы хранения движения 4×4 и границей разделения можно вычислить и сравнить с фиксированным порогом, чтобы определить, сохраняется ли информация о движении с одним или двойным предсказанием для единицы хранения движения 4×4. Знак расстояния указывает, какая информация о движении с одним предсказанием должна храниться в случае хранения с одним предсказанием. Зависимость маски смешивания и хранением движения может быть удалена.
[158] Если merge_geo_flag[xCb][yCb]=1, wIdx=log2(cbWidth), hIdx=log2(cbHeight), whRatio=(wIdx >= hIdx)?wIdx-hIdx:hIdx-wIdx, scaleIdx=(wIdx>=hIdx)?hIdx-3:wIdx-3, displacementX=angleIdx, displacementY=(displacementX+8)%32, angleN=(wIdx>=hIdx)?(angleIdx>>3&1)?angleIdx% 8:8-angleIdx%8:(angleIdx>>3&1)?8-angleIdx%8:angleIdx%8.
[159] Переменная rho может быть установлена, с использованием справочных таблиц, на следующее значение, обозначенное как stepDis и Dis, указанное в Таблице 1 и Таблице 2.
rho=distanceIdx*(stepDis[whRatio][angleN]<<scaleIdx)+(Dis[displacementX]<<wIdx)+(Dis[displacementY]<<hIdx).
[160] Переменная motionOffset устанавливается, с использованием справочных таблиц, на следующее значение, обозначенное как Dis, указанное в Таблице 1 и Таблице 2. motionOffset=3*Dis[displacementX]+3*Dis [displacementY].
[161] Переменная motionIdx вычисляется с использованием справочной таблицы 2 следующим образом: motionIdx=((xSbIdx<<3)+1)*Dis[displacementX]+((xSbIdx<<3)+1))*Dis[displacementY]-rho+motionOffset.
[162] Переменная sType получается следующим образом: если partIdx=1, sType=abs(motionIdx)<256?2:motionIdx<=0?1:0; в противном случае, sType=abs(motionIdx)<256?2:motionIdx<=0?0:1.
[163] Чтобы уменьшить объем памяти, необходимый для хранения масок для хранения поля движения, в процессе вся информация из предварительно определенной маски может быть получена для масок хранения поля движения. Этот процесс вызывается при декодировании единицы кодирования с MergeWedgeFlag[xCb][yCb]=1. Входные данные для этого процесса включают в себя местоположение яркости (xCb, yCb), определяющее верхний левый отсчет текущего блока кодирования относительно верхнего левого отсчета яркости текущего изображения, переменную cbWidth, определяющую ширину текущего блока кодирования в отсчетах яркости, переменную cbHeight, определяющую высоту текущего блока кодирования в отсчетах яркости, векторы движения яркости с точностью 1/16 дробной части отсчета mvA и mvB, опорные индексы refIdxA и refIdxB и флаги списка предсказания predListFlagA и predListFlagB.
[164] Переменные numSbX и numSbY, определяющие количество блоков 4×4 в текущем блоке кодирования по горизонтали и вертикали, устанавливаются равными numSbX=cbWidth>>2 и numSbY=cbHeight>>2.
[165] Переменные displacementX=angleIdx, displacementY=(displacementX+8)%32, hwRatio=nCbH/nCbW.
[166] Если верно одно из следующих условий, переменная shiftHor=0: (1) angleIdx%16=8; и (2) angleIdx%16!=0 и hwRatio≥1. В противном случае shiftHor=1.
[167] Переменная partIdx=(angleIdx>=13&&angleIdx<=27)?1:0.
[168] Если shiftHor=0, offsetX=(64-numSbX)>>1, offsetY=(64-numSbY)>>1+angleIdx<16?(distanceIdx*nCbH)>> 5:-((distanceIdx*nCbH)>>5). В противном случае, если shiftHor=1, offsetX=(64-numSbX)>>1+angleIdx<16?(distanceIdx*nCbW)>>5:-((distanceIdx*nCbW)>>5), offsetY=(64 numSbY)>>1.
[169] Значение переменной rho выводится в соответствии с приведенным ниже уравнением и справочной таблицей Dis, указанной в таблице 2. rho=(Dis[displacementX]<<8)+(Dis[displacementY]<<8).
[170] Переменная motionOffset устанавливается равной следующему значению с использованием справочных таблиц, обозначенному как Dis, указанному в Таблице 1 и Таблице 2. motionOffset=3*Dis[displacementX]+3*Dis[displacementY].
[171] Для каждого субблока 4×4 с индексом субблока (xSbIdx, ySbIdx) с xSbIdx=0..numSbX-1 и ySbIdx=0..numSbY-1 переменная motionIdx вычисляется с использованием справочной таблицы 2 следующим образом: motionIdx=(((xSbIdx+offsetX)<<3)+1)*Dis[displacementX]+(((xSbIdx+offsetY<<3)+1))*Dis[displacementY]-rho+motionOffset.
[172] VI. Расчет на лету весового индекса в весовое значение
[173] В вышеупомянутом процессе взвешенного отсчета для GEO, преобразование весового индекса wIdx(x, у) в весовое значение (или весовой коэффициент) weight(x, у) может быть получено на основе линейной функции, как показано в уравнении 9 уравнении 11.
[174] В примере maxValue=8, bias=4, размер шага квантования s=1/7,2. Операция fl2intOp используется для преобразования плавающего значения в целое число и может представлять собой комбинацию round, floor или ceil. Справочная таблица, такая как Таблица 3, является примерным способом реализации для вышеуказанных уравнений.
[175] Однако, поскольку разные отсчеты могут иметь разные входные значения для справочной таблицы, может потребоваться множество копий справочной таблицы для выполнения параллельной обработки этих отсчетов, когда используются приведенные выше уравнения. Соответственно, вышеупомянутый процесс взвешенного отсчета для GEO не подходит для аппаратной и программной реализации. Чтобы решить эту проблему, это раскрытие включает в себя варианты осуществления для преобразования на основе вычислений, так что весовые значения для разных отсчетов могут быть получены параллельно.
[176] Согласно аспектам раскрытия преобразование весового индекса wIdx(x, у) в весовое значение weight(x, у) может быть получено на основе вычисления «на лету» с операцией сдвига вправо.
[177] В некоторых вариантах осуществления вычисление на лету представляет собой сумму значения смещения и весового индекса wIdx(x, у), а значение смещения является функцией операнда сдвига вправо. Кроме того, значение смещения можно округлить.
[178] В варианте осуществления преобразование весового индекса wIdx(x, у) в весовое значение weight(x, у) может быть получено согласно уравнению 12.
[179] В уравнении 12, значение смещения 2idx2wShiftBit+2 является экспоненциальной функцией (с основанием 2) операнда сдвига вправо idx2wShiftBit. В примере операнд сдвига вправо idx2wShiftBit=m+3, а весовое значение weight(x, y)=(2m+5-wIdx(x, y))>>(m+3). m может представлять число битов точности (например, 3 или 6) в таблице косинусов (например, в таблице 2), которая используется для вычисления весового индекса.
[180] В варианте осуществления преобразование весового индекса wIdx(x, у) в весовое значение weight(x, у) может быть получено согласно уравнению 13 или уравнению 14.
[181] В уравнении 13 и уравнении 14, функция усечения Clip3() используется для ограничения весового значения weight(x, у) в пределах предварительно определенного диапазона, такого как [0, 8]. В примере значение смещения idx2wOffset является линейной функцией операнда сдвига вправо idx2wShiftBit, как показано в уравнении 15.
[182] Операнд сдвига вправо idx2wShiftBit может быть числом битов точности (например, 3, 6 или 9) таблицы косинусов (например, Таблицы 2), которое используется для вычисления весового индекса и/или вычисленного значения расстояния (например, весового индекса).
[183] В варианте осуществления весовой индекс может иметь преобразование знака в соответствии с индексом раздела partIdx, как показано в уравнении 16.
[184] Соответственно, весовое значение может быть получено согласно уравнению 17 или уравнению 18.
[185] В примере, индекс раздела partIdx может быть установлен согласно весовому индексу отсчета левого нижнего угла текущего блока. В другом примере индекс раздела partIdx может быть установлен согласно индексу угла angleIdx в уравнении 19, где T1 и Т2 - два пороговых значения. В одном варианте осуществления T1=10, а Т2=20.
[186] В варианте осуществления индекс раздела partIdx может использоваться как определение раздела для разных углов. Весовое значение может быть получено согласно уравнению 20 и уравнению 21.
[187] В варианте осуществления, весовое значение может быть получено согласно уравнению 22 и уравнению 23.
[188] Затем окончательная маска смешивания отсчета текущего блока может быть перевернута в соответствии с условием индекса угла angleIdx, которое описано в уравнении 19.
[189] Согласно аспектам раскрытия преобразование весового индекса wIdx(x, у) в весовое значение weight(x, у) может быть получено на основе кусочно-постоянной функции. Кусочно-постоянная функция может включать в себя начальное значение и множество единичных ступенчатых функций. Среди диапазона значений весового коэффициента начальное значение может быть одним из минимального значения весового коэффициента и максимального значения весового коэффициента. Кроме того, количество множества единичных ступенчатых функций может быть равно общему количеству значений весовых коэффициентов минус 1.
[190] В варианте осуществления весовое значение weight(x, у) может быть получено из предварительно определенного начального значения smallest Weight и четырех единичных ступенчатых функций, как показано в уравнении 24.
где v - весовой индекс, a ωi(v) может быть получено в соответствии с уравнением 25 или уравнением 26.
[191] Таблица 4 показывает примерную справочную таблицу для сопоставления весового индекса весовому значению.
[192] Если использовать уравнение 24 и уравнение 25 для представления Таблицы 4, начальное значение smallest Weight=4, а пороговые весовые индексы С0-С3 могут быть 4, 11, 18 и 25 соответственно.
[193] Если использовать уравнение 24 и уравнение 26 для представления Таблицы 4, начальное значение smallestWeight=4, а пороговые весовые индексы Р0-Р3 могут быть 3, 10, 17 и 24 соответственно.
[194] Таблица 5 показывает другую примерную справочную таблицу для сопоставления весового индекса весовому значению.
[195] Если использовать уравнение 24 и уравнение 25 для представления Таблицы 5, начальное значение smallest Weight=4, а пороговые весовые индексы С0-С3 могут быть 3, 10, 17 и 26 соответственно.
[196] Если использовать уравнение 24 и уравнение 26 для представления Таблицы 5, начальное значение smallestWeight=4, а пороговые весовые индексы Р0-Р3 могут быть 2, 9, 16 и 25 соответственно.
[197] В варианте осуществления весовое значение weight(x, у) может быть получено из предварительно определенного начального значения largestWeight и четырех единичных ступенчатых функций, как показано в уравнении 27.
где ωi(v) может быть получено согласно уравнению 28 или уравнению 29.
[198] Если использовать уравнение 27 и уравнение 28 для представления Таблицы 4, начальное значение largestWeight=8, а пороговые весовые индексы С0-С3 могут быть 3, 10, 17 и 24 соответственно.
[199] Если использовать уравнение 27 и уравнение 29 для представления Таблицы 4, начальное значение largestWeight=8, а пороговые весовые индексы Р0-Р3 могут быть 4, 11, 18 и 25 соответственно.
[200] Если использовать уравнение 27 и уравнение 28, чтобы представить Таблицу 5, начальное значение largestWeight=8, а пороговые весовые индексы С0-С3 могут быть 2, 9, 16 и 25 соответственно.
[201] Если использовать уравнение 27 и уравнение 29 для представления Таблицы 5, начальное значение largestWeight=8, а пороговые весовые индексы Р0-Р3 могут быть 3, 10, 17 и 26 соответственно.
[202] Следует отметить, что операторы отношения (≥) и (>) дают 1, если соответствующее отношение истинно, и 0, если соответствующее отношение ложно, как, например, определено в С и С++.
[203] VII. Блок-схема
[204] На фиг. 12 показана блок-схема, описывающая примерный процесс (1200) согласно варианту осуществления раскрытия. В различных вариантах осуществления процесс (1200) выполняется схемой обработки, например схемой обработки в оконечных устройствах (210), (220), (230) и (240), схемой обработки, которая выполняет функции видеокодера (303), схемой обработки, которая выполняет функции видеодекодера (310), схемой обработки, которая выполняет функции видеодекодера (410), схемой обработки, которая выполняет функции модуля интрапредсказания (452), схемой обработки, которая выполняет функции видеокодера (503), схемой обработки, которая выполняет функции предиктора (535), схемой обработки, которая выполняет функции интра-кодера (622), схемой обработки, которая выполняет функции интра-декодера (772), и тому подобное. В некоторых вариантах осуществления процесс (1200) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки выполняет процесс (1200).
[205] Процесс (1200) обычно может начинаться на этапе (S1210), где процесс (1200) декодирует информацию предсказания текущего блока текущего изображения в кодированном битовом потоке. Информация предсказания указывает режим геометрического разделения (GPM) для текущего блока. Текущий блок разделяется на два раздела в режиме GPM. Каждый из разделов ассоциируется с соответствующим предиктором. Затем процесс (1200) переходит к этапу (S1220).
[206] На этапе (S1220) процесс (1200) определяет весовой индекс для отсчета текущего блока на основе положения отсчета. Затем процесс (1200) переходит к этапу (S1230).
[207] На этапе (S1230) процесс (1200) вычисляет весовой коэффициент на основе весового индекса отсчета согласно уравнению, которое преобразует весовой индекс в весовой коэффициент. Затем процесс (1200) переходит к этапу (S1240).
[208] На этапе (S1240) процесс (1200) восстанавливает отсчет на основе весового коэффициента и предиктора, соответствующих отсчету. После восстановления отсчета процесс (1200) завершается.
[209] В варианте осуществления операция сдвига вправо выполняется над суммой весового индекса и значения смещения. Результат операции сдвига вправо усекается до предварительно заданного диапазона.
[210] В варианте осуществления значение смещения основано на количестве битов, сдвинутых операцией сдвига вправо, а количество битов, сдвинутых операцией сдвига вправо, основано по меньшей мере на одном из весового индекса и размера таблицы косинусов, используемой для вычисления весового индекса.
[211] В варианте осуществления индекс угла и индекс расстояния, которые задают границу разделения между разделами текущего блока, определяются на основе GPM. Весовой индекс для отсчета определяется на основе положения отсчета, индекса угла и индекса расстояния.
[212] В варианте осуществления определяется индекс разделения на основе индекса угла. Весовой коэффициент рассчитывается на основе индекса раздела.
[213] В варианте осуществления уравнение имеет вид
где
где idx2wShiftBit указывает количество битов, сдвинутых с помощью операции сдвига вправо, partIdx индекс раздела и wIdx весовой индекс.
[214] В варианте осуществления уравнение представляет собой кусочно-постоянную функцию, которая включает в себя начальное значение и множество единичных ступенчатых функций. Начальное значение представляет собой одно из минимального значения весового коэффициента или максимального значения весового коэффициента, а количество множества единичных ступенчатых функций равно общему количеству различных значений весовых коэффициентов минус один.
[215] VIII. Компьютерная система
[216] Методы, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг. 13 показана компьютерная система (1300), подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.
[217] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и и т.п., одним или более центральными процессорами компьютера (ЦП), графическими процессорами (ГП) и т.п.
[218] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.
[219] Компоненты, показанные на фиг. 13 для компьютерной системы (1300), являются примерными по своей сущности и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего раскрытия. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1300).
[220] Компьютерная система (1300) может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[221] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из следующих элементов (только по одному из каждого изображено): клавиатура (1301), мышь (1302), трекпад (1303), сенсорный экран (1310), управляющая перчатка (не показана), джойстик (1305), микрофон (1306), сканер (1307), камера (1308).
[222] Компьютерная система (1300) также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или более пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1310), управляющей перчатки (не показана) или джойстика (1305), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1309), наушники (не показаны)), устройства вывода изображения (например, экраны (1310), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены). Эти устройства визуального вывода (такие как экраны (1310)) могут быть подключены к системной шине (1348) через графический адаптер (1350).
[223] Компьютерная система (1300) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1320) с CD/DVD или подобными носителями (1321), флэш-накопитель (1322), съемный жесткий диск или твердотельный накопитель (1323), ранее разработанные магнитные носители, такие как лента и дискета (не изображены), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не изображены) и т.п.
[224] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.
[225] Компьютерная система (1300) также может включать в себя сетевой интерфейс (1354) к одной или нескольким коммуникационным сетям (1355). Одна или более сетей (1355) связи могут быть, например, беспроводной, проводной, оптической. Одна или более сетей (1355) связи могут дополнительно быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и так далее. Примеры одной или более сетей (1355) связи включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т.д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (1349) (например, к портам USB компьютерной системы (1300)); другие обычно интегрированы в ядро компьютерной системы (1300) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1300) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.
[226] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (1340) компьютерной системы (1300).
[227] Ядро (1340) может включать в себя один или более центральных процессоров (ЦП) (1341), графических процессоров (ГП) (1342), специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (ППВМ) (1343), аппаратных ускорителей (1344) для определенных задач и т.д. Эти устройства, наряду с постоянным запоминающим устройством (ROM) (1345), оперативным запоминающим устройством (1346), внутренним запоминающим устройством большой емкости, таким как внутренние жесткие диски, недоступные пользователю, твердотельные накопители (SSD) и т.п. (1347), могут быть подключены через системную шину (1348). В некоторых компьютерных системах системная шина (1348) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных ЦП, ГП и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1348) ядра, либо через периферийную шину (1349). Архитектура периферийной шины включает PCI, USB и т.п.
[228] ЦП (1341), ГП (1342), ППВМ (1343) и ускорители (1344) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1345) или RAM (1346). Переходные данные также могут храниться в RAM (1346), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (1347). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть разрешены за счет использования кэш-памяти, которая может быть тесно связана с одним или более ЦП (1341), ГП (1342), ЗУ большой емкости (1347), ROM (1345), RAM (1346) и т.п.
[229] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего изобретения, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[230] В качестве примера, но не ограничения, компьютерная система, имеющая архитектуру (1300) и, в частности, ядро (1340), может обеспечивать функциональность за счет процессора(ов) (включая ЦП, ГП, ППВМ, ускорители и т.п.), исполняющего программное обеспечение, воплощенное на одном или более материальных машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенным хранилищем ядра (1340), которые имеют невременной характер, например, внутренним ЗУ (1347) большой емкости ядра или ROM (1345). Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром (1340). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может побуждать ядро (1340) и, в частности, процессоры в нем (включая ЦП, ГП, ППВМ и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в RAM (1346) и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (1344)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это применимо. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (IC)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это применимо. Настоящее изобретение включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.
[231] Хотя это описание раскрывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем изобретения. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы изобретения и, таким образом, находятся в рамках его сущности и объема.
Приложение А: Сокращения
АМТ: адаптивное множественное преобразование
MVP: расширенное предсказание вектора движения
ASIC: специализированная интегральная схема
ATMVP: альтернативное/расширенное временное предсказание вектора движения
BDOF: двунаправленный оптический поток
BDPCM (или RDPCM): импульсно-кодовая модуляция с остаточной разностью
BIO: двунаправленный оптический поток
BMS: набор тестов
ВТ: двоичное дерево
BV: вектор блока
CANBus (CAN-шина): шина локальной сети контроллера
СВ: блок кодирования
CBF: флаг кодированного блока
CCLM: кросс-компонентный линейный режим/модель
CD: компакт-диск
CPR: ссылка на текущее изображение
ЦП: центральный процессор
CRT (ЭЛТ): электронно-лучевая трубка
СТВ: блок дерева кодирования
CTU: единица дерева кодирования
CU: единица кодирования
DM: производный режим
DPB: буфер изображения декодера
DVD: Цифровой видеодиск
ЕМТ: расширенное множественное преобразование
FPGA (ППВМ): программируемые пользователем вентильные матрицы
GOP: группа изображений
GPU: графический процессор
GSM: глобальная система мобильной связи
HDR: расширенный динамический диапазон
HEVC: высокоэффективное видеокодирование
HRD: гипотетический эталонный декодер
IBC: внутриблочное копирование
IC: интегральная схема
IDT: определение преобразования
ISP: интер суб-разделы
JEM: Объединенная исследовательская модель
JVET: Объединенная группа по исследованию видео
LAN: локальная сеть
LCD (ЖКД): жидкокристаллический дисплей
LFNST: низкочастотное неразделимое преобразование или низкочастотное неразделимое вторичное преобразование
LTE: долгосрочное развитие
L_CCLM: левый кросс-компонентный линейный режим/модель
LT_CCLM: левый и верхний кросс-компонентный линейный режим/модель
MIP: интрапредсказание на основе матрицы
МРМ: наиболее вероятный режим
MRLP (или MRL): предсказание множественных опорных линий
MTS: выбор множественного преобразования
MV: вектор движения
NSST: неразделимое вторичное преобразование
OLED: органический светоизлучающий диод
PBs: блоки предсказания
PCI: соединение периферийных компонентов
PDPC: комбинация позиционно-зависимого предсказания
PLD: программируемое логическое устройство
PPR: область с параллельной обработкой
PPS: набор параметров изображения
PU: единица предсказания
QT: квадродерево
RAM (ОЗУ): оперативное запоминающее устройство
ROM (ПЗУ): постоянное запоминающее устройство
RST: преобразование уменьшенного размера
SBT: преобразование субблока
SCC: кодирование содержимого экрана
SCIPU: Малая единица интрапредсказания цветности
SDR: стандартный динамический диапазон
SEI: дополнительная расширенная информация
SNR: соотношение сигнал-шум
SPS: набор параметров последовательности
SSD: твердотельный накопитель
SVT: пространственно изменяющееся преобразование
TSM: режим пропуска преобразования
ТТ: троичное дерево
TU: единица преобразования
T_CCLM: верхний кросс-компонентный линейный режим/модель
USB: универсальная последовательная шина
VPDU: модуль визуальных данных процесса
VPS: набор параметров видео
VUI: информация о свойствах видео
VVC: универсальное кодирование видео
WAIP: широкоугольное интрапредсказание.
Claims (69)
1. Способ кодирования видео в декодере, содержащий:
- декодирование (S1210) информации предсказания текущего блока текущего изображения в кодированном битовом потоке, причем информация предсказания указывает режим геометрического разделения (GPM) для текущего блока, текущий блок разделяется на два раздела в режиме GPM, и каждый из разделов ассоциируется с соответствующим предиктором;
- определение (S1220) весового индекса для отсчета текущего блока на основе положения отсчета;
- вычисление (S1230) весового коэффициента на основе весового индекса отсчета согласно уравнению, которое преобразует весовой индекс в весовой коэффициент; и
- восстановление (S1240) отсчета на основе весового коэффициента и предиктора, соответствующих отсчету;
причем уравнение включает в себя операцию сдвига вправо; вычисление содержит:
- выполнение операции сдвига вправо на основе по меньшей мере суммы весового индекса и значения смещения; значение смещения основано на количестве битов, сдвинутых операцией сдвига вправо, а количество битов, сдвинутых операцией сдвига вправо, основано по меньшей мере на размере таблицы косинусов, используемой для вычисления весового индекса;
- усечение результата операции сдвига вправо до предварительно заданного диапазона.
2. Способ по п. 1, в котором уравнение включает в себя кусочно-постоянную функцию, имеющую количество единичных ступенчатых функций, равное количеству различных значений весовых коэффициентов минус один.
3. Способ по п. 1, в котором операция сдвига вправо основана на весовом индексе.
4. Способ по п. 1, в котором определение весового индекса содержит:
- определение индекса угла и индекса расстояния, которые задают границу разделения между разделами текущего блока, на основе GPM; и
- определение весового индекса для отсчета на основе положения отсчета, индекса угла и индекса расстояния.
5. Способ по п. 4, в котором вычисление содержит:
- определение индекса раздела на основе индекса угла; и
- вычисление весового коэффициента на основе индекса раздела.
6. Способ по п. 5, в котором уравнение имеет следующий вид:
weight=Clip3 (0, 8, (wIdxL+(1 <<(idx2wShiftBit-1)))>> idx2wShiftBit), где
wIdxL=(1 <<(idx2wShiftBit+2))+(partIdx? wIdx: -wIdx),
где idx2wShiftBit указывает количество битов, сдвинутых операцией сдвига вправо,
weight - весовой коэффициент, partIdx - индекс раздела, wIdx - весовой индекс, и Clip3() - функция усечения.
7. Способ по п. 1, в котором кусочно-постоянная функция включает в себя начальное значение.
8. Способ по п. 7, в котором начальное значение представляет собой одно из минимального значения весового коэффициента или максимального значения весового коэффициента.
9. Устройство видеодекодирования, содержащее схему обработки, конфигурированную для:
- декодирования (S1210) информации предсказания текущего блока текущего изображения в кодированном битовом потоке, причем информация предсказания указывает режим геометрического разделения (GPM) для текущего блока, текущий блок разделяется на два раздела в режиме GPM, и каждый из разделов ассоциируется с соответствующим предиктором;
- определения (S1220) весового индекса для отсчета текущего блока на основе положения отсчета;
- вычисления (S1230) весового коэффициента на основе весового индекса отсчета согласно уравнению, которое преобразует весовой индекс в весовой коэффициент; и
- восстановления (S1240) отсчета на основе весового коэффициента и предиктора, соответствующих отсчету;
причем уравнение включает в себя операцию сдвига вправо; вычисление содержит:
- выполнение операции сдвига вправо на основе по меньшей мере суммы весового индекса и значения смещения; значение смещения основано на количестве битов, сдвинутых операцией сдвига вправо, а количество битов, сдвинутых операцией сдвига вправо, основано по меньшей мере на размере таблицы косинусов, используемой для вычисления весового индекса;
- усечение результата операции сдвига вправо до предварительно заданного диапазона.
10. Устройство по п. 9, в котором уравнение включает в себя кусочно-постоянную функцию, имеющую количество единичных ступенчатых функций, равное количеству различных значений весовых коэффициентов минус один.
11. Устройство по п. 9, в котором операция сдвига вправо основана на весовом индексе.
12. Устройство по п. 9, в котором схема обработки дополнительно конфигурирована для:
- определения индекса угла и индекса расстояния, которые задают границу разделения между разделами текущего блока, на основе GPM; и
- определения весового индекса для отсчета на основе положения отсчета, индекса угла и индекса расстояния.
13. Устройство по п. 12, в котором схема обработки дополнительно конфигурирована для:
- определения индекса раздела на основе индекса угла; и
- вычисления весового коэффициента на основе индекса раздела.
14. Устройство по п. 13, в котором уравнение имеет следующий вид:
weight=Clip3 (0, 8, (wIdxL+(1 <<(idx2wShiftBit-1)))>> idx2wShiftBit), где
wIdxL=(l <<(idx2wShiftBit+2))+(partIdx? wIdx: -wIdx),
где idx2wShiftBit указывает количество битов, сдвинутых операцией сдвига вправо,
weight - весовой коэффициент, partIdx - индекс раздела, wIdx - весовой индекс, и Clip3() - функция усечения.
15. Устройство по п. 9, в котором кусочно-постоянная функция включает в себя начальное значение.
16. Устройство по п. 15, в котором начальное значение представляет собой одно из минимального значения весового коэффициента или максимального значения весового коэффициента.
17. Невременный машиночитаемый носитель, хранящий программу, выполняемую по меньшей мере одним процессором для осуществления:
- декодирования (S1210) информации предсказания текущего блока текущего изображения в кодированном битовом потоке, причем информация предсказания указывает режим геометрического разделения (GPM) для текущего блока, текущий блок разделяется на два раздела в режиме GPM, и каждый из разделов ассоциируется с соответствующим предиктором;
- определения (S1220) весового индекса для отсчета текущего блока на основе положения отсчета;
- вычисления (S1230) весового коэффициента на основе весового индекса отсчета согласно уравнению, которое преобразует весовой индекс в весовой коэффициент; и
- восстановления (S1240) отсчета на основе весового коэффициента и предиктора, соответствующих отсчету;
причем уравнение включает в себя операцию сдвига вправо; вычисление содержит:
- выполнение операции сдвига вправо на основе по меньшей мере суммы весового индекса и значения смещения; значение смещения основано на количестве битов, сдвинутых операцией сдвига вправо, а количество битов, сдвинутых операцией сдвига вправо, основано по меньшей мере на размере таблицы косинусов, используемой для вычисления весового индекса;
- усечение результата операции сдвига вправо до предварительно заданного диапазона.
18. Невременный машиночитаемый носитель по п. 17, в котором вычисление содержит: уравнение, включающее в себя кусочно-постоянную функцию, имеющую количество единичных ступенчатых функций, равное количеству различных значений весовых коэффициентов минус один.
19. Невременный машиночитаемый носитель по п. 17, в котором операция сдвига вправо основана на весовом индексе.
20. Невременный машиночитаемый носитель по п. 17, в котором определение весового индекса содержит:
- определение индекса угла и индекса расстояния, которые задают границу разделения между разделами текущего блока, на основе GPM; и
- определение весового индекса для отсчета на основе положения отсчета, индекса угла и индекса расстояния.
21. Способ кодирования видео в кодере, содержащий:
- прием исходной видеопоследовательности от источника видео;
разделение текущего блока текущего изображения исходной видеопоследовательности на основе режима геометрического разделения (GPM), причем текущий блок разделяется на два раздела в режиме GPM, и каждый из разделов ассоциируется с соответствующим предиктором;
- определение весового индекса для отсчета текущего блока на основе положения отсчета;
- вычисление весового коэффициента на основе весового индекса отсчета согласно уравнению, которое преобразует весовой индекс в весовой коэффициент; и
- кодирование отсчета на основе весового коэффициента и предиктора, соответствующих отсчету;
причем уравнение включает в себя операцию сдвига вправо; вычисление содержит:
- выполнение операции сдвига вправо на основе по меньшей мере суммы весового индекса и значения смещения; значение смещения основано на количестве битов, сдвинутых операцией сдвига вправо, а количество битов, сдвинутых операцией сдвига вправо, основано по меньшей мере на размере таблицы косинусов, используемой для вычисления весового индекса;
- усечение результата операции сдвига вправо до предварительно заданного диапазона.
22. Устройство для кодирования видео, содержащее схему обработки, конфигурированную для выполнения способа по п. 21.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/953,457 | 2019-12-24 | ||
US62/955,825 | 2019-12-31 | ||
US17/063,149 | 2020-10-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2801587C1 true RU2801587C1 (ru) | 2023-08-11 |
Family
ID=
Non-Patent Citations (1)
Title |
---|
WO 2019001733 A1 -2019-01-03. US 2010208827 A1 - 2010-08-19. SEMIH ESENLIK et al., Non-CE4: Geometrical partitioning for inter blocks, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET- O0489, 15th Meeting: Gothenburg, 3-12 July 2019. BENJAMIN BROSS et al., Versatile Video Coding (Draft 3), Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-L1001-v7, 12th Meeting: Macao, 3-12 Oct. 2018. US 2017280156 A1 - 2017-09-28. US 2009257492 A1 - 2009-10-15. US 2018288410 A1 -2018-10-04. RU 2678489 С1 - 2019-01-29. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102647830B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
JP7391989B2 (ja) | ビデオ・コーディング方法及び装置 | |
EP3881528A2 (en) | Constraint on affine model motion vector | |
KR20220127308A (ko) | 비디오 코딩을 위한 방법 및 장치 | |
US11470354B2 (en) | Inter PDPC mode | |
KR20200124749A (ko) | 비디오 코딩을 위한 방법 및 장치 | |
JP2024019734A (ja) | ビデオコーディングのための方法および装置 | |
KR20210124474A (ko) | 비디오 코딩을 위한 방법 및 장치 | |
US11876978B2 (en) | Intra prediction mode information propagation for geometric partition mode with IBC and intra prediction | |
CA3131692A1 (en) | Determination of block vector for a block in a region of a coding tree block | |
KR20240068714A (ko) | 인트라 템플릿 매칭 예측의 모션 정보를 이용하는 인트라 블록 복사(ibc) 후보 리스트 구성 | |
RU2801587C1 (ru) | Способ и устройство для кодирования видео | |
RU2801586C1 (ru) | Способ и устройство сигнализации флагов режима пропускания | |
RU2773732C1 (ru) | Режим геометрического разделения при кодировании видеоданных | |
RU2779931C1 (ru) | Способ и устройство для передачи информации о размере списка кандидатов предсказателя | |
RU2801430C1 (ru) | Способ и устройство для режима кодирования на основе палитры под структурой локального двойственного дерева | |
RU2780424C1 (ru) | Способ и устройство для кодирования видео | |
RU2777394C1 (ru) | Способ и устройство для видеокодирования | |
RU2799066C1 (ru) | Способ и устройство для кодирования видео | |
RU2780534C1 (ru) | Передача информации об инструментах кодирования для кодирования видеокомпоненты в режиме монохромного видео | |
RU2793708C1 (ru) | Способ и устройство для передачи размера списка кандидатов-предикторов для внутрикадровой компенсации блока | |
RU2777377C1 (ru) | Унифицированное предсказание вектора блока для компенсации блоков внутри изображения | |
RU2781275C1 (ru) | Построение списка слияний в треугольном предсказании | |
RU2779825C1 (ru) | Способ и устройство для взаимодействия между режимом внутреннего предсказания и режимом блочной дифференциальной импульсно-кодовой модуляции | |
RU2787810C1 (ru) | Способ и устройство для преобразования цвета при универсальном видеокодировании (VVC) |