RU2795695C2 - Deblocking filter for video encoding and processing - Google Patents
Deblocking filter for video encoding and processing Download PDFInfo
- Publication number
- RU2795695C2 RU2795695C2 RU2021104457A RU2021104457A RU2795695C2 RU 2795695 C2 RU2795695 C2 RU 2795695C2 RU 2021104457 A RU2021104457 A RU 2021104457A RU 2021104457 A RU2021104457 A RU 2021104457A RU 2795695 C2 RU2795695 C2 RU 2795695C2
- Authority
- RU
- Russia
- Prior art keywords
- sample
- block
- reconstructed block
- value
- boundary
- Prior art date
Links
Images
Abstract
Description
[0001] Настоящая заявка испрашивает приоритет согласно:[0001] The present application claims priority according to:
заявке на патент США № 16/551,388, поданной 26 августа, 2019, которая притязает на приоритет:U.S. Patent Application No. 16/551,388, filed August 26, 2019, which claims priority:
предварительной заявки на патент США № 62/723,408, поданной 27 августа 2018; иU.S. Provisional Application No. 62/723,408, filed August 27, 2018; And
предварительной заявки на патент США № 62/742,331, поданной 6 октября 2018,U.S. Provisional Application No. 62/742,331, filed October 6, 2018,
полное содержание которых включено в настоящий документ посредством ссылки.the entire contents of which are incorporated herein by reference.
ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY
[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), ITU-T H.265/Высокоэффективное кодирование видео (HEVC) и расширениях таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить информацию цифрового видео более эффективно путем реализации таких методик кодирования видео.[0003] Digital video functionality can be incorporated into a wide range of devices, including digital televisions, digital live broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-readers, digital cameras, digital recorders, 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 coding 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 ), High Efficiency Video Coding (HEVC), ITU-T H.265/High Efficiency Video Coding (HEVC), and extensions to such standards. Video devices can transmit, receive, encode, decode, and/or store digital video information more efficiently by implementing such video coding techniques.
[0004] Методики кодирования видео включают в себя пространственное (внутри картинки, внутрикадровое) предсказание и/или временное (между картинками, межкадровое) предсказание, чтобы уменьшить или удалить избыточность, присущую последовательностям видео. Для кодирования видео на блочной основе, вырезка видео (т.е., картинка видео или часть картинки видео) может разбиваться на блоки видео, которые могут также упоминаться как единицы дерева кодирования (CTU), единицы кодирования (CU) и/или узлы кодирования. Блоки видео в интра-кодированной (I) вырезке картинки кодируются с использованием пространственного предсказания по отношению к опорным дискретным отсчетам в соседних блоках в той же самой картинке. Блоки видео в интер-кодированной (P или B) вырезке картинки могут использовать пространственное предсказание по отношению к опорным дискретным отсчетам в соседних блоках в той же самой картинке или временное предсказание по отношению к опорным дискретным отсчетам в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.[0004] Video coding techniques include spatial (intra-picture, intra-picture) prediction and/or temporal (inter-picture, inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice (i.e., a video picture or a portion of a video picture) may be broken down into video blocks, which may also be referred to as coding tree units (CTUs), coding units (CUs), and/or coding nodes. . Video blocks in an 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-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.
Краткое описание сущности изобретенияBrief description of the essence of the invention
[0005] Настоящее раскрытие описывает методики, связанные с фильтрацией восстановленных данных видео в процессе кодирования видео и/или декодирования видео, и, более конкретно, настоящее раскрытие описывает методики, относящиеся к методикам выполнения фильтрации устранения блочности. Фильтрация устранения блочности представляет собой тип фильтрации, которая может уменьшить артефакты блочности вдоль краев блоков, которые возникают в результате процесса восстановления.[0005] The present disclosure describes techniques related to filtering recovered video data in a video encoding and/or video decoding process, and more specifically, the present disclosure describes techniques related to techniques for performing deblocking filtering. Deblocking filtering is a type of filtering that can reduce deblocking artifacts along block edges that result from the deblocking process.
[0006] В соответствии с примером, способ декодирования данных видео включает в себя получение первого восстановленного блока данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; применение фильтрации устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; определение первого значения отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнение первого значения отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменение первого значения посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и вывод отфильтрованного с устранением блочности блока данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.[0006] According to an example, a method for decoding video data includes obtaining a first reconstructed block of video data, the first reconstructed block including a first sample with a first value; applying deblocking filtering to the first reconstructed block to create a deblocked filtered block; determining a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; comparing the first clipping value with the amount of change of the first discrete sample due to deblocking filtering; in response to a change amount of the first sample due to the deblocking filtering greater than the first clip value, changing the first value by the first clip value to determine the first filtered value for the first sample; and outputting the deblocked filtered video data block, wherein in the deblocked filtered block, the first sample has a first filtered value.
[0007] В соответствии с другим примером, устройство для декодирования данных видео включает в себя память, приспособленную хранить данные видео, и один или более процессоров, реализованных в схемах и выполненных с возможностью получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; применять фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; определять первое значение отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнивать первое значение отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретного отсчета имеет первое отфильтрованное значение.[0007] In accordance with another example, a device for decoding video data includes a memory adapted to store video data and one or more processors implemented in circuits and configured to receive a first reconstructed block of video data, the first reconstructed block including itself the first discrete sample with the first value; apply deblocking filtering to the first reconstructed block to create a deblocked filtered block; determine a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; compare the first clipping value with the amount of change of the first discrete sample due to deblocking filtering; in response to a change amount of the first sample due to the deblocking filtering greater than the first cutoff value, modifying the first value by the first cutoff value to determine a first filtered value for the first sample; and outputting the deblocked filtered video data block, wherein in the deblocked filtered block, the first sample sample has the first filtered value.
[0008] В соответствии с другим примером, машиночитаемый носитель хранения данных хранит инструкции, которые, при исполнении одним или более процессорами, предписывают одному или более процессорам получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; применять фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; определять первое значение отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнивать первое значение отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.[0008] In accordance with another example, a computer-readable storage medium stores instructions that, when executed by one or more processors, cause one or more processors to obtain a first recovered block of video data, the first recovered block including a first discrete sample with a first value ; apply deblocking filtering to the first reconstructed block to create a deblocked filtered block; determine a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; compare the first clipping value with the amount of change of the first discrete sample due to deblocking filtering; in response to a change amount of the first sample due to the deblocking filtering greater than the first cutoff value, modifying the first value by the first cutoff value to determine a first filtered value for the first sample; and outputting the deblocked filtered block of video data, wherein in the deblocked filtered block, the first sample sample has the first filtered value.
[0009] В соответствии с другим примером, устройство для декодирования данных видео включает в себя средство для получения первого восстановленного блока данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; средство для применения фильтрации устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; средство для определения первого значения отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; средство для сравнения первого значения отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; средство для изменения первого значения посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения; и средство для вывода отфильтрованного с устранением блочности блока данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.[0009] According to another example, an apparatus for decoding video data includes means for obtaining a first reconstructed block of video data, the first reconstructed block including a first sample with a first value; means for applying deblocking filtering to the first reconstructed block to create a deblocking filtered block; means for determining a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; means for comparing the first clipping value with a change amount of the first sample sample due to deblocking filtering; means for changing the first value by the first clipping value for determining a first filtered value for the first sample in response to a change amount of the first sample sample due to deblocking filtering greater than the first clipping value; and means for outputting the deblocked filtered video data block, wherein in the deblocked filtered block, the first sample has a first filtered value.
[0010] Подробности одного или более примеров представлены на приложенных чертежах и в описании ниже. Другие признаки, задачи и преимущества будут очевидны из описания, чертежей и формулы изобретения.[0010] Details of one or more examples are provided in the accompanying drawings and in the description below. Other features, objectives and advantages will be apparent from the description, drawings and claims.
Краткое описание чертежейBrief description of the drawings
[0011] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему кодирования и декодирования видео, которая может выполнять методики настоящего раскрытия.[0011] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system that can perform the techniques of the present disclosure.
[0012] Фиг. 2A и 2B представляют собой концептуальные диаграммы, иллюстрирующие примерную структуру квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU).[0012] FIG. 2A and 2B are conceptual diagrams illustrating an exemplary quadtree-binary tree (QTBT) structure and corresponding coding tree unit (CTU).
[0013] Фиг. 3 показывает пример сегмента из четырех дискретных отсчетов, подлежащего устранению блочности, со смежными блоками P и Q.[0013] FIG. 3 shows an example of a four-sample segment to be deblocked with adjacent P and Q blocks.
[0014] Фиг. 4 показывает примерный блок данных видео, где вычисляются вторые производные четырех обведенных кружками дискретных отсчетов, суммирование которых используется для определения того, следует ли применять устранение блочности на сегменте.[0014] FIG. 4 shows an exemplary video data block where the second derivatives of the four circled discrete samples are calculated, the sum of which is used to determine whether to apply deblocking on the segment.
[0015] Фиг. 5 показывает пример дискретных отсчетов блока данных видео для одной из четырех строк в сегменте, подлежащем устранению блочности.[0015] FIG. 5 shows an example video block samples for one of the four lines in the segment to be deblocked.
[0016] Фиг. 6 представляет собой блок-схему, иллюстрирующую примерный кодер видео, который может выполнять методики настоящего раскрытия.[0016] FIG. 6 is a block diagram illustrating an exemplary video encoder that may perform the techniques of the present disclosure.
[0017] Фиг. 7 представляет собой блок-схему, иллюстрирующую примерный декодер видео, который может выполнять методики настоящего раскрытия.[0017] FIG. 7 is a block diagram illustrating an exemplary video decoder that can perform the techniques of the present disclosure.
[0018] Фиг. 8 представляет собой блок-схему, иллюстрирующую примерный модуль фильтрации для выполнения методик настоящего раскрытия.[0018] FIG. 8 is a block diagram illustrating an exemplary filter module for performing the techniques of the present disclosure.
[0019] Фиг. 9 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса кодирования видео.[0019] FIG. 9 is a flowchart illustrating an example of a video encoding process.
[0020] Фиг. 10 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса декодирования видео.[0020] FIG. 10 is a flowchart illustrating an example of a video decoding process.
[0021] Фиг. 11 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса декодирования видео.[0021] FIG. 11 is a flowchart illustrating an example of a video decoding process.
ДЕТАЛЬНОЕ ОПИСАНИЕDETAILED DESCRIPTION
[0022] Кодирование видео (например, кодирование видео и/или декодирование видео) обычно включает в себя предсказание блока данных видео из уже кодированного блока данных видео в той же самой картинке (например, интра-предсказание) или уже кодированного блока данных видео в другой картинке (например, интер-предсказание). В некоторых случаях, кодер видео также вычисляет остаточные данные путем сравнения блока предсказания с исходным блоком. Таким образом, остаточные данные представляют разность между блоком предсказания и исходным блоком. Чтобы уменьшить количество битов, требуемых для сигнализации остаточных данных, кодер видео преобразует и квантует остаточные данные и сигнализирует преобразованные и квантованные остаточные данные в кодированном битовом потоке. Сжатие, обеспечиваемое посредством процессов преобразования и квантования, может осуществляться с потерями, что означает, что процессы преобразования и квантования могут вносить искажение в декодируемые данные видео.[0022] Video encoding (e.g., video encoding and/or video decoding) typically involves predicting a video data block from an already coded video data block in the same picture (e.g., intra-prediction) or an already coded video data block in another picture (for example, inter-prediction). In some cases, the video encoder also calculates residual data by comparing the prediction block with the original block. Thus, the residual data represents the difference between the prediction block and the original block. To reduce the number of bits required for signaling the residual data, the video encoder transforms and quantizes the residual data and signals the transformed and quantized residual data in the encoded bitstream. The compression provided by the transformation and quantization processes may be lossy, which means that the transformation and quantization processes may introduce distortion into the video data being decoded.
[0023] Декодер видео декодирует и суммирует остаточные данные с блоком предсказания, чтобы сформировать восстановленный блок видео, который согласуется с исходным блоком видео более близко, чем один только блок предсказания. Ввиду потерь, вводимых преобразованием и квантованием остаточных данных, первый восстановленный блок может иметь искажение или артефакты. Один общий тип артефакта или искажения упоминается как блочность, где границы блоков, используемых для кодирования данных видео, являются видимыми.[0023] The video decoder decodes and adds the residual data to the prediction block to form a reconstructed video block that matches the original video block more closely than the prediction block alone. Due to the losses introduced by the transformation and quantization of the residual data, the first reconstructed block may have distortion or artifacts. One common type of artifact or distortion is referred to as blockiness, where the boundaries of the blocks used to encode video data are visible.
[0024] Чтобы дополнительно улучшить качество декодированного видео, декодер видео может выполнять одну или более операций фильтрации на восстановленных блоках видео. Примеры этих операций фильтрации включают в себя фильтрацию устранения блочности, фильтрацию адаптивного смещения выборки (SAO) и адаптивную контурную фильтрацию (ALF). Параметры для этих операций фильтрации могут либо определяться кодером видео и явно сигнализироваться в кодированном битовом потоке видео, либо могут неявно определяться декодером видео, не требуя явной сигнализации параметров в кодированном битовом потоке видео.[0024] To further improve the quality of the decoded video, the video decoder may perform one or more filtering operations on the reconstructed video blocks. Examples of these filtering operations include deblocking filtering, adaptive sample bias (SAO) filtering, and adaptive loop filtering (ALF). The parameters for these filtering operations may either be determined by the video encoder and explicitly signaled in the encoded video bitstream, or may be implicitly determined by the video decoder without requiring explicit signaling of the parameters in the encoded video bitstream.
[0025] Настоящее раскрытие описывает методики, ассоциированные с фильтрацией восстановленных данных видео в процессе кодирования видео и/или декодирования видео, и, более конкретно, настоящее раскрытие описывает методики, относящие к фильтрации устранения блочности. Фильтрация устранения блочности является типом фильтрации, специально разработанным для снижения блочности. Настоящее раскрытие описывает методики, относящиеся к процессу фильтрации, выполняемому на кадрах или картинках видео, таких как кадры или картинки видео, которые могут быть искажены из-за сжатия, размытия и т.д., но данные методики не следует рассматривать как ограниченные приведенными выше примерами искажения. Эти методики могут улучшать объективное и субъективное качество видео. Методики, описанные в настоящем документе, могут быть использованы в проектировании новых решений кодирования видео, таких как H.266, или для расширения любых из существующих кодеков видео, таких как H.265/Высокоэффективное кодирование видео (HEVC), или могут предлагаться как многообещающий инструмент кодирования для будущих стандартов кодирования видео. Описанные методики могут также использоваться как способ пост-обработки на кадрах видео, выводимых из стандартных или проприетарных кодеков.[0025] The present disclosure describes techniques associated with filtering recovered video data in a video encoding and/or video decoding process, and more specifically, the present disclosure describes techniques related to deblocking filtering. Deblocking filtering is a type of filtering specifically designed for deblocking. This disclosure describes techniques related to the filtering process performed on video frames or pictures, such as video frames or pictures that may be distorted due to compression, blurring, etc., but these techniques should not be construed as being limited to the above. examples of distortion. These techniques can improve the objective and subjective quality of the video. The techniques described in this document may be used in the design of new video coding solutions such as H.266 or to extend any of the existing video codecs such as H.265/High Efficiency Video Coding (HEVC) or may be proposed as promising encoding tool for future video encoding standards. The described techniques can also be used as a post-processing method on video frames output from standard or proprietary codecs.
[0026] Текущие версии HEVC используют максимальный размер блока 64×64. Однако будущие стандарты кодирования видео, такие как стандарт многоцелевого кодирования видео, находящийся на стадии разработки, могут использовать размеры блоков большие, чем 64×64. Настоящее раскрытие описывает методики, которые могут улучшать снижение искажений, получаемое путем фильтрации устранения блочности, в частности, в связи с увеличенными размерами блоков. Кроме того, методики, описанные в настоящем документе, могут получать это улучшенное снижение искажений при сохранении желательных уровней вычислительной сложности и эффективности кодирования.[0026] Current versions of HEVC use a maximum block size of 64x64. However, future video coding standards, such as the multipurpose video coding standard under development, may use block sizes larger than 64x64. The present disclosure describes techniques that can improve the distortion reduction obtained by deblocking filtering, in particular in connection with increased block sizes. In addition, the techniques described herein can achieve this improved distortion reduction while maintaining desired levels of computational complexity and coding efficiency.
[0027] Как используется в настоящем раскрытии, термин “кодирование видео”, в общем, относится либо к кодированию видео, либо к декодированию видео. Аналогичным образом, термин “устройство кодирования видео” может, в общем, относиться к кодеру видео или декодеру видео. Более того, некоторые методики, описанные в настоящем раскрытии в отношении декодирования видео, могут также применяться к кодированию видео, и наоборот. Например, кодеры видео и декодеры видео часто конфигурируются, чтобы выполнять один и тот же процесс или взаимно обратные процессы. Также, кодер видео обычно выполняет декодирование видео (также называемое восстановлением) как часть процессов определения, каким образом кодировать данные видео. Например, кодер видео может выполнять фильтрацию устранения блочности на декодированных блоках видео, чтобы определить, обеспечивает ли некоторая схема кодирования желательный компромисс скорости-искажения, а также кодер видео может выполнять оценку движения с использованием тех же самых блоков, доступных декодеру видео, когда декодер видео выполняет компенсацию движения.[0027] As used in this disclosure, the term "video coding" generally refers to either video coding or video decoding. Likewise, the term “video encoding device” may refer generally to a video encoder or video decoder. Moreover, some of the techniques described in this disclosure in relation to video decoding may also be applied to video coding, and vice versa. For example, video encoders and video decoders are often configured to perform the same process or reciprocal processes. Also, a video encoder typically performs video decoding (also referred to as decoding) as part of the processes of determining how to encode video data. For example, the video encoder may perform deblocking filtering on the decoded video blocks to determine if some coding scheme provides the desired rate-distortion trade-off, and the video encoder may perform motion estimation using the same blocks available to the video decoder when the video decoder performs motion compensation.
[0028] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему 100 кодирования и декодирования видео, которая может выполнять методики фильтрации устранения блочности настоящего раскрытия. Методики настоящего раскрытия в основном направлены на кодирование (кодирование и/или декодирование) данных видео и, более конкретно, на методики фильтрации устранения блочности данных видео. В принципе, данные видео включают в себя любые данные для обработки видео. Таким образом, данные видео могут включать в себя необработанное, некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и метаданные видео, такие как данные сигнализации.[0028] FIG. 1 is a block diagram illustrating an exemplary video encoding and
[0029] Как показано на фиг. 1, система 100 включает в себя устройство 102 источника, которое обеспечивает кодированные данные видео, подлежащие декодированию и отображению устройством 116 места назначения (получателем), в данном примере. В частности, устройство 102 источника предоставляет данные видео на устройство 116 места назначения посредством машиночитаемого носителя 110. Устройство 102 источника и устройство 116 места назначения могут представлять собой любое из широкого спектра устройств, включая настольные компьютеры, ноутбуки, планшетные компьютеры, телевизионные приставки, телефоны, такие как смартфоны, телевизоры, камеры, устройства отображения, цифровые медиаплееры, видеоигровые консоли, устройства потоковой передачи видео и тому подобное. В некоторых случаях, устройство 102 источника и устройство 116 места назначения могут быть оснащены для беспроводной связи и, таким образом, могут упоминаться как устройства беспроводной связи.[0029] As shown in FIG. 1,
[0030] В примере на фиг. 1, устройство 102 источника включает в себя источник 104 видео, память 106, кодер 200 видео и выходной интерфейс 108. Устройство 116 места назначения включает в себя входной интерфейс 122, декодер 300 видео, память 120 и устройство 118 отображения. В соответствии с настоящим раскрытием, кодер 200 видео устройства 102 источника и декодер 300 видео устройства 116 места назначения могут быть выполнены с возможностью применять методики фильтрации устранения блочности, описываемой в настоящем раскрытии. Таким образом, устройство 102 источника представляет собой пример устройства кодирования видео, в то время как устройство 116 места назначения представляет собой пример устройства декодирования видео. В других примерах, устройство источника и устройство места назначения могут включать в себя другие компоненты или устройства. Например, устройство 102 источника может принимать данные видео от внешнего источника видео, такого как внешняя камера. Аналогично, устройство 116 места назначения может взаимодействовать с внешним устройством отображения вместо того, чтобы включать в себя встроенное устройство отображения.[0030] In the example of FIG. 1,
[0031] Система 100, как показано на фиг. 1, является лишь одним примером. В принципе, любое цифровое устройство кодирования и/или декодирования видео может выполнять методики фильтрации устранения блочности, описываемой в настоящем раскрытии. Устройство 102 источника и устройство 116 места назначения являются лишь примерами таких кодирующих устройств, в которых устройство 102 источника генерирует кодированные данные видео для передачи на устройство 116 места назначения. Настоящее раскрытие ссылается на “кодирующее” устройство как на устройство, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, кодер 200 видео и декодер 300 видео представляют собой примеры кодирующих устройств, в частности, кодер видео и декодер видео, соответственно. В некоторых примерах, устройство 102 источника и устройство 116 места назначения могут работать по существу симметрично, так что каждое из устройства 102 источника и устройства 116 места назначения включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать однонаправленную или двунаправленную передачу видео между устройством 102 источника и устройством 116 места назначения, например, для потоковой передачи видео, воспроизведения видео, видеовещания или видеотелефонии.[0031]
[0032] В общем случае, источник 104 видео представляет источник данных видео (т.е. необработанных, некодированных данных видео) и предоставляет последовательность картинок (также упоминаемых как “кадры”) данных видео на кодер 200 видео, который кодирует данные для картинок. Источник 104 видео устройства 102 источника может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс подачи видео для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 104 видео может генерировать данные на основе компьютерной графики в качестве исходного видео или объединение живого видео, архивного видео и генерируемого компьютером видео. В каждом случае, кодер 200 видео кодирует захваченные, предварительно захваченные или сгенерированные компьютером данные видео. Кодер 200 видео может переупорядочивать картинки из принятого порядка (иногда называемого “порядком отображения”) в порядок кодирования для кодирования. Кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео. Устройство 102 источника может затем выводить кодированные данные видео через выходной интерфейс 108 на машиночитаемый носитель 110 для приема и/или извлечения данных, например, входным интерфейсом 122 устройства 116 места назначения.[0032] In general,
[0033] Память 106 устройства 102 источника и память 120 устройства 116 места назначения представляют собой память общего назначения. В некоторых примерах, памяти 106 и 120 могут хранить необработанные данные видео, например необработанное видео из источника 104 видео и необработанные декодированные данные видео из декодера 300 видео. Дополнительно или альтернативно, памяти 106 и 120 могут хранить программные инструкции, исполняемые, например, кодером 200 видео и декодером 300 видео соответственно. Хотя в этом примере памяти 106 и 120 показаны отдельно от кодера 200 видео и декодера 300 видео, следует понимать, что кодер 200 видео и декодер 300 видео также могут включать в себя внутренние памяти для функционально сходных или эквивалентных целей. Кроме того, памяти 106 и 120 могут хранить закодированные данные видео, например, выход с кодера 200 видео и вход в декодер 300 видео. В некоторых примерах, части памятей 106 и 120 могут быть выделены в качестве одного или более буферов видео, например, для хранения необработанных, декодированных и/или закодированных данных видео.[0033] The
[0034] Машиночитаемый носитель 110 может представлять собой любой тип носителя или устройства, способного транспортировать закодированные данные видео от устройства 102 источника к устройству 116 места назначения. В одном примере, машиночитаемый носитель 110 представляет коммуникационную среду, позволяющую устройству 102 источника передавать закодированные данные видео непосредственно на устройство 116 места назначения в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Выходной интерфейс 108 может модулировать сигнал передачи, включающий в себя закодированные данные видео, и входной интерфейс 122 может демодулировать принятый сигнал передачи в соответствии со стандартом связи, таким как протокол беспроводной связи. Коммуникационная среда может содержать одну или обе из беспроводной или проводной коммуникационной среды, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационная среда может формировать часть пакетной сети, такой как локальная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для облегчения связи от устройства 102 источника к устройству 116 места назначения.[0034] Computer
[0035] В некоторых примерах, машиночитаемый носитель 110 может включать в себя устройство 112 хранения. Устройство 102 источника может выводить закодированные данные из выходного интерфейса 108 в устройство 112 хранения. Аналогично, устройство 116 места назначения может получать доступ к закодированным данным из устройства 112 хранения через входной интерфейс 122. Устройство 112 хранения может включать в себя любое из множества распределенных или локально доступных носителей хранения данных, таких как накопитель на жестком диске, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любые другие подходящие цифровые носители хранения данных для хранения закодированных данных видео.[0035] In some examples, computer-
[0036] В некоторых примерах, машиночитаемый носитель 110 может включать в себя файловый сервер 114 или другое устройство промежуточного хранения, которое может хранить закодированные данные видео, сгенерированные устройством 102 источника. Устройство 102 источника может выводить закодированные данные видео на файловый сервер 114. Устройство 116 места назначения может получать доступ к сохраненным данным видео с файлового сервера 114 посредством потоковой передачи или загрузки. Файловый сервер 114 может быть любым типом серверного устройства, способного хранить закодированные данные видео и передавать эти закодированные данные видео на устройство 116 места назначения. Файловый сервер 114 может представлять собой веб-сервер (например, для веб-сайта), сервер протокола передачи файлов (FTP), сетевое устройство доставки контента или сетевое устройство хранения (NAS). Устройство 116 места назначения может получать доступ к закодированным данным видео с файлового сервера 114 через любое стандартное соединение передачи данных, включая Интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) или объединение обоих, которая подходит для доступа к закодированным данным видео, хранящимся на файловом сервере 114. Файловый сервер 114 и входной интерфейс 122 могут быть выполнены с возможностью работы в соответствии с протоколом потоковой передачи, протоколом передачи загрузки или их объединения.[0036] In some examples, computer-
[0037] Выходной интерфейс 108 и входной интерфейс 122 могут представлять собой беспроводные передатчики/приемники, модемы, проводные сетевые компоненты (например, Ethernet-карты), компоненты беспроводной связи, работающие в соответствии с любым из множества стандартов IEEE 802.11, или другие физические компоненты. В примерах, где выходной интерфейс 108 и входной интерфейс 122 содержат беспроводные компоненты, выходной интерфейс 108 и входной интерфейс 122 могут быть выполнены с возможностью передачи данных, таких как закодированные данные видео, в соответствии со стандартом сотовой связи, таким как 4G, 4G-LTE (Долгосрочное развитие), LTE-Advanced (Расширенное LTE), 5G или тому подобное. В некоторых примерах, где выходной интерфейс 108 содержит беспроводной передатчик, выходной интерфейс 108 и входной интерфейс 122 могут быть выполнены с возможностью передачи данных, таких как закодированные данные видео, в соответствии с другими беспроводными стандартами, такими как спецификация IEEE 802.11, спецификация IEEE 802.15 (например, ZigBee™), стандарт Bluetooth™ или тому подобное. В некоторых примерах, устройство 102 источника и/или устройство 116 места назначения могут включать в себя соответствующие однокристальные (SoC) устройства. Например, устройство 102 источника может включать в себя SoC-устройство для выполнения функциональности, относящейся к кодеру 200 видео и/или выходному интерфейсу 108, и устройство 116 места назначения может включать в себя SoC-устройство для выполнения функциональности, относящейся к декодеру 300 видео и/или входному интерфейсу 122.[0037]
[0038] Методики настоящего раскрытия могут быть применены к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как эфирные телевизионные передачи, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео через Интернет, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое закодировано на носителе хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или других приложений.[0038] The techniques of the present disclosure may be applied to video coding supporting any of a variety of multimedia applications such as terrestrial television transmissions, cable television transmissions, satellite television transmissions, Internet video streaming such as Dynamic Adaptive Streaming over HTTP (DASH ), digital video that is encoded on a storage medium, decoding digital video stored on a storage medium, or other applications.
[0039] Входной интерфейс 122 устройства 116 места назначения принимает закодированный битовый поток видео со машиночитаемого носителя 110 (например, из коммуникационной среды, устройства 112 хранения, файлового сервера 114 или тому подобного). Закодированный битовый поток видео со машиночитаемого носителя 110 может включать в себя информацию сигнализации, определенную кодером 200 видео, которая также используется декодером 300 видео, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку блоков видео или других кодированных единиц (например, вырезок, картинок, групп картинок, последовательностей или тому подобное). Устройство 118 отображения отображает пользователю декодированные картинки декодированных данных видео. Устройство 118 отображения может представлять собой любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.[0039] The
[0040] Хотя не показано на фиг. 1, в некоторых примерах, кодер 200 видео и декодер 300 видео могут быть интегрированы с кодером аудио и/или декодером аудио и могут включать соответствующие модули мультиплексирования-демультиплексирования (MUX-DEMUX) или другие аппаратные средства и/или программное обеспечение для обработки мультиплексированных потоков, включающих в себя как аудио, так и видео, в общем потоке данных. Если применимо, модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).[0040] Although not shown in FIG. 1, in some examples,
[0041] Как кодер 200 видео, так и декодер 300 видео могут быть реализованы как любая из множества подходящих схем кодера и/или декодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их объединений. Когда методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем, долговременном машиночитаемом носителе и исполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения методик настоящего раскрытия. Каждый из кодера 200 видео и декодера 300 видео может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (CODEC) в соответствующем устройстве. Устройство, включающее в себя кодер 200 видео и/или декодер 300 видео, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.[0041] Both
[0042] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодирования видео, таким как ITU-T H. 265, также упоминаемым как Высокоэффективное кодирование видео (HEVC), или его расширениями, такими как расширения многовидового и/или масштабируемого кодирования видео. В других примерах, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или отраслевыми стандартами, такими как Тестовая модель совместного исследования (Joint Exploration Test Model, JEM) или ITU-T H.266, также упоминаемыми как Многоцелевое кодирование видео (Versatile Video Coding, VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (далее “VVC Draft 6”). Однако методики настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.[0042] The
[0043] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочное кодирование картинок. Термин “блок” обычно относится к структуре, включающей в себя данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок (дискретных отсчетов) данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть, вместо кодирования данных красного, зеленого и синего (RGB) для выборок картинки, кодер 200 видео и декодер 300 видео могут кодировать компоненты яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, и декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).[0043] In general,
[0044] Настоящее раскрытие может, в общем, ссылаться на кодирование (например, кодирование и декодирование) картинок, включающее в себя процесс кодирования или декодирования данных картинки. Аналогично, настоящее раскрытие может ссылаться на кодирование блоков картинок, включающее в себя процесс кодирования или декодирования данных для блоков, например, кодирование предсказания и/или остатка. Кодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодирования (например, режимы кодирования) и разбиение картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, следует понимать как кодирование значений для синтаксических элементов, образующих картинку или блок.[0044] The present disclosure may generally refer to encoding (eg, encoding and decoding) of pictures, including the process of encoding or decoding picture data. Likewise, the present disclosure may refer to picture block coding, including the process of encoding or decoding data for blocks, such as prediction and/or residual coding. The encoded video bitstream typically includes a sequence of values for syntax elements representing encoding decisions (eg, encoding modes) and blocking pictures. Thus, references to encoding a picture or block should generally be understood as encoding values for the syntax elements that make up the picture or block.
[0045] HEVC определяет различные блоки, включая единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодирования видео (такое как кодер 200 видео) разбивает единицу дерева кодирования (CTU) на CU в соответствии со структурой квадродерева. То есть, устройство кодирования видео разбивает CTU и CU на четыре равных, неперекрывающихся квадрата, и каждый узел квадродерева имеет либо ноль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать в себя одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет собой разбиение TU. В HEVC, PU представляют данные интер-предсказания, в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают информацию интра-предсказания, такую как указание интра-режима.[0045] HEVC defines various blocks, including coding units (CU), prediction units (PU), and transform units (TU). According to HEVC, a video encoder (such as video encoder 200) partitions a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video encoder splits the CTU and CU into four equal, non-overlapping squares, and each quadtree node has either zero or four child nodes. Nodes with no children may be referred to as "leaf nodes" and the CUs of such leaf nodes may include one or more PUs and/or one or more TUs. The video encoder may further split the PU and TU. For example, in HEVC, the residual quadtree (RQT) is a partition of the TU. In HEVC, PUs represent inter-prediction data while TUs represent residual data. CUs that are intra predicted include intra prediction information such as an intra mode indication.
[0046] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодирования видео, таким как ITU-T H. 265, также упоминаемым как Высокоэффективное кодирование видео (HEVC), или его расширениями, такими как расширения многовидового и/или масштабируемого кодирования видео. Альтернативно, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или отраслевыми стандартами, такими как Тестовая модель совместного исследования (Joint Exploration Test Model, JEM) или ITU-T H.266, также упоминаемыми как Многоцелевое кодирование видео (Versatile Video Coding, VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (далее “VVC Draft 6”). Однако методики настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.[0046] The
[0047] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочное кодирование картинок. Термин “блок” обычно относится к структуре, включающей данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть, вместо кодирования данных красного, зеленого и синего (RGB) для выборок картинки, кодер 200 видео и декодер 300 видео могут кодировать компоненты яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, а декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).[0047] In general,
[0048] Настоящее раскрытие может, в общем, ссылаться на кодирование (например, кодирование и декодирование) картинок, включающее в себя процесс кодирования или декодирования данных картинки. Аналогично, настоящее раскрытие может ссылаться на кодирование блоков картинок, включающее в себя процесс кодирования или декодирования данных для блоков, например, кодирование предсказания и/или остатка. Кодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодирования (например, режимы кодирования) и разбиение картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, следует понимать как кодирование значений для синтаксических элементов, образующих картинку или блок.[0048] The present disclosure may generally refer to encoding (eg, encoding and decoding) of pictures, including the process of encoding or decoding picture data. Likewise, the present disclosure may refer to picture block coding, including the process of encoding or decoding data for blocks, such as prediction and/or residual coding. The encoded video bitstream typically includes a sequence of values for syntax elements representing coding decisions (eg, coding modes) and picture blocking. Thus, references to encoding a picture or block should generally be understood as encoding values for the syntax elements that make up the picture or block.
[0049] HEVC определяет различные блоки, включая единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодирования видео (такое как кодер 200 видео) разбивает единицу дерева кодирования (CTU) на CU в соответствии со структурой квадродерева. То есть, устройство кодирования видео разбивает CTU и CU на четыре равных, неперекрывающихся квадрата, и каждый узел квадродерева имеет либо ноль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет собой разбиение TU. В HEVC, PU представляют данные интер-предсказания, в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают информацию интра-предсказания, такую как указание интра-режима.[0049] HEVC defines various blocks, including coding units (CU), prediction units (PU), and transform units (TU). According to HEVC, a video encoder (such as video encoder 200) partitions a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video encoder splits the CTU and CU into four equal, non-overlapping squares, and each quadtree node has either zero or four child nodes. Nodes without child nodes may be referred to as "leaf nodes" and the CUs of such leaf nodes may include one or more PUs and/or one or more TUs. The video encoder may further split the PU and TU. For example, in HEVC, the residual quadtree (RQT) is a partition of the TU. In HEVC, PUs represent inter-prediction data while TUs represent residual data. CUs that are intra predicted include intra prediction information such as an intra mode indication.
[0050] В качестве другого примера, кодер 200 видео и декодер 300 видео могут быть выполнены с возможностью работы в соответствии с JEM или VVC. Согласно JEM или VVC, устройство кодирования видео (такое как кодер 200 видео) разбивает картинку на множество единиц дерева кодирования (CTU). Кодер 200 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева-двоичного дерева (QTBT) или структура дерева множества типов (MTT). Структура QTBT исключает концепции множества типов разбиения, такие как разделение между CU, PU и TU в HEVC. Структура QTBT может включать в себя два уровня: первый уровень, разделенный в соответствии с разбиением квадродерева, и второй уровень, разделенный в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).[0050] As another example,
[0051] В структуре разбиения MTT, блоки могут быть разделены с использованием разбиения квадродерева (QT), разбиения двоичного дерева (BT) и одного или более типов разбиений тройного дерева (ТТ) (также называемого троичным деревом (TT)). Разбиение тройного или троичного дерева представляет собой разбиение, когда блок разделяется на три подблока. В некоторых примерах, разбиение тройного или троичного дерева делит блок на три подблока без деления исходного блока через центр. Типы разбиения в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.[0051] In an MTT split structure, blocks can be partitioned using a quadtree split (QT), a binary tree split (BT), and one or more types of ternary tree (TT) splits (also referred to as a ternary tree (TT)). A ternary or ternary tree split is a split where a block is split into three subblocks. In some examples, splitting a ternary or ternary tree divides the block into three subblocks without dividing the original block through the center. Partition types in MTT (for example, QT, BT, and TT) can be symmetric or asymmetric.
[0052] В некоторых примерах, кодер 200 видео и декодер 300 видео могут использовать одну структуру QTBT или МТТ для представления каждого из компонентов яркости и цветности, в то время как в других примерах, кодер 200 видео и декодер 300 видео могут использовать две или более структур QTBT или МТТ, например, одну структуру QTBT/МТТ для компонента яркости и другую структуру QTBT/МТТ для обоих компонентов цветности (или две структуры QTBT/МТТ для соответствующих компонентов цветности).[0052] In some examples,
[0053] Кодер 200 видео и декодер 300 видео могут быть выполнены с возможностью использования разбиения квадродерева согласно HEVC, разбиения QTBT, разбиения МТТ или других структур разбиения. В целях пояснения, описание методик настоящего раскрытия представлено в отношении разбиения QTBT. Однако следует понимать, что методики настоящего раскрытия также могут быть применены к устройствам кодирования видео, выполненным с возможностью использования разбиения квадродерева или других типов разбиения.[0053]
[0054] Блоки (например, CTU или CU) могут быть сгруппированы различными способами в картинке. В качестве одного примера, “брус” (блок) может относиться к прямоугольной области строк CTU в пределах конкретного прямоугольного мозаичного элемента в картинке. Мозаичный элемент может быть прямоугольной областью CTU в пределах конкретного столбца мозаичных элементов и конкретной строки мозаичных элементов в картинке. Столбец мозаичных элементов относится к прямоугольной области CTU, имеющей высоту, равную высоте картинки, и ширину, задаваемую синтаксическими элементами (например, такими как в наборе параметров картинки). Строка мозаичных элементов относится к прямоугольной области CTU, имеющей высоту, задаваемую синтаксическими элементами (например, такими как в наборе параметров картинки), и ширину, равную ширине картинки.[0054] Units (eg, CTU or CU) can be grouped in various ways in a picture. As one example, a “bar” (block) may refer to a rectangular area of CTU rows within a particular rectangular tile in a picture. A tile may be a rectangular area of the CTU within a particular column of tiles and a particular row of tiles in a picture. A tile column refers to a rectangular area of the CTU having a height equal to the height of the picture and a width given by syntax elements (eg, such as in a picture parameter set). A tile row refers to a rectangular area of the CTU having a height given by syntax elements (eg, such as in a picture parameter set) and a width equal to the width of the picture.
[0055] В некоторых примерах, мозаичный элемент может быть разбит на множество брусков, каждый из которых может включать в себя одну или более строк CTU в пределах мозаичного элемента. Мозаичный элемент, который не разбит на множество брусков, также может упоминаться как брусок. Однако брусок, который является истинным поднабором мозаичного элемента, не может упоминаться как мозаичный элемент.[0055] In some examples, a tile may be broken into a plurality of bars, each of which may include one or more CTU lines within the tile. A tile that is not broken into multiple bars may also be referred to as a bar. However, a bar that is a true subset of a tile cannot be referred to as a tile.
[0056] Бруски в картинке могут быть упорядочены в вырезке. Вырезка может представлять собой целое число брусков картинки, которая может исключительно содержаться к одной единице уровня сетевой абстракции (NAL). В некоторых примерах, вырезка включает в себя либо ряд полных мозаичных элементов, либо только жесткую последовательность полных брусков одного мозаичного элемента.[0056] The bars in the picture may be arranged in a cutout. A slice can be an integer number of picture bars that can exclusively be contained to one Network Abstraction Layer (NAL) unit. In some examples, the cut includes either a series of complete tiles, or only a rigid sequence of full bars of a single tile.
[0051] Настоящее раскрытие может использовать “N×N” и “N на N” взаимозаменяемым образом для ссылки на размеры выборки блока (такого как CU или другой блок видео) в терминах вертикального и горизонтального размеров, например, выборок 16×16 или выборок 16 на 16. В общем случае, CU размером 16×16 будет иметь 16 выборок в вертикальном направлении (y=16) и 16 выборок в горизонтальном направлении (x=16). Аналогично, CU размером N×N обычно имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, где N представляет неотрицательное целое значение. Выборки в CU могут быть расположены в строках и столбцах. Кроме того, CU не обязательно должны иметь одинаковое количество выборок в горизонтальном направлении и в вертикальном направлении. Например, CU может содержать N×M выборок, где M не обязательно равно N.[0051] The present disclosure may use “N×N” and “N by N” interchangeably to refer to sample sizes of a block (such as a CU or other video block) in terms of vertical and horizontal dimensions, such as 16×16 samples or samples 16 by 16. In general, a 16×16 CU will have 16 samples in the vertical direction (y=16) and 16 samples in the horizontal direction (x=16). Similarly, an N×N CU typically has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. Samples in a CU can be arranged in rows and columns. In addition, CUs do not need to have the same number of samples in the horizontal direction and in the vertical direction. For example, a CU may contain N×M samples, where M is not necessarily equal to N.
[0058] Кодер 200 видео кодирует данные видео для CU, представляющих информацию предсказания и/или остаточную информацию, и другую информацию. Информация предсказания указывает, как должна предсказываться CU, чтобы формировать блок предсказания для CU. Остаточная информация обычно представляет собой разности от выборки к выборке между выборками CU перед кодированием и блоком предсказания.[0058] The
[0059] Для предсказания CU, кодер 200 видео может обычно формировать блок предсказания для CU посредством интер-предсказания или интра-предсказания. Интер-предсказание обычно относится к предсказанию CU из данных ранее кодированной картинки, в то время как интра-предсказание обычно относится к предсказанию СU из ранее кодированных данных той же самой картинки. Чтобы выполнить интер-предсказание, кодер 200 видео может генерировать блок предсказания с использованием одного или более векторов движения. Кодер 200 видео обычно может выполнять поиск движения для идентификации опорного блока, который близко согласуется с СU, например, с точки зрения разностей между CU и опорным блоком. Кодер 200 видео может вычислить метрику разности с использованием суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD), средней абсолютной разности (MAD), средне-квадратичных разностей (МSD) или других подобных разностных вычислений для определения, является ли опорный блок близко согласованным с текущей CU. В некоторых примерах, кодер 200 видео может предсказать текущую CU с использованием однонаправленного предсказания или двунаправленного предсказания.[0059] For CU prediction,
[0060] Некоторые примеры JEM и VVC также обеспечивают аффинный режим компенсации движения, который может рассматриваться как режим интер-предсказания. В аффинном режиме компенсации движения, кодер 200 видео может определять два или более векторов движения, которые представляют непоступательное движение, такое как увеличение или уменьшение масштаба, вращение, движение в перспективе или другие нерегулярные типы движения.[0060] Some examples of JEM and VVC also provide an affine motion compensation mode, which can be considered an inter-prediction mode. In affine motion compensation mode,
[0061] Для выполнения интра-предсказания, кодер 200 видео может выбрать режим интра-предсказания для генерации блока предсказания. Некоторые примеры JEM и VVC обеспечивает шестьдесят семь режимов интра-предсказания, включая различные направленные режимы, а также планарный режим и режим DC. В общем случае, кодер 200 видео выбирает режим интра-предсказания, который описывает соседние выборки для текущего блока (например, блока CU), из которых следует предсказывать выборки текущего блока. Такие выборки обычно могут находиться сверху, сверху и слева или слева от текущего блока в той же картинке, где и текущий блок, в предположении, что кодер 200 видео кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).[0061] To perform intra prediction,
[0062] Кодер 200 видео кодирует данные, представляющие режим предсказания для текущего блока. Например, для режимов интер-предсказания, кодер 200 видео может кодировать данные, представляющие, какой из различных доступных режимов интер-предсказания используется, а также информацию движения для соответствующего режима. Например, для однонаправленного или двунаправленного интер-предсказания, кодер 200 видео может кодировать векторы движения с использованием расширенного предсказания векторов движения (AMVP) или режима слияния. Кодер 200 видео может использовать аналогичные режимы для кодирования векторов движения для аффинного режима компенсации движения.[0062] The
[0063] После предсказания, такого как интра-предсказание или интер-предсказание блока, кодер 200 видео может вычислить остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют разности от выборки к выборке между данным блоком и блоком предсказания для данного блока, сформированным с использованием соответствующего режима предсказания. Кодер 200 видео может применять одно или более преобразований к остаточному блоку для получения преобразованных данных в области преобразования вместо области выборок. Например, кодер 200 видео может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным данным видео. Кроме того, кодер 200 видео может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Кодер 200 видео формирует коэффициенты преобразования после применения одного или более преобразований.[0063] After prediction, such as intra-prediction or inter-prediction of a block,
[0064] Как отмечалось выше, после любых преобразований для получения коэффициентов преобразования, кодер 200 видео может выполнять квантование коэффициентов преобразования. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить объем данных, используемых для представления коэффициентов, обеспечивая дальнейшее сжатие. Путем выполнения процесса квантования, кодер 200 видео может уменьшить битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Например, кодер 200 видео может округлять n-битовое значение до m-битового значения во время квантования, где n больше, чем m. В некоторых примерах, чтобы выполнить квантование, кодер 200 видео может выполнить побитовое смещение вправо значения, подлежащего квантованию.[0064] As noted above, after any transformations to obtain transform coefficients,
[0065] После квантования, кодер 200 видео может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть спроектировано так, чтобы помещать коэффициенты преобразования более высокой энергии (и, следовательно, более низкой частоты) в начале вектора и помещать коэффициенты преобразования более низкой энергии (и, следовательно, более высокой частоты) в конце вектора. В некоторых примерах, кодер 200 видео может использовать предопределенный порядок сканирования для сканирования квантованных коэффициентов преобразования для получения вектора, преобразованного в последовательную форму, а затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, кодер 200 видео может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, кодер 200 видео может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным двоичным арифметическим кодированием (CABAC). Кодер 200 видео может также энтропийно кодировать значения для синтаксических элементов, описывающих метаданные, ассоциированные с кодированными данными видео, для использования декодером 300 видео при декодировании данных видео.[0065] After quantization,
[0066] Для выполнения CABAC, кодер 200 видео может назначать контекст в рамках контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа нулевыми или нет. Определение вероятности может основываться на контексте, назначенном символу.[0066] To perform CABAC,
[0067] Кодер 200 видео может дополнительно генерировать синтаксические данные, такие как синтаксические данные на блочной основе, синтаксические данные на основе картинки и синтаксические данные на основе последовательности, для декодера 300 видео, например, в заголовке картинки, заголовке блока, заголовке вырезки, или другие синтаксические данные, такие как набор параметров последовательности (SPS), набор параметров картинки (PPS) или набор параметров видео (VPS). Декодер 300 видео может также декодировать такие синтаксические данные, чтобы определить, как декодировать соответствующие данные видео.[0067] The
[0068] Таким образом, кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео, например, синтаксические элементы, описывающие разбиение картинки на блоки (например, CU), и информацию предсказания и/или остаточную информацию для блоков. В конечном счете, декодер 300 видео может принимать битовый поток и декодировать закодированные данные видео.[0068] Thus,
[0069] В принципе, декодер 300 видео выполняет процесс, обратный процессу, выполняемому кодером 200 видео, для декодирования закодированных данных видео битового потока. Например, декодер 300 видео может декодировать значения для синтаксических элементов битового потока с использованием CABAC, по существу аналогично, хотя и обратным образом, по отношению к процессу кодирования CABAC кодера 200 видео. Синтаксические элементы могут определять информацию разбиения картинки на CTU и разбиения каждой CTU согласно соответствующей структуре разбиения, такой как структура QTBT, для определения CU в CTU. Синтаксические элементы могут дополнительно определять предсказание и остаточную информацию для блоков (например, CU) данных видео.[0069] In principle, the
[0070] Остаточная информация может быть представлена, например, квантованными коэффициентами преобразования. Декодер 300 видео может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока для восстановления остаточного блока для данного блока. Декодер 300 видео использует сигнализированный режим предсказания (интра- или интер-предсказания) и связанную информацию предсказания (например, информацию движения для интер-предсказания) для формирования блока предсказания для данного блока. Декодер 300 видео может затем объединять блок предсказания и остаточный блок (на основе от выборки к выборке) для восстановления исходного блока. Декодер 300 видео может выполнять дополнительную обработку, такую как выполнение процесса устранения блочности для уменьшения визуальных артефактов вдоль границ блока.[0070] The residual information may be represented, for example, by quantized transform coefficients.
[0071] Настоящее раскрытие может, в общем, ссылаться на “сигнализацию” определенной информации, такой как синтаксические элементы. Термин “сигнализация” может, в общем, относиться к сообщению значений для синтаксических элементов и/или других данных, используемых для декодирования закодированных данных видео. То есть, кодер 200 видео может сигнализировать значения для синтаксических элементов в битовом потоке. В общем, сигнализация относится к генерации значения в битовом потоке. Как отмечалось выше, устройство 102 источника может транспортировать битовый поток к устройству 116 места назначения по существу в реальном времени или не в реальном времени, как может происходить при сохранении синтаксических элементов в устройстве 112 хранения для последующего извлечения устройством 116 места назначения.[0071] The present disclosure may generally refer to "signaling" certain information, such as syntax elements. The term “signaling” may generally refer to reporting values for syntax elements and/or other data used to decode encoded video data. That is,
[0072] Фиг. 2A и 2B представляют собой концептуальную диаграмму, иллюстрирующую примерную структуру 130 квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU) 132. Сплошные линии представляют разбиение квадродерева, а пунктирные линии указывают разбиение двоичного дерева. В каждом разделенном (т.е. нелистовом) узле двоичного дерева сигнализируется один флаг, указывающий, какой тип разделения (т.е. горизонтальное или вертикальное) используется, где 1 указывает горизонтальное разделение, а 0 указывает вертикальное разделение в данном примере. Для разделения квадродерева, нет необходимости указывать тип разделения, так как узлы квадродерева разделяют блок по горизонтали и по вертикали на 4 подблока одинакового размера. Соответственно, кодер 200 видео может кодировать, а декодер 300 видео может декодировать синтаксические элементы (такие как информация разделения) для уровня дерева области структуры QTBT 130 (т.е. сплошные линии) и синтаксические элементы (такие как информация разделения) для уровня дерева предсказания структуры QTBT 130 (т.е. пунктирные линии). Кодер 200 видео может кодировать, а декодер 300 видео может декодировать данные видео, такие как данные предсказания и преобразования, для CU, представленных конечными листовыми узлами структуры QTBT 130.[0072] FIG. 2A and 2B are a conceptual diagram illustrating an exemplary quadtree-binary tree (QTBT)
[0073] В общем, CTU 132 на фиг. 2B может ассоциироваться с параметрами, определяющими размеры блоков, соответствующих узлам структуры QTBT 130 на первом и втором уровнях. Эти параметры могут включать в себя размер CTU (представляющий размер CTU 132 в выборках), минимальный размер квадродерева (MinQTSize, представляющий минимально допустимый размер листового узла квадродерева), максимальный размер двоичного дерева (MaxBTSize, представляющий максимально допустимый размер корневого узла двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющую максимально допустимую глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимально допустимый размер листового узла двоичного дерева).[0073] In general,
[0074] Корневой узел структуры QTBT, соответствующий CTU, может иметь четыре дочерних узла на первом уровне структуры QTBT, каждый из которых может разбиваться в соответствии с разбиением квадродерева. То есть, узлы первого уровня являются либо листовыми узлами (не имеющими дочерних узлов), либо имеют четыре дочерних узла. Пример структуры QTBT 130 представляет такие узлы, как включающие родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не больше, чем максимально допустимый размер корневого узла двоичного дерева (MaxBTSize), то узлы могут дополнительно разбиваться на соответствующие двоичные деревья. Разделение двоичного дерева одного узла может повторяться до тех пор, пока узлы, полученные в результате разделения, не достигнут минимально допустимого размера листового узла двоичного дерева (MinBTSize) или максимально допустимой глубины двоичного дерева (MaxBTDepth). Пример структуры QTBT 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Листовой узел двоичного дерева упоминается как единица кодирования (CU), которая используется для предсказания (например, предсказания внутри картинки или между картинками) и преобразования, без какого-либо дальнейшего разбиения. Как обсуждалось выше, CU также могут упоминаться как “блоки видео” или “блоки”.[0074] The root node of the QTBT structure corresponding to the CTU may have four child nodes at the first level of the QTBT structure, each of which may be partitioned according to a quadtree split. That is, the first level nodes are either leaf nodes (having no children) or have four children. An example structure of
[0075] В одном примере структуры разбиения QTBT, размер CTU устанавливается как 128×128 (выборки яркости и две соответствующие 64×64 выборки цветности), MinQTSize устанавливается как 16×16, MaxBTSize устанавливается как 64×64, MinBTSize (как для ширины, так и для высоты) устанавливается как 4, и MaxBTDepth устанавливается как 4. Разбиение квадродерева применяется к CTU сначала, чтобы сформировать листовые узлы квадродерева. Листовые узлы квадродерева могут иметь размер от 16×16 (т.е. MinQTSize) до 128×128 (т.е. размер CTU). Если листовой узел квадродерева равен 128×128, он не будет далее разделен на двоичное дерево, так как размер превышает MaxBTSize (т.е. 64×64, в данном примере). В противном случае, листовой узел квадродерева будет дополнительно разбиваться на двоичное дерево. Таким образом, листовой узел квадродерева также является корневым узлом для двоичного дерева и имеет глубину двоичного дерева, равную 0. Когда глубина двоичного дерева достигает MaxBTDepth (4, в данном примере), дальнейшее разделение не допускается. Когда узел двоичного дерева имеет ширину, равную MinBTSize (4, в данном примере), это означает, что дальнейшее вертикальное разделение не допускается. Аналогично, узел двоичного дерева, имеющий высоту, равную MinBTSize, подразумевает, что дальнейшее горизонтальное разделение для этого узла двоичного дерева не допускается. Как отмечено выше, листовые узлы двоичного дерева упоминаются как CU и далее обрабатываются в соответствии с предсказанием и преобразованием без дальнейшего разбиения.[0075] In one example of the QTBT partitioning structure, the CTU size is set to 128x128 (luminance samples and two corresponding 64x64 chrominance samples), MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize (as for width, and height) is set to 4, and MaxBTDepth is set to 4. Quadtree partitioning is applied to the CTU first to form the leaf nodes of the quadtree. The leaf nodes of the quadtree can be from 16x16 (ie MinQTSize) to 128x128 (ie CTU size). If a quadtree leaf node is 128x128, it will not be further split into a binary tree because the size is larger than MaxBTSize (ie 64x64, in this example). Otherwise, the leaf node of the quadtree will be further split into a binary tree. Thus, the leaf node of the quadtree is also the root node for the binary tree and has a binary tree depth of 0. When the binary tree depth reaches MaxBTDepth (4, in this example), no further splitting is allowed. When a binary tree node has a width equal to MinBTSize (4, in this example), this means that no further vertical splitting is allowed. Similarly, a binary tree node having a height equal to MinBTSize implies that no further horizontal splitting is allowed for that binary tree node. As noted above, the leaf nodes of the binary tree are referred to as CUs and are further processed according to prediction and transformation without further partitioning.
[0076] Артефакты блочности могут включать в себя горизонтальные и вертикальные неоднородности (разрывности) в восстановленной картинке, которые не существуют в исходном неподвижном изображении или картинке видео и часто являются результатом сжатия в умеренной до высокой степени. Например, если кодер видео в высокой степени сжимает входное изображение, то от этого страдает визуальное качество декодированного изображения, так что когда содержимое изображения подвергается декомпрессии (устранению сжатия), т.е., декодируется, содержимое восстановленного изображения страдает из-за артефактов блочности. Эти артефакты в плоских областях выглядят подобно “мозаичности”, поскольку артефакты не маскируются высококонтрастным содержимым. Кроме того, артефакты блочности при воспроизведении видео могут наблюдаться как “движущиеся и мерцающие”, так как неоднородности расположены по-разному в последовательных кадрах.[0076] Blocking artifacts may include horizontal and vertical discontinuities (discontinuities) in the reconstructed picture that do not exist in the original still or video picture and are often the result of moderate to high compression. For example, if the video encoder highly compresses the input image, then the visual quality of the decoded image suffers, so that when the image content is decompressed (decompressed), i.e., decoded, the content of the reconstructed image suffers from blocking artifacts. These artifacts in flat areas look like "mosaic" because the artifacts are not masked by high contrast content. In addition, blocking artifacts in video playback can be observed as “moving and flickering” as the irregularities are located differently in successive frames.
[0077] Как изложено выше, одним источником артефактов блочности является кодирование с преобразованием на блочной основе, включающее в себя преобразование и квантование, которое выполняется на ошибках интра- и интер-предсказания (например, остатках). Грубое квантование коэффициентов преобразования может вызвать визуально распределение неоднородностей на границах блока. Предсказание с компенсацией движения является другим потенциальным источником артефактов блочности. Блоки со скомпенсированным движением генерируются путем копирования интерполированных пиксельных данных из различных местоположений возможно различных опорных кадров. Так как почти никогда не имеется идеального соответствия для этих данных (например, значений выборок для опорных блоков, образованных из интерполяции), обычно возникают неоднородности на границах скопированных блоков данных. То есть, два соседних блока, закодированных с использованием компенсации движения, могут проявлять неоднородности.[0077] As discussed above, one source of blocking artifacts is block-based transform coding, including transform and quantization, that is performed on intra- and inter-prediction errors (eg, residuals). Coarse quantization of the transform coefficients can cause a visual distribution of inhomogeneities at the block boundaries. Motion compensated prediction is another potential source of blocking artifacts. Motion compensated blocks are generated by copying interpolated pixel data from different locations, possibly different reference frames. Since there is almost never a perfect match for this data (eg, sample values for reference blocks derived from interpolation), discontinuities usually occur at the boundaries of the copied data blocks. That is, two adjacent blocks encoded using motion compensation may exhibit discontinuities.
[0078] Фильтрация устранения блочности (например, как в HEVC) обычно выполняется после того, как картинка или группа блоков восстанавливается/декодируется, чтобы ослабить артефакты блочности. Более конкретно, фильтрация устранения блочности изменяет значения выборок, расположенных вблизи каждой границы блока, путем фильтрации, отсечения или других средств, так что неоднородности сглаживаются и, таким образом, становятся менее видимыми.[0078] Deblocking filtering (eg, as in HEVC) is typically performed after a picture or group of blocks is reconstructed/decoded to reduce blocking artifacts. More specifically, deblocking filtering changes the values of the samples located near each block boundary, by filtering, clipping, or other means, so that the inhomogeneities are smoothed out and thus become less visible.
[0079] В сжатии видео, фильтрация устранения блочности может выполняться на изображениях в буфере изображений и вне контура предсказания, что означает, что картинки, отфильтрованные с устранением блочности, не используются для предсказания других картинок. Фильтрация устранения блочности может также выполняться в контуре предсказания, что означает, что картинки с устранением блочности используются в качестве опорных картинок для компенсации движения будущих картинок. Обе методики улучшают субъективное качество отображаемого видео, хотя последний потенциально также улучшает эффективность сжатия как результат точности интер-предсказания, улучшенной за счет использования опорных кадров с устранением блочности.[0079] In video compression, deblocking filtering can be performed on images in the image buffer and outside the prediction loop, which means that deblocked filtered pictures are not used to predict other pictures. Deblocking filtering can also be performed in a prediction loop, which means that deblocking pictures are used as reference pictures to compensate for the motion of future pictures. Both techniques improve the subjective quality of the displayed video, although the latter potentially also improves compression performance as a result of the inter-prediction accuracy improved by the use of deblocking reference frames.
[0080] Устранение блочности в HEVC является процессом в контуре и применяется к границам блоков, которые удовлетворяют двум условиям. Первое условие заключается в том, что границы являются границами CU, PU или TU, и второе условие заключается в том, что x-координата (или y-координата) равна (и в некоторых случаях должна быть) кратным 8, если граница является вертикальной (или горизонтальной). Второе условие означает, что минимальное расстояние двух параллельных соседних границ, подлежащих устранению блочности, составляет 8 пикселов, что обеспечивает лучшую параллелизацию, как описано более подробно ниже. Фильтр устранения блочности делит границу, подлежащую обработке, независимо от длины границы, на множество неперекрывающихся сегментов из 4 выборок, которые являются единицами, на которых фильтр устранения блочности выполняет фильтрацию устранения блочности. В настоящем раскрытии, будут введены операции устранения блочности на сегменте, и сегмент может предполагаться вертикальным, однако обработка горизонтальных сегментов по существу является той же самой.[0080] Deblocking in HEVC is an in-loop process and is applied to block boundaries that satisfy two conditions. The first condition is that the boundaries are CU, PU, or TU boundaries, and the second condition is that the x-coordinate (or y-coordinate) is (and in some cases must be) a multiple of 8 if the boundary is vertical ( or horizontal). The second condition means that the minimum distance of two parallel adjacent borders to be deblocked is 8 pixels, which provides better parallelization, as described in more detail below. The deblocking filter divides the border to be processed, regardless of the length of the border, into a plurality of non-overlapping segments of 4 samples, which are the units on which the deblocking filter performs deblocking filtering. In the present disclosure, deblocking operations on a segment will be introduced, and a segment may be assumed to be vertical, however, the processing of horizontal segments is essentially the same.
[0081] Декодер 300 видео, при выполнении фильтрации устранения блочности, может выполнять определение силы (интенсивности) границы. Для сегмента, подлежащего обработке, декодер видео исследует условия кодирования (например, вектор движения (MV), опорный индекс и наличие ненулевых коэффициентов преобразования) двух блоков на каждой стороне, обозначенных как P и Q, с каждой стороны от границы блока.[0081] The
[0082] Фиг. 3 показывает пример P-блока 142 и Q-блока 144. P-блок 142 представляет собой 8×8 блок, и Q-блок 144 представляет собой 16×16 блок. P-блок 142 и Q-блок 144 совместно используют границу 146, которая показана на фиг. 3 как сегменты 146A и 146B. Оба сегмента 146A и 146B имеют длину четыре выборки, в соответствии с фильтрацией устранения блочности в HEVC, но методики настоящего раскрытия не ограничены конкретной длиной сегмента.[0082] FIG. 3 shows an example of a P box 142 and a Q box 144. P box 142 is an 8×8 block and Q box 144 is a 16×16 block. P-box 142 and Q-box 144 share a border 146, which is shown in FIG. 3 as
[0083] Для блоков яркости, декодер видео определяет силу границы сегмента 146A. Сила границы представляет, насколько интенсивные артефакты блочности должны появиться вокруг сегмента 146A. В одном примере, значение силы границы может составлять 0, что означает, что условия кодирования в P-блоке 142 и Q-блоке 144 таковы, что артефакты блочности не ожидаются вдоль сегмента 146A, и фильтрация устранения блочности для сегмента 146A может быть пропущена. В другом примере, значение силы границы может составлять 2, что означает, что условия кодирования в P-блоке 142 и Q-блоке 144 таковы, что потенциально ожидается присутствие сильных артефактов блочности, и может быть желательна более сильная фильтрация устранения блочности. Значение силы границы может также составлять 1, что означает, что условия кодирования в P-блоке 142 и Q-блоке 144 таковы, что потенциально ожидается присутствие менее выраженных артефактов блочности, и может быть желательна некоторая фильтрация устранения блочности, но не настолько сильная, как фильтрация устранения блочности, когда сила границы равна 2. Подробности выведения силы границ описаны в разделе 8.7.2.4 HEVC.[0083] For luma blocks, the video decoder determines the strength of the
[0084] Декодер видео может определять силы границ для блоков цветности иначе, чем для блоков яркости. Например, для блоков цветности, декодер видео назначает сегментам, смежным с интра-кодированными блоками, сигу границы, равную 2, и в противном случае, назначает сегментам силу границы, равную 0.[0084] The video decoder may determine edge strengths for chrominance blocks differently than for luma blocks. For example, for chrominance blocks, the video decoder assigns segments adjacent to intra-coded blocks a border sig equal to 2, and otherwise assigns a border strength equal to 0 to the segments.
[0085] Как описано выше, декодер видео может оценивать вероятность того, что сегмент имеет артефакты блочности, на основе условия кодирования смежных блоков. Однако декодер видео может также выполнять дополнительный анализ, на основе значений выборок вблизи такого сегмента, чтобы определять, следует ли или нет устранять блочность для сегмента. Сначала, декодер видео принимает решение, следует ли фильтровать сегмент, путем вычисления вторых производных четырех выборок вблизи сегмента.[0085] As described above, the video decoder may estimate the likelihood that a segment has blocking artifacts based on a coding condition of adjacent blocks. However, the video decoder may also perform further analysis, based on sample values near such a segment, to determine whether or not to deblock the segment. First, the video decoder decides whether to filter a segment by calculating the second derivatives of the four samples near the segment.
[0086] Фиг. 4 показывает пример сегмента 150, который находится на границе между P-блоком 152 и Q-блоком 154. Декодер видео вычисляет вторые производные четырех выборок вблизи сегмента, которые показаны на фиг. 4 как выборки 158A-158D в кружках. Если суммирование четырех вторых производных (см. Ур. (1)) меньше, чем порог β, как описано ниже в отношении порогов β и tC, то декодер видео определяет, что сегмент требует устранения блочности. В противном случае, декодер видео определяет, что сегмент считается расположенным в неплоской области, где артефакты блочности, вероятно, будут маскированы и, следовательно, не требуют устранения блочности. Для сегмента, даже при ненулевой силе границы, декодер видео может пропустить фильтрацию устранения блочности, если порог согласно Ур. (1) не достигнут.[0086] FIG. 4 shows an example of a
[0087] Во-вторых, для сегмента, подлежащего устранению блочности, декодер видео может принять другое решение, следует ли использовать интенсивный или нормальный режим фильтрации. Если следующие шесть условий (Ур. (2-1)-(2-6)) все справедливы, что означает, что область, вероятно, слишком гладкая, чтобы маскировать какие-либо артефакты блочности, то декодер видео определяет, что используется интенсивный режим фильтрации. В противном случае, декодер видео определяет, что используется нормальный режим фильтрации.[0087] Second, for the segment to be deblocked, the video decoder may make a different decision whether to use heavy or normal filtering mode. If the following six conditions (Eq. (2-1)-(2-6)) are all true, which means that the area is probably too smooth to mask any blocking artifacts, then the video decoder determines that the heavy mode is used. filtration. Otherwise, the video decoder determines that the normal filtering mode is used.
Пороговый параметр tC представляет параметр отсечения, который описан более детально ниже.The threshold parameter t C represents a cutoff parameter, which is described in more detail below.
[0088] Фиг. 5 показывает пример сегмента 160, который находится на границе между P-блоком 162 и Q-блоком 164. Фиг. 5 будет использоваться, чтобы показать операцию фильтрации устранения блочности для одной строки, представленной физическими положениями выборок p 0 , p 1 , p 2 , p 3 , q 0 , q 1 , q 2 и q 3 .[0088] FIG. 5 shows an example of a
[0089] Для определений силы границы и других решений для яркости, описанных выше, декодер видео выполняет анализ и выводы на уровне сегмента. В интенсивном режиме фильтрации для яркости и нормальном режиме фильтрации для яркости, фильтрация устранения блочности выполняется построчно (например, строка за строкой, если сегмент является вертикальным, или столбец за столбцом, если сегмент является горизонтальным).[0089] For the edge strength determinations and other brightness decisions described above, the video decoder performs analysis and inference at the segment level. In the intensive filtering mode for luminance and the normal filtering mode for luminance, deblocking filtering is performed line by line (for example, row by row if the segment is vertical, or column by column if the segment is horizontal).
[0090] В интенсивном режиме фильтрации для яркости, декодер видео обрабатывает три выборки на каждой стороне сегмента 160. В примере на фиг. 5, значения выборок p 0 , p 1 и p 2 в P-блоке 162 обновляются на p 0 ’ , p 1 ’ и p 2 ’ , посредством фильтрации нижних частот, как показано в Ур. (3-1)-(3-3).[0090] In the intensive filtering mode for luminance, the video decoder processes three samples on each side of
Измененные значения выборок p i ' (i=0, 1, 2) ограничиваются (отсекаются) до диапазона [p i - 2t C , p i +2t C ].Changed sample values p i ' ( i =0, 1, 2) are limited (cut off) to the range [ p i - 2 t C , p i +2 t C ].
[0091] Декодер видео обрабатывает q 0 , q 1 и q 2 в Q-блоке 164 с использованием по существу тех же уравнений, что и Ур. (3-1)-(3-3), хотя и для q вместо p. Отсечение применяется таким же образом для q, как для p.[0091] The video decoder processes q 0 , q 1 and q 2 in Q-
[0092] В нормальном режиме фильтрации для яркости, декодер видео обрабатывает одну или две выборки на каждой стороне сегмента 160. Для левой стороны сегмента 160, например, декодер видео проверяет условия в Ур. (4-1). Если условия выполняются, то декодер видео обрабатывает выборки p 0 и p 1 . В противном случае, декодер видео обрабатывает только выборку p 0 . Аналогичным образом, для правой стороны, декодер видео проверяет условия в Ур. (4-2) для определения, обрабатывается ли выборка q 1 в дополнение к выборке q 0 . Так как решение по числу выборок, подлежащих обработке, принимается независимо на каждой стороне сегмента, можно обработать одну выборку на одной стороне и две выборки на другой стороне.[0092] In the normal filtering mode for luma, the video decoder processes one or two samples on each side of
Для обработки p 0 и q 0 , сначала вычисляется промежуточное значение δ, как в Ур. (5).To process p 0 and q 0 , an intermediate value δ is first calculated, as in Eq. (5).
[0093] Если абсолютное значение δ больше или равно 10-кратному tC, то граница рассматривается, как естественный край, который должен быть сохранен, и декодер видео не выполняет фильтрацию устранения блочности на текущей строке. В противном случае, декодер видео ограничивает δ в диапазоне от -tC до tC, как показано в Ур. (6).[0093] If the absolute value of δ is greater than or equal to 10 times t C , then the boundary is considered as a natural edge to be preserved, and the video decoder does not perform deblocking filtering on the current line. Otherwise, the video decoder limits δ in the range -t C to t C , as shown in Eq. (6).
[0094] Декодер видео обновляет значения p 0 и q 0 до p 0 ' и q 0 ' , соответственно, путем суммирования и вычитания Δ0, как показано в Ур. (7-1) и (7-2).[0094] The video decoder updates the values of p 0 and q 0 to p 0 ' and q 0 ' , respectively, by adding and subtracting Δ 0 as shown in Eq. (7-1) and (7-2).
[0095] Чтобы обработать вторую выборку на каждой стороне сегмента 164, т.е., p 1 и q 1 , декодер видео использует Ур. (8-1) и (8-2), чтобы получить обновленные значения p 1 ' и q 1 ' .[0095] To process the second sample on each side of
[0096] Декодер видео выполняет фильтрацию устранения блочности для цветности путем определения значения силы границы, но без выполнения какого-либо анализа значений выборок. Декодер видео обрабатывает только первую выборку на каждой стороне сегмента, т.е., p 0 и q 0 , с помощью Ур. (7-1) и (7-2), где дельта Δ0 вычисляется, как в Ур. (9).[0096] The video decoder performs chrominance deblocking filtering by determining the edge strength value, but without performing any analysis of the sample values. The video decoder processes only the first sample on each side of the segment, i.e., p 0 and q 0 , using Eq. (7-1) and (7-2), where delta Δ 0 is calculated as in Eq. (9).
[0097] Чтобы избежать избыточной фильтрации, декодер видео вычисляет два параметра β и tC. Декодер видео использует порог β, чтобы управлять способом, которым выполняется устранение блочности, например, следует ли устранять блочность для сегмента, следует ли использовать интенсивный или нормальный режим фильтрации, и/или следует ли обрабатывать одну или две выборки на одной стороне сегмента. Если β или масштабированное β достигается или превышается (см. Ур. (1), (2) и (4)), что означает большее изменение локальных значений выборки, то устранение блочности имеет тенденцию быть более консервативным, чтобы сохранить подробности в исходном изображении. В противном случае, локальные значения выборки изменяются меньше (т.е., более гладкие), и декодер видео выполняет фильтрацию устранения блочности более агрессивным образом.[0097] To avoid excessive filtering, the video decoder calculates two parameters β and t C . The video decoder uses a threshold β to control the way deblocking is performed, such as whether to deblock a segment, whether to use heavy or normal filtering mode, and/or whether to process one or two samples on one side of a segment. If β or scaled β is reached or exceeded (see Eq. (1), (2) and (4)), which means more change in local sample values, then deblocking tends to be more conservative to preserve detail in the original image. Otherwise, the local sample values change less (ie, smoother) and the video decoder performs deblocking filtering in a more aggressive manner.
[0098] Декодер видео использует значение отсечения tC, главным образом, чтобы управлять максимальным изменением величины выборки, за исключением Ур. (2-5) и (2-6). В HEVC, например, в нормальном режиме фильтрации или фильтрации для цветности, изменение величины выборки ограничивается так, что изменение не превышает ±tC для первой выборки на одной стороне сегмента (применимо к яркости и цветности), или ±tC/2 для второй выборки (применимо только к яркости). В HEVC, для интенсивного режима фильтрации, где подразумевается большее изменение в величине, максимальное изменение ограничивается до ±2tC для трех выборок, обработанных на каждой стороне сегмента.[0098] The video decoder uses the cutoff value tC, mainly to control the maximum change in sample size, with the exception of Eq. (2-5) and (2-6). In HEVC, for example, in normal or chrominance filtering mode, the change in sample size is limited such that the change does not exceed ±tC for the first sample on one side of the segment (applicable to luma and chrominance), or ±tC/2 for the second sample (only applies to brightness). In HEVC, for heavy filtration mode, where a larger change in magnitude is implied, the maximum change is limited to ±2tC for three samples processed on each side of the segment.
[0099] Значения β и t C , главным образом, зависят от значений параметра квантования (QP) из левого P-блока и правого Q-блока. Более конкретно, декодер видео может использовать среднее QP из P и Q, обозначенное как QP ave = (QP P +QP Q +1)>>1, как индекс для поиска двух 1-D таблиц поиска (LUT) для β и t C , соответственно. Хотя индекс поиска для нахождения значения t C может настраиваться путем прибавления двух, т.е., (QP ave +2), если сила границы равна 2, преобладающим фактором, определяющим значения β и t C , все еще является QPave. В обоих LUT, значения элементов записи монотонно возрастают с увеличением значения индексов поиска, что означает, что чем выше QPave, тем большие значения будут иметь β и t C . Таким образом, более вероятно выбирается более интенсивная фильтрация устранения блочности, и допускается большее изменение величины. Более низкое QP, напротив, приводит к меньшим или даже к нулевым значениям для β и t C . При кодировании с низким QP, картинка, как правило, имеет меньше артефактов блочности или имеет менее выраженные артефакты блочности и поэтому требует в меньшей степени устранения блочности или даже не требует его.[0099] The values of β and t C mainly depend on the values of the quantization parameter (QP) from the left P-box and the right Q-box. More specifically, the video decoder may use the average QP of P and Q, denoted as QP ave = ( QP P + QP Q +1)>>1, as an index to look up two 1-D lookup tables (LUTs) for β and t C , respectively. Although the search index for finding the value of t C can be tuned by adding two, i.e., ( QP ave +2) if the boundary strength is 2, the predominant factor determining the values of β and t C is still QP ave . In both LUTs, the element values increase monotonically as the search indexes increase, which means that the higher the QP ave , the larger the values of β and t C will be. Thus, more intense deblocking filtering is more likely to be selected, and a larger change in magnitude is allowed. Lower QP, on the contrary, leads to smaller or even zero values for β and t C . When encoded at low QP, the picture generally has less blocking artifacts or less pronounced blocking artifacts and therefore requires less or no deblocking.
[0100] Индексы, используемые для поиска β и t C в LUT, обозначенные как idxβ и idx tc , могут дополнительно настраиваться двумя параметрами tc_offset_div2 и beta_offset_div2, соответственно (см. уравнения (10-1) и (10-2)),[0100] The indexes used to search for β and t C in the LUT, denoted as idx β and idx tc , can be further configured by two parameters tc_offset_div2 and beta_offset_div2, respectively (see equations (10-1) and (10-2)),
где tc_offset_div2 и beta_offset_div2 отправляются в заголовке вырезки или в наборе параметров картинки (PPS). Это позволяет кодеру адаптировать интенсивность устранения блочности в зависимости от характеристик последовательности, режима кодирования и других факторов.where tc_offset_div2 and beta_offset_div2 are sent in the slice header or picture parameter set (PPS). This allows the encoder to adapt the deblocking rate depending on the characteristics of the sequence, the coding mode, and other factors.
[0101] Устранение блочности согласно HEVC имеет две последовательных стадии, которые могут обеспечивать возможность параллелизации. На первой стадии, декодер видео фильтрует все вертикальные границы блока, и на второй стадии, декодер видео фильтрует все горизонтальные границы блока. На второй стадии, выборки, используемые для принятия решения о режиме и фильтрации, являются выходами первой стадии. На каждой стадии, где границы, подвергаемые устранению блочности, все являются параллельными и отстоят по меньшей мере на 8 выборок, выборки, задействованные в устранении блочности одной границы, не перекрываются с выборками, задействованными в устранении блочности любых других границ. В этом контексте, выборки, задействованные в устранении блочности одной границы, включают в себя до трех выборок, подлежащих фильтрации на каждой стороне границы, и до четырех выборок на каждой стороне для поддержки принятия решения о фильтрации и режиме, и поэтому устранение блочности одной границы может выполняться параллельно с любыми другими границами.[0101] Deblocking according to HEVC has two consecutive stages, which can enable parallelization. In the first stage, the video decoder filters all vertical block boundaries, and in the second stage, the video decoder filters all horizontal block boundaries. In the second stage, the samples used to make the mode and filter decisions are the outputs of the first stage. At each stage where the deblocking boundaries are all parallel and at least 8 samples apart, the deblocking samples of one boundary do not overlap with the deblocking samples of any other boundaries. In this context, the samples involved in single boundary deblocking include up to three samples to be filtered on each side of the boundary and up to four samples on each side to support filtering and mode decision making, and therefore single boundary deblocking can run in parallel with any other boundaries.
[0102] HEVC-фильтр устранения блочности фильтрует выборки вблизи границы блока и отсекает изменения в величинах выборки, которые больше, чем пороговые величины. HEVC-фильтр устранения блочности работает в трех режимах с тремя разными уровнями интенсивности фильтра. Три режима, или интенсивности фильтра, упоминаются как сильный, нормальный и нулевой (т.е., отсутствует фильтрация), с возрастающими локальными активностями выборки вблизи границы блока (см. уравнения (1) и (2-1)-(2-6)). В сильном режиме фильтрации, HEVC-фильтр устранения блочности фильтрует три выборки на каждой стороне границы блока путем фильтрации нижних частот (см. уравнения (3-1)-(3-3)). Для нормального режима фильтрации, HEVC-фильтр устранения блочности фильтрует по меньшей мере выборку, ближайшую к границе, и на каждой стороне границы может также фильтровать вторую ближайшую выборку, если внутренние выборки достаточно гладкие (см. уравнения (4-1) и (4-2)). HEVC-фильтр устранения блочности выполняет отсечение, контролируемое параметром tC. Для сильной фильтрации, изменение величины выборки ограничивается, чтобы не превышать 2tC. Для нормальной фильтрации, изменения величины первой и второй выборок ограничиваются, чтобы не превышать tC и tC/2, соответственно (см. Ур. (6)-(8-2)). Разные значения силы границы создают различие в tC, т.е., сегмент с силой границы, равной 2, имеет большее tC, чем сегмент с силой границы, равной 1.[0102] The HEVC deblocking filter filters samples near a block boundary and clips changes in sample values that are greater than the threshold values. The HEVC deblocking filter operates in three modes with three different filter intensity levels. The three modes, or filter intensities, are referred to as strong, normal, and zero (i.e., no filtering), with increasing local sampling activities near the block boundary (see equations (1) and (2-1)-(2-6 )). In the strong filtering mode, the HEVC deblocking filter filters three samples on each side of the block boundary by low-pass filtering (see Equations (3-1)-(3-3)). For normal filtering mode, the HEVC deblocking filter filters at least the sample closest to the boundary, and on each side of the boundary may also filter the second closest sample if the inner samples are smooth enough (see Equations (4-1) and (4- 2)). The HEVC deblocking filter performs a clipping controlled by the parameter t C . For strong filtering, the change in sample size is limited to not exceed 2t C . For normal filtering, the magnitude changes of the first and second samples are limited to not exceed t C and t C /2, respectively (see Eq. (6)-(8-2)). Different border strength values create a difference in t C , i.e., a segment with a border strength of 2 has a larger t C than a segment with a border strength of 1.
[0103] HEVC-фильтр устранения блочности по существу следует общей схеме устранения блочности согласно H.264/AVC и наследует основные признаки фильтра устранения блочности согласно H.264/AVC, такие как определения силы границы на основе условий кодирования, многоуровневые интенсивности фильтрации от сильной до нулевой, QP и сила границы, зависимая от параметров β и t C . По сравнению с H.264/AVC-фильтром устранения блочности, вновь разработанные элементы в HEVC-фильтре устранения блочности позволяют осуществлять более простую параллельную обработку и лучше приспособлены к структуре кодирования крупноразмерных блоков HEVC, но ненамного улучшают эффективность кодирования. Поэтому устранение блочности в HEVC, которое рассматривалось как хороший компромисс между вычислительной сложностью и эффективностью кодирования во время финализации HEVC, может быть чрезмерно упрощенным, с учетом возможностей современных высокоразвитых аппаратных средств. Методики настоящего раскрытия потенциально извлекают выгоду из больших аппаратных вычислительных ресурсов для достижения существенного улучшения эффективности кодирования, поддерживая при этом удобную для параллелизации структуру.[0103] The HEVC deblocking filter essentially follows the general H.264/AVC deblocking scheme and inherits the main features of the H.264/AVC deblocking filter, such as edge strength determinations based on coding conditions, multi-level filtering strengths from strong to zero, QP and the strength of the boundary, depending on the parameters β and t C . Compared with the H.264/AVC deblocking filter, the newly developed elements in the HEVC deblocking filter allow easier parallel processing and are better adapted to the HEVC jumbo block coding structure, but do not greatly improve coding efficiency. Therefore, HEVC deblocking, which has been seen as a good compromise between computational complexity and coding efficiency during HEVC finalization, may be oversimplified given the capabilities of today's highly advanced hardware. The techniques of the present disclosure potentially benefit from large hardware computing resources to achieve significant improvements in coding efficiency while maintaining a parallelization-friendly structure.
[0104] Настоящее раскрытие предлагает методики, которые могут улучшить аспекты фильтрации устранения блочности, включая HEVC-фильтрацию устранения блочности. Один пример недостатка HEVC-фильтрации устранения блочности состоит в том, что использование только трех уровней для представления гладкости области границы, соответствующих трем уровням интенсивности фильтрации, может быть слишком грубым. Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что только две из четырех строк сегмента используются в решении о режиме устранения блочности и выборе фильтра, и в каждой строке используются только четыре выборки с каждой стороны. Так как размер блока кодека видео следующего поколения может составлять до 128×128 или даже больше, использование такой малой части выборок для решения о режиме не может точно отражать реальную активность области границы и может быть чувствительным к шуму.[0104] The present disclosure provides techniques that can improve aspects of deblocking filtering, including HEVC deblocking filtering. One example of a disadvantage of HEVC deblocking filtering is that using only three levels to represent the smoothness of the boundary region corresponding to three levels of filtering intensity can be too coarse. Another example of a disadvantage of HEVC deblocking filtering is that only two of the four segment rows are used in the deblocking mode decision and filter selection, and only four samples per side are used per row. Since the next generation video codec block size can be up to 128×128 or even larger, using such a small fraction of samples for mode decision may not accurately reflect the actual activity of the boundary region and may be noise sensitive.
[0105] Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что выборки, подлежащие фильтрации на каждой стороне сегмента, могут включать в себя 3 выборки или одну выборку, что может быть недостаточно для обеспечения хороших результатов для устранения блочности большого блока. Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что существуют, в общем, пять предопределенных 4-отводных или 5-отводных фильтров, предварительно назначаемых трем выборкам в интенсивном режиме фильтрации (см. уравнения (3-1)-(3-3)) и двум выборкам в нормальном режиме фильтрации (см. уравнения (5)-(8-2)), соответственно. Ограниченное число опций, короткая длина и негибкость в выборе HEVC-фильтра устранения блочности могут обусловить низкую эффективность в устранении блочности.[0105] Another example of the disadvantage of HEVC deblocking filtering is that the samples to be filtered on each side of the segment may include 3 samples or one sample, which may not be enough to provide good results for large block deblocking. Another example of the disadvantage of HEVC deblocking filtering is that there are, in general, five predefined 4-tap or 5-tap filters pre-assigned to three samples in the heavy filtering mode (see Equations (3-1)-(3- 3)) and two samples in the normal filtering mode (see equations (5)-(8-2)), respectively. The limited number of options, short length, and inflexibility in the selection of the HEVC deblocking filter can result in poor deblocking performance.
[0106] Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что сегменты с различными силами границы могут иметь довольно различные локальные активности, но совместно используют те же самые фильтры устранения блочности, хотя значение отсечения больше для силы границы, равной 2. Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что HEVC-фильтр устранения блочности не дифференцирует P-блок и Q-блок. Интенсивность фильтрации определяется средним второй производной P и Q (см. уравнения (1) и (2-1)-(2-2)), и значения параметров β и t C зависят от среднего QP P и Q. Могут иметь место потери эффективности в обработке P-блока и Q-блока одинаково для сценариев кодирования, где один из P-блока или Q-блока может быть гладким, а другой обогащен деталями, что не является необычным сценарием.[0106] Another example of a disadvantage of HEVC deblocking filtering is that segments with different edge strengths can have quite different local activities but share the same deblocking filters, although the cutoff value is larger for a border strength of 2. Another An example of a disadvantage of HEVC deblocking filtering is that the HEVC deblocking filter does not differentiate between a P-box and a Q-box. The filtration intensity is determined by the average of the second derivative of P and Q (see equations (1) and (2-1)-(2-2)), and the values of the parameters β and t C depend on the average QP P and Q. Losses in efficiency may occur. in P-box and Q-box processing is the same for coding scenarios, where one of the P-box or Q-box can be smooth and the other is rich in detail, which is not an uncommon scenario.
[0107] Настоящее раскрытие предлагает различные методики потенциального улучшения производительности фильтрации устранения блочности, используемой для кодирования видео или обработки видео. В соответствии с одним примером, декодер 300 видео может быть выполнен с возможностью выполнять анализ фильтра (например, выбор фильтра или адаптацию интенсивности фильтра) на основе параметров разбиения блока. В одном примере, декодер 300 видео может быть выполнен с возможностью определять длину фильтра устранения блочности и поддержку фильтра (например, поддержку фильтра пониженной дискретизации) на основе длины блока, ортогонального фильтруемой границе. В другом примере, длина блока, выровненного с фильтруемой границей, влияет на процесс принятия решения, например, позволяет осуществлять пространственную суб-дискретизацию граничных выборок, используемых для принятия решения о фильтре.[0107] The present disclosure proposes various techniques for potentially improving the performance of deblocking filtering used for video coding or video processing. According to one example,
[0108] В соответствии с другим примером, декодер 300 видео может быть выполнен с возможностью адаптировать доверительный интервал выходной выборки, также известный как коэффициент Tc, как функцию параметров разбиения блока (например, размеров) и связанного положения в пределах блока текущей обрабатываемой выборки, к которой применяется параметр ограничения Tc. Tc ограничивает отклонение, положительное или отрицательное, значения выборки, подвергаемой устранению блочности, от декодированной выборки и вводится в процесс устранения блочности.[0108] According to another example, the
[0109] В соответствии с другим примером, декодер 300 видео может быть выполнен с возможностью использования параметров обрабатываемого блока (размера блока), чтобы ограничить набор выборок, доступный для процесса принятия решения и фильтрации, при сохранении структуры процесса принятия решения и фильтрации. Декодер 300 видео может формировать выборки, которые требуются для процесса фильтрации, но не доступны вследствие ограничений, использующих заданный процесс, такой как экстраполяция или процесс заполнения. В соответствии с другим примером, декодер 300 видео может использовать свойства преобразования, такие как информация о типе преобразования/базисной функции, и коэффициенты преобразования, сигнализированные как ненулевые декодеру 300 видео и, следовательно, присутствующие в восстановленном блоке выборок, чтобы выбрать параметры фильтра устранения блочности, такие как тип фильтра, длина фильтра, параметры ограничения Tc, пространственный шаг пропуска выборки. В соответствии с другим примером, декодер 300 видео может использовать параметры квантования P- и Q-блоков для установки порогов по выбору фильтра P и Q независимо.[0109] According to another example, the
[0110] В одном примере, для границы блоков, разделяющей блоки различных размеров, декодер 300 видео может принять решение об асимметричной фильтрации устранения блочности. Например, когда граница блоков разделяет блоки различного размера, декодер 300 видео может выбрать асимметричный фильтр устранения блочности.[0110] In one example, for a block boundary separating blocks of different sizes,
[0111] В другом примере, если декодер 300 видео определяет, что должен использоваться асимметричный фильтр, то процесс устранения блочности с обеих сторон от границы может быть различным. Например, параметры фильтра устранения блочности, такие как длина отводов, коэффициент фильтра, процесс отсечения или нормализации могут быть разными на обеих сторонах фильтруемой границы. Дополнительно или альтернативно, параметры для процессов принятия решения, такие как длина отводов фильтра анализа, коэффициенты фильтра анализа, отсечение, нормализация или пороги, могут быть различными на обеих сторонах фильтруемой границы.[0111] In another example, if the
[0112] В другом примере, декодер 300 видео может определять параметры для асимметричной фильтрации на основе одного или более параметров режима кодирования блоков на границе. Примеры таких параметров режима кодирования включают в себя режим кодирования, режим предсказания, тип вырезки или другие такие параметры.[0112] In another example,
[0113] Далее будут описаны неограничивающие примеры реализаций методик, введенных выше. В одном примере, процесс анализа фильтра (выбор фильтра или адаптация интенсивности фильтрации) расширяется, чтобы включать в себя параметры разбиения блока. Например, декодер 300 видео может быть выполнен с возможностью определять длину фильтра устранения блочности и поддержку фильтра (например, поддержку фильтра пониженной дискретизации) на основе длины блока, ортогонального фильтруемой границе. В другом примере, декодер 300 видео может быть выполнен с возможностью принятия решения на основе длины блока, выровненного с фильтруемой границей, так что допускается пространственная суб-дискретизация граничных выборок, используемых для принятия решения о фильтре.[0113] Non-limiting examples of implementations of the techniques introduced above will now be described. In one example, the filter analysis process (filter selection or filter intensity adaptation) is extended to include block splitting parameters. For example,
[0114] Приведенный ниже псевдокод обеспечивает примерную реализацию выведения параметров устранения блочности, выполняемого декодером 300 видео:[0114] The following pseudo-code provides an exemplary implementation of the deblocking parameter derivation performed by the video decoder 300:
VERT_SAMPLE_SKIP является переменной, определяющей параметры пространственной повторной дискретизации (число пропущенных выборок), задающие число выборок, используемых для классификации граничных выборок.VERT_SAMPLE_SKIP is a variable defining the spatial resampling parameters (number of skipped samples) that specifies the number of samples used to classify edge samples.
DB_BLOCK_SIZE_CLASSIFIER является переменной, определяющей число выборок, используемых для классификации граничных выборок.DB_BLOCK_SIZE_CLASSIFIER is a variable that specifies the number of samples used to classify edge samples.
Функцией является SmoothAsymArea(const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Position& localPos)The function is SmoothAsymArea(const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Position& localPos)
[0115] В примерах, приведенных выше, pSrcP может, например, представлять указатель на блок на одной стороне границы, подлежащей фильтрации устранения блочности, и pSrcQ может представлять указатель на блок на другой стороне границы, подлежащей фильтрации устранения блочности.[0115] In the examples above, pSrcP may, for example, represent a pointer to a block on one side of the boundary to be deblocked, and pSrcQ may represent a pointer to a block on the other side of the boundary to be deblocked.
[0116] Декодер 300 видео может быть выполнен с возможностью определять доверительный интервал выходной выборки, также известный как коэффициент Tc, для ограничения отклонения значения выборки, подвергаемой устранению блочности, от декодированной выборки. Tc может вводиться в процесс устранения блочности. Декодер 300 видео может быть выполнен с возможностью адаптировать Tc как функцию параметров разбиения блока, таких как размер блока, и связанного положения внутри блока или в пределах фильтруемой границы текущей обрабатываемой выборки, к которой применяется параметр ограничения Tc. В одном примере, связанное положение текущей обрабатываемой выборки является местоположением текущей обрабатываемой выборки относительно фильтруемой границы.[0116] The
[0117] В одной примерной реализации, параметр ограничения Tc может быть определен как функция связанного положения текущей фильтруемой строки/столбца в пределах фильтруемой границы, где i является индексом текущей обрабатываемой строки/столбца фильтруемой границы, начиная с верхнего/правого местоположения границы, соответственно.[0117] In one exemplary implementation, the constraint parameter Tc can be defined as a function of the associated position of the current filtered row/column within the filtered boundary, where i is the index of the currently processed row/column of the filtered boundary, starting from the top/right boundary location, respectively.
[0118] Приведенный ниже псевдокод обеспечивает примерную реализацию применения Tc:[0118] The following pseudo-code provides an exemplary implementation of the application of Tc:
В некоторых примерах, значение Tc может определяться для блока как функция положения, связанного с верхним-левым положением текущего обрабатываемого блока:In some examples, the value of Tc may be determined for a block as a function of the position associated with the top-left position of the currently processed block:
y=coordinateCurrentlyProcessedSample.y -y=coordinateCurrentlyProcessedSample.y -
coordinateTopLeftSampleOfBlock.y;coordinateTopLeftSampleOfBlock.y;
x=coordinateCurrentlyProcessedSample.x -x=coordinateCurrentlyProcessedSample.x -
coordinateTopLeftSampleOfBlock.x;coordinateTopLeftSampleOfBlock.x;
delta1=Clip3(-tc2[y][x], tc2[y][x], delta[y][x]);delta1=Clip3(-tc2[y][x], tc2[y][x], delta[y][x]);
[0119] Декодер 300 видео может быть выполнен с возможностью использовать параметры обрабатываемого блока, такие как размер блока, чтобы ограничивать набор выборок, доступный для процесса принятия решения и фильтрации, с сохранением структуры процесса принятия решения и фильтрации. Декодер 300 видео может формировать выборки, которые требуются для процесса фильтрации, но не доступны вследствие ограничений, использующих заданный процесс, такой как экстраполяция или процесс заполнения.[0119] The
[0120] Приведенный ниже псевдокод обеспечивает примерную реализацию. В некоторых реализациях, может быть определена группа фильтров для обработки границы. Выбор фильтра может быть основан на объединении размеров блока, смежных на границе блока, и результата классификации граничных выборок.[0120] The following pseudo-code provides an exemplary implementation. In some implementations, a filter group may be defined to handle the border. The choice of the filter may be based on the union of the block sizes adjacent at the block boundary and the classification result of the boundary samples.
DB_FILTER_BLOCK_SIZE1, DB_FILTER_BLOCK_SIZE2 and DB_FILTER_BLOCK_SIZE3 являются переменными, каждая из которых определяет число выборок, используемых для фильтрации граничных выборок, определяя поддержку фильтров, например, 3 фильтров.DB_FILTER_BLOCK_SIZE1, DB_FILTER_BLOCK_SIZE2 and DB_FILTER_BLOCK_SIZE3 are variables, each of which defines the number of samples used to filter edge samples, defining filter support, for example 3 filters.
[0121] Декодер 300 видео может быть выполнен с возможностью использовать свойства преобразования, такие как информация о типе преобразования/базисной функции, и коэффициенты преобразования, сигнализированные как ненулевые декодеру 300 видео и, следовательно, присутствующие в восстановленном блоке выборок, чтобы выбрать параметры фильтра устранения блочности, такие как тип фильтра, длина фильтра, параметры ограничения Tc, пространственный шаг пропуска выборки.[0121]
[0122] Представленный ниже псевдокод обеспечивает примерную реализацию. Предположим, что кодер 200 видео и декодер 300 видео используют набор множества преобразований, например {T1,T2,T3}, причем кодер 200 видео выбирает оптимальное преобразование, применимое к горизонтальному и вертикальному направлениям. В декодере 300 видео, применимость преобразования к горизонтальному/вертикальному направлению может быть выведена из синтаксических элементов битового потока. Процесс выведения, используемый в WD VVC (Draft 2), специфицирован ниже.[0122] The following pseudo-code provides an exemplary implementation. Assume that
_flagMTS_CU
_flag
_flagMTS_Hor
_flag
_flagMTS_Ver
_flag
тальноеHorizon-
tal
кальноеverti-
caloric
тальноеHorizon-
tal
кальноеverti-
caloric
[0123] Следующий псевдокод может быть использован для выведения параметров фильтра устранения блочности:[0123] The following pseudo-code can be used to derive deblocking filter parameters:
}}
[0124] Ниже приведен пример функции ApplyDeblockingProcessType1. Структура других функций, например, функций устранения блочности, может также следовать подобному шаблону.[0124] The following is an example of the ApplyDeblockingProcessType1 function. The structure of other functions, such as deblocking functions, may also follow a similar pattern.
ApplyDeblockingProcessType1()ApplyDeblockingProcessType1()
{{
1. Вывести длину классификатора на основе размера блока, ортогонального границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.1. Derive the classifier length based on the block size orthogonal to the block boundary, the transform type, and the index of non-zero encoded transform coefficients and local activity score.
2. Вывести длину устранения блочности на основе размера блока, ортогонального к границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.2. Derive the deblocking length based on the block size orthogonal to the deblocking boundary, the transform type, and the index of non-zero encoded transform coefficients and local activity score.
3. Вывести выборки, пропускаемые во время процесса классификатора или устранения блочности, на основе размера блока, ортогонального к границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.3. Derive the samples skipped during the classifier or deblocking process based on the block size orthogonal to the deblocking boundary, the transform type, and the index of non-zero encoded transform coefficients and local activity score.
4. Вывести параметры устранения блочности, такие как Tc, локальные пороги, настройка QP на основе размера блока, ортогонального к границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.4. Derive deblocking parameters such as Tc, local thresholds, QP tuning based on block size orthogonal to deblocking boundary, transform type and index of non-zero encoded transform coefficients, and local activity estimate.
[0125] Декодер 300 видео может быть выполнен с возможностью использовать параметры квантования P- и Q-блоков для установки порогов по выбору P- и Q-фильтра независимо.[0125] The
iQPp=cuP.qp; iQPp=cuP.qp;
iQPq=cuQ.qp; iQPq=cuQ.qp;
[0126] Следующий псевдокод задан для параметров P-блока. Обработка для Q-блока может быть сходной.[0126] The following pseudo-code is defined for the P-box parameters. The processing for the Q-block may be similar.
[0127] В еще одном примере, следующая реализация позиционно-зависимого устранения блочности может быть использована в объединении с другими раскрытыми здесь признаками.[0127] In yet another example, the following implementation of position-dependent deblocking can be used in conjunction with other features disclosed here.
[0128] Пусть numberQSide и numberPSide представляют собой длины фильтров, применяемых к текущей строке. Как введено выше, длина фильтра numberPSide и numberQSide может быть основана на размере блока. В этом примере, используются два фильтра, которые применяются, чтобы фильтровать 7 и 3 пиксела границы блока. Параметры значения позиционно-зависимого отсечения выражены посредством таблиц Tc7 и Tc3.[0128] Let numberQSide and numberPSide be the lengths of the filters applied to the current row. As introduced above, the numberPSide and numberQSide filter lengths can be based on the block size. In this example, two filters are used to filter 7 and 3 pixels of the box border. Position-dependent clipping value parameters are expressed in terms of tables Tc7 and Tc3.
[0129] В приведенном выше примере, “Src=piSrcP[-iOffSet*thePos]” иллюстрирует значение выборки перед фильтрацией устранения блочности. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” иллюстрирует применение операции фильтрации устранения блочности. “refP” или “refQ” представляет значение линейных объединений выборок на одной стороне (стороне P- или Q-блока) границы блока или отфильтрованное значение на одной стороне (стороне P- или Q-блока) границы блока. “refMiddle” представляет значение линейных объединений выборок на обеих сторонах границы блока, или отфильтрованное значение на обеих сторонах границы блока. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” иллюстрирует отсечение отфильтрованного для устранения блочности значения в диапазоне src-value и src+cvalue, которое является значением выборки перед фильтрацией плюс/минус порог cvalue, где cvalue адаптируется на основе местоположения выборки и размера блока.[0129] In the above example, "Src=piSrcP[-iOffSet*thePos]" illustrates the value of the sample before deblocking filtering. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” illustrates the application of the deblocking filtering operation. “refP” or “refQ” represents the value of the linear unions of the samples on one side (P- or Q-box side) of the box boundary, or the filtered value on one side (P- or Q-box side) of the box boundary. "refMiddle" represents the value of the linear unions of the samples on both sides of the block boundary, or the filtered value on both sides of the block boundary. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” illustrates clipping the deblocking filtered value in the range src- value and src+cvalue which is the sample value before filtering plus/minus the cvalue threshold, where the cvalue is adapted based on the sample location and block size.
[0130] Как обсуждено выше, декодер 300 видео может определять numberQSide и numberPSide на основе размера блока, к которому применяется фильтрация устранения блочности. refMiddle представляет значение после применения фильтра к выборкам на каждой стороне границы P- и Q-блока. refP и refQ представляют значения после применения фильтров к выборкам в P-блоке и Q-блоке.[0130] As discussed above,
[0131] В еще одном примере, следующая реализация позиционно-зависимого устранения блочности может быть использована в объединении с другими описанными здесь признаками.[0131] In yet another example, the following implementation of position-dependent deblocking can be used in conjunction with the other features described here.
[0132] Пусть numberQSide и numberPSide являются длиной фильтра, применяемого к текущей строке. В этом примере используются два фильтра, применяемые для фильтрации 7 и 3 пикселов границы блока. Параметры значения позиционно-зависимого отсечения выражены посредством таблиц Tc7 и Tc3.[0132] Let numberQSide and numberPSide be the length of the filter applied to the current row. This example uses two filters applied to filter 7 and 3 pixels of the box border. Position-dependent clipping value parameters are expressed by tables Tc7 and Tc3.
[0133] В приведенном выше примере, “Src=piSrcP[-iOffSet*thePos]” иллюстрирует значение выборки перед фильтрацией устранения блочности. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” иллюстрирует применение операции фильтрации устранения блочности. “refP” и “refMiddle” являются примерами линейных объединений выборок на одной стороне границы блока или отфильтрованных пикселов на одной стороне границы блока. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” иллюстрирует отсечение отфильтрованного с устранением блочности значения в диапазоне src-value и src+cvalue, которое является значением выборки перед фильтрацией плюс порог cvalue, где cvalue адаптируется на основе местоположения выборки и размера блока.[0133] In the above example, "Src=piSrcP[-iOffSet*thePos]" illustrates the value of the sample before deblocking filtering. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” illustrates the application of the deblocking filtering operation. “refP” and “refMiddle” are examples of linear unions of samples on one side of a box boundary, or filtered pixels on one side of a box boundary. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” illustrates clipping the deblocked filtered value in the range src- value and src+cvalue which is the sample value before filtering plus a threshold cvalue where the cvalue is adapted based on the sample location and block size.
[0134] Как обсуждено выше, декодер 300 видео может определять numberQSide и numberPSide на основе размера блока, к которому применяется фильтрация устранения блочности. refMiddle представляет значение после применения фильтра к выборке на каждой стороне границы P-блока и Q-блока. refP и refQ представляют значения после применения фильтров к выборкам в P-блоке и Q-блоке.[0134] As discussed above,
[0135] В еще одном примере, следующая реализация позиционно-зависимого устранения блочности может быть использована в объединении с другими описанными здесь признаками.[0135] In another example, the following implementation of position-dependent deblocking can be used in conjunction with other features described here.
[0136] Пусть numberQSide и numberPSide являются длинами фильтров, применяемых к текущей строке. В этом примере используются два фильтра, применяемые для фильтрации 7 и 3 пикселов границы блока. Параметры позиционно-зависимого значения отсечения выражены посредством таблиц Tc7 и Tc3.[0136] Let numberQSide and numberPSide be the lengths of the filters applied to the current row. This example uses two filters applied to filter out the 7 and 3 pixel borders of the box. The position dependent cutoff parameters are expressed in terms of tables Tc7 and Tc3.
[0137] В еще одном примере, следующее условие определения асимметричной фильтрации может быть использовано в объединении с другими раскрытыми здесь признаками.[0137] In yet another example, the following asymmetric filtering definition condition may be used in conjunction with other features disclosed herein.
Отключить длинный фильтр в асимметричном случае в зависимости от режимов предсказания P и Q.Disable long filter in asymmetric case depending on P and Q prediction modes.
[0138] Фиг. 6 представляет собой блок-схему, иллюстрирующую примерный кодер 200 видео, который может выполнять методики настоящего раскрытия. Фиг. 6 приведена в целях пояснения и не должна рассматриваться как ограничение методик, широко иллюстрируемых и описываемых в настоящем раскрытии. В целях пояснения, настоящее раскрытие описывает кодер 200 видео в контексте стандартов кодирования видео, таких как стандарт кодирования видео HEVC и разрабатываемый стандарт кодирования видео H.266. Однако методики настоящего раскрытия не ограничиваются этими стандартами кодирования видео и применимы в общем к кодированию и декодированию видео.[0138] FIG. 6 is a block diagram illustrating an
[0139] В примере на фиг. 6, кодер 200 видео включает в себя память 230 данных видео, модуль 202 выбора режима, модуль 204 генерации остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер 218 декодированных картинок (DPB) и модуль 220 энтропийного кодирования.[0139] In the example of FIG. 6, the
[0140] Память 230 данных видео может хранить данные видео, подлежащие кодированию компонентами кодера 200 видео. Кодер 200 видео может принимать данные видео, хранящиеся в памяти 230 данных видео, например, от источника 104 видео (фиг. 1). DPB 218 может действовать как память опорных картинок, которая хранит опорные данные видео для использования в предсказании последующих данных видео кодером 200 видео. Память 230 данных видео и DPB 218 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 230 данных видео и DPB 218 могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 230 данных видео может быть в чипе с другими компонентами кодера 200 видео, как иллюстрируется, или вне чипа относительно этих компонентов.[0140] The video data memory 230 may store video data to be encoded by the components of the
[0141] В настоящем раскрытии, ссылка на память 230 данных видео не должна интерпретироваться как ограниченная памятью внутренней для кодера 200 видео, если только она специально не описана как таковая, или памятью внешней для кодера 200 видео, если только она специально не описана как таковая. Скорее, ссылка на память 230 данных видео должна пониматься как опорная память, которая хранит данные видео, которые кодер 200 видео получает для кодирования (например, данные видео для текущего блока, который должен кодироваться). Память 106 на фиг. 1 может также обеспечивать временное хранение выходных данных из различных модулей кодера 200 видео.[0141] In this disclosure, reference to video data memory 230 is not to be interpreted as being limited to memory internal to
[0142] Различные модули на фиг. 6 проиллюстрированы, чтобы способствовать пониманию операций, выполняемых кодером 200 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их объединение. Фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое предписывает программируемым схемам работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.[0142] The various modules in FIG. 6 are illustrated to aid in understanding the operations performed by the
[0143] Кодер 200 видео может включать в себя арифметико-логические модули (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции кодера 200 видео выполняются с использованием программного обеспечения, исполняемого программируемыми схемами, память 106 (фиг. 1) может хранить инструкции (например, объектный код) программного обеспечения, которые кодер 200 видео принимает и исполняет, или другая память в кодере 200 видео (не показана) может хранить такие инструкции.[0143]
[0144] Память 230 данных видео приспособлена для хранения принятых данных видео. Кодер 200 видео может извлекать картинку данных видео из памяти 230 данных видео и предоставлять данные видео в модуль 204 генерации остатка и модуль 202 выбора режима. Данные видео в памяти 230 данных видео могут быть необработанными видеоданными, которые должны быть закодированы.[0144] The video data memory 230 is adapted to store received video data. The
[0145] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 интра-предсказания. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули для выполнения предсказания видео в соответствии с другими режимами предсказания. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитры, модуль внутриблочного копирования (который может быть частью модуля 222 оценки движения и/или модуля 224 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное.[0145] The
[0146] Модуль 202 выбора режима обычно координирует множество проходов кодирования для тестирования объединений параметров кодирования и результирующих значений скорости-искажения для таких объединений. Параметры кодирования могут включать в себя разбиение CTU на CU, режимы предсказания для CU, типы преобразования для остаточных данных CU, параметры квантования для остаточных данных CU и т.д. Модуль 202 выбора режима может, в конечном счете, выбрать объединение параметров кодирования, имеющую значения скорости-искажения, которые лучше, чем у других тестируемых объединений.[0146]
[0147] Кодер 200 видео может разбивать картинку, извлеченную из памяти 230 данных видео, в последовательность CTU и инкапсулировать одну или более CTU в пределах вырезки. Модуль 202 выбора режима может разбивать CTU картинки в соответствии с древовидной структурой, такой как структура QTBT или структура квадродерева HEVC, описанная выше. Как описано выше, кодер 200 видео может формировать одну или более CU из разбиения CTU в соответствии с древовидной структурой. Такая CU может также упоминаться, в общем, как “блок видео” или “блок”.[0147] The
[0148] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 интра-предсказания), чтобы генерировать блок предсказания для текущего блока (например, текущей CU или, в HEVC, перекрывающейся части PU и TU). Для интер-предсказания текущего блока, модуль 222 оценки движения может выполнять поиск движения для идентификации одного или более близко согласующихся опорных блоков в одной или более опорных картинках (например, в одной или более из ранее кодированных картинок, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислить значение, представляющее, насколько сходен потенциальный опорный блок с текущим блоком, например, в соответствии с суммой абсолютных разностей (SAD), суммой квадратов разностей (SSD), средней абсолютной разностью (MAD), среднеквадратичными разностями (MSD) или тому подобным. Модуль 222 оценки движения может обычно выполнять эти вычисления с использованием разностей от выборки к выборке между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, полученное в результате этих вычислений, указывая опорный блок, который наиболее близко согласуется с текущим блоком.[0148] In general,
[0149] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые определяют положения опорных блоков в опорных картинках относительно положения текущего блока в текущей картинке. Модуль 222 оценки движения может затем предоставить векторы движения в модуль 224 компенсации движения. Например, для однонаправленного интер-предсказания, модуль 222 оценки движения может обеспечить один вектор движения, тогда как для двунаправленного интер-предсказания, модуль 222 оценки движения может обеспечить два вектора движения. Модуль 224 компенсации движения может затем генерировать блок предсказания с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность дробной выборки, модуль 224 компенсации движения может интерполировать значения для блока предсказания в соответствии с одним или более интерполяционными фильтрами. Кроме того, для двунаправленного интер-предсказания, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных соответствующими векторами движения, и объединять извлеченные данные, например, путем усреднения от выборки к выборке или взвешенного усреднения.[0149] The motion estimation module 222 may generate one or more motion vectors (MVs) that define the positions of the reference blocks in the reference pictures relative to the position of the current block in the current picture. Motion estimation module 222 may then provide motion vectors to motion compensation module 224 . For example, for unidirectional inter prediction, motion estimation module 222 may provide one motion vector, while for bidirectional inter prediction, motion estimation module 222 may provide two motion vectors. Motion compensation module 224 may then generate a prediction block using the motion vectors. For example, motion compensation module 224 may extract reference block data using a motion vector. As another example, if the motion vector has fractional sampling precision, motion compensation module 224 may interpolate values for the prediction block in accordance with one or more interpolation filters. In addition, for bi-directional inter-prediction, motion compensation module 224 may extract data for two reference blocks identified by respective motion vectors and combine the extracted data, for example, by sample-to-sample averaging or weighted averaging.
[0150] В качестве другого примера, для интра-предсказания или кодирования интра-предсказания, модуль 226 интра-предсказания может генерировать блок предсказания из выборок, соседних с текущим блоком. Например, для направленных режимов, модуль 226 интра-предсказания может обычно математически объединять значения соседних выборок и заполнять этими вычисленными значениями в определенном направлении текущий блок для формирования блока предсказания. В качестве другого примера, для режима DC, модуль 226 интра-предсказания может вычислять среднее значение соседних выборок для текущего блока и генерировать блок предсказания так, чтобы включать это полученное среднее значение для каждой выборки блока предсказания.[0150] As another example, for intra-prediction or intra-prediction coding,
[0151] Модуль 202 выбора режима предоставляет блок предсказания в модуль 204 генерации остатка. Модуль 204 генерации остатка получает необработанную, некодированную версию текущего блока из памяти 230 данных видео и блок предсказания из модуля 202 выбора режима. Модуль 204 генерации остатка вычисляет от выборки к выборке разности между текущим блоком и блоком предсказания. Полученные разности от выборки к выборке определяют остаточный блок для текущего блока. В некоторых примерах, модуль 204 генерации остатка может также определять разности между значениями выборок в остаточном блоке для генерации остаточного блока с использованием дифференциальной импульсно-кодовой модуляции остатка (RDPCM). В некоторых примерах, модуль 204 генерации остатка может быть сформирован с использованием одной или нескольких схем вычитания, которые выполняют двоичное вычитание.[0151] The
[0152] В примерах, где модуль 202 выбора режима разбивает CU на PU, каждая PU может быть ассоциирована с единицей предсказания яркости и соответствующими единицами предсказания цветности. Кодер 200 видео и декодер 300 видео могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU, а размер PU может относиться к размеру единицы предсказания яркости PU. Предполагая, что размер конкретной CU равен 2N×2N, кодер 200 видео может поддерживать размеры PU 2N×2N или N×N для интра-предсказания и симметричные размеры PU 2N×2N, 2N×N, N×2N, N×N или аналогичные для интер-предсказания. Кодер 200 видео и декодер 300 видео также могут поддерживать асимметричное разбиение для размеров PU 2N×nU, 2N×nD, nL×2N и nR×2N для интер-предсказания.[0152] In examples where
[0153] В примерах, где модуль выбора режима дополнительно не разбивает CU на PU, каждая CU может быть ассоциирована с блоком кодирования яркости и соответствующими блоками кодирования цветности. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU. Кодер 200 видео и декодер 120 видео могут поддерживать размеры CU 2N×2N, 2N×N или N×2N.[0153] In examples where the mode selector does not further partition the CU into PUs, each CU may be associated with a luminance coding block and corresponding chrominance coding blocks. As stated above, the size of the CU may refer to the size of the luminance coding unit of the CU.
[0154] Для других методик кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, посредством соответствующих модулей, ассоциированных с методиками кодирования, генерирует блок предсказания для текущего кодируемого блока. В некоторых примерах, таких как кодирование в режиме палитры, модуль 202 выбора режима может не генерировать блок предсказания, а вместо этого генерировать синтаксические элементы, указывающие способ восстановления блока на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы модулю 220 энтропийного кодирования для кодирования.[0154] For other video coding techniques, such as intra-block copy mode coding, affine mode coding, and linear model (LM) mode coding, as a few examples, the
[0155] Как описано выше, модуль 204 генерации остатка принимает данные видео для текущего блока и соответствующего блока предсказания. Затем модуль 204 генерации остатка генерирует остаточный блок для текущего блока. Для генерации остаточного блока, модуль 204 генерации остатка вычисляет разности от выборки к выборке между блоком предсказания и текущим блоком.[0155] As described above, the
[0156] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для генерации блока коэффициентов преобразования (упоминаемого здесь как “блок коэффициентов преобразования”). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для формирования блока коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять множественные преобразования к остаточному блоку, например, первичное преобразование и вторичное преобразование, такое как преобразование вращения. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.[0156] The
[0157] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы сформировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования в соответствии со значением параметра квантования (QP), ассоциированным с текущим блоком. Кодер 200 видео (например, посредством модуля 202 выбора режима) может регулировать степень квантования, применяемого к блокам коэффициентов преобразования, ассоциированным с текущим блоком, путем настройки значения QP, ассоциированного с CU. Квантование может вводить потери информации, и, таким образом, квантованные коэффициенты преобразования могут иметь более низкую точность, чем исходные коэффициенты преобразования, сформированные модулем 206 обработки преобразования.[0157]
[0158] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для восстановления остаточного блока из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя, возможно, с некоторой степенью искажения), на основе восстановленного остаточного блока и блока предсказания, генерируемого модулем 202 выбора режима. Например, модуль 214 восстановления может добавлять выборки восстановленного остаточного блока к соответствующим выборкам из блока предсказания, генерируемого модулем 202 выбора режима, чтобы сформировать восстановленный блок.[0158] The inverse quantization unit 210 and the inverse
[0159] Модуль 216 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 216 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности вдоль краев CU. Например, модуль 216 фильтрации может быть выполнен с возможностью сравнивать величину изменения выборки, обусловленную фильтрацией устранения блочности, со значением отсечения, и в ответ на величину изменения выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять значение отсечения вместо величины изменения выборки, обусловленной фильтрацией устранения блочности. То есть, модуль 216 фильтрации может быть выполнен с возможностью ограничивать амплитуду величины изменения выборки. Операции модуля 216 фильтрации могут быть пропущены, в некоторых примерах.[0159] Filtering module 216 may perform one or more filtering operations on the recovered blocks. For example, filter module 216 may perform deblocking operations to reduce deblocking artifacts along the edges of the CU. For example, the filter module 216 may be configured to compare the sample change amount due to the deblocking filtering with the cutoff value, and in response to the amount of sample change due to the deblocking filtering greater than the first cutoff value, change the cutoff value instead of the change amount. sampling due to deblocking filtering. That is, the filter module 216 may be configured to limit the amplitude of the sample change amount. The operations of filter module 216 may be omitted in some examples.
[0160] Кодер 200 видео сохраняет восстановленные блоки в DPB 218. Например, в примерах, где операции модуля 216 фильтрации не выполняются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, где операции модуля 216 фильтрации выполняются, модуль 216 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать опорную картинку из DPB 218, сформированную из восстановленных (и потенциально отфильтрованных) блоков, для интер-предсказания блоков последующих кодированных картинок. Кроме того, модуль 226 интра-предсказания может использовать восстановленные блоки в DPB 218 текущей картинки для интра-предсказания других блоков в текущей картинке.[0160] The
[0161] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принятые от других функциональных компонентов кодера 200 видео. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы предсказания (например, информацию движения для интер-предсказания или информацию интра-режима для интра-предсказания) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования на синтаксических элементах, которые являются другим примером данных видео, чтобы генерировать энтропийно-закодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), операцию CABAC, операцию кодирования от переменной к переменной (V2V) длине, операцию основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования с разбиением интервалов вероятности (PIPE), операцию экспоненциального кодирования Голомба или другой тип операции энтропийного кодирования данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в режиме обхода, где синтаксические элементы не являются энтропийно кодируемыми.[0161] In general, entropy encoding module 220 may entropy encode syntax elements received from other functional components of
[0162] Кодер 200 видео может выводить битовый поток, который включает в себя энтропийно закодированные синтаксические элементы, необходимые для восстановления блоков вырезки или картинки. В частности, модуль 220 энтропийного кодирования может выводить битовый поток.[0162] The
[0163] Описанные выше операции описаны по отношению к блоку. Такое описание следует понимать как операции для блока кодирования яркости и/или блоков кодирования цветности. Как описано выше, в некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности CU. В некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности PU.[0163] The operations described above are described with respect to a block. Such description is to be understood as operations for the luminance coding block and/or chrominance coding blocks. As described above, in some examples, the luminance coding block and the chrominance coding blocks are the luminance and chrominance components of the CU. In some examples, the luma coding block and the chrominance coding blocks are the luma and chrominance components of the PU.
[0164] В некоторых примерах, операции, выполняемые в отношении блока кодирования яркости, не требуется повторять для блоков кодирования цветности. В качестве одного примера, операции для идентификации вектора движения (MV) и опорной картинки для блока кодирования яркости не требуется повторять для идентификации MV и опорной картинки для блоков цветности. Скорее, MV для блока кодирования яркости может масштабироваться для определения MV для блоков цветности, и опорная картинка может быть той же самой. В качестве другого примера, процесс интра-предсказания может быть одинаковым для блока кодирования яркости и блоков кодирования цветности.[0164] In some examples, operations performed on a luminance coding block do not need to be repeated for chrominance coding blocks. As one example, the operations for identifying a motion vector (MV) and a reference picture for a luminance coding block need not be repeated for identifying an MV and a reference picture for chrominance blocks. Rather, the MV for the luminance coding block may be scaled to determine the MV for the chrominance blocks, and the reference picture may be the same. As another example, the intra-prediction process may be the same for the luminance coding block and the chrominance coding blocks.
[0165] Фиг. 7 представляет собой блок-схему, иллюстрирующую примерный декодер 300 видео, который может выполнять методики настоящего раскрытия. Фиг. 7 обеспечена в целях пояснения и не ограничивает методики, широко иллюстрируемые и описанные в настоящем раскрытии. Для целей пояснения, настоящее раскрытие описывает декодер 300 видео в соответствии с методиками JEM и HEVC. Однако методики настоящего раскрытия могут выполняться устройствами кодирования видео, которые сконфигурированы в соответствии с другими стандартами кодирования видео.[0165] FIG. 7 is a block diagram illustrating an
[0166] В примере на фиг. 7, декодер 300 видео включает в себя память 320 буфера кодированных картинок (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных картинок (DPB). Модуль 304 обработки предсказания включает в себя модуль 316 компенсации движения и модуль 318 интра-предсказания. Модуль 304 обработки предсказания может включать в себя дополнительные модули для выполнения предсказания в соответствии с другими режимами предсказания. В качестве примеров, модуль 304 обработки предсказания может включать в себя модуль палитры, модуль внутриблочного копирования (который может образовывать часть модуля 316 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное. В других примерах, декодер 300 видео может включать в себя больше, меньше или другие функциональные компоненты.[0166] In the example of FIG. 7, the
[0167] Память 320 CPB может хранить данные видео, такие как закодированный битовый поток видео, для декодирования компонентами декодера 300 видео. Данные видео, хранящиеся в памяти 320 CPB, могут быть получены, например, из машиночитаемого носителя 110 (фиг. 1). Память 320 CPB может включать в себя CPB, который сохраняет закодированные данные видео (например, синтаксические элементы) из закодированного битового потока видео. Кроме того, память 320 CPB может хранить данные видео, отличные от синтаксических элементов закодированной картинки, такие как временные данные, представляющие выходы из различных модулей декодера 300 видео. DPB 314 обычно хранит декодированные картинки, которые декодер 300 видео может выводить и/или использовать в качестве опорных данных видео при декодировании последующих данных или картинок закодированного битового потока видео. Память 320 CPB и DPB 314 могут быть образованы любым из множества устройств памяти, таких как DRAM, включая SDRAM, MRAM, RRAM или другие типы устройств памяти. Память 320 CPB и DPB 314 могут быть предоставлены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 320 CPB может быть в чипе с другими компонентами декодера 300 видео или вне чипа относительно этих компонентов.[0167] The
[0168] Дополнительно или альтернативно, в некоторых примерах, декодер 300 видео может извлекать закодированные данные видео из памяти 120 (фиг. 1). То есть, память 120 может хранить данные, как обсуждено выше для памяти 320 CPB. Аналогично, память 120 может хранить инструкции, которые должны исполняться декодером 300 видео, когда некоторая или вся из функциональности декодера 300 видео реализована в программном обеспечении, подлежащем исполнению схемами обработки декодера 300 видео.[0168] Additionally or alternatively, in some examples,
[0169] Различные модули, показанные на фиг. 7, проиллюстрированы, чтобы способствовать пониманию операций, выполняемых декодером 300 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их объединении. Подобно фиг. 6, фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое предписывает программируемым схемам работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.[0169] The various modules shown in FIG. 7 are illustrated to assist in understanding the operations performed by the
[0170] Декодер 300 видео может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции декодера 300 видео выполняются программным обеспечением, исполняемым на программируемых схемах, однокристальная память (в чипе) или память вне чипа может хранить инструкции (например, объектный код) программного обеспечения, которые получает и исполняет декодер 300 видео.[0170] The
[0171] Модуль 302 энтропийного декодирования может получать закодированные данные видео из CPB и энтропийно декодировать данные видео для воспроизведения синтаксических элементов. Модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут генерировать декодированные данные видео на основе синтаксических элементов, извлеченных из битового потока.[0171] The entropy decoding module 302 may receive the encoded video data from the CPB and entropy decode the video data to reproduce the syntax elements. Prediction processing module 304, inverse quantization module 306, inverse
[0172] В общем, декодер 300 видео восстанавливает картинку на поблочной основе. Декодер 300 видео может выполнять операцию восстановления на каждом блоке индивидуально (где блок, который восстанавливается, т.е. декодируется, в текущее время, может называться “текущим блоком”).[0172] In general,
[0173] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, определяющие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как указание(я) параметра квантования (QP) и/или режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, для определения степени квантования и, аналогично, степени обратного квантования для применения модулем 306 обратного квантования. Модуль 306 обратного квантования может, например, выполнять побитовую операцию сдвига влево для обратного квантования квантованных коэффициентов преобразования. При этом модуль 306 обратного квантования может формировать блок коэффициентов преобразования, включающий коэффициенты преобразования.[0173] Entropy decoding module 302 can entropy decode syntax elements defining quantized transform coefficients of a block of quantized transform coefficients, as well as transform information such as quantization parameter (QP) indication(s) and/or transform mode. Inverse quantization module 306 may use the QP associated with the block of quantized transform coefficients to determine the degree of quantization and, similarly, the degree of inverse quantization to be applied by inverse quantization module 306 . Inverse quantizer 306 may, for example, perform a bitwise left shift operation to inverse quantize the quantized transform coefficients. Here, inverse quantizer 306 may generate a transform coefficient block including transform coefficients.
[0174] После того как модуль 306 обратного квантования сформировал блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применить одно или более обратных преобразований к блоку коэффициентов преобразования для генерации остаточного блока, ассоциированного с текущим блоком. Например, блок обработки 308 обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное преобразование вращения, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов преобразования.[0174] After inverse quantizer 306 has generated a transform coefficient block, inverse
[0175] Кроме того, модуль 304 обработки предсказания генерирует блок предсказания в соответствии с синтаксическими элементами информации предсказания, которые были энтропийно декодированы модулем 302 энтропийного декодирования. Например, если синтаксические элементы информации предсказания указывают, что текущий блок является интер-предсказанным, модуль 316 компенсации движения может генерировать блок предсказания. В этом случае, синтаксические элементы информации предсказания могут указывать опорную картинку в DPB 314, из которой следует извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорной картинке относительно местоположения текущего блока в текущей картинке. Модуль 316 компенсации движения может, в принципе, выполнять процесс интер-предсказания способом, который по существу аналогичен тому, который описан в отношении модуля 224 компенсации движения (фиг. 6).[0175] In addition, the prediction processing unit 304 generates a prediction block in accordance with the prediction information syntax elements that have been entropy decoded by the entropy decoding unit 302 . For example, if the prediction information syntax elements indicate that the current block is inter-predicted, motion compensation module 316 may generate a prediction block. In this case, the prediction information syntax elements may indicate a reference picture in the
[0176] В качестве другого примера, если синтаксические элементы информации преобразования указывают, что текущий блок является интра-предсказанным, модуль 318 интра-предсказания может генерировать блок предсказания в соответствии с режимом интра-предсказания, указанным синтаксическими элементами информации преобразования. Вновь, модуль 318 интра-предсказания может, в принципе, выполнять процесс интра-предсказания способом, по существу сходным с тем, который описан в отношении модуля 226 интра-предсказания (фиг. 6). Модуль 318 интра-предсказания может извлекать данные соседних выборок для текущего блока из DPB 314.[0176] As another example, if the transformation syntax elements indicate that the current block is intra-predicted,
[0177] Модуль 310 восстановления может восстанавливать текущий блок с использованием блока преобразования и остаточного блока. Например, модуль 310 восстановления может добавлять выборки остаточного блока к соответствующим выборкам блока предсказания, чтобы восстановить текущий блок.[0177]
[0178] Модуль 312 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 312 фильтрации может выполнять операции устранения блочности, чтобы снизить артефакты блочности вдоль краев восстановленных блоков. Например, модуль 312 фильтрации может быть выполнен с возможностью сравнивать величину изменения для выборки, обусловленную фильтрацией устранения блочности, со значением отсечения, и в ответ на величину изменения для выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять значение посредством значения отсечения, вместо величины изменения для выборки, обусловленной фильтрацией устранения блочности. То есть, модуль 312 фильтрации может быть выполнен с возможностью ограничивать амплитуду величины изменения для выборки. Операции модуля 312 фильтрации не обязательно должны выполняться во всех примерах.[0178]
[0179] Декодер 300 видео может сохранять восстановленные блоки в DPB 314. Например, в случаях, где операции модуля 312 фильтрации не требуются, модуль 310 восстановления может сохранять восстановленные блоки в DPB 314. В примерах, где операции модуля 312 фильтрации необходимы, модуль 312 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 314. Как обсуждено выше, DPB 314 может предоставлять опорную информацию, такую как выборки текущей картинки для интра-предсказания и ранее декодированные картинки для последующей компенсации движения, на модуль 304 обработки предсказания. Более того, декодер 300 видео может выводить декодированные картинки (например, декодированное видео) из DPB 314 для последующего представления на устройстве отображения, таком как устройство 118 отображения на фиг. 1.[0179] The
[0180] Фиг. 8 показывает примерную реализацию модуля 312 фильтрации согласно фиг. 7. Модуль 216 фильтрации на фиг. 6 может быть реализован тем же самым или подобным образом. Модули 216 и 312 фильтрации могут выполнять методики настоящего раскрытия, возможно во взаимосвязи с другими компонентами кодера 200 видео или декодера 300 видео. В примере на фиг. 8, модуль 312 фильтрации включает в себя фильтр 342 устранения блочности, фильтр 344 SAO и фильтр 346 ALF/GALF. Фильтр 344 SAO может, например, быть выполнен с возможностью определять значения смещения для выборок блока. ALF/GALF 346 может аналогично фильтровать блоки данных видео с использованием адаптивного контурного фильтра и/или геометрической адаптивной контурной фильтрации.[0180] FIG. 8 shows an exemplary implementation of the
[0181] Модуль 312 фильтрации может включать в себя меньше фильтров и/или может включать в себя дополнительные фильтры. Дополнительно, конкретные фильтры, показанные на фиг. 8, могут быть реализованы в другом порядке. Другие контурные фильтры (либо в контуре кодирования, либо после контура кодирования) могут также использоваться, чтобы сглаживать пиксельные переходы или иным образом улучшать качество видео. Отфильтрованные восстановленные блоки видео, выведенные модулем 312 фильтрации, могут быть сохранены в DPB 314, который хранит опорные картинки, используемые для последующей компенсации движения. DPB 314 может быть частью или отдельным от дополнительной памяти, которая хранит декодированное видео для последующего представления на устройстве отображения, таком как устройство 118 отображения на фиг. 1.[0181]
[0182] Декодер 300 видео, например, фильтр устранения блочности 342 модуля 312 фильтрации, может быть выполнен с возможностью получать первый восстановленный блок данных видео и применять фильтрацию устранения блочности к первому восстановленному блоку в соответствии с любой методикой или объединения методик, описанных в настоящем раскрытии. Чтобы получить первый восстановленный блок данных видео, декодер 300 видео может быть выполнен с возможностью определять блок предсказания данных видео и суммировать остаточный блок данных видео с блоком предсказания данных видео. Для применения фильтрации устранения блочности к первому восстановленному блоку, декодер 300 видео может применять фильтрацию устранения блочности к выборкам, расположенным на границе первого восстановленного блока данных видео и второго восстановленного блока данных видео. Чтобы применить фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео определяет интенсивность фильтра для фильтрации устранения блочности.[0182] The
[0183] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео может выбрать фильтр для фильтрации устранения блочности. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео может выбрать фильтр на основе длины блока, ортогонального границе, подлежащей фильтрации. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео выбирает фильтр на основе длины блока, выровненного с границей, подлежащей фильтрации. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео может выбрать фильтр из множества фильтров устранения блочности с различными длинами. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео выбирает фильтр из множества фильтров устранения блочности с различными поддержками фильтров.[0183] In order to apply the deblocking filtering to the first reconstructed block, the
[0184] Декодер 300 видео может быть выполнен с возможностью определять доверительный коэффициент и определять величину изменения выборки на основе доверительного коэффициента. Декодер 300 видео может применять фильтрацию устранения блочности к первому восстановленному блоку путем изменения выборки первого восстановленного блока на величину изменения выборки. Декодер 300 видео может определять величину изменения выборки на основе доверительного коэффициента путем ограничения величины изменения выборки до диапазона значений. Доверительный коэффициент может, например, представлять собой интервал.[0184] The
[0185] Декодер 300 видео может быть выполнен с возможностью определять второй блок предсказания данных видео; добавлять второй остаточный блок данных видео ко второму блоку предсказания данных видео, чтобы определить второй восстановленный блок данных видео, который является смежным с первым восстановленным блоком; определять первый параметр квантования для остаточного блока; определять второй параметр квантования для второго остаточного блока; применять фильтрацию устранения блочности к первому восстановленному блоку на основе первого параметра квантования; и применять фильтрацию устранения блочности ко второму восстановленному блоку на основе второго параметра квантования.[0185] The
[0186] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку на основе первого параметра квантования, декодер 300 видео может определять величину изменения выборки для выборки первого восстановленного блока на основе первого параметра квантования, и применять фильтрацию устранения блочности ко второму восстановленному блоку на основе второго параметра квантования путем определения величины изменения выборки для выборки второго восстановленного блока на основе второго параметра квантования. Чтобы определить величину изменения выборки для выборки первого восстановленного блока на основе первого параметра квантования, декодер 300 видео может ограничить величину изменения выборки для выборки первого восстановленного блока до первого диапазона значений и определить величину изменения выборки для выборки второго восстановленного блока на основе второго параметра квантования путем ограничения величины изменения выборки для выборки второго восстановленного блока до второго диапазона значений, который отличается от первого диапазона значений.[0186] To apply deblocking filtering to the first reconstructed block based on the first quantization parameter, the
[0187] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео может выбрать параметры фильтра устранения блочности для фильтрации устранения блочности. Параметры фильтрации устранения блочности могут, например, включать в себя одно или более из типа фильтра, длины фильтра, параметров ограничения или пространственного шага пропуска выборки. Чтобы выбрать параметры фильтра устранения блочности для фильтрации устранения блочности, декодер 300 видео может выбрать параметры фильтра устранения блочности на основе одного или более свойств преобразования или коэффициентов преобразования для остаточного блока.[0187] To apply the deblocking filtering to the first reconstructed block, the
[0188] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео может определять значения для недоступных выборок и применять фильтрация устранения блочности с использованием определенных значений. Чтобы определить значения для недоступных выборок, декодер 300 видео может выполнять процесс экстраполяции и/или процесс заполнения. Декодер 300 видео может определять недоступные выборки как недоступные на основе блочной характеристики первого восстановленного блока.[0188] To apply deblocking filtering to the first reconstructed block,
[0189] Декодер 300 видео, например, фильтр 342 устранения блочности модуля 312 фильтрации, может быть выполнен с возможностью получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первую выборку с первым значением; применять фильтрацию устранения блочности к первому восстановленному блоку, чтобы создать отфильтрованный блок с устранением блочности; определять первое значение отсечения для первой выборки на основе местоположения первой выборки относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнивать первое значение отсечения с величиной изменения первой выборки, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первой выборки; и выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первая выборка имеет первое отфильтрованное значение.[0189] The
[0190] Первое отфильтрованное значение может быть равно первому значению плюс первое значение отсечения или может быть равно первому значению минус первое значение отсечения. Декодер 300 видео может определять первое значение отсечения для первой выборки дополнительно на основе режима фильтрации устранения блочности для первого восстановленного блока.[0190] The first filtered value may be equal to the first value plus the first cutoff value, or may be equal to the first value minus the first cutoff value. The
[0191] Первый восстановленный блок может включать в себя вторую выборку со вторым значением, и декодер 300 видео может определять второе значение отсечения для второй выборки на основе местоположения второй выборки относительно границы первого восстановленного блока и на основе размера первого восстановленного блока и в ответ на величину изменения второй выборки, обусловленную фильтрацией устранения блочности, меньшую, чем второе значение отсечения, изменять второе значение величиной изменения второй выборки, чтобы определять второе отфильтрованное значение для второй выборки. В таком примере, в отфильтрованном с устранением блочности блоке вторая выборка имеет второе отфильтрованное значение.[0191] The first reconstructed block may include a second sample with a second value, and the
[0192] Если расстояние между первой выборкой и границей первого восстановленного блока равно расстоянию между второй выборкой и границей первого восстановленного блока, то декодер 300 видео может установить первое значение отсечения равным второму значению отсечения для второй выборки. Если расстояние между первой выборкой и границей первого восстановленного блока отличается от расстояния между второй выборкой и границей первого восстановленного блока, то декодер 300 видео может установить первое значение отсечения отличающимся от второго значения отсечения.[0192] If the distance between the first sample and the boundary of the first reconstructed block is equal to the distance between the second sample and the boundary of the first reconstructed block, then the
[0193] На основе размера первого восстановленного блока, декодер 300 видео может определить, что фильтр устранения блочности применяется только к выборкам, которые на шесть или менее выборок уделены от границы первого восстановленного блока. На основе размера первого восстановленного блока, декодер 300 видео может определить, что фильтр устранения блочности применяется к выборкам, которые на две или менее выборок удалены от границы первого восстановленного блока.[0193] Based on the size of the first reconstructed block,
[0194] Первое значение отсечения может уменьшаться с уменьшением расстояния от границы первого восстановленного блока. Например, в ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка является смежной с границей первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 6. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на одну выборку удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 5. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на две выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 4.[0194] The first clipping value may decrease as the distance from the boundary of the first reconstructed block decreases. For example, in response to determining that the deblocking filter is applied to samples within 6 rows or columns of the first reconstructed block boundary, and in response to the first sample being adjacent to the first reconstructed block boundary,
[0195] В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на три выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 3. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на четыре выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 2. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то что первая выборка на пять выборок удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 1.[0195] In response to determining that the deblocking filter is applied to samples within 6 rows or columns of the first reconstructed block boundary, and in response to the first sample being three samples away from the first reconstructed block boundary,
[0196] В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка является смежной с границей первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 6. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 2 строк или столбцов границы первого восстановленного блока, и ответ на то, что первая выборка на одну выборку удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 4. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на две выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить что первое значение отсечения равно 2.[0196] In response to determining that the deblocking filter is applied to samples within 2 rows or columns of the first reconstructed block boundary, and in response to the first sample being adjacent to the first reconstructed block boundary,
[0197] Декодер 300 видео может также быть выполнен с возможностью получать второй восстановленный блок данных видео, причем второй восстановленный блок включает в себя вторую выборку со вторым значением, причем второй восстановленный блок совместно использует границу с первым восстановленным блоком, и причем первый восстановленный блок и второй восстановленный блок имеют разные размеры; применять фильтрацию устранения блочности ко второму восстановленному блоку, чтобы определять второй отфильтрованный с устранением блочности блок; определять второе значение отсечения для второй выборки на основе местоположения второй выборки относительно границы второго восстановленного блока и на основе размера второго восстановленного блока; в ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, большую, чем второе значение отсечения, изменять первое значение посредством второго значения отсечения для определения второго отфильтрованного значения для второй выборки; и выводить второй отфильтрованный с устранением блочности блок данных видео, причем, во втором отфильтрованном с устранением блочности блоке вторая выборка имеет второе отфильтрованное значение. Декодер 300 видео может применять фильтрацию устранения блочности к первому восстановленному блоку для определения первого отфильтрованного с устранением блочности блока, которая содержит фильтрацию выборок в первом восстановленном блоке с помощью первого фильтра первой длины, и применять фильтрацию устранения блочности ко второму восстановленному блоку для определения второго отфильтрованного с устранением блочности блока, которая содержит фильтрацию выборок во втором восстановленном блоке с помощью второго фильтра второй длины, которая отличается от первой длины.[0197]
[0198] На фиг. 9 представлена блок-схема последовательности операций, иллюстрирующая примерный способ для кодирования текущего блока. Текущий блок может включать в себя текущую CU. Хотя описание приведено относительно кодера 200 видео (фиг. 1 и 6), следует понимать, что другие устройства могут быть выполнены с возможностью выполнения способа, аналогичного показанному на фиг. 9.[0198] FIG. 9 is a flowchart illustrating an exemplary method for encoding a current block. The current block may include the current CU. While the description has been made with respect to the video encoder 200 (FIGS. 1 and 6), it should be understood that other devices may be configured to perform a method similar to that shown in FIGS. 9.
[0199] В этом примере, кодер 200 видео первоначально предсказывает текущий блок (350). Например, кодер 200 видео может сформировать блок предсказания для текущего блока. Кодер 200 видео может затем вычислить остаточный блок для текущего блока (352). Чтобы вычислить остаточный блок, кодер 200 видео может вычислить разность между исходным, некодированным блоком и блоком предсказания для текущего блока. Кодер 200 видео может затем преобразовывать и квантовать коэффициенты остаточного блока (354). Затем кодер 200 видео может сканировать квантованные коэффициенты преобразования остаточного блока (356). Во время сканирования или после сканирования, кодер 200 видео может энтропийно кодировать коэффициенты (358). Кодер 200 видео может кодировать коэффициенты с использованием CAVLC или CABAC. Кодер 200 видео может затем вывести энтропийно кодированные данные для коэффициентов блока (360).[0199] In this example,
[0200] На фиг. 10 представлена блок-схема последовательности операций, иллюстрирующая примерный способ для декодирования текущего блока. Текущий блок может содержать текущую CU. Хотя описание приведено относительно декодера 300 видео (фиг. 1 и 7), следует понимать, что другие устройства могут быть выполнены с возможностью выполнения способа, аналогичного показанному на фиг. 10.[0200] In FIG. 10 is a flowchart illustrating an exemplary method for decoding the current block. The current block may contain the current CU. Although the description has been made with respect to the video decoder 300 (FIGS. 1 and 7), it should be understood that other devices may be configured to perform a method similar to that shown in FIGS. 10.
[0201] Декодер 300 видео может принять энтропийно кодированные данные для текущего блока, такие как энтропийно кодированная информация предсказания и энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (370). Декодер 300 видео может энтропийно декодировать энтропийно кодированные данные, чтобы определить информацию предсказания для текущего блока и восстановить коэффициенты остаточного блока (372). Декодер 300 видео может предсказывать текущий блок (374), например, с использованием режима интра- или интер-предсказания, как указывается информацией предсказания для текущего блока, чтобы вычислить блок предсказания для текущего блока. Декодер 300 видео может затем обратно сканировать восстановленные коэффициенты (376), чтобы создать блок квантованных коэффициентов преобразования. Декодер 300 видео может затем обратно квантовать и обратно преобразовать коэффициенты, чтобы сформировать остаточный блок (378). Декодер 300 видео может, в конечном счете, декодировать текущий блок путем объединения блока предсказания и остаточного блока (380). После объединения блока предсказания и остаточного блока для генерации восстановленного блока, декодер 300 видео может применить один или более фильтров (например, устранения блочности, SAO и/или ALF/GALF) к нефильтрованному восстановленному блоку для генерации отфильтрованного восстановленного блока (382).[0201] The
[0202] На фиг. 11 показана блок-схема последовательности операций, иллюстрирующая примерную методику декодирования видео, описанный в настоящем раскрытии. Методики согласно фиг. 11 будут описаны со ссылкой на типовой декодер видео, такой как, но без ограничения, декодер 300 видео. В некоторых случаях, методики согласно фиг. 11 могут выполняться кодером видео, таким как кодер 200 видео, как часть процесса кодирования видео, и в этом случае типовой декодер видео соответствует контуру декодирования (например, модулю 210 обратного квантования, модулю 212 обработки обратного преобразования, модулю 214 восстановления и модулю 216 фильтрации) кодера 200 видео.[0202] In FIG. 11 is a flowchart illustrating an exemplary video decoding technique described in the present disclosure. The procedures according to FIG. 11 will be described with reference to an exemplary video decoder such as, but not limited to,
[0203] В примере согласно фиг. 11, декодер видео получает первый восстановленный блок данных видео, который включает в себя первую выборку с первым значением (400). Декодер видео применяет фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока (402). Декодер видео определяет первое значение отсечения для первой выборки на основе местоположения первой выборки относительно границы первого восстановленного блока и на основе размера первого восстановленного блока (404). Декодер 300 видео сравнивает первое значение отсечения с величиной изменения первой выборки, обусловленной фильтрацией устранения блочности (406). В ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения (408, ДА), декодер видео изменяет первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первой выборки (410). В ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, не большую, чем первое значение отсечения (408, НЕТ), декодер видео изменяет первое значение величиной изменения первой выборки, обусловленной фильтрацией устранения блочности (412). Декодер видео может, например, сохранять первое отфильтрованное значение равным отфильтрованному значению, определенному фильтрацией устранения блочности, а не устанавливать первое отфильтрованное значение равным первому значению плюс или минус значение отсечения.[0203] In the example of FIG. 11, the video decoder receives the first recovered video data block, which includes the first sample with the first value (400). The video decoder applies deblocking filtering to the first reconstructed block to create a deblocking filtered block (402). The video decoder determines the first clipping value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block (404). The
[0204] Следует иметь в виду, что, в зависимости от примера, некоторые действия или события любого из описанных здесь методик могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные действия или события необходимы для практической реализации методик). Кроме того, в некоторых примерах, действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или с помощью множества процессоров, а не последовательно.[0204] It should be borne in mind that, depending on the example, some actions or events of any of the techniques described here may be performed in a different sequence, may be added, combined, or excluded altogether (for example, not all of the described actions or events are necessary for practical implementation methods). In addition, in some examples, actions or events may be performed simultaneously, such as through multi-threading, interrupt handling, or multiple processors, rather than sequentially.
[0205] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любом их объединении. При реализации в программном обеспечении, функции могут сохраняться или передаваться как одна или более инструкций или код на машиночитаемом носителе и исполняться аппаратным модулем обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители, которые соответствуют осязаемому носителю, такому как носитель хранения данных, или коммуникационной среде, включающей в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) осязаемым машиночитаемым носителям хранения данных, которые являются долговременными, или (2) коммуникационному носителю (среде), такому как сигнал или несущая волна. Носителями хранения данных могут быть любые доступные носители, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.[0205] In one or more examples, the functions described 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 module. Computer-readable media may include computer-readable media that corresponds to a tangible medium, such as a storage medium, or a communication medium, including any medium that facilitates the transfer of a computer program from one place to another, such as in accordance with a communication protocol. Thus, computer-readable media can typically correspond to (1) tangible computer-readable storage media that is durable, or (2) a communication medium such as a signal or carrier wave. Storage media can be any available media 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 techniques described in this disclosure. The computer program product may include a computer readable medium.
[0206] В качестве примера, а не ограничения, такие машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другие устройства хранения на оптических дисках, устройства хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может быть использован для хранения желательного программного кода в форме инструкций или структур данных и к которому может получить доступ компьютер. Кроме того, любое соединение надлежащим образом определяется как машиночитаемый носитель. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасное излучение, радио и микроволны, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радио и микроволны, включаются в определение носителя. Однако следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на долговременные, осязаемые носители хранения. Магнитный диск (disk) и оптический диск (disc), как используется в настоящем документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и Blu-ray диск, где магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров. Объединения вышеперечисленного также должны быть включены в объем машиночитаемых носителей.[0206] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is properly 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 microwaves, 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. However, it should be understood that computer-readable storage media and storage media do not include connections, carrier waves, signals, or other temporary media, but are instead directed to durable, tangible storage media. The magnetic disc (disk) and optical disc (disc) as used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disc, and Blu-ray disc, where magnetic discs usually reproduce data magnetically, while optical discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer readable media.
[0207] Инструкции могут исполняться посредством одного или более процессоров, таких как один или более DSP, микропроцессоров общего назначения, ASIC, FPGA или других эквивалентных интегральных схем или дискретных логических схем. Соответственно, термин “процессор”, как используется здесь, может относиться к любой из вышеперечисленных структур или любой другой структуре, подходящей для реализации методик, описанных здесь. Кроме того, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или программных модулях, сконфигурированных для кодирования и декодирования или встроенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.[0207] The instructions may be executed by one or more processors, such as one or more DSPs, general purpose microprocessors, ASICs, FPGAs, or other equivalent integrated circuits or discrete logic circuits. Accordingly, the term "processor", as used here, may refer to any of the above structures or any other structure suitable for implementing the techniques described here. In addition, 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 an integrated codec. In addition, the techniques may be fully implemented in one or more circuits or logic elements.
[0208] Методики настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводный телефон, интегральную схему (IC) или набор интегральных схем (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии с акцентом на функциональных аспектах устройств, сконфигурированных для выполнения раскрытых методик, но не обязательно требующих реализации различными аппаратными модулями. Скорее, как описано выше, различные модули могут быть объединены в аппаратный модуль кодека или обеспечены набором взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или микропрограммным обеспечением.[0208] 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 stack of integrated circuits (eg, a chipset). Various components, modules, or blocks are described in this disclosure with emphasis on the functional aspects of devices configured to perform the disclosed techniques, but not necessarily requiring implementation by different hardware modules. Rather, as described above, various modules may be combined into a codec hardware module or provided with a set of cooperating hardware modules, including one or more processors, as described above, in association with suitable software and/or firmware.
[0209] Были описаны различные примеры. Эти и другие примеры входят в объем следующей формулы изобретения.[0209] Various examples have been described. These and other examples are within the scope of the following claims.
Claims (90)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/723,408 | 2018-08-27 | ||
US62/742,331 | 2018-10-06 | ||
US16/551,388 | 2019-08-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2021104457A RU2021104457A (en) | 2022-09-29 |
RU2795695C2 true RU2795695C2 (en) | 2023-05-11 |
Family
ID=
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2580056C2 (en) * | 2010-05-18 | 2016-04-10 | Сони Корпорейшн | Image processing device and method |
WO2018066241A1 (en) * | 2016-10-03 | 2018-04-12 | Sharp Kabushiki Kaisha | Systems and methods for applying deblocking filters to reconstructed video data |
RU2017102891A (en) * | 2010-04-13 | 2018-08-02 | Самсунг Электроникс Ко., Лтд. | VIDEO ENCODING METHOD AND VIDEO ENCODING METHOD AND VIDEO DECODING METHOD AND VIDEO DECODING DEVICE, WHICH PERFORM A RELEASE FILTERING ON THE BASIS OF TREE CODING UNITS |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2017102891A (en) * | 2010-04-13 | 2018-08-02 | Самсунг Электроникс Ко., Лтд. | VIDEO ENCODING METHOD AND VIDEO ENCODING METHOD AND VIDEO DECODING METHOD AND VIDEO DECODING DEVICE, WHICH PERFORM A RELEASE FILTERING ON THE BASIS OF TREE CODING UNITS |
RU2580056C2 (en) * | 2010-05-18 | 2016-04-10 | Сони Корпорейшн | Image processing device and method |
WO2018066241A1 (en) * | 2016-10-03 | 2018-04-12 | Sharp Kabushiki Kaisha | Systems and methods for applying deblocking filters to reconstructed video data |
Non-Patent Citations (1)
Title |
---|
D. RUSANOVSKYY et al, CE2: Tests on long deblocking (CE2.2.1.4), Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K0334r1, 11th Meeting: Ljubljana, 10-18 July 2018. JIE DONG et al, Multi-Dimensional Filter Selection for Deblocking, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-J0056-v2, 10th Meeting: San Diego, 10-20 Apr. 2018. ANDREY NORKIN, CE1: Reduction of block artifacts in HEVC, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JCTVC-K0186, 11th Meeting: Shanghai, 10-19 Oct. 2012. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10694181B2 (en) | Bilateral filters in video coding with reduced complexity | |
US10834396B2 (en) | Bilateral filter for predicted video data | |
US11677984B2 (en) | Low-frequency non-separable transform (LFNST) signaling | |
US11284114B2 (en) | Adaptive loop filter set index signaling | |
US11412262B2 (en) | Nonlinear extensions of adaptive loop filtering for video coding | |
US20200296389A1 (en) | Video coding in triangular prediction unit mode using different chroma formats | |
US11140418B2 (en) | Block-based adaptive loop filter design and signaling | |
US11310519B2 (en) | Deblocking of subblock boundaries for affine motion compensated coding | |
EP3864843A1 (en) | Quantization artifact suppression by transform domain filtering in video encoding/decoding | |
CN112602323B (en) | Deblocking filter for video coding and processing | |
US20220215593A1 (en) | Multiple neural network models for filtering during video coding | |
US11134258B2 (en) | Predictive coefficient coding | |
US11917141B2 (en) | High-level deblocking filter (DBF), adaptive loop filter (ALF) and sample adaptive offset (SAO) control, and adaptation parameter set (APS) number constraint in video coding | |
TWI770546B (en) | Deblock filtering for video coding | |
RU2795695C2 (en) | Deblocking filter for video encoding and processing | |
US20240015312A1 (en) | Neural network based filtering process for multiple color components in video coding | |
US20190373292A1 (en) | In-loop bilateral filter type decision based on block information |