СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО
METHOD AND DEVICE FOR VIDEO ENCODING

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[0001] В настоящей заявке испрашивается приоритет по заявке на патент США №16/851 052 "СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО", поданной 16 апреля 2020 г., в которой испрашивается приоритет по предварительной заявке США №62/836 598 "УСЛОВИЯ ПРИМЕНЕНИЯ DMVR/BDOF", поданной 19 апреля 2019 года. Полное содержание предшествующих заявок полностью включено в настоящее описание посредством ссылки.
Область техники, к которой относится изобретение
[0002] Настоящее изобретение описывает варианты осуществления, в основном относящиеся к кодированию видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Описание уровня техники, представленное в данном документе, предназначено для общего представления контекста изобретения. Работа названных в настоящее время изобретателей, в той мере, в какой она описана в этом разделе «Уровень техники», а также аспекты описания, которые в противном случае не могут считаться предшествующим уровнем техники на момент подачи заявки, ни прямо, ни косвенно не признаются в качестве известного уровня техники в отношении настоящего изобретения.
[0004] Кодирование и декодирование видео могут выполняться с использованием межкадрового предсказания с компенсацией движения. Несжатое цифровое видео может включать в себя серию изображений, при этом каждое изображение имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных отсчетов цветности. Серия изображений может иметь фиксированную или переменную частоту изображения (в разговорной речи также известную как частота кадров), например, 60 изображений в секунду или 60 Гц. Несжатое видео имеет значительные требования к битрейту. Например, для видео 1080р60 4: 2: 0 с частотой 8 бит на отсчет (разрешение отсчета яркости 1920×1080 при частоте кадров 60 Гц) требуется полоса пропускания, близкая к 1,5 Гбит/с. Час такого видео требует более 600 ГБ пространства памяти.
[0005] Одной из целей кодирования и декодирования видео может быть уменьшение избыточности входного видеосигнала посредством сжатия. Сжатие может помочь снизить вышеупомянутые требования к пропускной способности или пространству памяти, в некоторых случаях на два порядка или более. Могут использоваться как сжатие без потерь, так и сжатие с потерями, а также их комбинация. Сжатие без потерь относится к процедурам, в которых из сжатого исходного сигнала может быть восстановлена точная копия исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может не быть идентичным исходному сигналу, но искажение между исходным и восстановленным сигналами достаточно мало, чтобы сделать восстановленный сигнал пригодным для предполагаемого применения. В случае видео широко используется сжатие с потерями. Допустимая степень искажения зависит от приложения; например, для пользователей определенных потребительских приложений потоковой передачи допустимы более высокие искажения, чем для пользователи приложений вещательного телевидения. Достижимая степень сжатия может отражать следующее: более высокое допустимое/приемлемое искажение может давать более высокую степень сжатия.
[0006] Компенсация движения может представлять собой процедуру сжатия с потерями и может относиться к процедурам, в которых блок отсчетных данных из ранее восстановленного изображения или его части (опорное изображение) после пространственного сдвига в направлении, указанном при помощи вектора движения (далее MV), используется для предсказания нового реконструированного изображения или части изображения. В некоторых случаях опорное изображение может быть таким же, как восстанавливаемое в настоящий момент изображение. MV могут иметь два измерения X и Y или три измерения, третье из которых является показателем используемого опорного изображения (последнее, косвенно, может быть измерением времени).
[0007] В некоторых процедурах сжатия видео MV, применимый к определенной области отсчетных данных, может быть предсказан из других MV, например, из тех, которые относятся к другой области отсчетных данных, пространственно смежных с восстанавливаемой областью, и предшествующих этому MV в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования MV, тем самым устраняя избыточность и увеличивая степень сжатия, предсказание MV может работать эффективно, например, за счет того, что при кодировании входного видеосигнала, полученного с камеры (известного как естественное видео), существует статистическая вероятность того, что области, которые больше области, к которой применим один MV, перемещаются в аналогичном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием аналогичного вектора движения, полученного из векторов движения соседней области. Это приводит к тому, что MV, найденный для данной области, похож или совпадает с MV, предсказанным из окружающих MV, и который, в свою очередь, может быть представлен после энтропийного кодирования в меньшем количестве битов, чем то, которое было бы использовано при кодировании MV напрямую. В некоторых случаях предсказание MV может быть примером сжатия без потерь сигнала (а именно: MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях само предсказание MV может быть с потерями, например, из-за ошибок округления при вычислении предиктора из нескольких окружающих MV.
[0008] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. Н.265, «Высокоэффективное кодирование видео», декабрь 2016 г.). Из множества механизмов предсказания MV, которые предлагает Н.265, здесь описывается процедура, далее именуемая «пространственным слиянием».
[0009] Обращаясь к фиг. 1, текущий блок (101) содержит отсчеты, которые были обнаружены кодировщиком в процессе поиска движения, для предсказания из предыдущего блока того же размера, который был пространственно сдвинут.Вместо того, чтобы кодировать этот MV напрямую, MV может быть получен из метаданных, связанных с одним или несколькими опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с одним из пяти окружающих отсчетов, обозначенных А0, А1 и В0, B1, В2 (102 - 106 соответственно). В Н.265 предсказание MV может использовать предикторы из того же опорного изображения, что и соседний блок.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0010] Аспекты изобретения относятся к способам и устройствам для кодирования/декодирования видео. В некоторых примерах устройство для декодирования видео включает в себя схему приема и схему обработки. Например, схема обработки декодирует информацию предсказания текущего блока в текущем изображении из кодированного битового потока видео. Информация предсказания указывает режим интер-предсказания с потенциальным использованием процедуры уточнения, основанного на первом опорном изображении и втором опорном изображении. Затем схема обработки определяет, удовлетворено ли первое условие равного взвешивания компонентов цветности из первого опорного изображения и второго опорного изображения. В ответ на невыполнение первого условия равного взвешивания компонентов цветности из первого опорного изображения и второго опорного изображения, схема обработки отключает процедуру уточнения при восстановлении отсчета в текущем блоке.
[0011] В некоторых вариантах осуществления схема обработки отключает процедуру уточнения при восстановлении отсчета яркости в текущем блоке в ответ на невыполнение первого условия равного взвешивания компонентов цветности из первого опорного изображения и второго опорного изображения. В некоторых вариантах осуществления схема обработки определяет, удовлетворено ли второе условие равного взвешивания компонентов яркости из первого опорного изображения и второго опорного изображения. Затем схема обработки отключает процедуру уточнения при восстановлении отсчета яркости в текущем блоке в ответ на невыполнение по меньшей мере одного из первого условия равного взвешивания компонентов цветности и второго условия равного взвешивания компонентов яркости.
[0012] В некоторых вариантах осуществления схема обработки отключает процедуру уточнения при восстановлении отсчета цветности в текущем блоке в ответ на невыполнение первого условия равного взвешивания компонентов цветности из первого опорного изображения и второго опорного изображения.
[0013] Следует отметить, что процедура уточнения может включать в себя по меньшей мере одно из двунаправленного оптического потока (BDOF) и уточнения вектора движения на стороне декодера (DMVR).
[0014] В некоторых вариантах осуществления одно из первого опорного изображения и второго опорного изображения имеет больший порядковый номер изображения, чем текущее изображение, а другое из первого опорного изображения и второго опорного изображения имеет меньший порядковый номер изображения, чем текущее изображение.
[0015] В некоторых примерах схема обработки определяет невыполнение условия равного взвешивания компонентов цветности из первого опорного изображения и второго опорного изображения на основе по меньшей мере одного из первого флага для весового коэффициента цветности первого опорного изображения и второго флага для весового коэффициента цветности второго опорного изображения, не равного нулю.
[0016] Аспекты изобретения также относятся к невременному машиночитаемому носителю, на котором хранятся инструкции, которые при выполнении компьютером для декодирования видео предписывают компьютеру осуществить указанный способ декодирования видео.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0017] Дополнительные признаки, сущность и различные преимущества раскрытого объекта будут более очевидны из следующего подробного описания и прилагаемых чертежей, на которых:
[0018] Фиг. 1 - схематическая иллюстрация текущего блока и окружающих его кандидатов на пространственное слияние в одном примере.
[0019] Фиг. 2 - схематическая иллюстрация упрощенной блок-схемы коммуникационной системы (200) в соответствии с вариантом осуществления.
[0020] Фиг. 3 - схематическая иллюстрация упрощенной блок-схемы коммуникационной системы (300) в соответствии с вариантом осуществления.
[0021] Фиг. 4 - схематическая иллюстрация упрощенной блок-схемы декодера в соответствии с вариантом осуществления.
[0022] Фиг. 5 - схематическая иллюстрация упрощенной блок-схемы кодировщика в соответствии с вариантом осуществления.
[0023] Фиг. 6 показывает блок-схему кодировщика в соответствии с другим вариантом осуществления.
[0024] Фиг. 7 показывает блок-схему декодера в соответствии с другим вариантом осуществления.
[0025] Фиг. 8 показывает пример расширенной области единицы кодирования в двунаправленном оптическом потоке (BDOF).
[0026] Фиг. 9 показывает пример уточнения вектора движения на стороне декодера (DMVR).
[0027] Фиг. 10A-10В показывают списки условий для применения процедуры BDOF.
[0028] Фиг. 11А-11В показаны списки условий для применения процедуры DMVR.
[0029] Фиг. 12 показывает блок-схему, описывающую пример процесса согласно некоторым вариантам осуществления изобретения.
[0030] Фиг. 13 - схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0031] Фиг. 2 иллюстрирует упрощенную блок-схему коммуникационной системы (200) согласно варианту осуществления настоящего изобретения. Коммуникационная система (200) включает в себя множество терминальных устройств, которые могут коммуницировать друг с другом, например, через сеть (250). Например, коммуникационная система (200) включает в себя первую пару терминальных устройств (210) и (220), соединенных между собой через сеть (250). На фиг. 2, первая пара терминальных устройств (210) и (220) выполняет однонаправленную передачу данных. Например, терминальное устройство (210) может кодировать видеоданные (например, поток видеоизображений, которые захватываются терминальным устройством (210)) для передачи другому терминальному устройству (220) через сеть (250). Кодированные видеоданные могут быть переданы в форме одного или нескольких кодированных битовых потоков видео. Терминальное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения в соответствии с восстановленными видеоданными. Однонаправленная передача данных может быть общей в приложениях обслуживания мультимедиа и т.п.
[0032] В другом примере коммуникационная система (200) включает в себя вторую пару терминальных устройств (230) и (240), которые выполняют двунаправленную передачу кодированных видеоданных, которая может происходить, например, во время видеоконференцсвязи. Для двунаправленной передачи данных, например, каждое терминальное устройство из терминальных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных терминальным устройством) для передачи на другое терминальное устройство среди терминальных устройств (230) и (240) через сеть (250). Каждое терминальное устройство из терминальных устройств (230) и (240) также может принимать кодированные видеоданные, переданные другим терминальным устройством из терминальных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений и может отображать видеоизображения на доступном устройстве отображения в соответствии с восстановленными видеоданными.
[0033] На фиг. 2, например, терминальные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но принципы настоящего изобретения не могут быть ограничены этим. Варианты осуществления настоящего изобретения находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые передают кодированные видеоданные между терминальными устройствами (210), (220), (230) и (240), включая, например, проводные (проводные) и/или беспроводные коммуникационные сети. Коммуникационная сеть (250) может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Характерные сети включают телекоммуникационные сети, локальные сети, сети широкого охвата и/или Интернет. Для целей настоящего описания архитектура и топология сети (250) могут быть несущественными для работы настоящего изобретения, если только это не пояснено ниже.
[0034] Фиг. 3 иллюстрирует, в качестве примера приложения для раскрытого объекта, размещение кодировщика видео и декодера видео в среде потоковой передачи. Раскрытый объект может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т.п., и так далее.
[0035] Система потоковой передачи может включать в себя подсистему (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 Н.265. В примере разрабатываемый стандарт кодирования видео неофициально известен как универсальное кодирование видео (VVC). Раскрытый объект может использоваться в контексте VVC.
[0036] Следует отметить, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя декодер видео (не показан), а электронное устройство (330) также может включать в себя кодировщик видео (не показан).
[0037] Фиг. 4 показывает блок-схему декодера (410) видео согласно варианту осуществления настоящего изобретения. Декодер (410) видео может быть включен в электронное устройство (430). Электронное устройство (430) может включать в себя приемник (431) (например, приемную схему). Декодер (410) видео может использоваться вместо декодера (310) видео в примере с фиг. 3.
[0038] Приемник (431) может принимать одну или несколько кодированных последовательностей видео, которые должны быть декодированы декодером (410) видео; в том же или другом варианте осуществления - по одной кодированной последовательности видео за раз, где декодирование каждой кодированной последовательности видео выполняется независимо от других кодированных последовательностей видео. Кодированная последовательность видео может быть принята из канала (401), который может быть аппаратной/программной связью с устройством хранения, хранящим кодированные видеоданные. Приемник (431) может принимать закодированные видеоданные с другими данными, например, закодированные аудиоданные и/или вспомогательные потоки данных, которые могут быть отправлены их соответствующим используемым объектам (не изображены). Приемник (431) может отделять кодированную последовательность видео от других данных. Для борьбы с джиттером сети буферная память (415) может быть подключена между приемником (431) и энтропийным декодером /синтаксическим анализатором (420) (далее «анализатор (420)»). В некоторых приложениях буферная память (415) является частью декодера (410) видео. В других случаях она может находиться вне декодера (410) видео (не показана). В других случаях буферная память (не изображена) может быть вне декодера (410) видео, например, для борьбы с джиттером сети, и, кроме того, другая буферная память (415) может быть внутри декодера (410) видео, например, для обработки синхроннизированности воспроизведения. Когда приемник (431) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемостью, или из изосинхронной сети, буферная память (415) может не понадобиться или может быть небольшой. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буферная память (415), которая может быть сравнительно большой и может быть преимущественно адаптивного размера, и может, по крайней мере, частично быть реализована в операционной системе или аналогичных элементах (не изображен) вне декодера (410) видео.
[0039] Декодер (410) видео может включать в себя синтаксический анализатор (420) для восстановления символов (421) из кодированной последовательности видео. Категории этих символов включают в себя информацию, используемую для управления работой декодера (410) видео, и потенциально информацию для управления устройством отображения, таким как устройство (412) отображения (например, экран дисплея), которое не является неотъемлемой частью электронного устройство (430), но может быть соединено с электронным устройством (430), как показано на фиг.4. Управляющая информация для устройства (устройств) отображения может быть в форме фрагментов набора параметров информации для дополнительной оптимизации (сообщения SEI) или информации о пригодности видео (VUI) (не изображены). Синтаксический анализатор (420) может анализировать синтаксис/энтропийно декодировать принятую кодированную последовательность видео. Кодирование закодированной последовательности видео может осуществляться в соответствии с технологией или стандартом кодирования видео и может следовать различным принципам, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Синтаксический анализатор (420) может извлекать из кодированной последовательности видео набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в декодере видео на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, фрагменты, секции, макроблоки, единицы кодирования (CU), блоки, единиц преобразования (TU), единицы предсказания (PU) и так далее. Синтаксический анализатор (420) также может извлекать из кодированной последовательности видео информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.
[0040] Синтаксический анализатор (420) может выполнять операцию энтропийного декодирования / синтаксического анализа последовательности видео, принятой из буферной памяти (415), чтобы создавать символы (421).
[0041] Восстановление символов (421) может включать в себя несколько различных узлов в зависимости от типа кодированного видеоизображения или его частей (таких как: интер- и интра- изображение, интер- и интра- блок) и других факторов. То, какие единицы задействованы и как, можно контролировать с помощью управляющей информации подгруппы, которая была синтактически проанализирована из кодированной последовательности видео с помощью синтактического анализатора (420). Поток такой информации управления подгруппой между синтаксическим анализатором (420) и несколькими узлами ниже не показан для ясности.
[0042] Помимо уже упомянутых функциональных узлов, декодер (410) видео может быть концептуально разделен на ряд функциональных узлов, как описано ниже. В практической реализации в условиях коммерческих ограничений многие из этих узлов тесно взаимодействуют друг с другом и могут, по меньшей мере частично, быть интегрированы друг в друга. Однако для целей описания раскрытого объекта уместно концептуальное разделение на функциональные узлы, приведенные ниже.
[0043] Первым узлом является узел (451) масштабирования/обратного преобразования. Узел (451) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включающую то, какое преобразование используется, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в виде символа или символов (421) от синтактического анализатора (420). Узел (451) масштабирования/обратного преобразования может выводить блоки, содержащие отсчетные значения, которые могут быть введены в агрегатор (455).
[0044] В некоторых случаях выходные отсчеты блока (451) масштабирования/обратного преобразования могут относиться к интра-кодированному блоку; то есть, блоку, не использующему информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена узлом (452) интра-кадрового предсказания. В некоторых случаях узел (452) интра-кадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, выбранную из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (455), в некоторых случаях, добавляет для каждого отсчета, информацию предсказания, сгенерированную узлом (452) интра-предсказания, к выходной отсчетной информации, предоставляемой узлу (451) масштабирования/обратного преобразования.
[0045] В других случаях выходные отсчеты узла (451) масштабирования/обратного преобразования могут относиться к интер-кодированному блоку и, возможно, с компенсацией движения. В таком случае узел (453) предсказания с компенсацией движения может обращаться к памяти (457) опорных изображений, чтобы отбирать отсчеты, используемые для предсказания. После компенсации движения в отношении отобранных отсчетов в соответствии с символами (421), относящимися к указанному блоку, эти отсчеты могут быть добавлены агрегатором (455) к выходным данным узла (451) масштабирования/обратного преобразования (в данном случае называются остаточными отсчетами или остаточным сигналом), чтобы генерировать выходную отсчетную информацию. Адреса в памяти (457) опорных изображений, откуда узел (453) предсказания с компенсацией движения отбирает отсчеты предсказания, могут управляться векторами движения, доступными узлу (453) предсказания с компенсацией движения в форме символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию отсчетных значений, отобранных из памяти (457) опорных изображений, когда используются точные векторы движения подотсчета, механизмы предсказания вектора движения и так далее.
[0046] Выходные отсчеты агрегатора (455) могут подвергаться различным процедурам контурной фильтрации в узле (456) контурной фильтрации. Технологии сжатия видео могут включать в себя технологии внутриконтурной фильтрации, которые управляются параметрами, включенными в кодированную последовательность видео (также называемую кодированным битовым потоком видео) и предоставляемые узлу (456) контурной фильтрации в виде символов (421) из синтактического анализатора (420), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной последовательности видео, а также могут реагировать на ранее восстановленные и подвергнутые контурной фильтрации отсчетные значения.
[0047] Выходной сигнал узла (456) контурной фильтрации может быть потоком отсчетов, который может быть выведен на устройство (412) отображения, а также сохранен в памяти (457) опорных изображений для использования в будущем межкадровом предсказании.
[0048] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. Например, после того, как кодированное изображение, соответствующее текущему изображению, полностью восстановлено и кодированное изображение было идентифицировано в качестве опорного изображения (например, синтаксическим анализатором (420)), буфер (458) текущего изображения может стать частью памяти (457) опорных изображений, и свежий буфер текущего изображения может быть перераспределен перед началом восстановления следующего кодированного изображения.
[0049] Декодер (410) видео может выполнять операции декодирования согласно заранее определенной технологии сжатия видео в стандарте, например ITU-T Rec. Н.265 Кодированная последовательность видео может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что кодированная последовательность видео соответствует как синтаксису технологии или стандарта сжатия видео, так и профилям, задокументированным в технологии или стандарте сжатия видео. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для соответствия может быть необходимым, чтобы сложность кодированной последовательности видео находилась в границах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную отсчетную частоту восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены спецификациями гипотетического опорного декодера (Hypothetical Reference Decoder, HRD) и метаданными для управления буфером HRD, передаваемыми в кодированной последовательности видео.
[0050] В варианте осуществления приемник (431) может принимать дополнительные (избыточные) данные с закодированным видео. Дополнительные данные могут быть включены в качестве части кодированной последовательности или последовательностей видео. Дополнительные данные могут использоваться декодером (410) видео для надлежащего декодирования данных и/или для более точного восстановления исходных данных видео. Дополнительные данные могут быть в форме, например, временных, пространственных уровней или уровней улучшения отношения сигнал/шум (SNR), избыточных секций, избыточных изображений, кодов прямого исправления ошибок и так далее.
[0051] Фиг. 5 показывает блок-схему кодировщика (503) видео согласно варианту осуществления настоящего изобретения. Кодировщик (503) видео включен в электронное устройство (520). Электронное устройство (520) включает передатчик (540) (например, передающую схему). Кодировщик (503) видео может использоваться вместо кодировщика (303) видео на примере с фиг.3.
[0052] Кодировщик (503) видео может принимать отсчеты видео от источника (501) видео (который не является частью электронного устройства (520) в примере с фиг.5), который может захватывать видеоизображения для кодирования с помощью кодировщика (503) видео. В другом примере источник (501) видео является частью электронного устройства (520).
[0053] Источник (501) видео может предоставить исходную последовательность видео для кодирования посредством кодировщика (503) видео в форме потока цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру взятия отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе обслуживания мультимедиа источник (501) видео может быть запоминающим устройством, хранящим предварительно подготовленное видео. В системе видеоконференцсвязи источник (501) видео может быть камерой, которая захватывает локальную информацию изображения в виде последовательности видео. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или несколько отсчетов в зависимости от используемой структуры взятия отсчетов, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже сфокусировано на отсчетах.
[0054] Согласно варианту осуществления кодировщик (503) видео может кодировать и сжимать изображения исходной последовательности видео в кодированную последовательность (543) видео в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными узлами, как описано ниже, и функционально связан с другими функциональными узлами. Соединение не изображено для ясности. Параметры, устанавливаемые контроллером (550), могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда процедур оптимизации скорость-искажение…), размер изображения, разметка группы изображений (GOP), максимальный диапазон поиска вектора движения и так далее. Контроллер (550) может быть сконфигурирован так, чтобы иметь другие подходящие функции, которые относятся к кодировщику (503) видео, оптимизированному для определенной конфигурации системы.
[0055] В некоторых вариантах осуществления кодировщик (503) видео сконфигурирован для работы в контуре кодирования. В качестве упрощенного описания, в примере, контур кодирования может включать в себя исходный кодировщик (530) (например, ответственный за создание символов, например, потока символов, на основе входного изображения, которое должно быть кодировано, и опорного изображения или изображений), и (локальный) декодер (533), встроенный в кодировщик (503) видео. Декодер (533) восстанавливает символы для создания отсчетных данных аналогично тому, как также может создавать (удаленный) декодер (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытой сущности изобретения). Восстановленный поток отсчетов (отсчетные данные) вводится в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое в памяти (534) опорных изображений также является точным до бита между локальным кодировщиком и удаленным кодировщиком. Иными словами, часть предсказания кодировщика «видит» в качестве отсчетов опорного изображения точно такие же отсчетные значения, которые декодер «увидит» при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) также используется в некоторых смежных областях техники.
[0056] Функционирование «локального» декодера (533) может быть таким же, как у «удаленного» декодера, как например декодера (410) видео, который уже был подробно описан выше со ссылкой на фиг. 4. Однако, кратко ссылаясь также на фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в закодированную последовательность видео посредством энтропийного кодировщика (545) и синтаксического анализатора (420) может осуществляться без потерь, части энтропийного декодирования декодера (410) видео, включая буферную память (415) и синтаксический анализатор (420) могут не быть полностью реализованы в локальном декодере (533).
[0057] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме синтаксического анализа/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать, в по существу идентичной функциональной форме, в соответствующем кодировщике. По этой причине раскрытый объект фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[0058] В процессе работы, в некоторых примерах, исходный кодировщик (530) может выполнять кодирование с предсказанием с компенсацией движения, которое с предсказанием кодирует входное изображение со ссылкой на одно или несколько ранее кодированных изображений из последовательности видео, которые были названы «опорными изображениями». Таким образом, подсистема (532) кодирования кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве опоры или опор предсказания для входного изображения.
[0059] Локальный декодер (533) видео может декодировать кодированные видеоданные изображений, которые могут быть обозначены как опорные изображения, на основе символов, созданных исходным кодировщиком (530). Операции подсистемы (532) кодирования могут преимущественно представлять собой процессы с потерями. Когда кодированные видеоданные могут быть декодированы в декодере видео (не показан на фиг.5), восстановленная последовательность видео обычно может быть копией исходной последовательности видео с некоторыми ошибками. Локальный декодер (533) видео копирует процессы декодирования, которые могут выполняться декодером видео на опорных изображениях, и может обеспечивать сохранение восстановленных опорных изображений в кэше (534) опорных изображений. Таким образом, кодировщик (503) видео может локально хранить копии восстановленных опорных изображений, которые имеют общее содержимое, в качестве восстановленных опорных изображений, которые будут получены декодером видео на дальнем конце (при отсутствии ошибок передачи).
[0060] Предиктор (535) может выполнять поиски с предсказанием для подсистемы (532) кодирования. То есть, для нового изображения, которое должно быть кодировано, предиктор (535) может искать в памяти (534) опорных изображений отсчетные данные (как возможные блоки опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и т.д., которые могут служить подходящей опорой предсказания для новых изображений. Предиктор (535) может работать на основе "отсчетный блок на пиксельный блок", чтобы найти соответствующие опоры предсказания. В некоторых случаях, как определено результатами поиска, полученными предиктором (535), входное изображение может иметь опоры предсказания, взятые из множества опорных изображений, сохраненных в памяти (534) опорных изображений.
[0061] Контроллер (550) может управлять операциями кодирования исходного кодировщика (530), включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0062] Выходные данные всех вышеупомянутых функциональных узлов могут подвергаться энтропийному кодированию в энтропийном кодировщике (545). Энтропийный кодировщик (545) переводит символы, сгенерированные различными функциональными узлами, в закодированную последовательность видео путем сжатия без потерь символов согласно таким технологиям, как кодирование Хаффмана, кодирование с переменной длиной, арифметическое кодирование и так далее.
[0063] Передатчик (540) может буферизовать кодированные последовательности видео, созданные энтропийным кодировщиком (545), чтобы подготовить к передаче через коммуникационный канал (560), который может представлять собой аппаратное / программное соединение с запоминающим устройством, которое будет хранить закодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из кодировщика (503) видео с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[0064] Контроллер (550) может управлять работой кодировщика (503) видео. Во время кодирования контроллер (550) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на процедуры кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов изображений:
[0065] Интра-изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы интра-изображений, включая, например, изображения независимой очистки декодера («IDR»). Специалисту известны эти варианты I-изображений и их соответствующие приложения и особенности.
[0066] Предсказуемое изображение (Р-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интра-предсказания или интер-предсказания с использованием не более одного вектора движения и опорного индекса для предсказания отсчетных значений каждого блока.
[0067] Изображение с двунаправленным предсказанием (В-изображение) может быть таким, которое может быть закодировано и декодировано с использованием интра-предсказания или интер-предсказания с использованием не более двух векторов движения и опорных индексов для предсказания отсчетных значений каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[0068] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодироваться на поблочной основе. Блоки могут кодироваться с предсказанием с опорой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки из I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием с опорой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интра-предсказание). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания с опорой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания с опорой на одно или два ранее кодированных опорных изображения.
[0069] Кодировщик (503) видео может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, например ITU-T Rec. Н.265 В своей работе кодировщик (503) видео может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной последовательности видео. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[0070] В варианте осуществления передатчик (540) может передавать дополнительные данные с закодированным видео. Исходный кодировщик (530) может включать такие данные как часть кодированной последовательности видео. Дополнительные данные могут содержать временные/пространственные уровни/уровни улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и секции, сообщения SEI, фрагменты набора параметров VUI и так далее.
[0071] Видео может быть захвачено как множество исходных изображений (видеоизображений) во временной последовательности. Интра-кадровое предсказание (часто сокращенно называемое интра-предсказанием) использует пространственную корреляцию в данном изображении, а интер-кадровое предсказание использует (временную или другую) корреляцию между изображениями. В примере конкретное изображение при кодировании/декодировании, которое упоминается как текущее изображение, разбивается на блоки. Когда блок в текущем изображении подобен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может быть закодирован вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования нескольких опорных изображений.
[0072] В некоторых вариантах осуществления при межкадровом предсказании может использоваться процедура двунаправленного предсказания. Согласно процедуре двунаправленного предсказания, используются два опорных изображения, такие как первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может быть кодирован первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан комбинацией первого опорного блока и второго опорного блока.
[0073] Кроме того, процедура режима слияния может использоваться в межкадровом предсказании для повышения эффективности кодирования.
[0074] Согласно некоторым вариантам осуществления изобретения, предсказание, такое как интер-кадровое предсказание и интра-кадровое предсказание, выполняются в блочных единицах. Например, в соответствии со стандартом HEVC изображение в последовательности видеоизображений разделяется на единицы кодового дерева (CTU) для сжатия, единицы CTU в изображении имеют одинаковый размер, например 64×64 пикселей, 32×32 пикселей или 16×16 пикселей. В целом, CTU включает в себя три блока кодового дерева (блоки СТВ), которые представляют собой один СТВ яркости и два СТВ цветности. Каждый CTU может быть рекурсивно квадродеревно разделен на одну или несколько единиц кодирования (CU). Например, CTU размером 64×64 пикселей можно разделить на один CU из 64×64 пикселей, или 4 CU из 32×32 пикселей, или 16 CU из 16×16 пикселей. В примере каждый CU анализируется для определения типа предсказания для CU, такого как тип интра-предсказания или тип интер-предсказания. CU разделяется на одну или несколько единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. Обычно каждый PU включает в себя блок предсказания яркости (РВ) и два РВ цветности. В варианте осуществления операция предсказания при кодировании (кодировании/декодировании) выполняется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, таких как 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[0075] Фиг. 6 показывает схему кодировщика (603) видео согласно другому варианту осуществления изобретения. Кодировщик (603) видео сконфигурирован для приема блока обработки (например, блока предсказания) отсчетных значений в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое является частью кодированной последовательности видео. В одном примере кодировщик (603) видео используется вместо кодировщика (303) видео в примере с фиг. 3.
[0076] В примере HEVC, кодировщик (603) видео принимает матрицу отсчетных значений для блока обработки, такого как блок предсказания из 8×8 отсчетов и т.п. Кодировщик (603) видео определяет, лучше ли кодируется блок обработки, используя интра-режим, интер-режим или режим двунаправленного предсказания, используя, например, оптимизацию частота-искажение. Когда блок обработки должен быть кодирован в интрарежиме, кодировщик (603) видео может использовать процедуру интра-предсказания для кодирования блока обработки в кодированное изображение; и когда блок обработки должен быть закодирован в интер-режиме или режиме двунаправленного предсказания, кодировщик (603) видео может использовать процедуру интер-предсказания или двунаправленного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях кодирования видео режим слияния может быть подрежимом межкадрового предсказания, в котором вектор движения выводится из одного или нескольких предикторов вектора движения без преимущества кодированной компоненты вектора движения вне предикторов. В некоторых других технологиях кодирования видео может присутствовать компонент вектора движения, применимый к рассматриваемому блоку. В одном примере кодировщик (603) видео включает в себя другие компоненты, такие как модуль выбора режима (не показан), для определения режима блоков обработки.
[0077] На примере с фиг. 6, кодировщик (603) видео включает в себя интер-кодировщик (630), интра-кодировщик (622), остаточный вычислитель (623), переключатель (626), остаточный кодировщик (624), общий контроллер (621), и энтропийный кодировщик (625), соединенные вместе, как показано на фиг. 6.
[0078] Интер-кодировщик (630) сконфигурирован для приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или несколькими опорными блоками в опорных изображениях (например, блоков в предыдущих изображениях и последующих изображениях), генерации информации интер-предсказания (например, описание избыточной информации согласно процедуре интер-кодирования, векторов движения, информации режима слияния) и вычисления результатов интер-предсказания (например, блок предсказания) на основе информации интер-предсказания с использованием любой подходящей процедуры. В некоторых примерах опорные изображения являются декодированными опорными изображениями, которые декодируются на основе кодированной видеоинформации.
[0079] Интра-кодировщик (622) сконфигурирован для приема отсчетов текущего блока (например, блока обработки), в некоторых случаях сравнения блока с блоками, уже закодированными в том же изображении, генерирования квантованных коэффициенты после преобразования, а в некоторых случаях также информации интра-предсказания (например, информации интра-предсказания о направлении согласно одному или нескольким процедурам интра-кодирования). В одном примере интра-кодировщик (622) также вычисляет результаты интра-предсказания (например, предсказанный блок) на основе информации интра-предсказания и опорных блоков в одном и том же изображении.
[0080] Общий контроллер (621) сконфигурирован для определения общих данных управления и для управления другими компонентами кодировщика (603) видео на основе общих данных управления. В одном примере общий контроллер (621) определяет режим блока и подает управляющий сигнал на переключатель (626) на основе режима. Например, когда режим является интра-режимом, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат интра-режима для использования остаточным вычислителем (623), и управляет энтропийным кодировщиком (625), чтобы выбрать информацию интра-предсказания и включить информацию интра-предсказания в битовый поток; а когда режимом является интер-режим, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат интер-предсказания для использования остаточным вычислителем (623), и управляет энтропийным кодировщиком (625), чтобы выбрать информацию интер-предсказания и включить информацию интерпредсказания в битовый поток.
[0081] Остаточный вычислитель (623) сконфигурирован для вычисления разницы (остаточных данных) между принятым блоком и результатами предсказания, выбранными из интра-кодировщика (622) или интер-кодировщика (630). Остаточный кодировщик (624) сконфигурирован для работы на основе остаточных данных, чтобы кодировать остаточные данные, чтобы генерировать коэффициенты преобразования. В одном примере остаточный кодировщик (624) сконфигурирован для преобразования остаточных данных из пространственной области в частотную область и генерирования коэффициентов преобразования. Коэффициенты преобразования затем подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления кодировщик (603) видео также включает в себя остаточный декодер (628). Остаточный декодер (628) сконфигурирован для выполнения обратного преобразования и генерации декодированных остаточных данных. Декодированные остаточные данные могут подходящим образом использоваться интра-кодировщиком (622) и интер-кодировщиком (630). Например, интер-кодировщик (630) может генерировать декодированные блоки на основе декодированных остаточных данных и информации интер-предсказания, а интра-кодировщик (622) может генерировать декодированные блоки на основе декодированных остаточных данных и информации интра-предсказания. Декодированные блоки соответствующим образом обрабатываются для генерирования декодированных изображений, и декодированные изображения могут быть буферизованы в схеме памяти (не показана) и использоваться в качестве опорных изображений в некоторых примерах.
[0082] Энтропийный кодировщик (625) сконфигурирован для форматирования битового потока, чтобы включить в него закодированный блок. Энтропийный кодировщик (625) сконфигурирован для включения различной информации в соответствии с подходящим стандартом, таким как стандарт HEVC. В одном примере энтропийный кодировщик (625) сконфигурирован для включения общих данных управления, выбранной информации предсказания (например, информации предсказания предсказания или информации интер-предсказания), остаточной информации и другой подходящей информации в битовом потоке. Следует отметить, что согласно раскрытому объекту при кодировании блока в подрежиме слияния либо интер-режима, либо режима двунаправленного предсказания, остаточная информация отсутствует.
[0083] Фиг. 7 показывает схему кодировщика (710) видео согласно другому варианту осуществления изобретения. Кодер (710) видео сконфигурирован для приема кодированных изображений, которые являются частью кодированной последовательности видео, и декодирования кодированных изображений для создания восстановленных изображений. В одном примере декодер (710) видео используется вместо декодера (310) видео в примере с фиг. 3.
[0084] На фиг. 7, декодер (710) видео включает в себя энтропийный декодер (771), интер-декодер (780), остаточный декодер (773), модуль (774) восстановления и интра-декодер (772), соединенные вместе, как показано на фиг. 7.
[0085] Энтропийный декодер (771) может быть сконфигурирован для восстановления из кодированного изображения определенных символов, которые представляют элементы синтаксиса, из которых состоит кодированное изображение. Такие символы могут включать в себя, например, режим, в котором кодируется блок (такой как, например, интра-режим, интер-режим, режим двунаправленного предсказания, последние два в подрежиме слияния или другом подрежиме), информацию предсказания (такую как, например, информацию интра-предсказания или информацию интерпредсказания), которая может идентифицировать конкретный отсчет или метаданные, которые используются для предсказания интра-декодером (772) или интер-декодером (780), соответственно, остаточную информацию в форме, например, квантованных коэффициентов преобразования и т.п.В одном примере, когда режимом предсказания является режим интер- или двунаправленного предсказания, информация интерпредсказания предоставляется в интер-декодер (780); и когда типом предсказания является тип интра-предсказания, информация интра-предсказания предоставляется интра-декодеру (772). Остаточная информация может подвергаться обратному квантованию и предоставляется остаточному декодеру (773).
[0086] Интер-декодер (780) сконфигурирован для приема информации интерпредсказания и генерации результатов интер-предсказания на основе информации интерпредсказания.
[0087] Интра-декодер (772) сконфигурирован для приема информации интра-предсказания и генерации результатов предсказания на основе информации интра-предсказания.
[0088] Остаточный декодер (773) сконфигурирован для выполнения обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Остаточный декодер (773) может также потребовать определенную управляющую информацию (чтобы включить параметр (QP) квантователя), и эта информация может быть предоставлена энтропийным декодером (771) (путь данных не показан, поскольку это может быть только управляющая информация небольшого объема).
[0089] Модуль (774) восстановления сконфигурирован для объединения в пространственной области остатка, выводимого остаточным декодером (773), и результатов предсказания (выводимых модулями интер- или интра-предсказания, в зависимости от случая) для формирования восстановленного блока, который может быть частью восстановленного изображения, которое, в свою очередь, может быть частью восстановленного видео. Следует отметить, что для улучшения визуального качества могут выполняться другие подходящие операции, такие как операция разделения блоков и т.п.
[0090] Следует отметить, что кодировщики (303), (503) и (603) видео и декодеры (310), (410) и (710) видео могут быть реализованы с использованием любой подходящей процедуры. В варианте осуществления кодировщики (303), (503) и (603) видео и декодеры (310), (410) и (710) видео могут быть реализованы с использованием одной или нескольких интегральных схем. В другом варианте осуществления кодировщики (303), (503) и (503) видео и декодеры (310), (410) и (710) видео могут быть реализованы с использованием одного или нескольких процессоров, которые выполняют программные инструкции.
[0091] Аспекты настоящего изобретения обеспечивают условия для применения уточнения вектора движения на стороне декодера (DMVR) и/или двунаправленного оптического потока (BDOF).
[0092] Различные стандарты кодирования, такие как HEVC, VVC и т.п., разработаны для включения новых процедур.
[0093] В некоторых примерах VVC для каждого интер-предсказанного CU параметры движения включают в себя векторы движения, индексы опорных изображений и индекс использования списка опорных изображений, а также дополнительную информацию, необходимую для новой функции кодирования VVC, которая будет использоваться для генерирования отсчетов с интер-предсказанием. Параметры движения могут передаваться явным или неявным образом. В примере, когда CU кодируется в режиме пропуска, CU ассоциируется с одним PU и не имеет значимых остаточных коэффициентов, кодированной дельты вектора движения или индекса опорного изображения. В другом примере указан режим слияния, при котором параметры движения для текущего CU получаются из соседних CU, включая пространственные и временные кандидаты и дополнительные расписания, введенные в VVC. Режим слияния может применяться к любому интер-предсказанной CU, а не только к режиму пропуска. Альтернативой режиму слияния является явная передача параметров движения, где вектор движения, соответствующий индекс опорного изображения для каждого списка опорных изображений и флаг использования списка опорных изображений и другая необходимая информация передаются явно для каждой CU.
[0094] Помимо функций интер-кодирования в HEVC, тестовая модель VVC 3 (VTM3) включает ряд новых и усовершенствованных инструментов кодирования с интерпредсказанием, таких как расширенное предсказание слияния, режим слияния с разностью векторов движения (MMVD), предсказание с компенсацией аффинного движения, субблочный временной предиктор вектора движения (SbTMVP), предсказание треугольного разбиения, комбинированное интер- и интра-предсказание (СИР) и т.п. Некоторые особенности вышеупомянутых инструментов кодирования с интерпредсказанием описаны в настоящем изобретении.
[0095] Согласно некоторым аспектам изобретения, в интер-предсказании используется процедура уточнения движения, которая называется режимом двунаправленного оптического потока (BDOF). BDOF также упоминается как BIO в некоторых примерах. BDOF используется для уточнения предсказанного в режиме двунаправленного предсказания сигнала CU на уровне субблока 4×4. BDOF применяется к CU, когда CU удовлетворяет следующим условиям: 1) высота CU не равна 4, и CU имеет размер не 4×8, 2) CU не кодирован с использованием аффинного режима или режима слияния ATMVP; 3) CU кодирован с использованием режима «истинного» двунаправленного предсказания, то есть, одно из двух опорных изображений предшествует текущему изображению в порядке отображения, а другое следует после текущего изображения в порядке отображения. BDOF применяется только к компоненту яркости в некоторых примерах.
[0096] Уточнение движения в режиме BDOF основано на концепции оптического потока, которая предполагает, что движение объекта плавное. Для каждого субблока 4×4 уточнение движения () вычисляется путем минимизации разницы между отсчетами предсказания L0 и L1. Затем уточнение движения используется для настройки предсказанных в режиме двунаправленного предсказания отсчетных значений в субблоке 4×4. Следующие этапы применяются в процессе BDOF.
[0097] Во-первых, горизонтальный и вертикальный градиенты  и, , двух сигналов предсказания вычисляются путем прямого вычисления разницы между двумя соседними отсчетами, т.е.
(k)
где I(i, j) - отсчетное значение в координате (i, j) сигнала предсказания в списке k, k=0,1.
1
2
3
5
6
[0098] Затем авто- и кросс-корреляция градиентов, S, S, S, S и S, вычисляются как
где
где Ω - окно 6×6 вокруг субблока 4×4.
[0099] Затем уточнение движения () выводится с использованием условий кросс- и авто- корреляции, используя следующее:
где  и [⋅] функция уровня.
[0100] На основе уточнения движения и градиентов для каждого отсчета в субблоке 4×4 вычисляется следующая корректировка:
[0101] Наконец, отсчеты BDOF, относящиеся к CU, вычисляются путем корректировки отсчетов двунаправленного предсказания, следующим образом:
a
b
[0102] Выше значения n, n и  равны 3, 6 и 12 соответственно. Эти значения выбираются таким образом, чтобы множители в процессе BDOF не превышали 15 бит, а максимальная битовая ширина промежуточных параметров в процессе BDOF сохранялась в пределах 32 бит.
(k)
[0103] Чтобы получить значения градиента, можно сгенерировать некоторые отсчеты предсказания I (i, j) в список k (k=0,1) за пределами текущих границ CU.
[0104] Фиг. 8 показывает пример расширенной области CU в BDOF. На примере с фиг. 8 CU 4×4 (810) показан заштрихованной областью. BDOF использует одну расширенную строку/столбец вокруг границ CU, и расширенная область показана в виде блока 6×6 (820) пунктирной линии. Для управления вычислительной сложностью генерации отсчетов предсказания за пределами границ используется билинейный фильтр для генерации отсчетов предсказания в расширенной области (белые позиции), а нормальный интерполяционный фильтр с 8-позиционной компенсацией движения используется для генерации отсчетов предсказания в пределах CU (серые позиции). Эти расширенные отсчетные значения используются только при вычислении градиента. Для остальных этапов в процессе BDOF, если требуются какие-либо отсчетные или градиентные значения за пределами границ CU, они заполняются(то есть, повторяются) из их ближайших соседей.
[0105] Согласно аспекту изобретения, уточнение вектора движения на стороне декодера (DMVR) является одной из процедур получения вектора движения на стороне декодера (DMVD) и используется для улучшения/уточнения MV на основе начальных точек.
[0106] В некоторых примерах уточнение вектора движения на стороне декодера на основе двустороннего сопоставления может применяться для повышения точности векторов движения в режиме слияния. В операции двустороннего предсказания уточненный MV ищется вокруг начальных MV в списке L0 опорных изображений и списке L1 опорных изображений. Способ двустороннего сопоставления вычисляет искажение между двумя блоками-кандидатами в списке L0 и списке L1 опорных изображений.
[0107] В примере, в случае операции двунаправленного предсказания, для предсказания одной области блока два блока предсказания могут быть сформированы соответственно с использованием MV0 из первого списка L0 кандидатов опорных изображений, и с использованием MV1 из второго списка L1 кандидатов опорных изображений. В способе DMVR два вектора движения MV0 и MV1 двунаправленного предсказания дополнительно уточняются посредством процесса двустороннего сопоставления шаблонов. Двустороннее сопоставление шаблонов применяется в декодере для выполнения поиска на основе искажения между двусторонним шаблоном и отсчетами восстановления в опорных изображениях для получения уточненного MV без передачи дополнительной информации о движении.
[0108] Фиг. 9 показывает пример DMVR, который основан на двустороннем сопоставлении шаблонов. В DMVR двусторонний шаблон (940) генерируется как взвешенная комбинация (то есть, среднее) двух блоков (920) и (930) предсказания из начального MV0 из первого списка L0 кандидатов опорных изображений и MV1 второго списка L1 кандидатов опорных изображений, соответственно, как показано на фиг. 9. Операция сопоставления с шаблоном включает в себя вычисление стоимостных оценок между сгенерированным шаблоном (940) и отсчетной областью (вокруг начального блока предсказания) в опорных изображениях Ref0 и Ref1. Для каждого из двух опорных изображений Ref0 и Ref1 MV, который дает минимальную стоимость шаблона, считается обновленным MV этого списка для замены исходного MV. Например, MV0' заменяет MV0, a MV1' заменяет MV1. В некоторых примерах для каждого списка ищется девять кандидатов MV. Девять кандидатов MV включают исходный MV и 8 окружающих MV с одним смещением отсчета яркости относительно исходного MV либо в горизонтальном, либо в вертикальном направлении, либо в обоих направлениях. Наконец, два новых MV, то есть MV0' и MV1', как показано на фиг. 9, используются для генерации окончательных результатов двунаправленного предсказания для текущего блока. Сумма абсолютных разностей (SAD) может использоваться в качестве стоимостной оценки.
[0109] В некоторых примерах DMVR применяется для блоков CU, которые кодированы с учетом определенных требований режима. Например, DMVR применяется к CU в режиме слияния на уровне CU с MV двунаправленного предсказания. Кроме того, одно опорное изображение находится в прошлом, а другое опорное изображение находится в будущем по отношению к текущему изображению. Расстояния (то есть разница в порядковых номерах (РОС) изображения) от обоих опорных изображений до текущего изображения одинаковы. CU имеет более 64 отсчетов яркости, а высота CU составляет более 8 отсчетов яркости.
[0110] Уточненный MV, полученный процессом DMVR, используется для генерации отсчетов интер-предсказания, а также используется во временном предсказании вектора движения для кодирования будущих изображений. В то время как исходный MV используется в процессе разделения блоков, а также используется в пространственном предсказании вектора движения для кодирования будущего CU.
[0111] В некоторых вариантах осуществления на основе сигналов в принятом битовом потоке определяется пара кандидатов на слияние и используется в качестве входных данных для процесса DMVR. Например, пара кандидатов на слияние обозначается как начальные векторы движения (MV0, MV1). В некоторых примерах поисковые точки, которые ищет DMVR, подчиняются условию зеркальности разности векторов движения. Другими словами, точки, которые проверяются DMVR, обозначенные парой возможных векторов движения (MV0', MV1'), подчиняются (Ур. 7) и (Ур. 8)
diff
где MV обозначает разность векторов движения между вектором движения-кандидатом и начальным вектором движения в одном из опорных изображений.
bi-pred
[0112] В некоторых вариантах осуществления используется процедура, называемая двунаправленным предсказанием с взвешенным усреднением (BWA). Процедура BWA также называется обобщенным двунаправленным предсказанием (GBi). В примере, таком как HEVC, сигнал двойного предсказания генерируется путем усреднения двух сигналов предсказания, полученных из двух разных опорных изображений, и/или с использованием двух разных векторов движения. В другом примере, таком как рабочий проект VVC и VTM, с BWA, режим двойного предсказания расширен за пределы простого усреднения, чтобы обеспечить возможность взвешенного усреднения двух сигналов предсказания. В примере, таком как проект VVC, GBi (обобщенное двунаправленное предсказание) также упоминается как двунаправленное предсказание с весами на уровне CU (BCW). В режиме BWA/GBi/BCW взвешенное предсказание на уровне CU выполняется в CU. Например, когда режим BWA/GBi/BCW предусмотрен для CU, о взвешивании можно сигнализировать для этого CU с помощью индекса BCW. Например, P двунаправленного предсказания генерируется с использованием (Ур. 9):
0
1
где P и P обозначают предсказания с компенсацией движения с использованием опорных изображений в L0 и L1, соответственно, w обозначает взвешенный параметр для предсказания с использованием опорного изображения в L1 и представлен в примере с точностью 1/8.
[0113] В примере реализации GBi допускаются пять весов во взвешенном усредненном двунаправленном предсказании, w ∈ {-2,3,4,5,10}. Для каждого предсказанного в режиме двунаправленного предсказания CU вес w определяется одним из первого и второго способов. В первом способе для CU без слияния индекс веса сигнализируется после разности векторов движения. Во втором способе, для слияния CU, индекс веса выводится из соседних блоков на основе индекса кандидата на слияние. В некоторых примерах двунаправленное предсказание с взвешенным усреднением применяется только к CU с 256 или более отсчетами яркости (то есть, ширина CU, умноженная на высоту CU, больше или равна 256). Для изображений с низкой задержкой можно использовать все 5 весов. Для изображений не с малой задержки в примере используются только 3 веса (w ∈ {3,4,5}).
[0114] В некоторых примерах, таких как AVC, HEVC, VVC и т.п., взвешенное предсказание (WP) предоставляется в качестве поддерживаемого инструмента кодирования. В одном примере WP может использоваться для улучшения производительности интер-предсказания, когда исходный материал подвержен вариациям освещения, например, при использовании затухания или перекрестного затухания.
[0115] В некоторых примерах, согласно WP, сигнал Р интер-предсказания заменяется сигналом Р' линейного взвешенного предсказания (с весом w и смещением о), например, согласно (Ур. 10) для однонаправленного предсказания:
[0116] Для двунаправленного предсказания сигнал Р0 интер-предсказания предназначен для опоры L0, вес w0 и смещение о0 - для опоры L0, а сигнал Р1 интер-предсказания - для опоры L1, вес w1 и смещение o1 - для опоры L0, тогда линейно взвешенный сигнал Р' предсказания может быть вычислен согласно (Ур. 11):
[0117] Применимые веса и смещения выбираются кодировщиком и передаются в битовом потоке битов от кодировщика к декодеру. Индексы L0 и L1 определяют List0 и List1 списка опорных изображений соответственно. Битовая глубина поддерживается с точностью до 14 бит (в HEVC версии 1) перед усреднением сигналов предсказания, как для фильтров интерполяции.
[0118] В некоторых вариантах осуществления WP позволяет передавать параметры взвешивания (вес и смещение) для каждого опорного изображения в каждом из списков L0 и L1 опорных изображений. Затем во время компенсации движения применяются вес(а) и смещение (смещения) соответствующего опорного изображения (изображений). WP и BWA предназначены для разных типов видеоконтента. Во избежание взаимодействий между WP и BWA, которые усложнят конструкцию декодера VVC, если CU использует WP, то весовой индекс BWA не передается, и w предполагается равным 4 (т.е. применяется равный вес).
[0119] Согласно некоторым аспектам изобретения некоторые инструменты двунаправленного предсказания, такие как BDOF и DMVR, полагаются на равные веса для предсказаний с двух направлений.
[0120] В примере, решение, применять ли метод BDOF, зависит от условий. Условия включают в себя требование как для GBi, так и для весовых флагов явного взвешенного предсказания для компонента яркости (также называемого флагом использования взвешенного предсказания для компонента яркости).
[0121] Фиг. 10А показывает таблицу 1А, которая обобщает список условий для применения метода BDOF согласно варианту осуществления. На примере с фиг. 10А, условие (1010А) требует, чтобы индекс Gbi был равен нулю. Индекс Gbi может быть сигнальным или предполагаемым. Индекс Gbi используется для определения весов, которые используются для взвешивания сигналов предсказания из двух опорных изображений в примере. Когда индекс Gbi равен нулю, для взвешивания сигналов предсказания из двух опорных изображений используется одинаковый вес.
[0122] Кроме того, в примере с фиг. 10А, условие (1020А) требует, чтобы флаги использования взвешенного предсказания для компонента яркости в списках L0 и L1 опорных изображений были равны нулю. Когда флаги использования взвешенного предсказания для компонента яркости в списках L0 и L1 опорных изображений равны нулю, могут использоваться веса по умолчанию, и веса по умолчанию равны для двух направлений.
[0123] В примере реализации, когда индекс Gbi удовлетворяет условию (1010А), а флаги взвешенности удовлетворяют условию (1020A), BDOF включается. Затем может быть определено, следует ли применять BDOF, дополнительно в соответствии с другими условиями, такими как другое условие с фиг. 10А.
[0124] В некоторых примерах DMVR может искать неподходящий блок, когда SAD опорных блоков взвешиваются с неравными весами. Аналогично применению BDOF, можно определить, следует ли применять DMVR, на основе условий. Условия включают в себя требование как для GBi, так и для весовых флагов явного взвешенного предсказания для компонента яркости (также называемого флагом использования взвешенного предсказания для компонента яркости).
[0125] Фиг. 11А показывает таблицу 2А, которая обобщает список условий для применения способа DMVR. На примере с фиг.11А условие (1110А) требует, чтобы индекс Gbi был равен нулю. Индекс Gbi может быть сигнальным или предполагаемым. Индекс Gbi используется для определения весов, которые используются для взвешивания сигналов предсказания из двух опорных изображений в примере. Когда индекс Gbi равен нулю, для взвешивания сигналов предсказания из двух опорных изображений используется одинаковый вес.
[0126] Кроме того, в примере с фиг. 11А, условие (1120А) требует, чтобы флаги использования взвешенного предсказания для компонента яркости в списках L0 и L1 опорных изображений были равны нулю. Когда флаги использования взвешенного предсказания для компонента яркости в списках L0 и L1 опорных изображений равны нулю, могут использоваться веса по умолчанию, и веса по умолчанию равны для двух направлений.
[0127] В примере реализации, когда индекс Gbi удовлетворяет условию (1110А), а флаги взвешенности удовлетворяют условию (1120А), DMVR включается. Затем может быть определено, следует ли применять DMVR, дополнительно в соответствии с другими условиями, такими как другое условие с фиг. 11А.
[0128] Согласно некоторым аспектам изобретения, условия для применения BDOF и/или DMVR включают в себя проверку флагов использования взвешенного предсказания для компонента яркости, а также проверку флагов использования взвешенного предсказания для компонента цветности.
[0129] Согласно аспекту изобретения BDOF может применяться только для компонента яркости. В некоторых вариантах осуществления также может проверяться взвешенность цветности текущего блока взвешенного предсказания.
[0130] Фиг. 10В показывает таблицу 1В, которая обобщает список условий для применения способа BDOF согласно некоторым вариантам осуществления. На примере с фиг.10 В, как показано при помощи (1030 В), проверяют флаги использования взвешенного предсказания для компонента цветности, например, представленные chroma_weight_10_flag [refIdxL0] и chroma_weight_11_flag [refIdxL1]. Когда флаги использования взвешенного предсказания для компонента цветности равны нулю, для компонентов цветности используется равное взвешивание, и может быть включен BDOF. Кроме того, когда удовлетворяются другие условия на фиг.10 В, BDOF может применяться для компонента яркости. Однако, когда по меньшей мере один из chroma_weight_10_flag [refIdxL0] и chroma_weight_11_flag [refIdxL1] не равен 0, BDOF может быть отключен и не может применяться для компонента яркости.
[0131] Согласно другому аспекту изобретения, BDOF может применяться для компонентов яркости и цветности отдельно, условие для использования BDOF компонента яркости может включать в себя взвешивание яркости текущего блока для взвешенного предсказания, а условие для использования BDOF компонента цветности может включать в себя взвешивание цветности текущего блока взвешенного предсказания.
[0132] В одном варианте осуществления, чтобы определить применение BDOF для компонента яркости, проверяются флаги использования взвешенного предсказания для компонента яркости, такие как представленные luma_weight_10_flag [refIdxL0] и luma_weight_11_flag [refIdxL1]. Когда оба флага использования взвешенного предсказания для компонента яркости равны нулю, используется равное взвешивание, и может быть включен BDOF. Кроме того, когда удовлетворяются другие условия на фиг. 10В, BDOF может применяться для компонента яркости. Однако, когда по меньшей мере один из luma_weight_10_flag [refIdxL0] и luma_weight_11_flag [refIdxL1] не равен 0, BDOF может быть отключен и не может применяться для компонента яркости.
[0133] В другом варианте осуществления, чтобы определить применение BDOF для компонента цветности, проверяются флаги использования взвешенного предсказания для компонента цветности, такие как представленные chroma_weight_10_flag [refIdxL0] и chroma_weight_11_flag [refIdxL1]. Когда оба флага использования взвешенного предсказания для компонента цветности равны нулю, используется равное взвешивание, и может быть включен BDOF. Кроме того, когда удовлетворяются другие условия (кроме (1020 В)) на фиг. 10В, BDOF может применяться для компонента цветности. Однако, когда по меньшей мере один из chroma_weight_10_flag [refIdxL0] и chroma_weight_11_flag [refIdxL1] не равен 0, BDOF может быть отключен и не может применяться для компонента цветности.
[0134] Согласно аспекту изобретения DMVR может применяться только для компонента яркости. В некоторых вариантах осуществления, в дополнение к указанным условиям, также может проверяться взвешенность цветности текущего блока взвешенного предсказания.
[0135] Фиг. 11В показывает таблицу 2В, которая обобщает список условий для применения способа DMVR согласно некоторым вариантам осуществления. На примере с фиг. 11В, как показано при помощи (1130 В), проверяют флаги использования взвешенного предсказания для компонента цветности, например, представленные chroma_weight_10_flag [refIdxL0] и chroma_weight_11_flag [refIdxL1]. Когда флаги использования взвешенного предсказания для компонента цветности равны нулю, для компонентов цветности используется равное взвешивание, и может быть включен DMVR. Кроме того, когда удовлетворяются другие условия на фиг. 11В, DMVR может применяться для компонента яркости. Однако, когда по меньшей мере один из chroma_weight_10_flag [refIdxL0] и chroma_weight_11_flag [refIdxL1] не равен 0, DMVR может быть отключен и не может применяться для компонента яркости.
[0136] Согласно другому аспекту изобретения, DMVR может применяться для компонентов яркости и цветности отдельно, условие для использования DMVR компонента яркости может включать в себя взвешивание яркости текущего блока для взвешенного предсказания, а условие для использования DMVR компонента цветности может включать в себя взвешивание цветности текущего блока взвешенного предсказания.
[0137] В одном варианте осуществления, чтобы определить применение DMVR для компонента яркости, проверяются флаги использования взвешенного предсказания для компонента яркости, такие как представленные luma_weight_10_flag [refIdxL0] и luma_weight_11_flag [refIdxL1]. Когда оба флага использования взвешенного предсказания для компонента яркости равны нулю, используется равное взвешивание, и может быть включен DMVR. Кроме того, когда удовлетворяются другие условия на фиг. 11B, DMVR может применяться для компонента яркости. Однако, когда по меньшей мере один из luma_weight_10_flag [refIdxL0] и luma_weight_11_flag [refIdxL1] не равен 0, DMVR может быть отключен и не может применяться для компонента яркости.
[0138] В другом варианте осуществления, чтобы определить применение DMVR для компонента цветности, проверяются флаги использования взвешенного предсказания для компонента цветности, такие как представленные chroma_weight_10_flag [refIdxL0] и chroma_weight_11_flag [refIdxL1]. Когда оба флага использования взвешенного предсказания для компонента цветности равны нулю, используется равное взвешивание, и может быть включен DMVR. Кроме того, когда удовлетворяются другие условия (кроме (1120 В)) на фиг. 11В, DMVR может применяться для компонента цветности. Однако, когда по меньшей мере один из chroma_weight_10_flag [refIdxL0] и chroma_weight_11_flag [refIdxL1] не равен 0, DMVR может быть отключен и не может применяться для компонента цветности.
[0139] Фиг. 12 показывает блок-схему, описывающую процесса (1200) согласно варианту осуществления изобретения. Процесс (1200) может использоваться при восстановлении блока, чтобы генерировать блок предсказания для восстанавливаемого блока. В различных вариантах осуществления процесс (1200) выполняется схемой обработки, например схемой обработки в терминальных устройствах (210), (220), (230) и (240), схемой обработки, которая выполняет функции кодировщика (303) видео, схемой обработки, которая выполняет функции декодера (310) видео, схемой обработки, которая выполняет функции декодера (410) видео, схемой обработки, которая выполняет функции кодировщика (503) видео, и т.п. В некоторых вариантах осуществления процесс (1200) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки выполняет процесс (1200). Процесс начинается с (S1201) и переходит к (S1210).
[0140] На этапе (S1210) информация предсказания текущего блока в текущем изображении декодируется из кодированного битового потока видео. Информация предсказания указывает режим интер-предсказания с потенциальным использованием процедуры уточнения, основанного на первом опорном изображении и втором опорном изображении. В некоторых вариантах осуществления процедура уточнения включает по меньшей мере одно из BDOF и DMVR. В некоторых примерах текущее изображение имеет больший порядковый номер изображения (РОС), чем одно из первого опорного изображения и второго опорного изображения, и имеет меньший РОС, чем другое из первого опорного изображения и второго опорного изображения.
[0141] на этапе (s1220) может быть выполнено определение, удовлетворено ли первое условие равного взвешивания компонентов цветности из первого опорного изображения и второго опорного изображения, в некоторых примерах проверяется первый флаг для весового коэффициента цветности первого опорного изображения (например, chroma_weight_10_flag [refIdxL0]) и второй флаг для весового коэффициента цветности второго опорного изображения (например, chroma_weight_11_flag [refIdsL1]). Когда и первый флаг, и второй флаг равны нулю, первое условие равного взвешивания компонентов цветности удовлетворяется. Когда по меньшей мере один из первого флага и второго флага не равен нулю, может быть определено невыполнение первого условия равного взвешивания.
[0142] На этапе (S1230) процедура уточнения отключается при восстановлении отсчета в текущем блоке в ответ на невыполнение первого условия равного взвешивания. В некоторых вариантах осуществления процедура уточнения может применяться только к компоненту яркости. Таким образом, процедура уточнения отключается при восстановлении отсчетов яркости текущего блока в ответ на невыполнение первого условия равного взвешивания. В некоторых вариантах осуществления процедура уточнения может применяться отдельно для компонентов яркости и цветности. Таким образом, процедура уточнения отключается при восстановлении отсчетов цветности текущего блока в ответ на невыполнение первого условия равного взвешивания. Затем процесс переходит к (S1299) и заканчивается.
[0143] Следует отметить, что когда удовлетворяется первое условие равного взвешивания, другие подходящие условия, такие как условия с фиг. 10В или фиг. 11В, также проверяются, чтобы определить, можно ли применить процедуру уточнения при восстановлении отсчетов в текущем блоке.
[0144] Процедуры, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или нескольких машиночитаемых носителях. Например, фиг. 13 показывает компьютерную систему (1300), подходящую для реализации определенных вариантов осуществления раскрытого объекта.
[0145] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть подвержен сборке, компиляции, связыванию или подобным механизмам для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или несколькими центральными процессорами (CPU) компьютера, графическими процессорами (GPU) и т.п.
[0146] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.
[0147] Компоненты, показанные на фиг. 13 для компьютерной системы (1300) являются примерными по своей сути и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1300).
[0148] Компьютерная система (1300) может включать в себя определенные устройства ввода с человеческим интерфейсом. Такое устройство ввода с человеческим интерфейсом может реагировать на ввод одним или несколькими пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения цифровой перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жесты), обонятельного ввода (не изображен). Устройства с человеческим интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камера для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[0149] Устройства ввода человеческого интерфейса могут включать в себя одно или несколько из (только по одному из каждого отображенного): клавиатура (1301), мышь (1302), трекпад (1303), сенсорный экран (1310), цифровая перчатка (не показана), джойстик (1305), микрофон (1306), сканер (1307), фотоаппарат (1308).
[0150] Компьютерная система (1300) может также включать в себя определенные устройства вывода с человеческим интерфейсом. Такие устройства вывода с человеческим интерфейсом могут стимулировать чувства одного или нескольких пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеческим интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1310), цифровую перчатку (не показана) или джойстик (1305), но также могут быть устройствами тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1309), наушники (не показаны)), устройства вывода изображения (например, экраны (1310), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможность ввода с сенсорного экрана, каждый с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).
[0151] Компьютерная система (1300) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1320) с CD/DVD или подобным носителем (1321), флэш-накопитель (1322), съемный жесткий диск или твердотельный накопитель (1323), традиционные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM/ASIC/PLD, такие как аппаратные ключи защиты (не показаны) и т.п.
[0152] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объекте, не охватывает передающие среды, несущие волны или другие временные сигналы.
[0153] Компьютерная система (1300) также может включать в себя интерфейс для одной или нескольких коммуникационных сетей. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и телевидение наземного вещания, автомобильное и промышленное оборудование, включая CANBus и т.д. Некоторым сетям обычно требуются адаптеры внешнего сетевого интерфейса, которые подключены к определенным портам данных общего назначения или периферийным шинам (1349) (например, к портам USB компьютерной системы (1300)); другие обычно встраиваются в ядро компьютерной системы (1300) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в смартфонной компьютерной системе). Используя любую из этих сетей, компьютерная система (1300) может коммуницировать с другими объектами. Такая коммуникация может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CANbus на определенные устройства CANbus) или двунаправленной, например, для других компьютерных систем, использующих локальные или глобальные цифровые сети. Определенные протоколы и стеки протоколов могут использоваться в каждой из этих сетей и сетевых интерфейсов, как описано выше.
[0154] Вышеупомянутые устройства человеческого интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (1340) компьютерной системы (1300).
[0155] Ядро (1340) может включать в себя один или несколько центральных процессоров (CPU) (1341), графических процессоров (ГП) (1342), специализированных программируемых процессорных узлов в виде программируемых вентильных областей (FPGA) (1343), аппаратных ускорителей для определенных задач (1344) и т.д. Эти устройства, наряду с постоянным запоминающим устройством (ROM) (1345), памятью с произвольным доступом (1346), внутренним запоминающим устройством, таким как внутренние жесткие диски, не доступные пользователю, твердотельные накопители и т.п. (1347), могут быть подключены через системную шину (1348). В некоторых компьютерных системах системная шина (1348) может быть доступна в виде одного или нескольких физических разъемов для обеспечения возможности расширения с помощью дополнительных процессоров, графических процессоров и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1348) ядра, либо через периферийную шину (1349). Архитектура периферийной шины включает PCI, USB и т.п.
[0156] CPU (1341), графические процессоры (1342), FPGA (1343) и ускорители (1344) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1345) или RAM (1346). Переходные данные также могут храниться в RAM(1346), тогда как постоянные данные могут храниться, например, во внутреннем запоминающем накопителе (1347). Быстрое хранение и извлечение на любое из устройств памяти могут быть обеспечены за счет использования кэш-памяти, которая может быть тесно связана с одним или несколькими CPU (1341), GPU (1342), запоминающим устройством (1347), ROM (1345), RAM (1346) и тому подобное.
[0157] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего изобретения, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[0158] В качестве примера, без ограничения, компьютерная система, имеющая архитектуру (1300) и, в частности, ядро (1340), может обеспечивать функциональность за счет процессора или процессоров (включая CPU, GPU, FPGA, ускорители и т.п.), исполняющих программное обеспечение, воплощенное на одном или нескольких материальных машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя запоминающим накопителем, как описано выше, а также определенным запоминающим устройством ядра (1340), которое является невременным, таким как внутриядровый накопитель (1347) или ROM(1345). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1340). Машиночитаемый носитель может включать в себя одно или несколько запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может предписывать ядру (1340) и, в частности, процессорам в нем (включая CPU, GPU, FPGA и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в настоящем документе, включая определение структур данных, хранящихся в RAM(1346) и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность за счет логики, аппаратно встроенной в схему или иным образом воплощенной в ней (например, ускоритель (1344)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в настоящем документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это уместно. Ссылка на машиночитаемый носитель может охватывать схему (например, интегральную схему (ИС)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это необходимо. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
Приложение А: Сокращения
JEM: модель совместного исследования
VVC: универсальное кодирование видео
BMS: набор бенчмарков
MV: Вектор движения
HEVC: высокоэффективное кодирование видео
SEI: дополнительная информация о расширении
VUI: информация об удобстве использования видео
GOP: группы изображений
TUs: единицы преобразования,
PUs: единицы предсказания
CTUs: единицы кодового дерева
CTBs: блоки кодового дерева
PBs: блоки предсказания
HRD: гипотетический опорный декодер
SNR: Отношение сигнал-шум
CPUs: Центральные процессоры
GPU: графические процессоры
CRT: электронно-лучевая трубка
LCD: жидкокристаллический дисплей;
OLED: органический светоизлучающий диод
CD: Компакт-диск
DVD: Цифровой видеодиск
ROM: постоянное запоминающее устройство
RAM: оперативное запоминающее устройство
ASIC: специализированная интегральная схема
PLD: программируемое логическое устройство
LAN: локальная компьютерная сеть
GSM: Глобальная система мобильной связи
LTE: долгосрочное развитие
CANBus: шина сети контроллера
USB: универсальная последовательная шина
PCI: соединение периферийных компонентов
FPGA: программируемая пользователем вентильная матрица
SSD: твердотельный накопитель
IC: Интегральная схема
CU: единица кодирования
[0159] Хотя это изобретение описывает несколько примерных вариантов осуществления, могут быть предусмотрены изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем изобретения. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы изобретения и, таким образом, находятся в пределах его сущности и объема.