RU2786086C1 - Method and device for cross-component linear modeling for internal prediction - Google Patents

Method and device for cross-component linear modeling for internal prediction Download PDF

Info

Publication number
RU2786086C1
RU2786086C1 RU2021122378A RU2021122378A RU2786086C1 RU 2786086 C1 RU2786086 C1 RU 2786086C1 RU 2021122378 A RU2021122378 A RU 2021122378A RU 2021122378 A RU2021122378 A RU 2021122378A RU 2786086 C1 RU2786086 C1 RU 2786086C1
Authority
RU
Russia
Prior art keywords
value
block
video
samples
difference
Prior art date
Application number
RU2021122378A
Other languages
Russian (ru)
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 Хуавэй Текнолоджиз Ко., Лтд.
Application granted granted Critical
Publication of RU2786086C1 publication Critical patent/RU2786086C1/en

Links

Images

Abstract

FIELD: video encoding.
SUBSTANCE: invention relates to means for video encoding. Restored brightness samples are obtained. Maximum and minimum values of brightness samples are determined based on restored brightness samples. The difference between maximum and minimum values of brightness samples is obtained. A position of the most significant bit of the difference between maximum and minimum values of brightness samples is determined. A value is extracted from a lookup table (LUT), using a set of bits as an index, wherein the set of bits follows the position of the most significant bit of the difference of maximum and minimum values of brightness samples. Parameters α and β of a linear model are obtained based on the extracted value. A predicted value of the brightness sample is calculated using obtained parameters α and β of the linear model.
EFFECT: increase in the efficiency of video encoding.
24 cl, 15 dwg, 4 tbl

Description

ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИCROSS-REFERENCE TO RELATED APPLICATIONS

Эта заявка испрашивает преимущество предварительной заявки США №. 62/786,563, поданной 31 декабря 2018 г. и озаглавленной «METHOD AND APPARATUS OF CROSS-COMPONENT LINEAR MODELING FOR INTRA PREDICTION», которая включена в настоящий документ посредством ссылки.This application claims the benefit of U.S. provisional application no. 62/786,563, filed December 31, 2018, entitled "METHOD AND APPARATUS OF CROSS-COMPONENT LINEAR MODELING FOR INTRA PREDICTION", which is hereby incorporated by reference.

Область техникиTechnical field

Варианты осуществления настоящей заявки (раскрытие) в целом относятся к области обработки изображений и, в частности, к внутреннему предсказанию с использованием кросс-компонентного линейного моделирования.Embodiments of the present application (disclosure) generally relate to the field of image processing and, in particular, to intra prediction using cross-component linear modeling.

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

Видеокодирование (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.Video coding (video encoding and decoding) is used in a wide range of digital video applications, such as digital television broadcast, video transmission over the Internet and mobile networks, real-time conversational applications such as video chat, video conferencing, DVD and Blu-ray discs, video content collection and editing systems; and video camera security applications.

Количество видеоданных, необходимых для изображения даже относительно короткого видео, может быть существенным, что может привести к трудностям, когда данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные обычно сжимаются перед передачей по современным телекоммуникационным сетям. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное обеспечение и/или оборудование в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Затем сжатые данные принимаются в месте назначения устройством распаковки видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные способы сжатия и распаковки, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без них.The amount of video data required to display even a relatively short video can be substantial, which can lead to difficulties when the data must be streamed or otherwise transferred over a bandwidth limited communications network. Thus, video data is typically compressed prior to transmission over modern telecommunications networks. Video size can also be an issue when the video is stored on a storage device, as memory resources can be limited. Video compression devices often use source software and/or hardware to encode video data prior to transmission or storage, thereby reducing the amount of data needed to represent digital video images. The compressed data is then received at the destination by a video decompressor, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques are desired that improve compression rates with little or no loss in image quality.

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

Варианты осуществления настоящей заявки предоставляют устройства и способы для кодирования и декодирования согласно независимым пунктам формулы изобретения.Embodiments of the present application provide devices and methods for encoding and decoding according to the independent claims.

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

Согласно первому аспекту изобретение относится к способу внутреннего предсказания выборки цветности блока путем применения кросс-компонентной линейной модели. Способ включает в себя: получение восстановленных выборок яркости; определение максимальных и минимальных значений выборок яркости на основе восстановленных выборок яркости; получение разности максимального и минимального значений выборок яркости; определение положения старшего бита разности максимального и минимального значений выборки яркости. Этот способ также включает в себя: извлечение значения из справочной таблицы (LUT) с использованием набора битов в качестве индекса, набора битов, следующих за положением старшего бита разности максимального и минимального значений выборки яркости; получение параметров α и β линейной модели на основе извлеченного значения; и вычисление предсказанного значения выборки цветности с использованием полученных параметров α и β линейной модели.According to a first aspect, the invention relates to a method for intra-prediction of a block chrominance sample by applying a cross-component linear model. The method includes: obtaining reconstructed brightness samples; determining maximum and minimum luminance sample values based on the reconstructed luminance samples; obtaining the difference between the maximum and minimum values of the brightness samples; determining the position of the most significant bit of the difference between the maximum and minimum values of the brightness sample. The method also includes: extracting a value from a look-up table (LUT) using a set of bits as an index, a set of bits following the position of the most significant bit of the difference between the maximum and minimum luminance sample values; obtaining parameters α and β of the linear model based on the extracted value; and calculating a predicted chrominance sample value using the obtained linear model parameters α and β.

Согласно первому аспекту изобретения индекс для LUT вычисляется элегантным способом, который извлекает несколько битов в двоичном представлении. В результате повышается эффективность извлечения значения из LUT.According to the first aspect of the invention, the index for the LUT is calculated in an elegant way that extracts a few bits in the binary representation. As a result, the efficiency of extracting the value from the LUT is improved.

В возможной форме реализации способа согласно первому аспекту как таковому способ получает параметры α и β линейной модели путем умножения извлеченного значения на разность максимального и минимального значений восстановленных выборок цветности.In an exemplary embodiment of the method according to the first aspect, as such, the method obtains the linear model parameters α and β by multiplying the extracted value by the difference between the maximum and minimum values of the reconstructed chrominance samples.

Поскольку эффективность извлечения значения из LUT увеличивается, величина множителя для получения параметров α и β линейной модели сводится к минимуму.As the efficiency of extracting a value from the LUT increases, the value of the multiplier for obtaining the parameters α and β of the linear model is reduced to a minimum.

В возможной форме реализации способа согласно первому аспекту как таковому, LUT включает в себя по меньшей мере два соседних значения, хранящихся в LUT, которые соответствуют различным шагам полученной разности, и значение этого шага увеличивается со значением разности или является константой. Индекс для LUT вычисляется элегантным способом, который извлекает несколько битов в двоичном представлении, и, соответственно, размер записи в LUT, соответствующей индексу, минимизируется. В результате размер LUT сводится к минимуму. In an exemplary form of implementing the method according to the first aspect as such, the LUT includes at least two neighboring values stored in the LUT that correspond to different steps of the obtained difference, and the value of this step increases with the value of the difference or is a constant. The index for the LUT is calculated in an elegant way that extracts a few bits in the binary representation, and accordingly the size of the entry in the LUT corresponding to the index is minimized. As a result, the LUT size is minimized.

Устройство для внутреннего предсказания выборки цветности блока посредством применения кросс-компонентной линейной модели предоставляется согласно второму аспекту изобретения. Устройство согласно второму аспекту изобретения включает в себя блок получения, блок определения и блок вычисления. Блок получения, сконфигурированный для получения восстановленных выборок яркости. Блок определения, сконфигурированный для определения максимальных и минимальных значений выборок яркости на основе восстановленных выборок яркости. Блок получения, дополнительно сконфигурированный для получения разницы между максимальным и минимальным значениями выборки яркости. Блок определения, дополнительно сконфигурированный для определения положения старшего бита разности максимального и минимального значений выборки яркости. Блок вычисления, сконфигурированный для извлечения значения из справочной таблицы (LUT) с использованием набора битов в качестве индекса, набор битов, следующих за положением старшего бита разницы значений максимальной и минимальной выборки яркости, получения параметров α и β линейной модели на основе извлеченного значения; и вычисления предсказанного значения выборки цветности с использованием полученных параметров α и β линейной модели.An apparatus for intra block chroma sample prediction by applying a cross-component linear model is provided according to a second aspect of the invention. The apparatus according to the second aspect of the invention includes an acquisition unit, a determination unit, and a calculation unit. An acquisition block configured to receive the reconstructed luminance samples. A determiner configured to determine maximum and minimum luminance sample values based on the reconstructed luminance samples. An acquiring block further configured to obtain the difference between the maximum and minimum luminance sample values. A determiner further configured to determine the position of the most significant bit of the difference between the maximum and minimum luminance sample values. A calculation unit configured to extract a value from a look-up table (LUT) using a set of bits as an index, a set of bits following the position of the most significant bit of the difference between the maximum and minimum luminance sample values, obtaining linear model parameters α and β based on the extracted value; and calculating a predicted chrominance sample value using the obtained linear model parameters α and β.

Согласно второму аспекту изобретения устройство вычисляет индекс для LUT элегантным способом, который извлекает несколько битов в двоичном представлении. В результате повышается эффективность извлечения значения из LUT.According to the second aspect of the invention, the device calculates an index for the LUT in an elegant way that extracts a few bits in the binary representation. As a result, the efficiency of extracting the value from the LUT is improved.

Согласно третьему аспекту изобретение относится к устройству для декодирования видеопотока, включающему в себя процессор и память. В памяти хранятся инструкции, которые заставляют процессор выполнять способ согласно первому аспекту или любому возможному варианту осуществления первого аспекта.According to a third aspect, the invention relates to a device for decoding a video stream, including a processor and a memory. The memory stores instructions that cause the processor to execute the method according to the first aspect or any possible embodiment of the first aspect.

Согласно четвертому аспекту изобретение относится к устройству для кодирования видеопотока, включающему в себя процессор и память. В памяти хранятся инструкции, которые заставляют процессор выполнять способ согласно первому аспекту или любому возможному варианту осуществления первого аспекта.According to a fourth aspect, the invention relates to a device for encoding a video stream, including a processor and a memory. The memory stores instructions that cause the processor to execute the method according to the first aspect or any possible embodiment of the first aspect.

Согласно пятому аспекту предлагается машиночитаемый носитель данных, на котором хранятся инструкции, которые при исполнении вызывают один или несколько процессоров, сконфигурированных для кодирования видеоданных. Инструкции заставляют один или несколько процессоров выполнять способ согласно первому аспекту или любому возможному варианту осуществления первого аспекта.According to a fifth aspect, a computer-readable storage medium is provided that stores instructions that, when executed, call one or more processors configured to encode video data. The instructions cause one or more processors to execute the method according to the first aspect or any possible embodiment of the first aspect.

Согласно шестому аспекту изобретение относится к компьютерной программе, содержащей программный код для выполнения способа согласно первому аспекту или любому возможному варианту осуществления первого аспекта при выполнении на компьютере.According to a sixth aspect, the invention relates to a computer program containing program code for executing the method according to the first aspect, or any possible embodiment of the first aspect, when executed on a computer.

Подробности одного или нескольких вариантов осуществления изложены на прилагаемых чертежах и в описании ниже. Другие особенности, объекты и преимущества будут очевидны из описания, чертежей и формулы изобретения.Details of one or more embodiments are set forth in the accompanying drawings and in the description below. Other features, objects and advantages will be apparent from the description, drawings and claims.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Далее варианты осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:Further embodiments of the invention are described in more detail with reference to the accompanying figures and drawings, in which:

Фиг. 1A - блок-схема, показывающая пример системы кодирования видео, сконфигурированной для реализации вариантов осуществления изобретения;Fig. 1A is a block diagram showing an example of a video coding system configured to implement embodiments of the invention;

Фиг.1B является блок-схемой, показывающей другой пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;1B is a block diagram showing another example of a video coding system capable of implementing embodiments of the invention;

Фиг. 2 - блок-схема, показывающая пример видеокодера, сконфигурированного для реализации вариантов осуществления изобретения;Fig. 2 is a block diagram showing an example of a video encoder configured to implement embodiments of the invention;

Фиг. 3 - блок-схема, показывающая примерную структуру видеодекодера, сконфигурированного для реализации вариантов осуществления изобретения;Fig. 3 is a block diagram showing an exemplary structure of a video decoder configured to implement embodiments of the invention;

Фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;Fig. 4 is a block diagram illustrating an example of an encoding device or a decoding device;

Фиг. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;Fig. 5 is a block diagram illustrating another example of an encoding device or a decoding device;

Фиг. 6 - чертеж, иллюстрирующий концепцию кросс-компонентной линейной модели для внутреннего предсказания цветности;Fig. 6 is a drawing illustrating the concept of a cross-component linear model for intra chroma prediction;

Фиг. 7 - чертеж, иллюстрирующий упрощенный способ в параметров линейной модели;Fig. 7 is a drawing illustrating a simplified method in linear model parameters;

Фиг. 8 - чертеж, иллюстрирующий распределение вероятности возникновения разницы между максимальным и минимальным значениями опорных выборок яркости;Fig. 8 is a drawing illustrating a distribution of the probability of occurrence of a difference between the maximum and minimum values of the luminance reference samples;

Фиг. 9 - блок-схема, иллюстрирующая примерный процесс генерирования справочной таблицы в соответствии с вариантом осуществления изобретения;Fig. 9 is a flowchart illustrating an exemplary lookup table generation process in accordance with an embodiment of the invention;

Фиг. 10 - чертеж с блок-схемами, иллюстрирующими вариант осуществления вывода индекса для примерной справочной таблицы;Fig. 10 is a block diagram drawing illustrating an embodiment of index derivation for an exemplary lookup table;

Фиг. 11 - блок-схема, иллюстрирующая примерное внутреннее предсказание выборки цветности блока посредством применения кросс-компонентной линейной модели;Fig. 11 is a block diagram illustrating exemplary block chroma sample intra prediction by applying a cross-component linear model;

Фиг. 12 - блок-схема, показывающая примерную структуру устройства для внутреннего предсказания выборки цветности блока посредством применения кросс-компонентной линейной модели;Fig. 12 is a block diagram showing an exemplary structure of an apparatus for intra block chromaticity sample prediction by applying a cross-component linear model;

Фиг. 13 - блок-схема, показывающая примерную структуру системы 3100 доставки контента, которая реализует услугу доставки контента; а такжеFig. 13 is a block diagram showing an exemplary structure of a content delivery system 3100 that implements a content delivery service; as well as

Фиг. 14 - блок-схема, показывающая структуру примера терминального устройства.Fig. 14 is a block diagram showing the structure of an example of a terminal device.

Далее одинаковые ссылочные позиции относятся к одинаковым или, по меньшей мере, функционально эквивалентным признакам, если явно не указано иное.In the following, like reference numerals refer to like or at least functionally equivalent features, unless expressly stated otherwise.

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

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

Например, понятно, что раскрытие в связи с описанным способом также может быть верным для соответствующего устройства или системы, сконфигурированной для выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов или множество блоков, каждый из которых выполняет один или несколько из множества этапов), даже если такой один или несколько блоков явно не описаны или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков или множество этапов, каждый из которых выполняет функциональные возможности одного или нескольких из множества блоков), даже если такой один или множество этапов явно не описаны или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если конкретно не указано иное.For example, it is understood that the disclosure in connection with the described method may also be true for the corresponding device or system configured to perform the method, and vice versa. For example, if one or more specific method steps are described, the corresponding device may include one or more blocks, such as functional blocks, for performing the one or more method steps described (for example, one block performing one or more steps, or a plurality of blocks, each of which performs one or more of the plurality of steps), even if such one or more blocks are not explicitly described or illustrated in the figures. On the other hand, for example, if a particular device is described in terms of one or more blocks, such as functional blocks, the corresponding method may include one step to perform the functionality of one or more blocks (for example, one step to perform the functionality of one or more blocks or a plurality of steps, each performing the functionality of one or more of the plurality of blocks), even if such one or more steps is not explicitly described or illustrated in the figures. In addition, it is understood that the features of the various exemplary embodiments and/or aspects described herein may be combined with each other, unless specifically indicated otherwise.

Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» можно использовать термин «кадр» или «картинка» как синонимы в области кодирования видео. Кодирование видео (или кодирование в целом) состоит из двух частей: кодирования видео и декодирования видео. Кодирование видео выполняется на стороне источника, обычно содержит обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, необходимых для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне назначения (целевой стороне) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом), следует понимать как относящиеся к «кодированию» или «декодированию» видеоизображений или соответствующих видеопоследовательностей. Комбинация части кодирования и части декодирования также называется CODEC (кодирование и декодирование).Video coding generally refers to the processing of a sequence of images that form a video or video sequence. Instead of the term "picture", the term "frame" or "picture" can be used as synonyms in the field of video coding. Video encoding (or encoding in general) consists of two parts: video encoding and video decoding. Video encoding is performed at the source side, typically comprising processing (eg, by compressing) the source video images to reduce the amount of data required to represent the video images (for more efficient storage and/or transmission). Video decoding is performed on the destination side (target side) and usually contains inverse processing compared to the encoder for recovering video images. Embodiments relating to "coding" video images (or images in general) should be understood as referring to "coding" or "decoding" video images or corresponding video sequences. The combination of an encoding part and a decoding part is also called CODEC (encoding and decoding).

В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, т. е. восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, путем квантования, чтобы уменьшить объем данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, т.е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.In the case of lossless video coding, the original video images can be reconstructed, i.e. the reconstructed video images have the same quality as the original video images (assuming there is no transmission loss or other data loss during storage or transmission). In the case of lossy video coding, additional compression is performed, for example by quantization, in order to reduce the amount of data representing video images that cannot be fully reconstructed in the decoder, i.e. the quality of the restored video images is lower or worse than the quality of the original video images.

Несколько стандартов кодирования видео принадлежат к группе «гибридных видеокодеков с потерями» (т. е. сочетают пространственное и временное предсказание в области выборки и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется на уровне блока (видеоблока), например, с использованием пространственного (внутри изображения) предсказания и/или временного (внешнего к изображению) предсказания для генерации блока предсказания, вычитая блок предсказания из текущего блока (блока, который в настоящее время обрабатывается/должен быть обработан) для получения остаточного блока, преобразования остаточного блока и квантования остаточного блока в области преобразования, чтобы уменьшить объем данных, которые должны быть переданы (сжатие), тогда как в декодере обратная обработка по сравнению с кодером применяется к закодированному или сжатому блоку, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, внутреннее и внешнее предсказания) и/или восстановления для обработки, то есть кодирование последующих блоков.Several video coding standards belong to the group of "hybrid lossy video codecs" (i.e., combine spatial and temporal sample-domain prediction and 2D transform coding to apply transform-domain quantization). Each picture of a video sequence is usually divided into a set of non-overlapping blocks, and encoding is usually done at the block level. In other words, in the encoder, video is usually processed, i.e. encoded at the block (video block) level, for example, using spatial (inside the image) prediction and/or temporal (external to the image) prediction to generate a prediction block by subtracting the prediction block from the current block. (of the block currently being processed/to be processed) to obtain the residual block, transform the residual block, and quantize the residual block in the transform domain to reduce the amount of data to be transmitted (compression), while in the decoder, the inverse processing is compared with encoder is applied to an encoded or compressed block to reconstruct the current block for presentation. In addition, the encoder duplicates the processing cycle of the decoder, so that both will generate identical predictions (eg, intra and inter predictions) and/or reconstructions for processing, i.e. encoding subsequent blocks.

