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 PDFInfo
- 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
Links
- 238000004364 calculation method Methods 0.000 claims description 11
- 239000000126 substance Substances 0.000 abstract 1
- 230000000875 corresponding Effects 0.000 description 38
- 238000004891 communication Methods 0.000 description 29
- 230000015654 memory Effects 0.000 description 28
- 238000000034 method Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 23
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 description 20
- 230000005540 biological transmission Effects 0.000 description 17
- 239000000203 mixture Substances 0.000 description 17
- 230000001131 transforming Effects 0.000 description 13
- 238000001914 filtration Methods 0.000 description 9
- 230000003044 adaptive Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 8
- 241000023320 Luma <angiosperm> Species 0.000 description 7
- 238000000926 separation method Methods 0.000 description 6
- 241001442055 Vipera berus Species 0.000 description 5
- 101700002690 CLIP3 Proteins 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 230000001702 transmitter Effects 0.000 description 4
- 230000000295 complement Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 230000003287 optical Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 210000004915 Pus Anatomy 0.000 description 2
- 239000000969 carrier Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 229920002635 polyurethane Polymers 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- 240000001290 Cordia sebestena Species 0.000 description 1
- 210000002381 Plasma Anatomy 0.000 description 1
- 230000003190 augmentative Effects 0.000 description 1
- 230000002457 bidirectional Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001419 dependent Effects 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static Effects 0.000 description 1
- 230000001360 synchronised Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Abstract
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
Фиг. 1A является схематической блок-схемой, иллюстрирующей примерную систему 10 кодирования, например, систему 10 кодирования видео (или систему 10 короткого кодирования), которая может использовать методики этого настоящей заявки. Видеокодер 20 (или короткий кодер 20) и видеодекодер 30 (или короткий декодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть сконфигурированы для выполнения методик в соответствии с различными примерами, описанными в настоящей заявке.Fig. 1A is a schematic block diagram illustrating an
Как показано на фиг. 1A, система 10 кодирования содержит исходное устройство 12, сконфигурированное для предоставления данных 21 закодированного изображения, например, целевому устройству 14 для декодирования данных 21 кодированного изображения.As shown in FIG. 1A, encoding
Исходное устройство 12 содержит кодер 20 и может дополнительно, т.е. необязательно, содержать источник 16 изображения, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 изображения, и интерфейс связи или блок 22 связи.
Источник 16 изображения может содержать или быть любым типом устройства захвата изображения, например камерой для захвата реального изображения, и/или устройством генерации изображения любого типа, например процессором компьютерной графики для создания изображения компьютерной анимации или любое другим устройством для получения и/или предоставления реального изображения любого типа, изображения, сгенерированного компьютером (например, содержимого экрана, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображения дополненной реальности (AR)). Источником снимка может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых изображений.The
В отличие от препроцессора 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).
Целевое устройство 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
Интерфейс 28 связи целевого устройства 14 сконфигурирован для приема закодированных данных 21 изображения (или любой их дополнительной обработанной версии), например, непосредственно от исходного устройства 12 или из любого другого источника, например, устройства хранения, например, устройства хранения данных закодированного изображения, и предоставления данных 21 закодированного изображения в декодер 30.The
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема данных 21 закодированного изображения или закодированных данных 13 через прямую линию связи между исходным устройством 12 и целевым устройством 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки данных 21 закодированного изображения в соответствующий формат, например, в пакеты, и/или обработки данных закодированного изображения с использованием любого типа кодирования передачи или обработки для передачи по линии связи или сети связи.The
Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, сконфигурирован для приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки передачи и/или распаковки для получения данных 21 закодированного изображения.
И интерфейс 22 связи, и интерфейс 28 связи могут быть сконфигурированы как однонаправленные интерфейсы связи, как показано стрелкой для канала 13 связи на фиг. 1A, указывающей от исходного устройства 12 к целевому устройству 14, или как интерфейсы двунаправленной связи, и могут быть сконфигурированы, например, для отправки и приема сообщений, например, для установки соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например, к передаче данных закодированного изображения.Both
Декодер 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
Устройство 34 отображения целевого устройства 14 выполнено с возможностью приема данных 33 постобработанного изображения для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного изображения, например, интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, микро-светодиодные дисплеи, жидкие кристаллы на кремнии (LCoS), цифровой световой процессор (DLP) или любые другие дисплеи.The
Хотя фиг. 1A изображает исходное устройство 12 и целевое устройство 14 как отдельные устройства, варианты осуществления устройств могут также содержать оба или обе функциональные возможности, исходное устройство 12 или соответствующие функциональные возможности и целевое устройство 14 или соответствующие функциональные возможности. В таких вариантах осуществления исходное устройство 12 или соответствующие функциональные возможности и целевое устройство 14 или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, либо с помощью отдельных аппаратных средств и/или программного обеспечения, либо любой их комбинации.Although FIG. 1A depicts
Как будет очевидно для специалиста на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в исходном устройстве 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
Кодер 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 могут быть устройствами беспроводной связи.
В некоторых случаях система 10 кодирования видео, проиллюстрированная на фиг. 1A, является просто примером, и способы настоящей заявки могут применяться к настройкам кодирования видео (например, кодированию видео или декодированию видео), которые не обязательно включают в себя передачу данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются по сети и т.п. Устройство кодирования видео может кодировать и сохранять данные в памяти, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.In some cases, the
Для удобства описания варианты осуществления изобретения описаны здесь, например, со ссылкой на высокоэффективное кодирование видео (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
Блок 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
Изображения и разделение изображений (изображения и блоки)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
Блок 206 обработки преобразования может быть сконфигурирован для применения целочисленных приближений DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT, такие целочисленные приближения обычно масштабируются с некоторым коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования. Коэффициенты масштабирования обычно выбираются на основе некоторых ограничений, таких как коэффициенты масштабирования, равные степени двойки для операций сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например, блоком 212 обработки обратного преобразования (и соответствующего обратного преобразования, например, блоком 312 обработки обратного преобразования в видеодекодере 30) и соответствующими коэффициентами масштабирования для прямого преобразования, например, блоком 206 обработки преобразования, могут быть заданы в кодере 20 соответственно.Transform processing
Варианты осуществления видеокодера 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
КвантованиеQuantization
Блок 208 квантования может быть сконфигурирован для квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 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
Варианты осуществления видеокодера 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
Обратное квантованиеInverse quantization
Блок 210 обратного квантования сконфигурирован для применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования, применяемой блоком 208 квантования, на основе или с использованием того же шага квантования в качестве блока 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать, хотя обычно не идентичны коэффициентам преобразования из-за потери при квантовании, коэффициентам 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
Восстановление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
Варианты осуществления видеокодера 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
Буфер декодированного изображения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
Выбор режима (разделение и предсказание)Mode selection (separation and prediction)
Блок 260 выбора режима содержит блок 262 разделения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и сконфигурирован для приема или получения данных исходного изображения, например исходного блока 203 (текущий блок 203 текущего изображения 17), и данные восстановленного изображения, например отфильтрованные и/или нефильтрованные восстановленные выборки или блоки одного и того же (текущего) изображения и/или из одного или множества ранее декодированных изображений, например, из буфера 230 декодированных изображений или других буферов (например, строкового буфера, не показаны). Данные восстановленного изображения используются в качестве данных опорного изображения для предсказания, например, внешнего предсказания или внутреннего предсказания, чтобы получить блок 265 предсказания или предсказатель 265.The
Модуль 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (в том числе отсутствие разделения) и режима предсказания (например, режима внутреннего или внешнего предсказания) и генерации соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления модуля 260 выбора режима могут быть сконфигурированы для выбора разделения и режима предсказания (например, из тех, которые поддерживаются или доступны для модуля 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или уравновешивает оба. Блок 260 выбора режима может быть сконфигурирован для определения режима разделения и предсказания на основе оптимизации искажения скорости (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как «лучший», «минимальный», «оптимальный» и т. д. в этом контексте не обязательно относятся к общему «лучшему», «минимальному», «оптимальному» и т. д., но также могут относиться к выполнению прекращения или критерию выбора, такому как значение, превышающее или падающее ниже порогового значения, или другим ограничениям, потенциально ведущим к «суб-оптимальному выбору», но уменьшающие сложность и время обработки.Embodiments of
Другими словами, блок 262 разделения может быть сконфигурирован для разделения блока 203 на более мелкие разделы или подблоки (которые снова образуют блоки), например, итеративно с использованием четырехугольного разделения (QT), двоичного разделения (BT) или разделения на тройное дерево (TT) или любой их комбинации, и для выполнения, например, предсказания для каждого из разделов или подблоков блока, при этом выбор режима содержит выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разделов или подблоков блока.In other words,
Далее более подробно поясняется разделение (например, посредством модуля 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
РазделениеSeparation
Блок 262 разделения может разделять (или разбивать) текущий блок 203 на меньшие части, например, меньшие блоки квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут называться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например, на уровне 0 корневого дерева (уровень 0 иерархии, глубина 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например, узлы на уровне 1 дерева (уровень 1 иерархии, глубина 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровень 2 дерева (уровень 2 иерархии, глубина 2) и т. д. до тех пор, пока разделение не будет завершено, например, потому что критерий завершения выполнен, например, достигнута максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется тройным деревом (TT), а дерево, использующее разделение на четыре раздела, называется деревом квадратов (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,
Как описано выше, видеокодер 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
Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутреннего предсказания (или, в общем, информации, указывающей выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме элементов 266 синтаксиса для включения в данные 21 закодированного изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Внешнее предсказание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 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 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.
Другие структурные вариации видеокодера 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
Декодер и способ декодирования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
В примере на фиг. 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
Как пояснялось в отношении кодера 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
Энтропийное декодированиеEntropy decoding
Модуль 304 энтропийного декодирования выполнен с возможностью синтаксического анализа потока 21 битов или, в общем, данных 21 закодированного изображения) и выполнения, например, энтропийного декодирования для данных 21 закодированного изображения, чтобы получить, например, квантованные коэффициенты 309 и/или декодированные параметры кодирования (не показаны на Фиг.3), например, любые или все из параметров внешнего предсказания (например, индекс опорного изображения и вектор движения), параметр внешнего предсказания (например, индекс или режим внутреннего предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие элементы синтаксиса. Модуль 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении модуля 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно сконфигурирован для предоставления параметров внешнего предсказания, параметра внутреннего предсказания и/или других элементов синтаксиса в блок 360 выбора режима и других параметров в другие блоки декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне слайса видео и/или уровне видеоблока.The
Обратное квантованиеInverse quantization
Блок 310 обратного квантования может быть сконфигурирован для приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, путем анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применять на основе параметров квантования обратное квантование к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в слайсе видео, для определения степени квантования и, аналогично, степени обратного квантования, которое должно применяться.An
Обратное преобразованиеReverse transformation
Блок 312 обработки обратного преобразования может быть сконфигурирован для приема деквантованных коэффициентов 311, также называемых коэффициентами 311 преобразования, и для применения преобразования к деквантованным коэффициентам 311, чтобы получить восстановленные остаточные блоки 213 в области выборки. Восстановленные остаточные блоки 213 также могут упоминаться как блоки 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно сконфигурирован для приема параметров преобразования или соответствующей информации из данных 21 закодированного изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое должно применяться к деквантованным коэффициентам. 311.The
Восстановление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
Буфер декодированного изображенияDecoded image buffer
Декодированные видеоблоки 321 изображения затем сохраняются в буфере 330 декодированных изображений, который сохраняет декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или для вывода, соответственно, отображения.The decoded video blocks 321 of the picture are then stored in the decoded
Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312 для представления или просмотра пользователю.The decoder 30 is configured to output the decoded image 311, for example, via
ПредсказаниеPrediction
Блок 344 внешнего предсказания может быть идентичен блоку 244 внешнего предсказания (в частности, блоку компенсации движения), а блок 354 внутреннего предсказания может быть идентичен блоку 254 внешнего предсказания по функциям и выполняет решения о разбиении или разделении и предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принятой из данных 21 закодированного изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 выбора режима может быть сконфигурирован для выполнения предсказания (внутреннего или внешнего предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 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
Блок 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
Следует понимать, что в кодере 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; Clip3 (x, y, z) = x; z<xy;
(otherwise - иначе)(otherwise - otherwise)
Фиг. 4 является схематической диаграммой устройства 400 кодирования видео согласно варианту осуществления раскрытия. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, как описано в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 по фиг. 1A или кодером, таким как видеокодер 20 по фиг. 1А.Fig. 4 is a schematic diagram of a
Устройство 400 кодирования видео содержит входные порты 410 (или входные порты 410) и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (ЦП) 430 для обработки данных; блоки передатчика (Tx) 440 и выходные порты 450 (или выходные порты 450) для передачи данных; и память 460 для хранения данных. Устройство 400 кодирования видео может также содержать оптико-электрические (OE) компоненты и электрические-оптические (EO) компоненты, подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для выхода или входа оптических или электрических сигналов.The
Процессор 430 реализован аппаратно и программно. Процессор 430 может быть реализован как одна или несколько микросхем ЦП, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит блок 470 кодирования. Блок 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, блок 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Таким образом, включение в состав блока 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 кодирования видео и обеспечивает преобразование устройства 400 кодирования видео в другое состояние. В качестве альтернативы блок 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.The
Память 460 может содержать один или несколько дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве запоминающего устройства для переполнения данных, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянным запоминающим устройством (ROM), оперативным запоминающим устройством (RAM), троичной памятью с адресацией по содержимому (TCAM) и/или статической памятью произвольного доступа (SRAM).
Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться в качестве одного или обоих из исходного устройства 12 и целевого устройства 14 на фиг. 1A согласно примерному варианту осуществления. Fig. 5 is a simplified block diagram of a
Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, существующую в настоящее время или разработанную в будущем. Хотя раскрытые реализации могут быть реализованы с одним процессором, как показано, например процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более чем одного процессора.
Память 504 в устройстве 500 может быть постоянным запоминающим устройством (ROM) или устройством оперативной памяти (RAM) в некоторой реализации. В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым обращается процессор 502, используя шину 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные здесь способы.
Устройство 500 также может включать в себя одно или несколько устройств вывода, таких как дисплей 518. Дисплей 518 может быть, в одном примере, дисплеем, чувствительным к касанию, который объединяет дисплей с элементом, чувствительным к касанию, способным считывать вводы касанием. Дисплей 518 может быть подключен к процессору 502 через шину 512.The
Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из нескольких шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один интегрированный блок, такой как карта памяти, или несколько блоков, например, несколько карт памяти. Таким образом, устройство 500 может быть реализовано в широком разнообразии конфигураций.Although shown here as a single bus,
Внутреннее предсказание выборок цветности может быть выполнено с использованием выборок восстановленного блока яркости.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):
, ,
где C и L указывают значения цветности и яркости соответственно. Параметры и определяются способом наименьших квадратов следующим образом:where C and L indicate the chrominance and lightness values, respectively. Parameters and are defined by the least squares method as follows:
, ,
где M (A) представляет собой среднее значение A, а R (A, B) определяется следующим образом:where M(A) is the mean of A and R(A, B) is defined as follows:
. .
Если кодированное или декодированное изображение имеет формат, который задает различное количество выборок для компонентов яркости и цветности (например, формат 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:
, ,
, ,
где 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:
где и - положения максимального и минимального значений в выборках яркости.where and - 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:
где параметр сдвига, задающий точность.where a shift parameter that specifies the precision.
В таблице 1 показано сопоставление диапазона индексов LUT (указанного в первой строке таблицы) со списками значений, хранящимися в LUT, причем каждый список соответствует диапазону его индексов. Можно заметить, что значения можно рассчитать следующим образом: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 can be calculated as follows:
. .
Используя LUT, определенный в таблице 1 (или рассчитанный эквивалентным образом с использованием приведенного выше уравнения), вычисление выполняется следующим образом:Using the LUT defined in Table 1 (or calculated equivalently using the equation above), the calculation is done as follows:
Параметр сдвига можно разложить на несколько частей, т. е. , потому что значение α используется в дополнительном вычислении. Это разложение обеспечивает гибкость точности вычислений на различных этапах, и, таким образом, можно перераспределять битовую глубину операций умножения по шагам получения значения предсказанной выборки цветности. В конкретной реализации:Shift parameter can be decomposed into several parts, i.e. , 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:
. .
Таблица 1. Примерная таблица LUT для реализации операции деления с использованием умножения на числоTable 1. An example LUT for implementing a division operation using multiplication by a number
В этом случае коэффициент линейной модели имеет целочисленное представление с фиксированной точкой дробного значения, точность определяется значением S1=S-S0, которое используется для получения значения предсказанной выборки цветности:In this case, the coefficient linear model has an integer representation with a fixed point of a fractional value, precision is defined by the value S1=S-S0, which is used to obtain the value of the predicted chrominance sample:
Размер 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.
После регулярной субдискретизации (подвыборке) с коэффициентом субдискретизации степени двойки, равным , извлечение из LUT определяется по-другому:After regular subsampling (subsampling) with a power-of-two subsampling factor equal to , extraction from the LUT is defined differently:
вместоinstead of
Можно заметить, что для естественных изображений вероятность будет иметь небольшое значение, больше, чем вероятность того, что эта разница будет большой. Другими словами, вероятность появления значения из таблицы 1 уменьшается от левого столбца к правому столбцу, а внутри каждого столбца эта вероятность уменьшается от первого до последнего элемента, принадлежащего этому столбцу. Примерная зависимость вероятности возникновения от значения приведена на рисунке 8.It can be seen that for natural images the probability 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 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 соответствовали различным шагам , и значение этого шага увеличивается с индексом записи.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 , and the value of this step increases with the index of the entry.
Одним из эффективных с вычислительной точки зрения решений является определение индекса в LUT с использованием нескольких наиболее значимых битов . Положение старшего бита определяет точность (т. е. шаг между двумя соседними записями LUT) на основе положения старших битов. Большие значения положения старшего бита соответствуют меньшей точности и большему значению шага.One computationally efficient solution is to determine the index in the LUT using the few most significant bits . MSB position 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, соответствующий входному значению .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 .
Используя шаги, показанные на рисунке 9, можно получить значения, которые будут сохранены в LUT для их дальнейшего использования при моделировании CCLM. На рис. 9 переменная ctr перебирает все возможные значения . Можно заметить, что на самом деле 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 . 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
На этапе 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
Примерная 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
На фиг. 10A двоичное представление 1001 входного значения (например, разность обрабатывается для определения положения соответствующей записи в LUT, показанной в таблице 2. Старший ненулевой бит входного значения помечается как 1002. Положение этого бита определяет значение «msb». Фактически, значение msb - это log2 () входного значения 1001. Вычитание 1 из «msb» дает значение «lut_shift», которое выбирает строку в таблице 2. В противном случае шаг рассчитывается как «1<<lut_shift».In FIG. 10A is a
Выбор столбца выполняется путем взятия битов «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 устанавливается равным значению, хранящемуся в «high_bits», уменьшенному на 1.col is set to the value stored in "high_bits"
Для случая, когда шаг выравнивания «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
При выведении значения «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
В практических реализациях 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:
. .
Обе 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:
где . Значение δ устанавливается равным 3, 2, 1, 1, соответственно, для значений «idx», меньших или равных 4. Справочная таблица для этого варианта приведена в таблице 4.where . 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.
Можно заметить, что последние строки таблицы 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
На этапе 1104 устройство кодирования видео определяет положения максимального и минимального значений восстановленной выборки в восстановленных выборках яркости. Например, восстановленные выборки яркости являются соседними восстановленными выборками яркости, соответствующими выбрке цветности.In
На этапе 1106 устройство кодирования видео получает значение разности максимума и минимума восстановленных выборок яркости.In
На этапе 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
блок 1210 получения, сконфигурированный для получения восстановленных выборок яркости;an
блок 1220 определения, сконфигурированный для определения максимальных и минимальных значений выборок яркости на основе восстановленных выборок яркости;a determiner 1220, configured to determine maximum and minimum luminance sample values based on the reconstructed luminance samples;
блок 1210 получения, дополнительно сконфигурированный для получения разности максимального и минимального значений выборок яркости.an
блок 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
Блок вычисления может получить параметры α и β линейной модели на основе выбранного значения и разности максимального и минимального значений восстановленных выборок цветности. Например, блок вычисления получает параметры α и β линейной модели путем умножения извлеченного значения на разность максимального и минимального значений восстановленных выборок цветности.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
Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на фигурах), и сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, помимо прочего, камеру, смартфон или планшет, компьютер или портативный компьютер, систему видеоконференцсвязи, PDA, установленное на транспортном средстве устройство или комбинацию любого из них или тому подобное. Например, устройство 3102 захвата может включать в себя исходное устройство 12, как описано выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя аудио (то есть голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования аудио. Для некоторых практических сценариев устройство 3102 захвата распределяет закодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата отдельно распределяет кодированные аудиоданные и кодированные видеоданные на терминальное устройство 3106.The
В системе 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
Для терминального устройства с дисплеем, например, смартфона или планшета 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
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления.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
После того, как блок 3202 обработки протокола обработает поток, генерируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.After the
Посредством обработки демультиплексирования генерируются элементарный видеопоток (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
Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может закодироваться в синтаксисе с использованием меток времени, касающихся представления кодированных аудио- и визуальных данных, и меток времени, касающихся доставки самого потока данных.The
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и аудиокадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.If subtitles are included in the stream, the
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования изображения, либо устройство декодирования изображения в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.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
Варианты осуществления, например, кодера 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)
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)
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)
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 |