RU2781233C2 - Device and filtration method in video encoding - Google Patents

Device and filtration method in video encoding Download PDF

Info

Publication number
RU2781233C2
RU2781233C2 RU2021101847A RU2021101847A RU2781233C2 RU 2781233 C2 RU2781233 C2 RU 2781233C2 RU 2021101847 A RU2021101847 A RU 2021101847A RU 2021101847 A RU2021101847 A RU 2021101847A RU 2781233 C2 RU2781233 C2 RU 2781233C2
Authority
RU
Russia
Prior art keywords
block
filtered
filter
pixels
spectrum
Prior art date
Application number
RU2021101847A
Other languages
Russian (ru)
Other versions
RU2021101847A (en
Inventor
Сергей Юрьевич ИКОНИН
Роман Игоревич ЧЕРНЯК
Цзянле ЧЕН
Дмитрий КУРЫШЕВ
Виктор Алексеевич СТЕПИН
Original Assignee
Хуавэй Текнолоджиз Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хуавэй Текнолоджиз Ко., Лтд. filed Critical Хуавэй Текнолоджиз Ко., Лтд.
Publication of RU2021101847A publication Critical patent/RU2021101847A/en
Application granted granted Critical
Publication of RU2781233C2 publication Critical patent/RU2781233C2/en

Links

Images

Abstract

FIELD: video encoding.
SUBSTANCE: invention relates to the field of video encoding, more specifically to a filter for video encoding and a method for filtration of restored video-frames. A filter for video encoding is proposed, which is made with the possibility of processing of a block for the formation of a filtered block, wherein the block contains a set of pixels. The filter includes one or several processors made with the possibility of: scanning of the current pixel of the block and adjacent pixels of the current pixel in accordance with a preset scanning pattern; obtaining spectrum components by means of conversion to the current pixel and its adjacent pixels; obtaining filtered spectrum components based on a filtration parameter and spectrum components; obtaining filtered pixels by means of reverse conversion for filtered spectrum components; and formation of a filtered block based on filtered pixels.
EFFECT: increase in the efficiency of video encoding/decoding.
33 cl, 26 dwg, 4 tbl

Description

Область техники, к которой относится изобретениеThe field of technology to which the invention belongs

[0001] В целом настоящее изобретение относится к области кодирования видео. Более конкретно, настоящее изобретение относится к фильтру для кодирования видео, способу фильтрации восстановленных видеокадров и способу фильтрации видеоблоков, а также к устройству кодирования и устройству декодирования, содержащему такой фильтр для кодирования видео.[0001] In General, the present invention relates to the field of video coding. More specifically, the present invention relates to a video encoding filter, a reconstructed video frame filtering method, and a video block filtering method, as well as an encoding apparatus and a decoding apparatus comprising such a video encoding filter.

Уровень техникиState of the art

[0002] Цифровое видео широко используется с момента появления DVD-дисков. Перед передачей видео кодируется и передается с использованием среды передачи. Зритель получает видео и использует устройство просмотра для декодирования и отображения видео. С годами качество видео улучшилось, например, за счет более высоких разрешений, глубины цвета и частоты кадров. Это привело к увеличению потоков данных, которые в настоящее время обычно передаются через Интернет и сети мобильной связи.[0002] Digital video has been widely used since the advent of DVDs. Before transmission, the video is encoded and transmitted using a transmission medium. The viewer receives the video and uses the viewer to decode and display the video. Video quality has improved over the years, for example with higher resolutions, color depth and frame rates. This has led to an increase in the data flows that are now commonly transmitted over the Internet and mobile networks.

[0003] Однако видео с более высоким разрешением обычно требуют большей пропускной способности, поскольку они содержат больше информации. Чтобы снизить требования к пропускной способности, были введены стандарты кодирования видео, задействующие сжатие видео. Когда видео кодируется, требования к пропускной способности (или соответствующие требования к памяти в случае хранения) снижаются. Часто это снижение происходит за счет качества. Таким образом, стандарты кодирования видео пытаются найти баланс между требованиями к пропускной способности и качеством.[0003] However, higher resolution videos usually require more bandwidth because they contain more information. To reduce bandwidth requirements, video coding standards have been introduced that involve video compression. When video is encoded, bandwidth requirements (or corresponding memory requirements in the case of storage) are reduced. Often this decline comes at the expense of quality. Thus, video coding standards try to strike a balance between bandwidth requirements and quality.

[0004] Поскольку существует постоянная потребность в улучшении качества и снижении требований к пропускной способности, постоянно ведется поиск решений, которые поддерживают качество с уменьшенными требованиями к пропускной способности или улучшают качество при сохранении требований к пропускной способности. Кроме того, иногда могут быть приемлемы компромиссы. Например, может быть приемлемым увеличить требования к пропускной способности, если улучшение качества значительно.[0004] Since there is a constant need to improve quality and reduce bandwidth requirements, solutions are constantly being sought that maintain quality with reduced bandwidth requirements or improve quality while maintaining bandwidth requirements. Also, compromises can sometimes be acceptable. For example, it may be acceptable to increase the bandwidth requirements if the quality improvement is significant.

[0005] Высокоэффективное кодирование видео (HEVC - High Efficiency Video Coding) является примером стандарта кодирования видео, который обычно известен специалистам в данной области техники. В HEVC для разделения единицы кодирования (CU - coding unit) на единицы предсказания (PU - prediction unit) или единицы преобразования (TU - transform unit). Стандарт следующего поколения универсального кодирования видео (VVC - Versatile Video Coding) - это самый последний совместный видеопроект организаций по стандартизации Экспертной группы по вопросам кодирования видео (VCEG - Video Coding Experts Group) ITU-T и Экспертной группы по вопросам движущегося изображения (MPEG - Moving Picture Experts Group) ISO/IEC, работающих вместе в партнерстве, известном как Объединенная группа исследования видео (JVET - Joint Video Exploration Team). VVC также называют ITU-T H.266/ стандартом кодирования видео следующего поколения (NGVC - Next Generation Video Coding). В VVC он удаляет концепции типов множественного разделения, т.е. удаляет разделение концепций CU, PU и TU, за исключением случаев, когда это необходимо для CU, размер которых слишком велик для максимальной длины преобразования, и поддерживает большую гибкость для форм разделения CU.[0005] High Efficiency Video Coding (HEVC) is an example of a video coding standard that is commonly known to those skilled in the art. In HEVC, to separate the coding unit (CU - coding unit) into prediction units (PU - prediction unit) or transformation units (TU - transform unit). The Next Generation Versatile Video Coding (VVC) standard is the latest joint video project of the ITU-T Video Coding Experts Group (VCEG) and the Moving Picture Experts Group (MPEG) Picture Experts Group) ISO/IEC working together in a partnership known as the Joint Video Exploration Team (JVET). VVC is also referred to as ITU-T H.266/Next Generation Video Coding (NGVC). In VVC, it removes the concepts of multiple partition types, i.e. removes the separation of the concepts of CU, PU, and TU, except when necessary for CUs that are too large for the maximum transform length, and maintains more flexibility for the forms of CU separation.

[0006] Фильтрация изображений часто используется для выделения определенных характеристик изображения или для улучшения объективного или воспринимаемого качества отфильтрованного изображения. Фильтрация изображений сталкивается с различными источниками шума. Соответственно, были предложены и используются различные подходы к повышению качества. Например, в способе адаптивного контурного фильтра (ALF - Adaptive Loop Filter) каждый восстановленный кадр делится на набор небольших блоков (суперпикселей), и каждый блок фильтруется посредством адаптивного контурного фильтра в том смысле, что каждый пиксель отфильтрованного восстановленного кадра является взвешенной суммой нескольких пикселей в связанной области пикселя из восстановленного кадра вокруг положения формируемого отфильтрованного пикселя. Весовые коэффициенты (также называемые коэффициентами фильтра) обладают свойством центральной симметрии и передаются от кодера на сторону декодера. Края часто имеют большой размер, и поэтому количество передаваемых весовых коэффициентов может стать слишком большим для эффективной обработки. Большое количество весовых коэффициентов требует комплексной оптимизации скорости и искажения (RDO - rate-distortion optimization) на стороне кодера для уменьшения количества весовых коэффициентов для передачи. На стороне декодера ALF требует реализации универсальных умножителей, и эти умножители должны перезагружаться для каждого блока пикселей 2×2.[0006] Image filtering is often used to highlight certain characteristics of an image or to improve the objective or perceived quality of a filtered image. Image filtering encounters various sources of noise. Accordingly, various approaches to quality improvement have been proposed and are being used. For example, in the Adaptive Loop Filter (ALF) method, each reconstructed frame is divided into a set of small blocks (superpixels), and each block is filtered by an adaptive loop filter in the sense that each pixel of the filtered reconstructed frame is a weighted sum of several pixels in the associated pixel area from the reconstructed frame around the position of the generated filtered pixel. The weight coefficients (also called filter coefficients) have the property of central symmetry and are transmitted from the encoder to the decoder side. Edges are often large and therefore the number of weights to be transferred can become too large for efficient processing. A large number of weights requires complex rate-distortion optimization (RDO) on the encoder side to reduce the number of weights for transmission. On the decoder side, ALF requires the implementation of universal multipliers, and these multipliers must be reset for every 2x2 pixel block.

[0007] Таким образом, существует потребность в улучшенном фильтре и способе, позволяющем улучшить качество предсказания с низкой сложностью и, таким образом, повысить эффективность кодирования видео.[0007] Thus, there is a need for an improved filter and method that can improve the quality of low complexity prediction and thus improve video coding efficiency.

Сущность изобретенияThe essence of the invention

[0008] Задачей изобретения является создание улучшенного фильтра и способа, позволяющего повысить эффективность фильтрации при ограниченной сложности и, таким образом, повысить эффективность кодирования видео.[0008] It is an object of the invention to provide an improved filter and method for improving filtering efficiency with limited complexity, and thus improving video coding efficiency.

[0009] Вышеупомянутые и другие задачи решаются посредством предмета независимых пунктов формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.[0009] The above and other objects are solved by the subject matter of the independent claims. Additional forms of implementation are apparent from the dependent claims, description and figures.

[0010] Согласно первому аспекту изобретение относится к фильтру для кодирования видео, причем фильтр выполнен с возможностью обработки блока для формирования отфильтрованного блока, причем блок содержит множество пикселей. Фильтр включает в себя запоминающее устройство, содержащее инструкции; и один или несколько процессоров, связанных с памятью. Один или несколько процессоров выполняют инструкции для: загрузки текущего пикселя и соседних с ним пикселей в линейный буфер в соответствии с предварительно заданным шаблоном сканирования; получения компонентов спектра посредством выполнения одномерного преобразования пикселей в линейном буфере; получения отфильтрованных компонентов спектра посредством умножения каждого компонента спектра на коэффициент усиления, при этом коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации; получения отфильтрованных пикселей посредством выполнения обратного одномерного преобразования для отфильтрованных компонентов спектра; и формирования отфильтрованного блок на основе отфильтрованных пикселей.[0010] According to a first aspect, the invention relates to a filter for video encoding, wherein the filter is configured to process a block to form a filtered block, the block comprising a plurality of pixels. The filter includes a storage device containing instructions; and one or more processors associated with the memory. One or more processors execute instructions to: load the current pixel and its neighboring pixels into a linear buffer in accordance with a predetermined scan pattern; obtaining spectrum components by performing a one-dimensional pixel transformation in a linear buffer; obtaining filtered components of the spectrum by multiplying each component of the spectrum by the gain, while the gain depends on the corresponding component of the spectrum and the filtering parameter; obtaining filtered pixels by performing an inverse one-dimensional transform on the filtered spectrum components; and generating a filtered block based on the filtered pixels.

[0011] В качестве примера блок (или кадр) может быть предсказанным блоком, а отфильтрованный блок - это отфильтрованный предсказанный блок. В качестве другого примера блок (или кадр) может быть восстановленным блоком, а отфильтрованный блок является отфильтрованным восстановленным блоком.[0011] As an example, a block (or frame) may be a predicted block, and a filtered block is a filtered predicted block. As another example, a block (or frame) may be a reconstructed block and a filtered block is a filtered reconstructed block.

Например, коэффициент усиления является функцией от соответствующего компонента спектра и параметра фильтрации. Параметр фильтрации может быть получен из параметра квантования кодека (QP - quantization parameter).For example, the gain is a function of the corresponding spectrum component and the filter parameter. The filtering parameter can be obtained from the codec quantization parameter (QP - quantization parameter).

Другой пример, первый компонент спектра пропускается без фильтрации, когда коэффициент

Figure 00000001
усиления для первого компонента спектра равен единице. Первый компонент спектра соответствует сумме или среднему значению сэмплов в линейном буфере, и первый компонент спектра может соответствовать DC.Another example, the first component of the spectrum is passed without filtering when the coefficient
Figure 00000001
gain for the first component of the spectrum is equal to unity. The first spectrum component corresponds to the sum or average of the samples in the linear buffer, and the first spectrum component may correspond to DC.

В качестве другого примера, в котором один или несколько процессоров выполняют инструкции для удаления N битов из значений таблицы LUT, N - целое число. N может зависеть от значения QP или является фиксированным значением.As another example, in which one or more processors execute instructions to remove N bits from LUT table values, N is an integer. N may depend on the value of QP or be a fixed value.

Например, предварительно заданный шаблон сканирования определяется как набор пространственных или растровых смещений относительно положения текущего пикселя внутри восстановленного блока. Смещения точки к соседним пикселям находятся внутри восстановленного блока. По меньшей мере один отфильтрованный пиксель может быть помещен в его исходное положение согласно предварительно заданному шаблону сканирования. Когда все отфильтрованные пиксели добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и буфер накопления может быть инициализирован посредством нуля до получения отфильтрованных компонентов спектра. Когда окончательно отфильтрованные пиксели получены как накопленные значения в буфере накопления, деленные на количество пикселей, добавленных к текущему положению буфера накопления; один или несколько процессоров выполнены с возможностью формирования отфильтрованного восстановленного блока на основе окончательных отфильтрованных пикселей.For example, a predetermined scan pattern is defined as a set of spatial or raster offsets relative to the position of the current pixel within the reconstructed block. Point offsets to neighboring pixels are inside the reconstructed block. At least one filtered pixel may be placed in its original position according to a predetermined scan pattern. When all the filtered pixels are added to the accumulation buffer according to a predetermined scan pattern, and the accumulation buffer can be initialized to zero until the filtered spectrum components are obtained. When the finally filtered pixels are obtained as the accumulated values in the accumulation buffer divided by the number of pixels added to the current position of the accumulation buffer; one or more processors are configured to generate a filtered reconstructed block based on the final filtered pixels.

Необязательно, различия между всеми отфильтрованными и соответствующими неотфильтрованными пикселями добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и буфер накопления может быть инициализирован посредством неотфильтрованных пикселей, умноженных на максимальное количество значений пикселей, которые должны быть добавлены в блок. Окончательные отфильтрованные пиксели получаются как накопленные значения в буфере накопления, деленные на максимальное количество значений пикселей, которые должны быть добавлены в блок.Optionally, the differences between all filtered and corresponding unfiltered pixels are added to the accumulation buffer according to a predefined scan pattern, and the accumulation buffer may be initialized with the unfiltered pixels multiplied by the maximum number of pixel values to be added to the block. The final filtered pixels are obtained as the accumulated values in the accumulation buffer divided by the maximum number of pixel values to be added to the block.

[0012] Согласно второму аспекту изобретение относится к соответствующему способу фильтрации для обработки блока для формирования отфильтрованного блока, при этом блок содержит множество пикселей. Каждый пиксель связан со значением пикселя. Способ фильтрации включает в себя следующие этапы, на которых: загружают текущий пиксель и соседние с ним пиксели в линейный буфер в соответствии с предварительно заданным шаблоном сканирования; получают компоненты спектра посредством выполнения одномерного преобразования пикселей в линейном буфере; получают отфильтрованные компоненты спектра посредством умножения каждого компонента спектра на коэффициент усиления, при этом коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации; получают отфильтрованные пиксели посредством выполнения обратного одномерного преобразования для отфильтрованных компонентов спектра; и формируют отфильтрованный блок на основе отфильтрованных пикселей.[0012] According to a second aspect, the invention relates to a corresponding filtering method for processing a block to form a filtered block, wherein the block contains a plurality of pixels. Each pixel is associated with a pixel value. The filtering method includes the following steps: loading the current pixel and neighboring pixels into a linear buffer in accordance with a predetermined scan pattern; get the components of the spectrum by performing a one-dimensional transformation of pixels in a linear buffer; obtaining the filtered components of the spectrum by multiplying each component of the spectrum by the gain, while the gain depends on the corresponding component of the spectrum and the filtering parameter; obtaining the filtered pixels by performing an inverse one-dimensional transform on the filtered spectrum components; and generating a filtered block based on the filtered pixels.

[0013] В качестве примера блок (или кадр) может быть предсказанным блоком, и отфильтрованный блок - это отфильтрованный предсказанный блок. В качестве другого примера блок (или кадр) может быть восстановленным блоком, и отфильтрованный блок является отфильтрованным восстановленным блоком.[0013] As an example, a block (or frame) may be a predicted block, and a filtered block is a filtered predicted block. As another example, a block (or frame) may be a reconstructed block and the filtered block is a filtered reconstructed block.

Например, коэффициент усиления является функцией от соответствующего компонента спектра и параметра фильтрации. Параметр фильтрации может быть получен из параметра квантования кодека (QP).For example, the gain is a function of the corresponding spectrum component and the filter parameter. The filtering parameter may be derived from the codec quantization parameter (QP).

Другой пример, первый компонент спектра пропускается без фильтрации, когда коэффициент

Figure 00000001
усиления для первого компонента спектра равен единице. Первый компонент спектра может соответствовать значению DC.Another example, the first component of the spectrum is passed without filtering when the coefficient
Figure 00000001
gain for the first component of the spectrum is equal to unity. The first spectrum component may correspond to a DC value.

Другой пример - фильтрация компонентов спектра на основе таблицы поиска (LUT - look up table). Формирование LUT может быть основано на вспомогательной функции по меньшей мере для некоторых параметров квантования (QP). Вспомогательная функция может быть уравнением прямой линии, объединяющим точки (i, THR) и (a, 0), где a > 0 и a зависит от параметра σ фильтрации или значения QP. Например, для последнего QP в наборе QP a равно 11; или для предпоследнего QP в наборе QP a равно 9.Another example is filtering spectrum components based on a look up table (LUT). The formation of the LUT may be based on an auxiliary function for at least some of the quantization parameters (QP). The auxiliary function can be a straight line equation combining the points (i, THR) and (a, 0), where a > 0 and a depends on the filtering parameter σ or the value of QP. For example, for the last QP in the QP set, a is 11; or for the penultimate QP in the QP set, a is 9.

