RU2783335C2 - Device and signaling of adaptive loop filter (alf) on block basis - Google Patents
Device and signaling of adaptive loop filter (alf) on block basis Download PDFInfo
- Publication number
- RU2783335C2 RU2783335C2 RU2020138901A RU2020138901A RU2783335C2 RU 2783335 C2 RU2783335 C2 RU 2783335C2 RU 2020138901 A RU2020138901 A RU 2020138901A RU 2020138901 A RU2020138901 A RU 2020138901A RU 2783335 C2 RU2783335 C2 RU 2783335C2
- Authority
- RU
- Russia
- Prior art keywords
- adaptive loop
- block
- loop filter
- current picture
- video
- Prior art date
Links
- 230000003044 adaptive Effects 0.000 title claims abstract description 307
- 230000011664 signaling Effects 0.000 title abstract description 15
- 238000001914 filtration Methods 0.000 claims abstract description 100
- 230000000875 corresponding Effects 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 16
- 230000001131 transforming Effects 0.000 claims description 8
- 230000000694 effects Effects 0.000 abstract description 3
- 239000000126 substance Substances 0.000 abstract 1
- 238000000034 method Methods 0.000 description 53
- 238000007906 compression Methods 0.000 description 15
- 230000002123 temporal effect Effects 0.000 description 13
- 239000000203 mixture Substances 0.000 description 11
- 241001442055 Vipera berus Species 0.000 description 10
- 241000023320 Luma <angiosperm> Species 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(E)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 2
- 240000009007 Salvia columbariae Species 0.000 description 2
- 235000001498 Salvia hispanica Nutrition 0.000 description 2
- 239000000969 carrier Substances 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 235000012377 chia Nutrition 0.000 description 2
- 235000014167 chia Nutrition 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000000051 modifying Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 108010063123 alfare Proteins 0.000 description 1
- 230000002457 bidirectional Effects 0.000 description 1
- 230000001413 cellular Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001360 synchronised Effects 0.000 description 1
- 230000001702 transmitter Effects 0.000 description 1
Images
Abstract
Description
[0001] Настоящая заявка испрашивает приоритет патентной заявки США № 16/427,017, поданной 30 мая 2019, которая испрашивает приоритет предварительной заявки США № 62/679,685, поданной 1 июня 2018, все содержания которых включены в настоящий документ посредством ссылки.[0001] This application claims priority of U.S. Patent Application No. 16/427,017, filed May 30, 2019, which claims priority of U.S. Provisional Application No. 62/679,685, filed June 1, 2018, the entire contents of which are incorporated herein by reference.
Область техники Technical field
[0002] Настоящее раскрытие относится к кодированию видео и декодированию видео.[0002] The present disclosure relates to video coding and video decoding.
Предшествующий уровень техники Prior Art
[0003] Функциональные возможности цифрового видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые ассистенты (PDA), ноутбуки или стационарные компьютеры, планшеты, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видео игровые устройства, видео игровые консоли, сотовые или спутниковые радиотелефоны, так называемые “смартфоны”, устройства видео телеконференций, устройства потоковой передачи (стриминга) видео и тому подобное. Цифровые видеоустройства реализуют методы сжатия видео, такие как методы, описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Расширенное кодирование видео (AVC), недавно завершенный стандарт Высокоэффективного кодирования видео (HEVC) и расширения таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить информацию цифрового видео более эффективно путем реализации таких методов сжатия видео. [0003] Digital video functionality can be included in a wide range of devices, including digital televisions, digital live broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablets, e-readers, digital cameras, digital recorders devices, digital media players, video game devices, video game consoles, cellular or satellite radio telephones, so-called “smartphones”, video teleconferencing devices, video streaming devices, and the like. Digital video devices implement video compression techniques such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 Part 10, Advanced Video Coding (AVC ), the recently completed High Efficiency Video Coding (HEVC) standard and extensions of such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing such video compression techniques.
[0004] Методы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую последовательностям видео. Для кодирования видео на блочной основе, слайс видео (т.е., кадр видео или часть кадра видео) может разбиваться на блоки видео, которые могут также называться блоками дерева, единицами кодирования (CU) и/или узлами кодирования. Блоки видео в интра-(внутри-)кодированном (I) слайсе картинки кодируются с использованием пространственного предсказания относительно опорных выборок в соседних блоках в одной и той же картинке. Блоки видео в интер-(меж-)кодированном (P или B) слайсе картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в одной и той же картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры. [0004] Video compression techniques perform spatial (intra-picture) prediction and/or temporal (inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice (ie, a video frame or part of a video frame) may be divided into video blocks, which may also be referred to as tree blocks, coding units (CUs), and/or coding nodes. Video blocks in an intra-(intra-)coded (I) slice of a picture are encoded using spatial prediction with respect to reference samples in adjacent blocks in the same picture. Video blocks in an inter-(inter-)coded (P or B) slice of a picture may use spatial prediction with respect to reference samples in adjacent blocks in the same picture, or temporal prediction with respect to reference samples in other reference pictures. Pictures may be referred to as frames, and reference pictures may be referred to as reference frames.
[0005] Пространственное или временное предсказание приводит к предсказанному блоку для блока, подлежащего кодированию. Остаточные данные представляют пиксельные разности между исходным блоком, подлежащим кодированию, и предсказанным блоком. Интер-кодированный блок кодируется в соответствии с вектором движения, который указывает на блок опорных выборок, образующих предсказанный блок, и остаточные данные указывают разность между закодированным блоком и предсказанным блоком. Интра-кодированный блок кодируется в соответствии с режимом интра-кодирования и остаточными данными. Для дополнительного сжатия, остаточные данные могут быть преобразованы из пиксельной области в область преобразования, что приводит к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально упорядоченные в двумерном массиве, могут сканироваться, чтобы сформировать одномерный вектор коэффициентов преобразования, и энтропийное кодирование может применяться для достижения еще большего сжатия.[0005] Spatial or temporal prediction results in a predicted block for the block to be coded. The residual data represents the pixel differences between the original block to be encoded and the predicted block. The inter-coded block is encoded according to a motion vector that indicates the block of reference samples constituting the predicted block, and the residual data indicates the difference between the encoded block and the predicted block. The intra-coded block is encoded according to the intra-coding mode and residual data. For additional compression, the residual data may be converted from a pixel domain to a transform domain, resulting in residual transform coefficients, which may then be quantized. The quantized transform coefficients, initially ordered in a two-dimensional array, can be scanned to form a one-dimensional vector of transform coefficients, and entropy encoding can be applied to achieve even more compression.
Краткое описание сущности изобретения Brief description of the essence of the invention
[0006] Настоящее раскрытие описывает методы, связанные с методами фильтрации, упоминаемыми как “адаптивный контурный фильтр (ALF)”. ALF может использоваться на стадии пост-обработки, для кодирования в контуре или в процессе предсказания. Фильтрация с адаптивным смещением выборки (SAO) и/или адаптивная контурная фильтрация может применяться к любой из различных существующих технологий кодека видео, таких как технология кодека, совместимого с HEVC, или представлять собой эффективный инструмент кодирования в любых будущих стандартах кодирования видео. Поэтому описанные методы могут применяться к множеству методов кодирования видео на блочной основе, в которых видео восстанавливается на поблочной основе. Блоки пикселов могут по-разному упоминаться как единицы дерева кодирования (CTU), наибольшие единицы кодирования (LCU), единицы предсказания (PU) или определяться другой терминологией в зависимости от используемого кодирования видео на блочной основе, как описано далее.[0006] The present disclosure describes techniques associated with filtering techniques referred to as "adaptive loop filter (ALF)". ALF can be used in post-processing, for in-loop coding, or in the prediction process. Adaptive sampling offset (SAO) filtering and/or adaptive loop filtering may be applied to any of various existing video codec technologies, such as HEVC compatible codec technology, or represent an efficient coding tool in any future video coding standards. Therefore, the described techniques can be applied to a variety of block-based video coding techniques in which video is reconstructed on a block-by-block basis. Pixel blocks may be variously referred to as coding tree units (CTUs), largest coding units (LCUs), prediction units (PUs), or other terminology depending on the block-based video coding used, as described below.
[0007] Как будет объяснено более подробно ниже, в соответствии с методами настоящего раскрытия, кодер видео и декодер видео могут быть сконфигурированы, чтобы определять наборы адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на поблочной основе (например, для блоков, для которых разрешается адаптивная контурная фильтрация). Таким образом, набор адаптивных контурных фильтров, доступных для использования с конкретным блоком, может быть более адаптирован к локальным характеристикам данных видео вблизи конкретного блока, тем самым повышая эффективность кодирования и/или качество картинки.[0007] As will be explained in more detail below, in accordance with the techniques of the present disclosure, a video encoder and a video decoder may be configured to determine adaptive loop filter banks, from a plurality of adaptive loop filter banks, on a block-by-block basis (e.g., for blocks, for which enable adaptive loop filtering). Thus, the set of adaptive loop filters available for use with a particular block can be more adapted to the local characteristics of the video data in the vicinity of a particular block, thereby improving coding efficiency and/or picture quality.
[0008] В одном примере, способ включает в себя определение соответственного набора адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0008] In one example, the method includes determining a respective adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks that use adaptive loop filtering, each respective adaptive loop filter set including the previous an adaptive loop filter used in one or more previous pictures, and adaptive loop filtering of blocks of the current picture in accordance with the respective sets of adaptive loop filters.
[0009] В другом примере, устройство, сконфигурированное, чтобы кодировать данные видео, включает в себя память, сконфигурированную, чтобы хранить текущую картинку данных видео, и один или несколько процессоров в коммуникации с памятью, один или несколько процессоров сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках (или предыдущих картинках, слайсах или блоков другой гранулярности), и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0009] In another example, a device configured to encode video data includes a memory configured to store a current picture of the video data and one or more processors in communication with the memory, one or more processors configured to determine a corresponding set adaptive loop filters, from a plurality of adaptive loop filter sets, to the current picture block for blocks that use adaptive loop filtering, each respective adaptive loop filter set including the previous adaptive loop filter used in one or more previous pictures (or previous images, slices or blocks of other granularity), and perform adaptive contour filtering of blocks of the current picture in accordance with the corresponding sets of adaptive contour filters.
[0010] В другом примере, устройство, сконфигурированное, чтобы кодировать данные видео, включает в себя средство для определения соответственного набора адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и средство для адаптивной контурной фильтрации блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0010] In another example, an apparatus configured to encode video data includes means for determining an appropriate adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks in which adaptive loop filtering is used, wherein each respective adaptive loop filter set includes a previous adaptive loop filter used in one or more previous pictures and means for adaptively loop filtering blocks of the current picture according to the respective adaptive loop filter sets.
[0011] В другом примере, настоящее раскрытие описывает не изменяемый со временем (Долговременный) считываемый компьютером носитель данных, хранящий инструкции, которые при исполнении побуждают один или несколько процессоров определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0011] In another example, the present disclosure describes a time-invariant (Long-lived) computer-readable storage medium storing instructions that, when executed, cause one or more processors to determine an appropriate adaptive loop filter set, from a plurality of adaptive loop filter sets, per block of the current pictures for blocks that use adaptive loop filtering, each respective adaptive loop filter set including the previous adaptive loop filter used in one or more previous pictures, and perform adaptive loop filtering of the current picture blocks in accordance with the respective adaptive loop filter sets .
[0012] Подробности одного или нескольких примеров изложены на прилагаемых чертежах и в описании ниже. Другие признаки, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.[0012] Details of one or more examples are set forth in the accompanying drawings and in the description below. Other features, purposes and advantages will be apparent from the description, drawings and claims.
Краткое описание чертежей Brief description of the drawings
[0013] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему кодирования и декодирования видео, которая может использовать методы, описанные в настоящем раскрытии. [0013] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system that may use the techniques described in this disclosure.
[0014] Фиг. 2 показывает примерную блок-схему декодера HEVC.[0014] FIG. 2 shows an exemplary block diagram of an HEVC decoder.
[0015] Фиг. 3A-3D показывают четыре 1-D направленных шаблона для классификации выборок смещения края (EO).[0015] FIG. 3A-3D show four 1-D directional patterns for classifying edge offset (EO) samples.
[0016] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный кодер видео, который может реализовывать методы, описанные в настоящем раскрытии. [0016] FIG. 4 is a block diagram illustrating an exemplary video encoder that may implement the techniques described in this disclosure.
[0017] Фиг. 5 представляет собой блок-схему, иллюстрирующую примерный декодер видео, который может реализовывать методы, описанные в настоящем раскрытии. [0017] FIG. 5 is a block diagram illustrating an exemplary video decoder that may implement the techniques described in this disclosure.
[0018] Фиг. 6 показывает примерную реализацию модуля фильтрации для выполнения методов настоящего раскрытия. [0018] FIG. 6 shows an exemplary implementation of a filtering module for executing the methods of the present disclosure.
[0019] Фиг. 7 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ раскрытия.[0019] FIG. 7 is a flowchart illustrating an exemplary deployment method.
[0020] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую другой примерный способ раскрытия.[0020] FIG. 8 is a flowchart illustrating another exemplary disclosure method.
Подробное описание Detailed description
[0021] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему 10 кодирования и декодирования видео, которая может использовать методы для адаптивной контурной фильтрации, описанной в настоящем раскрытии. Как показано на фиг. 1, система 10 включает в себя устройство 12 источника, которое генерирует закодированные данные видео, подлежащие декодированию в более позднее время устройством 14 места назначения. Устройство 12 источника и устройство 14 места назначения могут представлять собой любое из широкого диапазона устройств, включая настольные компьютеры, портативные компьютеры (ноутбуки), планшеты, телевизионные приставки, телефонные трубки, такие как так называемые смартфоны, так называемые умные планшеты (смартпады), телевизоры, камеры, устройства отображения, цифровые медиаплееры, видео игровые консоли, устройство стриминга видео или тому подобное. В некоторых случаях, устройство 12 источника и устройство 14 места назначения могут быть оснащены для беспроводной связи. [0021] FIG. 1 is a block diagram illustrating an exemplary video encoding and
[0022] Устройство 14 места назначения может принимать закодированные данные видео, подлежащие декодированию, посредством линии 16 связи. Линия 16 связи может представлять собой любой тип носителя или устройства, способного перемещать закодированные данные видео от устройства 12 источника к устройству 14 места назначения. В одном примере, линия 16 связи может представлять собой коммуникационную среду, чтобы позволять устройству 12 источника передавать закодированные данные видео непосредственно на устройство 14 места назначения в реальном времени. Закодированные данные видео могут модулироваться в соответствии со стандартом связи, таким как протокол беспроводной связи, и передаваться на устройство 14 места назначения. Коммуникационная среда может включать в себя любую среду беспроводной или проводной связи, такую как радиочастотный (RF) спектр или одна или несколько физических линий передачи. Коммуникационная среда может формировать часть пакетной сети, такой как локальная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может использоваться для обеспечения связи от устройства 12 источника к устройству 14 места назначения. [0022]
[0023] В другом примере, закодированные данные видео могут выводиться из выходного интерфейса 22 на устройство 26 хранения. Аналогично, доступ к закодированным данным видео может осуществляться из устройства 26 хранения входным интерфейсом 28. Устройство 26 хранения может включать в себя любой из множества распределенных или локально доступных носителей данных, таких как жесткий диск, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любые другие подходящие цифровые носители для хранения закодированных данных видео. В другом примере, устройство 26 хранения может соответствовать файловому серверу или другому устройству промежуточного хранения, которое может хранить закодированное видео, сгенерированное устройством 12 источника. Устройство 14 места назначения может осуществлять доступ к сохраненным данным видео из устройства 26 хранения посредством стриминга или загрузки. Файловый сервер может представлять собой любой тип сервера, способного хранить закодированные данные видео и передавать эти закодированные данные видео на устройство 14 места назначения. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), сервер протокола переноса файлов (FTP), сетевые устройства хранения (NAS) или накопитель локального диска. Устройство 14 места назначения может осуществлять доступ к закодированным данным видео через любое стандартное соединение данных, включая Интернет-соединение. Оно может включать в себя беспроводное соединение (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.д.) или комбинацию обоих, которая является подходящей для осуществления доступа к закодированным данным видео, хранящимся на файловом сервере. Передача закодированных данных видео от устройства 26 хранения может представлять собой стриминговую передачу, передачу загрузки или комбинацию обоих. [0023] In another example, the encoded video data may be output from the
[0024] Методы настоящего раскрытия не обязательно ограничены беспроводными приложениями или настройками. Методы могут применяться к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как телевизионное эфирное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи стримингового видео, например, через Интернет, кодирование цифрового видео для хранения на носителе данных, декодирование цифрового видео, сохраненного на носителе данных, или других приложений. В некоторых примерах, система 10 может быть сконфигурирована, чтобы поддерживать одностороннюю или двустороннюю передачу видео для поддержки приложений, таких как стриминг видео, воспроизведение видео, вещание видео и/или видео-телефония.[0024] The techniques of this disclosure are not necessarily limited to wireless applications or settings. The techniques can be applied to video coding supporting any of a variety of multimedia applications such as broadcast television, cable television transmissions, satellite television transmissions, streaming video transmissions such as over the Internet, digital video encoding for storage on a storage medium, digital video decoding, stored on a storage medium, or other applications. In some examples,
[0025] В примере на фиг. 1, устройство 12 источника включает в себя источник 18 видео, кодер 20 видео и выходной интерфейс 22. В некоторых случаях, выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве 12 источника, источник 18 видео может включать в себя источник, такой как устройство захвата видео, например, видеокамеру, архив видео, содержащий ранее захваченное видео, интерфейс внешнего видеосигнала для приема видео от провайдера видеоконтента и/или систему компьютерной графики для генерации данных компьютерной графики как источника видео или комбинацию таких источников. В общем, захват данных видео может включать в себя любой метод для записи, генерации и/или восприятия данных видео. В качестве одного примера, если источник 18 видео представляет собой видеокамеру, устройство 12 источника и устройство 14 места назначения могут образовывать так называемые камерофоны или видеофоны. Однако, методы, описанные в настоящем раскрытии, могут применяться к кодированию видео в общем и могут применяться к беспроводным и/или проводным приложениям. [0025] In the example of FIG. 1,
[0026] Захваченное, предварительно захваченное или сгенерированное компьютером видео может кодироваться кодером 20 видео. Закодированные данные видео могут передаваться непосредственно на устройство 14 места назначения через выходной интерфейс 22 устройства 12 источника. Закодированные данные видео могут также (или альтернативно) сохраняться на устройство 26 хранения для последующего доступа устройством 14 места назначения или другими устройствами, для декодирования и/или воспроизведения. [0026] Captured, pre-captured, or computer-generated video may be encoded by
[0027] Устройство 14 места назначения включает в себя входной интерфейс 28, декодер 30 видео и устройство 32 отображения. В некоторых случаях, входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства 14 места назначения принимает закодированные данные видео по линии 16 связи. Закодированные данные видео, сообщенные по линии 16 связи или обеспеченные на устройство 26 хранения, могут включать в себя множество синтаксических элементов, сгенерированных кодером 20 видео для использования декодером видео, таким как декодер 30 видео, при декодировании данных видео. Такие синтаксические элементы могут быть включены в закодированные данные видео, передаваемые по коммуникационной среде, сохраненные на носителе или сохраненные на файловом сервере. [0027] The
[0028] Устройство 32 отображения может быть встроенным или внешним по отношению к устройству 14 места назначения. В некоторых примерах, устройство 14 места назначения может включать в себя встроенное устройство отображения, а также может быть сконфигурировано, чтобы взаимодействовать с внешним устройством отображения. В других примерах, устройство 14 места назначения может представлять собой устройство отображения. В общем, устройство 32 отображения отображает декодированные данные видео пользователю и может представлять собой любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения. [0028] The
[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.[0029]
[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”). Методы настоящего раскрытия, однако, не ограничены каким-либо конкретным стандартом кодирования. [0030] ITU-T VCEG (Q6/16) and ISO/IEC MPEG (JTC 1/SC 29/WG 11) are currently developing a future video coding technology with compression functionality that potentially exceeds the compression capability of the current HEVC standard (including current extensions and short-term extensions for screen content encoding and high dynamic range encoding). The new standard is called H.266/VVC (Universal Video Coding). The groups work together on this research activity, collaborating as the Joint Video Research Team (JVET) to evaluate compression technology projects proposed by their experts in the field. The first JVET meeting took place on October 19-21, 2015. One version of the reference software, i.e., Joint Exploration Model 7 (JEM7), can be downloaded from: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags /HM-16.6-JEM-7.0/. For a description of the algorithm for JEM7, see 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. The latest draft of the VVC standard is described in Bross, et al. “Versatile Video Coding (Draft 5)”, Joint Video Experts Team (JVET) of ITU-
[0031] Хотя не показано на фиг. 1, в некоторых аспектах, кодер 20 видео и декодер 30 видео могут каждый быть интегрированы с кодером и декодером аудио и могут включать в себя подходящие модули MUX-DEMUX или другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах, модули MUX-DEMUX могут быть согласованы с протоколом мультиплексора ITU H.223 или другими протоколами, такими как протокол пользовательских дейтаграмм (UDP).[0031] Although not shown in FIG. 1, in some aspects,
[0032] Кодер 20 видео и декодер 30 видео каждый могут быть реализованы как любая из множества подходящих схем кодера или схем декодера, таких как один или несколько микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, прошивки или любых их комбинаций. Когда методы реализованы частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем долговременном считываемом компьютером носителе и исполнять инструкции в аппаратных средствах с использованием одного или нескольких процессоров для выполнения методов настоящего раскрытия. Каждый из кодера 20 видео и декодера 30 видео может быть включен в один или несколько кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) (кодека) в соответственном устройстве.[0032]
[0033] Настоящее раскрытие описывает методы, относящиеся к операциям фильтрации, которые могут использоваться на стадии пост-обработки, как часть (внутри-) контурного кодирования или на стадии предсказания кодирования видео. Методы настоящего раскрытия могут быть реализованы в существующих кодеках видео, таких как HEVC, или представлять собой эффективный инструмент кодирования для будущего стандарта кодирования видео, такого как стандарт H.266/VVC, в настоящее время находящийся в разработке.[0033] The present disclosure describes techniques related to filtering operations that can be used in the post-processing stage, as part of (intra-) loop coding, or in the prediction stage of video coding. The techniques of the present disclosure may be implemented in existing video codecs, such as HEVC, or provide a powerful coding tool for a future video coding standard, such as the H.266/VVC standard currently under development.
[0034] Кодирование видео обычно включает в себя блок предсказания данных видео либо из уже закодированного блока данных видео в той же картинке (например, интра-предсказание), либо уже закодированного блока данных видео в другой картинке (например, интер-предсказание). В некоторых примерах, кодер 20 видео также вычисляет остаточные данные путем сравнения предсказанного блока с исходным блоком. Таким образом, остаточные данные представляют разность между предсказанным блоком и исходным блоком. [0034] Video encoding typically includes a video data prediction block either from an already encoded video data block in the same picture (eg, intra prediction) or an already encoded video data block in another picture (eg, inter prediction). In some examples,
[0035] Кодер 20 видео преобразует и квантует остаточные данные и сигнализирует преобразованные и квантованные остаточные данные в закодированном битовом потоке. Декодер 30 видео добавляет остаточные данные в предсказанный блок, чтобы сформировать восстановленный блок видео, который совпадает с исходным блоком видео ближе, чем только предсказанный блок. Чтобы дополнительно улучшить качество декодированного видео, кодер 20 видео и декодер 30 видео могут выполнять одну или несколько операций фильтрации на восстановленных блоках видео. Примеры этих операций фильтрации включают в себя фильтрацию устранения блочности, адаптивную фильтрацию смещения выборки (SAO) и адаптивную контурную фильтрацию. Параметры для этих операций фильтрации могут определяться кодером 20 видео и явно сигнализироваться в закодированном битовом потоке видео или могут неявно определяться декодером 30 видео без необходимости явно сигнализировать параметры в закодированном битовом потоке видео.[0035] The
[0036] Настоящее раскрытие описывает методы, относящиеся к способу(ам) фильтрации, упоминаемому как “адаптивная контурная фильтрация (ALF)”. ALF может использоваться на стадии пост-обработки, для контурного кодирования или в процессе предсказания. Фильтрация SAO и/или адаптивная контурная фильтрация может применяться к любой из различных существующих технологий кодека видео, таких как технология кодека, совместимого с HEVC, или представлять собой эффективный инструмент кодирования в любых будущих стандартах кодирования видео. [0036] The present disclosure describes techniques related to the filtering method(s) referred to as "adaptive loop filtering (ALF)". ALF can be used in post-processing, for contour coding, or in the prediction process. SAO filtering and/or adaptive loop filtering may be applied to any of various existing video codec technologies, such as HEVC compatible codec technology, or represent an efficient coding tool in any future video coding standards.
[0037] Как использовано в настоящем раскрытии, термин кодирование видео в общем относится либо к кодированию видео, либо к декодированию видео. Аналогично, термин кодер видео может в общем относиться к кодеру видео или декодеру видео. Более того, определенные методы, описанные в настоящем раскрытии в отношении декодирования видео, могут также применяться к кодированию видео и наоборот. Например, часто кодеры видео и декодеры видео сконфигурированы, чтобы выполнять один и тот же процесс или взаимно обратные процессы. Также, кодер 20 видео обычно выполняет декодирование видео как часть процессов определения того, как следует кодировать данные видео.[0037] As used in this disclosure, the term video coding generally refers to either video coding or video decoding. Likewise, the term video encoder may generically refer to a video encoder or video decoder. Moreover, certain techniques described in this disclosure in relation to video decoding can also be applied to video coding and vice versa. For example, often video encoders and video decoders are configured to perform the same process or reciprocal processes. Also,
[0038] Как будет объяснено более подробно ниже, в соответствии с методами настоящего раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять наборы адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на поблочной основе (например, для блоков, для которых разрешается адаптивная контурная фильтрация). Таким образом, набор адаптивных контурных фильтров, доступных для использования с конкретным блоком, может быть более адаптирован к локальным характеристикам данных видео рядом с конкретным блоком, таким образом, улучшая эффективность кодирования и/или качество картинки.[0038] As will be explained in more detail below, in accordance with the techniques of the present disclosure,
[0039] В HEVC, VVC и других спецификациях кодирования видео, последовательность видео обычно включает в себя последовательность картинок. Картинки могут также называться “кадрами”. В одном примерном подходе, картинка может включать в себя три массива выборок, обозначенных SL, SCb и SCr. В таком примерном подходе, SL представляет собой двумерный массив (т.е., блок) выборок яркости. SCb представляет собой двумерный массив выборок цветности Cb. SCr представляет собой двумерный массив выборок цветности Cr. Выборки цветности могут также упоминаться как выборки “насыщенности цвета” (цветности). В других примерах, картинка может быть монохромной и может включать в себя только массив выборок яркости. [0039] In HEVC, VVC, and other video coding specifications, a video sequence typically includes a picture sequence. Pictures may also be referred to as “frames”. In one exemplary approach, the picture may include three arrays of samples, denoted S L , S Cb and S Cr . In such an exemplary approach, S L is a two-dimensional array (ie, block) of luminance samples. S Cb is a two-dimensional array of chrominance samples Cb. S Cr is a two-dimensional array of Cr chromaticity samples. Chroma samples may also be referred to as "chroma" samples. In other examples, the picture may be monochrome and may include only an array of luminance samples.
[0040] Чтобы сгенерировать закодированное представление картинки, кодер 20 видео может генерировать набор единиц дерева кодирования (CTU). Каждая из CTU может включать в себя блок дерева кодирования выборок яркости, два соответствующих блока дерева кодирования выборок цветности и синтаксические структуры, используемые для кодирования выборок блоков дерева кодирования. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, CTU может включать в себя один блок дерева кодирования и синтаксические структуры, используемые, чтобы кодировать выборки блока дерева кодирования. Блок дерева кодирования может представлять собой N×N блок выборок. CTU может также упоминаться как “блок дерева” или “наибольшая единица кодирования” (LCU). CTU HEVC могут быть в широком смысле аналогичны макроблокам других стандартов, таких как H.264/AVC. Однако CTU не обязательно ограничена конкретным размером и может включать в себя одну или несколько единиц кодирования (CU). Слайс может включать в себя целое число CTU, упорядоченных последовательно в порядке растрового сканирования.[0040] To generate an encoded representation of a picture,
[0041] В одном примере, чтобы сгенерировать закодированную CTU, кодер 20 видео может рекурсивно выполнять разбиение квадродерева на блоках дерева кодирования CTU, чтобы разделить блоки дерева кодирования на блоки кодирования, отсюда название “единицы дерева кодирования”. Блок кодирования может представлять собой N×N блок выборок. CU может включать в себя блок кодирования выборок яркости и два соответствующих блока кодирования выборок цветности картинки, которая имеет массив выборок яркости, массив выборок Cb и массив выборок Cr и синтаксические структуры, используемые для кодирования выборок блоков кодирования. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, CU может включать в себя один блок кодирования и синтаксические структуры, используемые для кодирования выборок блока кодирования.[0041] In one example, to generate an encoded CTU,
[0042] Кодер 20 видео может разбивать блок кодирования CU на один или несколько блоков предсказания. Блок предсказания представляет собой прямоугольный (т.е., квадратный или неквадратный) блок выборок, на которых применяется то же самое предсказание. Единица предсказания (PU) CU может включать в себя блок предсказания выборок яркости, два соответствующих блока предсказания выборок цветности и синтаксические структуры, используемые для предсказания блоков предсказания. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, PU может включать в себя один блок предсказания и синтаксические структуры, используемые для предсказания блока предсказания. Кодер 20 видео может генерировать предсказанные блоки яркости, Cb и Cr для блоков предсказания яркости, Cb и Cr каждой PU CU.[0042]
[0043] В качестве другого примера, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы работать в соответствии с JEM или VVC. В соответствии с JEM или VVC, кодер видео (такой как кодер 20 видео) разбивает картинку на множество единиц дерева кодирования (CTU). Кодер 20 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева/двоичного дерева (QTBT) или структура дерева множественного типа (MTT). Структура QTBT удаляет концепции множества типов разбиения, такие как разделения между CU, PU и TU (единицами преобразования) HEVC. Структура QTBT включает в себя два уровня: первый уровень, разбиваемый в соответствии с разбиением квадродерева, и второй уровень, разбиваемый в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).[0043] As another example,
[0044] В структуре разбиения MTT, блоки могут разбиваться с использованием разбиения квадродерева (QT), разбиения двоичного дерева (BT) и одного или нескольких типов разбиений троичного дерева (TT). Разбиение троичного дерева представляет собой разбиение, где блок разделяется на три подблока. В некоторых примерах, разбиение троичного дерева делит блок на три подблока без деления исходного блока через центр. Типы разбиения в MTT (например, QT, BT и TT) могут быть симметричными или ассиметричными.[0044] In an MTT split structure, blocks may be split using a quadtree split (QT), a binary tree split (BT), and one or more types of ternary tree splits (TT). A ternary tree split is a split where a block is split into three subblocks. In some examples, splitting a ternary tree divides a block into three subblocks without dividing the original block through the center. Partition types in MTT (for example, QT, BT, and TT) can be symmetrical or asymmetric.
[0045] В некоторых примерах, кодер 20 видео и декодер 30 видео могут использовать одну структуру QTBT или MTT, чтобы представлять каждый из компонентов яркости и цветности, в то время как в других примерах, кодер 20 видео и декодер 30 видео могут использовать две или более структур QTBT или MTT, таких как одна структура QTBT/MTT для компонента яркости и другая структура QTBT/MTT для обоих компонентов цветности (или две структуры QTBT/MTT для соответственных компонентов цветности). [0045] In some examples,
[0046] Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы использовать разбиение квадродерева, разбиение QTBT, разбиение MTT или другие структуры разбиения. [0046]
[0047] Кодер 20 видео может использовать интра-предсказание или интер-предсказание, чтобы генерировать предсказанные блоки для блока (например, PU). Если кодер 20 видео использует интра-предсказание, чтобы сгенерировать предсказанные блоки PU, кодер 20 видео может генерировать предсказанные блоки PU на основе декодированных выборок картинки, ассоциированной с PU. Если кодер 20 видео использует интер-предсказание, чтобы сгенерировать предсказанные блоки PU, кодер 20 видео может генерировать предсказанные блоки PU на основе декодированных выборок одной или нескольких картинок, отличных от картинки, ассоциированной с PU.[0047]
[0048] Некоторые примеры JEM и VVC также обеспечивают режим компенсации аффинного движения, который может рассматриваться как режим интер-предсказания. В режиме компенсации аффинного движения, кодер 20 видео может определять два или более векторов движения, которые представляют непоступательное движение, такое как приближение или отдаление, вращение, движение перспективы или другие типы нерегулярного движения. [0048] Some examples of JEM and VVC also provide an affine motion compensation mode, which can be considered an inter-prediction mode. In the affine motion compensation mode,
[0049] Чтобы выполнить интра-предсказание, кодер 20 видео может выбирать режим интра-предсказания, чтобы сгенерировать блок предсказания. Некоторые примеры JEM и VVC обеспечивают шестьдесят семь режимов интра-предсказания, включая различные направленные режимы, а также планарный режим и режим DC. В общем, кодер 20 видео выбирает режим интра-предсказания, который описывает выборки, соседние с текущим блоком (например, блоком CU), из которого следует предсказывать выборки текущего блока. Такие выборки могут, в общем, находиться выше, выше и слева или слева от текущего блока в той же самой картинке, что и текущей блок, предполагая, что кодер 20 видео кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз). [0049] To perform intra prediction,
[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.[0050] After
[0051] В некоторых примерах, кодер 20 видео может использовать разбиение квадродерева, чтобы разлагать остаточные блоки яркости, Cb и Cr CU на один или несколько блоков преобразования яркости, Cb и Cr. В других примерах, блок преобразования имеет тот же размер, что и блок предсказания. Блок преобразования представляет собой прямоугольный (например, квадратный или неквадратный) блок выборок, на которых применяется то же самое преобразование. Единица преобразования (TU) CU может включать в себя блок преобразования выборок яркости, два соответствующих блока преобразования выборок цветности и синтаксические структуры, используемые, чтобы преобразовывать выборки блока преобразования. Таким образом, каждая TU CU может быть ассоциирована с блоком преобразования яркости, блоком преобразования Cb и блоком преобразования Cr. Блок преобразования яркости, ассоциированный с TU, может представлять собой подблок остаточного блока яркости CU. Блок преобразования Cb может представлять собой подблок остаточного блока Cb CU. Блок преобразования Cr может представлять собой подблок остаточного блока Cr CU. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, TU может включать в себя один блок преобразования и синтаксические структуры, использованные для преобразования выборок блока преобразования. [0051] In some examples,
[0052] Кодер 20 видео может применять одно или несколько преобразований к блоку преобразования яркости TU, чтобы генерировать блок коэффициентов яркости для TU. Блок коэффициентов может представлять собой двумерный массив коэффициентов преобразования. Коэффициент преобразования может представлять собой скалярную величину. Кодер 20 видео может применять одно или несколько преобразований к блоку преобразования Cb TU, чтобы генерировать блок коэффициентов Cb для TU. Кодер 20 видео может применять одно или несколько преобразований к блоку преобразования Cr TU, чтобы генерировать блок коэффициентов Cr для TU.[0052]
[0053] Вышеописанная структура блоков с CTU, CU, PU и TU, в общем, описывает структуру блоков, используемую в HEVC. Другие стандарты кодирования видео, однако, могут использовать другие структуры блоков. В качестве одного примера, хотя HEVC позволяет PU и TU иметь разные размеры или формы, другие стандарты кодирования видео могут требовать, чтобы предсказанные блоки и блоки преобразования имели один и тот же размер. Методы настоящего раскрытия не ограничены структурой блоков HEVC и могут быть совместимы с другими структурами блоков.[0053] The above block structure with CTU, CU, PU, and TU generally describes the block structure used in HEVC. Other video coding standards, however, may use other block structures. As one example, while HEVC allows PUs and TUs to have different sizes or shapes, other video coding standards may require predicted and transform blocks to be the same size. The techniques of the present disclosure are not limited to the HEVC block structure and may be compatible with other block structures.
[0054] После генерации блока коэффициентов (например, блока коэффициентов яркости, блока коэффициентов Cb или блока коэффициентов Cr), кодер 20 видео может квантовать блок коэффициентов. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить количество данных, используемых для представления коэффициентов преобразования, обеспечивая дополнительное сжатие. После того как кодер 20 видео квантовал блок коэффициентов, кодер 20 видео может энтропийно кодировать синтаксические элементы, указывающие квантованные коэффициенты преобразования. Например, кодер 20 видео может выполнять контекстно-адаптивное двоичное арифметическое кодирование (CABAC) на синтаксических элементах, указывающих квантованные коэффициенты преобразования. [0054] After generating a coefficient block (eg, a luminance coefficient block, a Cb coefficient block, or a Cr coefficient block),
[0055] Кодер 20 видео может выводить битовый поток, который включает в себя последовательность битов, которая образует представление закодированных картинок и ассоциированных данных. Битовый поток может включать в себя последовательность единиц слоя сетевой абстракции (NAL). Единица NAL представляет собой синтаксическую структуру, содержащую указание типа данных в единице NAL и байты, содержащие эти данные в форме полезной нагрузки необработанной последовательности байтов (RBSP), перемеженных по необходимости с битами предотвращения эмуляции. Каждая из единиц NAL включает в себя заголовок единицы NAL и инкапсулирует RBSP. Заголовок единицы NAL может включать в себя синтаксический элемент, который указывает код типа единицы NAL. Код типа единицы NAL, специфицированный заголовком единицы NAL единицы NAL, указывает тип единицы NAL. RBSP может представлять собой синтаксическую структуру, содержащую целое число байтов, которое инкапсулировано в единице NAL. В некоторых примерах, RBSP включает в себя нулевые биты.[0055]
[0056] Разные типы единиц NAL могут инкапсулировать разные типы RBSP. Например, первый тип единицы NAL может инкапсулировать RBSP для набора параметров картинки (PPS), второй тип единицы NAL может инкапсулировать RBSP для закодированного слайса, третий тип единицы NAL может инкапсулировать RBSP для сообщений информации дополнительного расширения (SEI) и так далее. Единицы NAL, которые инкапсулируют RBSP для данных кодирования видео (в противоположность RBSP для наборов параметров и сообщений SEI), могут упоминаться как единицы NAL уровня кодирования видео (VCL).[0056] Different types of NAL units may encapsulate different types of RBSPs. For example, a first NAL unit type may encapsulate RBSP for a Picture Parameter Set (PPS), a second NAL unit type may encapsulate RBSP for an encoded slice, a third NAL unit type may encapsulate RBSP for Additional Extension Information (SEI) messages, and so on. NAL units that encapsulate RBSP for video coding data (as opposed to RBSP for parameter sets and SEI messages) may be referred to as video coding layer (VCL) NAL units.
[0057] Декодер 30 видео может принимать битовый поток, сгенерированный кодером 20 видео. К тому же, декодер 30 видео может проводить синтаксический анализ битового потока, чтобы получить синтаксические элементы из битового потока. Декодер 30 видео может восстанавливать картинки данных видео на основе по меньшей мере частично синтаксических элементов, полученных из битового потока. Процесс для восстановления данных видео может, в общем, быть противоположным процессу, выполняемому кодером 20 видео. К тому же, декодер 30 видео может обратно квантовать блоки коэффициентов, ассоциированные с TU текущей CU. Декодер 30 видео может выполнять обратные преобразования на блоках коэффициентов, чтобы восстанавливать блоки преобразования, ассоциированные с TU текущей CU. Декодер 30 видео может восстанавливать блоки кодирования текущей CU путем добавления выборок предсказанных блоков для PU текущей CU к соответствующим выборкам блоков преобразования TU текущей CU. Путем восстановления блоков кодирования для каждой CU картинки, декодер 30 видео может восстанавливать картинку. [0057] The
[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).[0058] Aspects of the HEVC and JEM methods will now be discussed. Fig. 2 shows an exemplary block diagram of a
[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). [0059] As illustrated in FIG. 2, the input to the DBF may be a reconstructed image after intra- or inter-prediction, as shown by the output from the reconstruction block. The DBF performs artifact detection at the boundaries of the encoded block and attenuates the artifacts by applying the selected filter. Compared with the H.264/AVC deblocking filter, the HEVC deblocking filter has lower computational complexity and better parallel processing capabilities while achieving a significant reduction in visual artifacts. For more examples, see 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) ниже, на обеих сторонах границы блока ниже специфицированного порога.[0060] In HEVC, deblocking filter decisions are made separately for each four-sample-long boundary that lies on a grid dividing the picture into blocks of 8x8 samples. Deblocking is performed at a block boundary if the following conditions are true: (1) the block boundary is a prediction unit (PU) or transform unit (TU) boundary; (2) boundary intensity (Bs), as defined in Table 1 below, is greater than zero; (3) signal variation, as defined in Equation (1) below, on both sides of a block boundary below a specified threshold.
[0061] Таблица 1. Значения интенсивности границы (Bs) для границ между двумя соседними блоками яркости [0061] Table 1. Edge Intensity (Bs) Values for Edges Between Two Adjacent Luminance Blocks
Если Bs>0 для границы блока яркости, то фильтрация устранения блочности применяется к этой границе, если удовлетворено следующее условие: If Bs>0 for a luminance block boundary, then deblocking filtering is applied to that boundary if the following condition is satisfied:
(1) (one)
где p и q являются значениями выборок яркости на границе, и является порогом.where p and q are the values of the brightness samples at the boundary, and is the threshold.
[0062] HEVC обеспечивает возможности двух типов фильтров устранения блочности яркости, а именно: (i) нормальный фильтр и (ii) сильный фильтр. Выбор фильтра устранения блочности зависит от того, являются ли пределы отклонения конкретного сигнала меньшими, чем определенные пороги (см. “HEVC Deblocking Filter”, Norkin et al (2012), упомянутый выше, для подробностей). Хотя решения фильтрования основаны на двух строках (или столбцах) вертикальной (или горизонтальной, в зависимости от ситуации) границы длиной четыре пиксела, фильтр применяется к каждой строке (или столбцу, в зависимости от ситуации) на границе. Число пикселов, используемых в процессе фильтрации, и число пикселов, которые могут быть модифицированы с помощью каждого типа фильтрации, кратко изложены в Таблице 2 ниже. [0062] HEVC provides two types of luminance deblocking filter capabilities, namely: (i) normal filter and (ii) strong filter. The choice of a deblocking filter depends on whether the rejection limits of a particular signal are less than certain thresholds (see “HEVC Deblocking Filter”, Norkin et al (2012), cited above, for details). Although the filtering decisions are based on two rows (or columns) of a four-pixel vertical (or horizontal, as the case may be) border, the filter is applied to each row (or column, as the case may be) on the border. The number of pixels used in the filtering process and the number of pixels that can be modified with each type of filtering are summarized in Table 2 below.
Таблица 2. Число используемых/модифицированных пикселов на границу при устранении блочности HEVC Table 2. Number of used/modified pixels per border in HEVC deblocking
[0063] Устранение блочности цветности (т.е., фильтрация устранения блочности, выполняемая на компонентах цветности) выполняется, только когда Bs равно двум (2). В HEVC, используется только один тип фильтра устранения блочности цветности. Фильтр устранения блочности цветности использует пикселы p0, p1, q0, q1 и может модифицировать пикселы p0 и q0 в каждой строке (второй индекс, указывающий нижний индекс, опущен в описании выше для краткости, поскольку фильтр применяется к каждой строке). В JEM, устранение блочности выполняется на уровне CU. Размер CU на любой стороне границы может быть больше, чем 8×8. Минимальный размер CU в JEM составляет 4×4. Поэтому, фильтр устранения блочности может также применяться к границам 4×4 блока. [0063] Chroma deblocking (ie, deblocking filtering performed on chrominance components) is performed only when Bs is equal to two (2). In HEVC, only one type of chroma deblocking filter is used. The chroma deblocking filter uses pixels p 0 , p 1 , q 0 , q 1 and can modify pixels p 0 and q 0 in each row (the second subscript indicating subscript is omitted in the description above for brevity because the filter is applied to each row ). In JEM, deblocking is performed at the CU level. The CU size on either side of the boundary may be larger than 8x8. The minimum CU size in JEM is 4x4. Therefore, the deblocking filter can also be applied to 4×4 block boundaries.
[0064] Вход в фильтр SAO может представлять собой восстановленный блок после применения фильтра устранения блочности, как показано выходом из фильтра устранения блочности на фиг. 2. Кодер видео может применять фильтр SAO, чтобы уменьшить среднее искажение выборки области путем сначала классифицирования выборок области на множество категорий при помощи выбранного классификатора, получения смещения для каждой категории и затем добавления смещения к каждой выборке категории, где индекс классификатора и смещения области кодированы в битовом потоке. В HEVC, область (единица для сигнализации параметров SAO) определяется как CTU.[0064] The input to the SAO filter may be a reconstructed block after applying the deblocking filter, as shown by the output from the deblocking filter in FIG. 2. The video encoder can apply the SAO filter to reduce the average area sample distortion by first classifying the area samples into a set of categories using the selected classifier, obtaining an offset for each category, and then adding an offset to each category sample where the classifier index and area offsets are encoded in bitstream. In HEVC, an area (a unit for signaling SAO parameters) is defined as a CTU.
[0065] Два типа SAO, которые могут удовлетворять требованию низкой сложности, были приняты в HEVC. Этими двумя типами являются SAO смещения края (EO) и смещения полосы (BO), которые рассмотрены более подробно ниже. Кодер 20 видео и декодер 30 видео могут кодировать индекс типа SAO. Для EO, классификация выборок основана на сравнении между текущими выборками и соседними выборками в соответствии с 1-D направленными шаблонами: горизонтальный, вертикальный, диагональный 135° и диагональный 45°. [0065] Two types of SAO that can meet the requirement of low complexity have been adopted in HEVC. The two types are edge offset (EO) and band offset (BO) SAO, which are discussed in more detail below.
[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 являются соседними блоками.[0066] FIG. 3A-3D show four 1-D directional patterns for classifying EO samples: horizontal (Fig. 3A, class EO=0), vertical (Fig. 3B, class EO=1), diagonal 135° (Fig. 3C, class EO= 2) and horizontal 45° (Fig. 3D, class EO=3). Additional details relating to SAO are described in 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). In FIG. 3A-3D, block C is the current block, and blocks A and B are neighboring blocks.
(edgeIdx)Category
( edgeIdx )
[0068] Для BO, классификация выборок основана на значениях выборок. Каждый цветной компонент может иметь свои собственные параметры SAO для классификации для фильтрации SAO типа BO. BO подразумевает, что одно смещение добавляется ко всем выборкам одной и той же полосы. Диапазон значений выборок равномерно делится на 32 полосы. Для 8-битных выборок в диапазоне от 0 до 255, ширина полосы составляет 8, и значения выборок от 8k до 8k+7 принадлежат полосе k, где k имеет диапазон от 0 до 31. Одно смещение добавляется ко всем выборкам одной и той же полосы. Средняя разность между исходными выборками и восстановленными выборками в полосе (т.е., смещение полосы) сигнализируется на декодер (например, декодер 30 видео). Не имеется ограничения для знаков смещения. Только смещения четырех (4) последовательных полос и положение начальной полосы сигнализируются на декодер (например, декодер 30 видео).[0068] For BO, the classification of samples is based on the values of the samples. Each color component can have its own SAO parameters for classification for filtering SAO type BO. BO implies that one offset is added to all samples of the same band. The range of sample values is evenly divided into 32 bands. For 8-bit samples in the range 0 to 255, the bandwidth is 8, and the sample values from 8k to 8k+7 belong to band k, where k has a range of 0 to 31. One offset is added to all samples of the same band . The average difference between the original samples and the reconstructed samples in the band (ie, band offset) is signaled to a decoder (eg, video decoder 30). There is no restriction on offset characters. Only the offsets of the four (4) consecutive bands and the position of the start band are signaled to the decoder (eg, video decoder 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.[0069]
[0070] Методы ALF пытаются минимизировать среднюю квадратичную ошибку между исходными выборками и декодированными/восстановленными выборками с использованием адаптивного фильтра Винера. Обозначим входное изображение как p, изображение источника как S и фильтр с конечным импульсным откликом (FIR) как h. Тогда следующее выражение суммы квадратичных ошибок (SSE) должно быть минимизировано, где (x, y) обозначает положение любого пиксела в p или S. [0070] ALF techniques attempt to minimize the mean square error between the original samples and the decoded/recovered samples using an adaptive Wiener filter. Let's denote the input image as p , the source image as S , and the finite impulse response (FIR) filter as h . Then the following sum of squared error expression (SSE) must be minimized, where (x, y) denotes the position of any pixel in p or S .
Оптимальный h, обозначенный как h opt , может быть получен, приравнивая частную производную SSE по h(i, j) к 0:The optimal h , denoted h opt , can be obtained by setting the partial derivative of SSE with respect to h(i, j) to 0:
Это приводит к уравнению Винера-Хопфа, показанному ниже, которое дает оптимальный фильтр h opt : This leads to the Wiener-Hopf equation shown below, which gives the optimal filter h opt :
[0071] В некоторых примерах JEM или VVC, вместо использования одного фильтра для всей картинки, кодер 20 видео и/или декодер 30 видео может быть сконфигурирован, чтобы классифицировать выборки в картинке на двадцать пять (25) классов на основе локальных градиентов. Кодер 20 видео и/или декодер 30 видео может получать отдельные оптимальные фильтры Винера для пикселов в каждом классе. Несколько методов использовалось для повышения эффективности адаптивной контурной фильтрации путем уменьшения издержек сигнализации и вычислительной сложности. Некоторые из методов, которые могут использоваться для повышения эффективности ALF путем уменьшения издержек сигнализации и/или вычислительной сложности, перечислены ниже:[0071] In some JEM or VVC examples, instead of using a single filter for the entire picture,
1. Предсказание из фиксированных фильтров: Коэффициенты оптимального фильтра для каждого класса предсказываются с использованием пула предсказаний фиксированных фильтров, которые включают в себя 16 фильтров-кандидатов для каждого класса. Лучший кандидат предсказания выбирается для каждого класса, и передаются только ошибки предсказания. 1. Prediction from fixed filters: The optimal filter coefficients for each class are predicted using a pool of fixed filter predictions that includes 16 candidate filters for each class. The best prediction candidate is selected for each class, and only prediction errors are transmitted.
2. Объединение классов: Вместо использования двадцати пяти (25) разных фильтров (один для каждого класса), пикселы во множестве классов могут совместно использовать один фильтр, чтобы уменьшить число параметров фильтра, подлежащих кодированию. Объединение двух классов может приводить к более высокой совокупной SSE, но более низкой стоимости по критерию искажение-скорость (RD). 2. Class Merging: Instead of using twenty-five (25) different filters (one for each class), pixels in multiple classes can share one filter to reduce the number of filter parameters to be encoded. Combining the two classes may result in a higher total SSE but lower cost in terms of distortion-rate (RD).
3. Переменное число отводов: Число отводов фильтра является адаптивным на уровне кадра. Теоретически, фильтры с большим числом отводов могут достигать более низкой SSE, но может не являться хорошим выбором с точки зрения стоимости RD, из-за битовых издержек, ассоциированных с большими коэффициентами фильтра.3. Variable number of taps: The number of filter taps is adaptive at the frame level. Theoretically, filters with more taps can achieve lower SSE, but may not be a good choice in terms of RD cost, due to the bit overhead associated with large filter coefficients.
4. Управление включением/выключением на блочном уровне: ALF может включаться и выключаться (разрешаться или блокироваться) на блочной основе. Размер блока, при котором сигнализируется флаг управления включением/выключением, адаптивно выбирается на кадровом уровне. Коэффициенты фильтра могут повторно вычисляться с использованием пикселов только из тех блоков, для которых ALF разрешено (т.е., ALF используется). 4. Block Level On/Off Control: ALF can be turned on and off (enabled or disabled) on a block basis. The block size at which the on/off control flag is signaled is adaptively selected at the frame level. The filter coefficients can only be recalculated using pixels from those blocks for which ALF is enabled (ie, ALF is used).
5. Временное предсказание: Фильтры, выведенные для ранее закодированных кадров, хранятся в буфере. Если текущий кадр представляет собой P или B кадр, то один из сохраненного набора фильтров может использоваться, чтобы фильтровать этот кадр, если это ведет к лучшей стоимости RD. Флаг сигнализируется, чтобы указывать использование временного предсказания. Если временное предсказание используется, то сигнализируется индекс, указывающий, какой набор сохраненных фильтров используется. Не требуется дополнительной сигнализации коэффициентов ALF. Флаги управления включением/выключением ALF блочного уровня могут также сигнализироваться для кадра с использованием временного предсказания. 5. Temporal prediction: Filters derived for previously encoded frames are stored in a buffer. If the current frame is a P or B frame, then one of the stored filter set may be used to filter that frame if it results in a better RD cost. The flag is signaled to indicate the use of temporal prediction. If temporal prediction is used, then an index indicating which set of stored filters is being used is signaled. No additional signaling of the ALF coefficients is required. Block level ALF on/off control flags may also be signaled for a frame using temporal prediction.
[0072] Подробности некоторых аспектов ALF кратко изложены в этом и следующих абзацах. Некоторые аспекты ALF относятся к классификации пикселов и геометрическому преобразованию. В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы вычислять суммы абсолютных значений вертикального, горизонтального и диагонального операторов Лапласа во всех пикселах в пределах окна 6×6, которое охватывает каждый пиксел в восстановленном кадре (до ALF). Кодер 20 видео и декодер 30 видео делят восстановленный кадр на неперекрывающиеся блоки 2×2. Кодер 20 видео и декодер 30 видео классифицируют четыре пиксела в этих блоках на одну из двадцати пяти (25) категорий, обозначенных как Ck (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.[0072] Details of some aspects of the ALF are summarized in this and the following paragraphs. Some aspects of ALF relate to pixel classification and geometric transformation. In one example,
[0073] Некоторые аспекты адаптивной контурной фильтрации относятся к выводу фильтра и предсказанию из фиксированных фильтров. Для каждого класса Ck, кодер 20 видео и декодер 30 видео сначала определяют лучший фильтр предсказания из пула для Ck, обозначенный как hpred, k, на основе SSE, выданной фильтрами. SSE C k , который следует минимизировать, может быть записан следующим образом[0073] Some aspects of adaptive loop filtering relate to filter derivation and prediction from fixed filters. For each class C k ,
где представляет собой разность между оптимальным фильтром для C k и h pred , k . Положим, что является результатом фильтрации пиксела p(x, y) посредством h pred , k . Тогда выражение для SSE K может быть переписано какwhere is the difference between the optimal filter for C k and h pred , k . Let's assume that is the result of filtering the pixel p(x, y) by h pred , k . Then the expression for SSE K can be rewritten as
Приравнивая частную производную SSE k по к 0, получим модифицированное уравнение Винера-Хопфа:Equating the partial derivative of SSE k with respect to to 0, we get the modified Wiener-Hopf equation:
Для простоты выражения, обозначим и при как и , соответственно. Тогда, уравнение выше может быть записано как:For simplicity of expression, we denote and at how and , respectively. Then, the equation above can be written as:
(1) (one)
Для каждого C k , матрица автокорреляции и вектор кросс-корреляции вычисляются по всем . For each C k , the matrix autocorrelations and vector cross-correlations are calculated over all .
[0074] В одном примере адаптивной контурной фильтрации, кодер 20 видео вычисляет и передает только разность между оптимальным фильтром и фиксированным фильтром предсказания. Если ни один из фильтров-кандидатов, доступных в пуле, не является хорошим предсказателем, то кодер 20 видео и декодер 30 видео используют единичный фильтр (т.е., фильтр с только одним ненулевым коэффициентом, равным 1 в центре, что делает вход и выход идентичными) в качестве предсказателя. [0074] In one example of adaptive loop filtering,
[0075] Некоторые аспекты адаптивной контурной фильтрации относятся к объединению классов пикселов. Классы объединяются для уменьшения издержек сигнализации коэффициентов фильтров. Стоимость объединения двух классов повышается относительно SSE. Рассмотрим два класса C m и C n с SSE, заданными посредством SSE m и SSE n , соответственно. Положим, что C m + n обозначает класс, полученный путем объединения C m и C n с SSE, обозначенной как SSE m + n . SSE m + n всегда больше или равна SSE m +SSE n . Положим, что ΔSSE m + n обозначает увеличение в SSE, вызванное объединением C m и C n , которое равно SSE m + n -(SSE m +SSE n ). Чтобы вычислить SSE m + n , кодер 20 видео может вывести , ошибку предсказания фильтра для C m + n , с использованием следующего выражения, аналогичного (1): [0075] Some aspects of adaptive edge filtering relate to combining pixel classes. The classes are combined to reduce the signaling overhead of the filter coefficients. The cost of combining two classes increases relative to SSE. Consider two classes C m and C n with SSEs defined by SSE m and SSE n , respectively. Let C m + n denote the class obtained by combining C m and C n with the SSE denoted SSE m + n . SSE m + n is always greater than or equal to SSE m + SSE n . Let ΔSSE m + n denote the increase in SSE caused by the union of C m and C n , which is equal to SSE m + n -(SSE m +SSE n ) . To compute SSE m + n ,
(2) (2)
Кодер 20 видео может вычислить SSE для объединенной категории C m + n как:
[0076] Чтобы уменьшить число классов с N до N-1, может потребоваться найти два класса, C m и C n , так что их объединение приводит к наименьшей ΔSSE m + n по сравнению с любыми другими комбинациями. В некоторых проектах ALF, кодер 20 видео сконфигурирован, чтобы проверять каждую пару доступных классов для объединения, чтобы найти пару с наименьшей стоимостью объединения. [0076] To reduce the number of classes from N to N-1 , it may be necessary to find two classes, C m and C n , so that their combination results in the smallest ΔSSE m + n compared to any other combinations. In some ALF designs, the
[0077] Если C m и C n (при m<n) объединяются, то кодер 20 видео и декодер 30 видео могут маркировать C n как недоступный для дополнительного объединения, и авто- и кросс-корреляции для C m изменяются в комбинированные авто- и кросс-корреляции следующим образом:[0077] If C m and C n (when m<n) are combined, then
[0078] Кодер 20 видео может определять оптимальное число классов ALF после объединения для каждого кадра на основе затрат RD. В одном примере, это производится, начиная с двадцати пяти (25) классов и успешно объединяя пару классов (из набора доступных классов), пока не останется только один класс. Для каждого возможного числа классов (1, 2, …, 25), оставшихся после объединения, кодер 20 видео может хранить карту, указывающую, какие классы объединены вместе. Кодер 20 видео затем выбирает оптимальное число классов, так что стоимость RD минимизируется следующим образом: [0078]
, ,
где - полная SSE использования N классов ( ), - полное число битов, используемых для кодирования N фильтров, и - весовой коэффициент, определенный параметром квантования (QP). Кодер 20 видео может передавать карту объединений для числа классов, указывающую, какие классы объединены вместе, на декодер 30 видео.where - full SSE using N classes ( ), is the total number of bits used to encode the N filters, and is the weighting factor defined by the quantization parameter (QP). The
[0079] Аспекты параметров сигнализации ALF описаны ниже. Краткое поэтапное описание примерного процесса кодирования параметров ALF, выполняемого кодером 20 видео, приведено ниже. Декодер 30 видео может быть сконфигурирован, чтобы выполнять противоположный процесс (например, сигналом с точки зрения декодера 30 видео является прием синтаксических элементов).[0079] Aspects of the ALF signaling parameters are described below. A brief step-by-step description of an exemplary ALF parameter encoding process performed by
1. Сигнализировать флаг включения/выключения ALF кадрового уровня. 1. Signal the frame level ALF enable/disable flag.
2. Если ALF включен, то сигнализировать флаг временного предсказания, указывающий использование фильтров из предыдущих картинок. 2. If ALF is enabled, then signal a temporal prediction flag indicating the use of filters from previous pictures.
3. Если временное предсказание используется, то сигнализировать индекс кадра, из которого соответствующие параметры ALF используются для фильтрации текущего кадра. 3. If temporal prediction is used, then signal the frame index from which the corresponding ALF parameters are used to filter the current frame.
4. Если временное предсказание не используется, то сигнализировать вспомогательную информацию ALF и коэффициенты фильтра следующим образом:4. If temporal prediction is not used, then signal the ALF side information and filter coefficients as follows:
a. Следующая вспомогательная информация ALF может сигнализироваться перед сигнализацией коэффициентов фильтра. Вспомогательная информация ALF может включать в себя: a. The following auxiliary information ALF may be signaled before signaling the filter coefficients. Ancillary ALF information may include:
i. Число уникальных фильтров, использованных после объединения классов. i. The number of unique filters used after the classes were merged.
ii. Число отводов фильтра. ii. Number of filter outlets.
iii. Информацию объединения классов, указывающую, какие классы совместно используют ошибки предсказания фильтра.iii. Class union information indicating which classes share filter prediction errors.
iv. Индекс предсказателя фиксированного фильтра для каждого класса. iv. Fixed filter predictor index for each class.
b. После сигнализации вспомогательной информации ALF, ошибки предсказания коэффициента фильтра могут сигнализироваться следующим образом:b. After signaling the ALF side information, filter coefficient prediction errors may be signaled as follows:
i. Флаг сигнализируется, чтобы указывать, приводятся ли к нулю (0) ошибки предсказания фильтра для некоторых из оставшихся классов после объединения.i. The flag is signaled to indicate whether the filter prediction errors for some of the remaining classes after the merging are nullified (0).
ii. Флаг сигнализируется, чтобы указывать, используется ли дифференциальное кодирование для сигнализации ошибок предсказания фильтра (если число классов, оставшихся после объединения, больше одного (1)). ii. The flag is signaled to indicate whether differential coding is used to signal filter prediction errors (if the number of classes remaining after merging is greater than one (1)).
iii. Ошибки предсказания коэффициента фильтра затем сигнализируются с использованием экспоненциального кода Голомба k-го порядка, где значение k для разных положений коэффициентов выбирается эмпирически. iii. Filter coefficient prediction errors are then signaled using a k-th order Exponential Golomb code, where the value of k for different coefficient positions is chosen empirically.
c. Коэффициенты фильтра для компонентов цветности, если имеются, напрямую кодируются без каких-либо способов предсказания. c. The filter coefficients for the chrominance components, if any, are directly encoded without any prediction methods.
5. Наконец, сигнализируются флаги управления включением/выключением ALF блочного уровня. 5. Finally, block-level ALF enable/disable control flags are signaled.
[0080] Проект адаптивной контурной фильтрации в некоторых примерах JEM может представлять одну или несколько потенциальных проблем. В качестве одного примера, некоторые примерные проекты адаптивной контурной фильтрации выполняют множество проходов по каждому кадру, чтобы создать один набор фильтров (например, один фильтр для каждого класса пикселов или один фильтр, совместно используемый среди множества классов в кадре) для всего кадра. Такие методы вводят высокую задержку кодера. Высокая задержка кодера может быть особенно проблематичной в применениях с низким запаздыванием, таких как видеоконференции, где может быть важно по возможности быстро отправлять в канал даже частично закодированный кадр.[0080] The adaptive loop filtering design in some JEM examples may present one or more potential problems. As one example, some exemplary adaptive loop filtering designs perform multiple passes over each frame to create one set of filters (eg, one filter per pixel class, or one filter shared among multiple classes in a frame) for the entire frame. Such methods introduce high encoder latency. High encoder latency can be particularly problematic in low latency applications such as videoconferencing, where it can be important to send even a partially encoded frame onto the channel as quickly as possible.
[0081] В качестве другого примера, в соответствии с некоторыми проектами адаптивной контурной фильтрации, один набор фильтров используется для всей картинки. Локальная статистика в малом блоке исходной картинки и восстановленной картинки может отличаться от совокупной статистики, полученной с использованием всей картинки. Поэтому, ALF, которая является оптимальной для всей картинки, может быть неоптимальной для данного блока.[0081] As another example, according to some adaptive loop filtering designs, one set of filters is used for the entire picture. Local statistics in a small block of the original image and the reconstructed image may differ from the aggregate statistics obtained using the entire image. Therefore, an ALF that is optimal for the entire picture may not be optimal for a given block.
[0082] В качестве другого примера, потенциальная проблема с проектированием нового набора фильтров Винера с использованием малого блока картинки, чтобы получить лучшую локальную адаптивность, состоит в том, что число пикселов, доступных в малом блоке, может быть недостаточным, чтобы кодер 20 видео определил хорошую оценку матриц и векторов корреляции. Это может приводить к некорректным уравнениям Винера-Хопфа, что, в свою очередь, может давать менее чем оптимальные коэффициенты ALF.[0082] As another example, a potential problem with designing a new Wiener filter bank using a small picture block to obtain better local adaptability is that the number of pixels available in the small block may not be sufficient for
[0083] В качестве другого примера, некоторые примерные проекты адаптивной контурной фильтрации определяют шестнадцать (16) фиксированных фильтров для каждого из двадцати пяти (25) классов, тем самым выдавая всего четыреста (400) фильтров. Эти фильтры могут использоваться как фильтры предсказателя для конечных коэффициентов фильтра для каждого класса. Индекс используемого фильтра предсказателя сигнализируется для каждого класса. Это может вызывать высокие издержки сигнализации и уменьшать общий выигрыш кодирования. [0083] As another example, some exemplary adaptive loop filtering designs define sixteen (16) fixed filters for each of twenty-five (25) classes, thereby producing a total of four hundred (400) filters. These filters can be used as predictor filters for the final filter coefficients for each class. The index of the predictor filter used is signaled for each class. This can cause high signaling overhead and reduce the overall coding gain.
[0084] Другой потенциальный недостаток использования фиксированного набора фильтров в качестве предсказателей состоит в том, что набор предсказателей не модифицируется на основе новых фильтров, спроектированных для предыдущих кадров. Поскольку соседние по времени кадры по всей вероятности имеют сходную статистику, использование оптимальных фильтров для предыдущих кадров может приводить к эффективному предсказанию оптимальных фильтров для текущего кадра.[0084] Another potential disadvantage of using a fixed filter bank as predictors is that the predictor bank is not updated based on new filters designed for previous frames. Because temporally adjacent frames are likely to have similar statistics, using optimal filters for previous frames can lead to efficient prediction of optimal filters for the current frame.
[0085] В качестве другого примера, некоторые примерные проекты адаптивной контурной фильтрации требуют двух проходов по текущему кадру, чтобы принять решения о включении/выключении фильтра блочного уровня. Это вводит дополнительную задержку кодера. Блоки, для которых сигнализируются флаги включения/выключения ALF, не выровнены с единицами кодирования (CU). Поэтому, информация CU, такая как режим, флаг закодированного блока и т.д. не могут учитываться в решении управления включением/выключением ALF. Использование этой информации может уменьшить издержки сигнализации включения/выключения. [0085] As another example, some exemplary adaptive loop filtering designs require two passes through the current frame to make block-level filter on/off decisions. This introduces additional encoder delay. The blocks for which the ALF enable/disable flags are signaled are not aligned with the coding units (CU). Therefore, CU information such as mode, encoded block flag, etc. cannot be taken into account in the ALF on/off control decision. Using this information can reduce the on/off signaling overhead.
[0086] Чтобы решить одну или несколько из проблем, рассмотренных выше, настоящее раскрытие описывает методы для дополнительного улучшения выигрышей кодирования и визуального качества, получаемых с использованием адаптивной контурной фильтрации. Кодер 20 видео и/или декодер 30 видео могут применять любой из следующих перечисленных методов. Альтернативно, кодер 20 видео и/или декодер 30 видео может применять любую комбинацию перечисленных методов, обсужденных ниже. [0086] In order to address one or more of the problems discussed above, the present disclosure describes techniques for further improving coding gains and visual quality obtained using adaptive loop filtering.
[0087] В соответствии с одним примерным методом настоящего раскрытия, кодер 20 видео может сигнализировать набор адаптивных контурных фильтров поблочно в одной картинке/слайсе/тайле. Например, для каждого блока данных видео в картинке, слайсе или тайле данных видео, кодер 20 видео может быть сконфигурирован, чтобы кодировать один или несколько синтаксических элементов, указывающих набор адаптивных контурных фильтров, подлежащих использованию для блока. Декодер 30 видео может быть сконфигурирован, чтобы декодировать один или несколько синтаксических элементов для каждого блока, чтобы определять набор адаптивных контурных фильтров, подлежащих использованию для блока. [0087] In accordance with one exemplary method of the present disclosure,
[0088] В одном примере, кодер 20 видео может быть сконфигурирован, чтобы указывать набор ALF (например, набор адаптивных контурных фильтров, упомянутых выше) путем кодирования индекса набора в список наборов фильтров (например, множество наборов адаптивных контурных фильтров). В настоящем раскрытии, термин “набор фильтров” может относиться к одному набору адаптивных контурных фильтров, термин “наборы фильтров” может относиться к множеству наборов адаптивных контурных фильтров, и термин “список наборов фильтров” может относиться к списку множества наборов адаптивных контурных фильтров. В одном примере, список наборов фильтров может включать в себя множество наборов адаптивных контурных фильтров. То есть, список наборов фильтров может включать в себя все определенные возможные наборы фильтров (т.е., множество наборов адаптивных контурных фильтров) для картинки/слайса/тайла. Индекс, в некоторых примерах, идентифицирует конкретный набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, включенных в список. Декодер 30 видео может быть сконфигурирован, чтобы хранить и/или определять множество наборов адаптивных контурных фильтров в соответствии с предопределенными правилами. Как будет обсуждено ниже, множество наборов адаптивных контурных фильтров может включать в себя предварительно обученные фильтры, адаптивные контурные фильтры, которые сигнализируются для текущей картинке, и адаптивные контурные фильтры, которые используются повторно из предыдущих картинок. В одном примере, для конкретного набора адаптивных контурных фильтров, каждый соответственный набор конкретного набора адаптивных контурных фильтров включает в себя один или более из текущего адаптивного контурного фильтра, сигнализированного для текущей картинки, или предварительно обученного адаптивного контурного фильтра. Декодер 30 видео может быть сконфигурирован, чтобы декодировать индекс, отправленный кодером 20 видео, и определять набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, чтобы использовать для конкретного блока данных видео.[0088] In one example,
[0089] Таким образом, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация. В одном примере раскрытия, каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, использованный в одной или нескольких предыдущих картинках. Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров для соответственного блока текущей картинки в случае, когда адаптивная контурная фильтрация разрешена для блока (например, как указано флагом включения/выключения ALF). [0089] Thus,
[0090] Кодер 20 видео и декодер 30 видео могут быть дополнительно сконфигурированы, чтобы осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров. Например, как описано выше, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы классифицировать выборки блока и затем использовать адаптивный контурный фильтр в соответственном наборе адаптивных контурных фильтров, который ассоциирован с классификацией. В другом примере, кодер 20 видео может быть сконфигурирован, чтобы сигнализировать синтаксический элемент, который указывает, какой адаптивный контурный фильтр в соответственном наборе адаптивных контурных фильтров следует использовать для текущего блока. Соответственно, в одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать соответственный флаг на блок, указывая, используется ли адаптивная контурная фильтрация для соответственного блока (например, флаг включения/выключения ALF блочного уровня), и кодировать, на основе соответственного флага на блок, соответственный синтаксический элемент, указывающий соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки. В некоторых примерах, кодер 20 видео и декодер 30 видео не будут кодировать соответственный синтаксический элемент, указывающий соответственный набор адаптивных контурных фильтров, в случае, когда адаптивная контурная фильтрация не используется для текущего блока (например, флаг ALF блочного уровня указывает, что адаптивная контурная фильтрация выключена и/или не разрешена).[0090]
[0091] В примерах выше, “блок” текущей картинки может определяться как любой размер блока. В одном примере, блок может представлять собой единицу дерева кодирования (CTU) или любой другой блок. Блок может быть не связан с разбиением. В случае, когда блок представляет собой CTU, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы использовать набор адаптивных контурных фильтров, сигнализируемый для CTU для всех блоков, разделенных из CTU.[0091] In the examples above, a "block" of the current picture may be defined as any block size. In one example, the block may be a coding tree unit (CTU) or any other block. A block may not be associated with a break. In the case where the block is a CTU,
[0092] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять список множества наборов адаптивных контурных фильтров. Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять такой список на картинку, на слайс или на тайл. Каждый набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров может быть сконфигурирован так, что каждая возможная классификация выборок имеет ассоциированный фильтр. То есть, каждый набор может содержать фильтр, назначенный на класс. Как описано выше, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать индекс набора в список из множества наборов адаптивных контурных фильтров на блок. В одном примере, список множества наборов адаптивных контурных фильтров может представлять собой таблицу, где каждая запись в таблице представляет собой конкретный набор адаптивных контурных фильтров. К тому же, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать флаг на блок для указания, используется или нет ALF (например, флаг включения/выключения ALF блочного уровня). Список множества наборов адаптивных контурных фильтров может включать в себя один или несколько предварительно обученных фильтров, один или несколько фильтров, выведенных с использованием фильтров из предыдущих картинок, и/или фильтры, сигнализированные в битовом потоке для текущей картинки.[0092] In one example,
[0093] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео и/или декодер 30 видео могут совместно использовать список множества наборов фильтров по разным картинкам (например, адаптивный контурный фильтр, использованный для предыдущей картинки, включен в набор из множества наборов фильтров, использованных для кодирования текущего блока). В одном примере, список наборов фильтров может быть инициализирован с предварительно обученными фильтрами. После кодирования картинки, кодер 20 видео может выводить новый набор фильтров на основе закодированной картинки и добавлять новый набор фильтров в список наборов фильтров. Альтернативно, новый набор фильтров может заменять существующий набор фильтров в списке. После кодирования другой картинки, кодер 20 видео может выводить другой набор фильтров и включать выведенный набор фильтров в список наборов фильтров. В этом примере, список наборов фильтров является общим для всех картинок и может обновляться после кодирования картинки. Со стороны декодера, декодер 30 видео может обнаруживать сигнализацию нового набора фильтров после декодирования картинки или перед декодированием картинки.[0093] In accordance with some examples of the present disclosure,
[0094] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео может быть сконфигурирован, чтобы сигнализировать (например, кодировать) синтаксические элементы нового набора фильтров на картинку, на слайс и/или на тайл. Декодер 30 видео может быть сконфигурирован, чтобы определять новый набор фильтров на основе сигнализации от кодера 20 видео и добавлять новый набор фильтров в список, включающий в себя множество наборов фильтров.[0094] In accordance with some examples of the present disclosure, the
[0095] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять новый набор фильтров в список наборов фильтров. Обновленный список может затем использоваться, чтобы фильтровать блок в следующей картинке или картинках. В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы использовать обновленный список (например, содержащий новый набор фильтров, выведенных с использованием текущей картинки/слайса/тайла), чтобы фильтровать блок в текущей картинке/слайсе/тайле. [0095] In one example,
[0096] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео и декодер 30 видео могут обновлять список наборов фильтров (например, список множества наборов адаптивных контурных фильтров) фильтрами, выведенными с использованием предыдущих картинок, предыдущих слайсов и/или предыдущих тайлов. Порядок, в котором кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять наборы адаптивных контурных фильтров в список наборов фильтров, может быть фиксированным, предопределенным или гибким. Список может переупорядочиваться в расчете на картинку на основе информации, относящейся к текущей картинке, и информации, относящейся к картинкам, из которых выведены соответствующие фильтры в списке. Кодер 20 видео может указывать набор фильтров декодеру 30 видео с использованием индекса в списке наборов фильтров. В некоторых примерах, кодер 20 видео может назначать меньшее значение индекса более часто используемым фильтрам или заново добавленным фильтрам.[0096] In accordance with some examples of the present disclosure,
[0097] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять заново выведенный набор фильтров в начало списка. В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять наборы фильтров, выведенные с использованием предыдущих кадров (например, предыдущие адаптивные контурные фильтры), в список после текущих сигнализированных фильтров и перед наборами существующих фильтров в списке (например, наборами предварительно обученных фиксированных фильтров). В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять адаптивные контурные фильтры в каждый соответственный набор адаптивных контурных фильтров, так что текущие адаптивные контурные фильтры добавляются первыми, предыдущие адаптивные контурные фильтры добавляются вторыми, и предварительно обученные адаптивные контурные фильтры добавляются последними.[0097] In one example,
[0098] В другом примере раскрытия, упорядочивание наборов фильтров в списке может зависеть от другой связанной с картинкой информации. Например, фильтры, выведенные из картинок на том же самом временном уровне, что и текущая картинка, могут помещаться в списке перед фильтрами, выведенными с использованием картинок на другом временном уровне. В другом примере, индекс набора фильтров в списке может зависеть от того, является ли соответствующая картинка, из которой он выведен, опорной картинкой, используемой для предсказания текущей картинки. Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять фильтры, соответствующие более часто используемой опорной картинке, перед фильтрами, выведенными из других опорных картинок. Упорядочивание наборов фильтров таким образом может приводить к синтаксическим элементам (например, индексам в списке наборов фильтров) с меньшим количеством битов для наиболее часто используемых наборов фильтров в списке наборов фильтров. Соответственно, меньше битов может использоваться для сигнализации набора фильтров, используемого для блока, тем самым повышая эффективность кодирования.[0098] In another exemplary disclosure, the ordering of the filter sets in the list may depend on other picture-related information. For example, filters derived from pictures at the same time level as the current picture may be listed before filters derived from pictures at a different time level. In another example, the index of the filter bank in the list may depend on whether the corresponding picture from which it is derived is the reference picture used to predict the current picture.
[0099] В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять фильтры, выведенные с использованием картинок, закодированных с аналогичным параметром квантования (QP), в текущую картинку перед фильтрами, выведенными из предыдущих картинок, закодированных с другим QP. [0099] In another example,
[0100] В другом примере раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы ограничивать максимальное число наборов фильтров в списке наборов фильтров. В одном примере, до тридцати двух (32) наборов фильтров могут сохраняться в списке наборов фильтров. В некоторых примерах, кодер 20 видео может быть сконфигурирован, чтобы сигнализировать максимальное число наборов фильтров в списке в заголовке слайса, наборе параметров последовательности, наборе параметров картинки, в другой информации синтаксиса высокого уровня или где-либо еще.[0100] In another example of the disclosure,
[0101] В другом примере раскрытия, кодер 20 видео может использовать разное число битов, чтобы сигнализировать разные индексы наборов фильтров. Меньше битов может использоваться, чтобы указывать более низкое положение индекса в списке (поскольку наборы фильтров вверху списка будут выбираться с большей вероятностью) по сравнению с более высоким положением индекса. Вновь, это может приводить к тому, что меньше битов используется, чтобы сигнализировать набор фильтров, более часто используемый для блока, тем самым повышая эффективность кодирования.[0101] In another exemplary disclosure,
[0102] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы совместно использовать информацию ALF для некоторых блоков (например, объединение информации ALF по двум или более блокам). В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы совместно использовать индекс набора фильтров и/или флаг включения/выключения ALF (этот флаг указывает, применяется ли адаптивная контурная фильтрация к блоку) по множеству блоков. Указатель объединения ALF может указывать, какие блоки объединены, и какая информация ALF ассоциирована с указателем объединения ALF. Указатель объединения может представлять собой индекс, флаг или любой другой синтаксический элемент.[0102] In accordance with some examples of the present disclosure,
[0103] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы объединять информацию ALF блока с блоком выше или с блоком слева. В других примерах, может также использоваться более гибкая информация объединения ALF, которая разрешает объединение одного блока с любым другим блоком (т.е., не обязательно соседним блоком) в картинке. [0103] In one example,
[0104] В некоторых примерах настоящего раскрытия, декодер 30 видео может быть сконфигурирован, чтобы выводить флаг включения/выключения ALF на основе другой существующей информации блока. В одном примере, декодер 30 видео может выводить флаг включения/выключения ALF на основе существующей информации блока, и например, кодер 20 видео может не сигнализировать флаг включения/выключения ALF. Кодер 20 видео может сигнализировать флаг включения/выключения ALF для группы блоков, обозначенной как блок ALF. Размер блока ALF может быть предопределен или может сигнализироваться кодером 20 видео. В одном примере, блоки, совместно использующие тот же самый флаг включения/выключения ALF, могут представлять блок ALF. В другом примере, блок ALF может быть равен блоку.[0104] In some examples of the present disclosure,
a. В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы выводить флаг включения/выключения ALF на основе числа блоков в блоке ALF, которые совместно используют тот же самый флаг включения/выключения ALF, имеющий ненулевые флаги закодированных блоков (CBF). CBF указывает, включает ли в себя блок что-либо значимое (например, ненулевые коэффициенты преобразования). Значение “1” для CBF указывает, что блок включает в себя ненулевые коэффициенты преобразования. Если число ненулевых CBF меньше определенного порога, то ALF может блокироваться, или фильтр ALF по умолчанию может применяться к этим блокам в блоке ALF. a. In one example,
b. В примере под-пункта ‘a’ выше, может подсчитываться число ненулевых коэффициентов преобразования вместо CBF. Может вводиться порог для подсчитанных коэффициентов, и если число ненулевых коэффициентов преобразования меньше порога, адаптивная контурная фильтрация может блокироваться для блоков, включенных в блок ALF, или фильтр ALF по умолчанию может применяться к этим блокам. b. In the example of sub-clause 'a' above, the number of non-zero transform coefficients may be counted instead of CBF. A threshold may be introduced for the calculated coefficients, and if the number of non-zero transform coefficients is less than the threshold, adaptive loop filtering may be disabled for blocks included in the ALF block, or a default ALF filter may be applied to those blocks.
c. В другом примере, если число блоков в блоке ALF, закодированном с режимом пропуска, больше определенного порога, то адаптивная контурная фильтрация может блокироваться для этих блоков в блоке ALF. Методы под-пункта ‘c’ могут использоваться вместе с методами под-пункта ‘a’ и ‘b’ в любой комбинации.c. In another example, if the number of blocks in an ALF block encoded with skip mode is greater than a certain threshold, then adaptive loop filtering may be disabled for those blocks in the ALF block. The methods of subclause 'c' may be used together with the methods of subclause 'a' and 'b' in any combination.
d. В примере под-пункта ‘c’ выше, режим пропуска используется в качестве примера, и другие режимы кодирования (например, конкретный режим, такой как конкретное направление интра-предсказания, конкретный режим интер-предсказания и т.д.) могут использоваться при выведении флага включения/выключения ALF. d. In the example of sub-clause 'c' above, the skip mode is used as an example, and other coding modes (for example, a specific mode such as a specific intra-prediction direction, a specific inter-prediction mode, etc.) may be used in deriving ALF enable/disable flag.
[0105] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный кодер 20 видео, который может реализовывать методы, описанные в настоящем раскрытии. Кодер 20 видео может выполнять интра- и интер-кодирование блоков видео в слайсах видео. Интра-кодирование опирается на пространственное предсказание для уменьшения или удаления пространственной избыточности в видео в пределах данного кадра или картинки видео. Интер-кодирование опирается на временное предсказание для уменьшения или удаления временной избыточности в видео в пределах смежных кадров или картинок последовательности видео. Интра-режим (I-режим) может относиться к любому из нескольких режимов сжатия на пространственной основе. Интер-режимы, такие как однонаправленное предсказание (P-режим) или би- (двунаправленное) предсказание (B-режим), могут относиться к любому из нескольких режимов сжатия на временной основе. [0105] FIG. 4 is a block diagram illustrating an
[0106] В примере на фиг. 4, кодер 20 видео включает в себя память 33 данных видео, модуль 35 разбиения, модуль 41 обработки предсказания, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования, модуль 56 энтропийного кодирования. Модуль 41 обработки предсказания включает в себя модуль 42 оценки движения (MEU), модуль 44 компенсации движения (MCU) и модуль 46 интра-предсказания. Для восстановления блока видео, кодер 20 видео также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования, сумматор 62, модуль 64 фильтрации и буфер 66 декодированной картинки (DPB). [0106] In the example of FIG. 4, the
[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 видео или вне чипа относительно этих компонентов. [0107] As shown in FIG. 4, the
[0108] Модуль 35 разбиения извлекает данные видео из памяти 33 данных видео и разбивает данные видео на блоки видео. Это разбиение может также включать в себя разбиение на слайсы, тайлы или другие большие единицы, а также разбиение блока видео, например, в соответствии со структурой квадродерева LCU и CU. Кодер 20 видео, в общем, иллюстрирует компоненты, которые кодируют блоки видео в пределах слайса видео, подлежащие кодированию. Слайс может делиться на множество блоков видео (и возможно на наборы блоков видео, упоминаемых как тайлы). Модуль 41 обработки предсказания может выбирать один из множества возможных режимов кодирования, например, один из множества режимов интра-кодирования или один из множества режимов интер-кодирования, для текущего блока видео на основе ошибочных результатов (например, скорости кодирования и уровня искажения). Модуль 41 обработки предсказания может обеспечивать результирующий интра- или интер-кодированный блок на сумматор 50, чтобы генерировать остаточные данные блока, и на сумматор 62, чтобы восстанавливать закодированный блок для использования в качестве опорной картинки. [0108] The splitter 35 extracts the video data from the
[0109] Модуль 46 интра-предсказания в модуле 41 обработки предсказания может выполнять кодирование с интра-предсказанием текущего блока видео относительно одного или нескольких соседних блоков в том же самом кадре или слайсе, что и текущий блок, подлежащий кодированию, чтобы обеспечить пространственное сжатие. Модуль 42 оценки движения и модуль 44 компенсации движения в модуле 41 обработки предсказания выполняют кодирование с интер-предсказанием текущего блока видео относительно одного или нескольких предсказанных блоков в одной или нескольких опорных картинках, чтобы обеспечить временное сжатие. [0109] The
[0110] Модуль 42 оценки движения может быть сконфигурирован, чтобы определять режим интер-предсказания для слайса видео в соответствии с предопределенным шаблоном для последовательности видео. Предопределенный шаблон может назначать слайс видео в последовательности как P-слайса или B-слайса. Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, но проиллюстрированы по отдельности в концептуальных целях. Оценка движения, выполняемая модулем 42 оценки движения, представляет собой процесс генерации векторов движения, которые оценивают движение для блоков видео. Вектор движения, например, может указывать перемещение PU блока видео в текущем кадре видео или картинке относительно предсказанного блока в опорной картинке. [0110] The
[0111] Предсказанный блок представляет собой блок, который найден близко совпадающим с PU блока видео, подлежащего кодированию, в терминах пиксельной разности, которая может определяться суммой абсолютной разности (SAD), суммы квадратов разности (SSD) или другими метриками разности. В некоторых примерах, кодер 20 видео может вычислять значения для суб-целочисленных пиксельных положений опорных картинок, хранящихся в DPB 66. Например, кодер 20 видео может интерполировать значения положений в одну четверть пиксела, положений в одну восьмую пиксела или других дробно-пиксельных положений опорной картинки. Поэтому, модуль 42 оценки движения может выполнять поиск движения относительно полно-пиксельных положений и дробно-пиксельных положений и выводить вектор движения с дробно-пиксельной точностью. [0111] A predicted block is a block that is found to closely match the PU of the video block to be encoded in terms of pixel difference, which may be defined by sum absolute difference (SAD), sum of squared difference (SSD), or other difference metrics. In some examples,
[0112] Модуль 42 оценки движения вычисляет вектор движения для PU блока видео в интер-кодированном слайсе путем сравнения положения PU с положением предсказанного блока опорной картинки. Опорная картинка может выбираться из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), все из которых идентифицируют одну или несколько опорных картинок, сохраненных в DPB 66. Модуль 42 оценки движения отправляет вычисленный вектор движения на модуль 56 энтропийного кодирования и модуль 44 компенсации движения. [0112]
[0113] Компенсация движения, выполняемая модулем 44 компенсации движения, может включать в себя извлечение или генерацию предсказанного блока на основе вектора движения, определенного оценкой движения, возможно выполняя интерполяцию с суб-пиксельной точностью. После приема вектора движения для PU текущего блока видео, модуль 44 компенсации движения может определять местоположение предсказанного блока, на который указывает вектор движения, в одном из списков опорных картинок. Кодер 20 видео формирует остаточный блок видео путем вычитания пиксельных значений предсказанного блока из пиксельных значений текущего кодируемого блока видео, формируя пиксельные разностные значения. Пиксельные разностные значения формируют остаточные данные для блока и могут включать в себя разностные компоненты как яркости, так и цветности. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 44 компенсации движения может также генерировать синтаксические элементы, ассоциированные с блоками видео и слайсом видео для использования декодером 30 видео при декодировании блоков видео слайса видео. [0113] The motion compensation performed by the
[0114] После того, как модуль 41 обработки предсказания сгенерировал предсказанный блок для текущего блока видео, посредством либо интра-предсказания, либо интер-предсказания, кодер 20 видео образует остаточный блок видео путем вычитания предсказанного блока из текущего блока видео. Остаточные данные видео в остаточном блоке могут быть включены в одну или несколько TU и подаваться на модуль 52 обработки преобразования. Модуль 52 обработки преобразования преобразует остаточные данные видео в остаточные коэффициенты преобразования с использованием преобразования, такого как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование. Модуль 52 обработки преобразования может преобразовывать остаточные данные видео из пиксельной области в область преобразований, такую как частотная область. [0114] After the prediction processing unit 41 has generated a predicted block for the current video block by either intra-prediction or inter-prediction,
[0115] Модуль 52 обработки преобразования может отправлять результирующие коэффициенты преобразования на модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшить битовую скорость. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Степень квантования может модифицироваться путем регулирования параметра квантования. В некоторых примерах, модуль 54 квантования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В другом примере, модуль 56 энтропийного кодирования может выполнять сканирование. [0115] Transform processing module 52 may send the resulting transform coefficients to quantization module 54 . Quantization module 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified by adjusting the quantization parameter. In some examples, quantizer 54 may then perform a matrix scan including the quantized transform coefficients. In another example,
[0116] Вслед за квантованием, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), контекстно-адаптивное двоичное арифметическое кодирование на основе синтаксиса (SBAC), энтропийное кодирование с разбиением интервалов вероятности (PIPE) или другую методологию или метод энтропийного кодирования. Вслед за энтропийным кодированием модулем 56 энтропийного кодирования, закодированный битовый поток может передаваться на декодер 30 видео или архивироваться для дальнейшей передачи или извлечения декодером 30 видео. Модуль 56 энтропийного кодирования может также энтропийно кодировать векторы движения и другие синтаксические элементы для текущего кодируемого слайса видео, обеспеченного модулем 51 обработки предсказания. [0116] Following quantization,
[0117] Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области для дальнейшего использования в качестве опорного блока опорной картинки. Модуль 44 компенсации движения может вычислять опорный блок путем суммирования остаточного блока с предсказанным блоком одной из опорных картинок в одном из списков опорных картинок. Модуль 44 компенсации движения может также применять один или несколько фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования в оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с блоком предсказания скомпенсированного движения, сформированным модулем 54 компенсации движения, чтобы сформировать восстановленный блок. [0117] The inverse quantization unit 58 and the inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct a residual block in the pixel region for further use as a reference block of a reference picture. The
[0118] Модуль 64 фильтрации фильтрует восстановленный блок (например, выход сумматора 62) и сохраняет отфильтрованный восстановленный блок в DPB 66 для использований в качестве опорного блока. Опорный блок может использоваться модулем 52 оценки движения и модулем 54 компенсации движения в качестве опорного блока, чтобы интер-предсказывать блок в последующем кадре видео или картинке. Модуль 64 фильтрации может выполнять любой тип фильтрации, такой как фильтрация устранения блочности, фильтрация SAO, пиковая фильтрация SAO, ALF и/или GALF и/или другие типы контурных фильтров. Фильтр устранения блочности может, например, применять фильтрацию устранения блочности, чтобы фильтровать границы блока, чтобы удалять артефакты блочности из восстановленного видео. Пиковый фильтр SAO может применять смещения к восстановленным пиксельным значениям, чтобы улучшить общее качество кодирования. Могут также использоваться дополнительные контурные фильтры (внутриконтурные или пост-контурные).[0118] Filtering module 64 filters the reconstructed block (eg, the output of adder 62) and stores the filtered reconstructed block in
[0119] К тому же, модуль 64 фильтрации может быть сконфигурирован, чтобы выполнять любой из методов в настоящем раскрытии, относящихся к адаптивной контурной фильтрации. В частности, как описано выше, модуль 64 фильтрации может быть сконфигурирован, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0119] In addition, filter module 64 may be configured to perform any of the techniques in the present disclosure relating to adaptive loop filtering. In particular, as described above, filtering module 64 may be configured to determine a respective adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks that use adaptive loop filtering, each respective adaptive loop filter set includes the previous adaptive loop filter used in one or more previous pictures, and perform adaptive loop filtering of blocks of the current picture in accordance with the respective sets of adaptive loop filters.
[0120] Фиг. 5 представляет собой блок-схему, иллюстрирующую примерный декодер 30 видео, который может реализовывать методы, описанные в настоящем раскрытии. Декодер 30 видео согласно фиг. 5 может, например, быть сконфигурирован, чтобы принимать сигнализацию, описанную выше в отношении кодера 20 видео на фиг. 4. В примере на фиг. 5, декодер 30 видео включает в себя память 78 данных видео, модуль 80 энтропийного декодирования, модуль 81 обработки предсказания, модуль 86 обратного квантования, модуль 88 обработки обратного преобразования, сумматор 90, DPB 94 и модуль 92 фильтрации. Модуль 81 обработки предсказания включает в себя модуль 82 компенсации движения и модуль 84 интра-предсказания. Декодер 30 видео может, в некоторых примерах, выполнять проход декодирования, в общем противоположный проходу кодирования, описанному в отношении кодера 20 видео на фиг. 4.[0120] FIG. 5 is a block diagram illustrating an
[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 видео или вне чипа относительно этих компонентов. [0121] During the decoding process,
[0122] Модуль 80 энтропийного декодирования декодера 30 видео энтропийно декодирует данные видео, хранящиеся в памяти 78 данных видео, чтобы генерировать квантованные коэффициенты, векторы движения и другие синтаксические элементы. Модуль 80 энтропийного декодирования направляет векторы движения и другие синтаксические элементы на модуль 81 обработки предсказания. Декодер 30 видео может принимать синтаксические элементы на уровне слайса видео и/или уровне блока видео. [0122] Entropy decoding unit 80 of
[0123] Когда слайс видео закодирован как интра-закодированный (I) слайс, модуль 84 интра-предсказания модуля 81 обработки предсказания может генерировать данные предсказания для блока видео текущего слайса видео на основе сигнализированного режима интра-предсказания и данных из ранее декодированных блоков текущего кадра или картинки. Когда кадр видео закодирован как интер-кодированный слайс (например, B-слайс или P-слайс), модуль 82 компенсации движения модуля 81 обработки предсказания формирует предсказанные блоки для блока видео текущего слайса видео на основе векторов движения и других синтаксических элементов, принятых от модуля 80 энтропийного декодирования. Предсказанные блоки могут формироваться из одной из опорных картинок в одном из списков опорных картинок. Декодер 30 видео может создавать списки опорных кадров, Список 0 и Список 1, с использованием методов создания по умолчанию на основе опорных картинок, хранящихся в DPB 94. [0123] When a video slice is encoded as an intra-coded (I) slice, the
[0124] Модуль 82 компенсации движения определяет информацию предсказания для блока видео текущего слайса видео путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания, чтобы формировать предсказанные блоки для текущего декодируемого блока видео. Например, модуль 82 компенсации движения использует некоторые из принятых синтаксических элементов, чтобы определить режим предсказания (например, интра- или интер-предсказание), использованный для кодирования блоков видео слайса видео, тип слайса интер-предсказания (например, B-слайс или P-слайс), информацию создания для одного или нескольких списков опорных картинок для слайса, векторы движения для каждого интер-закодированного блока видео слайса, статус интер-предсказания для каждого интер-закодированного блока видео слайса и другую информацию для декодирования блоков видео в текущем слайсе видео. [0124]
[0125] Модуль 82 компенсации движения может также выполнять интерполяцию на основе фильтров интерполяции. Модуль 82 компенсации движения может использовать фильтры интерполяции, как использовано кодером 20 видео во время кодирования блоков видео, чтобы вычислить интерполированные значения для суб-целочисленных пикселов опорных блоков. В этом случае, модуль 82 компенсации движения может определять фильтры интерполяции, использованные кодером 20 видео, из принятых синтаксических элементов и использовать фильтры интерполяции, чтобы формировать предсказанные блоки. [0125]
[0126] Модуль 86 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты преобразования, обеспеченные в битовом потоке и декодированные модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного кодером 20 видео для каждого блока видео в слайсе видео, чтобы определить степень квантования и, подобным же образом, степень обратного квантования, которая должна применяться. Модуль 88 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целое преобразование или концептуально аналогичный процесс обратного преобразования к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области. [0126] The inverse quantizer 86 inversely quantizes, i. dequantizes the quantized transform coefficients provided in the bitstream and decoded by entropy decoding module 80 . The inverse quantization process may include using a quantization parameter calculated by
[0127] После того, как модуль 81 обработки предсказания сгенерировал предсказанный блок для текущего блока видео с использованием, например, интра- или интер-предсказания, декодер 30 видео формирует восстановленный блок видео путем суммирования остаточных блоков из модуля 88 обработки обратного преобразования с соответствующими предсказанными блоками, сгенерированными модулем 82 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования. [0127] After the prediction processing unit 81 has generated a predicted block for the current video block using, for example, intra or inter prediction, the
[0128] Модуль 92 фильтрации фильтрует восстановленный блок (например, выход сумматора 90) и сохраняет отфильтрованный восстановленный блок в DPB 94 для использований в качестве опорного блока. Опорный блок может использоваться модулем 82 компенсации движения в качестве опорного блока, чтобы интер-предсказывать блок в последующем кадре видео или картинке. Модуль 92 фильтрации может выполнять любой тип фильтрации, такой как фильтрация устранения блочности, фильтрация SAO, пиковая фильтрация SAO, ALF и/или GALF и/или другие типы контурных фильтров. Фильтр устранения блочности может, например, применять фильтрацию устранения блочности, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Пиковый фильтр SAO может применять смещения к значениям восстановленных пикселов, чтобы улучшить общее качество кодирования. Могут также использоваться дополнительные контурные фильтры (внутриконтурные или пост-контурные).[0128] The
[0129] К тому же, модуль 92 фильтрации может быть сконфигурирован, чтобы выполнять любой из методов в настоящем раскрытии, относящихся к адаптивной контурной фильтрации. В частности, как описано выше, модуль 92 фильтрации может быть сконфигурирован, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, использованный в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0129] In addition,
[0130] Фиг. 6 показывает примерную реализацию модуля 92 фильтрации. Модуль 64 фильтрации может быть реализован аналогичным образом. Модули 64 и 92 фильтрации могут выполнять методы настоящего раскрытия, возможно во взаимосвязи с другими компонентами кодера 20 видео или декодера 30 видео. В примере на фиг. 6, модуль 92 фильтрации включает в себя фильтр 102 устранения блочности, фильтр 104 SAO и фильтр 106 ALF/GALF. Фильтр 104 SAO может, например, быть сконфигурирован, чтобы определять значения смещения для выборок блока, как описано в настоящем раскрытии. Фильтр 106 ALF/GALF может быть сконфигурирован, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, использованный в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0130] FIG. 6 shows an exemplary implementation of the
[0131] Модуль 92 фильтрации может включать в себя меньше фильтров и/или может включать в себя дополнительные фильтры. Дополнительно, конкретные фильтры, показанные на фиг. 6, могут быть реализованы в другом порядке. Другие контурные фильтры (либо в контуре кодирования, либо после контура кодирования) могут также использоваться для сглаживания пиксельных переходов или улучшения иным образом качества видео. Декодированные блоки видео в данном кадре или картинке затем сохраняются в DPB 94, который хранит опорные картинки, используемые для последующей компенсации движения. DPB 94 может быть частью или быть отдельным от дополнительной памяти, которая хранит декодированное видео для дальнейшего представления на устройстве отображения, таком как устройство 32 отображения на фиг. 1. [0131]
[0132] Фиг. 7 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ раскрытия. Методы согласно фиг. 7 могут выполняться одной или несколькими структурными модулями кодера 20 видео и декодера 30 видео, включая модуль 64 фильтрации и модуль 92 фильтрации. Как рассмотрено выше, термин “кодирование”, в общем, относится как к кодированию, так и к декодированию. Подобным же образом, термин “кодировать”, в общем, включает в себя как кодировать, так и декодировать. [0132] FIG. 7 is a flowchart illustrating an exemplary deployment method. The methods according to FIG. 7 may be performed by one or more of the
[0133] В одном примере раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках (700). В одном примере, чтобы определить соответственные наборы адаптивных контурных фильтров, кодер 20 видео и декодер 30 видео дополнительно сконфигурированы, чтобы кодировать соответственный флаг на блок, указывающий, используется ли адаптивная контурная фильтрация для соответственного блока, и кодировать, на основе соответственного флага на блок, соответственный синтаксический элемент, указывающий соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки. В одном примере, соответственный синтаксический элемент представляет собой индекс для списка, включающего в себя множество наборов адаптивных контурных фильтров. Кодер 20 видео и декодер 30 видео могут быть дополнительно сконфигурированы, чтобы осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров (702).[0133] In one example disclosure,
[0134] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую другой примерный способ раскрытия. Фиг. 8 показывает пример методов согласно фиг. 7 более подробно. Например, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать блок данных видео в текущей картинке, чтобы создать восстановленный блок данных видео (800). То есть, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать первый блок данных видео в текущей картинке, чтобы создать первый восстановленный блок данных видео.[0134] FIG. 8 is a flowchart illustrating another exemplary disclosure method. Fig. 8 shows an example of the methods according to FIG. 7 in more detail. For example,
[0135] Кодер 20 видео и декодер 30 видео могут тогда быть сконфигурированы, чтобы определять, является ли флаг включения/выключения ALF блочного уровня включенным (802). Если нет, кодер 20 видео и декодер 30 видео не применяют ALF и вместо этого приступают к кодированию следующего блока данных видео (810). Если да, кодер 20 видео и декодер 30 видео кодируют, для блока, синтаксический элемент, указывающий набор адаптивных контурных фильтров (804). Например, кодер 20 видео и декодер 30 видео кодируют, для первого блока данных видео, первый синтаксический элемент, указывающий первый набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров.[0135]
[0136] Кодер 20 видео и декодер 30 видео могут затем определять адаптивный контурный фильтр из набора адаптивных контурных фильтров для текущего кодируемого блока (806). Например, кодер 20 видео и декодер 30 видео могут определять первый адаптивный контурный фильтр из первого набора адаптивных контурных фильтров для первого восстановленного блока данных видео. Кодер 20 видео и декодер 30 видео могут затем применять адаптивный контурный фильтр к восстановленному блоку (808). Кодер 20 видео и декодер 30 видео могут затем приступать к кодированию следующего блока данных видео (810). Например, следующий блок данных видео может представлять собой второй блок данных видео. Процесс согласно фиг. 8 затем повторяется. Следует отметить, что при выполнении методов настоящего раскрытия, при определении набора адаптивных контурных фильтров для следующего блока данных видео (например, второго блока данных видео), набор адаптивных контурных фильтров для второго блока данных видео может отличаться от набора адаптивных контурных фильтров, используемого для других блоков данных видео.[0136]
[0137] В одном или нескольких примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, прошивке или любой их комбинации. При реализации в программном обеспечении, функции могут храниться или передаваться, как одна или несколько инструкций или код, на считываемом компьютером носителе и исполняться аппаратным модулем обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальным носителям, таким как носители данных или коммуникационные среды, включающие в себя любой носитель, который облегчает перенос компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, считываемые компьютером носители, в общем, могут соответствовать (1) материальным считываемым компьютером носителям хранения, которые являются долговременными, или (2) коммуникационным средам, таким как сигнал или несущая волна. Носитель данных может представлять собой любой доступный носитель, доступ к которому может осуществляться одним или несколькими компьютерами или одним или несколькими процессорами, чтобы извлекать инструкции, код и/или структуры данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.[0137] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware processing unit. Computer-readable media may include computer-readable media that corresponds to tangible media such as storage media or communication media, including any media that facilitates transfer of a computer program from one place to another, such as in accordance with a communication protocol. Thus, computer-readable media can generally correspond to (1) tangible computer-readable storage media that is durable, or (2) communication media such as a signal or carrier wave. A storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and/or data structures for implementing the methods described in this disclosure. The computer program product may include a computer-readable medium.
[0138] В качестве примера, но не для ограничения, такие считываемые компьютером носители могут представлять собой любой из RAM, ROM, EEPROM, CD-ROM или другого хранилища на оптическом диске, хранилища на магнитном диске или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может использоваться для хранения желательного программного кода в форме инструкций или структур данных и к которому может обращаться компьютер. Также, любое соединение может надлежащим образом определяться как считываемый компьютером носитель. Например, если инструкции передаются от веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, скрученной пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная, радио- и микроволновая, то коаксиальный кабель, оптоволоконный кабель, скрученная пара, DSL или беспроводные технологии, такие как инфракрасная, радио- и микроволновая, включены в определение носителя. Следует понимать, однако, что считываемые компьютером носители и носители данных не включают в себя соединения, несущие волны, сигналы или другие изменяемые во времени носители, но вместо этого направлены на долговременные, материальные носители. Магнитный диск (disk) и оптический диск (disc), как использовано здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи-диск и Blu-ray диск, где магнитные диски (disks) обычно воспроизводят данные магнитным образом, в то время как оптические диски (discs) воспроизводят данные оптически при помощи лазеров. Комбинации изложенного выше должны также быть включены в объем считываемых компьютером носителей.[0138] By way of example, and not limitation, such computer-readable media can be any of RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory or any other medium that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection may properly be defined as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the media definition. It should be understood, however, that computer-readable media and storage media do not include connections, carrier waves, signals, or other time-varying media, but are instead directed towards durable, tangible media. The magnetic disc (disk) and the optical disc (disc) as used herein include a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a floppy disc, and a Blu-ray disc, where the magnetic discs usually reproduce data magnetically, while optical discs (discs) reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0139] Инструкции могут исполняться одним или несколькими процессорами, такими как один или несколько цифровых сигнальных процессоров (DSP), универсальных микропроцессоров, специализированными интегральными схемами (ASIC), программируемыми вентильными матрицами (FPGA) или другой эквивалентной интегральной или дискретной логической схемой. Соответственно, термин “процессор”, как использовано здесь, может относиться к любой из вышеописанных структур или любой другой структуре, подходящей для реализации методов, описанных здесь. К тому же, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или модулях программного обеспечения, сконфигурированных для кодирования и декодирования, или встроена в комбинированный кодек. Также, методы могут быть полностью реализованы в одной или нескольких схемах или логических элементах. [0139] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuit. Accordingly, the term "processor", as used here, may refer to any of the structures described above, or any other structure suitable for implementing the methods described here. Also, in some aspects, the functionality described herein may be provided in dedicated hardware and/or software modules configured for encoding and decoding, or embedded in a combined codec. Also, the methods may be fully implemented in one or more circuits or logic elements.
[0140] Методы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводной телефон, интегральную схему (IC) или набор IC (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных, чтобы выполнять раскрытые методы, но не обязательно требуют реализации разными аппаратными модулями. Напротив, как описано выше, различные модули могут комбинироваться в аппаратном модуле кодека или обеспечиваться совокупностью взаимодействующих аппаратных модулей, включая один или несколько процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или прошивкой.[0140] The techniques of the present disclosure may be implemented in a wide variety of devices or devices, including a wireless telephone, an integrated circuit (IC), or a set of ICs (eg, a chipset). Various components, modules, or blocks are described in this disclosure to emphasize the functional aspects of devices configured to perform the disclosed methods, but do not necessarily require implementation by different hardware modules. Rather, as described above, various modules may be combined in a codec hardware module, or provided by a combination of cooperating hardware modules, including one or more processors, as described above, in conjunction with suitable software and/or firmware.
[0141] Были описаны различные примеры. Эти и другие примеры соответствуют объему следующей формулы изобретения.[0141] Various examples have been described. These and other examples fall within the scope of the following claims.
Claims (92)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/679,685 | 2018-06-01 | ||
US16/427,017 | 2019-05-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2020138901A RU2020138901A (en) | 2022-07-11 |
RU2783335C2 true RU2783335C2 (en) | 2022-11-11 |
Family
ID=
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2817108C1 (en) * | 2023-11-02 | 2024-04-10 | Общество с ограниченной ответственностью "3Д ТЕХВИДЕНИЕ" | Locally adaptive light-protective filter |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120269264A1 (en) * | 2009-12-25 | 2012-10-25 | Sony Corporation | Image processing device and method |
RU2491758C2 (en) * | 2008-07-07 | 2013-08-27 | Квэлкомм Инкорпорейтед | Video encoding by filter selection |
US20160234492A1 (en) * | 2015-02-11 | 2016-08-11 | Qualcomm Incorporated | Coding tree unit (ctu) level adaptive loop filter (alf) |
US9872015B2 (en) * | 2011-04-21 | 2018-01-16 | Hfi Innovation Inc. | Method and apparatus for improved in-loop filtering |
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2491758C2 (en) * | 2008-07-07 | 2013-08-27 | Квэлкомм Инкорпорейтед | Video encoding by filter selection |
US20120269264A1 (en) * | 2009-12-25 | 2012-10-25 | Sony Corporation | Image processing device and method |
US9872015B2 (en) * | 2011-04-21 | 2018-01-16 | Hfi Innovation Inc. | Method and apparatus for improved in-loop filtering |
US20160234492A1 (en) * | 2015-02-11 | 2016-08-11 | Qualcomm Incorporated | Coding tree unit (ctu) level adaptive loop filter (alf) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2817108C1 (en) * | 2023-11-02 | 2024-04-10 | Общество с ограниченной ответственностью "3Д ТЕХВИДЕНИЕ" | Locally adaptive light-protective filter |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2019278991B2 (en) | Block-based adaptive loop filter (ALF) design and signaling | |
JP7423653B2 (en) | Block-based adaptive loop filter (ALF) with adaptive parameter set (APS) in video coding | |
US10623737B2 (en) | Peak sample adaptive offset | |
US10694214B2 (en) | Multi-type parallelized sample adaptive offset in video coding | |
KR20190089890A (en) | Indication of the use of bidirectional filters in video coding | |
KR102309353B1 (en) | Divisionless bidirectional filter | |
US11051017B2 (en) | Adaptive loop filter (ALF) index signaling | |
US20190320172A1 (en) | Hardware-friendly sample adaptive offset (sao) and adaptive loop filter (alf) for video coding | |
RU2783335C2 (en) | Device and signaling of adaptive loop filter (alf) on block basis | |
US20190373292A1 (en) | In-loop bilateral filter type decision based on block information |