В следующих вариантах осуществления система 10 кодирования видео, видеокодер 20 и видеодекодер 30 описаны на основе фиг. с 1 по 3.In the following embodiments, the video coding system 10, video encoder 20, and video decoder 30 are described based on FIG. 1 to 3.

Фиг. 1A является схематической блок-схемой, иллюстрирующей примерную систему 10 кодирования, например, систему 10 кодирования видео (или систему 10 короткого кодирования), которая может использовать методики этого настоящей заявки. Видеокодер 20 (или короткий кодер 20) и видеодекодер 30 (или короткий декодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть сконфигурированы для выполнения методик в соответствии с различными примерами, описанными в настоящей заявке.Fig. 1A is a schematic block diagram illustrating an exemplary coding system 10, such as a video coding system 10 (or short coding system 10), that may use the techniques of this present application. Video encoder 20 (or short encoder 20) and video decoder 30 (or short decoder 30) of video coding system 10 represent examples of devices that can be configured to perform techniques in accordance with the various examples described herein.

Как показано на фиг. 1A, система 10 кодирования содержит исходное устройство 12, сконфигурированное для предоставления данных 21 закодированного изображения, например, целевому устройству 14 для декодирования данных 21 кодированного изображения.As shown in FIG. 1A, encoding system 10 includes a source device 12 configured to provide encoded image data 21 to, for example, target device 14 to decode encoded image data 21.

Исходное устройство 12 содержит кодер 20 и может дополнительно, т.е. необязательно, содержать источник 16 изображения, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 изображения, и интерфейс связи или блок 22 связи.Source device 12 contains encoder 20 and may additionally, i. e. optionally, contain an image source 16, a preprocessor (or preprocessor) 18, such as an image preprocessor 18, and a communication interface or communication unit 22.

Источник 16 изображения может содержать или быть любым типом устройства захвата изображения, например камерой для захвата реального изображения, и/или устройством генерации изображения любого типа, например процессором компьютерной графики для создания изображения компьютерной анимации или любое другим устройством для получения и/или предоставления реального изображения любого типа, изображения, сгенерированного компьютером (например, содержимого экрана, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображения дополненной реальности (AR)). Источником снимка может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых изображений.The image source 16 may comprise or be any type of image capturing device, such as a camera for capturing a real image, and/or any type of image generating device, such as a computer graphics processor for creating a computer animation image, or any other device for capturing and/or providing a real image. any type, computer generated image (e.g. screen content, virtual reality (VR) image) and/or any combination thereof (e.g. augmented reality (AR) image). The snapshot source can be any type of memory or storage that stores any of the above images.

В отличие от препроцессора 18 и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения также могут называться необработанным изображением или данными 17 необработанного изображения.Unlike the preprocessor 18 and the processing performed by the preprocessor 18, the image or image data 17 may also be referred to as raw image or raw image data 17.

Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или уменьшение шума. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.The preprocessor 18 is configured to receive the (raw) image data 17 and perform pre-processing of the image data 17 to obtain a pre-processed image 19 or pre-processed image data 19. The pre-processing performed by the preprocessor 18 may, for example, include cropping, color format conversion (eg from RGB to YCbCr), color correction or noise reduction. It can be understood that the pre-processing unit 18 may be an optional component.

Видеокодер 20 сконфигурирован для приема предварительно обработанных данных 19 изображения и предоставления данных 21 закодированного изображения (дополнительные подробности будут описаны ниже, например, на основе фиг. 2). Интерфейс 22 связи исходного устройства 12 может быть сконфигурирован для приема данных 21 закодированного изображения и передачи данных 21 закодированного изображения (или любой их дополнительной обработанной версии) по каналу 13 связи на другое устройство, например, на целевое устройство 14 или любое другое устройство, для хранения или прямой восстановления (восстановления).Video encoder 20 is configured to receive pre-processed image data 19 and provide encoded image data 21 (more details will be described below, for example, based on FIG. 2). Communication interface 22 of source device 12 may be configured to receive encoded image data 21 and transmit encoded image data 21 (or any additional processed version thereof) over communication channel 13 to another device, such as target device 14 or any other device, for storage. or direct recovery (recovery).

Целевое устройство 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения. Target device 14 includes a decoder 30 (eg, video decoder 30) and may additionally, i. e. optionally, contain a communication interface or communication unit 28, a post-processor 32 (or post-processing unit 32) and a display device 34 .

Интерфейс 28 связи целевого устройства 14 сконфигурирован для приема закодированных данных 21 изображения (или любой их дополнительной обработанной версии), например, непосредственно от исходного устройства 12 или из любого другого источника, например, устройства хранения, например, устройства хранения данных закодированного изображения, и предоставления данных 21 закодированного изображения в декодер 30.The communication interface 28 of the target device 14 is configured to receive the encoded image data 21 (or any additional processed version thereof), for example, directly from the source device 12 or from any other source, for example, a storage device, for example, an encoded image data storage device, and provide encoded image data 21 to decoder 30.

Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема данных 21 закодированного изображения или закодированных данных 13 через прямую линию связи между исходным устройством 12 и целевым устройством 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.Communication interface 22 and communication interface 28 may be configured to transmit or receive encoded image data 21 or encoded data 13 over a direct link between source device 12 and target device 14, such as a direct wired or wireless connection, or over any type of network, such as wired or wireless network, or any combination thereof, or any private and public network, or any combination thereof.

Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки данных 21 закодированного изображения в соответствующий формат, например, в пакеты, и/или обработки данных закодированного изображения с использованием любого типа кодирования передачи или обработки для передачи по линии связи или сети связи.The communication interface 22 may, for example, be configured to package the encoded image data 21 into an appropriate format, such as packets, and/or process the encoded image data using any type of transmission coding or processing for transmission over a communication line or communication network.

Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, сконфигурирован для приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки передачи и/или распаковки для получения данных 21 закодированного изображения.Communication interface 28 analogous to communication interface 22 may, for example, be configured to receive transmitted data and process transmission data using any kind of appropriate decoding or transmission processing and/or decompression to obtain encoded image data 21.

И интерфейс 22 связи, и интерфейс 28 связи могут быть сконфигурированы как однонаправленные интерфейсы связи, как показано стрелкой для канала 13 связи на фиг. 1A, указывающей от исходного устройства 12 к целевому устройству 14, или как интерфейсы двунаправленной связи, и могут быть сконфигурированы, например, для отправки и приема сообщений, например, для установки соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например, к передаче данных закодированного изображения.Both communication interface 22 and communication interface 28 can be configured as unidirectional communication interfaces, as indicated by the arrow for communication channel 13 in FIG. 1A pointing from source device 12 to target device 14, or as bidirectional communication interfaces, and can be configured, for example, to send and receive messages, for example, to establish a connection, to acknowledge and exchange any other information related to the communication line and /or data transmission, for example, to the transmission of encoded image data.

Декодер 30 выполнен с возможностью приема данных 21 закодированного изображения и предоставления данных 31 декодированного изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг.3 или Фиг.5.The decoder 30 is configured to receive encoded image data 21 and provide decoded image data 31 or decoded image 31 (more details will be described below, for example, based on FIG. 3 or FIG. 5.

Постпроцессор 32 целевого устройства 14 сконфигурирован для постобработки данных 31 декодированного изображения (также называемых данными восстановленного изображения), например, декодированного изображения 31, для получения данных 33 постобработанного изображения, например, постобработанного изображения 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например, для подготовки данных 31 декодированного изображения для отображения, например, с помощью устройства 34 отображения.The post-processor 32 of the target device 14 is configured to post-process the decoded image data 31 (also referred to as reconstructed image data), such as the decoded image 31, to obtain post-processed image data 33, such as the post-processed image 33. The post-processing performed by the post-processing unit 32 may include, for example , color format conversion (eg, from YCbCr to RGB), color correction, cropping or resampling, or any other processing, for example, to prepare the decoded image data 31 for display, for example, by the display device 34.

Устройство 34 отображения целевого устройства 14 выполнено с возможностью приема данных 33 постобработанного изображения для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного изображения, например, интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, микро-светодиодные дисплеи, жидкие кристаллы на кремнии (LCoS), цифровой световой процессор (DLP) или любые другие дисплеи.The display device 34 of the target device 14 is configured to receive post-processed image data 33 for displaying the image to, for example, a user or viewer. The display device 34 may be or comprise any kind of display for presenting the reconstructed image, such as an integrated or external display or monitor. The displays may, for example, comprise liquid crystal displays (LCD), organic light emitting diode (OLED) displays, plasma displays, projectors, micro LED displays, liquid crystals on silicon (LCoS), digital light processor (DLP), or any other displays.

Хотя фиг. 1A изображает исходное устройство 12 и целевое устройство 14 как отдельные устройства, варианты осуществления устройств могут также содержать оба или обе функциональные возможности, исходное устройство 12 или соответствующие функциональные возможности и целевое устройство 14 или соответствующие функциональные возможности. В таких вариантах осуществления исходное устройство 12 или соответствующие функциональные возможности и целевое устройство 14 или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, либо с помощью отдельных аппаратных средств и/или программного обеспечения, либо любой их комбинации.Although FIG. 1A depicts source device 12 and target device 14 as separate devices, device embodiments may also contain both or both functionality, source device 12 or corresponding functionality and target device 14 or corresponding functionality. In such embodiments, source device 12 or related functionality and target device 14 or corresponding functionality may be implemented using the same hardware and/or software, or using separate hardware and/or software, or any of them. combinations.

Как будет очевидно для специалиста на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в исходном устройстве 12 и/или целевом устройстве 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения.As will be apparent to those skilled in the art based on the description, the presence and (exact) separation of the functionality of the various blocks or functionality in source device 12 and/or target device 14 as shown in FIG. 1A may vary depending on the actual device and application.

Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на фиг. 1B, например, один или несколько микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретную логику, аппаратное обеспечение, выделенное кодирование видео или любые их комбинации. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 на фиг. 2 и/или любой другой системы или подсистемы, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 на фиг. 3 и/или любой другой системы или подсистемы декодера, описанной в данном документе. Схема обработки может быть сконфигурирована для выполнения различных операций, как описано ниже. Как показано на Фиг.5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем долговременном машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг.1B.Encoder 20 (for example, video encoder 20) or decoder 30 (e.g. video decoder 30) or and encoder 20 and decoder 30 may be implemented through a processing circuit as shown in FIG. 1B, for example, one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video coding, or any combinations thereof. Encoder 20 may be implemented via processing circuitry 46 to implement various modules, as discussed with respect to encoder 20 in FIG. 2 and/or any other system or subsystem described herein. Decoder 30 may be implemented via processing circuitry 46 to implement various modules, as discussed with respect to decoder 30 in FIG. 3 and/or any other decoder system or subsystem described herein. The processing circuit may be configured to perform various operations, as described below. As shown in FIG. 5, if the techniques are partially implemented in software, the device may store instructions for the software on a suitable non-volatile computer-readable storage medium and may execute the instructions in hardware using one or more processors to execute the techniques of this disclosure. Either of video encoder 20 and video decoder 30 may be integrated as part of a combined encoder/decoder (CODEC) in one device, for example, as shown in FIG. 1B.

Исходное устройство 12 и целевое устройство 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, наборы-приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые приставки, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), устройство приемника вещания, устройство передатчика вещания и т.п. и может использовать никакой или любой тип операционной системы. В некоторых случаях исходное устройство 12 и целевое устройство 14 могут быть оборудованы для беспроводной связи. Таким образом, исходное устройство 12 и целевое устройство 14 могут быть устройствами беспроводной связи.Source device 12 and destination device 14 may comprise any of a wide range of devices, including any type of portable or stationary device, such as laptops or laptops, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, set-top boxes, televisions, display devices, digital media players, game consoles, video streaming devices (eg, content service servers or content delivery servers), broadcast receiver device, broadcast transmitter device, and the like. and can use any or any type of operating system. In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and target device 14 may be wireless communication devices.

В некоторых случаях система 10 кодирования видео, проиллюстрированная на фиг. 1A, является просто примером, и способы настоящей заявки могут применяться к настройкам кодирования видео (например, кодированию видео или декодированию видео), которые не обязательно включают в себя передачу данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются по сети и т.п. Устройство кодирования видео может кодировать и сохранять данные в памяти, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.In some cases, the coding system 10 the video illustrated in Fig. 1A is merely an example, and the methods of the present application may apply to video coding settings (eg, video coding or video decoding) that do not necessarily involve data transfer between encoding and decoding devices. In other examples, data is retrieved from local memory, transferred over a network, and the like. The video encoding device may encode and store data in memory and/or the video decoder may retrieve and decode data from memory. In some examples, encoding and decoding is performed by devices that do not communicate with each other, but simply encode data into memory and/or retrieve and decode data from memory.

Для удобства описания варианты осуществления изобретения описаны здесь, например, со ссылкой на высокоэффективное кодирование видео (HEVC) или на эталонное программное обеспечение универсального кодирования видео (VVC), стандарт кодирования видео следующего поколения, разработанный Группой сотрудничества по кодированию видео (JCT-VC) Группы экспертов ITU-T по кодированию видео (VCEG) и Группы экспертов ISO/IEC по движущимся изображениям (MPEG). Специалист в данной области техники поймет, что варианты осуществления изобретения не ограничиваются HEVC или VVC.For ease of description, embodiments of the invention are described herein, for example, with reference to High Efficiency Video Coding (HEVC) or Universal Video Coding (VVC) reference software, the next generation video coding standard developed by the Video Coding Collaborative (JCT-VC) Group. the ITU-T Video Coding Experts (VCEG); and the ISO/IEC Moving Picture Experts Group (MPEG). One skilled in the art will appreciate that embodiments of the invention are not limited to HEVC or VVC.

Кодер и способ кодированияEncoder and encoding method

Фиг. 2 показывает схематическую блок-схему примерного видеокодера 20, который сконфигурирован для реализации способов настоящей заявки. В примере на фиг.2 видеокодер 20 содержит вход 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер декодированных изображений (DPB) 230, блок 260 выбора режима, блок 270 энтропийного кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разделения. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.Fig. 2 shows a schematic block diagram of an exemplary video encoder 20 that is configured to implement the methods of the present application. In the example of FIG. 2, video encoder 20 includes an input 201 (or input interface 201), a residual calculation block 204, a transform processing block 206, a quantization block 208, an inverse quantization block 210, and an inverse transform processing block 212, a reconstruction block 214, a contour block 220 filter, decoded picture buffer (DPB) 230, mode selector 260, entropy coding block 270, and output 272 (or output interface 272). The mode selector 260 may include an inter-predictor 244, an intra-predictor 254, and a splitter 262. Inter prediction block 244 may include a motion estimator and a motion compensation block (not shown). The video encoder 20 shown in FIG. 2 may also be referred to as a hybrid video encoder or a video encoder according to a hybrid video codec.

Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут упоминаться как формирующие прямой путь сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 244 внешнего предсказания и блок 254 внутреннего предсказания могут называться формирующими обратный путь сигнала видеокодера 20, при этом обратный путь сигнала видеокодера 20 соответствует пути сигнала декодера (см. видеодекодер 30 на фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20.Residual calculator 204, transform processor 206, quantizer 208, mode selector 260 may be referred to as forming the forward signal path of the encoder 20, while inverse quantizer 210, inverse transform processor 212, reconstruction 214, buffer 216, loop filter 220, a decoded picture buffer (DPB) 230, inter predictor 244, and intra predictor 254 may be referred to as generating the reverse signal path of video encoder 20, with the reverse signal path of video encoder 20 corresponding to the signal path of the decoder (see video decoder 30 in FIG. 3). The inverse quantization block 210, the inverse transform processing block 212, the reconstruction block 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction block 244, and the intra prediction block 254 are also related to the formation of the "embedded decoder" of the video encoder 20.

Изображения и разделение изображений (изображения и блоки)Images and Image Sharing (Images and Blocks)

Кодер 20 может быть сконфигурирован для приема, например, через вход 201 изображения 17 (или данных 17 изображения), например, изображения последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения также могут быть предварительно обработанным изображением 19 (или предварительно обработанными данными 19 изображения). Для простоты следующее описание относится к изображению 17. Изображение 17 также может называться текущим изображением или изображением, которое должно быть кодировано (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, то есть видеопоследовательности, которая также содержит текущее изображение).The encoder 20 may be configured to receive, for example, via input 201 an image 17 (or image data 17), for example an image of a sequence of images constituting a video or video sequence. The received image or image data may also be a pre-processed image 19 (or pre-processed image data 19). For simplicity, the following description refers to picture 17. Picture 17 may also be referred to as the current picture or the picture to be encoded (particularly in video encoding, to distinguish the current picture from other pictures, such as previously encoded and/or decoded pictures of the same video sequence, that is, a video sequence that also contains the current image).

(Цифровое) изображение представляет собой или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может называться пикселем (сокращенная форма элемента изображения) или пикселем. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, то есть изображение может быть представлено или включать в себя три массива выборок. В формате RGB или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например, YCbCr, который содержит компонент яркости, обозначенный Y (иногда также вместо этого используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или сокращенно яркости) представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), в то время как два компонента цветности (или сокращенно цветности) Cb и Cr представляют компоненты цветности или информации о цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости значений (Y) выборок яркости и два массива выборок цветности значений (Cb и Cr) цветности. Изображения в формате RGB могут быть конвертированы или преобразованы в формат YCbCr, и наоборот, этот процесс также известен как преобразование цвета или конверсия. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.A (digital) image is, or can be viewed as, a two-dimensional array or matrix of samples with intensity values. A sample in an array can also be called a pixel (short for picture element) or a pixel. The number of samples in the horizontal and vertical direction (or axis) of the array or image determines the size and/or resolution of the image. Three color components are typically used to represent a color, i.e. an image can be represented or include three arrays of samples. In RGB format or color space, an image contains a corresponding array of red, green, and blue color samples. However, in video encoding, each pixel is typically represented in a luma and chrominance format or color space, such as YCbCr, which contains a luminance component labeled Y (sometimes L is also used instead) and two chrominance components labeled Cb and Cr. The Y component of luminance (or luminance for short) represents the brightness or intensity of the gray level (eg, as in a grayscale image), while the two chrominance (or chroma for short) components Cb and Cr represent chrominance or color information components. Accordingly, an image in YCbCr format contains an array of luminance samples of values (Y) of luminance samples and two arrays of chrominance samples of chrominance values (Cb and Cr). RGB images can be converted or converted to YCbCr format and vice versa, this process is also known as color conversion or conversion. If the image is monochrome, it can only contain an array of brightness samples. Accordingly, the image may be, for example, an array of luminance samples in monochrome format, or an array of luminance samples and two corresponding arrays of chrominance samples in 4:2:0, 4:2:2 and 4:4:4 color format.

Варианты осуществления видеокодера 20 могут содержать блок разделения изображения (не показан на фиг.2), сконфигурированный для разделения изображения 17 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разделения изображений может быть сконфигурирован для использования одного и того же размера блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или для изменения размера блока между изображениями, или подмножествами, или группами изображений, и разделением каждого изображения на соответствующие блоки. Embodiments of video encoder 20 may comprise an image splitter (not shown in FIG. 2) configured to split image 17 into multiple (generally non-overlapping) image blocks 203. These blocks may also be referred to as root blocks, macroblocks (H.264/AVC), or coding tree blocks (CTBs) or coding tree units (CTUs) (H.265/HEVC and VVC). The image dividing block may be configured to use the same block size for all images of a video sequence and a corresponding block size grid, or to change the block size between images or subsets or groups of images and divide each image into appropriate blocks.

В дополнительных вариантах осуществления видеокодер может быть сконфигурирован для приема непосредственно блока 203 изображения 17, например, одного, нескольких или всех блоков, образующих изображение 17. Блок 203 изображения может также называться блоком текущего изображения или блоком изображения, который должен быть кодирован.In additional embodiments, the video encoder may be configured to directly receive image block 203 17, such as one, more or all of the blocks that make up image 17. Image block 203 may also be referred to as a current image block or an image block to be encoded.

Подобно изображению 17, блок 203 изображения снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 17 или массив яркости или цветности в случае цветного изображения) или три массива выборок (например, яркость и два массива цветности в случае цветного изображения 17) или любое другое количество и/или тип массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер блока 203. Соответственно, блок может быть, например, массивом дискретных выборок MxN (M-столбец на N-строка) или массивом MxN коэффициентов преобразования.Like image 17, image block 203 is again, or can be viewed as, a two-dimensional array or matrix of samples with intensity values (sample values), albeit smaller than image 17. In other words, block 203 may contain, for example, one array of samples (for example , a luma array in the case of a monochrome image 17 or a luminance or chroma array in the case of a color image) or three arrays of samples (for example, luminance and two chrominance arrays in the case of a color image 17) or any other number and/or type of arrays depending on the applied color format. The number of samples in the horizontal and vertical direction (or axis) of block 203 defines the size of block 203. Accordingly, a block may be, for example, an array of MxN discrete samples (M-column per N-row) or an array of MxN transform coefficients.

Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть сконфигурированы для кодирования изображения 17 блок за блоком, например, кодирование и предсказание выполняются для каждого блока 203.Embodiments of video encoder 20, as shown in FIG. 2 may be configured to encode picture 17 block by block, for example, encoding and prediction are performed for each block 203.