В качестве другого примера, способ дополнительно включает в себя этапы, на которых: удаляют N битов из значений таблицы LUT, N - целое число. N может зависеть от значения QP или является фиксированным значением. Когда N выбирается меньше для более низкого QP по сравнению с более высоким QP из набора QP, например, для первого QP в наборе QP, N равно 2; или для остальных QP из набора QP N равно 3. В качестве альтернативы, когда N выбирается выше для более высокого QP по сравнению с более низким QP из набора QP QP, например, для последнего QP или для последних двух QP в наборе QP, N равно 4; или для остальных QP из набора QP N равно 3. В качестве альтернативы, когда N выбирается меньше для более низкого QP и выше для более высокого QP по сравнению с остальным QP из набора QP, например, для первого QP в наборе QP, N равно 2; для последнего QP или для последних двух QP в наборе QP N равно 4; либо для остальных QP из набора QP N равно 3.As another example, the method further includes the steps of: removing N bits from the values of the LUT table, N is an integer. N may depend on the value of QP or be a fixed value. When N is chosen smaller for a lower QP compared to a higher QP from the QP set, for example, for the first QP in the QP set, N is 2; or for the rest of the QPs in the QP set, N is 3. Alternatively, when N is chosen higher for the higher QP over the lower QP from the QP QP set, for example, for the last QP or for the last two QPs in the QP set, N is four; or for the rest of the QPs in the QP set, N is 3. Alternatively, when N is chosen to be smaller for a lower QP and higher for a higher QP than the rest of the QPs in the QP set, e.g., for the first QP in the QP set, N is 2 ; for the last QP, or for the last two QPs in the QP set, N is 4; or for the remaining QPs from the QP set, N is equal to 3.

Например, предварительно заданный шаблон сканирования определяется как набор пространственных или растровых смещений относительно положения текущего пикселя внутри восстановленного блока. Смещения точки к соседним пикселям находятся внутри восстановленного блока. По меньшей мере один отфильтрованный пиксель может быть помещен в его исходное положение согласно предварительно заданному шаблону сканирования. Когда все отфильтрованные пиксели добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и буфер накопления может быть инициализирован посредством нуля до получения отфильтрованных компонентов спектра. Когда окончательные отфильтрованные пиксели получены как накопленные значения в буфере накопления, деленные на количество пикселей, добавленных к текущему положению буфера накопления; один или несколько процессоров выполнены с возможностью формирования отфильтрованного восстановленного блока на основе окончательных отфильтрованных пикселей.For example, a predetermined scan pattern is defined as a set of spatial or raster offsets relative to the position of the current pixel within the reconstructed block. Point offsets to neighboring pixels are inside the reconstructed block. At least one filtered pixel may be placed in its original position according to a predetermined scan pattern. When all the filtered pixels are added to the accumulation buffer according to a predetermined scan pattern, and the accumulation buffer can be initialized to zero until the filtered spectrum components are obtained. When the final filtered pixels are obtained as the accumulated values in the accumulation buffer divided by the number of pixels added to the current position of the accumulation buffer; one or more processors are configured to generate a filtered reconstructed block based on the final filtered pixels.

Необязательно, различия между всеми отфильтрованными и соответствующими неотфильтрованными пикселями добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и буфер накопления может быть инициализирован посредством неотфильтрованных пикселей, умноженных на максимальное количество значений пикселей, которые должны быть добавлены в блок. Окончательные отфильтрованные пиксели получаются как накопленные значения в буфере накопления, деленные на максимальное количество значений пикселей, которые должны быть добавлены в блок.Optionally, the differences between all filtered and corresponding unfiltered pixels are added to the accumulation buffer according to a predefined scan pattern, and the accumulation buffer may be initialized with the unfiltered pixels multiplied by the maximum number of pixel values to be added to the block. The final filtered pixels are obtained as the accumulated values in the accumulation buffer divided by the maximum number of pixel values to be added to the block.

[0014] Согласно третьему аспекту изобретение относится к устройству кодирования для кодирования текущего кадра из входного видеопотока, при этом устройство кодирования содержит фильтр согласно первому аспекту изобретения.[0014] According to a third aspect, the invention relates to an encoding device for encoding a current frame from an input video stream, wherein the encoding device comprises a filter according to the first aspect of the invention.

[0015] Согласно четвертому аспекту изобретение относится к устройству декодирования для декодирования текущего кадра из принятого битового потока, при этом устройство декодирования содержит фильтр согласно первому аспекту изобретения.[0015] According to a fourth aspect, the invention relates to a decoding apparatus for decoding a current frame from a received bitstream, wherein the decoding apparatus comprises a filter according to the first aspect of the invention.

[0016] Согласно пятому аспекту изобретение относится к компьютерной программе, содержащей программный код для выполнения способа согласно второму аспекту при выполнении на компьютере.[0016] According to a fifth aspect, the invention relates to a computer program containing program code for performing the method according to the second aspect when executed on a computer.

[0017] Таким образом, обеспечен фильтр, позволяющий повысить эффективность кодирования видео. Более конкретно, улучшенный фильтр согласно вариантам осуществления изобретения оценивает параметры фильтра из самого кадра без сигнализации параметров фильтра и, следовательно, требует значительно меньше сигнализации, чем обычные фильтры, которые сигнализируют весовые коэффициенты для фильтрации в области изображения.[0017] Thus, a filter is provided to improve the efficiency of video coding. More specifically, the improved filter according to embodiments of the invention estimates the filter parameters from the frame itself without signaling the filter parameters and therefore requires significantly less signaling than conventional filters that signal weights for filtering in the image area.

Краткое описание чертежейBrief description of the drawings

[0018] Дополнительные варианты осуществления изобретения будут описаны со ссылкой на следующие фигуры, на которых:[0018] Additional embodiments of the invention will be described with reference to the following figures, in which:

[0019] Фиг. 1A показывает схематическую диаграмму, иллюстрирующую устройство кодирования согласно варианту осуществления, содержащее фильтр согласно варианту осуществления;[0019] FIG. 1A shows a schematic diagram illustrating an encoder according to an embodiment, comprising a filter according to an embodiment;

[0020] Фиг. 1B показывает схематическую диаграмму, иллюстрирующую устройство кодирования согласно варианту осуществления, содержащее фильтр согласно варианту осуществления;[0020] FIG. 1B shows a schematic diagram illustrating an encoder according to an embodiment, including a filter according to an embodiment;

[0021] Фиг. 2A показывает схематическую диаграмму, иллюстрирующую устройство декодирования согласно варианту осуществления, содержащее фильтр согласно варианту осуществления;[0021] FIG. 2A shows a schematic diagram illustrating a decoding apparatus according to an embodiment, comprising a filter according to an embodiment;

[0022] Фиг. 2B показывает схематическую диаграмму, иллюстрирующую устройство декодирования согласно варианту осуществления, содержащее фильтр согласно варианту осуществления;[0022] FIG. 2B shows a schematic diagram illustrating a decoding apparatus according to an embodiment, including a filter according to an embodiment;

[0023] Фиг. 3A показывает схематическую диаграмму, иллюстрирующую аспекты процесса фильтрации, реализованного в фильтре согласно варианту осуществления;[0023] FIG. 3A shows a schematic diagram illustrating aspects of a filtering process implemented in a filter according to an embodiment;

[0024] Фиг. 3B - схематическая диаграмма, иллюстрирующая аспекты процесса фильтрации, реализованного в фильтре согласно варианту осуществления;[0024] FIG. 3B is a schematic diagram illustrating aspects of a filtering process implemented in a filter according to an embodiment;

[0025] Фиг. 3C - схематическая диаграмма, иллюстрирующая аспекты процесса фильтрации, реализованного в фильтре согласно другому варианту осуществления;[0025] FIG. 3C is a schematic diagram illustrating aspects of a filtering process implemented in a filter according to another embodiment;

[0026] Фиг. 4A иллюстрирует шаблоны для различных положений пикселей внутри квадратного восстановленного блока;[0026] FIG. 4A illustrates patterns for various pixel positions within a square reconstructed block;

[0027] Фиг. 4B иллюстрирует эквивалентную форму фильтра для одного пикселя;[0027] FIG. 4B illustrates the equivalent filter shape for one pixel;

[0028] Фиг. 4C дает пример заполнения;[0028] FIG. 4C gives an example of padding;

[0029] Фиг. 4D дает еще один пример заполнения;[0029] FIG. 4D gives another example of infill;

[0030] Фиг. 5A показывает блок-схему, иллюстрирующую этапы способа фильтрации согласно варианту осуществления;[0030] FIG. 5A shows a flowchart illustrating the steps of a filtering method according to an embodiment;

[0031] Фиг. 5B показывает блок-схему, иллюстрирующую этапы способа фильтрации согласно варианту осуществления;[0031] FIG. 5B shows a flowchart illustrating the steps of a filtering method according to an embodiment;

[0032] Фиг. 6 - пример схемы аппаратного фильтра на основе SRAM;[0032] FIG. 6 is an example of a hardware filter circuit based on SRAM;

[0033] Фиг. 7 - примерная схема аппаратного обеспечения фильтрации группы 2×2 на основе триггеров;[0033] FIG. 7 is an exemplary hardware diagram of 2x2 group filtering based on flip-flops;

[0034] Фиг. 8 показывает пример объединения результатов четырех фильтраций групп 2×2 с повторным использованием результатов одного и того же окончательного фильтра пространственной группы;[0034] FIG. 8 shows an example of combining the results of four 2×2 group filterings, reusing the results of the same final space group filter;

[0035] Фиг. 9 в качестве примера показывает результат оптимизации LUT;[0035] FIG. 9 shows the result of LUT optimization as an example;

[0036] Фиг. 10 в качестве примера показывает нежелательный разрыв в передаточной функции фильтра;[0036] FIG. 10 exemplifies an unwanted discontinuity in the filter transfer function;

[0037] Фиг. 11 в качестве примера представляет ту же таблицу с записями таблицы, построенными поочередно;[0037] FIG. 11 exemplifies the same table with the table entries arranged in turn;

[0038] Фиг. 12 в качестве примера иллюстрирует способ устранения разрыва с использованием вспомогательной функции;[0038] FIG. 12 illustrates a discontinuity repair method using an auxiliary function as an example;

[0039] Фиг. 13 иллюстрирует пример устранения разрыва посредством взятия максимума из двух значений при формировании LUT;[0039] FIG. 13 illustrates an example of discontinuity by taking the maximum of two values when generating the LUT;

[0040] Фиг. 14, в качестве примера, иллюстрирует передаточную функцию фильтра после применения описанного выше способа; [0040] FIG. 14 illustrates, by way of example, the transfer function of a filter after applying the method described above;

[0041] Фиг. 15 иллюстрирует пример передаточных функций фильтра в зависимости от пяти QP в наборе;[0041] FIG. 15 illustrates an example of filter transfer functions versus five QPs in the set;

[0042] Фиг. 16 иллюстрирует пример передаточных функций фильтра для пяти QP в наборе на основе соответствующих таблиц;[0042] FIG. 16 illustrates an example of filter transfer functions for five QPs in a set based on respective tables;

[0043] Фиг. 17 - пример передаточных функций фильтра для пяти QP в наборе на основе соответствующих таблиц; и[0043] FIG. 17 is an example of filter transfer functions for five QPs in a set based on respective tables; and

[0044] Фиг. 18 - схематическая диаграмма, иллюстрирующая примерную структуру устройства согласно варианту осуществления.[0044] FIG. 18 is a schematic diagram illustrating an exemplary structure of a device according to an embodiment.

[0045] На различных чертежах идентичные ссылочные позиции будут использоваться для идентичных или функционально эквивалентных элементов.[0045] Throughout the various drawings, identical reference numerals will be used for identical or functionally equivalent elements.

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯDETAILED DESCRIPTION OF EMBODIMENTS

[0046] В нижеследующем описании сделана ссылка на сопроводительные чертежи, которые составляют часть раскрытия и на которых показаны в качестве иллюстрации конкретные аспекты, в которые может быть помещено настоящее изобретение. Понятно, что могут быть использованы другие аспекты, а структурные или логические изменения могут быть выполнены без выхода за пределы объема настоящего изобретения. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, поскольку объем настоящего изобретения определяется прилагаемой формулой изобретения.[0046] In the following description, reference is made to the accompanying drawings, which form part of the disclosure, and which show, by way of illustration, specific aspects into which the present invention may be placed. It is understood that other aspects may be used and structural or logical changes may be made without departing from the scope of the present invention. Therefore, the following detailed description should not be taken in a limiting sense, since the scope of the present invention is defined by the appended claims.

[0047] Например, понятно, что раскрытие в связи с описанным способом также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнения способа, и наоборот. Например, если описан конкретный этап способа, соответствующее устройство может включать в себя блок для выполнения описанного этапа способа, даже если такой блок явно не описан или не проиллюстрирован на фигурах. Кроме того, понятно, что признаки различных иллюстративных аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.[0047] For example, it is understood that the disclosure in connection with the described method may also be true for a corresponding device or system capable of performing the method, and vice versa. For example, if a particular method step is described, the corresponding device may include a block for performing the described method step, even if such block is not explicitly described or illustrated in the figures. In addition, it is understood that the features of the various illustrative aspects described herein may be combined with each other unless specifically noted otherwise.

[0048] На фиг. 1A показано устройство 100 кодирования согласно варианту осуществления, содержащее фильтр 120 согласно варианту осуществления. Устройство 100 кодирования выполнено с возможностью кодирования блока кадра видеосигнала, содержащего множество кадров (также называемых здесь изображениями), при этом каждый кадр может быть разделен на множество блоков, и каждый блок содержит множество пикселей. В варианте осуществления блоки могут быть макроблоками, единицами дерева кодирования, единицами кодирования, единицами предсказания и/или блоками предсказания.[0048] FIG. 1A shows an encoder 100 according to an embodiment, including a filter 120 according to an embodiment. The encoding apparatus 100 is configured to encode a block of a video signal frame containing a plurality of frames (also referred to here as images), wherein each frame may be divided into a plurality of blocks, and each block contains a plurality of pixels. In an embodiment, the blocks may be macroblocks, coding tree units, coding units, prediction units, and/or prediction blocks.

[0049] Термин «блок» в этом раскрытии используется для блока любого типа или для блока любой глубины, например, термин «блок» включен, но не ограничивается корневым блоком, блоком, подблоком, вершиной дерева и т.д. Кодируемые блоки не обязательно имеют одинаковый размер. Одно изображение может включать в себя блоки разных размеров, и растры блоков разных изображений видеопоследовательности также могут отличаться.[0049] The term "block" in this disclosure is used for a block of any type or for a block of any depth, for example, the term "block" is included, but not limited to a root block, block, subblock, treetop, etc. Encoded blocks do not necessarily have the same size. One image may include blocks of different sizes, and block rasters of different images of a video sequence may also differ.

[0050] В примерном варианте осуществления, показанном на фиг. 1A, устройство 100 кодирования реализовано в форме кодера гибридного кодирования видео. Обычно первый кадр видеосигнала является внутренним кадром, который кодируется с использованием только внутреннего предсказания. С этой целью вариант осуществления устройства 100 кодирования, показанный на фиг.1A, содержит блок 154 внутреннего предсказания для внутреннего предсказания. Внутренний кадр может быть декодирован без информации из других кадров. Блок 154 внутреннего предсказания может выполнять внутреннее предсказание блока на основе информации, обеспеченной посредством блока 152 внутренней оценки.[0050] In the exemplary embodiment shown in FIG. 1A, the encoder 100 is implemented in the form of a hybrid video encoder. Typically, the first frame of a video signal is an intra frame that is encoded using only intra prediction. To this end, the embodiment of the encoder 100 shown in FIG. 1A includes an intra prediction block 154 for intra prediction. The intra frame may be decoded without information from other frames. The intra prediction unit 154 may perform intra block prediction based on the information provided by the intra estimator 152 .

[0051] Блоки последующих кадров, следующих за первым внутренним кадром, могут быть кодированы с использованием внешнего или внутреннего предсказания, как выбирается посредством блока 160 выбора режима. С этой целью устройство 100 кодирования, показанное на фиг. 1A, дополнительно содержит блок 144 внешнего предсказания. Как правило, блок 144 внешнего предсказания может быть выполнен с возможностью выполнения компенсации движения блока на основе оценки движения, обеспеченной посредством блока 142 внешней оценки.[0051] Blocks of subsequent frames following the first intra frame may be encoded using inter or intra prediction as selected by mode selector 160 . To this end, the encoder 100 shown in FIG. 1A further includes an inter prediction block 144. Typically, inter prediction block 144 may be configured to perform block motion compensation based on the motion estimate provided by external estimator 142 .

[0052] Кроме того, сигнал предсказания в варианте осуществления гибридного кодера, показанном на фиг. 1B, полученный из внутреннего или внешнего предсказания, дополнительно фильтруется посредством фильтра 145.[0052] In addition, the prediction signal in the hybrid encoder embodiment shown in FIG. 1B obtained from intra or inter prediction is further filtered by filter 145.

[0053] Кроме того, в варианте осуществления гибридного кодера, показанном на фиг. 1A и 1B, блок 104 вычисления остатка определяет разницу между исходным блоком и его предсказанием, то есть остаточный блок, определяющий ошибку предсказания внутреннего/внешнего предсказания изображения. Этот остаточный блок преобразуется посредством блока 106 преобразования (например, с использованием DCT), а коэффициенты преобразования квантуются посредством блока 108 квантования. Выходной сигнал блока 108 квантования, а также кодирование или дополнительная информация, обеспеченная, например, посредством блока 154 внутреннего предсказания, блока 144 внешнего предсказания и фильтра 120, дополнительно кодируются посредством блока 170 энтропийного кодирования.[0053] In addition, in the embodiment of the hybrid encoder shown in FIG. 1A and 1B, the residual calculation block 104 determines the difference between the original block and its prediction, that is, the residual block determining the intra/inter prediction error of the image. This residual block is transformed by a transform block 106 (eg using a DCT) and the transform coefficients are quantized by a quantizer 108 . The output signal of the quantizer 108, as well as the coding or side information provided, for example, by the intra predictor 154, the inter prediction 144, and the filter 120, are further encoded by the entropy coding unit 170.

[0054] Гибридный видеокодер обычно дублирует обработку декодера, так что оба будут формировать одинаковые предсказания. Таким образом, в варианте осуществления, показанном на фиг. 1, блок 110 обратного квантования и блок обратного преобразования выполняют обратные операции блока 106 преобразования и блока 108 квантования и дублируют декодированное приближение остаточного блока. Затем декодированные данные остаточного блока добавляются к результатам предсказания, то есть к блоку предсказания, посредством блока 114 восстановления. Затем выходной сигнал блока 114 восстановления может быть обеспечен в линейный буфер 116, который будет использоваться для внутреннего предсказания, и дополнительно обработан посредством фильтра 120, что будет более подробно описано ниже. Окончательное изображение сохраняется в буфере 130 декодированных изображений и может использоваться для внешнего предсказания последующих кадров.[0054] A hybrid video encoder typically duplicates the processing of a decoder so that both will generate the same predictions. Thus, in the embodiment shown in FIG. 1, the inverse quantizer 110 and the inverse transform block perform the inverse operations of the transform block 106 and the quantizer 108 and duplicate the decoded approximation of the residual block. Then, the decoded data of the residual block is added to the prediction results, that is, to the prediction block, by means of a recovery block 114 . The output of the reconstruction unit 114 may then be provided to a linear buffer 116 to be used for intra prediction and further processed by a filter 120, as will be described in more detail below. The final image is stored in the decoded image buffer 130 and may be used for inter-prediction of subsequent frames.

