УСТРОЙСТВО И СИГНАЛИЗАЦИЯ АДАПТИВНОГО КОНТУРНОГО ФИЛЬТРА (ALF) НА БЛОЧНОЙ ОСНОВЕ
DEVICE AND SIGNALING OF ADAPTIVE LOOP FILTER (ALF) ON BLOCK BASIS

[0001] Настоящая заявка испрашивает приоритет патентной заявки США № 16/427,017, поданной 30 мая 2019, которая испрашивает приоритет предварительной заявки США № 62/679,685, поданной 1 июня 2018, все содержания которых включены в настоящий документ посредством ссылки.
Область техники
[0002] Настоящее раскрытие относится к кодированию видео и декодированию видео.
Предшествующий уровень техники
[0003] Функциональные возможности цифрового видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые ассистенты (PDA), ноутбуки или стационарные компьютеры, планшеты, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видео игровые устройства, видео игровые консоли, сотовые или спутниковые радиотелефоны, так называемые “смартфоны”, устройства видео телеконференций, устройства потоковой передачи (стриминга) видео и тому подобное. Цифровые видеоустройства реализуют методы сжатия видео, такие как методы, описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Расширенное кодирование видео (AVC), недавно завершенный стандарт Высокоэффективного кодирования видео (HEVC) и расширения таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить информацию цифрового видео более эффективно путем реализации таких методов сжатия видео.
[0004] Методы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую последовательностям видео. Для кодирования видео на блочной основе, слайс видео (т.е., кадр видео или часть кадра видео) может разбиваться на блоки видео, которые могут также называться блоками дерева, единицами кодирования (CU) и/или узлами кодирования. Блоки видео в интра-(внутри-)кодированном (I) слайсе картинки кодируются с использованием пространственного предсказания относительно опорных выборок в соседних блоках в одной и той же картинке. Блоки видео в интер-(меж-)кодированном (P или B) слайсе картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в одной и той же картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.
[0005] Пространственное или временное предсказание приводит к предсказанному блоку для блока, подлежащего кодированию. Остаточные данные представляют пиксельные разности между исходным блоком, подлежащим кодированию, и предсказанным блоком. Интер-кодированный блок кодируется в соответствии с вектором движения, который указывает на блок опорных выборок, образующих предсказанный блок, и остаточные данные указывают разность между закодированным блоком и предсказанным блоком. Интра-кодированный блок кодируется в соответствии с режимом интра-кодирования и остаточными данными. Для дополнительного сжатия, остаточные данные могут быть преобразованы из пиксельной области в область преобразования, что приводит к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально упорядоченные в двумерном массиве, могут сканироваться, чтобы сформировать одномерный вектор коэффициентов преобразования, и энтропийное кодирование может применяться для достижения еще большего сжатия.
Краткое описание сущности изобретения
[0006] Настоящее раскрытие описывает методы, связанные с методами фильтрации, упоминаемыми как “адаптивный контурный фильтр (ALF)”. ALF может использоваться на стадии пост-обработки, для кодирования в контуре или в процессе предсказания. Фильтрация с адаптивным смещением выборки (SAO) и/или адаптивная контурная фильтрация может применяться к любой из различных существующих технологий кодека видео, таких как технология кодека, совместимого с HEVC, или представлять собой эффективный инструмент кодирования в любых будущих стандартах кодирования видео. Поэтому описанные методы могут применяться к множеству методов кодирования видео на блочной основе, в которых видео восстанавливается на поблочной основе. Блоки пикселов могут по-разному упоминаться как единицы дерева кодирования (CTU), наибольшие единицы кодирования (LCU), единицы предсказания (PU) или определяться другой терминологией в зависимости от используемого кодирования видео на блочной основе, как описано далее.
[0007] Как будет объяснено более подробно ниже, в соответствии с методами настоящего раскрытия, кодер видео и декодер видео могут быть сконфигурированы, чтобы определять наборы адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на поблочной основе (например, для блоков, для которых разрешается адаптивная контурная фильтрация). Таким образом, набор адаптивных контурных фильтров, доступных для использования с конкретным блоком, может быть более адаптирован к локальным характеристикам данных видео вблизи конкретного блока, тем самым повышая эффективность кодирования и/или качество картинки.
[0008] В одном примере, способ включает в себя определение соответственного набора адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.
[0009] В другом примере, устройство, сконфигурированное, чтобы кодировать данные видео, включает в себя память, сконфигурированную, чтобы хранить текущую картинку данных видео, и один или несколько процессоров в коммуникации с памятью, один или несколько процессоров сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках (или предыдущих картинках, слайсах или блоков другой гранулярности), и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.
[0010] В другом примере, устройство, сконфигурированное, чтобы кодировать данные видео, включает в себя средство для определения соответственного набора адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и средство для адаптивной контурной фильтрации блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.
[0011] В другом примере, настоящее раскрытие описывает не изменяемый со временем (Долговременный) считываемый компьютером носитель данных, хранящий инструкции, которые при исполнении побуждают один или несколько процессоров определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.
[0012] Подробности одного или нескольких примеров изложены на прилагаемых чертежах и в описании ниже. Другие признаки, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
[0013] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему кодирования и декодирования видео, которая может использовать методы, описанные в настоящем раскрытии.
[0014] Фиг. 2 показывает примерную блок-схему декодера HEVC.
[0015] Фиг. 3A-3D показывают четыре 1-D направленных шаблона для классификации выборок смещения края (EO).
[0016] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный кодер видео, который может реализовывать методы, описанные в настоящем раскрытии.
[0017] Фиг. 5 представляет собой блок-схему, иллюстрирующую примерный декодер видео, который может реализовывать методы, описанные в настоящем раскрытии.
[0018] Фиг. 6 показывает примерную реализацию модуля фильтрации для выполнения методов настоящего раскрытия.
[0019] Фиг. 7 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ раскрытия.
[0020] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую другой примерный способ раскрытия.
Подробное описание
[0021] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему 10 кодирования и декодирования видео, которая может использовать методы для адаптивной контурной фильтрации, описанной в настоящем раскрытии. Как показано на фиг. 1, система 10 включает в себя устройство 12 источника, которое генерирует закодированные данные видео, подлежащие декодированию в более позднее время устройством 14 места назначения. Устройство 12 источника и устройство 14 места назначения могут представлять собой любое из широкого диапазона устройств, включая настольные компьютеры, портативные компьютеры (ноутбуки), планшеты, телевизионные приставки, телефонные трубки, такие как так называемые смартфоны, так называемые умные планшеты (смартпады), телевизоры, камеры, устройства отображения, цифровые медиаплееры, видео игровые консоли, устройство стриминга видео или тому подобное. В некоторых случаях, устройство 12 источника и устройство 14 места назначения могут быть оснащены для беспроводной связи.
[0022] Устройство 14 места назначения может принимать закодированные данные видео, подлежащие декодированию, посредством линии 16 связи. Линия 16 связи может представлять собой любой тип носителя или устройства, способного перемещать закодированные данные видео от устройства 12 источника к устройству 14 места назначения. В одном примере, линия 16 связи может представлять собой коммуникационную среду, чтобы позволять устройству 12 источника передавать закодированные данные видео непосредственно на устройство 14 места назначения в реальном времени. Закодированные данные видео могут модулироваться в соответствии со стандартом связи, таким как протокол беспроводной связи, и передаваться на устройство 14 места назначения. Коммуникационная среда может включать в себя любую среду беспроводной или проводной связи, такую как радиочастотный (RF) спектр или одна или несколько физических линий передачи. Коммуникационная среда может формировать часть пакетной сети, такой как локальная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может использоваться для обеспечения связи от устройства 12 источника к устройству 14 места назначения.
[0023] В другом примере, закодированные данные видео могут выводиться из выходного интерфейса 22 на устройство 26 хранения. Аналогично, доступ к закодированным данным видео может осуществляться из устройства 26 хранения входным интерфейсом 28. Устройство 26 хранения может включать в себя любой из множества распределенных или локально доступных носителей данных, таких как жесткий диск, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любые другие подходящие цифровые носители для хранения закодированных данных видео. В другом примере, устройство 26 хранения может соответствовать файловому серверу или другому устройству промежуточного хранения, которое может хранить закодированное видео, сгенерированное устройством 12 источника. Устройство 14 места назначения может осуществлять доступ к сохраненным данным видео из устройства 26 хранения посредством стриминга или загрузки. Файловый сервер может представлять собой любой тип сервера, способного хранить закодированные данные видео и передавать эти закодированные данные видео на устройство 14 места назначения. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), сервер протокола переноса файлов (FTP), сетевые устройства хранения (NAS) или накопитель локального диска. Устройство 14 места назначения может осуществлять доступ к закодированным данным видео через любое стандартное соединение данных, включая Интернет-соединение. Оно может включать в себя беспроводное соединение (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.д.) или комбинацию обоих, которая является подходящей для осуществления доступа к закодированным данным видео, хранящимся на файловом сервере. Передача закодированных данных видео от устройства 26 хранения может представлять собой стриминговую передачу, передачу загрузки или комбинацию обоих.
[0024] Методы настоящего раскрытия не обязательно ограничены беспроводными приложениями или настройками. Методы могут применяться к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как телевизионное эфирное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи стримингового видео, например, через Интернет, кодирование цифрового видео для хранения на носителе данных, декодирование цифрового видео, сохраненного на носителе данных, или других приложений. В некоторых примерах, система 10 может быть сконфигурирована, чтобы поддерживать одностороннюю или двустороннюю передачу видео для поддержки приложений, таких как стриминг видео, воспроизведение видео, вещание видео и/или видео-телефония.
[0025] В примере на фиг. 1, устройство 12 источника включает в себя источник 18 видео, кодер 20 видео и выходной интерфейс 22. В некоторых случаях, выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве 12 источника, источник 18 видео может включать в себя источник, такой как устройство захвата видео, например, видеокамеру, архив видео, содержащий ранее захваченное видео, интерфейс внешнего видеосигнала для приема видео от провайдера видеоконтента и/или систему компьютерной графики для генерации данных компьютерной графики как источника видео или комбинацию таких источников. В общем, захват данных видео может включать в себя любой метод для записи, генерации и/или восприятия данных видео. В качестве одного примера, если источник 18 видео представляет собой видеокамеру, устройство 12 источника и устройство 14 места назначения могут образовывать так называемые камерофоны или видеофоны. Однако, методы, описанные в настоящем раскрытии, могут применяться к кодированию видео в общем и могут применяться к беспроводным и/или проводным приложениям.
[0026] Захваченное, предварительно захваченное или сгенерированное компьютером видео может кодироваться кодером 20 видео. Закодированные данные видео могут передаваться непосредственно на устройство 14 места назначения через выходной интерфейс 22 устройства 12 источника. Закодированные данные видео могут также (или альтернативно) сохраняться на устройство 26 хранения для последующего доступа устройством 14 места назначения или другими устройствами, для декодирования и/или воспроизведения.
[0027] Устройство 14 места назначения включает в себя входной интерфейс 28, декодер 30 видео и устройство 32 отображения. В некоторых случаях, входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства 14 места назначения принимает закодированные данные видео по линии 16 связи. Закодированные данные видео, сообщенные по линии 16 связи или обеспеченные на устройство 26 хранения, могут включать в себя множество синтаксических элементов, сгенерированных кодером 20 видео для использования декодером видео, таким как декодер 30 видео, при декодировании данных видео. Такие синтаксические элементы могут быть включены в закодированные данные видео, передаваемые по коммуникационной среде, сохраненные на носителе или сохраненные на файловом сервере.
[0028] Устройство 32 отображения может быть встроенным или внешним по отношению к устройству 14 места назначения. В некоторых примерах, устройство 14 места назначения может включать в себя встроенное устройство отображения, а также может быть сконфигурировано, чтобы взаимодействовать с внешним устройством отображения. В других примерах, устройство 14 места назначения может представлять собой устройство отображения. В общем, устройство 32 отображения отображает декодированные данные видео пользователю и может представлять собой любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.
[0029] Кодер 20 видео и декодер 30 видео могут работать в соответствии со стандартом сжатия видео, таким как недавно завершенный стандарт Высокоэффективного кодирования видео (HEVC), и может быть согласован с Тестовой моделью HEVC (HM). Кодер 20 видео и декодер 30 видео могут дополнительно работать в соответствии с расширением HEVC, таким как расширение диапазона, многовидовое расширение (MV-HEVC) или масштабируемое расширение (SHVC), которые были разработаны Группой совместного сотрудничества по кодированию видео (JCT-VC), а также Группой совместного сотрудничества по разработке расширения кодирования 3D видео (JCT-3V) Экспертной группы по кодированию видео (VCEG) ITU-T и Экспертной группы по движущимся изображениям (MPEG) ISO/IEC. Альтернативно, кодер 20 видео и декодер 30 видео могут работать в соответствии с другими проприетарными или промышленными стандартами, такими как стандарт ITU-T H.264, альтернативно упоминаемый как ISO/IEC MPEG 4, часть 10, Расширенное кодирование видео (AVC), или расширениями таких стандартов, такими как расширения Масштабируемого кодирования видео (SVC) и Многовидового кодирования видео (MVC). Методы настоящего раскрытия, однако, не ограничены каким-либо конкретным стандартом кодирования. Другие примеры стандартов сжатия видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263 и ISO/IEC MPEG-4 Visual. HEVC (ITU-T H.265), включая его расширение диапазона, многовидовое расширение (MV-HEVC) и масштабируемое расширение (SHVC), были разработаны Группой совместного сотрудничества по кодированию видео (JCT-VC), а также Группой совместного сотрудничества по разработке Расширения кодирования 3D видео (JCT-3V) Экспертной группы по кодированию видео (VCEG) ITU-T и Экспертной группой по движущимся изображениям (MPEG) ISO/IEC. Завершенный проект HEVC, упоминаемый далее как HEVC WD, доступен на http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip.
[0030] ITU-T VCEG (Q6/16) и ISO/IEC MPEG (JTC 1/SC 29/WG 11) в настоящее время разрабатывают будущую технологию кодирования видео с функциональной возможностью сжатия, которая потенциально превышает способность сжатия текущего стандарта HEVC (включая текущие расширения и краткосрочные расширения для кодирования экранного контента и кодирования высокого динамического диапазона). Новый стандарт называется H.266/VVC (универсальное кодирование видео). Группы работают вместе в рамках этой исследовательской деятельности, совместно сотрудничая как Группа по совместному исследованию видео (JVET), чтобы оценить проекты технологии сжатия, предложенные их экспертами в этой области. Первая встреча JVET состоялась 19-21 октября 2015. Одну версию опорного программного обеспечения, т.е., Модель совместного исследования 7 (JEM7), можно загрузить из: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0/. Описание алгоритма для JEM7 приведено в J. Chen, E. Alshina, G. J. Sullivan, J.R. Ohm, J. Boyce, “Algorithm description of Joint Exploration Test Model 7 (JEM7)”, JVET-G1001, Torino, July 2017. Последний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 5)”, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting: Geneva, CH, 19-27 March 2019, JVET-N1001-v3 (далее “Проект 5 VVC”). Методы настоящего раскрытия, однако, не ограничены каким-либо конкретным стандартом кодирования.
[0031] Хотя не показано на фиг. 1, в некоторых аспектах, кодер 20 видео и декодер 30 видео могут каждый быть интегрированы с кодером и декодером аудио и могут включать в себя подходящие модули MUX-DEMUX или другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах, модули MUX-DEMUX могут быть согласованы с протоколом мультиплексора ITU H.223 или другими протоколами, такими как протокол пользовательских дейтаграмм (UDP).
[0032] Кодер 20 видео и декодер 30 видео каждый могут быть реализованы как любая из множества подходящих схем кодера или схем декодера, таких как один или несколько микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, прошивки или любых их комбинаций. Когда методы реализованы частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем долговременном считываемом компьютером носителе и исполнять инструкции в аппаратных средствах с использованием одного или нескольких процессоров для выполнения методов настоящего раскрытия. Каждый из кодера 20 видео и декодера 30 видео может быть включен в один или несколько кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) (кодека) в соответственном устройстве.
[0033] Настоящее раскрытие описывает методы, относящиеся к операциям фильтрации, которые могут использоваться на стадии пост-обработки, как часть (внутри-) контурного кодирования или на стадии предсказания кодирования видео. Методы настоящего раскрытия могут быть реализованы в существующих кодеках видео, таких как HEVC, или представлять собой эффективный инструмент кодирования для будущего стандарта кодирования видео, такого как стандарт H.266/VVC, в настоящее время находящийся в разработке.
[0034] Кодирование видео обычно включает в себя блок предсказания данных видео либо из уже закодированного блока данных видео в той же картинке (например, интра-предсказание), либо уже закодированного блока данных видео в другой картинке (например, интер-предсказание). В некоторых примерах, кодер 20 видео также вычисляет остаточные данные путем сравнения предсказанного блока с исходным блоком. Таким образом, остаточные данные представляют разность между предсказанным блоком и исходным блоком.
[0035] Кодер 20 видео преобразует и квантует остаточные данные и сигнализирует преобразованные и квантованные остаточные данные в закодированном битовом потоке. Декодер 30 видео добавляет остаточные данные в предсказанный блок, чтобы сформировать восстановленный блок видео, который совпадает с исходным блоком видео ближе, чем только предсказанный блок. Чтобы дополнительно улучшить качество декодированного видео, кодер 20 видео и декодер 30 видео могут выполнять одну или несколько операций фильтрации на восстановленных блоках видео. Примеры этих операций фильтрации включают в себя фильтрацию устранения блочности, адаптивную фильтрацию смещения выборки (SAO) и адаптивную контурную фильтрацию. Параметры для этих операций фильтрации могут определяться кодером 20 видео и явно сигнализироваться в закодированном битовом потоке видео или могут неявно определяться декодером 30 видео без необходимости явно сигнализировать параметры в закодированном битовом потоке видео.
[0036] Настоящее раскрытие описывает методы, относящиеся к способу(ам) фильтрации, упоминаемому как “адаптивная контурная фильтрация (ALF)”. ALF может использоваться на стадии пост-обработки, для контурного кодирования или в процессе предсказания. Фильтрация SAO и/или адаптивная контурная фильтрация может применяться к любой из различных существующих технологий кодека видео, таких как технология кодека, совместимого с HEVC, или представлять собой эффективный инструмент кодирования в любых будущих стандартах кодирования видео.
[0037] Как использовано в настоящем раскрытии, термин кодирование видео в общем относится либо к кодированию видео, либо к декодированию видео. Аналогично, термин кодер видео может в общем относиться к кодеру видео или декодеру видео. Более того, определенные методы, описанные в настоящем раскрытии в отношении декодирования видео, могут также применяться к кодированию видео и наоборот. Например, часто кодеры видео и декодеры видео сконфигурированы, чтобы выполнять один и тот же процесс или взаимно обратные процессы. Также, кодер 20 видео обычно выполняет декодирование видео как часть процессов определения того, как следует кодировать данные видео.
[0038] Как будет объяснено более подробно ниже, в соответствии с методами настоящего раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять наборы адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на поблочной основе (например, для блоков, для которых разрешается адаптивная контурная фильтрация). Таким образом, набор адаптивных контурных фильтров, доступных для использования с конкретным блоком, может быть более адаптирован к локальным характеристикам данных видео рядом с конкретным блоком, таким образом, улучшая эффективность кодирования и/или качество картинки.
L
Cb
Cr
L
Cb
Cr
[0039] В HEVC, VVC и других спецификациях кодирования видео, последовательность видео обычно включает в себя последовательность картинок. Картинки могут также называться “кадрами”. В одном примерном подходе, картинка может включать в себя три массива выборок, обозначенных S, S и S. В таком примерном подходе, S представляет собой двумерный массив (т.е., блок) выборок яркости. S представляет собой двумерный массив выборок цветности Cb. S представляет собой двумерный массив выборок цветности Cr. Выборки цветности могут также упоминаться как выборки “насыщенности цвета” (цветности). В других примерах, картинка может быть монохромной и может включать в себя только массив выборок яркости.
[0040] Чтобы сгенерировать закодированное представление картинки, кодер 20 видео может генерировать набор единиц дерева кодирования (CTU). Каждая из CTU может включать в себя блок дерева кодирования выборок яркости, два соответствующих блока дерева кодирования выборок цветности и синтаксические структуры, используемые для кодирования выборок блоков дерева кодирования. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, CTU может включать в себя один блок дерева кодирования и синтаксические структуры, используемые, чтобы кодировать выборки блока дерева кодирования. Блок дерева кодирования может представлять собой N×N блок выборок. CTU может также упоминаться как “блок дерева” или “наибольшая единица кодирования” (LCU). CTU HEVC могут быть в широком смысле аналогичны макроблокам других стандартов, таких как H.264/AVC. Однако CTU не обязательно ограничена конкретным размером и может включать в себя одну или несколько единиц кодирования (CU). Слайс может включать в себя целое число CTU, упорядоченных последовательно в порядке растрового сканирования.
[0041] В одном примере, чтобы сгенерировать закодированную CTU, кодер 20 видео может рекурсивно выполнять разбиение квадродерева на блоках дерева кодирования CTU, чтобы разделить блоки дерева кодирования на блоки кодирования, отсюда название “единицы дерева кодирования”. Блок кодирования может представлять собой N×N блок выборок. CU может включать в себя блок кодирования выборок яркости и два соответствующих блока кодирования выборок цветности картинки, которая имеет массив выборок яркости, массив выборок Cb и массив выборок Cr и синтаксические структуры, используемые для кодирования выборок блоков кодирования. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, CU может включать в себя один блок кодирования и синтаксические структуры, используемые для кодирования выборок блока кодирования.
[0042] Кодер 20 видео может разбивать блок кодирования CU на один или несколько блоков предсказания. Блок предсказания представляет собой прямоугольный (т.е., квадратный или неквадратный) блок выборок, на которых применяется то же самое предсказание. Единица предсказания (PU) CU может включать в себя блок предсказания выборок яркости, два соответствующих блока предсказания выборок цветности и синтаксические структуры, используемые для предсказания блоков предсказания. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, PU может включать в себя один блок предсказания и синтаксические структуры, используемые для предсказания блока предсказания. Кодер 20 видео может генерировать предсказанные блоки яркости, Cb и Cr для блоков предсказания яркости, Cb и Cr каждой PU CU.
[0043] В качестве другого примера, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы работать в соответствии с JEM или VVC. В соответствии с JEM или VVC, кодер видео (такой как кодер 20 видео) разбивает картинку на множество единиц дерева кодирования (CTU). Кодер 20 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева/двоичного дерева (QTBT) или структура дерева множественного типа (MTT). Структура QTBT удаляет концепции множества типов разбиения, такие как разделения между CU, PU и TU (единицами преобразования) HEVC. Структура QTBT включает в себя два уровня: первый уровень, разбиваемый в соответствии с разбиением квадродерева, и второй уровень, разбиваемый в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).
[0044] В структуре разбиения MTT, блоки могут разбиваться с использованием разбиения квадродерева (QT), разбиения двоичного дерева (BT) и одного или нескольких типов разбиений троичного дерева (TT). Разбиение троичного дерева представляет собой разбиение, где блок разделяется на три подблока. В некоторых примерах, разбиение троичного дерева делит блок на три подблока без деления исходного блока через центр. Типы разбиения в MTT (например, QT, BT и TT) могут быть симметричными или ассиметричными.
[0045] В некоторых примерах, кодер 20 видео и декодер 30 видео могут использовать одну структуру QTBT или MTT, чтобы представлять каждый из компонентов яркости и цветности, в то время как в других примерах, кодер 20 видео и декодер 30 видео могут использовать две или более структур QTBT или MTT, таких как одна структура QTBT/MTT для компонента яркости и другая структура QTBT/MTT для обоих компонентов цветности (или две структуры QTBT/MTT для соответственных компонентов цветности).
[0046] Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы использовать разбиение квадродерева, разбиение QTBT, разбиение MTT или другие структуры разбиения.
[0047] Кодер 20 видео может использовать интра-предсказание или интер-предсказание, чтобы генерировать предсказанные блоки для блока (например, PU). Если кодер 20 видео использует интра-предсказание, чтобы сгенерировать предсказанные блоки PU, кодер 20 видео может генерировать предсказанные блоки PU на основе декодированных выборок картинки, ассоциированной с PU. Если кодер 20 видео использует интер-предсказание, чтобы сгенерировать предсказанные блоки PU, кодер 20 видео может генерировать предсказанные блоки PU на основе декодированных выборок одной или нескольких картинок, отличных от картинки, ассоциированной с PU.
[0048] Некоторые примеры JEM и VVC также обеспечивают режим компенсации аффинного движения, который может рассматриваться как режим интер-предсказания. В режиме компенсации аффинного движения, кодер 20 видео может определять два или более векторов движения, которые представляют непоступательное движение, такое как приближение или отдаление, вращение, движение перспективы или другие типы нерегулярного движения.
[0049] Чтобы выполнить интра-предсказание, кодер 20 видео может выбирать режим интра-предсказания, чтобы сгенерировать блок предсказания. Некоторые примеры JEM и VVC обеспечивают шестьдесят семь режимов интра-предсказания, включая различные направленные режимы, а также планарный режим и режим DC. В общем, кодер 20 видео выбирает режим интра-предсказания, который описывает выборки, соседние с текущим блоком (например, блоком CU), из которого следует предсказывать выборки текущего блока. Такие выборки могут, в общем, находиться выше, выше и слева или слева от текущего блока в той же самой картинке, что и текущей блок, предполагая, что кодер 20 видео кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).
[0050] После того как кодер 20 видео сгенерировал предсказанные блоки яркости, Cb и Cr для одной или нескольких PU CU, кодер 20 видео может генерировать остаточный блок яркости для CU. Каждая выборка в остаточном блоке яркости CU указывает разность между выборкой яркости в одном из предсказанных блоков яркости CU и соответствующей выборкой в исходном блоке кодирования яркости CU. К тому же, кодер 20 видео может генерировать остаточный блок Cb для CU. Каждая выборка в остаточном блоке Cb для CU может указывать разность между выборкой Cb в одном из предсказанных блоков Cb CU и соответствующей выборкой в исходном блоке кодирования Cb CU. Кодер 20 видео может также генерировать остаточный блок Cr для CU. Каждая выборка в остаточном блоке Cr CU может указывать разность между выборкой Cr в одном из предсказанных блоков Cr CU и соответствующей выборкой в исходном блоке кодирования Cr CU.
[0051] В некоторых примерах, кодер 20 видео может использовать разбиение квадродерева, чтобы разлагать остаточные блоки яркости, Cb и Cr CU на один или несколько блоков преобразования яркости, Cb и Cr. В других примерах, блок преобразования имеет тот же размер, что и блок предсказания. Блок преобразования представляет собой прямоугольный (например, квадратный или неквадратный) блок выборок, на которых применяется то же самое преобразование. Единица преобразования (TU) CU может включать в себя блок преобразования выборок яркости, два соответствующих блока преобразования выборок цветности и синтаксические структуры, используемые, чтобы преобразовывать выборки блока преобразования. Таким образом, каждая TU CU может быть ассоциирована с блоком преобразования яркости, блоком преобразования Cb и блоком преобразования Cr. Блок преобразования яркости, ассоциированный с TU, может представлять собой подблок остаточного блока яркости CU. Блок преобразования Cb может представлять собой подблок остаточного блока Cb CU. Блок преобразования Cr может представлять собой подблок остаточного блока Cr CU. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, TU может включать в себя один блок преобразования и синтаксические структуры, использованные для преобразования выборок блока преобразования.
[0052] Кодер 20 видео может применять одно или несколько преобразований к блоку преобразования яркости TU, чтобы генерировать блок коэффициентов яркости для TU. Блок коэффициентов может представлять собой двумерный массив коэффициентов преобразования. Коэффициент преобразования может представлять собой скалярную величину. Кодер 20 видео может применять одно или несколько преобразований к блоку преобразования Cb TU, чтобы генерировать блок коэффициентов Cb для TU. Кодер 20 видео может применять одно или несколько преобразований к блоку преобразования Cr TU, чтобы генерировать блок коэффициентов Cr для TU.
[0053] Вышеописанная структура блоков с CTU, CU, PU и TU, в общем, описывает структуру блоков, используемую в HEVC. Другие стандарты кодирования видео, однако, могут использовать другие структуры блоков. В качестве одного примера, хотя HEVC позволяет PU и TU иметь разные размеры или формы, другие стандарты кодирования видео могут требовать, чтобы предсказанные блоки и блоки преобразования имели один и тот же размер. Методы настоящего раскрытия не ограничены структурой блоков HEVC и могут быть совместимы с другими структурами блоков.
[0054] После генерации блока коэффициентов (например, блока коэффициентов яркости, блока коэффициентов Cb или блока коэффициентов Cr), кодер 20 видео может квантовать блок коэффициентов. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить количество данных, используемых для представления коэффициентов преобразования, обеспечивая дополнительное сжатие. После того как кодер 20 видео квантовал блок коэффициентов, кодер 20 видео может энтропийно кодировать синтаксические элементы, указывающие квантованные коэффициенты преобразования. Например, кодер 20 видео может выполнять контекстно-адаптивное двоичное арифметическое кодирование (CABAC) на синтаксических элементах, указывающих квантованные коэффициенты преобразования.
[0055] Кодер 20 видео может выводить битовый поток, который включает в себя последовательность битов, которая образует представление закодированных картинок и ассоциированных данных. Битовый поток может включать в себя последовательность единиц слоя сетевой абстракции (NAL). Единица NAL представляет собой синтаксическую структуру, содержащую указание типа данных в единице NAL и байты, содержащие эти данные в форме полезной нагрузки необработанной последовательности байтов (RBSP), перемеженных по необходимости с битами предотвращения эмуляции. Каждая из единиц NAL включает в себя заголовок единицы NAL и инкапсулирует RBSP. Заголовок единицы NAL может включать в себя синтаксический элемент, который указывает код типа единицы NAL. Код типа единицы NAL, специфицированный заголовком единицы NAL единицы NAL, указывает тип единицы NAL. RBSP может представлять собой синтаксическую структуру, содержащую целое число байтов, которое инкапсулировано в единице NAL. В некоторых примерах, RBSP включает в себя нулевые биты.
[0056] Разные типы единиц NAL могут инкапсулировать разные типы RBSP. Например, первый тип единицы NAL может инкапсулировать RBSP для набора параметров картинки (PPS), второй тип единицы NAL может инкапсулировать RBSP для закодированного слайса, третий тип единицы NAL может инкапсулировать RBSP для сообщений информации дополнительного расширения (SEI) и так далее. Единицы NAL, которые инкапсулируют RBSP для данных кодирования видео (в противоположность RBSP для наборов параметров и сообщений SEI), могут упоминаться как единицы NAL уровня кодирования видео (VCL).
[0057] Декодер 30 видео может принимать битовый поток, сгенерированный кодером 20 видео. К тому же, декодер 30 видео может проводить синтаксический анализ битового потока, чтобы получить синтаксические элементы из битового потока. Декодер 30 видео может восстанавливать картинки данных видео на основе по меньшей мере частично синтаксических элементов, полученных из битового потока. Процесс для восстановления данных видео может, в общем, быть противоположным процессу, выполняемому кодером 20 видео. К тому же, декодер 30 видео может обратно квантовать блоки коэффициентов, ассоциированные с TU текущей CU. Декодер 30 видео может выполнять обратные преобразования на блоках коэффициентов, чтобы восстанавливать блоки преобразования, ассоциированные с TU текущей CU. Декодер 30 видео может восстанавливать блоки кодирования текущей CU путем добавления выборок предсказанных блоков для PU текущей CU к соответствующим выборкам блоков преобразования TU текущей CU. Путем восстановления блоков кодирования для каждой CU картинки, декодер 30 видео может восстанавливать картинку.
[0058] Теперь будут рассмотрены аспекты методов HEVC и JEM. Фиг. 2 показывает примерную блок-схему декодера 31 HEVC. Декодер 31 видео, показанный на фиг. 2, в общем соответствует декодеру 30 видео, но в отличие от декодера 30 видео, не включает в себя адаптивный контурный фильтр между восстановлением и буфером опорной картинки. Декодер 30 видео проиллюстрирован более подробно на фиг. 5. HEVC применяет два контурных фильтра, включая фильтр устранения блочности (DBF) и фильтр адаптивного смещения выборки (SAO). Дополнительные подробности касательно декодирования HEVC и SAO описаны в C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, “Sample adaptive offset in the HEVC standard,” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1755-1764 (2012).
[0059] Как проиллюстрировано на фиг. 2, ввод в DBF может представлять собой восстановленное изображение после интра- или интер-предсказания, как показано при помощи вывода из блока восстановления. DBF выполняет обнаружение артефактов на границах закодированного блока и ослабляет артефакты путем применения выбранного фильтра. По сравнению с фильтром устранения блочности H.264/AVC, фильтр устранения блочности HEVC имеет более низкую вычислительную сложность и лучшие способности параллельной обработки при достижении значительного уменьшения визуальных артефактов. Для дополнительных примеров, см. A. Norkin, G. Bjontegaard, A. Fuldseth, M. Narroschke, M. Ikeda, K. Andersson, Minhua Zhou, G. Van der Auwera, “HEVC Deblocking Filter,” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1746-1754 (2012).
[0060] В HEVC, решения фильтра устранения блочности принимаются отдельно для каждой границы длиной четыре выборки, которая лежит на сетке, разделяющей картинку на блоки 8×8 выборок. Устранение блочности выполняется на границе блока, если следующие условия истинны: (1) граница блока является границей единицы предсказания (PU) или единицы преобразования (TU); (2) интенсивность границы (Bs), как определено в Таблице 1 ниже, больше нуля; (3) вариация сигнала, как определено в Уравнении (1) ниже, на обеих сторонах границы блока ниже специфицированного порога.
[0061] Таблица 1. Значения интенсивности границы (Bs) для границ между двумя соседними блоками яркости
Условия
Bs
По меньшей мере один из блоков интра-кодирован
2
По меньшей мере один из блоков имеет ненулевой закодированный остаточный коэффициент, и граница является границей единицы преобразования
1
Абсолютные разности между соответствующими компонентами вектора пространственного движения двух блоков >=1 в единицах целых пикселов
1
Предсказание скомпенсированного движения для двух блоков относится к разным опорным картинкам, или число векторов движения отличается для двух блоков
1
Иное
0
Если Bs>0 для границы блока яркости, то фильтрация устранения блочности применяется к этой границе, если удовлетворено следующее условие:
(1)
p
q
где  и  являются значениями выборок яркости на границе, и  является порогом.
[0062] HEVC обеспечивает возможности двух типов фильтров устранения блочности яркости, а именно: (i) нормальный фильтр и (ii) сильный фильтр. Выбор фильтра устранения блочности зависит от того, являются ли пределы отклонения конкретного сигнала меньшими, чем определенные пороги (см. “HEVC Deblocking Filter”, Norkin et al (2012), упомянутый выше, для подробностей). Хотя решения фильтрования основаны на двух строках (или столбцах) вертикальной (или горизонтальной, в зависимости от ситуации) границы длиной четыре пиксела, фильтр применяется к каждой строке (или столбцу, в зависимости от ситуации) на границе. Число пикселов, используемых в процессе фильтрации, и число пикселов, которые могут быть модифицированы с помощью каждого типа фильтрации, кратко изложены в Таблице 2 ниже.
Таблица 2. Число используемых/модифицированных пикселов на границу при устранении блочности HEVC
Используемые пикселы (на любой стороне границы)
Модифицированные пикселы (на любой стороне границы)
Нормальный фильтр
3 или 2
2 или 1
Сильный фильтр
4
3
0
1
0
1
0
0
[0063] Устранение блочности цветности (т.е., фильтрация устранения блочности, выполняемая на компонентах цветности) выполняется, только когда Bs равно двум (2). В HEVC, используется только один тип фильтра устранения блочности цветности. Фильтр устранения блочности цветности использует пикселы p, p, q, q и может модифицировать пикселы p и q в каждой строке (второй индекс, указывающий нижний индекс, опущен в описании выше для краткости, поскольку фильтр применяется к каждой строке). В JEM, устранение блочности выполняется на уровне CU. Размер CU на любой стороне границы может быть больше, чем 8×8. Минимальный размер CU в JEM составляет 4×4. Поэтому, фильтр устранения блочности может также применяться к границам 4×4 блока.
[0064] Вход в фильтр SAO может представлять собой восстановленный блок после применения фильтра устранения блочности, как показано выходом из фильтра устранения блочности на фиг. 2. Кодер видео может применять фильтр SAO, чтобы уменьшить среднее искажение выборки области путем сначала классифицирования выборок области на множество категорий при помощи выбранного классификатора, получения смещения для каждой категории и затем добавления смещения к каждой выборке категории, где индекс классификатора и смещения области кодированы в битовом потоке. В HEVC, область (единица для сигнализации параметров SAO) определяется как CTU.
[0065] Два типа SAO, которые могут удовлетворять требованию низкой сложности, были приняты в HEVC. Этими двумя типами являются SAO смещения края (EO) и смещения полосы (BO), которые рассмотрены более подробно ниже. Кодер 20 видео и декодер 30 видео могут кодировать индекс типа SAO. Для EO, классификация выборок основана на сравнении между текущими выборками и соседними выборками в соответствии с 1-D направленными шаблонами: горизонтальный, вертикальный, диагональный 135° и диагональный 45°.
[0066] Фиг. 3A-3D показывают четыре 1-D направленных шаблона для классификации выборок EO: горизонтальный (фиг. 3A, класс EO=0), вертикальный (фиг. 3B, класс EO=1), диагональный 135° (фиг. 3C, класс EO=2) и горизонтальный 45° (фиг. 3D, класс EO=3). Дополнительные подробности, относящиеся к SAO, описаны в C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, “Sample adaptive offset in the HEVC standard,” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1755-1764 (2012). На фиг. 3A-3D, блок C является текущим блоком, и блоки A и B являются соседними блоками.
Категория(<i>edgeIdx</i>)
Условие
0
C < A && C < B
1
(C < A && C==B ) || (C==A && C<B)
2
(C > A && C==B) || (C == A && C > B)
3
C > A && C > B
4
Ничего из приведенного выше
[0068] Для BO, классификация выборок основана на значениях выборок. Каждый цветной компонент может иметь свои собственные параметры SAO для классификации для фильтрации SAO типа BO. BO подразумевает, что одно смещение добавляется ко всем выборкам одной и той же полосы. Диапазон значений выборок равномерно делится на 32 полосы. Для 8-битных выборок в диапазоне от 0 до 255, ширина полосы составляет 8, и значения выборок от 8k до 8k+7 принадлежат полосе k, где k имеет диапазон от 0 до 31. Одно смещение добавляется ко всем выборкам одной и той же полосы. Средняя разность между исходными выборками и восстановленными выборками в полосе (т.е., смещение полосы) сигнализируется на декодер (например, декодер 30 видео). Не имеется ограничения для знаков смещения. Только смещения четырех (4) последовательных полос и положение начальной полосы сигнализируются на декодер (например, декодер 30 видео).
[0069] Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы реализовывать различные методы адаптивной контурной фильтрации, изложенные в JEM и/или рабочих проектах VVC. Теперь будут описаны аспекты некоторых примерных методов фильтрации JEM (например, ALF). В дополнение к модифицированным способам устранения блочности (DB) и HEVC SAO, JEM включает в себя другой способ фильтрации, называемый адаптивной контурной фильтрацией на основе геометрического преобразования (GALF). Вход в ALF/GALF может представлять собой восстановленное изображение после применения SAO (например, выход адаптивного смещения выборки на фиг. 2). Аспекты GALF описаны в Tsai, C.Y., Chen, C.Y., Yamakage, T., Chong, I.S., Huang, Y.W., Fu, C.M., Itoh, T., Watanabe, T., Chujoh, T., Karczewicz, M. and Lei, S.M., “Adaptive loop filtering for video coding”, IEEE Journal of Selected Topics in Signal Processing, 7(6), pp. 934-945, 2013 и в M. Karczewicz, L. Zhang, W.-J. Chien, and X. Li, “Geometry transformation-based adaptive in-loop filter”, Picture Coding Symposium (PCS), 2016.
p
S
h
(x, y)
p
S
[0070] Методы ALF пытаются минимизировать среднюю квадратичную ошибку между исходными выборками и декодированными/восстановленными выборками с использованием адаптивного фильтра Винера. Обозначим входное изображение как , изображение источника как  и фильтр с конечным импульсным откликом (FIR) как . Тогда следующее выражение суммы квадратичных ошибок (SSE) должно быть минимизировано, где  обозначает положение любого пиксела в  или .
h
h
h(i, j)
opt
Оптимальный , обозначенный как , может быть получен, приравнивая частную производную SSE по  к 0:
h
opt
Это приводит к уравнению Винера-Хопфа, показанному ниже, которое дает оптимальный фильтр :
[0071] В некоторых примерах JEM или VVC, вместо использования одного фильтра для всей картинки, кодер 20 видео и/или декодер 30 видео может быть сконфигурирован, чтобы классифицировать выборки в картинке на двадцать пять (25) классов на основе локальных градиентов. Кодер 20 видео и/или декодер 30 видео может получать отдельные оптимальные фильтры Винера для пикселов в каждом классе. Несколько методов использовалось для повышения эффективности адаптивной контурной фильтрации путем уменьшения издержек сигнализации и вычислительной сложности. Некоторые из методов, которые могут использоваться для повышения эффективности ALF путем уменьшения издержек сигнализации и/или вычислительной сложности, перечислены ниже:
1. Предсказание из фиксированных фильтров: Коэффициенты оптимального фильтра для каждого класса предсказываются с использованием пула предсказаний фиксированных фильтров, которые включают в себя 16 фильтров-кандидатов для каждого класса. Лучший кандидат предсказания выбирается для каждого класса, и передаются только ошибки предсказания.
2. Объединение классов: Вместо использования двадцати пяти (25) разных фильтров (один для каждого класса), пикселы во множестве классов могут совместно использовать один фильтр, чтобы уменьшить число параметров фильтра, подлежащих кодированию. Объединение двух классов может приводить к более высокой совокупной SSE, но более низкой стоимости по критерию искажение-скорость (RD).
3. Переменное число отводов: Число отводов фильтра является адаптивным на уровне кадра. Теоретически, фильтры с большим числом отводов могут достигать более низкой SSE, но может не являться хорошим выбором с точки зрения стоимости RD, из-за битовых издержек, ассоциированных с большими коэффициентами фильтра.
4. Управление включением/выключением на блочном уровне: ALF может включаться и выключаться (разрешаться или блокироваться) на блочной основе. Размер блока, при котором сигнализируется флаг управления включением/выключением, адаптивно выбирается на кадровом уровне. Коэффициенты фильтра могут повторно вычисляться с использованием пикселов только из тех блоков, для которых ALF разрешено (т.е., ALF используется).
5. Временное предсказание: Фильтры, выведенные для ранее закодированных кадров, хранятся в буфере. Если текущий кадр представляет собой P или B кадр, то один из сохраненного набора фильтров может использоваться, чтобы фильтровать этот кадр, если это ведет к лучшей стоимости RD. Флаг сигнализируется, чтобы указывать использование временного предсказания. Если временное предсказание используется, то сигнализируется индекс, указывающий, какой набор сохраненных фильтров используется. Не требуется дополнительной сигнализации коэффициентов ALF. Флаги управления включением/выключением ALF блочного уровня могут также сигнализироваться для кадра с использованием временного предсказания.
k
[0072] Подробности некоторых аспектов ALF кратко изложены в этом и следующих абзацах. Некоторые аспекты ALF относятся к классификации пикселов и геометрическому преобразованию. В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы вычислять суммы абсолютных значений вертикального, горизонтального и диагонального операторов Лапласа во всех пикселах в пределах окна 6×6, которое охватывает каждый пиксел в восстановленном кадре (до ALF). Кодер 20 видео и декодер 30 видео делят восстановленный кадр на неперекрывающиеся блоки 2×2. Кодер 20 видео и декодер 30 видео классифицируют четыре пиксела в этих блоках на одну из двадцати пяти (25) категорий, обозначенных как C (k=0, 1, …, 24), на основе общей активности операторов Лапласа и направленности этого блока. Дополнительно, кодер 20 видео и декодер 30 видео применяют одно из четырех геометрических преобразований (отсутствие преобразования, диагональный переворот, вертикальный переворот или вращение) к фильтрам на основе направленности градиента этого блока. Дополнительные подробности можно найти в M. Karczewicz, L. Zhang, W.-J. Chien, and X. Li, “Geometry transformation-based adaptive in-loop filter,” Picture Coding Symposium (PCS), 2016.
k
k
pred, k
k
C
[0073] Некоторые аспекты адаптивной контурной фильтрации относятся к выводу фильтра и предсказанию из фиксированных фильтров. Для каждого класса C, кодер 20 видео и декодер 30 видео сначала определяют лучший фильтр предсказания из пула для C, обозначенный как h, на основе SSE, выданной фильтрами. SSE , который следует минимизировать, может быть записан следующим образом
C
h
p(x, y)
h
SSE
k
pred
,
k
pred
,
k
K
где  представляет собой разность между оптимальным фильтром для  и . Положим, что  является результатом фильтрации пиксела  посредством . Тогда выражение для  может быть переписано как
SSE
k
Приравнивая частную производную  по  к 0, получим модифицированное уравнение Винера-Хопфа:
Для простоты выражения, обозначим  и  при  как  и , соответственно. Тогда, уравнение выше может быть записано как:
(1)
C
k
Для каждого , матрица  автокорреляции и вектор  кросс-корреляции вычисляются по всем .
[0074] В одном примере адаптивной контурной фильтрации, кодер 20 видео вычисляет и передает только разность между оптимальным фильтром и фиксированным фильтром предсказания. Если ни один из фильтров-кандидатов, доступных в пуле, не является хорошим предсказателем, то кодер 20 видео и декодер 30 видео используют единичный фильтр (т.е., фильтр с только одним ненулевым коэффициентом, равным 1 в центре, что делает вход и выход идентичными) в качестве предсказателя.
C
C
SSE
SSE
C
C
C
SSE
SSE
SSE
+SSE
ΔSSE
C
C
SSE
-(SSE
+SSE
)
SSE
C
m
n
m
n
m
+
n
m
n
m
+
n
m
+
n
m
n
m
+
n
m
n
m
+
n
m
n
m
+
n
m
+
n
[0075] Некоторые аспекты адаптивной контурной фильтрации относятся к объединению классов пикселов. Классы объединяются для уменьшения издержек сигнализации коэффициентов фильтров. Стоимость объединения двух классов повышается относительно SSE. Рассмотрим два класса  и  с SSE, заданными посредством  и , соответственно. Положим, что  обозначает класс, полученный путем объединения  и  с SSE, обозначенной как .  всегда больше или равна . Положим, что  обозначает увеличение в SSE, вызванное объединением  и , которое равно . Чтобы вычислить , кодер 20 видео может вывести , ошибку предсказания фильтра для , с использованием следующего выражения, аналогичного (1):
(2)
C
m
+
n
Кодер 20 видео может вычислить SSE для объединенной категории  как:
N
N-1
C
C
ΔSSE
m
n
m
+
n
[0076] Чтобы уменьшить число классов с  до , может потребоваться найти два класса,  и , так что их объединение приводит к наименьшей  по сравнению с любыми другими комбинациями. В некоторых проектах ALF, кодер 20 видео сконфигурирован, чтобы проверять каждую пару доступных классов для объединения, чтобы найти пару с наименьшей стоимостью объединения.
C
C
C
C
m
n
n
m
[0077] Если  и  (при m<n) объединяются, то кодер 20 видео и декодер 30 видео могут маркировать  как недоступный для дополнительного объединения, и авто- и кросс-корреляции для  изменяются в комбинированные авто- и кросс-корреляции следующим образом:
[0078] Кодер 20 видео может определять оптимальное число классов ALF после объединения для каждого кадра на основе затрат RD. В одном примере, это производится, начиная с двадцати пяти (25) классов и успешно объединяя пару классов (из набора доступных классов), пока не останется только один класс. Для каждого возможного числа классов (1, 2, …, 25), оставшихся после объединения, кодер 20 видео может хранить карту, указывающую, какие классы объединены вместе. Кодер 20 видео затем выбирает оптимальное число классов, так что стоимость RD минимизируется следующим образом:
,
N
N
где  - полная SSE использования  классов (  ),  - полное число битов, используемых для кодирования  фильтров, и  - весовой коэффициент, определенный параметром квантования (QP). Кодер 20 видео может передавать карту объединений для числа  классов, указывающую, какие классы объединены вместе, на декодер 30 видео.
[0079] Аспекты параметров сигнализации ALF описаны ниже. Краткое поэтапное описание примерного процесса кодирования параметров ALF, выполняемого кодером 20 видео, приведено ниже. Декодер 30 видео может быть сконфигурирован, чтобы выполнять противоположный процесс (например, сигналом с точки зрения декодера 30 видео является прием синтаксических элементов).
1. Сигнализировать флаг включения/выключения ALF кадрового уровня.
2. Если ALF включен, то сигнализировать флаг временного предсказания, указывающий использование фильтров из предыдущих картинок.
3. Если временное предсказание используется, то сигнализировать индекс кадра, из которого соответствующие параметры ALF используются для фильтрации текущего кадра.
4. Если временное предсказание не используется, то сигнализировать вспомогательную информацию ALF и коэффициенты фильтра следующим образом:
a. Следующая вспомогательная информация ALF может сигнализироваться перед сигнализацией коэффициентов фильтра. Вспомогательная информация ALF может включать в себя:
i. Число уникальных фильтров, использованных после объединения классов.
ii. Число отводов фильтра.
iii. Информацию объединения классов, указывающую, какие классы совместно используют ошибки предсказания фильтра.
iv. Индекс предсказателя фиксированного фильтра для каждого класса.
b. После сигнализации вспомогательной информации ALF, ошибки предсказания коэффициента фильтра могут сигнализироваться следующим образом:
i. Флаг сигнализируется, чтобы указывать, приводятся ли к нулю (0) ошибки предсказания фильтра для некоторых из оставшихся классов после объединения.
ii. Флаг сигнализируется, чтобы указывать, используется ли дифференциальное кодирование для сигнализации ошибок предсказания фильтра (если число классов, оставшихся после объединения, больше одного (1)).
iii. Ошибки предсказания коэффициента фильтра затем сигнализируются с использованием экспоненциального кода Голомба k-го порядка, где значение k для разных положений коэффициентов выбирается эмпирически.
c. Коэффициенты фильтра для компонентов цветности, если имеются, напрямую кодируются без каких-либо способов предсказания.
5. Наконец, сигнализируются флаги управления включением/выключением ALF блочного уровня.
[0080] Проект адаптивной контурной фильтрации в некоторых примерах JEM может представлять одну или несколько потенциальных проблем. В качестве одного примера, некоторые примерные проекты адаптивной контурной фильтрации выполняют множество проходов по каждому кадру, чтобы создать один набор фильтров (например, один фильтр для каждого класса пикселов или один фильтр, совместно используемый среди множества классов в кадре) для всего кадра. Такие методы вводят высокую задержку кодера. Высокая задержка кодера может быть особенно проблематичной в применениях с низким запаздыванием, таких как видеоконференции, где может быть важно по возможности быстро отправлять в канал даже частично закодированный кадр.
[0081] В качестве другого примера, в соответствии с некоторыми проектами адаптивной контурной фильтрации, один набор фильтров используется для всей картинки. Локальная статистика в малом блоке исходной картинки и восстановленной картинки может отличаться от совокупной статистики, полученной с использованием всей картинки. Поэтому, ALF, которая является оптимальной для всей картинки, может быть неоптимальной для данного блока.
[0082] В качестве другого примера, потенциальная проблема с проектированием нового набора фильтров Винера с использованием малого блока картинки, чтобы получить лучшую локальную адаптивность, состоит в том, что число пикселов, доступных в малом блоке, может быть недостаточным, чтобы кодер 20 видео определил хорошую оценку матриц и векторов корреляции. Это может приводить к некорректным уравнениям Винера-Хопфа, что, в свою очередь, может давать менее чем оптимальные коэффициенты ALF.
[0083] В качестве другого примера, некоторые примерные проекты адаптивной контурной фильтрации определяют шестнадцать (16) фиксированных фильтров для каждого из двадцати пяти (25) классов, тем самым выдавая всего четыреста (400) фильтров. Эти фильтры могут использоваться как фильтры предсказателя для конечных коэффициентов фильтра для каждого класса. Индекс используемого фильтра предсказателя сигнализируется для каждого класса. Это может вызывать высокие издержки сигнализации и уменьшать общий выигрыш кодирования.
[0084] Другой потенциальный недостаток использования фиксированного набора фильтров в качестве предсказателей состоит в том, что набор предсказателей не модифицируется на основе новых фильтров, спроектированных для предыдущих кадров. Поскольку соседние по времени кадры по всей вероятности имеют сходную статистику, использование оптимальных фильтров для предыдущих кадров может приводить к эффективному предсказанию оптимальных фильтров для текущего кадра.
[0085] В качестве другого примера, некоторые примерные проекты адаптивной контурной фильтрации требуют двух проходов по текущему кадру, чтобы принять решения о включении/выключении фильтра блочного уровня. Это вводит дополнительную задержку кодера. Блоки, для которых сигнализируются флаги включения/выключения ALF, не выровнены с единицами кодирования (CU). Поэтому, информация CU, такая как режим, флаг закодированного блока и т.д. не могут учитываться в решении управления включением/выключением ALF. Использование этой информации может уменьшить издержки сигнализации включения/выключения.
[0086] Чтобы решить одну или несколько из проблем, рассмотренных выше, настоящее раскрытие описывает методы для дополнительного улучшения выигрышей кодирования и визуального качества, получаемых с использованием адаптивной контурной фильтрации. Кодер 20 видео и/или декодер 30 видео могут применять любой из следующих перечисленных методов. Альтернативно, кодер 20 видео и/или декодер 30 видео может применять любую комбинацию перечисленных методов, обсужденных ниже.
[0087] В соответствии с одним примерным методом настоящего раскрытия, кодер 20 видео может сигнализировать набор адаптивных контурных фильтров поблочно в одной картинке/слайсе/тайле. Например, для каждого блока данных видео в картинке, слайсе или тайле данных видео, кодер 20 видео может быть сконфигурирован, чтобы кодировать один или несколько синтаксических элементов, указывающих набор адаптивных контурных фильтров, подлежащих использованию для блока. Декодер 30 видео может быть сконфигурирован, чтобы декодировать один или несколько синтаксических элементов для каждого блока, чтобы определять набор адаптивных контурных фильтров, подлежащих использованию для блока.
[0088] В одном примере, кодер 20 видео может быть сконфигурирован, чтобы указывать набор ALF (например, набор адаптивных контурных фильтров, упомянутых выше) путем кодирования индекса набора в список наборов фильтров (например, множество наборов адаптивных контурных фильтров). В настоящем раскрытии, термин “набор фильтров” может относиться к одному набору адаптивных контурных фильтров, термин “наборы фильтров” может относиться к множеству наборов адаптивных контурных фильтров, и термин “список наборов фильтров” может относиться к списку множества наборов адаптивных контурных фильтров. В одном примере, список наборов фильтров может включать в себя множество наборов адаптивных контурных фильтров. То есть, список наборов фильтров может включать в себя все определенные возможные наборы фильтров (т.е., множество наборов адаптивных контурных фильтров) для картинки/слайса/тайла. Индекс, в некоторых примерах, идентифицирует конкретный набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, включенных в список. Декодер 30 видео может быть сконфигурирован, чтобы хранить и/или определять множество наборов адаптивных контурных фильтров в соответствии с предопределенными правилами. Как будет обсуждено ниже, множество наборов адаптивных контурных фильтров может включать в себя предварительно обученные фильтры, адаптивные контурные фильтры, которые сигнализируются для текущей картинке, и адаптивные контурные фильтры, которые используются повторно из предыдущих картинок. В одном примере, для конкретного набора адаптивных контурных фильтров, каждый соответственный набор конкретного набора адаптивных контурных фильтров включает в себя один или более из текущего адаптивного контурного фильтра, сигнализированного для текущей картинки, или предварительно обученного адаптивного контурного фильтра. Декодер 30 видео может быть сконфигурирован, чтобы декодировать индекс, отправленный кодером 20 видео, и определять набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, чтобы использовать для конкретного блока данных видео.
[0089] Таким образом, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация. В одном примере раскрытия, каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, использованный в одной или нескольких предыдущих картинках. Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров для соответственного блока текущей картинки в случае, когда адаптивная контурная фильтрация разрешена для блока (например, как указано флагом включения/выключения ALF).
[0090] Кодер 20 видео и декодер 30 видео могут быть дополнительно сконфигурированы, чтобы осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров. Например, как описано выше, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы классифицировать выборки блока и затем использовать адаптивный контурный фильтр в соответственном наборе адаптивных контурных фильтров, который ассоциирован с классификацией. В другом примере, кодер 20 видео может быть сконфигурирован, чтобы сигнализировать синтаксический элемент, который указывает, какой адаптивный контурный фильтр в соответственном наборе адаптивных контурных фильтров следует использовать для текущего блока. Соответственно, в одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать соответственный флаг на блок, указывая, используется ли адаптивная контурная фильтрация для соответственного блока (например, флаг включения/выключения ALF блочного уровня), и кодировать, на основе соответственного флага на блок, соответственный синтаксический элемент, указывающий соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки. В некоторых примерах, кодер 20 видео и декодер 30 видео не будут кодировать соответственный синтаксический элемент, указывающий соответственный набор адаптивных контурных фильтров, в случае, когда адаптивная контурная фильтрация не используется для текущего блока (например, флаг ALF блочного уровня указывает, что адаптивная контурная фильтрация выключена и/или не разрешена).
[0091] В примерах выше, “блок” текущей картинки может определяться как любой размер блока. В одном примере, блок может представлять собой единицу дерева кодирования (CTU) или любой другой блок. Блок может быть не связан с разбиением. В случае, когда блок представляет собой CTU, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы использовать набор адаптивных контурных фильтров, сигнализируемый для CTU для всех блоков, разделенных из CTU.
[0092] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять список множества наборов адаптивных контурных фильтров. Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять такой список на картинку, на слайс или на тайл. Каждый набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров может быть сконфигурирован так, что каждая возможная классификация выборок имеет ассоциированный фильтр. То есть, каждый набор может содержать фильтр, назначенный на класс. Как описано выше, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать индекс набора в список из множества наборов адаптивных контурных фильтров на блок. В одном примере, список множества наборов адаптивных контурных фильтров может представлять собой таблицу, где каждая запись в таблице представляет собой конкретный набор адаптивных контурных фильтров. К тому же, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать флаг на блок для указания, используется или нет ALF (например, флаг включения/выключения ALF блочного уровня). Список множества наборов адаптивных контурных фильтров может включать в себя один или несколько предварительно обученных фильтров, один или несколько фильтров, выведенных с использованием фильтров из предыдущих картинок, и/или фильтры, сигнализированные в битовом потоке для текущей картинки.
[0093] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео и/или декодер 30 видео могут совместно использовать список множества наборов фильтров по разным картинкам (например, адаптивный контурный фильтр, использованный для предыдущей картинки, включен в набор из множества наборов фильтров, использованных для кодирования текущего блока). В одном примере, список наборов фильтров может быть инициализирован с предварительно обученными фильтрами. После кодирования картинки, кодер 20 видео может выводить новый набор фильтров на основе закодированной картинки и добавлять новый набор фильтров в список наборов фильтров. Альтернативно, новый набор фильтров может заменять существующий набор фильтров в списке. После кодирования другой картинки, кодер 20 видео может выводить другой набор фильтров и включать выведенный набор фильтров в список наборов фильтров. В этом примере, список наборов фильтров является общим для всех картинок и может обновляться после кодирования картинки. Со стороны декодера, декодер 30 видео может обнаруживать сигнализацию нового набора фильтров после декодирования картинки или перед декодированием картинки.
[0094] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео может быть сконфигурирован, чтобы сигнализировать (например, кодировать) синтаксические элементы нового набора фильтров на картинку, на слайс и/или на тайл. Декодер 30 видео может быть сконфигурирован, чтобы определять новый набор фильтров на основе сигнализации от кодера 20 видео и добавлять новый набор фильтров в список, включающий в себя множество наборов фильтров.
[0095] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять новый набор фильтров в список наборов фильтров. Обновленный список может затем использоваться, чтобы фильтровать блок в следующей картинке или картинках. В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы использовать обновленный список (например, содержащий новый набор фильтров, выведенных с использованием текущей картинки/слайса/тайла), чтобы фильтровать блок в текущей картинке/слайсе/тайле.
[0096] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео и декодер 30 видео могут обновлять список наборов фильтров (например, список множества наборов адаптивных контурных фильтров) фильтрами, выведенными с использованием предыдущих картинок, предыдущих слайсов и/или предыдущих тайлов. Порядок, в котором кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять наборы адаптивных контурных фильтров в список наборов фильтров, может быть фиксированным, предопределенным или гибким. Список может переупорядочиваться в расчете на картинку на основе информации, относящейся к текущей картинке, и информации, относящейся к картинкам, из которых выведены соответствующие фильтры в списке. Кодер 20 видео может указывать набор фильтров декодеру 30 видео с использованием индекса в списке наборов фильтров. В некоторых примерах, кодер 20 видео может назначать меньшее значение индекса более часто используемым фильтрам или заново добавленным фильтрам.
[0097] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять заново выведенный набор фильтров в начало списка. В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять наборы фильтров, выведенные с использованием предыдущих кадров (например, предыдущие адаптивные контурные фильтры), в список после текущих сигнализированных фильтров и перед наборами существующих фильтров в списке (например, наборами предварительно обученных фиксированных фильтров). В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять адаптивные контурные фильтры в каждый соответственный набор адаптивных контурных фильтров, так что текущие адаптивные контурные фильтры добавляются первыми, предыдущие адаптивные контурные фильтры добавляются вторыми, и предварительно обученные адаптивные контурные фильтры добавляются последними.
[0098] В другом примере раскрытия, упорядочивание наборов фильтров в списке может зависеть от другой связанной с картинкой информации. Например, фильтры, выведенные из картинок на том же самом временном уровне, что и текущая картинка, могут помещаться в списке перед фильтрами, выведенными с использованием картинок на другом временном уровне. В другом примере, индекс набора фильтров в списке может зависеть от того, является ли соответствующая картинка, из которой он выведен, опорной картинкой, используемой для предсказания текущей картинки. Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять фильтры, соответствующие более часто используемой опорной картинке, перед фильтрами, выведенными из других опорных картинок. Упорядочивание наборов фильтров таким образом может приводить к синтаксическим элементам (например, индексам в списке наборов фильтров) с меньшим количеством битов для наиболее часто используемых наборов фильтров в списке наборов фильтров. Соответственно, меньше битов может использоваться для сигнализации набора фильтров, используемого для блока, тем самым повышая эффективность кодирования.
[0099] В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять фильтры, выведенные с использованием картинок, закодированных с аналогичным параметром квантования (QP), в текущую картинку перед фильтрами, выведенными из предыдущих картинок, закодированных с другим QP.
[0100] В другом примере раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы ограничивать максимальное число наборов фильтров в списке наборов фильтров. В одном примере, до тридцати двух (32) наборов фильтров могут сохраняться в списке наборов фильтров. В некоторых примерах, кодер 20 видео может быть сконфигурирован, чтобы сигнализировать максимальное число наборов фильтров в списке в заголовке слайса, наборе параметров последовательности, наборе параметров картинки, в другой информации синтаксиса высокого уровня или где-либо еще.
[0101] В другом примере раскрытия, кодер 20 видео может использовать разное число битов, чтобы сигнализировать разные индексы наборов фильтров. Меньше битов может использоваться, чтобы указывать более низкое положение индекса в списке (поскольку наборы фильтров вверху списка будут выбираться с большей вероятностью) по сравнению с более высоким положением индекса. Вновь, это может приводить к тому, что меньше битов используется, чтобы сигнализировать набор фильтров, более часто используемый для блока, тем самым повышая эффективность кодирования.
[0102] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы совместно использовать информацию ALF для некоторых блоков (например, объединение информации ALF по двум или более блокам). В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы совместно использовать индекс набора фильтров и/или флаг включения/выключения ALF (этот флаг указывает, применяется ли адаптивная контурная фильтрация к блоку) по множеству блоков. Указатель объединения ALF может указывать, какие блоки объединены, и какая информация ALF ассоциирована с указателем объединения ALF. Указатель объединения может представлять собой индекс, флаг или любой другой синтаксический элемент.
[0103] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы объединять информацию ALF блока с блоком выше или с блоком слева. В других примерах, может также использоваться более гибкая информация объединения ALF, которая разрешает объединение одного блока с любым другим блоком (т.е., не обязательно соседним блоком) в картинке.
[0104] В некоторых примерах настоящего раскрытия, декодер 30 видео может быть сконфигурирован, чтобы выводить флаг включения/выключения ALF на основе другой существующей информации блока. В одном примере, декодер 30 видео может выводить флаг включения/выключения ALF на основе существующей информации блока, и например, кодер 20 видео может не сигнализировать флаг включения/выключения ALF. Кодер 20 видео может сигнализировать флаг включения/выключения ALF для группы блоков, обозначенной как блок ALF. Размер блока ALF может быть предопределен или может сигнализироваться кодером 20 видео. В одном примере, блоки, совместно использующие тот же самый флаг включения/выключения ALF, могут представлять блок ALF. В другом примере, блок ALF может быть равен блоку.
a. В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы выводить флаг включения/выключения ALF на основе числа блоков в блоке ALF, которые совместно используют тот же самый флаг включения/выключения ALF, имеющий ненулевые флаги закодированных блоков (CBF). CBF указывает, включает ли в себя блок что-либо значимое (например, ненулевые коэффициенты преобразования). Значение “1” для CBF указывает, что блок включает в себя ненулевые коэффициенты преобразования. Если число ненулевых CBF меньше определенного порога, то ALF может блокироваться, или фильтр ALF по умолчанию может применяться к этим блокам в блоке ALF.
b. В примере под-пункта ‘a’ выше, может подсчитываться число ненулевых коэффициентов преобразования вместо CBF. Может вводиться порог для подсчитанных коэффициентов, и если число ненулевых коэффициентов преобразования меньше порога, адаптивная контурная фильтрация может блокироваться для блоков, включенных в блок ALF, или фильтр ALF по умолчанию может применяться к этим блокам.
c. В другом примере, если число блоков в блоке ALF, закодированном с режимом пропуска, больше определенного порога, то адаптивная контурная фильтрация может блокироваться для этих блоков в блоке ALF. Методы под-пункта ‘c’ могут использоваться вместе с методами под-пункта ‘a’ и ‘b’ в любой комбинации.
d. В примере под-пункта ‘c’ выше, режим пропуска используется в качестве примера, и другие режимы кодирования (например, конкретный режим, такой как конкретное направление интра-предсказания, конкретный режим интер-предсказания и т.д.) могут использоваться при выведении флага включения/выключения ALF.
[0105] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный кодер 20 видео, который может реализовывать методы, описанные в настоящем раскрытии. Кодер 20 видео может выполнять интра- и интер-кодирование блоков видео в слайсах видео. Интра-кодирование опирается на пространственное предсказание для уменьшения или удаления пространственной избыточности в видео в пределах данного кадра или картинки видео. Интер-кодирование опирается на временное предсказание для уменьшения или удаления временной избыточности в видео в пределах смежных кадров или картинок последовательности видео. Интра-режим (I-режим) может относиться к любому из нескольких режимов сжатия на пространственной основе. Интер-режимы, такие как однонаправленное предсказание (P-режим) или би- (двунаправленное) предсказание (B-режим), могут относиться к любому из нескольких режимов сжатия на временной основе.
[0106] В примере на фиг. 4, кодер 20 видео включает в себя память 33 данных видео, модуль 35 разбиения, модуль 41 обработки предсказания, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования, модуль 56 энтропийного кодирования. Модуль 41 обработки предсказания включает в себя модуль 42 оценки движения (MEU), модуль 44 компенсации движения (MCU) и модуль 46 интра-предсказания. Для восстановления блока видео, кодер 20 видео также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования, сумматор 62, модуль 64 фильтрации и буфер 66 декодированной картинки (DPB).
[0107] Как показано на фиг. 4, кодер 20 видео принимает данные видео и сохраняет принятые данные видео в памяти 33 данных видео. Память 33 данных видео может хранить данные видео, подлежащие кодированию компонентами кодера 20 видео. Данные видео, хранящиеся в памяти 33 данных видео, можно получить, например, из источника 18 видео. DPB 66 может представлять собой память опорной картинки, которая хранит опорные данные видео для использования при кодировании данных видео кодером 20 видео, например, в режимах интра- или интер-кодирования. Память 33 данных видео и DPB 66 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 33 данных видео и DPB 66 могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 33 данных видео может быть на чипе с другими компонентами кодера 20 видео или вне чипа относительно этих компонентов.
[0108] Модуль 35 разбиения извлекает данные видео из памяти 33 данных видео и разбивает данные видео на блоки видео. Это разбиение может также включать в себя разбиение на слайсы, тайлы или другие большие единицы, а также разбиение блока видео, например, в соответствии со структурой квадродерева LCU и CU. Кодер 20 видео, в общем, иллюстрирует компоненты, которые кодируют блоки видео в пределах слайса видео, подлежащие кодированию. Слайс может делиться на множество блоков видео (и возможно на наборы блоков видео, упоминаемых как тайлы). Модуль 41 обработки предсказания может выбирать один из множества возможных режимов кодирования, например, один из множества режимов интра-кодирования или один из множества режимов интер-кодирования, для текущего блока видео на основе ошибочных результатов (например, скорости кодирования и уровня искажения). Модуль 41 обработки предсказания может обеспечивать результирующий интра- или интер-кодированный блок на сумматор 50, чтобы генерировать остаточные данные блока, и на сумматор 62, чтобы восстанавливать закодированный блок для использования в качестве опорной картинки.
[0109] Модуль 46 интра-предсказания в модуле 41 обработки предсказания может выполнять кодирование с интра-предсказанием текущего блока видео относительно одного или нескольких соседних блоков в том же самом кадре или слайсе, что и текущий блок, подлежащий кодированию, чтобы обеспечить пространственное сжатие. Модуль 42 оценки движения и модуль 44 компенсации движения в модуле 41 обработки предсказания выполняют кодирование с интер-предсказанием текущего блока видео относительно одного или нескольких предсказанных блоков в одной или нескольких опорных картинках, чтобы обеспечить временное сжатие.
[0110] Модуль 42 оценки движения может быть сконфигурирован, чтобы определять режим интер-предсказания для слайса видео в соответствии с предопределенным шаблоном для последовательности видео. Предопределенный шаблон может назначать слайс видео в последовательности как P-слайса или B-слайса. Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, но проиллюстрированы по отдельности в концептуальных целях. Оценка движения, выполняемая модулем 42 оценки движения, представляет собой процесс генерации векторов движения, которые оценивают движение для блоков видео. Вектор движения, например, может указывать перемещение PU блока видео в текущем кадре видео или картинке относительно предсказанного блока в опорной картинке.
[0111] Предсказанный блок представляет собой блок, который найден близко совпадающим с PU блока видео, подлежащего кодированию, в терминах пиксельной разности, которая может определяться суммой абсолютной разности (SAD), суммы квадратов разности (SSD) или другими метриками разности. В некоторых примерах, кодер 20 видео может вычислять значения для суб-целочисленных пиксельных положений опорных картинок, хранящихся в DPB 66. Например, кодер 20 видео может интерполировать значения положений в одну четверть пиксела, положений в одну восьмую пиксела или других дробно-пиксельных положений опорной картинки. Поэтому, модуль 42 оценки движения может выполнять поиск движения относительно полно-пиксельных положений и дробно-пиксельных положений и выводить вектор движения с дробно-пиксельной точностью.
[0112] Модуль 42 оценки движения вычисляет вектор движения для PU блока видео в интер-кодированном слайсе путем сравнения положения PU с положением предсказанного блока опорной картинки. Опорная картинка может выбираться из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), все из которых идентифицируют одну или несколько опорных картинок, сохраненных в DPB 66. Модуль 42 оценки движения отправляет вычисленный вектор движения на модуль 56 энтропийного кодирования и модуль 44 компенсации движения.
[0113] Компенсация движения, выполняемая модулем 44 компенсации движения, может включать в себя извлечение или генерацию предсказанного блока на основе вектора движения, определенного оценкой движения, возможно выполняя интерполяцию с суб-пиксельной точностью. После приема вектора движения для PU текущего блока видео, модуль 44 компенсации движения может определять местоположение предсказанного блока, на который указывает вектор движения, в одном из списков опорных картинок. Кодер 20 видео формирует остаточный блок видео путем вычитания пиксельных значений предсказанного блока из пиксельных значений текущего кодируемого блока видео, формируя пиксельные разностные значения. Пиксельные разностные значения формируют остаточные данные для блока и могут включать в себя разностные компоненты как яркости, так и цветности. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 44 компенсации движения может также генерировать синтаксические элементы, ассоциированные с блоками видео и слайсом видео для использования декодером 30 видео при декодировании блоков видео слайса видео.
[0114] После того, как модуль 41 обработки предсказания сгенерировал предсказанный блок для текущего блока видео, посредством либо интра-предсказания, либо интер-предсказания, кодер 20 видео образует остаточный блок видео путем вычитания предсказанного блока из текущего блока видео. Остаточные данные видео в остаточном блоке могут быть включены в одну или несколько TU и подаваться на модуль 52 обработки преобразования. Модуль 52 обработки преобразования преобразует остаточные данные видео в остаточные коэффициенты преобразования с использованием преобразования, такого как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование. Модуль 52 обработки преобразования может преобразовывать остаточные данные видео из пиксельной области в область преобразований, такую как частотная область.
[0115] Модуль 52 обработки преобразования может отправлять результирующие коэффициенты преобразования на модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшить битовую скорость. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Степень квантования может модифицироваться путем регулирования параметра квантования. В некоторых примерах, модуль 54 квантования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В другом примере, модуль 56 энтропийного кодирования может выполнять сканирование.
[0116] Вслед за квантованием, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), контекстно-адаптивное двоичное арифметическое кодирование на основе синтаксиса (SBAC), энтропийное кодирование с разбиением интервалов вероятности (PIPE) или другую методологию или метод энтропийного кодирования. Вслед за энтропийным кодированием модулем 56 энтропийного кодирования, закодированный битовый поток может передаваться на декодер 30 видео или архивироваться для дальнейшей передачи или извлечения декодером 30 видео. Модуль 56 энтропийного кодирования может также энтропийно кодировать векторы движения и другие синтаксические элементы для текущего кодируемого слайса видео, обеспеченного модулем 51 обработки предсказания.
[0117] Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области для дальнейшего использования в качестве опорного блока опорной картинки. Модуль 44 компенсации движения может вычислять опорный блок путем суммирования остаточного блока с предсказанным блоком одной из опорных картинок в одном из списков опорных картинок. Модуль 44 компенсации движения может также применять один или несколько фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования в оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с блоком предсказания скомпенсированного движения, сформированным модулем 54 компенсации движения, чтобы сформировать восстановленный блок.
[0118] Модуль 64 фильтрации фильтрует восстановленный блок (например, выход сумматора 62) и сохраняет отфильтрованный восстановленный блок в DPB 66 для использований в качестве опорного блока. Опорный блок может использоваться модулем 52 оценки движения и модулем 54 компенсации движения в качестве опорного блока, чтобы интер-предсказывать блок в последующем кадре видео или картинке. Модуль 64 фильтрации может выполнять любой тип фильтрации, такой как фильтрация устранения блочности, фильтрация SAO, пиковая фильтрация SAO, ALF и/или GALF и/или другие типы контурных фильтров. Фильтр устранения блочности может, например, применять фильтрацию устранения блочности, чтобы фильтровать границы блока, чтобы удалять артефакты блочности из восстановленного видео. Пиковый фильтр SAO может применять смещения к восстановленным пиксельным значениям, чтобы улучшить общее качество кодирования. Могут также использоваться дополнительные контурные фильтры (внутриконтурные или пост-контурные).
[0119] К тому же, модуль 64 фильтрации может быть сконфигурирован, чтобы выполнять любой из методов в настоящем раскрытии, относящихся к адаптивной контурной фильтрации. В частности, как описано выше, модуль 64 фильтрации может быть сконфигурирован, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.
[0120] Фиг. 5 представляет собой блок-схему, иллюстрирующую примерный декодер 30 видео, который может реализовывать методы, описанные в настоящем раскрытии. Декодер 30 видео согласно фиг. 5 может, например, быть сконфигурирован, чтобы принимать сигнализацию, описанную выше в отношении кодера 20 видео на фиг. 4. В примере на фиг. 5, декодер 30 видео включает в себя память 78 данных видео, модуль 80 энтропийного декодирования, модуль 81 обработки предсказания, модуль 86 обратного квантования, модуль 88 обработки обратного преобразования, сумматор 90, DPB 94 и модуль 92 фильтрации. Модуль 81 обработки предсказания включает в себя модуль 82 компенсации движения и модуль 84 интра-предсказания. Декодер 30 видео может, в некоторых примерах, выполнять проход декодирования, в общем противоположный проходу кодирования, описанному в отношении кодера 20 видео на фиг. 4.
[0121] Во время процесса декодирования, декодер 30 видео принимает закодированный битовый поток видео, который представляет блоки видео закодированного слайса видео, и ассоциированные синтаксические элементы от кодера 20 видео. Декодер 30 видео сохраняет принятый закодированный битовый поток видео в памяти 78 данных видео. Память 78 данных видео может хранить данные видео, такие как закодированный битовый поток видео, подлежащий декодированию компонентами декодера 30 видео. Данные видео, хранящиеся в памяти 78 данных видео, можно получить, например, по линии 16 связи, от устройства 26 хранения или от локального источника видео, такого как камера, или путем осуществления доступа к физическим носителям данных. Память 78 данных видео может образовывать буфер закодированной картинки (CPB), который хранит закодированные данные видео из закодированного битового потока видео. DPB 94 может представлять собой память опорной картинки, которая хранит опорные данные видео для использования при декодировании данных видео декодером 30 видео, например, в режимах интра- или интер-кодирования. Память 78 данных видео и DPB 94 могут быть образованы любым из множества устройств памяти, таких как DRAM, SDRAM, MRAM, RRAM или другие типы устройств памяти. Память 78 данных видео и DPB 94 могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 78 данных видео может находиться на чипе с другими компонентами декодера 30 видео или вне чипа относительно этих компонентов.
[0122] Модуль 80 энтропийного декодирования декодера 30 видео энтропийно декодирует данные видео, хранящиеся в памяти 78 данных видео, чтобы генерировать квантованные коэффициенты, векторы движения и другие синтаксические элементы. Модуль 80 энтропийного декодирования направляет векторы движения и другие синтаксические элементы на модуль 81 обработки предсказания. Декодер 30 видео может принимать синтаксические элементы на уровне слайса видео и/или уровне блока видео.
[0123] Когда слайс видео закодирован как интра-закодированный (I) слайс, модуль 84 интра-предсказания модуля 81 обработки предсказания может генерировать данные предсказания для блока видео текущего слайса видео на основе сигнализированного режима интра-предсказания и данных из ранее декодированных блоков текущего кадра или картинки. Когда кадр видео закодирован как интер-кодированный слайс (например, B-слайс или P-слайс), модуль 82 компенсации движения модуля 81 обработки предсказания формирует предсказанные блоки для блока видео текущего слайса видео на основе векторов движения и других синтаксических элементов, принятых от модуля 80 энтропийного декодирования. Предсказанные блоки могут формироваться из одной из опорных картинок в одном из списков опорных картинок. Декодер 30 видео может создавать списки опорных кадров, Список 0 и Список 1, с использованием методов создания по умолчанию на основе опорных картинок, хранящихся в DPB 94.
[0124] Модуль 82 компенсации движения определяет информацию предсказания для блока видео текущего слайса видео путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания, чтобы формировать предсказанные блоки для текущего декодируемого блока видео. Например, модуль 82 компенсации движения использует некоторые из принятых синтаксических элементов, чтобы определить режим предсказания (например, интра- или интер-предсказание), использованный для кодирования блоков видео слайса видео, тип слайса интер-предсказания (например, B-слайс или P-слайс), информацию создания для одного или нескольких списков опорных картинок для слайса, векторы движения для каждого интер-закодированного блока видео слайса, статус интер-предсказания для каждого интер-закодированного блока видео слайса и другую информацию для декодирования блоков видео в текущем слайсе видео.
[0125] Модуль 82 компенсации движения может также выполнять интерполяцию на основе фильтров интерполяции. Модуль 82 компенсации движения может использовать фильтры интерполяции, как использовано кодером 20 видео во время кодирования блоков видео, чтобы вычислить интерполированные значения для суб-целочисленных пикселов опорных блоков. В этом случае, модуль 82 компенсации движения может определять фильтры интерполяции, использованные кодером 20 видео, из принятых синтаксических элементов и использовать фильтры интерполяции, чтобы формировать предсказанные блоки.
[0126] Модуль 86 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты преобразования, обеспеченные в битовом потоке и декодированные модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного кодером 20 видео для каждого блока видео в слайсе видео, чтобы определить степень квантования и, подобным же образом, степень обратного квантования, которая должна применяться. Модуль 88 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целое преобразование или концептуально аналогичный процесс обратного преобразования к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области.
[0127] После того, как модуль 81 обработки предсказания сгенерировал предсказанный блок для текущего блока видео с использованием, например, интра- или интер-предсказания, декодер 30 видео формирует восстановленный блок видео путем суммирования остаточных блоков из модуля 88 обработки обратного преобразования с соответствующими предсказанными блоками, сгенерированными модулем 82 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования.
[0128] Модуль 92 фильтрации фильтрует восстановленный блок (например, выход сумматора 90) и сохраняет отфильтрованный восстановленный блок в DPB 94 для использований в качестве опорного блока. Опорный блок может использоваться модулем 82 компенсации движения в качестве опорного блока, чтобы интер-предсказывать блок в последующем кадре видео или картинке. Модуль 92 фильтрации может выполнять любой тип фильтрации, такой как фильтрация устранения блочности, фильтрация SAO, пиковая фильтрация SAO, ALF и/или GALF и/или другие типы контурных фильтров. Фильтр устранения блочности может, например, применять фильтрацию устранения блочности, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Пиковый фильтр SAO может применять смещения к значениям восстановленных пикселов, чтобы улучшить общее качество кодирования. Могут также использоваться дополнительные контурные фильтры (внутриконтурные или пост-контурные).
[0129] К тому же, модуль 92 фильтрации может быть сконфигурирован, чтобы выполнять любой из методов в настоящем раскрытии, относящихся к адаптивной контурной фильтрации. В частности, как описано выше, модуль 92 фильтрации может быть сконфигурирован, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, использованный в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.
[0130] Фиг. 6 показывает примерную реализацию модуля 92 фильтрации. Модуль 64 фильтрации может быть реализован аналогичным образом. Модули 64 и 92 фильтрации могут выполнять методы настоящего раскрытия, возможно во взаимосвязи с другими компонентами кодера 20 видео или декодера 30 видео. В примере на фиг. 6, модуль 92 фильтрации включает в себя фильтр 102 устранения блочности, фильтр 104 SAO и фильтр 106 ALF/GALF. Фильтр 104 SAO может, например, быть сконфигурирован, чтобы определять значения смещения для выборок блока, как описано в настоящем раскрытии. Фильтр 106 ALF/GALF может быть сконфигурирован, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, использованный в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.
[0131] Модуль 92 фильтрации может включать в себя меньше фильтров и/или может включать в себя дополнительные фильтры. Дополнительно, конкретные фильтры, показанные на фиг. 6, могут быть реализованы в другом порядке. Другие контурные фильтры (либо в контуре кодирования, либо после контура кодирования) могут также использоваться для сглаживания пиксельных переходов или улучшения иным образом качества видео. Декодированные блоки видео в данном кадре или картинке затем сохраняются в DPB 94, который хранит опорные картинки, используемые для последующей компенсации движения. DPB 94 может быть частью или быть отдельным от дополнительной памяти, которая хранит декодированное видео для дальнейшего представления на устройстве отображения, таком как устройство 32 отображения на фиг. 1.
[0132] Фиг. 7 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ раскрытия. Методы согласно фиг. 7 могут выполняться одной или несколькими структурными модулями кодера 20 видео и декодера 30 видео, включая модуль 64 фильтрации и модуль 92 фильтрации. Как рассмотрено выше, термин “кодирование”, в общем, относится как к кодированию, так и к декодированию. Подобным же образом, термин “кодировать”, в общем, включает в себя как кодировать, так и декодировать.
[0133] В одном примере раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках (700). В одном примере, чтобы определить соответственные наборы адаптивных контурных фильтров, кодер 20 видео и декодер 30 видео дополнительно сконфигурированы, чтобы кодировать соответственный флаг на блок, указывающий, используется ли адаптивная контурная фильтрация для соответственного блока, и кодировать, на основе соответственного флага на блок, соответственный синтаксический элемент, указывающий соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки. В одном примере, соответственный синтаксический элемент представляет собой индекс для списка, включающего в себя множество наборов адаптивных контурных фильтров. Кодер 20 видео и декодер 30 видео могут быть дополнительно сконфигурированы, чтобы осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров (702).
[0134] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую другой примерный способ раскрытия. Фиг. 8 показывает пример методов согласно фиг. 7 более подробно. Например, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать блок данных видео в текущей картинке, чтобы создать восстановленный блок данных видео (800). То есть, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать первый блок данных видео в текущей картинке, чтобы создать первый восстановленный блок данных видео.
[0135] Кодер 20 видео и декодер 30 видео могут тогда быть сконфигурированы, чтобы определять, является ли флаг включения/выключения ALF блочного уровня включенным (802). Если нет, кодер 20 видео и декодер 30 видео не применяют ALF и вместо этого приступают к кодированию следующего блока данных видео (810). Если да, кодер 20 видео и декодер 30 видео кодируют, для блока, синтаксический элемент, указывающий набор адаптивных контурных фильтров (804). Например, кодер 20 видео и декодер 30 видео кодируют, для первого блока данных видео, первый синтаксический элемент, указывающий первый набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров.
[0136] Кодер 20 видео и декодер 30 видео могут затем определять адаптивный контурный фильтр из набора адаптивных контурных фильтров для текущего кодируемого блока (806). Например, кодер 20 видео и декодер 30 видео могут определять первый адаптивный контурный фильтр из первого набора адаптивных контурных фильтров для первого восстановленного блока данных видео. Кодер 20 видео и декодер 30 видео могут затем применять адаптивный контурный фильтр к восстановленному блоку (808). Кодер 20 видео и декодер 30 видео могут затем приступать к кодированию следующего блока данных видео (810). Например, следующий блок данных видео может представлять собой второй блок данных видео. Процесс согласно фиг. 8 затем повторяется. Следует отметить, что при выполнении методов настоящего раскрытия, при определении набора адаптивных контурных фильтров для следующего блока данных видео (например, второго блока данных видео), набор адаптивных контурных фильтров для второго блока данных видео может отличаться от набора адаптивных контурных фильтров, используемого для других блоков данных видео.
[0137] В одном или нескольких примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, прошивке или любой их комбинации. При реализации в программном обеспечении, функции могут храниться или передаваться, как одна или несколько инструкций или код, на считываемом компьютером носителе и исполняться аппаратным модулем обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальным носителям, таким как носители данных или коммуникационные среды, включающие в себя любой носитель, который облегчает перенос компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, считываемые компьютером носители, в общем, могут соответствовать (1) материальным считываемым компьютером носителям хранения, которые являются долговременными, или (2) коммуникационным средам, таким как сигнал или несущая волна. Носитель данных может представлять собой любой доступный носитель, доступ к которому может осуществляться одним или несколькими компьютерами или одним или несколькими процессорами, чтобы извлекать инструкции, код и/или структуры данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0138] В качестве примера, но не для ограничения, такие считываемые компьютером носители могут представлять собой любой из RAM, ROM, EEPROM, CD-ROM или другого хранилища на оптическом диске, хранилища на магнитном диске или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может использоваться для хранения желательного программного кода в форме инструкций или структур данных и к которому может обращаться компьютер. Также, любое соединение может надлежащим образом определяться как считываемый компьютером носитель. Например, если инструкции передаются от веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, скрученной пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная, радио- и микроволновая, то коаксиальный кабель, оптоволоконный кабель, скрученная пара, DSL или беспроводные технологии, такие как инфракрасная, радио- и микроволновая, включены в определение носителя. Следует понимать, однако, что считываемые компьютером носители и носители данных не включают в себя соединения, несущие волны, сигналы или другие изменяемые во времени носители, но вместо этого направлены на долговременные, материальные носители. Магнитный диск (disk) и оптический диск (disc), как использовано здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи-диск и Blu-ray диск, где магнитные диски (disks) обычно воспроизводят данные магнитным образом, в то время как оптические диски (discs) воспроизводят данные оптически при помощи лазеров. Комбинации изложенного выше должны также быть включены в объем считываемых компьютером носителей.
[0139] Инструкции могут исполняться одним или несколькими процессорами, такими как один или несколько цифровых сигнальных процессоров (DSP), универсальных микропроцессоров, специализированными интегральными схемами (ASIC), программируемыми вентильными матрицами (FPGA) или другой эквивалентной интегральной или дискретной логической схемой. Соответственно, термин “процессор”, как использовано здесь, может относиться к любой из вышеописанных структур или любой другой структуре, подходящей для реализации методов, описанных здесь. К тому же, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или модулях программного обеспечения, сконфигурированных для кодирования и декодирования, или встроена в комбинированный кодек. Также, методы могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
[0140] Методы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводной телефон, интегральную схему (IC) или набор IC (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных, чтобы выполнять раскрытые методы, но не обязательно требуют реализации разными аппаратными модулями. Напротив, как описано выше, различные модули могут комбинироваться в аппаратном модуле кодека или обеспечиваться совокупностью взаимодействующих аппаратных модулей, включая один или несколько процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или прошивкой.
[0141] Были описаны различные примеры. Эти и другие примеры соответствуют объему следующей формулы изобретения.