Вычисление остаткаRemainder Calculation

Блок 204 вычисления остатка может быть сконфигурирован для вычисления остаточного блока 205 (также называемого остатком 205) на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены позже), например, путем вычитания значений выборки блока 265 предсказания из значений выборки блока 203 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборки.Residual block 204 may be configured to calculate a residual block 205 (also referred to as residual 205) based on image block 203 and prediction block 265 (more details about predictor 265 will be provided later), for example, by subtracting the sample values of predictor 265 from the sample values. image block 203, sample by sample (pixel by pixel) to obtain a residual block 205 in the sample area.

Преобразованиеtransformation

Блок 206 обработки преобразования может быть сконфигурирован для применения преобразования, например, дискретного косинусного преобразования (DCT) или дискретного синусоидального преобразования (DST), к значениям выборки остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования также могут называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.The transform processing unit 206 may be configured to apply a transform, such as a discrete cosine transform (DCT) or a discrete sine transform (DST), to the sample values of the residual block 205 to obtain transform coefficients 207 in the transform domain. The transform coefficients 207 may also be referred to as residual transform coefficients and represent the residual block 205 in the transform region.

Блок 206 обработки преобразования может быть сконфигурирован для применения целочисленных приближений DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT, такие целочисленные приближения обычно масштабируются с некоторым коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования. Коэффициенты масштабирования обычно выбираются на основе некоторых ограничений, таких как коэффициенты масштабирования, равные степени двойки для операций сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например, блоком 212 обработки обратного преобразования (и соответствующего обратного преобразования, например, блоком 312 обработки обратного преобразования в видеодекодере 30) и соответствующими коэффициентами масштабирования для прямого преобразования, например, блоком 206 обработки преобразования, могут быть заданы в кодере 20 соответственно.Transform processing unit 206 may be configured to apply DCT/DST integer approximations such as the transforms specified for H.265/HEVC. Compared to the orthogonal DCT, such integer approximations are usually scaled by some factor. To preserve the norm of the residual block that is processed by forward and backward transformations, additional scaling factors are applied during the transformation. Scaling factors are usually chosen based on some constraints such as power of two scaling factors for shift operations, word length of the transform coefficients, trade-off between accuracy and implementation cost, etc. the inverse transform processor 212 (and the corresponding inverse transform, eg, the inverse transform processor 312 in video decoder 30) and the corresponding scaling factors for the forward transform, eg, transform processor 206, may be set in the encoder 20, respectively.