[0055] На фиг. 2A показано устройство 200 декодирования согласно варианту осуществления, содержащее фильтр 220 согласно варианту осуществления. Устройство 200 декодирования выполнено с возможностью декодирования блока кадра кодированного видеосигнала. В варианте осуществления, показанном на фиг. 2A, устройство 200 декодирования реализовано как гибридный декодер. Блок 204 энтропийного декодирования выполняет энтропийное декодирование кодированных данных изображения, которые обычно могут содержать ошибки предсказания (т.е. остаточные блоки), данные движения и другую дополнительную информацию, которая необходима, в частности, для блока 254 внутреннего предсказания и блока 244 внешнего предсказания, а также других компонентов устройства 200 декодирования, таких как фильтр 220. Как правило, блок 254 внутреннего предсказания и блок 244 внешнего предсказания устройства 200 декодирования, показанного на фиг. 2A, выбираются посредством блока 260 выбора режима и функционируют таким же образом, как блок 154 внутреннего предсказания и блок 144 внешнего предсказания устройства 100 кодирования, показанного на фиг. 1, так что идентичные предсказания могут быть сформированы посредством устройства 100 кодирования и устройства 200 декодирования. Блок 214 восстановления устройства 200 декодирования выполнен с возможностью восстановления блока на основе отфильтрованного предсказанного блока и остаточного блока, обеспеченных посредством блока 210 обратного квантования и блока 212 обратного преобразования. Как и в случае устройства 100 кодирования, восстановленный блок может быть обеспечен в линейный буфер 216, используемый для внутреннего предсказания, а отфильтрованный блок/кадр может быть обеспечен в буфер 230 декодированных изображений посредством фильтра 220 для внешнего предсказания.[0055] FIG. 2A shows a decoder 200 according to an embodiment, including a filter 220 according to an embodiment. The decoding device 200 is configured to decode a frame block of the encoded video signal. In the embodiment shown in FIG. 2A, the decoder 200 is implemented as a hybrid decoder. The entropy decoding block 204 performs entropy decoding of the encoded image data, which may typically contain prediction errors (i.e., residual blocks), motion data, and other additional information that is needed, in particular, for the intra prediction block 254 and the inter prediction block 244, as well as other components of decoder 200 such as filter 220. Typically, intra predictor 254 and inter predictor 244 of decoder 200 shown in FIG. 2A are selected by the mode selector 260 and operate in the same manner as the intra predictor 154 and inter predictor 144 of the encoding device 100 shown in FIG. 1 so that identical predictions can be generated by the encoder 100 and the decoder 200. The recovery unit 214 of the decoding apparatus 200 is configured to recover the block based on the filtered predicted block and the residual block provided by the inverse quantization unit 210 and the inverse transform unit 212 . As with the encoder 100, the reconstructed block may be provided to the linear buffer 216 used for intra prediction, and the filtered block/frame may be provided to the decoded picture buffer 230 via the filter 220 for inter prediction.

[0056] Как показано на фиг. 2B, сигнал предсказания в варианте осуществления гибридного декодера, показанном на фиг. 2B, полученный из внутреннего или внешнего предсказания, дополнительно фильтруется посредством фильтра 264.[0056] As shown in FIG. 2B, the prediction signal in the hybrid decoder embodiment shown in FIG. 2B obtained from intra or inter prediction is further filtered by filter 264.

[0057] Как уже было описано выше, фильтр 120, 220 может использоваться на уровне кадра, например, фильтр 120, 220 может быть выполнен с возможностью обработки восстановленного кадра из декодированного восстановленного видеопотока для формирования отфильтрованного восстановленного кадра, где восстановленный кадр включает в себя множество блоков. Фильтр 120, 220 также может использоваться на уровне блока сразу после восстановления блока без ожидания всего кадра, например, фильтр 120, 220 может быть выполнен с возможностью обработки восстановленного блока для формирования отфильтрованного восстановленного блока, где восстановленный блок включает в себя множество пикселей.[0057] As already described above, filter 120, 220 may be used at the frame level, for example, filter 120, 220 may be configured to process a reconstructed frame from a decoded reconstructed video stream to generate a filtered reconstructed frame, where the reconstructed frame includes a set blocks. Filter 120, 220 may also be used at the block level immediately after block reconstruction without waiting for the entire frame, for example, filter 120, 220 may be configured to process the reconstructed block to form a filtered reconstructed block, where the reconstructed block includes a plurality of pixels.

[0058] Фильтр 120, 220, 145 или 264 содержит один или несколько процессоров (или один или несколько блоков обработки). Как будет объяснено более подробно ниже, один или несколько процессоров (или один или несколько блоков обработки) выполнены с возможностью: загрузки текущего пикселя и его соседних пикселей в линейный буфер в соответствии с предварительно заданным шаблоном сканирования (другими словами, порядком сканирования или моделью сканирования); получения компонентов спектра посредством выполнения одномерного преобразования для каждого пикселя в линейном буфере; получения отфильтрованных компонентов спектра посредством умножения каждого компонента спектра на коэффициент усиления, при этом коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации; получения отфильтрованных пикселей посредством выполнения обратного одномерного преобразования для отфильтрованного спектра; и формирования отфильтрованного восстановленного блока на основе отфильтрованных пикселей, оцененных на предыдущих этапах обработки. В одном примере коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации. В другом примере коэффициент усиления зависит от одного или нескольких параметров фильтрации и одного или нескольких соответствующих компонентов спектра. В другом примере соответствующий коэффициент усиления может зависеть от одного или нескольких параметров фильтрации и соответствующего компонента спектра, а также соседних компонентов спектра слева и справа от компонента спектра.[0058] Filter 120, 220, 145, or 264 comprises one or more processors (or one or more processing units). As will be explained in more detail below, one or more processors (or one or more processing units) are configured to: load the current pixel and its neighboring pixels into a linear buffer in accordance with a predetermined scan pattern (in other words, scan order or scan model) ; obtaining spectrum components by performing a one-dimensional transform for each pixel in the linear buffer; obtaining filtered components of the spectrum by multiplying each component of the spectrum by the gain, while the gain depends on the corresponding component of the spectrum and the filtering parameter; obtaining filtered pixels by performing an inverse one-dimensional transform on the filtered spectrum; and generating a filtered reconstructed block based on the filtered pixels estimated in previous processing steps. In one example, the gain depends on the respective component of the spectrum and the filter parameter. In another example, the gain depends on one or more filter parameters and one or more corresponding spectrum components. In another example, the appropriate gain may depend on one or more filter parameters and the corresponding spectrum component, as well as adjacent spectrum components to the left and right of the spectrum component.

[0059] Раскрытие описывает внутриконтурный фильтр для видеокодека с потерями, который выполняет локальную и/или нелокальную фильтрацию восстановленного блока из восстановленного кадра. Согласно примеру восстановленный кадр делится на набор небольших неперекрывающихся прямоугольных блоков (блоков CU). На следующем этапе каждый восстановленный блок (восстановленный блок CU) фильтруется в частотной области независимо от других восстановленных блоков. Фильтр также может применяться после преобразования и восстановления, а отфильтрованный результат используется как для вывода, так и для пространственного и временного предсказания.[0059] The disclosure describes an in-loop filter for a lossy video codec that performs local and/or non-local filtering of a reconstructed block from a reconstructed frame. According to the example, the reconstructed frame is divided into a set of small non-overlapping rectangular blocks (CU blocks). In the next step, each reconstructed block (recovered CU) is filtered in the frequency domain independently of other reconstructed blocks. The filter can also be applied after transformation and reconstruction, and the filtered result is used for both inference and spatial and temporal prediction.

[0060] В качестве другого примера раскрытие описывает фильтр предсказания для видеокодека с потерями, который выполняет локальную и/или нелокальную фильтрацию блока предсказания восстановленного кадра.[0060] As another example, the disclosure describes a prediction filter for a lossy video codec that performs local and/or non-local filtering of a reconstructed frame prediction block.

[0061] На первом этапе обработки все пиксели внутри восстановленного блока могут обрабатываться независимо друг от друга. Для обработки пикселя r(0) используются соседние пиксели. Например, как показано на фиг. 3A, используются пиксели с r(1) по r(7), и пиксели с r(0) по r(7) образуют одну группу обработки.[0061] In the first processing step, all pixels within the reconstructed block may be processed independently of each other. To process the pixel r(0), neighboring pixels are used. For example, as shown in FIG. 3A, pixels r(1) to r(7) are used, and pixels r(0) to r(7) form one processing group.

[0062] Фиг. 3A или 3B показывает схематическую диаграмму 300, 300' иллюстрирующую аспекты процесса фильтрации, реализованного в фильтре согласно варианту осуществления. На этапе 302, 302' текущий пиксель и соседние с ним пиксели из блока загружаются в линейный буфер в соответствии с предварительно заданным шаблоном сканирования. В качестве примера блок может быть предсказанным блоком. В качестве другого примера блок может быть восстановленным блоком.[0062] FIG. 3A or 3B shows a schematic diagram 300, 300' illustrating aspects of a filtering process implemented in a filter according to an embodiment. At step 302, 302', the current pixel and neighboring pixels from the block are loaded into a linear buffer in accordance with a predetermined scan pattern. By way of example, the block may be a predicted block. As another example, the block may be a reconstructed block.

[0063] На этапе 304, 304' выполняется одномерное преобразование для пикселя r(0) и его соседних пикселей с r(1) по r(7) в линейном буфере для получения компонентов R спектра:[0063] In step 304, 304', a one-dimensional transformation is performed on pixel r(0) and its neighboring pixels r(1) through r(7) in the linear buffer to obtain the R components of the spectrum:

Figure 00000002
Figure 00000002

[0064] В качестве примера одномерное преобразование может быть преобразованием Адамара.[0064] As an example, a one-dimensional transform may be a Hadamard transform.

[0065] Следует понимать, что выполнение 1D-преобразования 4 пикселей в ряду (например, пиксели A, B, C, D, как в примере на фиг. 3B) или выполнение 2D-преобразования для пространственно расположенных пикселей A, B, C, D зависит от для конкретной реализации. Применение 2D-преобразования к 4 пикселям A, B, C, D, расположенным в блоке 2×2, может привести к тому же результату, что и применение 1D-преобразования к 4 пикселям A, B, C, D, взятым в ряду. На этапе 306, 306' фильтрация выполняется в частотной области на основе умножения каждого компонента

Figure 00000003
спектра на соответствующий коэффициент усиления
Figure 00000004
для получения отфильтрованных компонентов
Figure 00000005
спектра:[0065] It should be understood that performing a 1D transform on 4 pixels in a row (e.g., pixels A, B, C, D, as in the example in Fig. 3B) or performing a 2D transform on spatially located pixels A, B, C, D depends on the specific implementation. Applying a 2D transform to 4 pixels A, B, C, D located in a 2×2 block can lead to the same result as applying a 1D transform to 4 pixels A, B, C, D taken in a row. In step 306, 306' filtering is performed in the frequency domain based on the multiplication of each component
Figure 00000003
spectrum to the corresponding gain
Figure 00000004
to get filtered components
Figure 00000005
spectrum:

Figure 00000006
(1)
Figure 00000006
(one)

[0066] Набор коэффициентов усиления для всех компонентов спектра представляет собой частотно-импульсную характеристику фильтра.[0066] The set of gains for all spectrum components is the impulse response of the filter.

[0067] В примере коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации. В другом примере коэффициент усиления зависит от одного или нескольких параметров фильтрации и одного или нескольких соответствующих компонентов спектра. В другом примере соответствующий коэффициент усиления может зависеть от одного или нескольких параметров фильтрации и соответствующего компонента спектра, а также соседних компонентов спектра слева и справа от компонента спектра. Если каждый коэффициент усиления является функцией от компонента спектра восстановленного блока и параметра фильтрации или является функцией от компонента спектра предсказанного блока и параметра фильтрации, коэффициент усиления

Figure 00000007
может быть описан следующей формулой как пример:[0067] In the example, the gain depends on the corresponding component of the spectrum and the filtering parameter. In another example, the gain depends on one or more filter parameters and one or more corresponding spectrum components. In another example, the appropriate gain may depend on one or more filter parameters and the corresponding spectrum component, as well as adjacent spectrum components to the left and right of the spectrum component. If each gain is a function of the spectrum component of the reconstructed block and the filter parameter, or is a function of the spectrum component of the predicted block and the filter parameter, the gain is
Figure 00000007
can be described by the following formula as an example:

Figure 00000008
(2)
Figure 00000008
(2)

где (i) - индекс компонента спектра, R(i) - компонент спектра, соответствующий индексу (i),

Figure 00000009
- коэффициент усиления, соответствующий R(i), σ - параметр фильтрации, m - константа нормализации, равная количеству компонентов спектра. Например, m равно 1, 2, 3, 4…. Различные компоненты спектра могут иметь одинаковый коэффициент усиления или могут иметь разные коэффициенты усиления.where (i) is the index of the spectrum component, R(i) is the spectrum component corresponding to the index (i),
Figure 00000009
is the gain corresponding to R(i), σ is the filtering parameter, m is the normalization constant equal to the number of spectrum components. For example, m is 1, 2, 3, 4…. Different spectrum components may have the same gain or may have different gains.

[0068] Для тех преобразований, которые имеют компоненты спектра, соответствующие среднему (FFT, DCT, DST и т.д.) или сумме (Адамара) входных сэмплов блока преобразования (обычно первый компонент, соответствующий значению DC), может быть выгодно иметь коэффициент фильтрации, равный 1, чтобы избежать изменения средней яркости отфильтрованного блока. Это означает пропуск (без фильтрации) для первого компонента спектра, соответствующего значению DC.[0068] For those transforms that have spectral components corresponding to the average (FFT, DCT, DST, etc.) or sum (Hadamard) of the input samples of the transform block (usually the first component corresponding to the DC value), it can be advantageous to have a coefficient filtering value equal to 1 to avoid changing the average brightness of the filtered block. This means skipping (no filtering) for the first component of the spectrum corresponding to the DC value.

[0069] σ в качестве параметра фильтрации может быть получен из параметра квантования (QP) кодека на сторонах кодера и декодера, например, с использованием следующей формулы:[0069] σ as a filtering parameter can be obtained from the quantization parameter (QP) of the codec at the encoder and decoder sides, for example, using the following formula:

Figure 00000010
,
Figure 00000010
,

где

Figure 00000011
и
Figure 00000012
являются константами, имеющими значения, например:
Figure 00000013
where
Figure 00000011
and
Figure 00000012
are constants that have values, for example:
Figure 00000013

Различные компоненты спектра могут иметь одинаковый параметр фильтрации или могут иметь разные параметры фильтрации.Different spectrum components may have the same filter parameter or may have different filter parameters.

[0070] Параметры

Figure 00000011
и
Figure 00000012
могут быть выбраны таким образом, чтобы сигма зависела от размера шага квантования, который удваивается каждый раз, когда значение QP увеличивается на 6 в последних стандартах кодирования видео. В примере с параметрами k = 0,5, n = 1/6 и s = 0 параметры σ получаются следующим образом: [0070] Parameters
Figure 00000011
and
Figure 00000012
can be chosen so that the sigma depends on the quantization step size, which doubles every time the QP value is increased by 6 in the latest video coding standards. In the example with parameters k = 0.5, n = 1/6 and s = 0, the parameters σ are obtained as follows:

Figure 00000014
Figure 00000014

[0071] Матрицы масштабирования квантования широко используются для улучшения качества сжатия видео. В этом способе размер шага квантования, полученный на основе QP, умножается на коэффициент масштабирования, передаваемый в битовом потоке. Для такого способа получение параметров σ может быть основано на фактическом масштабированном размере шага квантования, используемом для определенного QP:[0071] Quantization scaling matrices are widely used to improve the quality of video compression. In this method, the quantization step size obtained from the QP is multiplied by a scaling factor transmitted in the bitstream. For such a method, the derivation of the σ parameters can be based on the actual scaled quantization step size used for a particular QP:

Figure 00000015
Figure 00000015

[0072] Константы

Figure 00000011
и
Figure 00000012
могут иметь фиксированные значения для вычисления σ или могут иметь разные значения в зависимости от QP, размера и формы блока, типа предсказания (внешнего/внутреннего) для текущего блока. Например, для квадратных блоков с внутренним предсказанием размером 32×32 или более параметр s может вычислен как
Figure 00000016
. В качестве эквивалентного параметра фильтра σ имеет меньшее значение, это приводит к более мягкому фильтру, который больше подходит для больших квадратных блоков с внутренним предсказанием, обычно соответствующих плоским областям. В качестве другого примера, k может быть изменено на основе глубины цвета пикселей kmod=k * (1 << (bit_depth - 8)).[0072] Constants
Figure 00000011
and
Figure 00000012
may have fixed values for calculating σ or may have different values depending on QP, block size and shape, type of prediction (outer/inner) for the current block. For example, for intra-prediction square blocks of size 32x32 or larger, the parameter s can be computed as
Figure 00000016
. As an equivalent filter parameter, σ is smaller, resulting in a softer filter that is more suitable for large intra-predictive square blocks, typically corresponding to flat regions. As another example, k may be changed based on the pixel color depth k mod =k * (1 << (bit_depth - 8)).

[0073] Согласно способу 300, 300' коэффициент усиления для каждой частоты получается из компонента спектра восстановленных пикселей или предсказанных пикселей. Следовательно, способ 300, 300' не требует передачи параметров фильтрации и может применяться для любого восстановленного блока или предсказанного блока без дополнительной сигнализации.[0073] According to the method 300, 300', the gain for each frequency is obtained from the spectrum component of the reconstructed pixels or predicted pixels. Therefore, the method 300, 300' does not require the transmission of filter parameters and can be applied to any recovered block or predicted block without additional signaling.

[0074] Подробности LUT обсуждаются.[0074] The details of the LUT are discussed.

[0075] Можно отметить, что фильтрация подразумевает умножение компонентов спектра R(i) на коэффициент масштабирования, который всегда меньше 1. Также можно заметить, что при высоких значениях R (i) масштабный коэффициент близок к 1. На основе этих наблюдений осуществляется фильтрация спектра с использованием таблицы поиска, которая позволяет исключить умножение и деление из операций фильтрации:[0075] It can be noted that filtering involves multiplying the spectrum components R(i) by a scaling factor that is always less than 1. It can also be seen that at high values of R(i) the scaling factor is close to 1. Based on these observations, the spectrum is filtered using a lookup table that allows you to exclude multiplication and division from filtering operations:

