СПОСОБ И УСТРОЙСТВО ДЛЯ ПЕРЕДАЧИ РАЗМЕРА СПИСКА КАНДИДАТОВ-ПРЕДИКТОРОВ ДЛЯ ВНУТРИКАДРОВОЙ КОМПЕНСАЦИИ БЛОКА
METHOD AND DEVICE FOR TRANSMITTING PREDICTOR CANDIDATE LIST SIZE FOR INTRA-FRAME BLOCK COMPENSATION

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[1] В настоящем раскрытии испрашивается преимущество приоритета патентной заявки США № 16/863,661 «СПОСОБ И УСТРОЙСТВО ДЛЯ ПЕРЕДАЧИ РАЗМЕРА СПИСКА КАНДИДАТОВ-ПРЕДИКТОРОВ ДЛЯ ВНУТРИКАДРОВОЙ КОМПЕНСАЦИИ БЛОКА», поданной 30 апреля 2020 г., в которой испрашивается преимущество приоритета предварительной заявки США № 62/904,307 «СПОСОБЫ предсказания ДЛЯ ВНУТРИКАДРОВОЙ КОМПЕНСАЦИИ БЛОКА», поданной 23 сентября 2019 г., и предварительной заявки США № 62/873,044 «ПЕРЕДАЧА РАЗМЕРА СПИСКА КАНДИДАТОВ-ПРЕДИКТОРОВ ДЛЯ ВНУТРИКАДРОВОЙ КОМПЕНСАЦИИ БЛОКА», поданной 11 июля 2019 г. Полное раскрытие предшествующих заявок полностью включено в настоящее описание посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[2] Настоящее раскрытие описывает варианты осуществления, в основном относящиеся к кодированию видео.
УРОВЕНЬ ТЕХНИКИ
[3] Описание уровня техники, представленное в данном документе, предназначено для общего представления контекста раскрытия. Работа названных в настоящее время изобретателей, в той мере, в какой она описана в этом разделе описания уровня техники, а также аспекты описания, которые в противном случае не могут считаться предшествующим уровнем техники на момент подачи заявки, ни прямо, ни косвенно не признаются в качестве предшествующего уровня техники в отношении настоящего раскрытия.
[4] Кодирование и декодирование видео могут выполняться с использованием межкадрового предсказания с компенсацией движения. Несжатое цифровое видео может включать в себя серию изображений, причем каждое изображение имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных отсчетов цветности. Серия изображений может иметь фиксированную или переменную частоту изображения (неофициально также известную как частота кадров), например, 60 изображений в секунду или 60 Гц. Несжатое видео имеет значительные требования к битрейту. Например, для видео 1080p60 4:2:0 с частотой 8 бит на отсчет (разрешение отсчета яркости 1920×1080 при частоте кадров 60 Гц) требуется полоса пропускания, близкая к 1,5 Гбит/с. Час такого видео требует более 600 ГБ дискового пространства.
[5] Одной из целей кодирования и декодирования видео может быть уменьшение избыточности входного видеосигнала посредством сжатия. Сжатие может помочь снизить вышеупомянутые требования к полосе пропускания или пространству для хранения, в некоторых случаях на два порядка или более. Могут использоваться как сжатие без потерь, так и сжатие с потерями, а также их комбинация. Сжатие без потерь относится к методам, при которых точная копия исходного сигнала может быть восстановлена из сжатого исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может не быть идентичным исходному сигналу, но искажение между исходным и восстановленным сигналами достаточно мало, чтобы сделать восстановленный сигнал полезным для предполагаемого применения. В случае видео широко применяется сжатие с потерями. Допустимая степень искажения зависит от приложения; например, пользователи определенных потребительских приложений потоковой передачи могут допускать более высокие искажения, чем пользователи приложений распределения телевидения. Достижимая степень сжатия может отражать следующее: более высокое разрешаемое/допустимое искажение может привести к более высокой степени сжатия.
[6] Компенсация движения может быть методом сжатия с потерями и может относиться к методам, в которых блок отсчетных данных из ранее восстановленного изображения или его части (опорное изображение) после пространственного сдвига в направлении, указанном вектором движения (далее MV), используется для предсказания вновь восстановленного изображения или части изображения. В некоторых случаях опорное изображение может быть таким же, как восстанавливаемое в настоящее время изображение. MV могут иметь два измерения X и Y или три измерения, причем третье является показателем используемого опорного изображения (последнее, косвенно, может быть измерением времени).
[7] В некоторых методах сжатия видео MV, применимый к определенной области отсчетных данных, может быть предсказан из других MV, например, из тех, которые относятся к другой области отсчетных данных, пространственно смежных с восстанавливаемой областью и предшествующих этому MV в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования MV, тем самым устраняя избыточность и увеличивая степень сжатия. Предсказание MV может работать эффективно, например, потому что при кодировании входного видеосигнала, полученного с камеры (известного как естественное видео), существует статистическая вероятность того, что области, большие, чем область, к которой применим отдельный MV, перемещаются в аналогичном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием аналогичного вектора движения, полученного из MV соседней области. Это приводит к тому, что MV, найденный для данной области, аналогичен или совпадает с MV, предсказанным из окружающих MV, и который, в свою очередь, может быть представлен после энтропийного кодирования в меньшем количестве битов, чем то, которое было бы использовано при кодировании MV напрямую. В некоторых случаях предсказание MV может быть примером сжатия без потерь сигнала (а именно: MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях само предсказание MV может быть с потерями, например, из-за ошибок округления при вычислении предиктора из нескольких окружающих MV.
[8] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. H.265, «High Efficiency Video Coding», декабрь 2016 г.). Из множества механизмов предсказания MV, которые предлагает H.265, здесь описывается метод, далее именуемый «пространственным слиянием».
[9] Как показано на фиг. 1, текущий блок (101) содержит отсчеты, которые были обнаружены кодером во время процесса поиска движения как предсказываемые из предыдущего блока того же размера, который был пространственно сдвинут. Вместо того, чтобы кодировать этот MV напрямую, MV может быть получен из метаданных, связанных с одним или несколькими опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с одним из пяти окружающих отсчетов, обозначенных A0 , A1 и B0, B1, B2 (102-106 соответственно). В H.265 предсказание MV может использовать предикторы из того же опорного изображения, который использует соседний блок. Порядок формирования списка кандидатов может быть
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[10] Согласно примерному варианту осуществления способ декодирования видео включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение. Способ включает в себя определение предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео. Способ включает в себя определение, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC). Способ включает в себя построение списка кандидатов с векторными предикторами. Способ включает в себя извлечение векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса. Способ дополнительно включает в себя декодирование текущего блока в соответствии с извлеченным векторным предиктором.
[11] Согласно примерному варианту осуществления способ декодирования видео включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение. Способ дополнительно включает в себя извлечение данных передачи из кодированного битового потока видео для текущего блока. Способ дополнительно включает в себя определение, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока. Способ дополнительно включает в себя установку максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.
[12] Согласно примерному варианту осуществления устройство декодирования видео для декодирования видео включает в себя схему обработки, конфигурированную для приема кодированного битового потока видео, включающего в себя текущее изображение. Схема обработки дополнительно конфигурирована для определения заранее определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео. Схема обработки дополнительно конфигурирована для определения, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC). Схема обработки дополнительно конфигурирована для построения списка кандидатов с векторными предикторами, извлечения векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса. Схема обработки дополнительно конфигурирована для декодирования текущего блока в соответствии с извлеченным векторным предиктором.
[13] Согласно примерному варианту осуществления устройство видеодекодера для декодирования видео включает в себя схему обработки, конфигурированную для приема кодированного битового потока видео, включающего в себя текущее изображение. Схема обработки дополнительно конфигурирована для извлечения данных передачи из кодированного битового потока видео для текущего блока. Схема обработки дополнительно конфигурирована для определения, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока. Схема обработки дополнительно конфигурирована для установки максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.
[14] Невременный машиночитаемый носитель информации, содержащий хранящиеся на нем инструкции, которые при выполнении процессором в видеодекодере побуждают процессор выполнять способ, который включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение. Способ включает в себя определение предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео. Способ включает в себя определение, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC). Способ включает в себя построение списка кандидатов с векторными предикторами. Способ включает в себя извлечение векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса. Способ дополнительно включает в себя декодирование текущего блока в соответствии с извлеченным векторным предиктором.
[15] Невременный машиночитаемый носитель информации, имеющий хранящиеся на нем инструкции, которые при выполнении процессором в видеодекодере побуждают процессор выполнять способ, который включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение. Способ дополнительно включает в себя извлечение данных передачи из кодированного битового потока видео для текущего блока. Способ дополнительно включает в себя определение, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока. Способ дополнительно включает в себя установку максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[16] Дополнительные признаки, сущность и различные преимущества раскрытого объекта изобретения будут более очевидны из следующего подробного описания и прилагаемых чертежей, на которых:
[17] - на фиг. 1 показана схематическая иллюстрация текущего блока и окружающих его кандидатов на пространственное слияние в одном примере;
[18] - на фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы системы (200) связи в соответствии с вариантом осуществления;
[19] - на фиг. 3 показана схематическая иллюстрация упрощенной блок-схемы системы (300) связи в соответствии с вариантом осуществления;
[20] - на фиг. 4 показана схематическая иллюстрация упрощенной блок-схемы декодера в соответствии с вариантом осуществления;
[21] - на фиг. 5 показана схематическая иллюстрация упрощенной блок-схемы кодера в соответствии с вариантом осуществления;
[22] - на фиг. 6 показана блок-схема кодера в соответствии с другим вариантом осуществления;
[23] - на фиг. 7 показана блок-схема декодера в соответствии с другим вариантом осуществления;
[24] - на фиг. 8 показана схематическая иллюстрация внутрикадровой компенсации блока в соответствии с вариантом осуществления;
[25] - на фиг. 9A-9D показана схематическая иллюстрация внутрикадровой компенсации блока с диапазоном поиска размера одной единицы дерева кодирования (CTU) в соответствии с вариантом осуществления;
[26] - на фиг. 10A-10D показана схематическая иллюстрация того, как обновляется буфер, в соответствии с вариантами осуществления;
[27] - на фиг. 11A показана иллюстрация блок-схемы декодирования для буфера предсказания MV на основе истории (HMVP);
[28] - на фиг. 11B показана схематическая иллюстрация обновления буфера HMVP;
[29] - на фиг. 12 показана иллюстрация примерного процесса декодирования в соответствии с вариантом осуществления;
[30] - на фиг. 13 показана иллюстрация примерного процесса декодирования в соответствии с вариантом осуществления;
[31] - на фиг. 14 показана схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления настоящего раскрытия.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[32] На фиг. 2 проиллюстрирована упрощенная блок-схема системы (200) связи согласно варианту осуществления настоящего раскрытия. Система (200) связи включает в себя множество оконечных устройств, которые могут связываться друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере с фиг. 2 первая пара оконечных устройств (210) и (220) выполняет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, которые захватываются оконечным устройством (210)) для передачи другому оконечному устройству (220) через сеть (250). Кодированные видеоданные могут быть переданы в форме одного или более кодированных битовых потоков видео. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения в соответствии с восстановленными видеоданными. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.
[33] В другом примере система (200) связи включает в себя вторую пару оконечных устройств (230) и (240), которые выполняют двунаправленную передачу кодированных видеоданных, которая может происходить, например, во время видеоконференц-связи. Для двунаправленной передачи данных, в примере, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, которые захватываются оконечным устройством) для передачи на другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать кодированные видеоданные, переданные другим оконечным устройством из оконечных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений, и может отображать видеоизображения на доступном устройстве отображения в соответствии с восстановленными видеоданными.
[34] В примере с фиг. 2 оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но принципы настоящего раскрытия не могут быть ограничены этим. Варианты осуществления настоящего раскрытия находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференц-связи. Сеть (250) представляет собой любое количество сетей, которые передают кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные (соединенные проводами) и/или беспроводные сети связи. Сеть (250) связи может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (250) могут быть несущественными для работы настоящего раскрытия, если это не объясняется в данном документе ниже.
[35] На фиг. 3 проиллюстрировано, в качестве примера применения для раскрытого объекта изобретения, размещение видеокодера и видеодекодера в потоковой среде. Раскрытый объект изобретения может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т.п., и так далее.
[36] Система потоковой передачи может включать в себя подсистему (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) (например, битовые потоки видео) могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию ITU-T H.265. В одном примере разрабатываемый стандарт кодирования видео неофициально известен как универсальное кодирование видео (VVC). Раскрытый объект может использоваться в контексте VVC.
[37] Следует отметить, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя видеодекодер (не показан), а электронное устройство (330) также может включать в себя видеокодер (не показан).
[38] На фиг. 4 показана блок-схема видеодекодера (410) согласно варианту осуществления настоящего раскрытия. Видеодекодер (410) может быть включен в электронное устройство (430). Электронное устройство (430) может включать в себя приемник (431) (например, приемную схему). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере с фиг. 3.
[39] Приемник (431) может принимать одну или несколько кодированных видеопоследовательностей, которые должны быть декодированы видеодекодером (410); в том же или другом варианте осуществления – по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (401), который может быть аппаратной/программной связью с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (431) может принимать закодированные видеоданные с другими данными, например, закодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть отправлены их соответствующим использующим объектам (не изображены). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с дрожанием в сети между приемником (431) и энтропийным декодером/парсером (420) (далее «парсер (420)») может быть подключена буферная память (415). В некоторых приложениях буферная память (415) является частью видеодекодера (410). В других случаях она может находиться снаружи видеодекодера (410) (не показано). В других случаях может иметься буферная память (не изображена) снаружи видеодекодера (410), например, для борьбы с дрожанием сети, и, кроме того, другая буферная память (415) внутри видеодекодера (410), например, для обработки времени воспроизведения. Когда приемник (431) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буферная память (415) может не понадобиться или может быть небольшой. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буферная память (415), которая может быть сравнительно большой и может быть предпочтительно адаптивного размера, и может по меньшей мере частично быть реализована в операционной системе или аналогичных элементах (не изображены) снаружи видеодекодера (410).
[40] Видеодекодер (410) может включать в себя парсер (420) для восстановления символов (421) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (410), и потенциально информацию для управления устройством визуализации, таким как устройство (412) визуализации (например, экран дисплея), которое не является неотъемлемой частью электронного устройство (430), но может быть подключено к электронному устройству (430), как показано на фиг. 4. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров дополнительной расширенной информации (сообщения SEI) или информации о пригодности видео (VUI) (не изображены). Парсер (420) может парсить/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование закодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Парсер (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Парсер (420) также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.
[41] Парсер (420) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, принятой из буферной памяти (415), чтобы создавать символы (421).
[42] Восстановление символов (421) может включать в себя множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: внешнее и внутреннее изображение, внешний и внутренний блок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации подгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью парсера (420). Поток такой информации управления подгруппой между парсером (420) и множеством модулей ниже не показан для ясности.
[43] Помимо уже упомянутых функциональных блоков, видеодекодер (410) может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть, по меньшей мере частично, интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.
[44] Первым модулем является модуль (451) масштабирования/обратного преобразования. Модуль (451) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (421) от парсера (420). Модуль (451) масштабирования/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (455).
[45] В некоторых случаях выходные отсчеты модуля (451) масштабирования/обратного преобразования могут относиться к блоку с внутренним кодированием; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (452) внутрикадрового предсказания. В некоторых случаях модуль (452) внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (455), в некоторых случаях, добавляет для каждого отсчета информацию предсказания, сгенерированную модулем внутреннего предсказания (452), к выходной информации отсчетов, предоставляемой модулем (451) масштабирования/обратного преобразования.
[46] В других случаях выходные отсчеты модуля (451) масштабирования/обратного преобразования могут относиться к блоку с внешним кодированием и потенциально с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может обращаться к памяти (457) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (421), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (455) к выходу модуля (451) масштабирования/обратного преобразования (в данном случае называемые остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю (453) предсказания с компенсацией движения в форме символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения суботсчетов, механизмы предсказания вектора движения и так далее.
[47] Выходные отсчеты агрегатора (455) могут подвергаться различным методам петлевой фильтрации в модуле (456) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в кодированную видеопоследовательность (также называемую битовым потоком кодированного видео) и предоставляемые модулю (456) петлевой фильтрации как символы (421) из парсера (420), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные петлей значения отсчетов.
[48] Выходной сигнал модуля (456) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (412) визуализации, а также сохранен в памяти (457) опорных изображений для использования в будущем межкадровом предсказании.
[49] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. Например, после того, как кодированное изображение, соответствующее текущему изображению, полностью восстановлено, и кодированное изображение было идентифицировано как опорное изображение (например, парсером (420)), буфер (458) текущего изображения может стать частью памяти (457) опорных изображений, и буфер свежего текущего изображения может быть перераспределен перед началом восстановления следующего кодированного изображения.
[50] Видеодекодер (410) может выполнять операции декодирования согласно заранее определенной технологии сжатия видео в стандарте, таком как ITU-T Rec. H.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность соответствует как синтаксису технологии или стандарту сжатия видео, так и профилям, задокументированным в технологии или стандарте сжатия видео. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, передаваемых в кодированной видеопоследовательности.
[51] В варианте осуществления приемник (431) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных слоев или слоев улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.
[52] На фиг. 5 показана блок-схема видеодекодера (503) согласно варианту осуществления настоящего раскрытия. Видеокодер (503) включен в электронное устройство (520). Электронное устройство (520) включает в себя передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере с фиг. 3.
[53] Видеокодер (503) может принимать отсчеты видео от источника (501) видео (который не является частью электронного устройства (520) в примере c фиг. 5), который может захватывать видеоизображение(я) для кодирования с помощью видеокодера (503). В другом примере источник (501) видео является частью электронного устройства (520).
[54] Источник (501) видео может предоставить исходную видеопоследовательность для кодирования видеокодером (503) в форме цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, ...), любое цветовое пространство (например, BT.601 Y CrCB, RGB, …) и любую подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе обслуживания мультимедиа источник (501) видео может быть запоминающим устройством, хранящим предварительно подготовленное видео. В системе видеоконференц-связи источник (501) видео может быть камерой, которая фиксирует информацию локального изображения в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры отсчетов, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.
[55] Согласно варианту осуществления видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования – одна из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально связан с другими функциональными модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером (550), могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение, …), размеру изображения, макету группы изображений (GOP), максимальному диапазону поиска вектора движения и так далее. Контроллер (550) может быть конфигурирован так, чтобы иметь другие подходящие функции, которые относятся к видеокодеру (503), оптимизированному для определенной конструкции системы.
[56] В некоторых вариантах осуществления видеокодер (503) конфигурирован для работы в петле кодирования. В качестве упрощенного описания, в примере, петля кодирования может включать в себя кодер (530) источника (например, ответственный за создание символов, таких как поток символов, на основе входного изображения, которое должно быть кодировано, и опорного изображения (изображений)), и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) восстанавливает символы для создания данных отсчетов аналогично тому, как также создавал бы (удаленный) декодер (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте изобретения). Восстановленный поток отсчетов (данные отсчетов) вводится в память опорных изображений (534). Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое в памяти опорных изображений (534) также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые бы «видел» декодер при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) также используется в некоторых смежных областях техники.
[57] Работа «локального» декодера (533) может быть такой же, как у «удаленного» декодера, такого как видеодекодер (410), который уже был подробно описан выше в связи с фиг. 4. Кратко ссылаясь также на фиг. 4, однако, поскольку символы доступны, и кодирование/декодирование символов в закодированную видеопоследовательность энтропийным кодером (545) и парсером (420) может быть без потерь, части энтропийного декодирования видеодекодера (410), включая буферную память (415) и парсер (420), не могут быть полностью реализованы в локальном декодере (533).
[58] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсингового/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать, по существу, в идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[59] Во время работы в некоторых примерах исходный кодер (530) может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входное изображение с предсказанием со ссылкой на одно или более ранее кодированных изображений из видеопоследовательности, которые были обозначены как «опорные изображения». Таким образом, механизм (532) кодирования кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве эталона(ов) предсказания для входного изображения.
[60] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть обозначены как опорные изображения, на основе символов, созданных кодером (530) источника. Операции механизма (532) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 5), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных изображениях, и может вызывать сохранение восстановленных опорных изображений в кэше (534) опорных изображений. Таким образом, видеокодер (503) может локально хранить копии восстановленных опорных изображений, которые имеют общий контент, в качестве восстановленных опорных изображений, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).
[61] Предиктор (535) может выполнять поиски с предсказанием для механизма (532) кодирования. То есть, для нового изображения, которое должно быть закодировано, предиктор (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном для предсказания для новых изображений. Предиктор (535) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны для предсказания. В некоторых случаях, как определено результатами поиска, полученными предиктором (535), входное изображение может иметь эталоны для предсказания, взятые из множества опорных изображений, сохраненных в памяти (534) опорных изображений.
[62] Контроллер (550) может управлять операциями кодирования кодера (530) источника, включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[63] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сгенерированные различными функциональными модулями, в закодированную видеопоследовательность путем сжатия без потерь символов согласно таким технологиям, как кодирование Хаффмана, кодирование с переменной длиной, арифметическое кодирование и так далее.
[64] Передатчик (540) может буферизовать закодированные видеопоследовательности, созданные энтропийным кодером (545), чтобы подготовиться к передаче через канал (560) связи, который может быть аппаратным/программным соединением с запоминающим устройством, которое будет хранить закодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из видеокодера (503) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[65] Контроллер (550) может управлять работой видеокодера (503). Во время кодирования контроллер (550) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов изображений:
[66] Внутреннее изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы внутренних изображений, включая, например, изображения с независимым обновлением декодера («IDR»). Специалисту в области техники известны эти варианты I-изображений и их соответствующие приложения и особенности.
[67] Изображение с предсказанием (P-изображение) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[68] Изображение с двунаправленным предсказанием (B-изображение) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[69] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и закодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки из I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или внутреннее предсказание). Пиксельные блоки P-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки B-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[70] Видеокодер (503) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как ITU-T Rec. H.265. В своей работе видеокодер (503) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[71] В варианте осуществления передатчик (540) может передавать дополнительные данные с кодированным видео. Исходный кодер (530) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные слои/пространственные слои/слои улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и так далее.
[72] Видео может быть захвачено как множество исходных изображений (видеоизображений) во временной последовательности. Внутрикадровое предсказание (часто сокращенно называемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а межкадровое предсказание использует (временную или другую) корреляцию между изображениями. В примере конкретное изображение при кодировании/декодировании, которое упоминается как текущее изображение, разбивается на блоки. Когда блок в текущем изображении подобен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может быть кодирован вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.
[73] В некоторых вариантах осуществления при межкадровом предсказании может использоваться метод двойного предсказания. Согласно методу двойного предсказания, используются два опорных изображения, такие как первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может быть кодирован первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан комбинацией первого опорного блока и второго опорного блока.
[74] Кроме того, метод режима слияния может использоваться в межкадровом предсказании для повышения эффективности кодирования.
[75] Согласно некоторым вариантам осуществления изобретения, предсказания, такие как межкадровые предсказания и внутрикадровые предсказания, выполняются в единице блоков. Например, в соответствии со стандартом HEVC, изображение в последовательности видеоизображений разделяется на единицы дерева кодирования (CTU) для сжатия, причем CTU в изображении имеют одинаковый размер, например 64×64 пикселей, 32×32 пикселей или 16×16 пикселей. В общем, CTU включает в себя три блока дерева кодирования (CTB), которые представляют собой один CTB яркости и два CTB цветности. Каждая CTU может быть рекурсивно разделена на квадродерево на одну или множество единиц кодирования (CU). Например, CTU размером 64×64 пикселей можно разделить на одну CU из 64×64 пикселей, или 4 CU из 32×32 пикселей, или 16 CU из 16×16 пикселей. В примере каждая CU анализируется для определения типа предсказания для CU, такого как тип внешнего предсказания или тип внутреннего предсказания. CU разделяется на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. Обычно каждая PU включает в себя блок предсказания (PB) яркости и два PB цветности. В варианте осуществления операция предсказания при кодировании (кодировании/декодировании) выполняется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, такую как 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[76] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления раскрытия. Видеокодер (603) конфигурирован для приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое является частью кодированной видеопоследовательности. В одном примере видеокодер (603) используется вместо видеокодера (303) в примере с фиг. 3.
[77] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, такого как блок предсказания из 8×8 отсчетов и т.п. Видеокодер (603) определяет, закодирован ли блок обработки лучше всего при использовании внутреннего режима, внешнего режима или режима двойного предсказания, используя, например, оптимизацию скорости-искажения. Когда блок обработки должен быть кодирован во внутреннем режиме, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; а когда блок обработки должен быть кодирован во внешнем режиме или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях кодирования видео режим слияния может быть субрежимом межкадрового предсказания, в котором вектор движения выводится из одного или более предикторов вектора движения без преимущества кодированной компоненты вектора движения снаружи предикторов. В некоторых других технологиях кодирования видео может присутствовать компонент вектора движения, применимый к рассматриваемому блоку. В одном примере видеокодер (603) включает в себя другие компоненты, такие как модуль выбора режима (не показан), для определения режима блоков обработки.
[78] В примере с фиг. 6 видеокодер (603) включает в себя внешний кодер (630), внутренний кодер (622), вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные вместе, как показано на фиг. 6.
[79] Внешний кодер (630) конфигурирован для приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоков в предыдущих изображениях и последующих изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внешнего кодирования, векторов движения, информации режима слияния) и вычисления результатов внешнего предсказания (например, предсказанный блок) на основе информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорные изображения являются декодированными опорными изображениями, которые декодируются на основе кодированной видеоинформации.
[80] Внутренний кодер (622) конфигурирован для приема отсчетов текущего блока (например, блока обработки), в некоторых случаях сравнения блока с блоками, уже кодированными в том же изображении, генерации квантованных коэффициентов после преобразования, а в некоторых случаях также информации внутреннего предсказания (например, информации направления внутреннего предсказания согласно одному или более методов внутреннего кодирования). В одном примере внутренний кодер (622) также вычисляет результаты внутреннего предсказания (например, предсказанный блок) на основе информации внутреннего предсказания и опорных блоков в одном и том же изображении.
[81] Общий контроллер (621) конфигурирован для определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. В одном примере общий контроллер (621) определяет режим блока и подает управляющий сигнал на переключатель (626) на основе режима. Например, когда режим является внутренним режимом, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат внутреннего режима для использования вычислителем (623) остатка, и управляет энтропийным кодером (625), чтобы выбрать информацию внутреннего предсказания и включить информацию внутреннего предсказания в битовый поток; и когда режимом является внешний режим, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат внешнего предсказания для использования вычислителем (623) остатка, и управляет энтропийным кодером (625), чтобы выбрать информацию внешнего предсказания и включить информацию внешнего предсказания в битовый поток.
[82] Вычислитель (623) остатка конфигурирован для вычисления разницы (данных остатка) между принятым блоком и результатами предсказания, выбранными из внутреннего кодера (622) или внешнего кодера (630). Кодер (624) остатка конфигурирован для работы на основе данных остатка, чтобы кодировать данные остатка, чтобы генерировать коэффициенты преобразования. В одном примере кодер (624) остатка конфигурирован для преобразования данных остатка из пространственной области в частотную область и генерации коэффициентов преобразования. Коэффициенты преобразования затем подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также включает в себя декодер (628) остатка. Декодер (628) остатка конфигурирован для выполнения обратного преобразования и генерации декодированных данных остатка. Декодированные данные остатка могут подходящим образом использоваться внутренним кодером (622) и внешним кодером (630). Например, внутренний кодер (630) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, а внутренний кодер (622) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки соответствующим образом обрабатываются для генерирования декодированных изображений, и декодированные изображения могут быть буферизованы в схеме памяти (не показана) и использоваться в качестве опорных изображений в некоторых примерах.
[83] Энтропийный кодер (625) конфигурирован для форматирования битового потока, чтобы включить в него кодированный блок. Энтропийный кодер (625) конфигурирован для включения различной информации в соответствии с подходящим стандартом, таким как стандарт HEVC. В одном примере энтропийный кодер (625) конфигурирован для включения общих данных управления, выбранной информации предсказания (например, информации внутреннего предсказания или информации внешнего предсказания), информации остатка и другой подходящей информации в битовом потоке. Отметим, что согласно раскрытому объекту изобретения при кодировании блока в субрежиме слияния либо внешнего режима, либо режима двойного предсказания информация остатка отсутствует.
[84] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления раскрытия. Видеодекодер (710) конфигурирован для приема кодированных изображений, которые являются частью кодированной видеопоследовательности, и декодирования кодированных изображений для создания восстановленных изображений. В одном примере видеодекодер (710) используется вместо видеодекодера (310) в примере с фиг. 3.
[85] В примере с фиг. 7 видеодекодер (710) включает в себя энтропийный декодер (771), внешний декодер (780), декодер (773) остатка, модуль (774) восстановления и внутренний декодер (772), соединенные вместе, как показано на фиг. 7.
[86] Энтропийный декодер (771) может быть конфигурирован для восстановления из кодированного изображения определенных символов, которые представляют элементы синтаксиса, из которых состоит кодированное изображение. Такие символы могут включать в себя, например, режим, в котором кодируется блок (такой как, например, внутренний режим, внешний режим, режим двойного предсказания, причем последние два в субрежиме слияния или другом субрежиме), информацию предсказания (такую как, например, информация внутреннего предсказания или информация внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, которые используются для предсказания внутренним декодером (772) или внешним декодером (780), соответственно, остаточную информацию в форме, например, квантованных коэффициентов преобразования и т.п. В одном примере, когда режимом предсказания является внешний режим или режим двунаправленного предсказания, информация внешнего предсказания предоставляется во внешний декодер (780); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания предоставляется во внутренний декодер (772). Остаточная информация может подвергаться обратному квантованию и предоставляется декодеру (773) остатка.
[87] Внешний декодер (780) конфигурирован для приема информации внешнего предсказания и генерации результатов внешнего предсказания на основе информации внешнего предсказания.
[88] Внутренний декодер (772) конфигурирован для приема информации внутреннего предсказания и генерации результатов предсказания на основе информации внутреннего предсказания.
[89] Декодер (773) остатка конфигурирован для выполнения обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка может также потребовать определенную управляющую информацию (чтобы включить параметр квантователя (QP)), и эта информация может быть предоставлена энтропийным декодером (771) (путь данных не показан, поскольку это может быть только управляющая информация малого объема).
[90] Модуль (774) восстановления конфигурирован для объединения в пространственной области остатка, выводимого декодером (773) остатка, и результатов предсказания (выводимых модулями внешнего или внутреннего предсказания, в зависимости от случая) для формирования восстановленного блока, который может быть частью восстановленного изображения, которое, в свою очередь, может быть частью восстановленного видео. Следует отметить, что могут выполняться и другие подходящие операции, такие как операция деблокирования и т.п., для улучшения визуального качества.
[91] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любого подходящего метода. В варианте осуществления видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[92] Компенсация на основе блоков из другого изображения может называться компенсацией движения. Компенсация блока также может выполняться из ранее восстановленной области в пределах того же изображения, что может называться внутрикадровой компенсацией блока, копией внутри блока (IBC) или ссылкой на текущее изображение (CPR). Например, вектор смещения, который указывает смещение между текущим блоком и опорным блоком, называется вектором блока. Согласно некоторым вариантам осуществления вектор блока указывает на опорный блок, который уже восстановлен и доступен для ссылки. Также, для рассмотрения параллельной обработки, может быть исключена ссылка вектором блока на опорную область, которая находится за границей тайла/слайса или границы в форме лестницы волнового фронта. Из-за этих ограничений вектор блока может отличаться от вектора движения при компенсации движения, где вектор движения может иметь любое значение (положительное или отрицательное, в направлении x или y).
[93] Кодирование вектора блока может быть явным или неявным. В явном режиме, который иногда называют режимом AMVP (расширенное предсказание вектора движения) при внешнем кодировании, передается разность между вектором блока и его предиктором. В неявном режиме вектор блока восстанавливается из предиктора вектора блока аналогично вектору движения в режиме слияния. Разрешение вектора блока в некоторых вариантах осуществления ограничено целочисленными позициями. В других вариантах осуществления разрешение вектора блока может указывать на дробные позиции.
[94] Использование внутриблочного копирования на уровне блока может быть передано с помощью флага уровня блока, называемого флагом IBC. В одном варианте осуществления флаг IBC передается, когда текущий блок не кодируется в режиме слияния. Флаг IBC может также передаваться методом опорного индекса, который выполняется путем обработки текущего декодированного изображения как опорного изображения. В кодировании содержимого экрана HEVC (SCC) такое опорное изображение помещается в последнюю позицию списка. Этим специальным опорным изображением также можно управлять вместе с другими временными опорными изображениями в DPB. IBC может также включать в себя варианты, такие как зеркально отраженное IBC (например, опорный блок зеркально отражается по горизонтали или вертикали перед использованием для предсказания текущего блока) или линейное (IBC) (например, каждая единица компенсации внутри блока кодирования M×N представляет собой линию M×1 или 1×N).
[95] На фиг. 8 проиллюстрирован вариант осуществления внутрикадровой компенсации блока (например, режим внутриблочного копирования). Как показано на фиг. 8, текущее изображение 800 включает в себя набор областей блоков, которые уже были кодированы/декодированы (т.е. квадраты серого цвета), и набор областей блоков, которые еще предстоит кодировать/декодировать (т.е. квадраты белого цвета). Блок 802 одной из областей блоков, которые еще предстоит кодировать/декодировать, может быть связан с вектором 804 блоков, который указывает на другой блок 806, который ранее был кодирован/декодирован. Соответственно, любая информация о движении, связанная с блоком 806, может использоваться для кодирования/декодирования блока 802.
[96] В некоторых вариантах осуществления диапазон поиска режима CPR ограничен, чтобы находиться в пределах текущей CTU. Эффективное требование к памяти для хранения опорных отсчетов для режима CPR составляет 1 размер CTU отсчетов. Принимая во внимание существующую память опорных отсчетов для хранения восстановленных отсчетов в текущей области 64×64, требуются еще 3 памяти опорных отсчетов размером 64×64. Варианты осуществления настоящего раскрытия расширяют эффективный диапазон поиска режима CPR до некоторой части левой CTU, в то время как общие требования к памяти для хранения опорных пикселей остаются неизменными (1 размер CTU, всего 4 64×64 памяти опорных отсчетов).
[97] Как показано на фиг. 9A, верхняя левая область CTU 900 является текущей декодируемой областью. Когда верхняя левая область CTU 900 декодируется, запись [1] памяти опорных отсчетов перезаписывается отсчетами из этой области, как проиллюстрировано на фиг. 10A (например, перезаписанная ячейка(и) памяти имеет диагональную штриховку). Как показано на фиг. 9B, верхняя правая область CTU 900 является следующей текущей декодируемой областью. Когда верхняя правая область CTU 900 декодируется, запись [2] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10B. Как показано на фиг. 9C, нижняя левая область CTU 900 является следующей текущей декодируемой областью. Когда нижняя левая область CTU 900 декодируется, запись [3] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10C. Как показано на фиг. 9D, нижняя правая область CTU 900 является следующей текущей декодируемой областью. Когда нижняя правая область CTU 900 декодируется, запись [3] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10D.
[98] В некоторых вариантах осуществления условиями соответствия битового потока является то, что действительный вектор блока (mvL, в разрешении 1/16 - pel) должен соответствовать указанным ниже условиям. В некоторых вариантах осуществления вектор движения яркости mvL подчиняется следующим ограничениям A1, A2, B1, C1 и C2.
A1
[99] В первом ограничении (), когда процесс вывода для доступности блока (например, процесс проверки доступности соседних блоков) вызывается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb), и соседним местоположением яркости (xCb + (mvL [0] >> 4) + cbWidth - 1, yCb + (mvL [1] >> 4) + cbHeight - 1) в качестве входных данных, выход должен быть равен значению ИСТИНА.
A2
[100] Во втором ограничении (), когда процесс вывода для доступности блока (например, процесс проверки доступности соседних блоков) вызывается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb), и соседним местоположением яркости (xCb + (mvL [0] >> 4) + cbWidth - 1, yCb + (mvL [1] >> 4) + cbHeight - 1) в качестве входных данных, выход должен быть равен значению ИСТИНА.
B1
[101] В третьем ограничении () выполняется одно или оба следующих условия:
(i) Значение (mvL [0] >> 4) + cbWidth меньше или равно 0.
(ii) Значение (mvL [1] >> 4) + cbHeight меньше или равно 0.
C1
[102] В четвертом ограничении () выполняются следующие условия:
(i) (yCb + (mvL [1] >> 4)) >> CtbLog2SizeY = yCb >> CtbLog2SizeY
(ii) (yCb + (mvL [1] >> 4) + cbHeight - 1) >> CtbLog2SizeY = yCb >> CtbLog2SizeY
(iii) (xCb + (mvL [0] >> 4)) >> CtbLog2SizeY> = (xCb >> CtbLog2SizeY) - 1
(iv) (xCb + (mvL [0] >> 4) + cbWidth - 1) >> CtbLog2SizeY <= (xCb >> CtbLog2SizeY)
C2
[103] В пятом ограничении (), когда (xCb + (mvL [0] >> 4)) >> CtbLog2SizeY равно (xCb >> CtbLog2SizeY) - 1, процесс вывода для доступности блока (например, процесс проверки доступности соседних блоков) вызывается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb), и соседним местоположением яркости (((xCb + (mvL [0] >> 4) + CtbSizeY) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1), ((yCb + (mvL [1] >> 4)) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1)) в качестве входных данных, а выход должен быть равен значению ЛОЖЬ.
[104] В приведенных выше уравнениях xCb и yCb – координаты x и y текущего блока соответственно. Переменные cbHeight и cbWidth – это высота и ширина текущего блока соответственно. Переменная CtbLog2sizeY относится к размеру CTU в домене log2. Например, CtbLog2sizeY = 7 означает, что размер CTU составляет 128 × 128. Переменные mvL0[0] и mvL0[1] относятся к компонентам x и y вектора блока mvL0 соответственно. Если выходное значение – ЛОЖЬ, то отсчеты для опорного блока определяются как доступные (например, соседний блок доступен для использования внутриблочного копирования). Если выходной сигнал – ИСТИНА, то отсчеты для опорного блока определяются как недоступные.
[105] Согласно некоторым вариантам осуществления, способ MVP на основе истории (HMVP) включает в себя кандидата HMVP, который определяется как информация о движении ранее кодированного блока. Таблица с множеством кандидатов HMVP поддерживается в процессе кодирования/декодирования. Таблица очищается при обнаружении нового слайса. Каждый раз, когда есть внешне кодированный неаффинный блок, соответствующая информация о движении добавляется к последней записи таблицы как новый кандидат HMVP. Последовательность кодирования метода HMVP изображена на фиг. 11А.
[106] Размер S таблицы установлен равным 6, что указывает на то, что в таблицу могут быть добавлены до 6 кандидатов HMVP. При вставке нового кандидата движения в таблицу используется правило ограниченного FIFO, так что сначала применяется проверка избыточности, чтобы определить, есть ли в таблице идентичное HMVP. При обнаружении идентичное HMVP удаляется из таблицы, а все кандидаты HMVP впоследствии перемещаются вперед (т.е. с уменьшением индексов на 1). На фиг. 11B показан пример вставки нового кандидата движения в таблицу HMVP.
[107] Кандидаты HMVP могут использоваться в процессе построения списка кандидатов на слияние. Несколько последних кандидатов HMVP в таблице проверяются по порядку и вставляются в список кандидатов после кандидата TMVP. К кандидатам HMVP может применяться отсечение к кандидату пространственного или временного слияния, с исключением кандидата движения субблока (то есть ATMVP).
[108] В некоторых вариантах осуществления, чтобы уменьшить количество операций отсечения, количество проверяемых кандидатов HMVP (обозначено L) устанавливается как L = (N <= 4) ? M: (8 - N), где N указывает количество доступных кандидатов на слияние, не являющихся субблоками, а M указывает количество доступных кандидатов HMVP в таблице. Кроме того, как только общее количество доступных кандидатов на слияние достигает переданных максимально разрешенных кандидатов на слияние минус 1, процесс построения списка кандидатов на слияние из списка HMVP завершается. Кроме того, количество пар для комбинированного вывода кандидатов на слияние с двойным предсказанием сокращено с 12 до 6.
[109] Кандидаты HMVP также могут использоваться в процессе построения списка кандидатов AMVP. Векторы движения последних K кандидатов HMVP в таблице вставляются после кандидата TMVP. Только кандидаты HMVP с тем же опорным изображением, что и целевое опорное изображение AMVP, используются для построения списка кандидатов AMVP. К кандидатам HMVP применяется отсечение. В некоторых приложениях K устанавливается равным 4, в то время как размер списка AMVP остается неизменным (т.е. равным 2).
[110] Согласно некоторым вариантам осуществления, когда внутриблочное копирование работает как режим, отдельный от внешнего режима, для хранения ранее кодированных векторов блоков внутриблочного копирования может использоваться отдельный буфер истории, называемый HBVP. В качестве отдельного режима от внешнего предсказания желательно иметь упрощенный процесс вывода вектора блока для режима внутриблочного копирования. Список кандидатов для предсказания IBC BV в режиме AMVP может совместно использовать тот, который используется в режиме слияния IBC (список кандидатов на слияние), с 2 пространственными кандидатами + 5 кандидатами HBVP.
[111] Размер списка кандидатов на слияние режима IBC может быть назначен как MaxNumMergeCand. MaxNumMergeCand может определяться размером MaxNumMergeCand списка кандидатов на слияние во внешнем режиме, который указывается в некоторых примерах как six_minus_max_num_merge_cand. Переменная six_minus_max_num_merge_cand может указывать максимальное количество кандидатов на слияние предсказания вектора движения (MVP), поддерживаемых в слайсе, вычтенное из 6.
[112] В некоторых примерах максимальное количество кандидатов на слияние MVP, MaxNumMergeCand, может быть получено как:
Уравнение (1): MaxNumMergeCand = 6 - six_minus_max_num_merge_cand
[113] Значение MaxNumMergeCand может находиться в диапазоне от 1 до 6 включительно. В некоторых системах видеокодирования размер списка слияния для режима IBC сообщается отдельно от размера списка слияния во внешнем режиме слияния для всех I/P/B-слайсов. Диапазон этого размера может быть таким же, как во внешнем режиме слияния (например, от 1 до 6 включительно). В некоторых примерах максимальное количество кандидатов IBC, MaxNumIbcMergeCand может быть получено как:
Уравнение (2): MaxNumIBCMergeCand = 6 - six_minus_max_num_ibc_merge_cand
[114] В уравнении (2) переменная six_minus_max_num_ibc_merge_cand определяет максимальное количество кандидатов слияния предсказания вектора движения (MVP) IBC, поддерживаемых в срезе, вычитаемое из 6. Значение MaxNumIBCMergeCand может находиться в диапазоне от 1 до 6 включительно. В некоторых системах видеокодирования передача индекса слияния для режима слияния IBC может по-прежнему совместно использовать передачу индекса слияния, используемую для внешнего режима слияния. В этом отношении режим слияния IBC и внешний режим слияния могут совместно использовать один и тот же синтаксический элемент для индекса слияния.Поскольку индекс слияния преобразован в двоичную форму с использованием кода усеченного риса (TR), максимальная длина индекса слияния составляет MaxNumMergeCand - 1. Однако существует потребность в решении для передачи индекса слияния, когда MaxNumIbcMergeCand не равно MaxNumMergeCand.
[115] Варианты осуществления настоящего раскрытия можно использовать по отдельности или комбинировать в любом порядке. Кроме того, каждый из способов, кодер и декодер согласно вариантам осуществления настоящего раскрытия может быть реализован схемой обработки (например, одним или более процессорами или одной или несколькими интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на невременном машиночитаемом носителе. Согласно некоторым вариантам осуществления термин «блок» может интерпретироваться как блок предсказания, блок кодирования или единица кодирования (то есть CU).
[116]
[117] Согласно некоторым вариантам осуществления, число максимального размера слияния для бинаризации индекса слияния устанавливается с возможностью переключения между числами MaxNumMergeCand и MaxNumIbcMergeCand. Например, когда текущий блок кодируется в режиме IBC, максимальный размер слияния для индекса слияния составляет MaxNumIbcMergeCand. Однако когда текущий блок не кодирован в режиме IBC, максимальный размер слияния для индекса слияния составляет MaxNumMergeCand. В таблице 1 показаны примеры синтаксических элементов и связанных преобразований в двоичную форму.
merge_data ()
regular_merge_flag [ ][ ]
FL
cMax = 1
mmvd_merge_flag [ ][ ]
FL
cMax = 1
mmvd_cand_flag [ ][ ]
FL
cMax = 1
mmvd_distance_idx [ ][ ]
TR
cMax = 7, cRiceParam = 0
mmvd_direction_idx [ ][ ]
FL
cMax = 3
ciip_flag [ ][ ]
FL
cMax = 1
merge_subblock_flag [ ][ ]
FL
cMax = 1
merge_subblock_idx [ ][ ]
TR
cMax = MaxNumSubblockMergeCand - 1, cRiceParam = 0
merge_triangle_split_dir [ ][ ]
FL
cMax = 1
merge_triangle_idx0 [ ][ ]
TR
cMax = MaxNumTriangleMergeCand - 1, cRiceParam = 0
merge_triangle_idx1 [ ][ ]
TR
cMax = MaxNumTriangleMergeCand - 2, cRiceParam = 0
merge_idx [ ][ ]
TR
cMax = (CuPredMode [0][x0][y0]! = MODE_IBC? MaxNumMergeCand : MaxNumIbcMergeCand) - 1, cRiceParam = 0
Таблица 1
[118] Как проиллюстрировано в Таблице 1, преобразование в двоичную форму индекса слияния (т.е. merge_idx [][]) основано на том, кодирован ли текущий блок в режиме IBC. Кроме того, FL относится к фиксированной длине; cMax относится к максимально возможному значению кода переменной длины; eRiceParam – это параметр риса кода переменной длины. Параметр «рис» может использоваться для определения двоичного кода каждого входного значения. В усеченном двоичном коде параметр риса равен 0.
[119] Согласно некоторым вариантам осуществления, число максимального размера слияния для преобразования в двоичную форму индекса слияния устанавливается равным максимальному числу между MaxNumMergeCand и MaxNumIbcMergeCand. Поскольку в группе I-слайса/тайла значение MaxNumMergeCand не передается, MaxNumMergeCand может иметь предполагаемое значение 1 (т.е. минимальное возможное значение для MaxNumIbcMergeCand). Соответственно, когда MaxNumMergeCand не передается, значение six_minus_max_num_merge_cand предполагается равным 5, поскольку значение MaxNumMergeCand предполагается равным 1. Следовательно, в уравнении (1) MaxNumMergeCand равно 1, поскольку six_minus_max_num_merge_cand равно 5. В уравнении (2) значение MaxNumIbcMergeCand находится в диапазоне от 1 до 6 включительно.
[120] В таблице 2 показаны примеры синтаксиса и связанных преобразований в двоичную форму.
merge_data ()
regular_merge_flag [ ][ ]
FL
cMax = 1
mmvd_merge_flag [ ][ ]
FL
cMax = 1
mmvd_cand_flag [ ][ ]
FL
cMax = 1
mmvd_distance_idx [ ][ ]
TR
cMax = 7, cRiceParam = 0
mmvd_direction_idx [ ][ ]
FL
cMax = 3
ciip_flag [ ][ ]
FL
cMax = 1
merge_subblock_flag [ ][ ]
FL
cMax = 1
merge_subblock_idx [ ][ ]
TR
cMax = MaxNumSubblockMergeCand - 1, cRiceParam = 0
merge_triangle_split_dir [ ][ ]
FL
cMax = 1
merge_triangle_idx0 [ ][ ]
TR
cMax = MaxNumTriangleMergeCand - 1, cRiceParam = 0
merge_triangle_idx1 [ ][ ]
TR
cMax = MaxNumTriangleMergeCand - 2, cRiceParam = 0
merge_idx [ ][ ]
TR
cMax = Max (MaxNumMergeCand, MaxNumIbcMergeCand) - 1, cRiceParam = 0
Таблица 2
[121] Как проиллюстрировано в Таблице 2, преобразование в двоичную форму индекса слияния (т.е. merge_idx[][]) основано на том, превышает ли максимальное количество кандидатов режима слияния (т.е. MaxNumMergeCand) максимальное количество кандидатов IBC (т.е. MaxNumIbcMergeCand).
[122] Согласно некоторым вариантам осуществления диапазон MaxNumIbcMergeCand должен быть меньше или равен MaxNumMergeCand. Поскольку в группе I-слайса/тайла значение MaxNumMergeCand не передается, значение MaxNumMergeCand предполагается равным 6. Соответственно, в уравнении (1) значение six_minus_max_num_merge_cand предполагается равным 0, поскольку MaxNumMergeCand предполагается равным 6. В некоторых вариантах осуществления, когда передаваемое значение MaxNumIbcMergeCand больше, чем MaxNumMergeCand, MaxNumIbcMergeCand ограничивается до MaxNumMergeCand. Соответственно, в уравнении (2), если тип слайса – I, значение MaxNumIbcMergeCand должно быть в диапазоне от 1 до 6 включительно. Однако, если тип слайса – P или B, значение MaxNumIbcMergeCand находится в диапазоне от 1 до MaxNumMergeCand включительно. Соответственно, когда типом слайса является P или B (т.е. MaxNumMergeCand не передается), значение MaxNumIbcMergeCand может быть определено следующим образом: MaxNumIbcMergeCand = min (MaxNumIbcMergeCand, MaxNumMergeCand).
[123] На фиг. 12 проиллюстрирован вариант осуществления процесса декодирования видео, выполняемого видеодекодером, таким как видеодекодер (710). Процесс может начинаться на этапе (S1200), где принимается кодированный битовый поток видео, включающий в себя текущее изображение. Процесс переходит к этапу (S1202), на котором определяется заранее определенное условие, связанное с данными передачи, включенными в кодированный битовый поток видео.
[124] Процесс переходит к этапу (S1204), где на основе заранее определенного условия размер индекса, включенного в данные передачи для списка кандидатов векторных предикторов, устанавливается равным одному из максимального количества кандидатов режима слияния и количества кандидатов IBC. В качестве примера индекс может быть индексом слияния, включенным в кодированный битовый поток видео. В качестве примера заранее определенное условие включает в себя определение, закодирован ли текущий блок в режиме IBC. Если текущий блок закодирован в режиме IBC, размер индекса устанавливается равным MaxNumIbcMergeCand. Однако если текущий блок не закодирован в режиме IBC, размер индекса устанавливается равным MaxNumMergeCand.
[125] В качестве другого примера заранее определенное условие включает в себя определение, превышает ли максимальное количество кандидатов режима слияния максимальное количество кандидатов IBC. Если максимальное количество кандидатов режима слияния превышает максимальное количество кандидатов IBC, размер индекса устанавливается равным MaxNumMergeCand. Однако, если максимальное количество кандидатов режима слияния меньше максимального количества кандидатов IBC, размер индекса устанавливается равным MaxNumIbcMergeCand.
[126] Процесс переходит с этапа (S1204) на (S1206), где список кандидатов строится с помощью векторных предикторов. Например, если текущий блок кодируется в режиме слияния, список кандидатов является списком слияния, а векторные предикторы являются векторами движения. В другом примере, если текущий блок кодируется в режиме IBC, список кандидатов представляет собой список векторных предикторов блока. Процесс продолжается с этапа (S1208), на котором векторный предиктор из списка кандидатов извлекается в соответствии с индексом, значение которого не превышает определенный размер индекса. Например, значение индекса, который используется для извлечения векторного предиктора из списка кандидатов, не может превышать размер индекса, который определяется на этапе (S1204). Процесс переходит к этапу (S1210), где текущий блок декодируется в соответствии с извлеченным векторным предиктором.
[127] На фиг. 13 проиллюстрирован вариант осуществления процесса декодирования видео, выполняемого видеодекодером, таким как видеодекодер (710). Процесс может начинаться на этапе (S1300), где принимается кодированный битовый поток видео, включающий в себя текущее изображение. Процесс переходит к этапу (S1302), на котором данные передачи из кодированного битового потока видео извлекаются для текущего блока. Процесс переходит к этапу (S1304), чтобы определить, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока. Например, определяется, передается ли сигнал MaxNumMergeCand. Как обсуждалось выше, в некоторых примерах MaxNumMergeCand не передается для типов I-слайсов/тайлов и передается для типов P- или B-слайсов/тайлов.
[128] Процесс переходит на этап (S1306), где устанавливается максимальное количество кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока. Например, если MaxNumMergeCand не передается, значение MaxNumIbcMergeCand находится в диапазоне от 1 до 6 включительно. Однако если MaxNumMergeCand передается, значение MaxNumIbcMergeCand изменяется от 1 до MaxNumMergeCand включительно.
[129] В некоторых примерах единица кодирования содержит отсчеты компонентов яркости и цветности. Эти отсчеты компонента цветности могут иметь независимую или раздельную структуру дерева с разделением по сравнению с одним из компонентов яркости. В некоторых примерах отдельная структура дерева кодирования начинается с уровня CTU. Следовательно, возможно, что CU цветности (например, CU, которая содержит только два компонента цветности) может быть больше, чем аналог яркости CU сигнала цветности в соответствующем местоположении отсчета.
[130] Согласно некоторым вариантам осуществления, в первом способе, когда используется структура двойного дерева, блоки цветности могут кодироваться в режиме IBC, когда выполняются по меньшей мере следующие условия:
1. Для каждой области субблока в CU цветности совмещенная область яркости кодируется в режиме IBC.
2. Все совмещенные отсчеты области яркости для CU цветности имеют один и тот же вектор блока.
3. Полученный общий вектор блока для всей CU цветности является допустимым BV. Это означает, что этот BV указывает на уже восстановленную область в текущем изображении и в пределах заданной области ограничения для компонентов цветности.
[131] На основе первого способа сторона декодера сможет обрабатывать CU цветности как всю CU, а не как CU на основе субблока. Следовательно, использование единственного полученного BV из совмещенной области яркости (например, обычно верхнего левого угла CU) для декодирования CU является достаточным.
[132] Согласно некоторым вариантам осуществления, во втором способе, когда используется структура двойного дерева, могут использоваться различные условия, чтобы разрешить использование режима IBC цветности с структурой двойного дерева. В одном варианте осуществления блоки цветности могут кодироваться в режиме IBC, когда (i) все соответствующие отсчеты яркости всех отсчетов цветности принадлежат одному и тому же блоку кодирования яркости; и (ii) один и тот же блок кодирования яркости кодируется в режиме IBC. Например, это условие проверяется путем оценки двух углов CU цветности. Если соответствие яркости верхнего левого отсчета цветности и соответствие яркости нижнего правого отсчета цветности принадлежат одному и тому же блоку кодирования яркости, то вся соответствующая область яркости CU цветности принадлежит одному и тому же блоку кодирования яркости. В другом варианте осуществления блоки цветности могут кодироваться в режиме IBC при соответствующем кодировании яркости.
[133] На основе второго способа сторона декодера сможет обрабатывать CU цветности как всю CU, а не как CU на основе субблока. Следовательно, использование единственного полученного BV из совмещенной области яркости (обычно верхнего левого угла CU) для декодирования CU является достаточным.
[134] Согласно некоторым вариантам осуществления либо для первого способа, либо для второго способа, относящегося к структуре двойного дерева, следующие раскрытые неограничивающие варианты осуществления показывают, как передавать данные об использовании режима IBC цветности с двойным деревом, когда указанные выше условия встречаются либо в первом способе, либо во втором способе.
[135] В одном варианте осуществления вышеупомянутые ограничения для использования режима IBC для CU цветности с структурой двойного дерева реализованы таким образом, что флаг использования (например, ibc_flag) передается для каждой CU цветности, когда это применимо. Однако в этом варианте осуществления, только когда выполняются все условия для первого способа или все условия для второго способа, ibc_flag передается как истинный. В противном случае ibc_flag передается как ложный. В некоторых примерах, когда все условия выполняются либо для первого, либо для второго способа, ibc_flag также может передаваться как ложный в зависимости от того, как реализован кодер.
[136] В другом варианте осуществления вышеупомянутые ограничения для использования режима IBC для CU цветности с структурой двойного дерева реализуются так, что флаг использования (например, ibc_flag) вообще не передается. Например, для CU цветности со структурой двойного дерева, когда выполняются все условия для первого способа или второго способа, CU кодируется в режиме IBC, и ibc_flag выводится как истинный. В противном случае ibc_flag не передается и считается ложным.
[137] Методы, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг. 14 показана компьютерная система (1400), подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.
[138] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более центральными процессорами компьютера (ЦП), графическими процессорами (ГП) и т.п.
[139] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.
[140] Компоненты, показанные на фиг. 14 для компьютерной системы (1400), являются примерными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего раскрытия. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1400).
[141] Компьютерная система (1400) может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[142] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из следующих элементов (только по одному из каждого изображенного): клавиатура (1401), мышь (1402), трекпад (1403), сенсорный экран (1410), управляющая перчатка (не показана), джойстик (1405)), микрофон (1406), сканер (1407), камера (1408).
[143] Компьютерная система (1400) также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или нескольких пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1410), управляющей перчатки (не показана) или джойстика (1405), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1409), наушники (не показаны)), устройства вывода изображения (например, экраны (1410), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее – некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).
[144] Компьютерная система (1400) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1420) с CD/DVD или подобными носителями (1421), флэш-накопитель (1422), съемный жесткий диск или твердотельный накопитель (1423), ранее разработанные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не показаны) и т.п.
[145] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.
[146] Компьютерная система (1400) также может включать в себя интерфейс к одной или более коммуникационным сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т. д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т. д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (1449) (например, к портам USB компьютерной системы (1400)); другие обычно интегрированы в ядро компьютерной системы (1400) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1400) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.
[147] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (1440) компьютерной системы (1400).
[148] Ядро (1440) может включать в себя один или более центральных процессоров (ЦП) (1441), графических процессоров (ГП) (1442), специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (ППВМ) (1443), аппаратные ускорители для определенных задач (1444) и т. д. Эти устройства, наряду с постоянным запоминающим устройством (ПЗУ) (1445), оперативным запоминающим устройством (1446), внутренними ЗУ большой емкости, такими как внутренние жесткие диски, недоступные пользователю, твердотельные накопители и т.п. (1447), могут быть подключены через системную шину (1448). В некоторых компьютерных системах системная шина (1448) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных ЦП, ГП и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1448) ядра, либо через периферийную шину (1449). Архитектура периферийной шины включает PCI, USB и т.п.
[149] ЦП (1441), ГП (1442), ППВМ (1443) и ускорители (1444) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ (1445) или ОЗУ (1446). Переходные данные также могут храниться в ОЗУ (1446), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (1447). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть обеспечены за счет использования кэш-памяти, которая может быть тесно связана с одним или более ЦП (1441), ГП (1442), ЗУ большой емкости (1447), ПЗУ (1445), ОЗУ (1446) и т.п.
[150] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего раскрытия, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[151] В качестве примера, а не ограничения, компьютерная система, имеющая архитектуру (1400) и, в частности, ядро (1440), может обеспечивать функциональность в результате выполнения процессором(ами) (включая ЦП, ГП, ППВМ, ускорители и т.п.) программного обеспечения, размещенного на одном или нескольких материальных, машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенным хранилищем ядра (1440), которые имеют невременной характер, например, внутренним ЗУ большой емкости ядра (1447) или ПЗУ (1445). Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром (1440). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может побуждать ядро (1440) и, в частности, процессоры в нем (включая ЦП, ГП, ППВМ и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в ОЗУ (1446) и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (1444)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это уместно. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (ИС)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это уместно. Настоящее раскрытие включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.
Приложение A: Сокращения
JEM: объединенная исследовательская модель
VVC: универсальное кодирование видео
BMS: набор тестов
MV: вектор движения
HEVC: высокоэффективное видеокодирование
SEI: дополнительная расширенная информация
VUI: информация о свойствах видео
GOP: группа изображений
TU: единица преобразования
PU: единица предсказания
CTU: единица дерева кодирования
CTB: блок дерева кодирования
PB: блок предсказания
HRD: гипотетический эталонный декодер
SNR: соотношение сигнал-шум
CPU (ЦП): центральный процессор
GPU (ГП): графический процессор
CRT (ЭЛТ): электронно-лучевая трубка
LCD (ЖКД): жидкокристаллический дисплей
OLED: органический светоизлучающий диод
CD: компакт-диск
DVD: Цифровой видеодиск
ROM (ПЗУ): постоянное запоминающее устройство
RAM (ОЗУ): оперативное запоминающее устройство
ASIC: интегральная схема специального назначения
PLD: программируемое логическое устройство
LAN: локальная сеть
GSM: глобальная система мобильной связи
LTE: долгосрочное развитие
CANBus (CAN-шина): шина локальной сети контроллера
USB: универсальная последовательная шина
PCI: соединение периферийных компонентов
FPGA (ППВМ): программируемые пользователем вентильные матрицы
SSD: твердотельный накопитель
IC: интегральная схема
CU: единица кодирования
[152] Хотя это раскрытие описывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем раскрытия. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы раскрытия и, таким образом, находятся в пределах его сущности и объема правовой охраны.
[153] (1) Способ декодирования видео включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение; определение предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео; определение, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов, на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC); построение списка кандидатов с векторными предикторами; извлечение векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса; и декодирование текущего блока в соответствии с извлеченным векторным предиктором.
[154] (2) Способ декодирования видео согласно признаку (1), в котором предварительно определенное условие включает в себя определение, закодирован ли текущий блок в режиме IBC.
[155] (3) Способ декодирования видео согласно признаку (2), в котором в ответ на определение, что текущий блок закодирован в режиме IBC, устанавливают размер индекса на максимальное количество кандидатов IBC, и в ответ на определение, что текущий блок не закодирован в режиме IBC, устанавливают размер индекса на максимальное количество кандидатов режима слияния.
[156] (4) Способ декодирования видео согласно любому из признаков (1) – (3), в котором предварительно определенное условие включает в себя определение, превышает ли максимальное количество кандидатов режима слияния максимальное количество кандидатов IBC.
[157] (5) Способ декодирования видео согласно признаку (4), в котором в ответ на определение, что максимальное количество кандидатов режима слияния больше, чем максимальное количество кандидатов IBC, устанавливают размер индекса равным максимальному количеству кандидатов режима слияния, и в ответ на определение, что максимальное количество кандидатов режима слияния меньше, чем максимальное количество кандидатов IBC, устанавливают размер индекса на максимальное количество кандидатов IBC.
[158] (6) Способ декодирования видео включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение; извлечение данных передачи из кодированного битового потока видео для текущего блока; определение, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока; и установку максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.
[159] (7) Способ декодирования видео согласно признаку (6), в котором в ответ на определение, что максимальное количество кандидатов на слияние не включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до 6.
[160] (8) Способ декодирования видео согласно признаку (7), в котором в ответ на определение, что максимальное количество кандидатов на слияние включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до максимального количества кандидатов на слияние.
[161] (9) Устройство декодирования видео для декодирования видео включает в себя схему обработки, конфигурированную для приема кодированного битового потока видео, включающего в себя текущее изображение, определения предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео, определения, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC), построения списка кандидатов с векторными предикторами, извлечения векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса, и декодирования текущего блока в соответствии с извлеченным векторным предиктором.
[162] (10) Устройство декодирования видео согласно признаку (9), в котором предварительно определенное условие включает в себя схему обработки, конфигурированную для определения, закодирован ли текущий блок в режиме IBC.
[163] (11) Устройство декодирования видео согласно признаку (10), в котором в ответ на определение, что текущий блок закодирован в режиме IBC, схема обработки конфигурирована для установки размера индекса на максимальное количество кандидатов IBC, и в ответ на определение, что текущий блок не закодирован в режиме IBC, схема обработки конфигурирована для установки размера индекса на максимальное количество кандидатов режима слияния.
[164] (12) Устройство декодирования видео согласно любому из признаков (9) – (12), в котором предварительно определенное условие включает в себя определение, превышает ли максимальное количество кандидатов режима слияния максимальное количество кандидатов IBC.
[165] (13) Устройство декодирования видео согласно признаку (12), в котором в ответ на определение, что максимальное количество кандидатов режима слияния больше, чем максимальное количество кандидатов IBC, схема обработки дополнительно конфигурирована для установки размера индекса на максимальное количество кандидатов режима слияния, и в ответ на определение, что максимальное количество кандидатов режима слияния меньше, чем максимальное количество кандидатов IBC, схема обработки дополнительно конфигурирована для установки размера индекса на максимальное количество кандидатов IBC.
[166] (14) Устройство видеодекодера для декодирования видео, включающее в себя схему обработки, конфигурированную для приема кодированного битового потока видео, включающего в себя текущее изображение, извлечения данных передачи из кодированного битового потока видео для текущего блока, определения, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока и установки максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.
[167] (15) Видеодекодер согласно признаку (14), в котором в ответ на определение, что максимальное количество кандидатов на слияние не включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до 6.
[168] (16) Видеодекодер согласно признаку (15), в котором в ответ на определение, что максимальное количество кандидатов на слияние включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до максимального количества кандидатов на слияние.
[169] (17) Невременный машиночитаемый носитель информации, содержащий хранящиеся на нем инструкции, которые при выполнении процессором в видеодекодере побуждают процессор выполнять способ, содержащий прием кодированного битового потока видео, включающего в себя текущее изображение; определение предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео; определение, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC); построение списка кандидатов с векторными предикторами; извлечение векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса; и декодирование текущего блока в соответствии с извлеченным векторным предиктором.
[170] (18) Невременный машиночитаемый носитель информации согласно признаку (17), в котором предварительно определенное условие включает в себя определение, закодирован ли текущий блок в режиме IBC.
[171] (19) Невременный машиночитаемый носитель информации, содержащий хранящиеся на нем инструкции, которые при выполнении процессором в видеодекодере побуждают процессор выполнять способ, содержащий: прием кодированного битового потока видео, включающего в себя текущее изображение; извлечение данных передачи из кодированного битового потока видео для текущего блока; определение, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока; и установку максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.
[172] (20) Невременный машиночитаемый носитель информации согласно признаку (19), в котором в ответ на определение, что максимальное количество кандидатов на слияние не включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до 6.