Варианты осуществления видеокодера 20 (соответственно модуль 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.Embodiments of video encoder 20 (respectively, transform processing module 206) may be configured to output transform parameters, such as the type of transform or transforms, such as directly or encoded or compressed via entropy encoding unit 270, such that, for example, video decoder 30 may receive and use transform options for decoding.

КвантованиеQuantization

Блок 208 квантования может быть сконфигурирован для квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.Quantizer 208 may be configured to quantize transform coefficients 207 to obtain quantized coefficients 209, for example by applying scalar quantization or vector quantization. The quantized coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized residual coefficients 209.

Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более точного или более грубого квантования. Меньшие размеры шагов квантования соответствуют более точному квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заранее определенного набора применимых размеров шага квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малым размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, и соответствующее и/или обратное деквантование, например, посредством блока 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, например HEVC, могут быть сконфигурированы для использования параметра квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен на основе параметра квантования с использованием приближения с фиксированной точкой уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть скомбинированы. В качестве альтернативы могут использоваться настроенные таблицы квантования и сигнализироваться от кодера к декодеру, например, в потоке битов. Квантование - это операция с потерями, при которой потери возрастают с увеличением размеров шагов квантования.The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207 . For example, an n-bit transform factor may be rounded to an m-bit transform factor during quantization, where n is greater than m. The degree of quantization can be changed by adjusting the quantization parameter (QP). For example, for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. The applicable quantization step size may be indicated by a quantization parameter (QP). The quantization parameter may, for example, be an index to a predetermined set of applicable quantization step sizes. For example, small quantization parameters may correspond to fine quantization (small quantization step sizes), and large quantization parameters may correspond to coarse quantization (large quantization step sizes), or vice versa. Quantization may include dividing by the quantization step size, and corresponding and/or inverse dequantization, for example by inverse quantizer 210, may include multiplying by the quantization step size. Embodiments according to some standards, such as HEVC, may be configured to use a quantization parameter to determine the quantization step size. Typically, the quantization step size can be calculated based on the quantization parameter using a fixed-point approximation of an equation involving division. Additional scaling factors can be introduced for quantization and dequantization to recover the residual block rate, which can be changed due to the scaling used in the fixed-point approximation of the equation for quantization step size and quantization parameter. In one exemplary implementation, inverse transform scaling and dequantization may be combined. Alternatively, customized quantization tables can be used and signaled from the encoder to the decoder, for example, in the bit stream. Quantization is a lossy operation in which the loss increases as the size of the quantization steps increases.

Варианты осуществления видеокодера 20 (соответственно модулья 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.Embodiments of video encoder 20 (respectively, quantization module 208) may be configured to output quantization parameters (QPs), for example, directly or encoded via entropy encoding module 270, such that, for example, video decoder 30 may receive and apply quantization parameters for decoding.

Обратное квантованиеInverse quantization

Блок 210 обратного квантования сконфигурирован для применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования, применяемой блоком 208 квантования, на основе или с использованием того же шага квантования в качестве блока 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать, хотя обычно не идентичны коэффициентам преобразования из-за потери при квантовании, коэффициентам 207 преобразования.Inverse quantizer 210 is configured to apply inverse quantization of quantizer 208 to quantized coefficients to obtain dequantized coefficients 211, for example, by applying an inverse quantization scheme applied by quantizer 208 based on or using the same quantization step as quantizer 208. The dequantized coefficients 211 may also be referred to as the dequantized residual coefficients 211 and correspond to, although typically not identical to, the transform coefficients due to quantization loss, to the transform coefficients 207.

Обратное преобразованиеReverse transformation

Блок 212 обработки обратного преобразования сконфигурирован для применения обратного преобразования для преобразования, применяемого блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусоидального преобразования (DST) или других обратных преобразований, для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборки. Восстановленный остаточный блок 213 также может называться блоком 213 преобразования.The inverse transform processing unit 212 is configured to apply an inverse transform to the transform applied by the transform processing unit 206, such as an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST) or other inverse transforms, to obtain a reconstructed residual block 213 (or corresponding dequantized coefficients 213) in the sample area. The recovered residual block 213 may also be referred to as a transformation block 213 .

ВосстановлениеRecovery

Блок 214 восстановления (например, сумматор или сумматор 214) сконфигурирован для добавления блока 213 преобразования (т.е. восстановленного остаточного блока 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области выборки, например, путем сложения, выборка за выборкой, выборочных значений восстановленного остаточного блока 213 и выборочных значений блока 265 предсказания.Reconstructor 214 (e.g., adder or adder 214) is configured to add transform block 213 (i.e., reconstructed residual block 213) to prediction block 265 to obtain reconstructed block 215 in the sample region, for example, by addition, sample by sample, the sample values of the reconstructed residual block 213 and the sample values of the prediction block 265 .

ФильтрацияFiltration

Блок 220 контурного фильтра (или сокращенно «контурный фильтр» 220) сконфигурирован для фильтрации восстановленного блока 215 для получения отфильтрованного блока 221 или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, сконфигурирован для сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или несколько контурных фильтров, таких как деблочный фильтр, фильтр с адаптивным смещением (SAO) или один или несколько других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (ALF), повышения резкости, сглаживающие фильтры или коллаборативные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на Фиг.2 как контурный фильтр, в других конфигурациях модуль 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может упоминаться как фильтрованный восстановленный блок 221.The loop filter block 220 (or "loop filter" 220 for short) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or more generally to filter the reconstructed samples to obtain filtered samples. The loop filter block, for example, is configured to smooth out pixel transitions or otherwise improve video quality. The loop filter block 220 may comprise one or more loop filters, such as a deblocking filter, an adaptive offset filter (SAO), or one or more other filters, such as a two-sided filter, an adaptive loop filter (ALF), sharpening, smoothing filters, or collaborative filters. filters, or any combination of them. Although the loop filter unit 220 is shown in FIG. 2 as a loop filter, in other configurations, the loop filter module 220 may be implemented as a post loop filter. The filtered block 221 may also be referred to as the filtered reconstructed block 221.

Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть сконфигурированы для вывода параметров контурного фильтра (таких как информация об адаптивном смещении выборки), например, непосредственно или закодированы через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять одинаковые параметры контурного фильтра или соответствующие контурные фильтры для декодирования.Embodiments of video encoder 20 (respectively, loop filter unit 220) may be configured to output loop filter parameters (such as adaptive sample offset information), for example, directly or encoded through entropy encoding unit 270, such that, for example, decoder 30 may receive and apply the same loop filter parameters or corresponding loop filters for decoding.

Буфер декодированного изображенияDecoded image buffer

Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных с помощью видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или другие типы запоминающих устройств. Буфер 230 декодированных изображений (DPB) может быть сконфигурирован для хранения одного или нескольких фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно сконфигурирован для хранения других ранее отфильтрованных блоков, например, ранее восстановленных и отфильтрованных блоков 221, одного и того же текущего изображения или разных изображений, например, ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, то есть декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. Буфер декодированных изображений (DPB) 230 также может быть сконфигурирован для хранения одного или нескольких нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например, если восстановленный блок 215 не фильтруется блоком 220 контурной фильтрации, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.Decoded Picture Buffer (DPB) 230 may be a memory that stores reference pictures or, more generally, reference picture data for encoding video data by video encoder 20. DPB 230 may be formed by any of a variety of memories such as dynamic random access memory. (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of storage devices. Decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. Decoded picture buffer 230 may be further configured to store other previously filtered blocks, such as previously restored and filtered blocks 221, the same current picture, or different images, such as previously reconstructed images, and may provide complete previously reconstructed, i.e., decoded, images (and corresponding reference blocks and samples) and/or partially reconstructed current image (and corresponding reference blocks and samples), for example, for inter prediction . The decoded picture buffer (DPB) 230 may also be configured to store one or more unfiltered reconstructed blocks 215, or, in general, unfiltered reconstructed samples, for example, if the reconstructed block 215 is not filtered by the loop filtering block 220, or any other further processed version of the reconstructed blocks. or samples.

Выбор режима (разделение и предсказание)Mode selection (separation and prediction)

Блок 260 выбора режима содержит блок 262 разделения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и сконфигурирован для приема или получения данных исходного изображения, например исходного блока 203 (текущий блок 203 текущего изображения 17), и данные восстановленного изображения, например отфильтрованные и/или нефильтрованные восстановленные выборки или блоки одного и того же (текущего) изображения и/или из одного или множества ранее декодированных изображений, например, из буфера 230 декодированных изображений или других буферов (например, строкового буфера, не показаны). Данные восстановленного изображения используются в качестве данных опорного изображения для предсказания, например, внешнего предсказания или внутреннего предсказания, чтобы получить блок 265 предсказания или предсказатель 265.The mode selection unit 260 comprises a splitter 262, an inter prediction unit 244, and an intra prediction unit 254, and is configured to receive or obtain original image data, such as the original block 203 (the current block 203 of the current image 17), and reconstructed image data, such as filtered and/or or unfiltered reconstructed samples or blocks of the same (current) picture and/or from one or more previously decoded pictures, eg decoded picture buffer 230 or other buffers (eg string buffer, not shown). The reconstructed image data is used as reference image data for prediction, such as inter prediction or intra prediction, to obtain predictor 265 or predictor 265.

Модуль 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (в том числе отсутствие разделения) и режима предсказания (например, режима внутреннего или внешнего предсказания) и генерации соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.Mode selector 260 may be configured to determine or select a split for the current block prediction mode (including no split) and prediction mode (e.g., intra or inter prediction mode) and generate a corresponding prediction block 265 that is used to calculate the residual block. 205 and to restore the restored block 215.

Варианты осуществления модуля 260 выбора режима могут быть сконфигурированы для выбора разделения и режима предсказания (например, из тех, которые поддерживаются или доступны для модуля 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или уравновешивает оба. Блок 260 выбора режима может быть сконфигурирован для определения режима разделения и предсказания на основе оптимизации искажения скорости (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как «лучший», «минимальный», «оптимальный» и т. д. в этом контексте не обязательно относятся к общему «лучшему», «минимальному», «оптимальному» и т. д., но также могут относиться к выполнению прекращения или критерию выбора, такому как значение, превышающее или падающее ниже порогового значения, или другим ограничениям, потенциально ведущим к «суб-оптимальному выбору», но уменьшающие сложность и время обработки.Embodiments of mode selector 260 may be configured to select a split and prediction mode (eg, from those supported or available to mode selector 260) that provides the best match, or in other words, minimum residual (minimum residual means the best compression for transmission or storage), or minimal signaling overhead (minimum signaling overhead means better compression for transmission or storage), or which takes into account or balances both. The mode selector 260 may be configured to determine the division and prediction mode based on Rate Distortion Optimization (RDO), ie, select a prediction mode that provides minimal rate distortion. Terms such as "best", "minimum", "optimal", etc. in this context do not necessarily refer to the general "best", "minimum", "optimal", etc., but may also refer to fulfilling a termination or selection criterion, such as a value above or below a threshold, or other constraints potentially leading to a "sub-optimal selection" but reducing complexity and processing time.

Другими словами, блок 262 разделения может быть сконфигурирован для разделения блока 203 на более мелкие разделы или подблоки (которые снова образуют блоки), например, итеративно с использованием четырехугольного разделения (QT), двоичного разделения (BT) или разделения на тройное дерево (TT) или любой их комбинации, и для выполнения, например, предсказания для каждого из разделов или подблоков блока, при этом выбор режима содержит выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разделов или подблоков блока.In other words, partitioner 262 can be configured to partition block 203 into smaller partitions or subblocks (which form blocks again), for example, iteratively using quadrilateral partitioning (QT), binary partitioning (BT), or ternary tree partitioning (TT) or any combination thereof, and to perform, for example, prediction for each of the partitions or sub-blocks of the block, wherein the mode selection comprises selecting a tree structure of the partitioned block 203, and the prediction modes are applied to each of the partitions or sub-blocks of the block.

Далее более подробно поясняется разделение (например, посредством модуля 260 разделения) и обработка предсказания (посредством модуля 244 внешнего предсказания и модуля 254 внутреннего предсказания), выполняемые примерным видеокодером 20.The following explains in more detail the separation (for example, by the separation unit 260) and the prediction processing (by the inter prediction unit 244 and the intra prediction unit 254) performed by the exemplary video encoder 20.

РазделениеSeparation

Блок 262 разделения может разделять (или разбивать) текущий блок 203 на меньшие части, например, меньшие блоки квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут называться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например, на уровне 0 корневого дерева (уровень 0 иерархии, глубина 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например, узлы на уровне 1 дерева (уровень 1 иерархии, глубина 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровень 2 дерева (уровень 2 иерархии, глубина 2) и т. д. до тех пор, пока разделение не будет завершено, например, потому что критерий завершения выполнен, например, достигнута максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется тройным деревом (TT), а дерево, использующее разделение на четыре раздела, называется деревом квадратов (QT).Divider 262 may divide (or break) the current block 203 into smaller pieces, such as smaller blocks of square or rectangular size. These smaller blocks (which may also be referred to as sub-blocks) can be further subdivided into even smaller sections. This is also called tree splitting or hierarchical tree splitting, in which a root box, e.g. at level 0 of the root tree (hierarchy level 0, depth 0), can be recursively split, e.g. split into two or more boxes of the next lower level of the tree, e.g. , nodes at tree level 1 (hierarchy level 1, depth 1), whereby these blocks can again be split into two or more next lower level blocks, e.g. tree level 2 (hierarchy level 2, depth 2), etc. until the split is complete, for example because a termination criterion is met, such as the maximum tree depth or minimum block size has been reached. Blocks that are not split further are also called leaf blocks or leaf nodes of the tree. A tree using two partitions is called a binary tree (BT), a tree using three partitions is called a ternary tree (TT), and a tree using four partitions is called a square tree (QT).

Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью изображения. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).As mentioned earlier, the term "block" as used herein can be a part, in particular a square or rectangular part of an image. With respect to, for example, HEVC and VVC, a block may be either a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU), and a transformation unit (TU) and/or corresponding blocks, such as a coding tree block (CTB). ), a coding block (CB), a transformation block (TB), or a prediction block (PB).

Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть блоком NxN выборок для некоторого значения N, так что деление компонента на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскости и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть блоком MxN выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением.For example, a coding tree unit (CTU) can be either a luminance sample CTB, two corresponding chrominance sample CTBs of an image that has three sample arrays, or a monochrome image sample CTB or an image that is encoded using three separate color planes and the syntax structures used for coding samples. Accordingly, a coding tree block (CTB) may be a block of NxN samples for some value of N, such that dividing a component by CTB is a split. A coding unit (CU) can be either a luminance sample coding unit, two corresponding chrominance sample coding units of an image that has three sample arrays, or a monochrome image sample coding unit or an image that is encoded using three separate color planes and the syntax structures used for coding samples. Accordingly, a coding block (CB) may be a block of MxN samples for some values of M and N, so dividing the CTB into coding blocks is a division.

В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разделена на CU с использованием структуры дерева квадратов, обозначенной как дерево кодирования. Решение о том, кодировать ли область изображения с использованием внешнего (временного) или внутреннего (пространственного) предсказания, принимается на уровне CU. Каждая CU может быть дополнительно разделена на одну, две или четыре PU в соответствии с типом разделения PU. Внутри одной PU применяется тот же процесс предсказания, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разделения PU, CU может быть разделена на единицы преобразования (TU) в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU.In embodiments, for example according to HEVC, a coding tree unit (CTU) may be partitioned into CUs using a square tree structure referred to as a coding tree. The decision as to whether to encode an image area using extrinsic (temporal) or intrinsic (spatial) prediction is made at the CU level. Each CU may be further partitioned into one, two or four PUs according to the partition type of the PUs. Within one PU, the same prediction process is applied and the corresponding information is transmitted to the decoder based on the PU. After obtaining the residual block by applying a prediction process based on the partition type of the PU, the CU may be divided into transform units (TUs) according to a different quadtree structure similar to the coding tree for the CU.

В вариантах осуществления, например, согласно последнему разрабатываемому в настоящее время стандарту кодирования видео, который называется универсальным кодированием видео (VVC), для разделения блока кодирования используется разделение на квадраты и двоичное дерево (QTBT). В блочной структуре QTBT CU может иметь квадратную или прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется структурой дерева квадратов. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или тройной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно с блочной структурой QTBT было предложено использовать множественное разделение, например, тройное разделение дерева.In embodiments, for example, according to the latest video coding standard currently being developed, called universal video coding (VVC), quad-binary tree (QTBT) partitioning is used to partition a coding block. In the block structure of QTBT, the CU can be square or rectangular. For example, a coding tree unit (CTU) is first divided by a square tree structure. The leaf nodes of the quadtree are further separated by a binary tree or a ternary (or ternary) tree structure. The leaf nodes of the partitioning tree are called coding units (CUs) and this segmentation is used for prediction and transformation processing without any further partitioning. This means that CU, PU and TU have the same block size in the QTBT coding block structure. In parallel with the block structure of QTBT, it has been proposed to use multiple partitioning, such as triple tree partitioning.

В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разделения, описанных в данном документе.In one example, mode selector 260 of video encoder 20 may be configured to perform any combination of the separation methods described herein.

Как описано выше, видеокодер 20 сконфигурирован для определения или выбора наилучшего или оптимального режима предсказания из набора (заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.As described above, video encoder 20 is configured to determine or select the best or optimal prediction mode from a set of (predetermined) prediction modes. The set of prediction modes may include, for example, intra prediction modes and/or inter prediction modes.

Внутреннее предсказаниеInternal prediction

Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено для VVC.The intra prediction mode set may contain 35 different intra prediction modes, such as non-directional modes such as DC (or average) mode and planar mode, or directional modes, such as those defined in HEVC, or may comprise 67 different intra prediction modes, such as , non-directional modes such as DC (or medium) mode and planar mode, or directional modes such as those defined for VVC.

Блок 254 внутреннего предсказания выполнен с возможностью использования восстановленных выборок соседних блоков одного и того же текущего изображения для генерации блока 265 внутреннего предсказания согласно режиму внутреннего предсказания набора режимов внутреннего предсказания.The intra prediction block 254 is configured to use the recovered samples of neighboring blocks of the same current picture to generate the intra prediction block 265 according to the intra prediction mode of the intra prediction mode set.

Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутреннего предсказания (или, в общем, информации, указывающей выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме элементов 266 синтаксиса для включения в данные 21 закодированного изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.Block 254 intra prediction (or, in General, block 260 mode selection) is further configured to output parameters of intra prediction (or, in General, information indicating the selected intra prediction mode for the block) in block 270 entropy encoding in the form of elements 266 syntax for including the encoded image in the data 21 so that, for example, the video decoder 30 can receive and use the prediction parameters for decoding.

Внешнее предсказаниеexternal prediction

Набор (или возможные) режимов внешнего предсказания зависит от доступных опорных изображений (т. е. предыдущих, по меньшей мере, частично декодированных изображений, например, сохраненных в DPB 230) и других параметров внешнего предсказания, например, от того, все ли опорное изображение или только его часть, например, область окна поиска вокруг области текущего блока опорного изображения используется для поиска наиболее подходящего опорного блока и/или, например, применяется ли интерполяция пикселей, например, интерполяция половины/полупикселя и/или четверти пикселя, или нет.The set (or possible) inter prediction modes depends on the available reference pictures (i.e., previous at least partially decoded pictures, such as those stored in DPB 230) and other inter prediction parameters, such as whether the reference picture is all or only a part of it, for example, the area of the search window around the area of the current reference image block is used to find the most suitable reference block and/or, for example, whether pixel interpolation is applied, for example, half/half pixel and/or quarter pixel interpolation or not.

В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.In addition to the aforementioned prediction modes, a skip mode and/or a direct mode may be applied.

Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба не показаны на фиг.2). Блок оценки движения может быть сконфигурирован для приема или получения блока 203 изображения (блока 203 текущего изображения для текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или множества других/различных ранее декодированных изображений 231 для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231, или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.Inter prediction block 244 may include a motion estimator (ME) and a motion compensation (MC) block (both not shown in FIG. 2). The motion estimator may be configured to receive or obtain an image block 203 (current image block 203 for current image 17) and a decoded image 231, or at least one or a plurality of previously reconstructed blocks, e.g., reconstructed blocks of one or a plurality of other/different previously decoded images 231 for motion estimation. For example, the video sequence may comprise the current picture and previously decoded pictures 231, or in other words, the current picture and previously decoded pictures 231 may be part of or form a sequence of pictures that make up the video sequence.

Кодер 20 может, например, быть сконфигурирован для выбора опорного блока из множества опорных блоков одного и того же или разных изображений из множества других изображений и предоставления опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещение) между положением (координаты x, y) опорного блока и положением текущего блока в качестве параметров внешнего предсказания для блока оценки движения. Это смещение также называется вектором движения (MV).Encoder 20 may, for example, be configured to select a reference block from a plurality of reference blocks of the same or different pictures from a plurality of other pictures and provide a reference picture (or reference picture index) and/or offset (spatial offset) between position (x coordinates , y) the reference block and the position of the current block as inter-prediction parameters for the motion estimation block. This displacement is also called motion vector (MV).

Блок компенсации движения сконфигурирован для получения, например, приема параметра внешнего предсказания и выполнения внешнего предсказания на основе или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя извлечение или генерацию блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно выполнение интерполяции с точностью до субпикселя. Интерполяционная фильтрация может генерировать дополнительные выборки пикселей из известных выборок пикселей, таким образом потенциально увеличивая количество кандидатных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений. The motion compensation block is configured to obtain, for example, receive an inter prediction parameter and perform inter prediction based on or using the inter prediction parameter to obtain inter prediction block 265. The motion compensation performed by the motion compensator may include extracting or generating a prediction block based on the motion vector/block determined by the motion estimation, possibly performing sub-pixel-accurate interpolation. Interpolation filtering can generate additional pixel samples from known pixel samples, thus potentially increasing the number of candidate prediction blocks that can be used to encode an image block. Upon receiving the motion vector for the PU of the current picture block, the motion compensator may find the prediction block pointed to by the motion vector in one of the reference picture lists.

Блок компенсации движения также может генерировать элементы синтаксиса, связанные с блоками и слайсом видео, для использования видеодекодером 30 при декодировании блоков изображения слайса видео.The motion compensation block may also generate syntax elements associated with blocks and a video slice for use by video decoder 30 when decoding image blocks of a video slice.

Энтропийное кодированиеEntropy coding

Блок 270 энтропийного кодирования сконфигурирован для применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), контекстно-адаптивной схемы VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с интервалом вероятности (PIPE) или другого метода или способа энтропийного кодирования) или обхода (без сжатия) квантованных коэффициентов 209, параметров внешнего предсказания, параметров внутреннего предсказания, параметров контурного фильтра и/или других элементов синтаксиса для получения данных 21 закодированного изображения, которые могут выводиться через выход 272, например, в форме кодированного потока 21 битов, так что, например, видеодекодер 30 может принимать и использовать параметры для декодирования. Кодированный поток 21 битов может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или поиска видеодекодером 30.Entropy encoding unit 270 is configured to apply, for example, an entropy encoding algorithm or scheme (for example, variable length coding (VLC) scheme, context adaptive VLC scheme (CAVLC), arithmetic coding scheme, binarization, context adaptive binary arithmetic coding (CABAC ) based on the syntax of context adaptive binary arithmetic coding (SBAC), probability interval entropy coding (PIPE), or other entropy coding technique or method) or traversal (without compression) of quantized coefficients 209, inter prediction parameters, intra prediction parameters, parameters loop filter and/or other syntax elements for obtaining encoded image data 21 that can be output via output 272, for example, in the form of a coded bitstream 21, so that, for example, video decoder 30 can receive and use parameters for decoding. The encoded bit stream 21 may be transmitted to video decoder 30 or stored in memory for later transmission or retrieval by video decoder 30.

Другие структурные вариации видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для некоторых блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.Other structural variations of video encoder 20 may be used to encode the video stream. For example, non-transform-based encoder 20 may quantize the residual signal directly without transform processor 206 for some blocks or frames. In another implementation, encoder 20 may have quantizer 208 and inverse quantizer 210 combined into a single unit.

Декодер и способ декодированияDecoder and decoding method

Фиг. 3 показывает пример видеодекодера 30, который сконфигурирован для реализации методик настоящей заявки. Видеодекодер 30 сконфигурирован для приема кодированных данных 21 изображения (например, кодированного потока 21 битов), например, закодированных кодером 20, для получения декодированного изображения 331. Кодированные данные изображения или поток битов содержат информацию для декодирования данных кодированного изображения, например данные, которые представляют блоки изображения кодированного слайса видео и связанные с ними элементы синтаксиса.Fig. 3 shows an example of a video decoder 30 that is configured to implement the techniques of the present application. Video decoder 30 is configured to receive encoded picture data 21 (e.g., encoded bitstream 21), such as encoded by encoder 20, to obtain a decoded picture 331. The encoded picture data or bitstream contains information for decoding encoded picture data, such as data that represents blocks encoded video slice images and associated syntax elements.

В примере на фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер декодированных изображений (DPB) 330, блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2.In the example in FIG. 3, the decoder 30 includes an entropy decoding block 304, an inverse quantization block 310, an inverse transform processing block 312, a reconstruction block 314 (e.g., adder 314), a loop filter 320, a decoded picture buffer (DPB) 330, an inter prediction block 344, and a block 354 internal prediction. Inter prediction block 344 may be or include a motion compensation block. Video decoder 30 may, in some examples, perform a decoding step that is generally the reverse of the encoding step described with respect to video encoder 100 in FIG.

Как пояснялось в отношении кодера 20, блока 210 обратного квантования, блока 212 обработки обратного преобразования, блока 214 восстановления, контурного фильтра 220, буфера 230 декодированных изображений (DPB), блок 344 внешнего предсказания и блок внутреннего предсказания 354 также упоминаются как образующие «встроенный декодер» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функциям блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функциям блоку восстановления 214, контурный фильтр 320 может быть идентичен по функциям контурному фильтру 220, и буфер 330 декодированного изображения может быть идентичным по функции буферу 230 декодированного изображения. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применяются соответственно к соответствующим модулям и функциям видеодекодера 30.As explained with respect to the encoder 20, the inverse quantizer 210, the inverse transform processor 212, the reconstructor 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 344 and the intra prediction unit 354 are also referred to as constituting an "embedded decoder » of the video encoder 20. Accordingly, the inverse quantizer 310 may be identical in function to the inverse quantizer 110, the inverse transform processing unit 312 may be identical in function to the inverse transform processing unit 212, the restorer 314 may be identical in function to the restorer 214, loop filter 320 may be identical in function to loop filter 220, and decoded image buffer 330 may be identical in function to decoded image buffer 230. Therefore, the explanations provided for the respective blocks and functions of the video encoder 20 apply to the respective modules and functions of the video decoder 30, respectively.

Энтропийное декодированиеEntropy decoding

Модуль 304 энтропийного декодирования выполнен с возможностью синтаксического анализа потока 21 битов или, в общем, данных 21 закодированного изображения) и выполнения, например, энтропийного декодирования для данных 21 закодированного изображения, чтобы получить, например, квантованные коэффициенты 309 и/или декодированные параметры кодирования (не показаны на Фиг.3), например, любые или все из параметров внешнего предсказания (например, индекс опорного изображения и вектор движения), параметр внешнего предсказания (например, индекс или режим внутреннего предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие элементы синтаксиса. Модуль 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении модуля 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно сконфигурирован для предоставления параметров внешнего предсказания, параметра внутреннего предсказания и/или других элементов синтаксиса в блок 360 выбора режима и других параметров в другие блоки декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне слайса видео и/или уровне видеоблока.The entropy decoding module 304 is configured to parse the bit stream 21 or, in general, the encoded image data 21) and perform, for example, entropy decoding on the encoded image data 21 to obtain, for example, quantized coefficients 309 and/or decoded coding parameters ( not shown in FIG. 3), e.g., any or all of the inter prediction parameters (e.g., reference picture index and motion vector), inter prediction parameter (e.g., index or intra prediction mode), transform parameters, quantization parameters, loop filter parameters and/or other syntax elements. Entropy decoding unit 304 may be configured to apply decoding algorithms or schemes corresponding to coding schemes as described in relation to entropy encoding unit 270 of encoder 20. Entropy decoding unit 304 may be further configured to provide inter prediction parameters, an intra prediction parameter, and/or other syntax elements to mode select block 360; and other parameters to other blocks of decoder 30. Video decoder 30 may receive syntax elements at the video slice level and/or video block level.

Обратное квантованиеInverse quantization

Блок 310 обратного квантования может быть сконфигурирован для приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, путем анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применять на основе параметров квантования обратное квантование к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в слайсе видео, для определения степени квантования и, аналогично, степени обратного квантования, которое должно применяться.An inverse quantizer 310 may be configured to receive quantization parameters (QPs) (or inverse quantization related information in general) and quantized coefficients from the encoded image data 21 (e.g., by parsing and/or decoding, e.g., by a block 304 entropy decoding) and apply, based on the quantization parameters, inverse quantization to the decoded quantized coefficients 309 to obtain dequantized coefficients 311, which may also be referred to as transform coefficients 311. The inverse quantization process may include using a quantization parameter determined by video encoder 20 for each video block in a video slice to determine the amount of quantization, and likewise, the amount of inverse quantization to be applied.

Обратное преобразованиеReverse transformation

Блок 312 обработки обратного преобразования может быть сконфигурирован для приема деквантованных коэффициентов 311, также называемых коэффициентами 311 преобразования, и для применения преобразования к деквантованным коэффициентам 311, чтобы получить восстановленные остаточные блоки 213 в области выборки. Восстановленные остаточные блоки 213 также могут упоминаться как блоки 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно сконфигурирован для приема параметров преобразования или соответствующей информации из данных 21 закодированного изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое должно применяться к деквантованным коэффициентам. 311.The inverse transform processor 312 may be configured to receive the dequantized coefficients 311, also referred to as transform coefficients 311, and to apply a transform to the dequantized coefficients 311 to obtain reconstructed residual blocks 213 in the sample area. The recovered residual blocks 213 may also be referred to as transform blocks 313 . The transformation may be an inverse transformation, eg, inverse DCT, inverse DST, inverse integer transformation, or a conceptually similar inverse transformation process. The inverse transform processing unit 312 may be further configured to receive transform parameters or corresponding information from the encoded image data 21 (eg, by parsing and/or decoding, eg, by entropy decoding unit 304) to determine the transform to be applied to the dequantized coefficients. 311.

ВосстановлениеRecovery

Блок 314 восстановления (например, сумматор или сумматор 314) может быть сконфигурирован для добавления восстановленного остаточного блока 313 к блоку 365 предсказания для получения восстановленного блока 315 в области выборки, например, путем добавления значений выборок восстановленного остаточного блока 313 к значениям выборки блока 365 предсказания.Reconstructor 314 (e.g., adder or adder 314) may be configured to add recovered residual block 313 to predictor 365 to obtain reconstructed block 315 in the sample region, for example, by adding the sample values of the reconstructed residual block 313 to the sample values of predictor 365.

ФильтрацияFiltration

Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или несколько контурных фильтров, таких как фильтр деблокирования, фильтр с адаптивным смещением (SAO) или один или несколько других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (ALF), повышение резкости, сглаживающие фильтры или коллаборативные фильтры, или любая их комбинация. Хотя модуль 320 контурного фильтра показан на Фиг.3 как контурный фильтр, в других конфигурациях модуль 320 контурного фильтра может быть реализован как постконтурный фильтр.The loop filter block 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to obtain a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. The loop filter block 320 may comprise one or more loop filters, such as a deblocking filter, an adaptive offset (SAO) filter, or one or more other filters, such as a two-sided filter, an adaptive loop filter (ALF), sharpening, smoothing filters, or collaborative filters. filters, or any combination of them. Although the loop filter module 320 is shown as a loop filter in FIG. 3, in other configurations, the loop filter module 320 may be implemented as a post loop filter.

Буфер декодированного изображенияDecoded image buffer

Декодированные видеоблоки 321 изображения затем сохраняются в буфере 330 декодированных изображений, который сохраняет декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или для вывода, соответственно, отображения.The decoded video blocks 321 of the picture are then stored in the decoded picture buffer 330, which stores the decoded pictures 331 as reference pictures for subsequent motion compensation for other pictures and/or for display output, respectively.

Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312 для представления или просмотра пользователю.The decoder 30 is configured to output the decoded image 311, for example, via output 312 for presentation or viewing to a user.

ПредсказаниеPrediction

Блок 344 внешнего предсказания может быть идентичен блоку 244 внешнего предсказания (в частности, блоку компенсации движения), а блок 354 внутреннего предсказания может быть идентичен блоку 254 внешнего предсказания по функциям и выполняет решения о разбиении или разделении и предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принятой из данных 21 закодированного изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 выбора режима может быть сконфигурирован для выполнения предсказания (внутреннего или внешнего предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.Inter prediction block 344 may be identical to inter prediction block 244 (in particular, motion compensation block), and intra prediction block 354 may be identical to inter function prediction block 254 and performs split or split decisions and prediction based on split parameters and/or prediction or corresponding information received from the encoded image data 21 (eg, by parsing and/or decoding, eg, by entropy decoding unit 304). Mode selector 360 may be configured to perform prediction (intra or inter prediction) for each block based on the reconstructed images, blocks, or corresponding samples (filtered or unfiltered) to obtain prediction block 365 .

Когда слайс видео кодируется как слайс с внутренним кодированием (I), блок 354 внутреннего предсказания блока 360 выбора режима конфигурируется для генерации блока 365 предсказания для блока изображения текущего слайса видео на основе переданного в сигналах режима внутреннего предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как (то есть B или P) слайс с внешним кодированием, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 выбора режима конфигурируется для создания блоков 365 предсказания для видеоблока слайса текущего видео на основе векторов движения и других элементов синтаксиса, принятых от блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть созданы из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может создавать списки опорных кадров, Список 0 и Список 1, используя способы построения по умолчанию на основе опорных изображений, хранящихся в DPB 330.When a video slice is encoded as an intra (I) slice, the intra prediction block 354 of the mode select block 360 is configured to generate a prediction block 365 for a picture block of the current video slice based on the signaled intra prediction mode and data from the previously decoded blocks of the current picture. When a video image is encoded as an inter-coded (i.e., B or P) slice, the inter prediction block 344 (e.g., motion compensation block) of the mode select block 360 is configured to create prediction blocks 365 for the current video slice video block based on motion vectors and other syntax elements. received from block 304 entropy decoding. For inter prediction, prediction blocks may be created from one of the reference pictures in one of the reference picture lists. Video decoder 30 may construct lists of key frames, List 0 and List 1, using default construction methods based on reference pictures stored in DPB 330.

Блок 360 выбора режима сконфигурирован для определения информации предсказания для видеоблока текущего слайса видео путем анализа векторов движения и других элементов синтаксиса и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, модуль 360 выбора режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков слайса видео, типа слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информацию о построении для одного или нескольких списков опорных изображений для слайса, векторы движения для каждого интеркодированного видеоблока слайса, статус внешнего предсказания для каждого видеоблока с внешним предсказанием упомянутого слайса и другую информацию для декодирования видеоблоков в текущем слайсе видео.The mode selector 360 is configured to determine prediction information for a video block of the current video slice by analyzing motion vectors and other syntax elements, and uses the prediction information to generate prediction blocks for the current video block being decoded. For example, the mode selector 360 uses some of the received syntax elements to determine the prediction mode (eg, intra or inter prediction) used to encode the video blocks of the video slice, the type of inter prediction slice (eg, B slice, P slice, or GPB slice). ), construction information for one or more reference picture lists for a slice, motion vectors for each intercoded video block of the slice, inter prediction status for each inter prediction video block of said slice, and other information for decoding video blocks in the current video slice.

Другие варианты видеодекодера 30 могут использоваться для декодирования данных 21 закодированного изображения. Например, декодер 30 может формировать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнить обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.Other variants of video decoder 30 may be used to decode encoded picture data 21. For example, decoder 30 may generate an output video stream without loop filter block 320 . For example, non-transform-based decoder 30 can directly inverse quantize the residual signal without inverse transform processing unit 312 for some blocks or frames. In another implementation, video decoder 30 may have an inverse quantizer 310 and an inverse transform processor 312 combined into one block.

Следует понимать, что в кодере 20 и декодере 30 результат обработки текущего этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после интерполяционной фильтрации, вывода вектора движения или петлевой фильтрации может выполняться дополнительная операция, такая как обрезка или сдвиг, над результатом обработки интерполяционной фильтрации, вывода вектора движения или петлевой фильтрации.It should be understood that in encoder 20 and decoder 30, the processing result of the current step may be further processed and then output to the next step. For example, after interpolation filtering, motion vector output, or loop filtering, an additional operation such as trimming or shifting may be performed on the result of the interpolation filtering, motion vector output, or loop filtering processing.

Следует отметить, что дополнительные операции могут применяться к производным векторам движения текущего блока (в том числе, но не ограничиваясь ими, векторы движения контрольной точки аффинного режима, векторы движения субблока в аффинном, планарном режимах, режимах ATMVP, временные векторы движения и т.д.). Например, значение вектора движения ограничено предопределенным диапазоном в соответствии с его битом представления. Если представляющий бит вектора движения - bitDepth, то диапазон равен -2 ^ (bitDepth-1) ~ 2 ^ (bitDepth-1) -1, где «^» означает возведение в степень. Например, если bitDepth установлено равным 16, диапазон составляет -32768 ~ 32767; если bitDepth установлен равным 18, диапазон составляет -131072 ~ 131071. Например, значение производного вектора движения (например, MV четырех субблоков 4×4 в одном блоке 8×8) ограничено таким образом, что максимальная разница между целыми частями четырех MV субблока 4×4 не превышает N пикселей, например, не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.It should be noted that additional operations can be applied to derived motion vectors of the current block (including, but not limited to, affine mode checkpoint motion vectors, sub-block motion vectors in affine, planar, ATMVP modes, temporal motion vectors, etc. .). For example, the motion vector value is limited to a predefined range according to its representation bit. If the representing bit of the motion vector is bitDepth, then the range is -2^(bitDepth-1)~2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is set to 16, the range is -32768 ~ 32767; if bitDepth is set to 18, the range is -131072 ~ 131071. For example, the motion vector derivative value (for example, the MV of four 4×4 sub-blocks in one 8×8 block) is limited such that the maximum difference between the integer parts of the four MVs of a 4× sub-block 4 does not exceed N pixels, for example, not more than 1 pixel. Here are two ways to limit the motion vector according to bitDepth.

Способ 1. Удалить старший бит переполнения (старший бит) с помощью потоковых операцийMethod 1: Remove the overflow MSB (most significant bit) using streaming operations

ux= ( mvx+2bitDepth ) % 2bitDepth (1)ux= ( mvx+2 bitDepth ) % 2 bitDepth (1)

mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (2)mvx = ( ux >= 2 bitDepth-1 ) ? (ux − 2 bitDepth ) : ux(2)

uy= ( mvy+2bitDepth ) % 2bitDepth (3)uy= ( mvy+2 bitDepth ) % 2 bitDepth (3)

mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (4)mvy = ( uy >= 2 bitDepth-1 ) ? (uy − 2 bitDepth ) : uy (4)

где mvx - горизонтальный компонент вектора движения блока или субблока изображения, mvy - вертикальный компонент вектора движения блока или субблока изображения, а ux и uy указывают промежуточное значение;where mvx is the horizontal component of the motion vector of the image block or sub-block, mvy is the vertical component of the motion vector of the image block or sub-block, and ux and uy indicate an intermediate value;

Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение будет 32767. В компьютерной системе десятичные числа хранятся в виде дополнения до двух. Дополнение до двух -32769 равно 1,0111,1111,1111,1111 (17 бит), затем старший бит отбрасывается, поэтому полученное дополнение до двух составляет 0111,1111,1111,1111 (десятичное число 32767), что то же самое, что выход, применяя формулы (1) и (2).For example, if the value of mvx is -32769, after applying formulas (1) and (2), the resulting value will be 32767. In a computer system, decimal numbers are stored as two's complement. Two's complement -32769 is 1.0111,1111,1111,1111 (17 bits), then the most significant bit is discarded, so the resulting two's complement is 0111,1111,1111,1111 (32767 decimal), which is the same as yield by applying formulas (1) and (2).

ux= ( mvpx + mvdx +2bitDepth ) % 2bitDepth (5)ux= ( mvpx + mvdx +2 bitDepth ) % 2 bitDepth (5)

mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (6)mvx = ( ux >= 2 bitDepth-1 ) ? (ux − 2 bitDepth ) : ux(6)

uy= ( mvpy + mvdy +2bitDepth ) % 2bitDepth (7)uy= ( mvpy + mvdy +2 bitDepth ) % 2 bitDepth (7)

mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (8)mvy = ( uy >= 2 bitDepth-1 ) ? (uy − 2 bitDepth ) : uy (8)

Операции могут применяться во время суммирования mvp и mvd, как показано в формулах (5) - (8).Operations can be applied during the summation of mvp and mvd, as shown in formulas (5) - (8).

Способ 2: удалить старший бит переполнения, обрезав значениеMethod 2: Remove the most significant bit of the overflow by trimming the value

vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)vx = Clip3(-2 bitDepth-1 , 2 bitDepth-1 -1, vx)

vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)vy = Clip3(-2 bitDepth-1 , 2 bitDepth-1 -1, vy)