[0076] Коэффициент усиления спектра меньше 1, поэтому фильтрация может быть реализована на основе чтения краткой таблицы поиска (LUT) по следующим формулам:[0076] The spectrum gain is less than 1, so filtering can be implemented based on reading a short lookup table (LUT) with the following formulas:

Figure 00000017
Figure 00000017

где

Figure 00000018
. (i) - индекс компонента спектра, R(i) - компонент спектра, соответствующий индексу (i), σ - параметр фильтрации, а THR - пороговое значение, m - константа нормализации, равная количеству компонентов спектра. Например, m равно 1, 2, 3, 4…where
Figure 00000018
. (i) - spectrum component index, R(i) - spectrum component corresponding to index (i), σ - filtering parameter, and THR - threshold value, m - normalization constant equal to the number of spectrum components. For example, m is 1, 2, 3, 4…

[0077] В качестве примера, THR можно рассчитать по следующей формуле:[0077] As an example, THR can be calculated using the following formula:

Figure 00000019
= C
Figure 00000019
= C

где C - значение, близкое к 1, например 0,8 или 0,9. Для уменьшения размера LUT пороговое значение THR может зависеть от значения QP.where C is a value close to 1, such as 0.8 or 0.9. To reduce the LUT size, the THR threshold may depend on the QP value.

Для дальнейшего уменьшения размера LUT может быть введено второе пороговое значение для замены небольших отфильтрованных значений нулем. В этом случае отфильтрованный компонент спектра - это

Figure 00000020
, который дополнительно получается как:To further reduce the LUT size, a second threshold may be introduced to replace small filtered values with zero. In this case, the filtered component of the spectrum is
Figure 00000020
, which is additionally obtained as:

Figure 00000021
Figure 00000021

При этом THR2 определяет пороговое значение, ниже которого отфильтрованный компонент спектра считается нулевым. Второе THR2 также может быть определено в зависимости от значения QP.In this case, THR2 defines a threshold value below which the filtered spectrum component is considered to be zero. The second THR2 may also be determined depending on the QP value.

[0078] После фильтрации в частотной области на этапе 308 выполняется обратное одномерное преобразование для отфильтрованного компонента спектра для получения отфильтрованных пикселей

Figure 00000022
:[0078] After filtering in the frequency domain, at step 308, an inverse one-dimensional transform is performed on the filtered component of the spectrum to obtain filtered pixels
Figure 00000022
:

Figure 00000023
Figure 00000023

[0079] На этапе 310, 310' результат обратного одномерного преобразования помещается в линейный буфер отфильтрованных восстановленных пикселей или отфильтрованных пикселей. [0079] In step 310, 310', the result of the inverse one-dimensional transform is placed in a linear buffer of filtered reconstructed pixels or filtered pixels.

[0080] На этапе 312, 312' (не показан на фиг. 3A или 3B) отфильтрованный блок формируется на основе отфильтрованных пикселей, оцененных на предыдущих этапах обработки. В качестве примера отфильтрованный блок может быть отфильтрованным предсказанным блоком. В качестве другого примера отфильтрованный блок может быть отфильтрованным восстановленным блоком.[0080] In step 312, 312' (not shown in FIG. 3A or 3B), a filtered block is generated based on the filtered pixels estimated in previous processing steps. As an example, the filtered block may be a filtered predicted block. As another example, the filtered block may be a filtered reconstructed block.

[0081] Как показано на фиг. 3A в качестве варианта осуществления, после этапа 306 фильтрации отфильтрованный пиксель f(0) помещается в свое исходное положение в соответствии с предварительно заданным шаблоном сканирования. Другие отфильтрованные сэмплы f(1) - f(7) не используются. В другом варианте осуществления более одного отфильтрованного пикселя, например все отфильтрованные пиксели из линейного буфера отфильтрованных сэмплов, добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, используемым на этапе 302 на фиг. 3А. Перед этапом фильтрации буфер накопления должен быть инициализирован посредством нуля. На последнем этапе нормализации окончательные отфильтрованные пиксели получаются как накопленные значения в буфере накопления, деленные на количество пикселей, добавленных к текущему положению буфера накопления, другими словами, на количество значений пикселей, добавленных к текущему положению буфера накопления в предыдущем этапы обработки. Затем отфильтрованный восстановленный блок или предсказанный блок формируется на основе окончательных отфильтрованных пикселей.[0081] As shown in FIG. 3A as an embodiment, after the filtering step 306, the filtered pixel f(0) is placed in its original position according to a predetermined scan pattern. Other filtered samples f(1) - f(7) are not used. In another embodiment, more than one filtered pixel, such as all filtered pixels from a linear filtered sample buffer, are added to the accumulation buffer in accordance with a predefined scan pattern used in step 302 of FIG. 3A. Before the filtering step, the accumulation buffer must be initialized to zero. In the last normalization step, the final filtered pixels are obtained as the accumulated values in the accumulation buffer divided by the number of pixels added to the current position of the accumulation buffer, in other words, by the number of pixel values added to the current position of the accumulation buffer in the previous processing steps. Then, a filtered reconstructed block or a predicted block is generated based on the final filtered pixels.

[0082] В другом варианте осуществления фильтр имеет одинаковую реализацию для фильтрации как единиц (CU) внутреннего, так и внешнего кодирования.[0082] In another embodiment, the filter has the same implementation for filtering both inner and outer coding units (CUs).

[0083] Фильтр области преобразования Адамара всегда применяется к восстановленным блокам яркости с ненулевыми коэффициентами преобразования, за исключением блоков 4×4 и если параметр квантования слайса больше 17. Параметры фильтра явным образом получаются из кодированной информации. Предлагаемый фильтр, если он применяется, выполняется на декодированных сэмплах сразу после восстановления блока. Отфильтрованный результат используется как для вывода, так и для пространственного и временного предсказания.[0083] The Hadamard transform region filter is always applied to reconstructed luma blocks with non-zero transform coefficients, except for 4x4 blocks and if the slice quantization parameter is greater than 17. The filter parameters are explicitly derived from the encoded information. The proposed filter, if applied, is executed on the decoded samples immediately after the block is reconstructed. The filtered result is used both for output and for spatial and temporal prediction.

[0084] Обсуждается процесс фильтрации, схематически представленный на фигуре 3C.[0084] Discusses the filtering process shown schematically in Figure 3C.

[0085] Для каждого пикселя из восстановленного блока обработка пикселей содержит следующие этапы:[0085] For each pixel from the reconstructed block, pixel processing comprises the following steps:

[0086] Сканируют 4 соседних пикселя вокруг пикселя обработки, включая текущий, в соответствии с шаблоном сканирования.[0086] Scan 4 neighboring pixels around the processing pixel, including the current one, in accordance with the scan pattern.

[0087] Выполняют 4-точечное преобразование Адамара считываемых пикселей.[0087] A 4-point Hadamard transform of the read pixels is performed.

[0088] Спектральная фильтрация по формулам (1) и (2).[0088] Spectral filtering according to formulas (1) and (2).

[0089] Первый компонент спектра, соответствующий значению DC, пропускается без фильтрации.[0089] The first component of the spectrum corresponding to the DC value is passed without filtering.

[0090] Выполняют обратное 4-точечное преобразование Адамара отфильтрованного спектра.[0090] An inverse 4-point Hadamard transform of the filtered spectrum is performed.

[0091] После этапа фильтрации отфильтрованные пиксели помещаются в свои исходные положения в буфер накопления.[0091] After the filtering step, the filtered pixels are placed in their original positions in the accumulation buffer.

[0092] После завершения фильтрации пикселей накопленные значения нормализуются по количеству групп обработки, используемых для каждой фильтрации пикселей. Благодаря использованию заполнения одного сэмпла вокруг блока количество групп обработки равно 4 для каждого пикселя в блоке, а нормализация выполняется посредством сдвига вправо на 2 бита.[0092] After the pixel filtering is completed, the accumulated values are normalized by the number of processing groups used for each pixel filtering. Due to the use of filling one sample around the block, the number of processing groups is 4 for each pixel in the block, and normalization is performed by shifting to the right by 2 bits.

[0093] Видно, что все пиксели в блоке могут обрабатываться независимо, если требуется максимальный параллелизм.[0093] It can be seen that all pixels in a block can be processed independently if maximum parallelism is desired.

[0094] В этих вариантах осуществления пороговое значение THR установлено на предварительно заданное значение, например 128, что в случае простой реализации требует хранения 128 (1 << 7) записей 7-битных значений для каждого QP.[0094] In these embodiments, the THR threshold is set to a predetermined value, such as 128, which in a simple implementation would require storing 128 (1 << 7) records of 7-bit values for each QP.

[0095] Размер LUT влияет на количество требований к встроенной памяти и стоимость аппаратной реализации фильтра. Чтобы уменьшить объем встроенной памяти, LUT рассчитывается только для ограниченного набора QP, начиная с QP 20 с постоянным интервалом 8. Всего сохранено пять предварительно заданных LUT (для пяти групп QP). Для фильтрации текущего блока QP CU округляется до ближайшего из таблицы.[0095] The size of the LUT influences the number of on-chip memory requirements and the cost of the hardware implementation of the filter. To reduce the built-in memory, the LUT is calculated only for a limited set of QPs, starting from QP 20 at a constant interval of 8. A total of five preset LUTs (for five QP groups) are stored. To filter the current QP CU block, it is rounded up to the nearest one from the table.

[0096] Для дальнейшего уменьшения размера LUT N младших битов отбрасываются (или игнорируются) во время формирования LUT. Это позволяет иметь разреженное табличное представление.[0096] To further reduce the LUT size, the N least significant bits are discarded (or ignored) during LUT generation. This allows you to have a sparse table view.

[0097] Для примерной реализации A N равно 2, что приводит к 7-2=5 битам глубины таблицы (32 записи 7-битных значений);[0097] For an exemplary implementation of A, N is 2, resulting in 7-2=5 table depth bits (32 entries of 7-bit values);

[0098] Для примерной реализации B N равно 3, что приводит к 7-3=4 битам глубины таблицы (16 записей 7-битных значений).[0098] For an exemplary implementation of B, N is 3, resulting in 7-3=4 table depth bits (16 entries of 7-bit values).

[0099] Таким образом, общий объем памяти, необходимый для всего хранилища LUT:[0099] Thus, the total amount of memory required for the entire LUT store is:

[00100] Для примерной реализации A: 5×32x7 бит=1120 бит=140 байтов;[00100] For exemplary implementation A: 5x32x7 bits=1120 bits=140 bytes;

[00101] Для примерной реализации B: 5×16x7 бит=560 бит=70 байтов;[00101] For exemplary implementation B: 5x16x7 bits=560 bits=70 bytes;

[00102] Примерная реализация B нацелена на 16 байтов размера LUT, чтобы обеспечить параллельный доступ в программной реализации из-за возможности хранить всю LUT в одном 16-байтовом регистре SSE, поэтому предлагается эта конфигурация.[00102] Exemplary implementation B targets 16 bytes of LUT size to allow parallel access in software implementation due to the ability to store the entire LUT in a single 16 byte SSE register, so this configuration is suggested.

[00103] Если используется преобразование Адамара и отфильтрованный пиксель помещается в его исходное положение в соответствии с предварительно заданным шаблоном сканирования, то следующий псевдокод описывает процесс фильтрации способа 300:[00103] If a Hadamard transform is used and a filtered pixel is placed in its original position according to a predefined scan pattern, then the following pseudo-code describes the filtering process of the method 300:

// сканирование восстановленных/предсказанных пикселей// scan recovered/predicted pixels

const int x0=pIn [p0];const int x0=pIn[p0];

const int x1=pIn [p1];const int x1=pIn[p1];

const int x2=pIn [p2];const int x2=pIn[p2];

const int x3=pIn [p3]; // p0-p3 определяют шаблон сканированияconst int x3=pIn[p3]; // p0-p3 define the scan pattern

// 1D прямое преобразование Адамара// 1D direct Hadamard transform

const int y0=x0+x2;const int y0=x0+x2;

const int y1=x1+x3;const int y1=x1+x3;

const int y2=x0-x2;const int y2=x0-x2;

const int y3=x1-x3;const int y3=x1-x3;

const int t0=y0+y1;const int t0=y0+y1;

const int t1=y0-y1;const int t1=y0-y1;

const int t2=y2+y3;const int t2=y2+y3;

const int t3=y2-y3;const int t3=y2-y3;

// фильтрация в частотной области// filtering in the frequency domain

const int z0=pTbl [t0];const int z0=pTbl[t0];

const int z1=pTbl [t1];const int z1=pTbl[t1];

const int z2=pTbl [t2];const int z2=pTbl[t2];

const int z3=pTbl [t3];const int z3=pTbl[t3];

// обратное преобразование Адамара// inverse Hadamard transform

const int iy0=z0+z2;const int iy0=z0+z2;

const int iy1=z1+z3;const int iy1=z1+z3;

const int iy2=z0-z2;const int iy2=z0-z2;

const int iy3=z1-z3;const int iy3=z1-z3;

// вывод отфильтрованного пикселя// output filtered pixel

pOut [p0_out] = iy0+iy1; pOut[p0_out] = iy0+iy1;

[00104] Если используется преобразование Адамара, и более одного отфильтрованного пикселя из линейного буфера отфильтрованных сэмплов добавляются в буфер накопления, то следующий псевдокод описывает процесс фильтрации этого сценария:[00104] If a Hadamard transform is used and more than one filtered pixel from the linear filtered sample buffer is added to the accumulation buffer, then the following pseudo-code describes the filtering process for this scenario:

// сканирование восстановленных/предсказанных пикселей// scan recovered/predicted pixels

const int x0=pIn [p0];const int x0=pIn[p0];

const int x1=pIn [p1];const int x1=pIn[p1];

const int x2=pIn [p2];const int x2=pIn[p2];

const int x3=pIn [p3]; // p0-p3 определяют шаблон сканированияconst int x3=pIn[p3]; // p0-p3 define the scan pattern

// 1D прямое преобразование Адамара// 1D direct Hadamard transform

const int y0=x0+x2;const int y0=x0+x2;

const int y1=x1+x3;const int y1=x1+x3;

const int y2=x0-x2;const int y2=x0-x2;

const int y3=x1-x3;const int y3=x1-x3;

const int t0=y0+y1;const int t0=y0+y1;

const int t1=y0-y1;const int t1=y0-y1;

const int t2=y2+y3;const int t2=y2+y3;

const int t3=y2-y3;const int t3=y2-y3;

// фильтрация в частотной области// filtering in the frequency domain

const int z0=pTbl [t0];const int z0=pTbl[t0];

const int z1=pTbl [t1];const int z1=pTbl[t1];

const int z2=pTbl [t2];const int z2=pTbl[t2];

const int z3=pTbl [t3];const int z3=pTbl[t3];

// обратное преобразование Адамара// inverse Hadamard transform

const int iy0=z0+z2;const int iy0=z0+z2;

const int iy1=z1+z3;const int iy1=z1+z3;

const int iy2=z0-z2;const int iy2=z0-z2;

const int iy3=z1-z3;const int iy3=z1-z3;

[00105] В качестве альтернативного варианта осуществления буфер накопления должен быть инициализирован посредством неотфильтрованных значений пикселей, умноженных на максимальное количество значений пикселей, которые должны быть добавлены в блок. Максимальное количество значений пикселей, добавляемых в блок, определяется на основе шаблона сканирования. Шаблон сканирования действительно определяет количество значений пикселей, добавляемых для каждого положения. Исходя из этого, максимальное количество из всех положений в блоке может быть выбрано и использовано во время инициализации буфера накопления. Затем на каждом этапе накопления неотфильтрованное значение пикселя вычитается из соответствующего отфильтрованного значения и добавляется в буфер накопления:[00105] As an alternative implementation, the accumulation buffer should be initialized with unfiltered pixel values multiplied by the maximum number of pixel values to be added to the block. The maximum number of pixel values added to a block is determined based on the scan pattern. The scan template really determines the number of pixel values added for each position. Based on this, the maximum number of all positions in the block can be selected and used during the initialization of the accumulation buffer. Then, at each accumulation step, the unfiltered pixel value is subtracted from the corresponding filtered value and added to the accumulation buffer:

// накопление отфильтрованных пикселей// accumulation of filtered pixels

pOut [p0] + = iy0+iy1 // p0-p3 определяют шаблон сканированияpOut [p0] += iy0+iy1 // p0-p3 define the scan pattern

pOut [p1] + = iy0-iy1pOut[p1] += iy0-iy1

pOut [p2] + = iy2+iy3pOut [p2] + = iy2+iy3

pOut [p3] + = iy2-iy3pOut[p3] += iy2-iy3

Для уменьшения глубины цвета накопленных значений пикселей перед помещением в буфер накопления результат обратного преобразования может быть нормализован на размер преобразования (m):To reduce the color depth of the accumulated pixel values before being placed in the accumulation buffer, the result of the inverse transform can be normalized by the transform size (m):

pOut[p0] += ((iy0+iy1) >> HTDF_BIT_RND4);pOut[p0] += ((iy0+iy1) >> HTDF_BIT_RND4);

pOut[p1] += ((iy0-iy1) >> HTDF_BIT_RND4);pOut[p1] += ((iy0-iy1) >> HTDF_BIT_RND4);

pOut[p2] += ((iy2+iy3) >> HTDF_BIT_RND4);pOut[p2] += ((iy2+iy3) >> HTDF_BIT_RND4);

pOut[p3] += ((iy2-iy3) >> HTDF_BIT_RND4);pOut[p3] += ((iy2-iy3) >> HTDF_BIT_RND4);

где HTDF_BIT_RND4 равно 2 для размера преобразования 4.where HTDF_BIT_RND4 is 2 for a transform size of 4.

[00106] Этот вариант осуществления позволяет системе избежать сохранения количества пикселей, добавленных к текущему положению, и позволяет выполнять заменяющее деление и умножение посредством операции сдвига на последнем этапе нормализации и этапе инициализации буфера накопления соответственно, если максимальное количество добавленных значений пикселей является степенью, например, 2, 4, 8 и т.д.[00106] This embodiment allows the system to avoid saving the number of pixels added to the current position, and allows the replacement division and multiplication to be performed by a shift operation in the last normalization step and the accumulation buffer initialization step, respectively, if the maximum number of added pixel values is a power, for example, 2, 4, 8 etc.

Для точности этапа нормализации это можно сделать следующим образом:For the accuracy of the normalization step, this can be done like this:

// нормализация// normalization

pFiltered[p0] = CLIP3(0, (1 << BIT_DEPTH) - 1, (pOut[p0] + HTDF_CNT_SCALE_RND) >> HTDF_CNT_SCALE); pFiltered[p0] = CLIP3(0, (1 << BIT_DEPTH) - 1, (pOut[p0] + HTDF_CNT_SCALE_RND) >> HTDF_CNT_SCALE);