где vx - горизонтальный компонент вектора движения блока или субблока изображения, vy - вертикальный компонент вектора движения блока или субблока изображения; x, y и z соответственно соответствуют трем входным значениям процесса обрезки MV, а определение функции Clip3 выглядит следующим образом:where vx is the horizontal component of the motion vector of the image block or subblock, vy is the vertical component of the motion vector of the image block or subblock; x, y, and z respectively correspond to the three input values of the MV clipping process, and the Clip3 function definition is as follows:

Clip3 (x, y, z) = x; z <xy;

Figure 00000001
Clip3 (x, y, z) = x; z<xy;
Figure 00000001

(otherwise - иначе)(otherwise - otherwise)

Фиг. 4 является схематической диаграммой устройства 400 кодирования видео согласно варианту осуществления раскрытия. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, как описано в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 по фиг. 1A или кодером, таким как видеокодер 20 по фиг. 1А.Fig. 4 is a schematic diagram of a video encoding apparatus 400 according to an embodiment of the disclosure. The video encoding device 400 is suitable for implementing the disclosed embodiments as described herein. In an embodiment, video encoding device 400 may be a decoder, such as video decoder 30 of FIG. 1A or an encoder such as video encoder 20 of FIG. 1A.

Устройство 400 кодирования видео содержит входные порты 410 (или входные порты 410) и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (ЦП) 430 для обработки данных; блоки передатчика (Tx) 440 и выходные порты 450 (или выходные порты 450) для передачи данных; и память 460 для хранения данных. Устройство 400 кодирования видео может также содержать оптико-электрические (OE) компоненты и электрические-оптические (EO) компоненты, подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для выхода или входа оптических или электрических сигналов.The video encoding device 400 includes input ports 410 (or input ports 410) and receiver (Rx) units 420 for receiving data; a processor, logical unit, or central processing unit (CPU) 430 for processing data; transmitter units (Tx) 440 and output ports 450 (or output ports 450) for data transmission; and a memory 460 for storing data. The video encoder 400 may also include optical-electrical (OE) components and electrical-optical (EO) components connected to input ports 410, receiver units 420, transmitter units 440, and output ports 450 for output or input of optical or electrical signals.

Процессор 430 реализован аппаратно и программно. Процессор 430 может быть реализован как одна или несколько микросхем ЦП, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит блок 470 кодирования. Блок 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, блок 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Таким образом, включение в состав блока 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 кодирования видео и обеспечивает преобразование устройства 400 кодирования видео в другое состояние. В качестве альтернативы блок 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.The processor 430 is implemented in hardware and software. Processor 430 may be implemented as one or more CPU chips, cores (eg, as a multi-core processor), FPGA, ASIC, and DSP. Processor 430 communicates with input ports 410, receiver units 420, transmitter units 440, output ports 450, and memory 460. Processor 430 includes an encoder 470. Encoder 470 implements the disclosed embodiments described above. For example, encoding unit 470 implements, processes, prepares, or provides various encoding operations. Thus, the inclusion of the encoding unit 470 provides a significant improvement in the functionality of the video encoding device 400 and allows the video encoding device 400 to be converted to another state. Alternatively, encoder 470 is implemented as instructions stored in memory 460 and executed by processor 430.

Память 460 может содержать один или несколько дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве запоминающего устройства для переполнения данных, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянным запоминающим устройством (ROM), оперативным запоминающим устройством (RAM), троичной памятью с адресацией по содержимому (TCAM) и/или статической памятью произвольного доступа (SRAM).Memory 460 may comprise one or more disks, tape drives, and solid state drives and may be used as a storage device for overflowing data, for storing programs when such programs are selected for execution, and for storing instructions and data that are read during program execution. Memory 460 may be, for example, volatile and/or nonvolatile and may be read only memory (ROM), random access memory (RAM), content-addressable ternary memory (TCAM), and/or static random access memory (SRAM).

Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться в качестве одного или обоих из исходного устройства 12 и целевого устройства 14 на фиг. 1A согласно примерному варианту осуществления. Fig. 5 is a simplified block diagram of a device 500 that can be used as one or both of source device 12 and target device 14 in FIG. 1A according to an exemplary embodiment .

Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, существующую в настоящее время или разработанную в будущем. Хотя раскрытые реализации могут быть реализованы с одним процессором, как показано, например процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более чем одного процессора.Processor 502 in device 500 may be a central processing unit. Alternatively, the processor 502 may be any other type of device or a plurality of devices capable of manipulating or processing information that currently exists or will be developed in the future. Although the disclosed implementations may be implemented with a single processor, as illustrated by processor 502, for example, speed and efficiency advantages may be achieved using more than one processor.

Память 504 в устройстве 500 может быть постоянным запоминающим устройством (ROM) или устройством оперативной памяти (RAM) в некоторой реализации. В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым обращается процессор 502, используя шину 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные здесь способы. Memory 504 in device 500 may be read only memory (ROM) or random access memory (RAM) in some implementation. The memory 504 may be any other suitable type of storage device. Memory 504 may include code and data 506 accessed by processor 502 using bus 512. Memory 504 may further include an operating system 508 and application programs 510, application programs 510 include at least one program that allows processor 502 to perform the methods described here. For example, applications 510 may include applications 1 through N, which further include a video encoding application that performs the methods described herein.

Устройство 500 также может включать в себя одно или несколько устройств вывода, таких как дисплей 518. Дисплей 518 может быть, в одном примере, дисплеем, чувствительным к касанию, который объединяет дисплей с элементом, чувствительным к касанию, способным считывать вводы касанием. Дисплей 518 может быть подключен к процессору 502 через шину 512.The device 500 may also include one or more output devices such as a display 518. The display 518 may be, in one example, a touch-sensitive display that combines the display with a touch-sensitive element capable of reading touch inputs. Display 518 may be connected to processor 502 via bus 512.

Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из нескольких шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один интегрированный блок, такой как карта памяти, или несколько блоков, например, несколько карт памяти. Таким образом, устройство 500 может быть реализовано в широком разнообразии конфигураций.Although shown here as a single bus, bus 512 of device 500 may be comprised of multiple buses. In addition, secondary storage 514 may be directly connected to other components of the device 500 or may be accessed via a network and may contain one integrated unit, such as a memory card, or multiple units, such as multiple memory cards. Thus, device 500 can be implemented in a wide variety of configurations.

Внутреннее предсказание выборок цветности может быть выполнено с использованием выборок восстановленного блока яркости.Intra-prediction of the chrominance samples may be performed using the recovered luminance block samples.

Во время разработки HEVC было предложено внутреннее предсказание цветности кросс-компонентной линейной модели (CCLM) [J. Ким, С.-В. Парк, Ж.-Й. Парк, Б.-М. Чон, Intra Chroma Prediction Using Inter Channel Correlation, document JCTVC-B021, Jul. 2010]. CCLM использует линейную корреляцию между выборкой цветности и выборкой яркости в соответствующей положению в блоке кодирования. Когда блок цветности кодируется с использованием CCLM, линейная модель выводится из восстановленных соседних выборок яркости и цветности с помощью линейной регрессии. Затем выборки цветности в текущем блоке могут быть предсказаны по восстановленным выборкам яркости в текущем блоке с выведенной линейной моделью (см. Фиг 6):During the development of HEVC, cross-component linear model (CCLM) intra-chrominance prediction was proposed [J. Kim, S.-W. Park, J.-J. Park, B.-M. Cheon, Intra Chroma Prediction Using Inter Channel Correlation, document JCTVC-B021, Jul. 2010]. CCLM uses a linear correlation between a chrominance sample and a luma sample at the corresponding position in the coding block. When a chrominance block is encoded using CCLM, a linear model is derived from the reconstructed adjacent luma and chrominance samples using linear regression. The chrominance samples in the current block can then be predicted from the reconstructed luminance samples in the current block with the derived linear model (see FIG. 6):

Figure 00000002
,
Figure 00000002
,

где C и L указывают значения цветности и яркости соответственно. Параметры

Figure 00000003
и
Figure 00000004
определяются способом наименьших квадратов следующим образом:where C and L indicate the chrominance and lightness values, respectively. Parameters
Figure 00000003
and
Figure 00000004
are defined by the least squares method as follows:

Figure 00000005
,
Figure 00000005
,

где M (A) представляет собой среднее значение A, а R (A, B) определяется следующим образом:where M(A) is the mean of A and R(A, B) is defined as follows:

Figure 00000006
.
Figure 00000006
.

Если кодированное или декодированное изображение имеет формат, который задает различное количество выборок для компонентов яркости и цветности (например, формат YCbCr 4: 2: 0), выборки яркости подвергаются понижающей дискретизации перед моделированием и предсказанием.If the encoded or decoded image has a format that specifies a different number of samples for the luminance and chrominance components (eg, YCbCr 4:2:0 format), the luminance samples are downsampled before modeling and prediction.

Способ был принят для использования в VTM2.0. В частности, вывод параметров выполняется следующим образом:The method has been adopted for use in VTM2.0. In particular, the derivation of parameters is done as follows:

Figure 00000007
,
Figure 00000007
,

Figure 00000008
,
Figure 00000008
,

где L(n) представляет верхнюю и левую соседние восстановленные выборки яркости с пониженной дискретизацией, C (n) представляет верхнюю и левую соседние восстановленные выборки цветности.whereL(n) represents the top and left adjacent reconstructed reduced brightness samples sampling, C(n) represents the top and left adjacent reconstructed chrominance samples.

В [G. Ларош, Ж. Таке, К. Жиске, П. Онно (Canon), «CE3: Cross-component linear model simplification (Test 5.1)”, Input document to 12th JVET Meeting in Macao, China, Oct. 2018] был предложен другой способ получения α и β (см. Рис. 7). В частности, параметры α и β линейной модели получаются согласно следующим уравнениям:In [G. Laroche, J. Taquet, C. Giske, P. Onno (Canon), “CE3: Cross-component linear model simplification (Test 5.1)”, Input document to 12th JVET Meeting in Macao, China, Oct. 2018] another method was proposed for obtaining αandβ (see Fig. 7). In particular, the parameters α and β of the linear model are obtained according to the following equations:

Figure 00000009
Figure 00000009

Figure 00000010
Figure 00000010

где

Figure 00000011
и
Figure 00000012
- положения максимального и минимального значений в выборках яркости.where
Figure 00000011
and
Figure 00000012
- positions of the maximum and minimum values in the brightness samples.

Также было предложено реализовать операцию деления с помощью умножения на число, которое хранится в справочной таблице (LUT), которая указана в таблице 1. Эта замена возможна следующим способом:It has also been proposed to implement the division operation by multiplying by a number, which is stored in a look-up table (LUT), which is indicated in table 1. This replacement is possible in the following way:

Figure 00000013
Figure 00000013

где

Figure 00000014
параметр сдвига, задающий точность.where
Figure 00000014
a shift parameter that specifies the precision.

В таблице 1 показано сопоставление диапазона индексов LUT (указанного в первой строке таблицы) со списками значений, хранящимися в LUT, причем каждый список соответствует диапазону его индексов. Можно заметить, что значения

Figure 00000015
можно рассчитать следующим образом:Table 1 shows the mapping of the LUT index range (specified in the first row of the table) to the lists of values stored in the LUT, with each list corresponding to its index range. It can be seen that the values
Figure 00000015
can be calculated as follows:

Figure 00000016
.
Figure 00000016
.

Используя LUT, определенный в таблице 1 (или рассчитанный эквивалентным образом с использованием приведенного выше уравнения), вычисление

Figure 00000017
выполняется следующим образом:Using the LUT defined in Table 1 (or calculated equivalently using the equation above), the calculation
Figure 00000017
is done as follows:

Figure 00000018
Figure 00000018

Параметр сдвига

Figure 00000014
можно разложить на несколько частей, т. е.
Figure 00000019
, потому что значение α используется в дополнительном вычислении. Это разложение обеспечивает гибкость точности вычислений на различных этапах, и, таким образом, можно перераспределять битовую глубину операций умножения по шагам получения значения предсказанной выборки цветности. В конкретной реализации:Shift parameter
Figure 00000014
can be decomposed into several parts, i.e.
Figure 00000019
, because the value of α is used in the extra calculation. This decomposition provides flexibility in the accuracy of the calculations at different stages, and thus it is possible to redistribute the bit depth of the multiplication operations over the steps of obtaining the value of the predicted chrominance sample. In a specific implementation:

Figure 00000020
Figure 00000020

Figure 00000021
Figure 00000021

Figure 00000022
.
Figure 00000022
.

Таблица 1. Примерная таблица LUT для реализации операции деления с использованием умножения на числоTable 1. An example LUT for implementing a division operation using multiplication by a number

Диапазоны индексов LUT:LUT index ranges: 00 3232 6464 9696 128128 160160 192192 224224 256256 288288 320320 352352 384384 416416 448448 480480 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 3131 6363 9595 127127 159159 191191 223223 255255 287287 319319 351351 383383 415415 447447 479479 511511 Значения, хранящиеся в LUT:Values stored in LUT: 6553665536 19851985 10081008 675675 508508 407407 339339 291291 255255 226226 204204 185185 170170 157157 145145 136136 3276832768 19271927 992992 668668 504504 404404 337337 289289 254254 225225 203203 185185 169169 156156 145145 135135 2184521845 18721872 978978 661661 500500 402402 336336 288288 253253 225225 202202 184184 169169 156156 145145 135135 1638416384 18201820 963963 655655 496496 399399 334334 287287 252252 224224 202202 184184 168168 156156 144144 135135 1310713107 17711771 949949 648648 492492 397397 332332 286286 251251 223223 201201 183183 168168 155155 144144 135135 1092210922 17241724 936936 642642 489489 394394 330330 284284 250250 222222 201201 183183 168168 155155 144144 134134 93629362 16801680 923923 636636 485485 392392 329329 283283 249249 222222 200200 182182 167167 154154 144144 134134 81928192 16381638 910910 630630 481481 390390 327327 282282 248248 221221 199199 182182 167167 154154 143143 134134 72817281 15981598 897897 624624 478478 387387 326326 281281 247247 220220 199199 181181 166166 154154 143143 134134 65536553 15601560 885885 618618 474474 385385 324324 280280 246246 219219 198198 181181 166166 153153 143143 133133 59575957 15241524 873873 612612 471471 383383 322322 278278 245245 219219 197197 180180 165165 153153 142142 133133 54615461 14891489 862862 606606 468468 381381 321321 277277 244244 218218 197197 180180 165165 153153 142142 133133 50415041 14561456 851851 601601 464464 378378 319319 276276 243243 217217 196196 179179 165165 152152 142142 132132 46814681 14241424 840840 595595 461461 376376 318318 275275 242242 217217 196196 179179 164164 152152 141141 132132 43694369 13941394 829829 590590 458458 374374 316316 274274 241241 216216 195195 178178 164164 152152 141141 132132 40964096 13651365 819819 585585 455455 372372 315315 273273 240240 215215 195195 178178 163163 151151 141141 132132 38553855 13371337 809809 579579 451451 370370 313313 271271 240240 214214 194194 177177 163163 151151 140140 131131 36403640 13101310 799799 574574 448448 368368 312312 270270 239239 214214 193193 177177 163163 151151 140140 131131 34493449 12851285 789789 569569 445445 366366 310310 269269 238238 213213 193193 176176 162162 150150 140140 131131 32763276 12601260 780780 564564 442442 364364 309309 268268 237237 212212 192192 176176 162162 150150 140140 131131 31203120 12361236 771771 560560 439439 362362 307307 267267 236236 212212 192192 175175 161161 149149 139139 130130 29782978 12131213 762762 555555 436436 360360 306306 266266 235235 211211 191191 175175 161161 149149 139139 130130 28492849 11911191 753753 550550 434434 358358 304304 265265 234234 210210 191191 174174 161161 149149 139139 130130 27302730 11701170 744744 546546 431431 356356 303303 264264 234234 210210 190190 174174 160160 148148 138138 130130 26212621 11491149 736736 541541 428428 354354 302302 263263 233233 209209 189189 173173 160160 148148 138138 129129 25202520 11291129 728728 537537 425425 352352 300300 262262 232232 208208 189189 173173 159159 148148 138138 129129 24272427 11101110 720720 532532 422422 350350 299299 261261 231231 208208 188188 172172 159159 147147 137137 129129 23402340 10921092 712712 528528 420420 348348 297297 260260 230230 207207 188188 172172 159159 147147 137137 129129 22592259 10741074 704704 524524 417417 346346 296296 259259 229229 206206 187187 172172 158158 147147 137137 128128 21842184 10571057 697697 520520 414414 344344 295295 258258 229229 206206 187187 171171 158158 146146 137137 128128 21142114 10401040 689689 516516 412412 343343 293293 257257 228228 205205 186186 171171 157157 146146 136136 128128 20482048 10241024 682682 512512 409409 341341 292292 256256 227227 204204 186186 170170 157157 146146 136136 128128

В этом случае коэффициент

Figure 00000017
линейной модели имеет целочисленное представление с фиксированной точкой дробного значения, точность
Figure 00000017
определяется значением S1=S-S0, которое используется для получения значения предсказанной выборки цветности:In this case, the coefficient
Figure 00000017
linear model has an integer representation with a fixed point of a fractional value, precision
Figure 00000017
is defined by the value S1=S-S0, which is used to obtain the value of the predicted chrominance sample:

Figure 00000023
Figure 00000023

Размер LUT довольно критичен для аппаратной реализации кодера или декодера. Самый простой способ решить эту проблему - регулярно выполнять субдискретизацию LUT, сохраняя только каждый N-й элемент (здесь N - коэффициент субдискретизации) исходной заданной LUT, т.е. в таблице 1.The LUT size is quite critical for the hardware implementation of the encoder or decoder. The easiest way to solve this problem is to regularly downsample the LUT, keeping only every Nth element (here N is the downsampling factor) of the original given LUT, i.e. in table 1.

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

Figure 00000024
, извлечение из LUT определяется по-другому:After regular subsampling (subsampling) with a power-of-two subsampling factor equal to
Figure 00000024
, extraction from the LUT is defined differently:

Figure 00000025
Figure 00000025

вместоinstead of

Figure 00000026
Figure 00000026

Можно заметить, что для естественных изображений вероятность

Figure 00000027
будет иметь небольшое значение, больше, чем вероятность того, что эта разница будет большой. Другими словами, вероятность появления значения из таблицы 1 уменьшается от левого столбца к правому столбцу, а внутри каждого столбца эта вероятность уменьшается от первого до последнего элемента, принадлежащего этому столбцу. Примерная зависимость вероятности возникновения от значения
Figure 00000027
приведена на рисунке 8.It can be seen that for natural images the probability
Figure 00000027
will have a small value, more than the probability that this difference will be large. In other words, the probability of occurrence of a value from table 1 decreases from the left column to the right column, and within each column, this probability decreases from the first to the last element belonging to this column. Approximate dependence of the probability of occurrence on the value
Figure 00000027
shown in Figure 8.

Следовательно, сохранение только каждого N-го элемента исходной таблицы LUT далеко не оптимально, поскольку соответствует равновероятному распределению его аргумента, что неверно.Therefore, keeping only every Nth element of the original LUT is far from optimal, since it corresponds to an equiprobable distribution of its argument, which is not true.

Рассматривая это распределение, можно достичь лучшего компромисса между размером LUT и точностью вычислений, чем может обеспечить обычная субдискретизация.Considering this distribution, a better compromise between LUT size and computational accuracy can be achieved than conventional subsampling can achieve.

Предлагается определить LUT с использованием нелинейной индексации, в частности, таким образом, чтобы две соседние записи LUT соответствовали различным шагам

Figure 00000028
, и значение этого шага увеличивается с индексом записи.It is proposed to define the LUT using non-linear indexing, in particular, in such a way that two adjacent LUT entries correspond to different steps
Figure 00000028
, and the value of this step increases with the index of the entry.

Одним из эффективных с вычислительной точки зрения решений является определение индекса в LUT с использованием нескольких наиболее значимых битов

Figure 00000027
. Положение старшего бита
Figure 00000027
определяет точность (т. е. шаг между двумя соседними записями LUT) на основе положения старших битов. Большие значения положения старшего бита соответствуют меньшей точности и большему значению шага.One computationally efficient solution is to determine the index in the LUT using the few most significant bits
Figure 00000027
. MSB position
Figure 00000027
determines the precision (i.e., the step between two adjacent LUT entries) based on the position of the most significant bits. Large values of the MSB position correspond to less precision and a larger step value.

Конкретный вариант осуществления показан на фиг.9 и фиг.10. На Фиг.9 показана блок-схема вычисления значений LUT, а на Фиг.10 показано, как получить индекс «idx» в LUT, соответствующий входному значению

Figure 00000027
.A specific embodiment is shown in Fig.9 and Fig.10. Figure 9 shows a flowchart for calculating LUT values, and Figure 10 shows how to get the index "idx" in the LUT corresponding to the input value
Figure 00000027
.

Используя шаги, показанные на рисунке 9, можно получить значения, которые будут сохранены в LUT для их дальнейшего использования при моделировании CCLM. На рис. 9 переменная ctr перебирает все возможные значения

Figure 00000029
. Можно заметить, что на самом деле LUT имеет поддиапазоны, каждый поддиапазон содержит записи «colmax». Внутри поддиапазона значение «ctr» увеличивается с равным значением «шага». Для поддиапазона, имеющего индекс «lut_shift+1», который больше 1, соответствующее значение «шага» увеличено вдвое по сравнению с поддиапазоном «lut_shift». Первые два поддиапазона будут иметь шаг, равный единице из-за порога в операции «step=1<<max(0,lut_shift)».Using the steps shown in Figure 9, values can be obtained that will be stored in the LUT for later use in the CCLM simulation. On fig. 9 variable ctr iterates over all possible values
Figure 00000029
. You can see that the LUT actually has subranges, each subrange contains "col max" entries. Within a subrange, the "ctr" value is incremented by an equal "step" value. For a subband having an index "lut_shift+1" that is greater than 1, the corresponding "step" value is doubled compared to the subrange "lut_shift". The first two subranges will have a step equal to one due to the threshold in the "step=1<<max(0,lut_shift)" operation.

Как показано на фиг.9, блок-схема иллюстрирует примерный процесс создания справочной таблицы в соответствии с вариантом осуществления изобретения. На этапе 902 устройство кодирования видео запускает процесс генерации справочной таблицы. Устройство кодирования видео может быть декодером, таким как видеодекодер 30 на фиг. 1A-1B, фиг. 3, или кодером, таким как видеокодер 20 на фиг. 1A-1B, фиг. 2, или устройство 400 кодирования видео по фиг. 4, или устройство 500 по фиг. 5.As shown in FIG. 9, the flowchart illustrates an exemplary process for creating a lookup table in accordance with an embodiment of the invention. At block 902, the video encoder starts a lookup table generation process. The video encoding device may be a decoder, such as video decoder 30 in FIG. 1A-1B, FIG. 3 or an encoder such as video encoder 20 in FIG. 1A-1B, FIG. 2 or the video encoding device 400 of FIG. 4 or device 500 of FIG. five.

На этапе 904 пусть ctr=1 и lut_shift=1. На этапе 906 определяется, является ли индекс lut_shift< lut_shiftmax. Если lut_shift< lut_shiftmax, шаг рассчитывается как 1<<max(0, lut_shift), и col=0 на этапе 908; иначче, процесс генерации заканчивается на этапе 922. На этапе 910 начальное смещение обеспечивается этапом «ctr=ctr+(step>>1)». Тогда будет ли col<colmax определяется на этапе 912. Если col<colmax, LUT[ctr]=(1<<S)/ctr на этапе 914, здесь, предварительно вычисленные значения LUT, которые определены на этапах 912-918, генерируют одну строку LUT; иначе, пусть индекс lut_shift= lut_shift+1 на этапе 920. На этапе 916 значения ctr, соответствующие началу каждого поддиапазона, устанавливаются как ctrl+step. На этапе 918 процесс генерации переходит к следующему столбцу, затем процесс возвращается к этапу 912.At step 904, let ctr=1 and lut_shift=1. At block 906, it is determined if the index lut_shift< lut_shiftmax. If lut_shift< lut_shiftmax, the step is calculated as 1<<max(0, lut_shift), and col=0 in step 908; otherwise, the generation process ends at step 922. At step 910, the initial offset is provided by step "ctr=ctr+(step>>1)". Then whether col<colmax is determined in step 912. If col<colmax, LUT[ctr]=(1<<S)/ctr in step 914, here, the precomputed LUT values that are determined in steps 912-918 generate one string LUT; otherwise, let index lut_shift= lut_shift+1 in step 920. In step 916, ctr values corresponding to the start of each subband are set to ctrl+step. At block 918, the generation process proceeds to the next column, then the process returns to block 912.

Примерная LUT, сгенерированная с использованием блок-схемы, показанной на фиг.9, приведена в таблице 2. Строка этой таблицы соответствует поддиапазону с индексом «lut_shift». Эта таблица была получена с «lut_shiftmax», равным 6, и «colmax», равным 3, в результате чего в LUT 48 записей. Значения ctr, соответствующие началу каждого поддиапазона (нулевое значение «col»), следующие:An exemplary LUT generated using the block diagram shown in Fig. 9 is shown in Table 2. A row in this table corresponds to a subband with the index "lut_shift". This table was obtained with "lut_shiftmax",equal to 6, and "colmax", equal to 3, resulting in 48 entries in the LUT. The ctr values corresponding to the start of each sub-range (zero "col" value) are as follows:

0, 8, 17, 35, 71, 143, 287.0, 8, 17, 35, 71, 143, 287.

Эти значения не всегда являются степенью двойки, потому что субдискретизация в каждом поддиапазоне выполняется относительно середины поддиапазона. Соответствующее начальное смещение обеспечивается шагом «ctr=ctr+(step>>1)», показанным на рис. 9. Значение «шаг» для значений «lut_shift» не больше 0 устанавливается равным 1.These values are not always a power of two because each subband is subsampled relative to the middle of the subband. The corresponding initial offset is provided by the step "ctr=ctr+(step>>1)" shown in fig. 9. The "step" value for "lut_shift" values not greater than 0 is set to 1.

Таблица 2. Примерная LUT, сгенерированная с использованием блок-схемы, показанной на рис. 9Table 2. An example LUT generated using the block diagram shown in Figure 2. nine

lut_shiftlut_shift colcol 00 1one 22 33 44 5five 66 77 -1-one 6553665536 3276832768 2184521845 1638416384 1310713107 1092210922 93629362 81928192 00 72817281 65536553 59575957 54615461 50415041 46814681 43694369 40964096 1one 36403640 32763276 29782978 27302730 25202520 23402340 21842184 20482048 22 18201820 16381638 14891489 13651365 12601260 11701170 10921092 10241024 33 910910 819819 744744 682682 630630 585585 546546 512512 44 455455 409409 372372 341341 315315 292292 273273 256256 5five 227227 204204 186186 170170 157157 146146 136136 128128