где HTDF_CNT_SCALE - это Log2 количества пикселей, помещенных в буфер накопления, например, для количества 4 HTDF_CNT_SCALE равно 2, и HTDF_CNT_SCALE_RND равно (1 << (HTDF_CNT_SCALE - 1)). CLIP3 - это функция отсечения, которая обеспечивает нахождение отфильтрованного сэмпла в допустимом диапазоне между минимальным и максимальным значением сэмпла.where HTDF_CNT_SCALE is Log2 of the number of pixels placed in the accumulation buffer, for example, for the number 4 HTDF_CNT_SCALE is 2 and HTDF_CNT_SCALE_RND is (1 << (HTDF_CNT_SCALE - 1)). CLIP3 is a clipping function that ensures that the filtered sample is within the allowed range between the sample's minimum and maximum values.

[00107] Как было упомянуто выше, чтобы избежать изменения средней яркости отфильтрованного блока, может быть выгодно пропустить фильтрацию первого компонента спектра (соответствующего значению DC). Это дополнительно позволяет упростить реализацию фильтра. В этом случае этап фильтрации выглядит следующим образом:[00107] As mentioned above, in order to avoid changing the average brightness of the filtered block, it may be advantageous to skip the filtering of the first component of the spectrum (corresponding to the DC value). This further simplifies the implementation of the filter. In this case, the filtering step looks like this:

// фильтрация в частотной области// filtering in the frequency domain

const int z0 = t0;const int z0 = t0;

const int z1 = pTbl[t1];const int z1 = pTbl[t1];

const int z2 = pTbl[t2];const int z2 = pTbl[t2];

const int z3 = pTbl[t3];const int z3 = pTbl[t3];

[00108] Для каждого пикселя внутри восстановленного блока или предсказанного блока шаблон сканирования выбирается на основе положения фильтрующего пикселя внутри восстановленного блока или предсказанного блока для этапов 302 и 310. Шаблон сканирования выбран, чтобы гарантировать, что все пиксели будут внутри восстановленного CU или педсказанного CU и расположены близко к пикселю обработки. Внутри шаблона можно использовать произвольный порядок сканирования. Например, предварительно заданный шаблон сканирования определяется как набор пространственных или растровых смещений относительно положения текущего пикселя внутри восстановленного блока или предсказанного блока, где смещения указывают на соседние пиксели внутри восстановленного блока или предсказанного блока. Ниже приведен пример шаблона сканирования: (0,0), (0,1), (1,0), (1,1)[00108] For each pixel within the reconstructed block or predicted block, a scan template is selected based on the position of the filter pixel within the reconstructed block or predicted block for steps 302 and 310. The scan template is selected to ensure that all pixels will be within the reconstructed CU or predicted CU, and located close to the processing pixel. Within the template, you can use an arbitrary scan order. For example, a predetermined scan pattern is defined as a set of spatial or raster offsets relative to the position of the current pixel within the reconstructed block or predicted block, where the offsets indicate neighboring pixels within the reconstructed block or predicted block. Below is an example scan pattern: (0.0), (0.1), (1.0), (1.1)

[00109] Фиг. 4A иллюстрирует пример шаблонов для разного положения пикселя внутри квадратного блока (например, квадратный предсказанный блок CU или квадратный восстановленный блок CU). Согласно этой фигуре граничные пиксели могут быть отфильтрованы на основе 4-точечного преобразования, а центральные пиксели могут быть отфильтрованы на основе 8-точечного преобразования.[00109] FIG. 4A illustrates an example of patterns for different pixel positions within a square block (eg, square predicted CU or square reconstructed CU). According to this figure, edge pixels may be filtered based on a 4-point transform, and center pixels may be filtered based on an 8-point transform.

[00110] Для прямоугольных восстановленных блоков или предсказанных блоков, в которых размер одной стороны больше размера другой стороны, сканирование должно выполняться по длинной стороне. Например, для горизонтального прямоугольного блока можно использовать следующий порядок сканирования[00110] For rectangular reconstructed blocks or predicted blocks in which the size of one side is larger than the size of the other side, scanning should be performed on the long side. For example, for a horizontal rectangular block, you can use the following scan order

(0,-3), (0,-2), (0,-1), (0,0), (0,1), (0,2), (0,3), (0,4),(0,-3), (0,-2), (0,-1), (0.0), (0.1), (0.2), (0.3), (0.4) ,

где в каждой паре (y, x) x - горизонтальное смещение, а y - вертикальное смещение относительно положения фильтрующего пикселя внутри фильтрующего восстановленного или предсказанного блока.where in each (y, x) pair, x is a horizontal offset and y is a vertical offset relative to the location of the filter pixel within the filter reconstructed or predicted block.

[00111] Предлагаемый фильтр может применяться выборочно в зависимости от условий:[00111] The proposed filter can be applied selectively depending on the conditions:

для восстановленных блоков или предсказанных блоков с ненулевым остаточным сигналом;for recovered blocks or predicted blocks with a non-zero residual signal;

в зависимости от размера блока, например, для небольшого восстановленного блока или предсказанного блока (минимальный размер меньше порогового значения);depending on the block size, for example, for a small reconstructed block or a predicted block (minimum size is less than a threshold value);

в зависимости от соотношения сторон восстановленного блока или предсказанного блока;depending on the aspect ratio of the reconstructed block or the predicted block;

в зависимости от режима предсказания (внутреннее или внешнее) восстановленного блока или предсказанного блока, например, посредством применения фильтра только к внешне предсказанным блокам; или жеdepending on the prediction mode (intra or inter) of the reconstructed block or the predicted block, for example, by applying a filter only to the inter-predicted blocks; or

для любой комбинации описанных выше условий.for any combination of the above conditions.

Например, чтобы избежать обработки небольших блоков, ваш фильтр может быть пропущен (не применен), если размер блока меньше или равен 4×4 пикселей. Это снижает сложность наихудшего случая, который обычно соответствует обработке наименьшего блока.For example, to avoid processing small blocks, your filter can be skipped (not applied) if the block size is less than or equal to 4x4 pixels. This reduces the complexity of the worst case, which usually corresponds to the processing of the smallest block.

В качестве другого примера фильтр применяется только к блокам, которые имеют ненулевой остаточный сигнал. Это выгодно, если использовалось квантование или остатки, поскольку фильтр предназначен для улучшения ошибки квантования. Если в блоке нет остатка, это может указывать на то, что предсказание хорошее и дополнительная фильтрация не требуется.As another example, the filter is only applied to blocks that have a non-zero residual signal. This is advantageous if quantization or residuals were used, since the filter is intended to improve the quantization error. If there is no remainder in the block, this may indicate that the prediction is good and no additional filtering is required.

В качестве другого примера, поскольку внутреннее предсказание обычно хуже, чем внешнее предсказание, фильтр может применяться к блокам, предсказанным с внутренним предсказанием, независимо от наличия ненулевого остатка и применяться к блокам с внешним предсказанием, только если блок имеет ненулевой остаточный сигнал.As another example, since intra prediction is generally worse than inter prediction, the filter may be applied to intra predicted blocks regardless of the presence of a non-zero residual, and applied to inter predicted blocks only if the block has a non-zero residual signal.

[00112] Сигма параметра фильтра и шаблон сканирования могут различаться в зависимости от условий, перечисленных выше.[00112] The sigma of the filter parameter and the scan pattern may differ depending on the conditions listed above.

[00113] Фиг. 4B иллюстрирует эквивалентную форму фильтра с учетом одного пикселя внутри текущего блока для примерного шаблона сканирования (0,0), (0,1), (1,0), (1,1). Для фильтрации текущего пикселя используется квадрат размером 3×3 пикселя (текущий пиксель выделен темно-серым цветом в центре квадрата 3×3). Отфильтрованный пиксель получается посредством объединения отфильтрованных сэмплов области преобразования из четырех групп 2×2. Можно понять, что если текущий пиксель расположен на границе блока (например, верхней границе), верхняя левая и верхняя правая группы 2×2 недоступны, и только две группы 2×2 (нижняя левая и нижняя правая) могут использоваться для фильтрации. Кроме того, если текущий пиксель расположен в углу блока (например, в верхнем левом углу), для фильтрации может использоваться только одна группа 2×2 (нижняя правая).[00113] FIG. 4B illustrates the equivalent filter shape given one pixel within the current block for an exemplary scan pattern (0.0), (0.1), (1.0), (1.1). To filter the current pixel, a 3×3 pixel square is used (the current pixel is highlighted in dark gray in the center of the 3×3 square). The filtered pixel is obtained by combining the filtered transform area samples from four 2×2 groups. It can be understood that if the current pixel is located on a block boundary (eg, top boundary), the top left and top right 2x2 groups are not available, and only two 2x2 groups (bottom left and bottom right) can be used for filtering. Also, if the current pixel is located in the corner of the block (for example, in the upper left corner), only one 2×2 group (lower right) can be used for filtering.

[00114] Чтобы повысить качество фильтрации посредством использования дополнительных четырех групп 2×2 для граничных и угловых пикселей, текущий блок может быть заполнен дополнительными сэмплами. На фиг. 4C показан пример заполнения слева и сверху. Сэмплы заполнения можно брать из уже восстановленных блоков.[00114] To improve the quality of filtering by using an additional four groups of 2x2 for border and corner pixels, the current block can be filled with additional samples. In FIG. 4C shows an example padding on the left and top. Fill samples can be taken from already restored blocks.

[00115] Для дальнейшей унификации процесса фильтрации для всех пикселей в блоке (четыре группы 2×2 используются для фильтрации всех пикселей в текущем блоке) в дополнение к верхнему левому заполнению текущий блок также может быть расширен посредством нижнего правого заполнения, как показано на фиг. 4D. Унификация фильтрации выгодна благодаря упрощению реализации посредством исключения особых случаев обработки угловых пикселей и/или граничных пикселей.[00115] To further unify the filtering process for all pixels in a block (four 2x2 groups are used to filter all pixels in the current block), in addition to top left padding, the current block can also be extended with bottom right padding, as shown in FIG. 4D. The unification of the filtering is beneficial due to the simplification of the implementation by eliminating the special cases of handling corner pixels and/or boundary pixels.

[00116] Сэмплы заполнения предпочтительно берутся из скорректированных соседних сэмплов из уже восстановленных блоков. В современных видеокодеках эти уже восстановленные блоки могут располагаться либо слева, либо сверху от текущего блока, либо справа или снизу, в зависимости от порядка восстановления блоков. Используя дополнительную информацию из скорректированных сэмплов, улучшается качество фильтрации и делается переход между блоками более плавным.[00116] The padding samples are preferably taken from corrected neighboring samples from already reconstructed blocks. In modern video codecs, these already restored blocks can be located either to the left or above the current block, or to the right or below, depending on the order in which the blocks are restored. By using additional information from the adjusted samples, the filtering quality is improved and the transition between blocks is smoother.

[00117] Получение восстановленных сэмплов из скорректированных блоков или ранее восстановленных блоков может потребовать дополнительной нагрузки на память для аппаратной или программной реализации. Чтобы свести к минимуму или исключить дополнительную память, выгодно использовать сэмплы, предназначенные для внутреннего предсказания текущего блока, которые обычно берутся из одной, двух или более строк и столбцов из соседних блоков, скорректированных под границы текущего блока. Эти сэмплы обычно хранятся в быстродействующей памяти (также известной как «линейный» буфер) для легкого доступа для внутреннего предсказания и называются опорными сэмплами внутреннего предсказания.[00117] Obtaining recovered samples from corrected blocks or previously recovered blocks may require additional memory overhead for hardware or software implementation. To minimize or eliminate additional memory, it is advantageous to use samples intended for intra-prediction of the current block, which are usually taken from one, two or more rows and columns from neighboring blocks, corrected for the boundaries of the current block. These samples are usually stored in fast memory (also known as a "linear" buffer) for easy access for intra-prediction and are referred to as intra-prediction reference samples.

[00118] Следует дополнительно отметить, что в некоторых реализациях перед выполнением внутреннего предсказания опорный сэмпл (внутренние опорные сэмплы) предварительно обрабатывается перед предсказанием, например, посредством сглаживания, повышения резкости, удаления звона или двусторонней фильтрации. В этом случае может быть выгодно использовать предварительно обработанные сэмплы для заполнения текущего блока.[00118] It should be further noted that in some implementations, prior to performing intra prediction, the reference sample(s) is preprocessed prior to prediction, such as by smoothing, sharpening, ringing removal, or two-way filtering. In this case, it may be advantageous to use pre-rendered samples to populate the current block.

[00119] Если некоторые сэмплы в заполненной области недоступны из-за порядка восстановления скорректированного блока, требуемые сэмплы могут быть заполнены из пикселей расширяющейся границы текущего блока до заполненной области, как показано на фиг. 4D.[00119] If some samples in the filled area are not available due to the order in which the adjusted block is restored, the required samples can be filled from the pixels of the current block's expanding border to the filled area, as shown in FIG. 4D.

[00120] На фиг.5А показана блок-схема, иллюстрирующая этапы соответствующего способа 500 внутриконтурной фильтрации согласно варианту осуществления. Восстановленный блок содержит множество пикселей. Способ 500 содержит следующие этапы, на которых: загружают (502) текущий пиксель и его соседние пиксели в линейный буфер в соответствии с предварительно заданным шаблоном сканирования; получают (504) компоненты спектра посредством выполнения одномерного преобразования пикселей в линейном буфере; получают (506) отфильтрованные компоненты спектра посредством умножения каждого компонента спектра на коэффициент усиления, при этом коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации; получают (508) отфильтрованные пиксели посредством выполнения обратного одномерного преобразования для отфильтрованных компонентов спектра; и формируют (510) отфильтрованный восстановленный блок на основе отфильтрованных пикселей, оцененных на предыдущих этапах обработки. Способ 500 может выполняться посредством устройства кодирования, показанного на фиг. 1, и устройства декодирования, показанного на фиг. 2. Подробная информация 300 на фиг. 3A или информация 300’ на фиг. 3B также применяются к способу 500, как показано на фиг. 5А.[00120] FIG. 5A is a flowchart illustrating the steps of a corresponding in-loop filtering method 500 according to an embodiment. The reconstructed block contains many pixels. The method 500 includes the following steps: loading (502) the current pixel and its neighboring pixels into a linear buffer in accordance with a predetermined scan pattern; get (504) components of the spectrum by performing a one-dimensional transformation of pixels in a linear buffer; get (506) filtered components of the spectrum by multiplying each component of the spectrum by the gain, while the gain depends on the corresponding component of the spectrum and the filtering parameter; obtaining (508) filtered pixels by performing an inverse one-dimensional transform on the filtered spectrum components; and generating (510) a filtered reconstructed block based on the filtered pixels estimated in previous processing steps. Method 500 may be performed by the encoder shown in FIG. 1 and the decoding device shown in FIG. 2. Detailed information 300 in FIG. 3A or information 300' in FIG. 3B also apply to method 500 as shown in FIG. 5A.

[00121] Подобно фиг. 5A, фиг. 5B показывает блок-схему, иллюстрирующую этапы соответствующего способа 500' внутриконтурной фильтрации согласно другому варианту осуществления. В этом примере блок (или кадр) - это предсказанный блок, а отфильтрованный блок - это отфильтрованный предсказанный блок. Подробное описание фигуры 5B аналогично фигуре 5A.[00121] Similar to FIG. 5A, FIG. 5B shows a block diagram illustrating the steps of a corresponding in-loop filtering method 500' according to another embodiment. In this example, a block (or frame) is a predicted block and a filtered block is a filtered predicted block. The detailed description of figure 5B is similar to figure 5A.

[00122] Обсуждается аппаратная реализация.[00122] A hardware implementation is discussed.

[00123] Фильтр области преобразования Адамара размещается сразу после восстановления блока и обрабатывает сэмплы, которые могут быть задействованы в последующем восстановлении блоков, в частности, в качестве опорных сэмплов внутреннего предсказания. Таким образом, задержка, вносимая фильтром, должна быть минимизирована, чтобы гарантировать, что весь процесс восстановления не будет сильно затронут.[00123] The Hadamard transform region filter is placed immediately after block recovery and processes samples that can be used in subsequent block recovery, in particular as intra prediction reference samples. Thus, the delay introduced by the filter must be minimized to ensure that the entire recovery process is not heavily affected.

[00124] Преобразование Адамара считается относительно простым для аппаратной реализации. Для его реализации требуются только сложения, а не умножения. Как видно из нижеприведенного Псевдокода 1, прямое и обратное преобразование содержит 4 сложения, которые могут быть выполнены параллельно или посредством повторного использования промежуточных результатов с двумя последовательными операциями сложения. [00124] The Hadamard transform is considered relatively simple to implement in hardware. Its implementation requires only additions, not multiplications. As can be seen from Pseudo-code 1 below, the forward and backward transformation contains 4 additions, which can be performed in parallel or by reusing intermediate results with two consecutive additions.

Псевдокод 1Pseudocode 1

[00125]

Figure 00000024
[00125]
Figure 00000024

[00126] Прямое и обратное преобразование Адамара может быть реализовано аппаратно с использованием комбинационной логики. Тем больше внимания требуется для быстрого и параллельного доступа к LUT.[00126] Forward and inverse Hadamard transforms can be implemented in hardware using combinational logic. The more attention is required for fast and parallel access to the LUT.

[00127] Обсуждается LUT на основе SRAM. [00127] SRAM-based LUTs are discussed.

[00128] В этом примере реализации LUT хранится во встроенном статическом RAM с одним портом (фигура 6).[00128] In this implementation example, the LUT is stored in the embedded single port static RAM (Figure 6).

[00129] Как только данные предыдущего этапа обработки становятся доступными в буфере по переднему фронту тактового сигнала, доступ к ним осуществляется посредством комбинационной логики, реализующей прямое преобразование Адамара (содержащее два последующих сложения). После завершения адрес комбинационной логики доступен для каждой LUT. С использованием инвертора и заднего фронта тактового сигнала доступ к данным осуществляется из SRAM. Вторая комбинационная логика, реализующая обратное преобразование Адамара и нормализацию, запускается сразу после получения данных из LUT. Выходные отфильтрованные сэмплы становятся доступными в конце текущего тактового цикла и готовы к обработке посредством следующего алгоритма при следующем переднем фронте тактового сигнала.[00129] As soon as the data of the previous stage of processing becomes available in the buffer on the rising edge of the clock signal, it is accessed through combinational logic that implements a direct Hadamard transform (containing two subsequent additions). Once completed, the combinational logic address is available for each LUT. Using an inverter and a falling clock edge, data is accessed from SRAM. The second combinational logic, which implements the inverse Hadamard transform and normalization, is launched immediately after receiving data from the LUT. The output filtered samples become available at the end of the current clock cycle and are ready to be processed by the next algorithm at the next clock rising edge.