На фиг. 10A двоичное представление 1001 входного значения (например, разность

Figure 00000027
обрабатывается для определения положения соответствующей записи в LUT, показанной в таблице 2. Старший ненулевой бит входного значения помечается как 1002. Положение этого бита определяет значение «msb». Фактически, значение msb - это log2 () входного значения 1001. Вычитание 1 из «msb» дает значение «lut_shift», которое выбирает строку в таблице 2. В противном случае шаг рассчитывается как «1<<lut_shift».In FIG. 10A is a binary representation 1001 of an input value (for example, the difference
Figure 00000027
processed to determine the position of the corresponding entry in the LUT shown in Table 2. The most significant non-zero bit of the input value is marked 1002. The position of this bit determines the value of "msb". In fact, the value of msb is the log2() of the input value 1001. Subtracting 1 from "msb" gives the value "lut_shift" which selects a row in table 2. Otherwise, the step is calculated as "1<<lut_shift".

Выбор столбца выполняется путем взятия битов «colmax» рядом с 1002. Значение столбца «col» в таблице 2 получается следующим образом:Column selection is done by taking the "col max" bits next to 1002. The value of the "col" column in table 2 is obtained as follows:

значение «high_bits» получается путем выбора битов «colmax+1», следующих за старшим битом 1020;the value "high_bits" is obtained by selecting the bits "col max+ 1" following the high bit 1020;

col устанавливается равным значению, хранящемуся в «high_bits», уменьшенному на 1.col is set to the value stored in "high_bits" minus 1.

Для случая, когда шаг выравнивания «ctr=ctr+(step>>1)» не выполняется на Фиг.9, вывод значения «lut_shift» такой же, а вывод значения «col» еще проще (Фиг. 10B): значение «col» получается путем выбора битов «colmax», следующих за старшим битом 1020. Этот способ выведения индекса соответствует таблице 3. Значения «ctr» (фиг. 9), соответствующие началу каждого поддиапазона (нулевое значение «col»), следующие:For the case where the alignment step "ctr=ctr+(step>>1)" is not performed in Fig. 9, the output of the "lut_shift" value is the same, and the output of the "col" value is even simpler (Fig. 10B): the value of "col" obtained by choosing bits "colmax'' following the MSB 1020. This index derivation method corresponds to Table 3. The 'ctr' values (FIG. 9) corresponding to the beginning of each sub-band (a 'col' value of zero) are as follows:

0, 8, 16, 32, 64, 128, 2560, 8, 16, 32, 64, 128, 256

Таблица 3. Другая примерная LUT, сгенерированная с использованием блок-схемы, показанной на фиг. 9, в случае, когда «ctr=ctr+(step>>1)» пропущеноTable 3. Another exemplary LUT generated using the block diagram shown in FIG. 9, in case "ctr=ctr+(step>>1)" is omitted

lut_shiftlut_shift colcol 00 1one 22 33 44 5five 66 77 -1-one 6553665536 3276832768 2184521845 1638416384 1310713107 1092210922 93629362 81928192 00 72817281 65536553 59575957 54615461 50415041 46814681 43694369 40964096 1one 38553855 34493449 31203120 28492849 26212621 24272427 22592259 21142114 22 19851985 17711771 15981598 14561456 13371337 12361236 11491149 10741074 33 10081008 897897 809809 736736 675675 624624 579579 541541 44 508508 451451 407407 370370 339339 313313 291291 271271 5five 255255 226226 204204 185185 170170 157157 145145 136136

При выведении значения «col» msb может быть меньше или равным «colmax». В этом случае значение «col» устанавливается равным младшим значащим битам «colmax» входной разности 1001.When inferring the value "col", msb can be less than or equal to "col max ". In this case, the value of "col" is set to the least significant bits of " col max " of the input difference 1001.

В практических реализациях LUT-индекс является одномерным. Обычно понимается, что LUT, показанные в таблицах 2 и 3, можно адресовать линейно, используя набор индексов, равный:In practical implementations, the LUT index is one-dimensional. It is generally understood that the LUTs shown in Tables 2 and 3 can be addressed linearly using a set of indices equal to:

Figure 00000030
.
Figure 00000030
.

Обе LUT, показанные в Таблице 2 и Таблице 3, хранят значения, которые сильно различаются по своей величине. Следовательно, разумно иметь одинаковое количество битов для всех значений, хранящихся в LUT. Значение, извлекаемое из LUT, может быть дополнительно сдвинуто влево в соответствии со значением lut_shift. Единственное исключение из этого правила - первые четыре значения, которые имеют отличную точность с последними четырьмя значениями в этой строке. Однако эту проблему можно решить с помощью дополнительной таблицы LUT, в которой хранятся эти дополнительные сдвиги для первых четырех значений. В этом варианте осуществления значение множителя восстанавливается из значения, извлеченного из LUT, следующим образом: Both LUTs shown in Table 2 and Table 3 store values that vary greatly in magnitude. Therefore, it makes sense to have the same number of bits for all values stored in the LUT. The value retrieved from the LUT can be further shifted to the left according to the value of lut_shift. The only exception to this rule is the first four values, which have excellent precision with the last four values in that row. However, this problem can be solved with an additional LUT that stores these additional offsets for the first four values. In this embodiment, the multiplier value is restored from the value retrieved from the LUT as follows:

Figure 00000031
Figure 00000031

где

Figure 00000032
. Значение δ устанавливается равным 3, 2, 1, 1, соответственно, для значений «idx», меньших или равных 4. Справочная таблица для этого варианта приведена в таблице 4.where
Figure 00000032
. The value of δ is set to 3, 2, 1, 1, respectively, for "idx" values less than or equal to 4. A lookup table for this option is given in Table 4.

Таблица 4. Другая примерная LUT, сгенерированная с использованием блок-схемы, показанной на фиг.9, в случае равной точности в пределах диапазонов.Table 4. Another exemplary LUT generated using the block diagram shown in Fig. 9 in case of equal accuracy within the ranges.

lut_shiftlut_shift colcol 00 1one 22 33 44 5five 66 77 -1-one 128128 128128 171171 128128 205205 171171 146146 128128 00 228228 205205 186186 171171 158158 146146 137137 128128 1one 241241 216216 195195 178178 164164 152152 141141 132132 22 248248 221221 200200 182182 167167 155155 144144 134134 33 252252 224224 202202 184184 169169 156156 145145 135135 44 254254 226226 204204 185185 170170 157157 146146 136136 5five 128128 128128 171171 128128 205205 171171 146146 128128

Можно заметить, что последние строки таблицы 4 очень похожи друг на друга. Следовательно, можно уменьшить размер LUT, сохранив только одну строку для некоторых наборов поддиапазонов. В конкретных вариантах осуществления, когда значение «lut_shift» больше некоторого порога, значение lut_shift устанавливается равным пороговому значению, а значение δ уменьшается на разницу между начальным значением «lut_shift» и значением порогового значения.It can be seen that the last rows of Table 4 are very similar to each other. Therefore, it is possible to reduce the size of the LUT by keeping only one row for some sets of subranges. In specific embodiments, when the value of "lut_shift" is greater than a certain threshold, the value of lut_shift is set equal to the threshold value, and the value of δ is reduced by the difference between the initial value of "lut_shift" and the value of the threshold value.

Фиг. 11 - блок-схема, иллюстрирующая примерное внутреннее предсказание выборки цветности блока с применением кросс-компонентной линейной модели. На этапе 1102 устройство кодирования видео получает восстановленные выборки яркости. Устройство кодирования видео может быть декодером, таким как видеодекодер 30 на фиг. 1A-1B, фиг. 3, или кодером, таким как видеокодер 20 на фиг. 1A-1B, фиг. 2, или устройство 400 кодирования видео по фиг. 4, или устройство 500 по фиг. 5.Fig. 11 is a block diagram illustrating exemplary block chroma sample intra prediction using a cross-component linear model. At 1102, the video encoder obtains the recovered luminance samples. The video encoding device may be a decoder, such as video decoder 30 in FIG. 1A-1B, FIG. 3 or an encoder such as video encoder 20 in FIG. 1A-1B, FIG. 2 or the video encoding device 400 of FIG. 4 or device 500 of FIG. five.

На этапе 1104 устройство кодирования видео определяет положения максимального и минимального значений восстановленной выборки в восстановленных выборках яркости. Например, восстановленные выборки яркости являются соседними восстановленными выборками яркости, соответствующими выбрке цветности.In step 1104, the video encoder determines the positions of the maximum and minimum values of the reconstructed sample in the reconstructed luma samples. For example, the reconstructed luma samples are neighboring reconstructed luminance samples corresponding to the chrominance sample.

На этапе 1106 устройство кодирования видео получает значение разности максимума и минимума восстановленных выборок яркости.In step 1106, the video encoder obtains the difference between the maximum and minimum of the reconstructed luminance samples.

На этапе 1108 устройство кодирования видео вычисляет индекс для LUT, чтобы получить значение множителя, которое соответствует значению разности максимума и минимума восстановленных выборок яркости. In step 1108, the video encoder computes an index for the LUT to obtain a multiplier value that corresponds to the difference between the maximum and minimum of the reconstructed luminance samples.

Например, устройство кодирования видео определяет положение старшего бита разности максимального и минимального значений выборки яркости и использует набор битов, следующих за положением старшего бита разности максимального и минимального значений выборок яркости в качестве индекса для LUT, чтобы извлечь значение. Положение старшего бита разности максимального и минимального значений выборок яркости может быть получено как логарифм упомянутой разности по основанию два. Устройство кодирования видео определяет набор битов, следующих за положением старшего бита разности. Как возможный результат, набор битов включает в себя четыре бита.For example, the video encoder determines the position of the MSB of the difference between the maximum and minimum luminance samples and uses the set of bits following the position of the MSB of the difference between the maximum and minimum luminance samples as an index for the LUT to extract the value. The position of the most significant bit of the difference between the maximum and minimum values of the brightness samples can be obtained as the base two logarithm of said difference. The video encoder determines the set of bits following the position of the MSB of the difference. As a possible result, the bitset includes four bits.

LUT генерируется с шагом выравнивания или без него. LUT может включать в себя по меньшей мере два соседних значения, хранящихся в LUT, которые соответствуют различным шагам полученной разности, и значение этого шага увеличивается со значением разности или является константой.The LUT is generated with or without an alignment step. The LUT may include at least two adjacent values stored in the LUT that correspond to different steps of the received difference, and the value of this step increases with the value of the difference or is a constant.

Как раскрыто в примерных таблицах 1-4, LUT может включать в себя поддиапазоны значений. Шаг значения разности максимума и минимума восстановленных выборок яркости постоянен в пределах поддиапазона; и шаг для разных поддиапазонов разный. Например, шаг значения разности максимума и минимума восстановленных выборок яркости увеличивается с увеличением индекса поддиапазона. Например, шаг значения разности максимума и минимума восстановленных выборок яркости может быть степенью двойки индекса поддиапазона.As disclosed in exemplary tables 1-4, the LUT may include sub-ranges of values. The step of the value of the difference between the maximum and minimum of the reconstructed brightness samples is constant within the subrange; and the step for different subranges is different. For example, the value step of the difference between the maximum and minimum of the reconstructed luminance samples increases with increasing subband index. For example, the step value of the difference between the maximum and minimum of the reconstructed luminance samples may be a power of two of the subband index.

Пусть LUT включает в себя по меньшей мере три значения: первое значение, второе значение и третье значение. Среди трех значений первое значение и второе значение являются двумя соседними значениями, и второе значение и третье значение - двумя соседними значениями. Шаг (то есть точность или разница) между первым значением и вторым значением может быть равен или может отличаться от шага между вторым значением и третьим значением. Если первое значение индексируется первым набором битов, а второе значение индексируется вторым набором битов, первое значение меньше второго значения, когда значение первого набора битов больше, чем значение второго набора битов; или первое значение больше второго значения, когда значение первого набора битов меньше значения второго набора битов.Let the LUT include at least three values: a first value, a second value, and a third value. Among the three values, the first value and the second value are two adjacent values, and the second value and the third value are two adjacent values. The step (ie, precision or difference) between the first value and the second value may be equal to or different from the step between the second value and the third value. If the first value is indexed by the first bit set and the second value is indexed by the second bit set, the first value is less than the second value when the value of the first bit set is greater than the value of the second bit set; or the first value is greater than the second value when the value of the first set of bits is less than the value of the second set of bits.

LUT разделена на поддиапазоны. Индекс поддиапазона определяется с использованием положения старшего ненулевого бита разности максимума и минимума восстановленных выборок яркости. Например, размер поддиапазона равен 8, а количество поддиапазонов - 6. В качестве другого примера, разные соседние поддиапазоны имеют разное увеличение значения с одним и тем же шагом.The LUT is divided into subbands. The subband index is determined using the position of the most significant non-zero bit of the difference between the maximum and minimum of the reconstructed luma samples. For example, the subrange size is 8 and the number of subranges is 6. As another example, different adjacent subranges have different increase in value with the same step.

LUT может включать в себя нелинейные индексы. Две соседние записи LUT соответствуют различным шагам L(B)-L(A), где L (B) представляет максимальное значение восстановленных выборок яркости, L (A) представляет минимальное значение восстановленных выборок яркости. Значение шага записи может увеличиваться с увеличением индекса записи.The LUT may include non-linear indices. Two adjacent LUT entries correspond to different stepsL(B)-L(A), where L(B) represents the maximum value of recovered samples luminance, L(A) represents the minimum value of the reconstructed luminance samples. The write step value can increase as the write index increases.

Когда LUT использует несколько старших битов L (B) -L (A), положение старшего бита L (B) -L (A) определяет точность (то есть шаг между двумя соседними записями LUT ) на основе положения старших битов. Большие значения положения старшего бита могут соответствовать более низкой точности и большему значению шага.When a LUT uses multiple MSBs L(B) -L(A), the position of the MSB L (B)-L(A) determines the precision (i.e., the step between two adjacent LUT entries) based on the position of the MSBs. Larger MSB positions may correspond to lower precision and larger increments.

На этапе 1110 устройство кодирования видео получает параметры α и β линейной модели путем умножения извлеченного значения на разность максимального и минимального значений восстановленных выборок цветности.In step 1110, the video encoder obtains the linear model parameters α and β by multiplying the extracted value by the difference between the maximum and minimum values of the reconstructed chrominance samples.

На этапе 1112 устройство кодирования видео вычисляет предсказанное значение выборки цветности с использованием полученных параметров α и β линейной модели. In step 1112, the video encoder calculates a predicted chrominance sample value using the obtained linear model parameters α and β.

Фиг. 12 является блок-схемой, показывающей примерную структуру устройства 1200 для внутреннего предсказания выборки цветности блока путем применения кросс-компонентной линейной модели. Устройство 1200 сконфигурировано для выполнения вышеуказанных способов и может включать в себя:Fig. 12 is a block diagram showing an exemplary structure of an apparatus 1200 for intra prediction of a block chrominance sample by applying a cross-component linear model. Device 1200 is configured to perform the above methods and may include:

блок 1210 получения, сконфигурированный для получения восстановленных выборок яркости;an acquisition unit 1210, configured to obtain the reconstructed luminance samples;

блок 1220 определения, сконфигурированный для определения максимальных и минимальных значений выборок яркости на основе восстановленных выборок яркости;a determiner 1220, configured to determine maximum and minimum luminance sample values based on the reconstructed luminance samples;

блок 1210 получения, дополнительно сконфигурированный для получения разности максимального и минимального значений выборок яркости.an acquisition unit 1210, further configured to obtain a difference between the maximum and minimum values of the luminance samples.

блок 1220 определения, дополнительно сконфигурированный для определения положения старшего бита разности максимального и минимального значений выборок яркости. Например, положение старшего бита разности максимального и минимального значений выборки яркости является логарифмом упомянутой разности по основанию два. В качестве реализации старший бит - это первый ненулевой бит.a determiner 1220, further configured to determine the position of the most significant bit of the difference between the maximum and minimum values of the brightness samples. For example, the position of the most significant bit of the difference between the maximum and minimum luminance sample values is the base two logarithm of said difference. As an implementation, the most significant bit is the first non-zero bit.

Устройство 1200 дополнительно включает в себя блок вычисления 1230, сконфигурированный для извлечения значения из справочной таблицы (LUT) с использованием набора битов в качестве индекса, причем набор битов следует за положением старшего бита разности максимальных и минимальных значений выборок яркости, получения параметров α и β линейной модели на основе выбранного значения; и вычисления предсказанного значения выборки цветности с использованием полученных параметров α и β линейной модели. Например, набор битов содержит четыре бита.The apparatus 1200 further includes a calculator 1230 configured to extract a value from a look-up table (LUT) using a set of bits as an index, the set of bits following the position of the most significant bit of the difference between the maximum and minimum values of the brightness samples, obtaining the parameters α and β of a linear models based on the selected value; and calculating a predicted chrominance sample value using the obtained linear model parameters α and β. For example, a bitset contains four bits.

Блок вычисления может получить параметры α и β линейной модели на основе выбранного значения и разности максимального и минимального значений восстановленных выборок цветности. Например, блок вычисления получает параметры α и β линейной модели путем умножения извлеченного значения на разность максимального и минимального значений восстановленных выборок цветности.The calculation unit may derive the parameters α and β of the linear model based on the selected value and the difference between the maximum and minimum values of the reconstructed chrominance samples. For example, the calculation block obtains the parameters α and β of the linear model by multiplying the extracted value by the difference between the maximum and minimum values of the reconstructed chrominance samples.

Преимущество вариантов осуществления изобретенияAdvantage of Embodiments

1. Индекс для LUT вычисляется элегантным способом, который извлекает несколько битов в двоичном представлении. В результате повышается эффективность извлечения значения из LUT.1. The index for the LUT is calculated in an elegant way that extracts a few bits in the binary representation. As a result, the efficiency of extracting the value from the LUT is improved.

2. Поскольку эффективность извлечения значения из LUT увеличивается, величина множителя для получения параметров α и β линейной модели сводится к минимуму.2. As the efficiency of extracting a value from the LUT increases, the value of the multiplier for obtaining the parameters α and β of the linear model is reduced to a minimum.

3. Размер LUT минимизирован. Кривая функции деления (f (x) = 1/x, известная как гипербола) в вариантах осуществления настоящего изобретения была аппроксимирована следующим образом:3. LUT size is minimized. The division function curve (f (x) = 1/x, known as a hyperbola) in the embodiments of the present invention has been approximated as follows:

1) Размер таблицы LUT может быть 161) LUT table size can be 16

(минимальное количество записей для аппроксимации 1/x кривой, производная которой изменяется от 0 до бесконечности)(minimum number of entries to fit a 1/x curve whose derivative varies from 0 to infinity)

2) Элементы LUT имеют нелинейную зависимость от индекса записи2) LUT elements have a non-linear dependence on the record index

(для аппроксимации кривой 1/x)(for 1/x curve fitting)

3) Множители (элементы LUT) - это 3-битные целые числа без знака (0… 7).3) Multipliers (LUT elements) are 3-bit unsigned integers (0…7).

(минимальная точность для аппроксимации 1/x кривой, производная которой изменяется от 0 до бесконечности)(minimum precision to fit a 1/x curve whose derivative varies from 0 to infinity)

Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.The following is an explanation of the applications of the encoding method as well as the decoding method as shown in the above embodiments, and the system using them.

Фиг. 13 - это блок-схема, показывающая систему 3100 поставки контента для реализации услуги распространения контента. Эта система 3100 предоставления контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и, необязательно, включает в себя дисплей 3126. Устройство 3102 захвата обменивается данными с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия связи 3104 включает в себя, помимо прочего, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию и т.п.Fig. 13 is a block diagram showing a content supply system 3100 for realizing a content distribution service. This content delivery system 3100 includes a capture device 3102, a terminal device 3106, and optionally includes a display 3126. The capture device 3102 communicates with the terminal device 3106 over a communication line 3104. The communication link may include the communication channel 13 described above. Link 3104 includes, but is not limited to, WIFI, Ethernet, cable, wireless (3G/4G/5G), USB, or any combination thereof, and the like.

Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на фигурах), и сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, помимо прочего, камеру, смартфон или планшет, компьютер или портативный компьютер, систему видеоконференцсвязи, PDA, установленное на транспортном средстве устройство или комбинацию любого из них или тому подобное. Например, устройство 3102 захвата может включать в себя исходное устройство 12, как описано выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя аудио (то есть голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования аудио. Для некоторых практических сценариев устройство 3102 захвата распределяет закодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата отдельно распределяет кодированные аудиоданные и кодированные видеоданные на терминальное устройство 3106.The capture device 3102 generates data and may encode the data in an encoding manner as shown in the above embodiments. Alternatively, the capture device 3102 may distribute the data to a streaming server (not shown in the figures) and the server encodes the data and transmits the encoded data to the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, a smartphone or tablet, a computer or a laptop computer, a video conferencing system, a PDA, a vehicle-mounted device, or a combination of any of these, or the like. For example, capture device 3102 may include source device 12 as described above. When the data includes video, the video encoder 20 included in the capture device 3102 may actually perform video encoding processing. When the data includes audio (ie, voice), the audio encoder included in the capture device 3102 may actually perform audio encoding processing. For some practical scenarios, the capture device 3102 distributes encoded video and audio data by multiplexing them together. For other practical scenarios, such as in a videoconferencing system, encoded audio data and encoded video data are not multiplexed. The capture device 3102 separately distributes the encoded audio data and the encoded video data to the terminal device 3106.

В системе 3100 доставки контента терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и восстановления данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеомагнитофон (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, персональный цифровой помощник (PDA) 3122, устройство 3124, установленное на транспортном средстве, или их комбинацию, или тому подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя целевое устройство 14, как описано выше. Когда кодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения декодирования видео. Когда кодированные данные включают в себя аудио, аудиодекодер, включенный в терминальное устройство, получает приоритет для выполнения обработки декодирования звука.In the content delivery system 3100, the terminal device 310 receives and reproduces the encoded data. The terminal device 3106 may be a device with the ability to receive and retrieve data, such as a smartphone or tablet 3108, a computer or laptop 3110, a network video recorder (NVR)/digital video recorder (DVR) 3112, a television 3114, a set-top box (STB) 3116, a videoconferencing system 3118 , a video surveillance system 3120, a personal digital assistant (PDA) 3122, a vehicle-mounted device 3124, or a combination thereof, or the like capable of decoding the above encoded data. For example, terminal device 3106 may include target device 14 as described above. When the encoded data includes video, the video decoder 30 included in the terminal apparatus is given priority to perform video decoding. When the encoded data includes audio, an audio decoder included in the terminal device is given priority to perform audio decoding processing.

Для терминального устройства с дисплеем, например, смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеомагнитофона (DVR) 3112, телевизора 3114, персонального цифрового помощника (PDA) 3122, устройства 3124, установленного на транспортном средстве, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оснащенного дисплеем, например STB 3116, системы 3118 видеоконференцсвязи или системы 3120 видеонаблюдения, в нем устанавливается контакт с внешним дисплеем 3126 для приема и отображения декодированных данных.For display terminal device such as 3108 smartphone or tablet, 3110 computer or laptop, 3112 Network Video Recorder (NVR)/DVR (DVR), 3114 TV, 3122 Personal Digital Assistant (PDA), 3124 Vehicle Mounted Device, the terminal device may transmit the decoded data to its display. For a terminal device not equipped with a display, such as STB 3116, video conferencing system 3118, or video surveillance system 3120, it establishes contact with an external display 3126 to receive and display decoded data.

Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления.When each device in this system performs encoding or decoding, an image encoding device or an image decoding device may be used as shown in the above embodiments.

Фиг. 14 - схема, показывающая структуру примера терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи потока. Протокол включает в себя, помимо прочего, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи в реальном времени HTTP (HLS), MPEG-DASH, транспортный протокол в реальном времени (RTP), протокол обмена сообщениями в реальном времени (RTMP), или любую их комбинацию и т.п.Fig. 14 is a diagram showing the structure of an example of a terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, the protocol processing unit 3202 parses the transmission protocol of the stream. The protocol includes, but is not limited to, Real Time Streaming Protocol (RTSP), Hypertext Transfer Protocol (HTTP), HTTP Real Time Streaming Protocol (HLS), MPEG-DASH, Real Time Transport Protocol (RTP), real-time messaging (RTMP), or any combination thereof, etc.

После того, как блок 3202 обработки протокола обработает поток, генерируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.After the protocol processing unit 3202 processes the stream, a stream file is generated. The file is output to the demultiplexer 3204 . A demultiplexer 3204 may separate the multiplexed data into encoded audio data and encoded video data. As described above, for some practical scenarios, such as in a videoconferencing system, encoded audio data and encoded video data are not multiplexed. In this situation, the encoded data is transmitted to the video decoder 3206 and audio decoder 3208 without using the demultiplexer 3204.

Посредством обработки демультиплексирования генерируются элементарный видеопоток (ES), аудио ES и, необязательно, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, как объяснено в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерации видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для генерации аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на фиг. Y) перед подачей его в блок 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на фиг. Y) перед подачей его в блок 3212 синхронизации.Through the demultiplexing processing, a video elementary stream (ES), audio ES, and optionally subtitles are generated. The video decoder 3206, which includes the video decoder 30 as explained in the above embodiments, decodes the ES video using the decoding method as shown in the above embodiments to generate a video frame, and supplies this data to the sync block 3212. An audio decoder 3208 decodes the audio ES to generate an audio frame and provides this data to a sync block 3212. Alternatively, the video frame may be stored in a buffer (not shown in FIG. Y) before being fed to the sync block 3212. Similarly, an audio frame may be stored in a buffer (not shown in FIG. Y) before being fed into the sync block 3212.

Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может закодироваться в синтаксисе с использованием меток времени, касающихся представления кодированных аудио- и визуальных данных, и меток времени, касающихся доставки самого потока данных.The sync block 3212 synchronizes the video frame and the audio frame and supplies video/audio to the video/audio display 3214. For example, the sync block 3212 synchronizes the presentation of video and audio information. The information may be encoded in a syntax using timestamps regarding the presentation of encoded audio and visual data and timestamps regarding the delivery of the data stream itself.

Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и аудиокадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles and synchronizes them with the video frame and audio frame and passes the video/audio/subtitles to the video/audio/subtitle display 3216.

Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования изображения, либо устройство декодирования изображения в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.The present invention is not limited to the above system, and either the image encoding device or the image decoding device in the above embodiments may be included in another system such as an automobile system.