[00130] Обсуждается LUT на основе триггеров.[00130] Trigger-based LUTs are discussed.

[00131] Учитывая, что одна таблица для процесса фильтрации ограничена 16 записями, более эффективно реализовать LUT на основе триггеров. Такая схема не требует нескольких LUT для параллельной обработки и фронта тактового сигнала для доступа к данным. Параллельный доступ обеспечивается посредством мультиплексора, как показано на фигуре 7, иллюстрирующей примерную схему для обработки одной группы 2×2. В предлагаемой схеме требуется 16 триггеров по 7 бит для обеспечения параллельного доступа в процессе фильтрации. LUT, специфичная для QP, может быть загружена в триггеры, как только QP для текущей CU станет доступным.[00131] Considering that one table for the filtering process is limited to 16 entries, it is more efficient to implement a LUT based on triggers. Such a scheme does not require multiple LUTs for parallel processing and a clock edge for data access. Parallel access is provided by a multiplexer as shown in Figure 7 illustrating an exemplary scheme for processing one 2x2 group. The proposed scheme requires 16 flip-flops of 7 bits each to provide parallel access during the filtering process. A QP specific LUT can be loaded into triggers as soon as the QP for the current CU becomes available.

[00132] Объединение результатов фильтрации четырех групп 2×2 с повторным использованием результатов одного и того же выходного сигнала окончательного фильтра пространственной группы формируется, как показано на фигуре 8.[00132] Combining the filtering results of four 2x2 groups with reuse of the results of the same output of the final space group filter is formed as shown in Figure 8.

[00133] Проведенный выше анализ позволяет сделать вывод, что предложенный фильтр может быть реализован аппаратно за один такт с использованием либо SRAM, либо реализации LUT на основе триггера.[00133] The above analysis leads to the conclusion that the proposed filter can be implemented in hardware in one cycle using either SRAM or a trigger-based LUT implementation.

[00134] Обсуждается анализ сложности.[00134] Complexity analysis is discussed.

[00135] Измерим влияние на скорость передачи/PSNR относительно точки (точек) привязки.[00135] Measure the impact on the rate/PSNR with respect to the anchor point(s).

[00136] Анализ сложности (например, измерение времени кодирования и декодирования, анализ сложности посредством заполнения таблицы ниже).[00136] Complexity analysis (eg, measurement of encoding and decoding time, complexity analysis by completing the table below).

Тест#Test# форма фильтраfilter shape Вычислительная сложность (Количество умножений /сложений/ сдвигов/проверок*) на сэмплComputational complexity (Number of multiplications/additions/shifts/checks*) per sample Точность умноженияMultiplication precision Параллельно-ориентированный (каждый сэмпл можно фильтровать независимо от других сэмплов)Parallel Oriented (each sample can be filtered independently of other samples) Количество тактовых цикловNumber of clock cycles потребность в памятиneed for memory Как получить коэффициенты фильтраHow to get filter coefficients Минимальный размер CU для применения фильтровMinimum CU size to apply filters 14.3a14.3a 3×33×3 0/20+4 l-бит добавить для цикла/5/60/20+4 l-bit add for loop/5/6 нет данныхno data даYes < 1 такта< 1 cycle 140 байт (32 7-битных значения на группу qp)140 bytes (32 7-bit values per group qp) Предварительно рассчитаны в LUTPrecalculated in LUT 4×8, 8×44×8, 8×4 14.3в14.3v 3×33×3 0/20+4 l-бит добавить для цикла/5/60/20+4 l-bit add for loop/5/6 нет данныхno data даYes < 1 такта< 1 cycle 70 байт (16 7-битных значений на группу qp)70 bytes (16 7-bit values per group qp) Предварительно рассчитаны в LUTPrecalculated in LUT 4×8, 8×44×8, 8×4

* max/min/abs засчитываются как проверки.* max/min/abs count as checks.

Таблица 1. Обобщенные результаты анализа сложности CE14-3Table 1. Summary results of the CE14-3 complexity analysis

[00137] Обсуждаются экспериментальные результаты. [00137] Experimental results are discussed.

[00138] Обсуждаются объективные результаты. [00138] Objective results are discussed.

[00139] Объективные показатели представлены в следующих таблицах:[00139] Objective indicators are presented in the following tables:

Полностью внутренний Main10Fully internal Main10 Более BMS-2.0.1 с конфигурацией VTMOver BMS-2.0.1 with VTM configuration YY уat V.v. EncTEnct DecTDecT

Класс A1Class A1 -0.19%-0.19% 0.29%0.29% 0.24%0.24% 110%110% 115%115% Класс A2Class A2 -0.35%-0.35% 0.31%0.31% 0.32%0.32% 109%109% 112%112% Класс BClass B -0.42%-0.42% 0.29%0.29% 0.32%0.32% 109%109% 113%113% Класс CClass C -0.83%-0.83% 0.23%0.23% 0.42%0.42% 110%110% 110%110% Класс EClass E -0.54%-0.54% 0.28%0.28% 0.19%0.19% 109%109% 114%114% ИтогоTotal -0.48%-0.48% 0.28%0.28% 0.31%0.31% 109%109% 112%112% Класс DClass D -0.61%-0.61% 0.47%0.47% 0.01%0.01% 109%109% 108%108% Класс F (необязательный)Class F (optional) -0.82%-0.82% 0.07%0.07% 0.04%0.04% 108%108% 107%107% Main 10 с произвольным доступом Main 10 random access Более BMS-2.0.1 с конфигурацией VTMOver BMS-2.0.1 with VTM configuration YY уat V.v. EncTEnct DecTDecT Класс A1Class A1 -0.43%-0.43% -0.23%-0.23% -0.25%-0.25% 105%105% 104%104% Класс A2Class A2 -0.92%-0.92% -0.57%-0.57% -0.43%-0.43% 105%105% 103%103% Класс BClass B -0.69%-0.69% -0.02%-0.02% -0.27%-0.27% 106%106% 104%104% Класс CClass C -0.75%-0.75% 0.10%0.10% 0.14%0.14% 105%105% 104%104% Класс EClass E         ИтогоTotal -0.70%-0.70% -0.14%-0.14% -0.19%-0.19% 105%105% 104%104% Класс DClass D -0.67%-0.67% -0.14%-0.14% 0.53%0.53% 104%104% 103%103% Класс F (необязательный)Class F (optional) -0.77%-0.77% 0.10%0.10% 0.13%0.13% 104%104% 102%102% B Main10 с низкой задержкой B Main10 low latency Более BMS-2.0.1 с конфигурацией VTMOver BMS-2.0.1 with VTM configuration YY уat V.v. EncTEnct DecTDecT Класс A1Class A1           Класс A2Class A2         Класс BClass B -0.58%-0.58% 0.52%0.52% 0.54%0.54% 104%104% 104%104% Класс CClass C -0.74%-0.74% 0.33%0.33% 0.52%0.52% 104%104% 104%104% Класс EClass E -0.75%-0.75% 0.31%0.31% 1.09%1.09% 102%102% 101%101% ИтогоTotal -0.68%-0.68% 0.40%0.40% 0.67%0.67% 104%104% 103%103% Класс DClass D -0.90%-0.90% 0.75%0.75% 0.28%0.28% 104%104% 104%104% Класс F (необязательный)Class F (optional) -0.73%-0.73% 0.20%0.20% -0.09%-0.09% 103%103% 102%102%

Таблица 2. Производительность кодирования теста 14-3aTable 2. Encoding performance of test 14-3a

Полностью внутренний Main10Fully internal Main10 Более BMS-2.0.1 с конфигурацией VTMOver BMS-2.0.1 with VTM configuration YY уat V.v. EncTEnct DecTDecT Класс A1Class A1 -0.17%-0.17% 0.28%0.28% 0.28%0.28% 110%110% 115%115% Класс A2Class A2 -0.33%-0.33% 0.27%0.27% 0.29%0.29% 109%109% 112%112% Класс BClass B -0.40%-0.40% 0.31%0.31% 0.39%0.39% 109%109% 113%113% Класс CClass C -0.82%-0.82% 0.20%0.20% 0.32%0.32% 109%109% 110%110% Класс EClass E -0.54%-0.54% 0.34%0.34% 0.25%0.25% 109%109% 113%113% ИтогоTotal -0.47%-0.47% 0.28%0.28% 0.32%0.32% 109%109% 112%112% Класс DClass D -0.65%-0.65% 0.43%0.43% 0.22%0.22% 109%109% 108%108% Класс F (необязательный)Class F (optional) -0.81%-0.81% 0.01%0.01% 0.12%0.12% 108%108% 107%107%

Main 10 с произвольным доступом Main 10 random access Более BMS-2.0.1 с конфигурацией VTMOver BMS-2.0.1 with VTM configuration YY уat V.v. EncTEnct DecTDecT Класс A1Class A1 -0.41%-0.41% -0.36%-0.36% -0.24%-0.24% 105%105% 105%105% Класс A2Class A2 -0.92%-0.92% -0.49%-0.49% -0.37%-0.37% 105%105% 103%103% Класс BClass B -0.69%-0.69% -0.12%-0.12% 0.12%0.12% 106%106% 104%104% Класс CClass C -0.75%-0.75% 0.14%0.14% 0.10%0.10% 105%105% 104%104% Класс EClass E         ИтогоTotal -0.70%-0.70% -0.17%-0.17% -0.06%-0.06% 105%105% 104%104% Класс DClass D -0.69%-0.69% -0.30%-0.30% 0.49%0.49% 104%104% 103%103% Класс F (необязательный)Class F (optional) -0.82%-0.82% 0.11%0.11% 0.11%0.11% 104%104% 102%102% B Main10 с низкой задержкойB Main10 low latency Более BMS-2.0.1 с конфигурацией VTMOver BMS-2.0.1 with VTM configuration YY уat V.v. EncTEnct DecTDecT Класс A1Class A1           Класс A2Class A2         Класс BClass B -0.57%-0.57% 0.49%0.49% 0.69%0.69% 104%104% 104%104% Класс CClass C -0.76%-0.76% 0.31%0.31% 0.42%0.42% 104%104% 106%106% Класс EClass E -0.67%-0.67% -0.66%-0.66% -0.48%-0.48% 102%102% 102%102% ИтогоTotal -0.66%-0.66% 0.14%0.14% 0.31%0.31% 103%103% 104%104% Класс DClass D -0.88%-0.88% 0.92%0.92% 0.31%0.31% 103%103% 105%105% Класс F (необязательный)Class F (optional) -0.74%-0.74% 0.38%0.38% -0.15%-0.15% 103%103% 102%102%

Таблица 3. Производительность кодирования теста 14-3bTable 3. Encoding performance of test 14-3b

[00140] Предлагаемая LUT 70 байт с 16 байтами на QP, что позволяет реализовать HW за 1 такт, и т.д. Предложено принять фильтр домена преобразования Адамара в следующую версию VTM.[00140] The proposed LUT is 70 bytes with 16 bytes per QP, which allows HW to be implemented in 1 cycle, etc. It is proposed to adopt the Hadamard transform domain filter in the next version of VTM.

[00141] Следующие ссылки включены в настоящий документ посредством ссылки, как если бы они были воспроизведены полностью:[00141] The following references are incorporated herein by reference as if they were reproduced in their entirety:

[00142] Документ Совместной экспертной группы по видео (JVET - Joint Video Experts Team) JVET-K0068.[00142] Joint Video Experts Team (JVET) document JVET-K0068.

[00143] Ниже приведены примеры оптимизации LUT.[00143] The following are examples of LUT optimization.

[00144] В качестве одного примера 1 для формирования таблицы поиска (LUT) выбирается набор параметров квантования (QP), где набор QP включает в себя первый QP, соответствующий (i) индексу, и второй QP, соответствующий (i+1) индексу, а первый QP и второй QP имеют постоянный интервал. Например, интервал может быть равен 8, 10 или 16.[00144] As one example 1, a set of quantization parameters (QP) is selected to generate a lookup table (LUT), where the QP set includes a first QP corresponding to (i) index and a second QP corresponding to (i+1) index, and the first QP and the second QP have a constant spacing. For example, the interval could be 8, 10, or 16.

[00145] Например, выбирая постоянный интервал равным 8 в качестве примера, разреженная таблица с LUT для qp = {20, 28, 36, 44, 52}. Интервал между первым gp 20 и вторым gp 28 равен 8. Точно так же интервал между вторым gp 28 и третьим gp 36 равен 8. При фильтрации выбирается таблица с ближайшим QP.[00145] For example, taking a constant interval of 8 as an example, a sparse table with LUT for qp = {20, 28, 36, 44, 52}. The interval between the first gp 20 and the second gp 28 is 8. Similarly, the interval between the second gp 28 and the third gp 36 is 8. Filtering selects the table with the closest QP.

[00146] В качестве другого примера, если взять постоянный интервал, равный 8, в качестве примера разреженная таблица с LUT для qp = {18, 26, 34, 42, 50}. Интервал между первым GP 18 и вторым GP 26 равен 8. Точно так же интервал между вторым gp 26 и третьим gp 34 равен 8. При фильтрации выбирается таблица с ближайшим QP.[00146] As another example, if we take a constant interval of 8, as an example, a sparse table with LUT for qp = {18, 26, 34, 42, 50}. The spacing between the first GP 18 and the second GP 26 is 8. Similarly, the spacing between the second gp 26 and the third gp 34 is 8. Filtering selects the table with the closest QP.

[00147][00147]

Размер LUT: 5×128=640 байтLUT size: 5×128=640 bytes

Ниже приведен псевдокод 2, отражающий, какие QP выбраны для формирования таблиц поиска (LUT).Pseudo-code 2 below reflects which QPs are selected to generate lookup tables (LUTs).

Figure 00000025
Figure 00000025

псевдокод 2pseudocode 2

[00148] В псевдокоде HTDF_QP_ROUND представляет постоянный интервал. Использование интервала как степени двойки является преимуществом, позволяя реализовать операцию деления для вычисления индекса как сдвига. Следует отметить, что могут быть выбраны различные значения постоянного интервала, например 2, 4, 10, 15 или 16 и т.д. Более того, в качестве альтернативного варианта осуществления интервал может быть произвольным, и LUT вычисляется для произвольного набора QP.[00148] In pseudocode, HTDF_QP_ROUND represents a constant interval. Using the interval as a power of two is advantageous, allowing you to implement the division operation to calculate the index as a shift. It should be noted that different values of the constant interval can be chosen, for example 2, 4, 10, 15 or 16, etc. Moreover, as an alternative implementation, the interval may be arbitrary, and the LUT is calculated for an arbitrary set of QPs.

[00149] В процессе фильтрации индекс, соответствующий LUT для заданного QP, вычисляется как:[00149] During the filtering process, the index corresponding to the LUT for a given QP is calculated as:

int idx = ((qp - HTDF_MIN_QP) + (HTDF_QP_ROUND >> 1)) / HTDF_QP_ROUND; int idx = ((qp - HTDF_MIN_QP) + (HTDF_QP_ROUND >> 1)) / HTDF_QP_ROUND;

или, альтернативно, с меньшей точностью:or alternatively, with less precision:

int idx = (qp - HTDF_MIN_QP) / HTDF_QP_ROUND;int idx = (qp - HTDF_MIN_QP) / HTDF_QP_ROUND;

Если постоянный интервал равен степени 2, например, тогда индекс LUT может быть преимущественно рассчитан с использованием операции сдвига вместо деления:If the constant interval is a power of 2, for example, then the LUT index can advantageously be calculated using a shift operation instead of a division:

int idx = (qp - HTDF_MIN_QP) >> HTDF_QP_ROUND_LOG2 = (qp - HTDF_MIN_QP) >> 3;int idx = (qp - HTDF_MIN_QP) >> HTDF_QP_ROUND_LOG2 = (qp - HTDF_MIN_QP) >> 3;

[00150] В другом примере 2 декодер или кодер отбрасывает N битов из значений таблицы, а N является целым числом. Это позволяет иметь разреженное представление LUT, в котором хранятся только выбранные значения из заданного диапазона. Например, N равно 3. Максимальное значение таблицы равно 127 (7 бит), 3 бита отбрасываются, результат - 4 бита, то есть 16 записей 7 битных значений - примерно 16 байт.[00150] In another example 2, the decoder or encoder discards N bits from the table values, and N is an integer. This allows you to have a sparse LUT representation that only stores selected values from a given range. For example, N is 3. The maximum value of the table is 127 (7 bits), 3 bits are discarded, the result is 4 bits, that is, 16 entries of 7 bit values - approximately 16 bytes.

[00151] Ниже приведен псевдокод 3, описывающий, как LUT формируется в соответствии с заданным значением qp.[00151] The following is a pseudocode 3 describing how the LUT is formed in accordance with a given qp value.

псевдокод 3pseudocode 3

Figure 00000026
Figure 00000027
Figure 00000026
Figure 00000027

Figure 00000028
Figure 00000028

В данном примере HTDF_TBL_SH определяет количество отбрасываемых битов, которое может быть 1, 2, 3, 4 и т.д.In this example, HTDF_TBL_SH specifies the number of bits to discard, which can be 1, 2, 3, 4, and so on.

Ниже приведен псевдокод, иллюстрирующий доступ к разреженной LUT во время фильтрации:The following is a pseudo-code illustrating access to a sparse LUT during filtering:

Figure 00000029
Figure 00000029

[00152] При объединении приведенных выше примеров 1 и 2 фиг. 9 в качестве примера показывает результат оптимизации LUT. Как показано на фиг. 9, объединяющей примеры 1 и 2: 5 таблиц × 16 записей × 7 бит=560 бит=70 байт.[00152] When combining the above examples 1 and 2 of FIG. 9 shows the result of LUT optimization as an example. As shown in FIG. 9 combining examples 1 and 2: 5 tables × 16 records × 7 bits=560 bits=70 bytes.

[00153] Следует отметить, что количество записей LUT определяется посредством HTDF_SHORT_TBL_THR (пороговое значение из абзаца [0076]) и HTDF_TBL_SH количеством отброшенных битов. Учитывая, что пороговое значение равно 128 (то есть 1 << 7) и отброшено 3 бит, получается, что количество записей в таблице равно 1 << (7-3) = 1 << 4=16. Как описано выше, пороговое значение LUT предпочтительно выбирается так, чтобы результат уравнения из абзаца [0077] был близок к 1, и, как это также описано там, пороговое значение может отличаться в зависимости от QP. Таким образом, для формирования LUT для более высоких значений QP может быть выгодно увеличить пороговое значение со 128 (1 << 7) до, например, 256 (1 << 8). В этом случае для сохранения той же точности записей LUT (например, с отброшенными 3 битами) потребуется 32 записи (32=1 << (8-3) = 1 << 5). В качестве альтернативы, чтобы сохранить тот же размер LUT для более высоких QP, что и для более низких QP, точность может быть дополнительно снижена до 4, чтобы сохранить 16 записей в таблице 16=1 << (8-4) = 1 << 4.[00153] It should be noted that the number of LUT entries is determined by HTDF_SHORT_TBL_THR (threshold from paragraph [0076]) and HTDF_TBL_SH by the number of discarded bits. Given that the threshold is 128 (i.e. 1 << 7) and 3 bits are dropped, the number of entries in the table is 1 << (7-3) = 1 << 4=16. As described above, the LUT threshold is preferably chosen such that the result of the equation in paragraph [0077] is close to 1, and as also described there, the threshold may differ depending on QP. Thus, in order to form a LUT for higher QP values, it may be advantageous to increase the threshold value from 128 (1 << 7) to, for example, 256 (1 << 8). In this case, 32 entries (32=1 << (8-3) = 1 << 5) would be required to maintain the same accuracy of LUT entries (eg, with 3 bits discarded). Alternatively, to keep the same LUT size for higher QPs as for lower QPs, the precision can be further reduced to 4 to keep 16 entries in the table 16=1<<(8-4)=1<< four.