Хотя варианты осуществления изобретения были в основном описаны на основе кодирования видео, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10) и другие варианты осуществления, описанные в данном документе, также могут быть сконфигурированы для обработки или кодирования неподвижного изображения, то есть обработки или кодированияе отдельного изображения независимо от любого предыдущего или последующего изображения, как при кодировании видео. В общем, только блоки 244 (кодер) и 344 (декодер) внешнего предсказания могут быть недоступны в случае, если кодирование обработки изображения ограничено одним изображением 17. Все другие функции (также называемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки статических изображений, например вычисление остатка 204/304, преобразование 206, квантование 208, обратное квантование 210/310, (обратное) преобразование 212/312, разделение 262/362, внутреннее предсказание 254/354 и/или контурная фильтрация 220, 320, энтропийное кодирование 270 и энтропийное декодирование 304.Although embodiments of the invention have been primarily described in terms of video coding, it should be noted that embodiments of encoding system 10, encoder 20, and decoder 30 (and system 10, respectively) and other embodiments described herein may also be configured for processing or encoding a still image, that is, processing or encoding a single image independently of any previous or subsequent image, as in video encoding. In general, only inter prediction blocks 244 (encoder) and 344 (decoder) may be unavailable if image processing coding is limited to a single image 17. All other functions (also referred to as tools or technologies) of video encoder 20 and video decoder 30 may equally be used for still image processing, such as 204/304 residual calculation, 206 transform, 206 quantization, 210/310 inverse quantization, 212/312 (inverse) transform, 262/362 split, 254/354 intra prediction, and/or 220 loop filtering, 320, entropy encoding 270, and entropy decoding 304.

Варианты осуществления, например, кодера 20 и декодера 30, и функции, описанные в данном документе, например, со ссылкой на кодер 20 и декодер 30, могут быть реализованы в аппаратных средствах, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Если реализованы в программном обеспечении, функции могут храниться на машиночитаемом носителе или передаваться через среду связи в виде одной или нескольких инструкций или кода и выполняться аппаратным процессором. Машиночитаемый носитель может включать в себя машиночитаемый носитель данных, который соответствует материальному носителю, например, носителю данных или носителю связи, включая любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) материальным машиночитаемым носителям данных, которые являются энергонезависимыми, или (2) средам связи, таким как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может получить доступ один или несколько компьютеров или один или несколько процессоров для извлечения инструкций, кода и/или структур данных для реализации способов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.The embodiments of, for example, encoder 20 and decoder 30, and the functions described herein, for example, with reference to encoder 20 and decoder 30, may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on a computer-readable medium or transmitted over a communication medium as one or more instructions or code and executed by a hardware processor. A computer-readable medium may include a computer-readable medium that corresponds to a tangible medium, such as a data medium or a communication medium, including any medium that facilitates the transfer of a computer program from one place to another, for example, in accordance with a communication protocol. Thus, computer-readable media can typically correspond to (1) tangible computer-readable storage media that are non-volatile, or (2) communication media such as a signal or carrier wave. Storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and/or data structures for implementing the methods described in this disclosure. The computer program product may include a computer readable medium.

В качестве примера, но не ограничения, такие машиночитаемые носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасный порт, радио и микроволновая печь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволны включены в определение среды. Однако следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на энергонезависимые материальные носители данных. Диск и диск, используемые здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски обычно воспроизводят данные магнитным способом, и диски воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем машиночитаемых носителей.By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk or other magnetic storage devices, flash memory, or any other media which can be used to store desired program code in the form of instructions or data structures and can be accessed by a computer. In addition, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwaves are included in the media definition. However, it should be understood that computer-readable storage media and storage media do not include connections, carrier waves, signals, or other temporary media, but are instead directed to nonvolatile tangible storage media. The disc and disc used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where discs usually reproduce data magnetically and discs reproduce data optically. with the help of lasers. Combinations of the above should also be included within the scope of computer readable media.

Инструкции могут выполняться одним или несколькими процессорами, такими как один или несколько процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые логические матрицы (FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, используемый здесь термин «процессор» может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации описанных здесь методик. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, сконфигурированных для кодирования и декодирования или включенных в комбинированный кодек. Кроме того, способы могут быть полностью реализованы в одной или нескольких схемах или логических элементах.The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, as used herein, the term "processor" may refer to any of the aforementioned structures, or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured for encoding and decoding or included in a combined codec. In addition, the methods may be fully implemented in one or more circuits or logic elements.

Способы этого раскрытия могут быть реализованы в большом количестве устройств или аппаратур, в том числе беспроводной телефон, интегральную схему (IC) или набор IC (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены набором взаимодействующих аппаратных блоков, в том числе один или несколько процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или встроенным программным обеспечением.The methods of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless telephone, an integrated circuit (IC), or an IC array (eg, a chipset). This disclosure describes various components, modules, or blocks to emphasize the functional aspects of devices configured to perform the disclosed technologies, but not necessarily requiring implementation in different hardware blocks. Rather, as described above, various blocks may be combined into a codec hardware block, or provided by a set of cooperating hardware blocks, including one or more processors, as described above, in combination with suitable software and/or firmware.

Claims (46)

1. Способ внутреннего предсказания выборки цветности блока путем применения кросс-компонентной линейной модели, содержащий:1. A method for internal prediction of a block chromaticity sample by applying a cross-component linear model, comprising: получение восстановленных выборок яркости;obtaining recovered brightness samples; определение максимальных и минимальных значений выборок яркости на основе восстановленных выборок яркости;determining maximum and minimum luminance sample values based on the reconstructed luminance samples; получение разности максимального и минимального значений выборок яркости;obtaining the difference between the maximum and minimum values of the brightness samples; определение положения старшего бита разности максимального и минимального значений выборок яркости;determining the position of the most significant bit of the difference between the maximum and minimum values of the brightness samples; извлечение значения из справочной таблицы (LUT) с использованием набора битов в качестве индекса, причем набор битов следует за положением старшего бита разности максимального и минимального значений выборок яркости;extracting a value from a look-up table (LUT) using a set of bits as an index, the set of bits following the position of the most significant bit of the difference between the maximum and minimum values of the brightness samples; получение параметров α и β линейной модели на основе извлеченного значения; иobtaining parameters α and β of the linear model based on the extracted value; and вычисление предсказанного значения выборки цветности с использованием полученных параметров α и β линейной модели.calculating the predicted value of the chrominance sample using the obtained parameters α and β of the linear model. 2. Способ по п. 1, в котором положение старшего бита разности максимального и минимального значений выборок яркости получают как логарифм упомянутой разности по основанию два.2. The method of claim. 1, in which the position of the most significant bit of the difference between the maximum and minimum values of the brightness samples is obtained as a base two logarithm of said difference. 3. Способ по п. 1 или 2, в котором определение набора битов, следующих за положением старшего бита разности, приводит к набору битов, содержащему четыре бита.3. The method according to claim 1 or 2, wherein determining the set of bits following the position of the most significant bit of the difference results in a set of bits containing four bits. 4. Способ по любому из пп. 1-3, в котором старший бит является первым ненулевым битом.4. The method according to any one of paragraphs. 1-3, in which the most significant bit is the first non-zero bit. 5. Способ по любому из пп. 1-4, причем способ содержит:5. The method according to any one of paragraphs. 1-4, wherein the method comprises: получение параметров α и β линейной модели на основе извлеченного значения и разности максимального и минимального значений восстановленных выборок цветности.obtaining the parameters α and β of the linear model based on the extracted value and the difference between the maximum and minimum values of the restored chrominance samples. 6. Способ по п. 5, при этом способ содержит:6. The method according to p. 5, while the method contains: получение параметров α и β линейной модели путем умножения извлеченного значения на разность максимального и минимального значений восстановленных выборок цветности.obtaining the parameters α and β of the linear model by multiplying the extracted value by the difference between the maximum and minimum values of the reconstructed chrominance samples. 7. Способ по любому из пп. 1-6, в котором LUT содержит по меньшей мере три значения: первое значение, второе значение и третье значение;7. The method according to any one of paragraphs. 1-6, in which the LUT contains at least three values: a first value, a second value, and a third value; среди трех значений первое значение и второе значение являются двумя соседними значениями, и второе значение и третье значение являются двумя соседними значениями.among the three values, the first value and the second value are two adjacent values, and the second value and the third value are two adjacent values. 8. Способ по п. 7, в котором шаг между первым значением и вторым значением равен шагу между вторым значением и третьим значением.8. The method of claim 7, wherein the step between the first value and the second value is equal to the step between the second value and the third value. 9. Способ по п. 7, в котором шаг между первым значением и вторым значением отличается от шага между вторым значением и третьим значением.9. The method of claim 7, wherein the step between the first value and the second value is different from the step between the second value and the third value. 10. Способ по любому из пп. 7-9, в котором первое значение индексируется первым набором битов, а второе значение индексируется вторым набором битов;10. The method according to any one of paragraphs. 7-9, in which the first value is indexed by the first set of bits and the second value is indexed by the second set of bits; когда значение первого набора битов больше, чем значение второго набора битов, первое значение меньше второго значения; или when the value of the first set of bits is greater than the value of the second set of bits, the first value is less than the second value; or когда значение первого набора битов меньше значения второго набора битов, первое значение больше второго значения.when the value of the first bit set is less than the value of the second bit set, the first value is greater than the second value. 11. Способ по любому из пп. 1-10, в котором LUT содержит поддиапазоны значений, а шаг любых двух соседних значений является постоянным в пределах одного поддиапазона.11. The method according to any one of paragraphs. 1-10, in which the LUT contains subranges of values, and the step of any two adjacent values is constant within one subrange. 12. Устройство для внутреннего предсказания выборки цветности блока путем применения кросс-компонентной линейной модели, при этом устройство является кодером или декодером, и устройство содержит:12. A device for internal prediction of a block chrominance sample by applying a cross-component linear model, wherein the device is an encoder or decoder, and the device comprises: блок получения, сконфигурированный для получения восстановленных выборок яркости;an acquisition unit configured to obtain the reconstructed luminance samples; блок определения, сконфигурированный для определения максимальных и минимальных значений выборок яркости на основе восстановленных выборок яркости;a determination unit configured to determine maximum and minimum values of luminance samples based on the reconstructed luminance samples; блок получения, дополнительно сконфигурированный для получения разности максимального и минимального значений выборок яркости;an acquisition unit, further configured to obtain a difference between the maximum and minimum values of the brightness samples; блок определения, дополнительно сконфигурированный для определения положения старшего бита разности максимального и минимального значений выборок яркости; иa determining unit, further configured to determine the position of the most significant bit of the difference between the maximum and minimum values of the brightness samples; and блок вычисления, сконфигурированный для извлечения значения из справочной таблицы (LUT) с использованием набора битов в качестве индекса, причем набор битов следует за положением старшего бита разности максимального и минимального значений выборок яркости, получения параметров α и β линейной модели на основе извлеченного значения; и вычисления предсказанного значения выборки цветности с использованием полученных параметров α и β линейной модели.a calculation unit configured to extract a value from a look-up table (LUT) using a set of bits as an index, the set of bits following the position of the most significant bit of the difference between the maximum and minimum values of the brightness samples, obtaining linear model parameters α and β based on the extracted value; and calculating a predicted chrominance sample value using the obtained linear model parameters α and β. 13. Устройство по п. 12, в котором положение старшего бита разности максимального и минимального значений выборки яркости является логарифмом упомянутой разности по основанию два.13. The apparatus of claim 12, wherein the position of the most significant bit of the difference between the maximum and minimum luminance sample values is the base two logarithm of said difference. 14. Устройство по п. 12 или 13, в котором набор битов содержит четыре бита.14. The apparatus of claim 12 or 13, wherein the bit set contains four bits. 15. Устройство по любому из пп. 12-14, в котором старший бит является первым ненулевым битом.15. The device according to any one of paragraphs. 12-14, in which the most significant bit is the first non-zero bit. 16. Устройство по любому из пп. 12-15, в котором блок вычисления сконфигурирован для: получения параметров α и β линейной модели на основе извлеченного значения и разности максимального и минимального значений восстановленных выборок цветности.16. The device according to any one of paragraphs. 12-15, wherein the calculator is configured to: obtain linear model parameters α and β based on the extracted value and the difference between the maximum and minimum values of the reconstructed chrominance samples. 17. Устройство по п. 16, в котором блок вычисления выполнен с возможностью:17. The device according to claim 16, in which the calculation unit is configured to: получить параметры α и β линейной модели, умножив извлеченное значение на разность максимального и минимального значений восстановленных выборок цветности.obtain the parameters α and β of the linear model by multiplying the extracted value by the difference between the maximum and minimum values of the reconstructed chrominance samples. 18. Устройство по любому из пп. 12-17, причем LUT содержит поддиапазоны значений, и шаг любых двух соседних значений является постоянным в одном поддиапазоне.18. The device according to any one of paragraphs. 12-17, wherein the LUT contains sub-ranges of values, and the step of any two adjacent values is constant in one sub-range. 19. Кодер, содержащий схему обработки для выполнения способа по любому из пп. 1-11.19. An encoder containing a processing circuit for performing the method according to any one of paragraphs. 1-11. 20. Декодер, содержащий схему обработки для выполнения способа по любому из пп. 1-11.20. A decoder containing a processing circuit for performing the method according to any one of paragraphs. 1-11. 21. Машиночитаемый носитель данных, содержащий программный код для выполнения способа по любому из пп. 1-11.21. A computer-readable storage medium containing program code for performing the method according to any one of paragraphs. 1-11. 22. Декодер, содержащий:22. Decoder, containing: один или несколько процессоров; иone or more processors; and энергонезависимый машиночитаемый носитель данных, подсоединенный к процессорам и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-11.a non-volatile computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to perform the method of any one of claims. 1-11. 23. Кодер, содержащий:23. An encoder containing: один или несколько процессоров; иone or more processors; and энергонезависимый машиночитаемый носитель данных, подсоединенный к процессорам и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа по любому из пп. 1-11.a non-volatile computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures the encoder to perform the method of any one of claims. 1-11. 24. Энергонезависимый носитель записи, который включает в себя кодированный с предсказанием битовый поток, декодированный устройством, причем битовый поток сгенерирован согласно любому из пп. 1-11.24. A non-volatile recording medium that includes a predictively encoded bitstream decoded by a device, the bitstream generated according to any one of paragraphs. 1-11.
RU2021122378A 2018-12-31 2019-12-30 Method and device for cross-component linear modeling for internal prediction RU2786086C1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62/786,563 2018-12-31

Publications (1)

Publication Number Publication Date
RU2786086C1 true RU2786086C1 (en) 2022-12-16

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120027316A1 (en) * 2005-10-11 2012-02-02 Nokia Corporation System and method for efficient scalable stream adaptation
US20140086333A1 (en) * 2012-09-24 2014-03-27 Qualcomm Incorporated Bitstream properties in video coding
US20150100612A1 (en) * 2013-10-08 2015-04-09 Samsung Electronics Co., Ltd. Apparatus and method of processing numeric calculation
WO2016108188A1 (en) * 2014-12-31 2016-07-07 Nokia Technologies Oy Inter-layer prediction for scalable video coding and decoding
WO2016113458A1 (en) * 2015-01-12 2016-07-21 Nokia Technologies Oy A method, an apparatus and a computer readable storage medium for video streaming
US20170221183A1 (en) * 2016-02-01 2017-08-03 Texas Instruments Incorporated Adaptive bilateral (bl) filtering for computer vision

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120027316A1 (en) * 2005-10-11 2012-02-02 Nokia Corporation System and method for efficient scalable stream adaptation
US20140086333A1 (en) * 2012-09-24 2014-03-27 Qualcomm Incorporated Bitstream properties in video coding
US20150100612A1 (en) * 2013-10-08 2015-04-09 Samsung Electronics Co., Ltd. Apparatus and method of processing numeric calculation
WO2016108188A1 (en) * 2014-12-31 2016-07-07 Nokia Technologies Oy Inter-layer prediction for scalable video coding and decoding
WO2016113458A1 (en) * 2015-01-12 2016-07-21 Nokia Technologies Oy A method, an apparatus and a computer readable storage medium for video streaming
US20170221183A1 (en) * 2016-02-01 2017-08-03 Texas Instruments Incorporated Adaptive bilateral (bl) filtering for computer vision

Similar Documents

Publication Publication Date Title
AU2019386917B2 (en) Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction
CN113545063A (en) Method and apparatus for intra prediction using linear model
CN113785573A (en) Encoder, decoder and corresponding methods using an adaptive loop filter
CN114902661A (en) Filtering method and device for cross-component linear model prediction
JP2023085337A (en) Method and apparatus of cross-component linear modeling for intra prediction, decoder, encoder, and program
CN113519156A (en) Method and apparatus for intra sub-partition coding mode
CN113170118B (en) Method and apparatus for intra-chroma prediction in video coding
AU2020227859B2 (en) An encoder, a decoder and corresponding methods using intra mode coding for intra prediction
CN113228632B (en) Encoder, decoder, and corresponding methods for local illumination compensation
RU2786086C1 (en) Method and device for cross-component linear modeling for internal prediction
RU2800681C2 (en) Coder, decoder and corresponding methods for intra prediction
RU2817389C2 (en) Encoder, decoder and corresponding methods for obtaining intra-frame colour mode
RU2809192C2 (en) Encoder, decoder and related methods of interframe prediction
RU2783348C1 (en) Encoder, decoder and corresponding methods for obtaining the boundary power of the debloking filter
RU2803063C2 (en) Encoder, decoder and corresponding methods that are used for the conversion process
RU2777967C1 (en) Deblocking filter for the boundaries of subsections that arise under the influence of the intra-subsection coding tool
WO2020182079A1 (en) An encoder, a decoder and corresponding methods using intra mode coding for intra prediction