[00154] В некоторых реализациях сохранение ограниченного размера LUT и наличие THR для соблюдения уравнения из абзаца [0077} может быть противоречивым. Действительно, при высоких значениях QP (что приводит к высокому значению σ) сохранение размера LUT, ограниченного, например, 16 записями, может привести к нежелательному разрыву в передаточной функции фильтра (которая представлена посредством LUT) около значения 120, как показано на фиг. 10 (которая также включает в себя способ субсэмплирования LUT посредством отбрасывания 3 младших битов).[00154] In some implementations, maintaining a limited LUT size and having a THR to satisfy the equation in paragraph [0077} may be inconsistent. Indeed, at high QP values (resulting in a high σ value), keeping the LUT size limited to, for example, 16 entries can lead to an undesirable discontinuity in the filter transfer function (which is represented by the LUT) around 120, as shown in FIG. 10 (which also includes a method for subsampling the LUT by discarding the 3 least significant bits).

[00155] Фиг. 11 представляет ту же таблицу с записями таблицы, построенными поочередно без учета эффекта субсэмплирования LUT, иллюстрирующую разрыв между последней записью LUT с индексом 15 и следующей точкой в передаточной функции фильтра с индексом 16.[00155] FIG. Figure 11 shows the same table with table entries built one at a time without taking into account the effect of LUT subsampling, illustrating the gap between the last LUT entry at index 15 and the next point in the filter transfer function at index 16.

[00156] Фиг. 12 иллюстрирует способ, как можно устранить разрыв, используя вспомогательную функцию, проходящую через значение THR в аргументе, соответствующем последней записи LUT+1, например, используя уравнение прямой линии (обозначено зеленым цветом), проходящее через точку THR=128 в аргументе 16 который соответствует аргументу последней записи LUT (который равен 15), увеличенному на 1 или, другими словами, размеру LUT (который равен 16) и пересекает ось x в некоторой точке (например, в значении 11, как в данном примере). Следует отметить, что другие типы вспомогательных функций могут использоваться на основе того же принципа, например экспоненциальная, логарифмическая, параболическая и т.д. или их комбинация.[00156] FIG. 12 illustrates how the gap can be bridged by using a helper function passing through the THR value in the argument corresponding to the last LUT+1 entry, for example, using a straight line equation (indicated in green) passing through the THR=128 point in argument 16 which corresponds to the argument of the last LUT entry (which is 15) increased by 1 or, in other words, the size of the LUT (which is 16) and intersects the x-axis at some point (for example, at a value of 11, as in this example). It should be noted that other types of helper functions can be used based on the same principle, such as exponential, logarithmic, parabolic, etc. or their combination.

[00157] Фиг. 13 иллюстрирует пример устранения разрыва посредством взятия максимума из двух значений при формировании LUT, где первое значение - это запись LUT, как описано выше

Figure 00000030
; а второе - это значение вспомогательной функции (в данном примере прямая линия) при том же аргументе i:
Figure 00000031
[00157] FIG. 13 illustrates an example of breaking the gap by taking the maximum of two values in LUT generation, where the first value is the LUT entry as described above.
Figure 00000030
; and the second is the value of the helper function (in this example, a straight line) with the same argument i:
Figure 00000031

где

Figure 00000032
представляет вспомогательную функцию, а вспомогательная функция имеет значение, равное THR в i, соответствующем аргументу последней LUT + 1.where
Figure 00000032
represents a helper function, and the helper function has a value equal to THR in i corresponding to the argument of the last LUT + 1.

[00158] Фиг. 14 иллюстрирует передаточную функцию фильтра после применения описанного выше способа использования вспомогательного уравнения прямой линии и субсэмплирования LUT посредством отбрасывания 3 младших значащих битов.[00158] FIG. 14 illustrates the filter transfer function after applying the above-described method of using an auxiliary straight line equation and subsampling the LUT by discarding the 3 least significant bits.

[00159] Как описано в абзаце [00144], одна LUT может использоваться для группы QP. Чтобы охватить возможный диапазон QP, используется предварительно заданный набор QP, и для каждого QP из набора формируется одна LUT. На фиг.15 показан пример передаточных функций фильтра в зависимости от пяти QP в наборе и соответствующих таблиц (от 0 до 4). В этом примере таблица 4 формируется с использованием способа, описанного в абзацах [00156] - [00157], с прямой вспомогательной функцией, пересекающей ось x в значении 11; а таблица 3 формируется с использованием того же способа с прямой вспомогательной функцией, пересекающей ось x в значении 9. Таблицы, используемые в этом примере, имеют значения в соответствии с:[00159] As described in paragraph [00144], one LUT may be used for a QP group. To cover the possible range of QPs, a predefined set of QPs is used and one LUT is formed from the set for each QP. 15 shows an example of filter transfer functions versus five QPs in the set and corresponding tables (0 to 4). In this example, table 4 is generated using the method described in paragraphs [00156] - [00157], with the direct helper function crossing the x-axis at a value of 11; and table 3 is formed using the same method with a direct helper function crossing the x-axis at a value of 9. The tables used in this example have values according to:

таблица0 = {0, 2, 10, 19, 28, 36, 45, 53, 61, 70, 78, 86, 94, 102, 110, 118,},table0 = {0, 2, 10, 19, 28, 36, 45, 53, 61, 70, 78, 86, 94, 102, 110, 118,},

таблица 1 = {0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115,},table 1 = {0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115,},

таблица2 = {0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103,},table2 = {0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103,},

таблица3 = {0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110,},table3 = {0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110,},

таблица4 = {0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102,},table4 = {0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102,},

[00160] Как описано выше в абзацах [00150]-[00153], способ субсэмплирования таблицы может отбрасывать N битов из значений таблицы, чтобы уменьшить размер таблицы. Как также упоминалось в этих абзацах, N может быть различным в зависимости от QP, используемого для формирования определенной таблицы, и выбранного значения THR для этой таблицы. Например, для более низких значений QP параметр фильтрации

Figure 00000033
относительно ниже, чем для более высоких QP. Таким образом, абсолютное значение THR может быть уменьшено без ущерба для производительности. Кроме того, чтобы сохранить размер таблицы одинаковым для всех QP в наборе (что выгодно для упрощения реализации) и уменьшить частоту субсэмплирования для более низких QP (которые соответствуют меньшему уровню сжатия и лучшему качеству восстановленного изображения), может быть выгодно уменьшить количество отброшенных бит N по сравнению с другими таблицами QP, например, установив N для нижнего QP равным 2 и установив THR равным 64. Фиг. 16 иллюстрирует пример передаточных функций фильтра для пяти QP в наборе на основе соответствующих таблиц (от 0 до 4) с N, установленным на 2 для первой таблицы (соответствует нижнему диапазону QP) и N, установленным на 3 для других таблиц. Этот пример также включает в себя способ использования вспомогательной функции для формирования таблиц 3 и 4, как описано в абзацах [00159] - [00160]. Для таблицы 4 прямолинейная вспомогательная функция пересекает ось абсцисс в значении 11. Для таблицы 4 прямолинейная вспомогательная функция пересекает ось абсцисс в значении 9. Таблицы, используемые в этом примере, имеют значения в соответствии с:[00160] As described above in paragraphs [00150]-[00153], the table subsampling method may discard N bits from table values to reduce the size of the table. As also mentioned in these paragraphs, N can be different depending on the QP used to form a particular table and the selected THR value for that table. For example, for lower QP values, the filter parameter
Figure 00000033
relatively lower than for higher QPs. Thus, the absolute value of THR can be reduced without sacrificing performance. In addition, to keep the table size the same for all QPs in the set (which is beneficial to simplify implementation) and to reduce the subsampling rate for lower QPs (which correspond to less compression and better quality of the reconstructed image), it may be beneficial to reduce the number of discarded bits N by compared to other QP tables, for example by setting N for lower QP to 2 and setting THR to 64. FIG. 16 illustrates an example of filter transfer functions for five QPs in a set based on respective tables (0 to 4) with N set to 2 for the first table (corresponding to the lower QP range) and N set to 3 for the other tables. This example also includes a method for using a helper function to generate tables 3 and 4, as described in paragraphs [00159] - [00160]. For Table 4, the straight-line helper function crosses the x-axis at value 11. For Table 4, the straight-line helper crosses the x-axis at value 9. The tables used in this example have values according to:

таблица0 = {0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57,},table0 = {0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57,},

таблица1 = {0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115,},table1 = {0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115,},

таблица2 = {0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103,},table2 = {0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103,},

таблица3 = {0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110,},table3 = {0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110,},

таблица4 = {0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102,},table4 = {0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102,},

[00161] Как описано выше в абзацах [00150]-[00153], способ субсэмплирования таблицы может отбрасывать N битов из значений таблицы, чтобы уменьшить размер таблицы. Как также упоминалось в этих абзацах, N может быть различным в зависимости от QP, используемого для формирования определенной таблицы, и выбранного значения THR для этой таблицы. Например, для более высоких значений QP параметр фильтрации σ относительно выше, чем для более низких QP, что может потребовать увеличения значения THR, чтобы уравнение из абзаца [0077] было ближе к 1. В то же время, чтобы сохранить размер LUT одинаковым для всех QP в наборе (что выгодно из-за упрощения реализации), а также учитывая, что для более высоких значений QP восстановленное изображение имеет больше искажений и увеличение субсэмплирования LUT приемлемо из-за субъективно незаметного эффекта для субсэмплирования LUT при наличии сильных артефактов сжатия, значение N наименее значащих битов может быть увеличено до 4, например, для последней и для предпоследней таблицы в наборе. Фиг. 17 иллюстрирует пример передаточных функций фильтра для пяти QP в наборе на основе соответствующих таблиц (от 0 до 4) с N, равным 2 для первой таблицы (таблица 0, соответствующая нижнему диапазону QP), N, установленным на 4 для последней и предпоследней таблиц (таблица 3 и таблица 4), и N, установленным на 3 для других таблиц. В этом примере TRH установлено на 64 для формирования первой таблицы, установлено на 256 для последней и предпоследней таблицы и установлено на 128 для остальных таблиц. Этот пример также включает в себя способ использования вспомогательной функции для формирования таблиц 3 и 4, как описано в абзацах [00159]-[00160]. Для таблицы 4 прямолинейная вспомогательная функция пересекает ось абсцисс в значении 6. Для таблицы 4 прямолинейная вспомогательная функция пересекает ось абсцисс в значении 8. Таблицы, используемые в этом примере, имеют значения в соответствии с:[00161] As described in paragraphs [00150]-[00153] above, the table subsampling method may discard N bits from the table values to reduce the size of the table. As also mentioned in these paragraphs, N can be different depending on the QP used to form a particular table and the selected THR value for that table. For example, for higher QP values, the filtering parameter σ is relatively higher than for lower QPs, which may require increasing the THR value to bring the equation from paragraph [0077] closer to 1. At the same time, in order to keep the LUT size the same for all QP in the set (which is beneficial due to the simplification of implementation), and given that for higher QP values, the reconstructed image has more distortion and an increase in LUT subsampling is acceptable due to a subjectively imperceptible effect for LUT subsampling in the presence of strong compression artifacts, the value of N the least significant bits can be increased to 4, for example, for the last and penultimate table in the set. Fig. 17 illustrates an example of filter transfer functions for five QPs in a set based on respective tables (0 to 4) with N equal to 2 for the first table (table 0 corresponding to the lower QP range), N set to 4 for the last and penultimate tables ( table 3 and table 4), and N set to 3 for other tables. In this example, TRH is set to 64 for the first table, set to 256 for the last and penultimate tables, and set to 128 for the rest of the tables. This example also includes a method for using a helper function to generate tables 3 and 4, as described in paragraphs [00159]-[00160]. For table 4, the straight-line helper function crosses the x-axis at value 6. For table 4, the straight-line helper crosses the x-axis at value 8. The tables used in this example have values according to:

таблица0 = {0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57,},table0 = {0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57,},

таблица1 = {0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115,},table1 = {0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115,},

таблица2 = {0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103,},table2 = {0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103,},

таблица3 = {0, 0, 3, 9, 19, 32, 47, 64, 81, 99, 117, 135, 154, 179, 205, 230,},table3 = {0, 0, 3, 9, 19, 32, 47, 64, 81, 99, 117, 135, 154, 179, 205, 230,},

таблица4 = {0, 0, 0, 2, 6, 11, 18, 27, 38, 51, 64, 96, 128, 160, 192, 224,},table4 = {0, 0, 0, 2, 6, 11, 18, 27, 38, 51, 64, 96, 128, 160, 192, 224,},

[00162] Фиг. 18 - это блок-схема устройства 600, которое можно использовать для реализации различных вариантов осуществления. Устройство 600 может быть устройством кодирования, как показано на фиг. 1, и устройством декодирования, как показано на фиг. 2. Кроме того, устройство 600 может содержать один или несколько описанных элементов. В некоторых вариантах осуществления устройство 600 оснащено одним или несколькими устройствами ввода/вывода, такими как динамик, микрофон, мышь, сенсорный экран, малая клавиатура, клавиатура, принтер, дисплей и т.п. Устройство 600 может включать в себя один или несколько центральных процессоров (CPU - central processing unit) 610, память 620, запоминающее устройство 630 большой емкости, видеоадаптер 640 и интерфейс 660 ввода-вывода, подключенный к шине. Шина является одной или несколькими из нескольких шинных архитектур любого типа, включая шину памяти или контроллер памяти, периферийную шину, видеошину и т.п.[00162] FIG. 18 is a block diagram of an apparatus 600 that can be used to implement various embodiments. Device 600 may be an encoder as shown in FIG. 1 and a decoding device as shown in FIG. 2. In addition, the device 600 may include one or more of the elements described. In some embodiments, device 600 is equipped with one or more input/output devices such as a speaker, microphone, mouse, touch screen, keypad, keyboard, printer, display, and the like. Device 600 may include one or more central processing units (CPU) 610, memory 620, mass storage device 630, video adapter 640, and I/O interface 660 connected to the bus. A bus is one or more of several bus architectures of any type, including a memory bus or memory controller, a peripheral bus, a video bus, and the like.

[00163] CPU 610 может иметь любой тип электронного процессора данных. Память 620 может иметь или быть системной памятью любого типа, такой как статическое оперативное запоминающее устройство (SRAM), динамическое оперативное запоминающее устройство (DRAM), синхронное DRAM (SDRAM), постоянное запоминающее устройство (ROM), их комбинация, или тому подобное. В варианте осуществления память 620 может включать в себя ROM для использования при загрузке и DRAM для хранения программ и данных для использования во время выполнения программ. В вариантах осуществления память 620 является энергонезависимой. Запоминающее устройство 630 большой емкости включает в себя любой тип запоминающего устройства, в котором хранятся данные, программы и другая информация, а также для обеспечения доступа к данным, программам и другой информации через шину. Запоминающее устройство 630 большой емкости включает в себя, например, один или несколько из твердотельного накопителя, накопителя на жестком диске, накопителя на магнитном диске, накопителя на оптическом диске и т.п.[00163] CPU 610 may be any type of electronic data processor. Memory 620 may be or be any type of system memory, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), read only memory (ROM), a combination thereof, or the like. In an embodiment, memory 620 may include ROM for use during bootup and DRAM for program and data storage for use during program execution. In embodiments, memory 620 is non-volatile. The mass storage device 630 includes any type of storage device that stores data, programs, and other information, and for providing access to data, programs, and other information via a bus. The mass storage device 630 includes, for example, one or more of a solid state drive, a hard disk drive, a magnetic disk drive, an optical disk drive, and the like.

[00164] Видеоадаптер 640 и интерфейс 660 ввода-вывода обеспечивают интерфейсы для подключения внешних устройств ввода и вывода к устройству 600. Например, устройство 600 может обеспечивать клиентам интерфейс команд SQL. Как проиллюстрировано, примеры устройств ввода и вывода включают в себя дисплей 690, подключенный к видеоадаптеру 640, и любую комбинацию мыши/клавиатуры/принтера 670, подключенную к интерфейсу 660 ввода-вывода. К устройству 600 могут быть подключены другие устройства, и могут использоваться дополнительные или меньшее количество интерфейсных карт. Например, карта последовательного интерфейса (не показана) может использоваться для обеспечения последовательного интерфейса для принтера.[00164] Video adapter 640 and I/O interface 660 provide interfaces for connecting external input and output devices to device 600. For example, device 600 may provide a SQL command interface to clients. As illustrated, examples of input and output devices include a display 690 connected to a video adapter 640 and any mouse/keyboard/printer combination 670 connected to an I/O interface 660. Other devices may be connected to device 600 and additional or fewer interface cards may be used. For example, a serial interface card (not shown) may be used to provide a serial interface for a printer.

[00165] Устройство 600 также включает в себя один или несколько сетевых интерфейсов 650, которые включают в себя проводные линии связи, такие как кабель Ethernet и т.п., и/или беспроводные линии связи с узлами доступа или одной или несколькими сетями 680. Сетевой интерфейс 650 позволяет устройству 600 связываться с удаленными устройствами через сети 680. Например, сетевой интерфейс 650 может обеспечивать связь с базой данных. В варианте осуществления устройство 600 подключено к локальной сети или глобальной сети для обработки данных и обмена данными с удаленными устройствами, такими как другие блоки обработки, Интернет, удаленные хранилища и т.п.[00165] Device 600 also includes one or more network interfaces 650, which include wired links such as an Ethernet cable and the like, and/or wireless links to access points or one or more networks 680. Network interface 650 allows device 600 to communicate with remote devices via networks 680. For example, network interface 650 can provide communication with a database. In an embodiment, the device 600 is connected to a local area network or a wide area network for processing data and communicating with remote devices such as other processing units, the Internet, remote repositories, and the like.

[00166] Предлагаемая схема внутриконтурного фильтра или фильтра предсказания имеет следующие преимущества по сравнению с традиционными способами адаптивной фильтрации, такими как ALF:[00166] The proposed in-loop or prediction filter scheme has the following advantages over traditional adaptive filtering methods such as ALF:

Предлагаемый фильтр частотной области получает параметры фильтрации (коэффициенты усиления частотной области) из восстановленного кадра или предсказанного блока на стороне декодера, поэтому параметры фильтрации не требуется передавать из кодера на сторону декодера.The proposed frequency domain filter obtains filter parameters (frequency domain gains) from the reconstructed frame or predicted block at the decoder side, so the filter parameters do not need to be transmitted from the encoder to the decoder side.

ALF требует комплексной оптимизации скорости и искажения (RDO) на стороне кодера для уменьшения количества взвешенных коэффициентов для передачи. Предлагаемый способ не требует комплексной RDO на стороне кодера (без передачи параметров) и применяется для всех блоков, удовлетворяющих предварительно заданным условиям.ALF requires complex rate and distortion optimization (RDO) on the encoder side to reduce the number of weighted coefficients to transmit. The proposed method does not require a complex RDO on the encoder side (without passing parameters) and is applied to all blocks that meet predefined conditions.

ALF - это линейный фильтр в пиксельной области. Предлагаемый фильтр является нелинейным, поскольку коэффициент усиления для каждого компонента одномерного спектра зависит от значения этого компонента спектра. Это позволяет добиться дополнительной выгоды кодирования от нелинейной обработки.ALF is a linear filter in the pixel domain. The proposed filter is non-linear, since the gain for each component of the one-dimensional spectrum depends on the value of this component of the spectrum. This allows for additional coding gain from non-linear processing.

ALF требует универсальных умножителей на стороне декодера. В предлагаемом способе фильтрация может быть реализована в виде таблицы поиска, так как усиление для каждого коэффициента спектра меньше единицы. Поэтому предложенный способ можно реализовать без умножения.ALF requires universal multipliers on the decoder side. In the proposed method, filtering can be implemented in the form of a lookup table, since the gain for each spectrum coefficient is less than one. Therefore, the proposed method can be implemented without multiplication.

[00167] Таким образом, обеспечен фильтр, позволяющий повысить эффективность кодирования видео с низкой сложностью.[00167] Thus, a filter is provided that can improve the efficiency of video coding with low complexity.

[00168] Хотя конкретный признак или аспект раскрытия может быть раскрыт только в отношении одной из нескольких реализаций или вариантов осуществления, такой признак или аспект может быть объединен с одним или несколькими другими признаками или аспектами других реализаций или вариантов осуществления, которые могут быть желательными и выгодными для любого данного или конкретного применения. Кроме того, в той степени, в которой термины «включать в себя», «иметь», «с» или другие их варианты используются либо в подробном описании, либо в формуле изобретения, предполагается, что такие термины предназначены для включения в себя аналогично термину «содержать». Кроме того, термины «примерный» и «например» означают просто как пример, а не лучший или оптимальный. Возможно, использовались термины «соединенный» и «связанный», а также производные. Следует понимать, что эти термины могли использоваться для обозначения того, что два элемента совместно функционируют или взаимодействуют друг с другом независимо от того, находятся ли они в прямом физическом или электрическом контакте, или они не находятся в прямом контакте друг с другом.[00168] While a particular feature or aspect of the disclosure may only be disclosed in relation to one of several implementations or embodiments, such feature or aspect may be combined with one or more other features or aspects of other implementations or embodiments that may be desirable and beneficial. for any given or specific application. Furthermore, to the extent that the terms "comprise", "have", "with", or other variations thereof are used in either the detailed description or the claims, it is intended that such terms are intended to be included in a manner similar to the term "contain". In addition, the terms "exemplary" and "for example" mean simply as an example, and not the best or optimal. The terms "connected" and "connected" and derivatives may have been used. It should be understood that these terms could be used to mean that two elements co-operate or interact with each other whether they are in direct physical or electrical contact, or they are not in direct contact with each other.

[00169] Хотя конкретные аспекты были проиллюстрированы и описаны в данном документе, специалистам в данной области будет понятно, что различные альтернативные и/или эквивалентные реализации могут быть заменены конкретными аспектами, показанными и описанными без отклонения от объема настоящего раскрытие. Настоящая заявка предназначена для охвата любых адаптаций или вариаций конкретных аспектов, обсуждаемых здесь.[00169] While specific aspects have been illustrated and described herein, those skilled in the art will appreciate that various alternative and/or equivalent implementations may be substituted for the specific aspects shown and described without departing from the scope of this disclosure. This application is intended to cover any adaptations or variations of the specific aspects discussed here.

[00170] Хотя элементы в следующей формуле изобретения изложены в определенной последовательности с соответствующей маркировкой, если изложение формулы изобретения иным образом не подразумевает конкретную последовательность для реализации некоторых или всех этих элементов, эти элементы не обязательно должны быть ограничены реализацией в этой конкретной последовательность.[00170] Although the elements in the following claims are set forth in a specific sequence with appropriate markings, unless the statement of the claims otherwise implies a specific sequence for implementing some or all of these elements, these elements need not be limited to implementation in that specific sequence.

[00171] Многие альтернативы, модификации и вариации будут очевидны специалистам в данной области техники в свете изложенного выше. Конечно, специалисты в данной области техники легко признают, что существует множество применений изобретения, выходящих за рамки описанных здесь. Хотя настоящее изобретение было описано со ссылкой на один или несколько конкретных вариантов осуществления, специалисты в данной области техники признают, что в него могут быть внесены многие изменения, не выходящие за рамки объема настоящего изобретения. Таким образом, следует понимать, что в рамках прилагаемой формулы изобретения и ее эквивалентов изобретение может быть реализовано иначе, чем конкретно описано в данном документе.[00171] Many alternatives, modifications, and variations will be apparent to those skilled in the art in light of the foregoing. Of course, those skilled in the art will readily recognize that there are many applications of the invention beyond those described herein. Although the present invention has been described with reference to one or more specific embodiments, those skilled in the art will recognize that many changes can be made to it without departing from the scope of the present invention. Thus, it is to be understood that within the scope of the appended claims and their equivalents, the invention may be practiced otherwise than as specifically described herein.

Claims (59)

1. Способ обработки блока, причем блок содержит множество пикселей, при этом способ содержит этапы, на которых: 1. A method for processing a block, wherein the block contains a plurality of pixels, the method comprising the steps of: сканируют текущий пиксель блока и соседние с ним пиксели текущего пикселя в соответствии с предварительно заданным шаблоном сканирования, причем блок является восстановленным блоком или предсказанным блоком; scanning the current pixel of the block and adjacent pixels of the current pixel according to a predetermined scanning pattern, the block being a reconstructed block or a predicted block; получают компоненты спектра посредством выполнения преобразования для текущего пикселя и его соседних пикселей; get the components of the spectrum by performing the transformation for the current pixel and its neighboring pixels; определяют, применяется ли фильтр к компонентам спектра, на основе условий; determining whether the filter is applied to the spectrum components based on the conditions; когда фильтр применяется к компоненту спектра, получают отфильтрованные компоненты спектра на основе параметра фильтрации и компонентов спектра; when a filter is applied to a spectrum component, obtaining filtered spectrum components based on the filter parameter and spectrum components; когда фильтр не применяется к компоненту спектра, сохраняют компонент спектра без изменения; when the filter is not applied to the spectrum component, keeping the spectrum component unchanged; получают отфильтрованные пиксели посредством выполнения обратного преобразования для отфильтрованных компонентов спектра; иobtaining filtered pixels by performing an inverse transform on the filtered spectrum components; and формируют отфильтрованный блок на основе отфильтрованных пикселей;generating a filtered block based on the filtered pixels; при этом условия содержат по меньшей мере одно из следующего: wherein the conditions contain at least one of the following: блок имеет ненулевой остаточный сигнал; the block has a non-zero residual signal; размер блока; block size; соотношение сторон блока; block aspect ratio; режим предсказания блока;block prediction mode; режим предсказания блока внутренний; илиblock prediction mode internal; or режим предсказания блока внешний. external block prediction mode. 2. Способ по п. 1, в котором параметр фильтра и/или предварительно заданный шаблон сканирования зависят от условий. 2. The method of claim 1, wherein the filter parameter and/or the predefined scan pattern is dependent on conditions. 3. Способ по п. 1, в котором фильтр применяется, если размер блока, полученного как ширина блока, умноженная на высоту блока, больше 4×4. 3. The method of claim 1, wherein the filter is applied if the block size obtained as the block width times the block height is greater than 4x4. 4. Способ по п. 1, в котором фильтр применяется, если режим предсказания блока является внешним, и блок имеет ненулевой остаточный сигнал. 4. The method of claim 1, wherein the filter is applied if the block prediction mode is extrinsic and the block has a non-zero residual signal. 5. Способ по п. 1, в котором фильтр применяется, если режим предсказания блока является внутренним. 5. The method of claim 1, wherein the filter is applied if the block prediction mode is intra. 6. Способ по п. 1, в котором фильтр не применяется, если режим предсказания блока является внешним, а ширина блока и высота блока больше или равны 32. 6. The method of claim 1, wherein the filter is not applied if the block prediction mode is outer and the block width and block height are greater than or equal to 32. 7. Способ по п. 6, в котором получение отфильтрованных компонентов спектра оценивается на основе таблицы поиска (LUT). 7. The method of claim 6, wherein the acquisition of the filtered spectrum components is evaluated based on a lookup table (LUT). 8. Способ по п. 7, в котором отфильтрованный компонент спектра
Figure 00000034
получают посредством:
8. The method of claim 7, wherein the filtered spectrum component
Figure 00000034
receive through:
Figure 00000035
Figure 00000035
где (i) - индекс компонента спектра, R(i) - компонент спектра, соответствующий индексу (i), σ - параметр фильтрации,
Figure 00000036
- массив в таблице поиска, а THR – пороговое значение.
where (i) - spectrum component index, R(i) - spectrum component corresponding to index (i), σ - filtering parameter,
Figure 00000036
is the array in the lookup table and THR is the threshold value.
9. Способ по п. 8, в котором
Figure 00000037
, m – константа нормализации, равная количеству компонентов спектра.
9. The method according to claim 8, in which
Figure 00000037
, m is the normalization constant equal to the number of spectrum components.
10. Способ по любому из пп. 7-9, в котором параметр фильтрации получают на основе параметра квантования кодека (QP). 10. The method according to any one of paragraphs. 7-9, in which the filtering parameter is obtained based on the codec quantization parameter (QP). 11. Способ по п. 10, в котором параметр фильтрации σ определяется как 11. The method of claim 10, wherein the filtering parameter σ is defined as
Figure 00000038
,
Figure 00000038
,
где QP - параметр квантования кодека,
Figure 00000039
и
Figure 00000040
- константы.
where QP is the codec quantization parameter,
Figure 00000039
and
Figure 00000040
- constants.
12. Способ по п. 11, в котором
Figure 00000041
модифицируют на основе битовой глубины цвета пикселей
Figure 00000042
* (1 << (bit_depth - 8)).
12. The method according to claim 11, in which
Figure 00000041
modified based on the color bit depth of the pixels
Figure 00000042
* (1 << (bit_depth - 8)).
13. Способ по п. 12, в котором параметр фильтрации равен нулю, если QP <= 17, и блок пропускается без фильтрации. 13. The method of claim 12, wherein the filter parameter is zero if QP <= 17 and the block is skipped without filtering. 14. Способ п. 8, в котором THR зависит от значения QP. 14. The method of claim 8, wherein the THR depends on the QP value. 15. Способ по п. 14, в котором THR получают как:15. The method of claim 14 wherein the THR is obtained as:
Figure 00000043
= C,
Figure 00000043
= C,
где C - значение, близкое к 1.where C is a value close to 1. 16. Способ по любому из пп. 1-15, в котором предварительно заданный шаблон сканирования определяется как набор пространственных или растровых смещений относительно положения текущего пикселя внутри блока. 16. The method according to any one of paragraphs. 1-15, in which a predetermined scan pattern is defined as a set of spatial or raster offsets relative to the position of the current pixel within the block. 17. Способ по п. 16, в котором, когда предварительно заданный шаблон сканирования определяется как набор растровых смещений относительно положения текущего пикселя внутри блока, смещения точки к соседним пикселям находятся внутри блока. 17. The method of claim 16, wherein when the predetermined scan pattern is defined as a set of raster offsets relative to the position of the current pixel within the block, the point offsets to neighboring pixels are within the block. 18. Способ по п. 17, в котором предварительно заданный шаблон сканирования определяется следующим образом: scanTmpl[4] (y, x) = {(0,0), (0,1), (1,0), (1,1)}.18. The method of claim 17, wherein the predefined scan pattern is defined as follows: scanTmpl[4] (y, x) = {(0.0), (0.1), (1.0), (1, one)}. 19. Способ по любому из пп. 1-18, в котором по меньшей мере один отфильтрованный пиксель помещается в его исходное положение в соответствии с предварительно заданным шаблоном сканирования. 19. The method according to any one of paragraphs. 1-18, in which at least one filtered pixel is placed in its original position in accordance with a predetermined scan pattern. 20. Способ по любому из пп. 1-19, в котором все отфильтрованные пиксели добавляют в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и в котором буфер накопления инициализируют посредством нуля перед получением отфильтрованных компонентов спектра. 20. The method according to any one of paragraphs. 1-19, in which all filtered pixels are added to the accumulation buffer according to a predetermined scan pattern, and in which the accumulation buffer is initialized to zero before obtaining the filtered spectrum components. 21. Способ по п. 20, в котором окончательные отфильтрованные пиксели получают как накопленные значения в буфере накопления, деленные на количество пикселей, добавленных к текущему положению буфера накопления; и21. The method of claim 20, wherein the final filtered pixels are obtained as the accumulated values in the accumulation buffer divided by the number of pixels added to the current position of the accumulation buffer; and при этом формируют отфильтрованный блок на основе окончательных отфильтрованных пикселей. wherein a filtered block is generated based on the final filtered pixels. 22. Способ по любому из пп. 1-21, в котором различия между всеми отфильтрованными и соответствующими неотфильтрованными пикселями добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и в котором буфер накопления инициализируется посредством неотфильтрованных пикселей, умноженных на максимальное количество значений пикселей, которые должны быть добавлены в блок. 22. The method according to any one of paragraphs. 1-21, in which the differences between all filtered and corresponding unfiltered pixels are added to an accumulation buffer according to a predetermined scan pattern, and in which the accumulation buffer is initialized by the unfiltered pixels multiplied by the maximum number of pixel values to be added to the block. 23. Способ по п. 22, в котором окончательные отфильтрованные пиксели получают как накопленные значения в буфере накопления, деленные на максимальное количество значений пикселей, которые должны быть добавлены в блок. 23. The method of claim 22, wherein the final filtered pixels are obtained as the accumulated values in the accumulation buffer divided by the maximum number of pixel values to be added to the block. 24. Способ по любому из пп. 1-23, содержащий этапы, на которых: сканируют текущий пиксель блока и его соседние пиксели текущего пикселя в соответствии с предварительно заданным шаблоном сканирования в буфер накопления; и24. The method according to any one of paragraphs. 1-23, comprising the steps of: scanning the current pixel of the block and its neighboring pixels of the current pixel in accordance with a predetermined scan pattern into the accumulation buffer; and получают компоненты спектра посредством выполнения преобразования пикселей в буфере накопления. the spectrum components are obtained by performing a pixel transformation in the accumulation buffer. 25. Способ по любому из пп. 1-24, в котором преобразование представляет собой одномерное преобразование. 25. The method according to any one of paragraphs. 1-24, in which the transformation is a one-dimensional transformation. 26. Способ по любому из пп. 1-25, в котором преобразование представляет собой преобразование Адамара. 26. The method according to any one of paragraphs. 1-25, in which the transform is the Hadamard transform. 27. Декодер, содержащий схему обработки для выполнения способа по любому из пп. 1-26. 27. A decoder containing a processing circuit for performing the method according to any one of paragraphs. 1-26. 28. Кодер, содержащий схему обработки для выполнения способа по любому из пп. 1-26. 28. An encoder containing a processing circuit for performing the method according to any one of paragraphs. 1-26. 29. Декодер, содержащий фильтр для выполнения способа по любому из пп. 1-26. 29. A decoder containing a filter for performing the method according to any one of paragraphs. 1-26. 30. Кодер, содержащий фильтр для выполнения способа по любому из пп. 1-26. 30. An encoder containing a filter for performing the method according to any one of paragraphs. 1-26. 31. Декодер, содержащий: 31. Decoder, containing: запоминающее устройство, содержащее инструкции; иa storage device containing instructions; and один или несколько процессоров, связанных с памятью, при этом один или несколько процессоров выполняют инструкции для выполнения способа по любому из пп. 1-26. one or more processors associated with the memory, the one or more processors executing instructions for performing the method of any one of claims. 1-26. 32. Кодер, содержащий: 32. An encoder containing: запоминающее устройство, содержащее инструкции; иa storage device containing instructions; and один или несколько процессоров, связанных с памятью, причем один или несколько процессоров выполняют инструкции для выполнения способа по любому из пп. 1-26. one or more processors associated with the memory, the one or more processors executing instructions for performing the method of any one of claims. 1-26. 33. Считываемый компьютером носитель данных, при этом в считываемом компьютером носителе данных хранится программный код и, при выполнении упомянутого программного кода на компьютере или процессоре, выполняется способ по любому из пп. 1-26.33. A computer-readable storage medium, wherein program code is stored in the computer-readable storage medium and, when said program code is executed on a computer or processor, a method according to any one of paragraphs is performed. 1-26.
RU2021101847A 2018-07-02 2019-07-02 Device and filtration method in video encoding RU2781233C2 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US62/693,441 2018-07-02
US62/725,845 2018-08-31
US62/731,967 2018-09-16
US62/731,972 2018-09-17
US62/735,722 2018-09-24
US62/757,732 2018-11-08
US62/793,866 2019-01-17

Publications (2)

Publication Number Publication Date
RU2021101847A RU2021101847A (en) 2022-08-02
RU2781233C2 true RU2781233C2 (en) 2022-10-07

Family

ID=

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WO 2018117896 А1 - 2018-06-28. EP 2192786 А1 - 2010-06-02. US 2017155905 A1 - 2017-06-01. US 2016014425 A1 - 2016-01-14. LI ZHANG еt al., Description of Core Experiment 2 (CE2) on In-Loop Filters, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-J1022, 10th Meeting: San Diego, 10-20 Apr. 2018. RU 2565499 C2 - 2015-10-20. *

Similar Documents

Publication Publication Date Title
US20210211657A1 (en) Apparatus and Method for Filtering in Video Coding with Look-Up Table Selected Based on Bitstream Information
JP7195348B2 (en) Apparatus and method for filtering in video coding
TWI751623B (en) Method and apparatus of cross-component adaptive loop filtering with virtual boundary for video coding
WO2018067051A1 (en) Deringing filter for video coding
RU2781233C2 (en) Device and filtration method in video encoding