RU2816202C2 - Method and apparatus for affine external prediction of chroma subunits - Google Patents
Method and apparatus for affine external prediction of chroma subunits Download PDFInfo
- Publication number
- RU2816202C2 RU2816202C2 RU2021127615A RU2021127615A RU2816202C2 RU 2816202 C2 RU2816202 C2 RU 2816202C2 RU 2021127615 A RU2021127615 A RU 2021127615A RU 2021127615 A RU2021127615 A RU 2021127615A RU 2816202 C2 RU2816202 C2 RU 2816202C2
- Authority
- RU
- Russia
- Prior art keywords
- subblock
- mvavglx
- luminance
- block
- subheightc
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 237
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 title claims description 51
- 230000033001 locomotion Effects 0.000 claims abstract description 447
- 239000013598 vector Substances 0.000 claims abstract description 392
- 241000023320 Luma <angiosperm> Species 0.000 claims abstract description 159
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims abstract description 159
- 238000012935 Averaging Methods 0.000 claims description 103
- 238000012545 processing Methods 0.000 claims description 65
- 238000013507 mapping Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 238000013139 quantization Methods 0.000 description 79
- 230000008569 process Effects 0.000 description 64
- 230000006854 communication Effects 0.000 description 35
- 238000004891 communication Methods 0.000 description 35
- 230000006870 function Effects 0.000 description 26
- 238000003491 array Methods 0.000 description 21
- 239000000872 buffer Substances 0.000 description 20
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 19
- 238000010586 diagram Methods 0.000 description 19
- 230000005540 biological transmission Effects 0.000 description 17
- 238000000638 solvent extraction Methods 0.000 description 15
- 238000005070 sampling Methods 0.000 description 14
- 230000006835 compression Effects 0.000 description 12
- 238000007906 compression Methods 0.000 description 12
- 238000005192 partition Methods 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 9
- 238000001914 filtration Methods 0.000 description 9
- 230000000295 complement effect Effects 0.000 description 8
- 230000006872 improvement Effects 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000002441 reversible effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 4
- 238000009795 derivation Methods 0.000 description 4
- 241000723655 Cowpea mosaic virus Species 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101150114515 CTBS gene Proteins 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
Images
Abstract
Description
ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИCROSS REFERENCE TO RELATED APPLICATIONS
Данная патентная заявка испрашивает приоритет предварительной патентной заявки США № 62/809,551, поданной 22 февраля 2019 г., приоритет предварительной патентной заявки США № 62/823653, поданной 25 марта 2019 г. и приоритет предварительной патентной заявки США № 62/824,302, поданной 26 марта 2019 г. Раскрытие вышеупомянутых патентных заявок полностью включено сюда посредством ссылки.This patent application claims priority to U.S. Provisional Patent Application No. 62/809,551, filed February 22, 2019, priority to U.S. Provisional Patent Application No. 62/823,653, filed March 25, 2019, and priority to U.S. Provisional Patent Application No. 62/824,302, filed 26 March 2019 The disclosure of the above patent applications is incorporated herein by reference in its entirety.
Область техникиField of technology
Варианты осуществления настоящего раскрытия в основном относятся к области обработки картинок и, более конкретно, к аффинному внешнему предсказанию (аффинной компенсации движения), в частности, к способу и аппаратуре для вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности, и способу и аппаратуре для аффинного внешнего предсказания субблоков цветности.Embodiments of the present disclosure generally relate to the field of image processing and, more particularly, to affine inter-prediction (affine motion compensation), in particular, to a method and apparatus for inferring a motion vector for affine inter-prediction of chroma sub-blocks based on a chroma format, and a method and hardware for affine external prediction of chrominance subblocks.
Уровень техникиState of the art
Кодирование видео (кодирование и/или декодирование видео) используется в широком спектре приложений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Диски Blu-ray, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.Video encoding (video encoding and/or decoding) is used in a wide range of digital video applications, such as digital broadcast television, video transmission over the Internet and mobile networks, and real-time conversational applications such as video chat, video conferencing, DVDs, and Blu Discs. -ray, systems for collecting and editing video content and video cameras for security applications.
Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть существенным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для видеокодированияданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеокартинок. Сжатые данные затем принимаются в месте назначения устройством декомпрессии видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные методики сжатия и декомпрессии с более высокой степенью сжатия и практически без потери качества картинки.The amount of video data required to present even a relatively short video can be significant, which can lead to difficulties when the data must be streamed or otherwise transmitted over a communications network with limited bandwidth. Thus, video data is typically compressed before being transmitted over modern telecommunications networks. Video size can also be an issue when the video is stored on a storage device, as memory resources may be limited. Video compression devices often use software and/or hardware at the source to encode video data before transmission or storage, thereby reducing the amount of data required to represent digital video images. The compressed data is then received at its destination by a video decompression device, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques with higher compression ratios and virtually no loss of picture quality are desired.
В частности, текущий кодер универсальной модели видеокодирования и тестирования (VTM) в основном поддерживает формат цветности 4:2:0 в качестве входного формата картинки. Сбой кодера VTM может произойти, когда входной формат цветности становится 4:4:4. Чтобы избежать такой проблемы, очень желателен и даже обязателен кодер, поддерживающий другие форматы цветности (например, 4:4:4 или 4:2:2) для самых разных приложений.In particular, the current Universal Video Test Model (VTM) encoder mainly supports 4:2:0 chroma format as an input picture format. A VTM encoder crash may occur when the input chroma format becomes 4:4:4. To avoid this problem, an encoder that supports other color formats (such as 4:4:4 or 4:2:2) for a wide variety of applications is highly desirable and even required.
Сущность изобретенияThe essence of the invention
Ввиду вышеупомянутых проблем в настоящем раскрытии предлагается модификация процесса видеокодирования для поддержки множества форматов цветности. В частности, варианты осуществления настоящего приложения нацелены на предоставление устройства, кодера, декодера и соответствующих способов для вывода вектора движения для аффинного взаимного предсказания субблоков цветности на основе формата цветности, который может быть одним из множества поддерживаемых форматов цветности, чтобы улучшить производительность кодирования.In view of the above problems, the present disclosure proposes a modification of the video encoding process to support multiple color formats. In particular, embodiments of the present application are aimed at providing an apparatus, encoder, decoder, and corresponding methods for inferring a motion vector for affine inter-prediction of chroma subblocks based on a chroma format, which may be one of a variety of supported chroma formats, to improve encoding performance.
Варианты осуществления изобретения определяются признаками независимых пунктов формулы изобретения, а дополнительные преимущественные реализации вариантов осуществления - признаками зависимых пунктов формулы изобретения.The embodiments of the invention are determined by the features of the independent claims, and additional advantageous implementations of the embodiments are determined by the features of the dependent claims.
Конкретные варианты осуществления изложены в прилагаемых независимых пунктах формулы изобретения, а другие варианты осуществления - в зависимых пунктах формулы изобретения.Specific embodiments are set forth in the accompanying independent claims, and other embodiments are set forth in the dependent claims.
Вышеупомянутые и другие цели достигаются изобретением по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.The above and other goals are achieved by the invention according to independent claims. Additional forms of implementation are obvious from the dependent claims, description and figures.
Согласно первому аспекту настоящего раскрытия, предоставляется способ вывода вектора движения цветности, используемый в аффинном внешнем предсказании блока текущей картинки, содержащего блок яркости и совместно расположенный блок цветности, причем способ содержитAccording to a first aspect of the present disclosure, there is provided a chroma motion vector inference method used in affine inter prediction of a block of a current picture containing a luminance block and a co-located chrominance block, the method comprising
определение коэффициентов масштабирования цветности (то есть значения коэффициентов масштабирования цветности) в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит текущий блок изображения;determining chroma scaling factors (that is, chroma scaling factor values) in the horizontal and vertical directions based on the chromaticity format information, wherein the chrominance format information indicates the chrominance format of the current picture to which the current image block belongs;
определение набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; и определение вектора движения для субблока цветности для блока цветности на основе векторов движения одного или более субблоков яркости (например, одного или двух субблоков яркости) в наборе (S) субблоков яркости.determining a set (S) of luminance subblocks of the luminance block based on the values of the chroma scaling factors; and determining a motion vector for the chrominance subblock for the chrominance block based on the motion vectors of one or more luma subblocks (eg, one or two luma subblocks) in the set (S) of luma subblocks.
В представленном раскрытии, поскольку блок или субблок (яркости или цветности) может быть представлен его местоположением, позицией или индексом, выбор/определение блока или субблока подразумевает, что позиция, местоположение или индекс блока или субблока выбран или определен.In the present disclosure, since a block or subblock (luminance or chroma) can be represented by its location, position or index, selecting/determining the block or subblock implies that the position, location or index of the block or subblock is selected or determined.
Следует отметить, что термин «блок», «блок кодирования» или «блок изображения», используемый в настоящем раскрытии сущности, может представлять единицы преобразования (TU), единицу предсказания (PU), единицу кодирования (CU) и т. д. В универсальном кодировании видео (VVC) единицы преобразования и единицы кодирования обычно выровнены друг с другом, за исключением случаев, когда используется мозаика TU или преобразование субблоков (SBT). По существу, термины «блок», «блок изображения», «блок кодирования» и «блок преобразования» могут использоваться взаимозаменяемо в настоящем раскрытии; и термины «размер блока» и «размер блока преобразования» могут использоваться взаимозаменяемо в настоящем раскрытии сущности. Термины «выборка» и «пиксель» также могут использоваться взаимозаменяемо в настоящем раскрытии.It should be noted that the term "block", "coding block" or "image block" as used in the present disclosure may represent a transformation unit (TU), a prediction unit (PU), a coding unit (CU), etc. In Universal Video Coding (VVC), transform units and encoding units are usually aligned with each other, except when TU tiling or subblock transform (SBT) is used. As such, the terms "block", "image block", "encoding block" and "transform block" may be used interchangeably in the present disclosure; and the terms "block size" and "transform block size" may be used interchangeably in the present disclosure. The terms "sample" and "pixel" may also be used interchangeably in the present disclosure.
Настоящее раскрытие направлено на способ учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов движения яркости выполняется линейная подвыборка поля движения яркости. Когда цветовые плоскости цветности имеют ту же высоту, что и плоскость яркости, более целесообразно выбирать векторы движения из блоков яркости, которые смежны по горизонтали, чтобы они имели одинаковую вертикальную позицию. Выбор векторов движения яркости в зависимости от формата цветности картинки приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие блоки яркости при усреднении векторов движения яркости для генерации вектора движения цветности. Как следствие более точной интерполяции поля движения, ошибка предсказания уменьшается, что приводит к техническому результату повышения производительности сжатия, таким образом, улучшается производительность кодировки. The present disclosure is directed to a method for taking into account the chrominance format of a picture when deriving chroma motion vectors from luminance motion vectors. By averaging the luminance motion vectors, a linear subsampling of the luminance motion field is performed. When chroma color planes have the same height as the lumina plane, it makes more sense to select motion vectors from lumina blocks that are horizontally adjacent so that they have the same vertical position. Selecting luminance motion vectors depending on the chroma format of the picture results in a more accurate chroma motion field due to more accurate subsampling of the luminance motion vector field. This dependence on the chroma format allows the selection of the most appropriate luminance blocks when averaging the luminance motion vectors to generate a chroma motion vector. As a consequence of more accurate interpolation of the motion field, the prediction error is reduced, which has the technical effect of increasing compression performance, thus improving encoding performance.
В возможной форме реализации способа согласно первому аспекту набор (S) субблоков яркости определяется на основе значений коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях. То есть один или несколько субблоков яркости (например, один или два субблока яркости) определяются на основе значений коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях.In a possible implementation of the method according to the first aspect, a set (S) of luma subblocks is determined based on the values of the chroma scaling factors in the horizontal and vertical directions. That is, one or more luma subblocks (eg, one or two luma subblocks) are determined based on the values of the chroma scaling factors in the horizontal and vertical directions.
В возможной форме реализации способа согласно первому аспекту коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях представлены переменными SubWidthC и SubHeightC.In a possible implementation of the method according to the first aspect, the chromaticity scaling factors in the horizontal and vertical directions are represented by the variables SubWidthC and SubHeightC.
В возможной форме реализации способа согласно первому аспекту позиция каждого из субблоков яркости представлена индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении, и позиция каждого из субблоков цветности представлена индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.In a possible embodiment of the method according to the first aspect, the position of each of the luma subblocks is represented by a subblock index in the horizontal direction and a subblock index in the vertical direction, and the position of each of the chroma subblocks is represented by a subblock index in the horizontal direction and a subblock index in the vertical direction.
В возможной форме реализации способа согласно первому аспекту позиции каждого из одного или нескольких субблоков яркости (например, одного или двух субблоков яркости) в наборе (S) представлены индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.In an exemplary embodiment of the method according to the first aspect, the positions of each of one or more luminance subblocks (eg, one or two luminance subblocks) in the set (S) are represented by a subblock index in the horizontal direction and a subblock index in the vertical direction.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, если обе переменные SubWidthC и SubHeightC равны 1, набор субблоков (S) яркости содержит:In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, if the variables SubWidthC and SubHeightC are both equal to 1, the set of luminance subblocks (S) contains:
субблок яркости, индексированный S0 = (xSbIdx, ySbIdx);luma subblock indexed S0 = (xSbIdx, ySbIdx);
если по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит:if at least one of SubWidthC and SubHeightC is not equal to 1, the luma subblock set (S) contains:
первый субблок яркости, индексированный как S0 = ((xSbIdx >> (SubWidthC- 1) << (SubWidthC - 1)), (ySbIdx >> (SubHeightC - ) << (SubHeightC - 1))), иthe first luma subblock indexed as S0 = ((xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)), (ySbIdx >> (SubHeightC - ) << (SubHeightC - 1))), and
второй субблок яркости, индексированный как S1 = ((xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)),second luma subblock indexed as S1 = ((xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) +(SubHeightC - 1)),
где SubWidthC и SubHeightC представляют соответственно коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях;where SubWidthC and SubHeightC represent the chromaticity scaling factors in the horizontal and vertical directions, respectively;
xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении для субблока яркости в наборе (S), соответственно; “<< ” представляет арифметический сдвиг влево, и “>>” представляет арифметический сдвиг вправо; и xSbIdx=0..numSbX - 1 и ySbIdx=0..numSbY - 1, и numSbX указывает количество субблоков яркости в блоке яркости вдоль горизонтального направления, а numSbY указывает количество субблоков яркости в блоке яркости вдоль вертикального направления.xSbIdx and ySbIdx represent the sub-block index in the horizontal direction and the sub-block index in the vertical direction for the luma sub-block in the set (S), respectively; “<<” represents an arithmetic left shift, and “>>” represents an arithmetic right shift; and xSbIdx=0..numSbX - 1 and ySbIdx=0..numSbY - 1, and numSbX indicates the number of luminance sub-blocks in a luminance block along the horizontal direction, and numSbY indicates the number of luminance sub-blocks in a luminance block along the vertical direction.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, количества субблоков цветности в горизонтальном и вертикальном направлениях такие же, как количества субблоков яркости в горизонтальном и вертикальном направлениях, соответственно. In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the numbers of chroma subblocks in the horizontal and vertical directions are the same as the numbers of luminance subblocks in the horizontal and vertical directions, respectively.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором, если и SubWidthC, и SubHeightC равны 1, набор субблоков (S) яркости содержит:In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, in which, if both SubWidthC and SubHeightC are 1, the set of luminance subblocks (S) comprises:
субблок яркости, индексированный S0 = (xCSbIdx, yCSbIdx);luminance subblock indexed S 0 = (xCSbIdx, yCSbIdx);
если по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит:if at least one of SubWidthC and SubHeightC is not equal to 1, the luma subblock set (S) contains:
первый субблок яркости, индексированный как S0 = ((xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))), иthe first luma subblock indexed as S0 = ((xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))), and
второй субблок яркости, индексированный как S1 = (xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)),second luma subblock indexed as S1 = (xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+ (SubHeightC - 1)),
при этом переменные SubWidthC и SubHeightC представляют соответственно коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях; xCSbIdx и yCSbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении, соответственно, для субблока яркости в наборе (S); и xCSbIdx=0..numCSbX - 1 и yCSbIdx=0..numCSbY - 1, и numCSbX указывает количество субблоков цветности в блоке цветности вдоль горизонтального направления, и numCSbY указывает количество субблоков цветности в блоке цветности вдоль вертикального направления.wherein the variables SubWidthC and SubHeightC represent, respectively, chromaticity scaling factors in the horizontal and vertical directions; xCSbIdx and yCSbIdx represent the sub-block index in the horizontal direction and the sub-block index in the vertical direction, respectively, for the luma sub-block in the set (S); and xCSbIdx=0..numCSbX - 1 and yCSbIdx=0..numCSbY - 1, and numCSbX indicates the number of chroma subblocks in a chroma block along the horizontal direction, and numCSbY indicates the number of chroma subblocks in a chroma block along the vertical direction.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором размер каждого из субблоков цветности является таким же, как размер каждого из субблоков яркости. Допускается, что, когда количество субблоков цветности определено равным количеству субблоков яркости, и когда размер цветовой плоскости цветности равен размеру плоскости яркости (например, формат цветности входной картинки 4: 4: 4), векторы движения смежных субблоков цветности могут принимать одинаковое значение. При реализации этого этапа обработки можно выполнить оптимизацию, пропустив этап вычисления повторяющихся значений.In a possible embodiment of the method according to any previous implementation of the first aspect or the first aspect itself, wherein the size of each of the chrominance subblocks is the same as the size of each of the luminance subblocks. It is conceivable that when the number of chrominance subblocks is defined to be equal to the number of luminance subblocks, and when the size of the chrominance color plane is equal to the size of the luminance plane (for example, the chrominance format of the input picture is 4:4:4), the motion vectors of adjacent chrominance subblocks can take on the same value. When implementing this processing step, you can perform optimization by skipping the step of calculating duplicate values.
Предлагаемое изобретение раскрывает способ определения размера субблока цветности, равного размеру субблока яркости. В этом случае реализация может быть упрощена за счет унификации обработки яркости и цветности, и, естественно, можно избежать избыточных вычислений векторов движения.The present invention discloses a method for determining the size of a chrominance subblock equal to the size of a luminance subblock. In this case, the implementation can be simplified by unifying the processing of luma and chrominance, and, of course, redundant calculations of motion vectors can be avoided.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в случае, когда размер каждого из субблоков цветности такой же, как размер каждого из субблоков яркости, количество субблоков цветности в горизонтальном направлении зависит от количества субблоков яркости в горизонтальном направлении и значения коэффициента масштабирования цветности в горизонтальном направлении;In a possible embodiment of the method according to any previous implementation of the first aspect or the first aspect itself, in the case where the size of each of the chrominance subblocks is the same as the size of each of the luminance subblocks, the number of chroma subblocks in the horizontal direction depends on the number of luminance subblocks in the horizontal direction and the values of the chroma scaling factor in the horizontal direction;
количество субблоков цветности в вертикальном направлении зависит от количества субблоков яркости в вертикальном направлении и значения коэффициента масштабирования цветности в вертикальном направлении.the number of chrominance subblocks in the vertical direction depends on the number of luminance subblocks in the vertical direction and the value of the chrominance scaling factor in the vertical direction.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, xCSbIdx получается на основе xSbIdx и значения шага SubWidth; и yCSbIdx получается на основе ySbIdx и значения шага SubHeightC.In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, xCSbIdx is obtained based on xSbIdx and the SubWidth step value; and yCSbIdx is obtained based on ySbIdx and the step value of SubHeightC.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового,In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such,
numCSbX = numSbX>>(SubWidthC-1)numCSbX = numSbX>>(SubWidthC-1)
numCSbY = numSbY>>(SubHeightC - 1);numCSbY = numSbY>>(SubHeightC - 1);
numCSbX и numCSbY представляют количество субблоков цветности в горизонтальном и вертикальном направлениях соответственно; иnumCSbX and numCSbY represent the number of chrominance subblocks in the horizontal and vertical directions, respectively; And
numSbX и numSbY представляют количество субблоков яркости в блоке яркости в горизонтальном и вертикальном направлениях соответственно.numSbX and numSbY represent the number of luminance subblocks in a luminance block in the horizontal and vertical directions, respectively.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового для блока цветности набор субблоков (S) яркости содержит один или несколько субблоков, индексированных:In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect as such for a chroma block, the set of luminance subblocks (S) comprises one or more subblocks indexed by:
S0 = (xSbIdxL, ySbIdxL)S 0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))
S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)S 2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)
S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
при этом позиция или индекс S0 блока яркости представлена индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;in this case the position or index S0 of the block brightness is represented by the subblock index xSbIdxL in the horizontal direction and the subblock index ySbIdxL in the vertical direction;
для позиции блока цветности (например, [xSbIdxL] [ySbIdxL] в mvCLX [xSbIdxL] [ySbIdxL],for the chrominance block position (for example, [xSbIdxL] [ySbIdxL] in mvCLX [xSbIdxL] [ySbIdxL],
позиция блока яркости или индекс S1 представлен индексом субблока в горизонтальном направлении, xSbIdxL, и индексом субблока в вертикальном направлении, ySbIdxL + (SubHeightC-1);The luminance block position or index S1 is represented by a subblock index in the horizontal direction, xSbIdxL, and a subblock index in the vertical direction, ySbIdxL + (SubHeightC-1);
позиция блока яркости или индекс S2 представлен индексом субблока в горизонтальном направлении, xSbIdxL + (SubWidthC-1), и индексом субблока в вертикальном направлении, ySbIdxL;The luminance block position or index S2 is represented by a subblock index in the horizontal direction, xSbIdxL + (SubWidthC-1), and a subblock index in the vertical direction, ySbIdxL;
позиция блока яркости или индекс S3 представлен индексом субблока в горизонтальном направлении, xSbIdxL + (SubWidthC-1), и индексом субблока в вертикальном направлении, ySbIdxL + (SubHeightC-1).The luminance block position or index S3 is represented by a subblock index in the horizontal direction, xSbIdxL + (SubWidthC-1), and a subblock index in the vertical direction, ySbIdxL + (SubHeightC-1).
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором набор субблоков (S) яркости содержит два субблока яркости, индексированных:In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such, wherein the set of luminance subblocks (S) comprises two luminance subblocks indexed by:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1)), S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1)),
при этом позиция или индекс S0 блока яркости представлены индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;wherein the position or index S0 of the luminance block is represented by a subblock index xSbIdxL in the horizontal direction and a subblock index ySbIdxL in the vertical direction;
позиция блока яркости или индекс S1 представлен индексом субблока в горизонтальном направлении, xSbIdxL + (SubWidthC-1), и индексом субблока в вертикальном направлении, ySbIdxL + (SubHeightC-1).The luminance block position or index S1 is represented by a subblock index in the horizontal direction, xSbIdxL + (SubWidthC-1), and a subblock index in the vertical direction, ySbIdxL + (SubHeightC-1).
В возможной форме реализации способа согласно любой предшествующей реализации первого аспекта или первому аспекту как таковому,In a possible form of implementation of the method according to any prior implementation of the first aspect or the first aspect as such,
в случае, когда форматом цветности является 4: 4: 4, набор (S) содержит (состоит из) один субблок яркости, который совмещен с субблоком цветности;in the case where the chrominance format is 4:4:4, the set (S) contains (consists of) one luma subblock, which is combined with a chrominance subblock;
при этом в случае, если формат цветности равен 4: 2: 2, набор (S) содержит два субблока яркости, которые смежны по горизонтали;in this case, if the chroma format is 4: 2: 2, the set (S) contains two luminance subblocks that are horizontally adjacent;
при этом в случае, если формат цветности равен 4: 2: 0 набор (S) содержит два субблока яркости, которые диагональны.Moreover, in case the chroma format is 4: 2: 0, the set (S) contains two luminance subblocks that are diagonal.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором, если имеется более одного субблока яркости в наборе (S), определение вектора движения для субблока цветности на основе вектора движения по меньшей мере одного субблока яркости в наборе (S) субблоков яркости, содержит:In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein, if there is more than one luma subblock in the set (S), determining a motion vector for the chrominance subblock based on the motion vector of at least one luma subblock in the set (S) brightness subblocks, contains:
усреднение векторов движения субблоков яркости в наборе S; и averaging the motion vectors of brightness subblocks in the set S; And
вывод вектора движения для субблока цветности на основе среднего вектора движения яркости.inferring a motion vector for the chrominance subblock based on the average luminance motion vector.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, усреднение векторов движения субблоков яркости в наборе S содержит: In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the averaging of the motion vectors of the luminance subblocks in the set S comprises:
усреднение горизонтальных составляющих векторов движения субблоков яркости в наборе S; и/или averaging the horizontal components of the motion vectors of brightness subblocks in the set S; and/or
усреднение вертикальных составляющих векторов движения субблоков яркости в наборе S.averaging of the vertical components of the motion vectors of brightness subblocks in the set S.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит проверку, является ли сумма векторов движения субблоков яркости в наборе S большей или равной 0.In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein averaging the motion vectors of the luminance subblocks in the set S comprises checking whether the sum of the motion vectors of the luminance subblocks in the set S is greater than or equal to 0.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит:In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein the averaging of the motion vectors of the luminance subblocks in the set S comprises:
mvAvgLX = если mvAvgLX[ 0 ] больше чем или равно 0, тогда mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) ) если mvAvgLX[ 1 ] больше чем или равно 0, тогда mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)), где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в наборе субблоков (S) яркости в массиве векторов движения, , вектор движения субблока яркости с индексами и , N - количество элементов (например, субблоков яркости) в наборе субблоков (S) яркости, log2 (N) представляет собой логарифм N по основанию 2 и степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо. mvAvgLX = if mvAvgLX[ 0 ] is greater than or equal to 0, then mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), otherwise, mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) ) if mvAvgLX[ 1 ] is greater than or equal to 0, then mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), otherwise, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)), where mvAvgLX is the result of averaging, mvAvgLX [0] - horizontal component of the motion vector mvAvgLX, mvAvgLX [1] - vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the subblock Si in the set of subblocks (S) of brightness in the array of motion vectors, , brightness subblock motion vector with indices And , N is the number of elements (such as luminance subblocks) in the luminance subblock set (S), log2(N) is the logarithm of N to base 2 and the power to which the number 2 is raised to give the value of N, and “>>” is arithmetic shift to the right.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового N равно 2.In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect as such, N is equal to 2.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, усреднение векторов движения субблоков яркости в наборе S содержит:In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the averaging of the motion vectors of the luminance subblocks in the set S comprises:
mvAvgLX = mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))]mvAvgLX = mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))]
[(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))]+[(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))]+
mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))+(SubWidthC - 1)]mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))+(SubWidthC - 1)]
[(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))+(SubHeightC - 1)][(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))+(SubHeightC - 1)]
если mvAvgLX[0] >= 0 то mvAvgLX[ 0 ] =( mvAvgLX[ 0 ] + 1 - (mvAvgLX[0] >= 0)) >> 1 if mvAvgLX[0] >= 0 then mvAvgLX[ 0 ] =( mvAvgLX[ 0 ] + 1 - (mvAvgLX[0] >= 0)) >> 1
если mvAvgLX[1] >= 0 то mvAvgLX[ 1 ] =( mvAvgLX[ 1 ] + 1 - (mvAvgLX[1] >= 0)) >> 1if mvAvgLX[1] >= 0 then mvAvgLX[ 1 ] =( mvAvgLX[ 1 ] + 1 - (mvAvgLX[1] >= 0)) >> 1
где mvAvgLX [0] - горизонтальная составляющая усредненного вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая усредненного вектора движения mvAvgLX; где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно; xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и вертикальном направлении, соответственно, для субблока яркости в наборе (S), “<<” - это арифметический сдвиг влево, а “>>” - арифметический сдвиг вправо.where mvAvgLX [0] is the horizontal component of the averaged motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the averaged motion vector mvAvgLX; where SubWidthC and SubHeightC represent chroma scaling factors in the horizontal and vertical directions, respectively; xSbIdx and ySbIdx represent the subblock index in the horizontal direction and vertical direction, respectively, for the luma subblock in the set (S), “<<” is the arithmetic left shift, and “>>” is the arithmetic right shift.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, если Случай 1: mvAvgLX[ 0 ] >= 0, тогда значение для “(mvAvgLX[0] >= 0)” =1; если случай 2:mvAvgLX[ 0 ] < 0, тогда значение для “(mvAvgLX[0] >= 0)” =0;In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, if Case 1: mvAvgLX[ 0 ] >= 0, then the value for “(mvAvgLX[0] >= 0)” =1; if case 2:mvAvgLX[ 0 ] < 0, then the value for “(mvAvgLX[0] >= 0)” =0;
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, усреднение векторов движения субблоков яркости в наборе S содержит: In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the averaging of the motion vectors of the luminance subblocks in the set S comprises:
когда сумма векторов движения субблоков яркости в наборе S больше или равна 0, сумма векторов движения субблоков яркости в наборе S делится операцией сдвига вправо в зависимости от количества элементов (например, субблоков яркости) в наборе субблоков (S) яркости.when the sum of motion vectors of luminance subblocks in a set S is greater than or equal to 0, the sum of motion vectors of luminance subblocks in set S is divided by a right shift operation depending on the number of elements (eg, luminance subblocks) in the luminance subblock set (S).
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности содержит:In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect as such, determining the chroma scaling factors in the horizontal and vertical directions based on the chroma format information comprises:
определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе сопоставления между информацией формата цветности и коэффициентами масштабирования цветности в горизонтальном и вертикальном направлениях.determining chrominance scaling factors in the horizontal and vertical directions based on a mapping between the chroma format information and the chrominance scaling factors in the horizontal and vertical directions.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, дополнительно содержащегоIn a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such, further comprising
генерирование предсказания субблока цветности на основе определенного вектора движения.generating a chrominance subblock prediction based on the determined motion vector.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, формат цветности содержит один из формата YUV 4: 2: 2, формата YUV 4: 2: 0 или формата YUV 4: 4: 4.In a possible implementation of the method according to any previous implementation of the first aspect or the first aspect itself, the chroma format comprises one of a YUV 4:2:2 format, a YUV 4:2:0 format, or a YUV 4:4:4 format.
Способ согласно любой предыдущей реализации первого аспекта или первого аспекта как такового реализуется устройством кодирования.The method according to any previous implementation of the first aspect or the first aspect as such is implemented by an encoding device.
Способ согласно любой предыдущей реализации первого аспекта или первого аспекта как такового реализуется устройством декодирования.The method according to any previous implementation of the first aspect or the first aspect as such is implemented by a decoding device.
Согласно второму аспекту изобретения предоставляется аппаратура для аффинного внешнего предсказания блока текущей картинки, содержащего совмещенные блоки яркости и цветности, при этом аппаратура содержитAccording to a second aspect of the invention, apparatus is provided for affine inter-prediction of a block of a current picture containing combined luma and chrominance blocks, wherein the apparatus comprises
модуль определения, сконфигурированный для определения коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит текущий блок изображения; и определения набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; иa determination module configured to determine chrominance scaling factors in the horizontal and vertical directions based on chrominance format information, wherein the chrominance format information indicates the chrominance format of a current picture to which the current image block belongs; and determining a set (S) of luminance subblocks of the luminance block based on the values of the chroma scaling factors; And
модуль вывода вектора движения, сконфигурированный для определения вектора движения для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости.a motion vector output module configured to determine a motion vector for a chrominance subblock of the chrominance block based on the motion vectors of one or more luminance subblocks in the luminance subblock set (S).
Способ согласно первому аспекту изобретения может выполняться аппратурой согласно второму аспекту изобретения. Дополнительные признаки и формы реализации аппаратуры согласно второму аспекту изобретения соответствуют характеристикам и формам реализации способа согласно первому аспекту изобретения.The method according to the first aspect of the invention can be carried out by apparatus according to the second aspect of the invention. Additional features and forms of implementation of the equipment according to the second aspect of the invention correspond to the characteristics and forms of implementation of the method according to the first aspect of the invention.
Согласно третьему аспекту изобретение относится к аппаратуре для девидеокодированияпотока, включающей в себя процессор и память. В памяти хранятся инструкции, которые заставляют процессор выполнять способ согласно первому аспекту.According to a third aspect, the invention relates to apparatus for de-video encoding a stream, including a processor and a memory. The memory stores instructions that cause the processor to execute the method according to the first aspect.
Согласно четвертому аспекту изобретение относится к аппаратуре для видеокодированияпотока, включающей в себя процессор и память. В памяти хранятся инструкции, которые заставляют процессор выполнять способ согласно первому аспекту.According to a fourth aspect, the invention relates to video stream encoding apparatus including a processor and a memory. The memory stores instructions that cause the processor to execute the method according to the first aspect.
Согласно пятому аспекту предлагается машиночитаемый носитель данных, на котором хранятся инструкции, которые при исполнении вызывают один или несколько процессоров, сконфигурированных для видеокодированияданных. Инструкции вызывают один или несколько процессоров выполнять способ согласно первому аспекту или любому возможному варианту осуществления первого аспекта.According to a fifth aspect, there is provided a computer-readable storage medium that stores instructions that, when executed, call one or more processors configured to encode video data. The instructions cause one or more processors to perform a 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 performing a method according to the first or second aspect or any possible embodiment of the first when executed on a computer.
Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.Details of one or more embodiments are set forth in the accompanying drawings and in the following description. Other features, objects and advantages will be apparent from the description, drawings and claims.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
В следующих вариантах осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:In the following embodiments, the inventions 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 the embodiments presented herein;
Фиг. 1B - блок-схема, показывающая другой пример системы видеокодирования, сконфигурированной для реализации представленных здесь вариантов осуществления;Fig. 1B is a block diagram showing another example of a video coding system configured to implement the embodiments presented herein;
Фиг. 2 - блок-схема, показывающая пример видеокодера, сконфигурированного для реализации представленных здесь вариантов осуществления;Fig. 2 is a block diagram showing an example of a video encoder configured to implement the embodiments presented herein;
Фиг. 3 - блок-схема, показывающая примерную структуру видеодекодера, сконфигурированного для реализации представленных здесь вариантов осуществления;Fig. 3 is a block diagram showing an exemplary structure of a video decoder configured to implement the embodiments presented herein;
Фиг. 4 является блок-схемой, иллюстрирующей пример аппаратуры кодирования или аппаратуры декодирования;Fig. 4 is a block diagram illustrating an example of encoding equipment or decoding equipment;
Фиг. 5 является блок-схемой, иллюстрирующей другой пример аппаратуры кодирования или аппаратуры декодирования;Fig. 5 is a block diagram illustrating another example of encoding equipment or decoding equipment;
Фиг. 6а показывает пример позиций вектора движения контрольной точки для аффинной модели движения с 4 параметрами;Fig. 6a shows an example of control point motion vector positions for a 4-parameter affine motion model;
Фиг. 6b показывает пример позиций вектора движения контрольной точки для аффинной модели движения с 6 параметрами;Fig. 6b shows an example of control point motion vector positions for a 6-parameter affine motion model;
Фиг. 7 показывает пример поля вектора движения субблока для аффинной модели движения;Fig. 7 shows an example of a subblock motion vector field for an affine motion model;
Фиг. 8 - блок-схема, иллюстрирующая компенсацию движения с использованием аффинной модели движения;Fig. 8 is a block diagram illustrating motion compensation using an affine motion model;
Фиг. 9A показывает пример номинальных вертикальных и горизонтальных местоположений выборок яркости и цветности 4:2:0 на картинке;Fig. 9A shows an example of the nominal vertical and horizontal locations of 4:2:0 luma and chrominance samples in a picture;
Фиг. 9B показывает пример номинальных вертикальных и горизонтальных положений выборок яркости и цветности 4:2:2 на картинке;Fig. 9B shows an example of the nominal vertical and horizontal positions of 4:2:2 luma and chrominance samples in a picture;
Фиг. Фиг. 9С показывает пример номинальных вертикальных и горизонтальных положений выборок яркости и цветности 4:4:4 на картинке;Fig. Fig. 9C shows an example of the nominal vertical and horizontal positions of 4:4:4 luma and chrominance samples in a picture;
Фиг. 9D иллюстрирует различные шаблоны выборки;Fig. 9D illustrates various sampling patterns;
Фиг. 10A показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в текущий блок изображения текущей картинки, где формат цветности текущей картинки составляет 4:2:0.Fig. 10A shows an example illustrating combined luma and chrominance blocks that are included in the current image block of the current picture, where the chrominance aspect ratio of the current picture is 4:2:0.
Фиг. 10В показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в текущий блок изображения текущей картинки, где формат цветности текущей картинки составляет 4:2:2;Fig. 10B shows an example illustrating combined luminance and chrominance blocks that are included in the current image block of the current picture, where the chrominance aspect ratio of the current picture is 4:2:2;
Фиг. 10C показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в текущий блок изображения текущей картинки, где формат цветности текущей картинки составляет 4:4:4;Fig. 10C shows an example illustrating combined luma and chrominance blocks that are included in the current image block of the current picture, where the chrominance aspect ratio of the current picture is 4:4:4;
Фиг. 11A - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки 4:2:0, как показано на фиг. 10А;Fig. 11A is an example illustrating the positions of two luminance subblocks for a given chroma subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:2:0, as shown in FIG. 10A;
Фиг. 11В - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:2:2, как показано на фиг. 10B;Fig. 11B is an example illustrating the positions of two luminance subblocks for a given chrominance subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:2:2, as shown in FIG. 10B;
Фиг. 11С - пример, иллюстрирующий позицию субблока яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:4:4, как показано на фиг. 10С;Fig. 11C is an example illustrating a luminance subblock position for a given chroma subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:4:4, as shown in FIG. 10C;
Фиг. 12A показывает различные примеры поднабора S, который содержит позиции субблоков яркости для данной позиции субблока цветности, когда формат цветности установлен на 4:4:4;Fig. 12A shows various examples of a subset S that contains luma subblock positions for a given chrominance subblock position when the chrominance format is set to 4:4:4;
Фиг. 12B показывает различные примеры поднабора S, в котором субблоки цветности, расположенные на границе блока цветности, имеют соответствующие позиции в блоке яркости, как в четвертом случае «D», показанном на фиг. 12A;Fig. 12B shows various examples of a subset S in which chrominance subblocks located on a chrominance block boundary have corresponding positions in a luma block, as in the fourth case "D" shown in FIG. 12A;
Фиг. 13A показывает пример, иллюстрирующий выбор двух субблоков яркости для выведения вектора движения для данного субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки равен 4:2:0;Fig. 13A shows an example illustrating the selection of two luminance sub-blocks to output a motion vector for a given chroma sub-block at the time of deriving chroma motion vectors from luminance motion vectors when the chrominance aspect of the current picture is 4:2:0;
Фиг. 13B показывает пример, иллюстрирующий выбор двух субблоков яркости для данного субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:2:2;Fig. 13B shows an example illustrating the selection of two luminance sub-blocks for a given chroma sub-block at the time of outputting chroma motion vectors from luminance motion vectors when the chrominance aspect ratio of the current picture is 4:2:2;
Фиг. 13C показывает пример, иллюстрирующий выбор субблока яркости для данного субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:4:4;Fig. 13C shows an example illustrating the selection of a luminance sub-block for a given chroma sub-block at the time of outputting chroma motion vectors from luminance motion vectors when the chrominance aspect ratio of the current picture is 4:4:4;
Фиг. 14A показывает пример подразделения блока яркости 16×16 на субблоки и подразделения блока цветности, совмещенного с блоком яркости, когда формат цветности - YUV 4:2:0;Fig. 14A shows an example of dividing a 16×16 luma block into subblocks and dividing a chrominance block combined with a luma block when the chrominance format is YUV 4:2:0;
Фиг. 14B показывает пример подразделения блока яркости 16×16 на субблоки и подразделения блока цветности, совмещенного с блоком яркости, когда формат цветности - YUV 4:2:2;Fig. 14B shows an example of dividing a 16×16 luma block into subblocks and dividing a chrominance block combined with a luma block when the chrominance format is YUV 4:2:2;
Фиг. 14C показывает пример подразделения блока яркости 16×16 на субблоки и подразделения блока цветности, совмещенного с блоком яркости, когда формат цветности - YUV 4:4:4;Fig. 14C shows an example of dividing a 16×16 luma block into subblocks and dividing a chrominance block combined with a luma block when the chrominance format is YUV 4:4:4;
Фиг. 15 показывает блок-схему, изображающую примерный процесс вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности согласно некоторым аспектам настоящего раскрытия; Fig. 15 is a flow chart depicting an exemplary motion vector inference process for affine inter prediction of chroma subblocks based on a chroma format in accordance with some aspects of the present disclosure;
Фиг. 16 показывает блок-схему, изображающую другой примерный процесс вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности согласно некоторым аспектам настоящего раскрытия;Fig. 16 is a flow diagram depicting another example motion vector inference process for affine inter prediction of chroma subblocks based on a chroma format in accordance with some aspects of the present disclosure;
Фиг. 17 показывает схематическую диаграмму устройства для аффинного внешнего предсказания согласно некоторым аспектам настоящего раскрытия;Fig. 17 shows a schematic diagram of an apparatus for affine inter prediction in accordance with certain aspects of the present disclosure;
Фиг. 18 является блок-схемой, показывающей примерную структуру системы подачи контента, которая реализует услугу доставки контента; иFig. 18 is a block diagram showing an exemplary structure of a content delivery system that implements a content delivery service; And
Фиг. 19 является блок-схемой, показывающей структуру примерного терминального устройства.Fig. 19 is a block diagram showing the structure of an exemplary terminal device.
Следующие одинаковые ссылочные позиции относятся к одинаковым или, по меньшей мере, функционально эквивалентным признакам, если явно не указано иное.The following identical reference numerals refer to the same or at least functionally equivalent features, unless expressly indicated otherwise.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯDETAILED DESCRIPTION OF IMPLEMENTATION OPTIONS
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.In the following description, reference is made to the accompanying drawings, which form a part of this disclosure and which 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 understood that embodiments of the present invention may 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 will be understood that the disclosure associated with the described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or a plurality of specific method steps are described, the corresponding apparatus may include one or a plurality of blocks, such as functional blocks, to perform the one or multiple method steps described (e.g., one block performing one or a plurality of steps, or a plurality of blocks, each of which performs one or more of a 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 a plurality of blocks, such as functional blocks, the corresponding method may include one step for performing the functionality of the one or multiple blocks (e.g., one step performing the functionality of the one or multiple blocks , or a plurality of steps, each of which performs the functionality of one or more of a plurality of blocks), even if such one or multiple steps are not explicitly described or illustrated in the figures. It is further understood that features of various exemplary embodiments and/or aspects described herein may be combined with each other unless specifically stated otherwise.
Видеокодирование обычно относится к обработке последовательности картинок, которые образуют видео или видеопоследовательность. Вместо термина «картинка» термины «кадр» или «изображение» могут использоваться как синонимы в области видеокодирования. Видеокодирование (или кодировка (coding) в целом) содержит две части: видеокодирование и видеодекодирование. Видеокодирование выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеокартинок для сокращения объема данных, требуемого для представления видеокартинок (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя (адресата) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеокартинок. Варианты осуществления, относящиеся к «кодировке» видеокартинок (или картинок в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видеокартинок или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется CODEC (кодирование и декодирование).Video encoding generally refers to the processing of the sequence of pictures that form a video or video sequence. Instead of the term "picture", the terms "frame" or "image" can be used interchangeably in the field of video coding. Video encoding (or encoding in general) contains two parts: video encoding and video decoding. Video encoding is performed at the source side and typically involves processing (eg, through compression) of 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 receiver (destination) side and usually contains reverse processing compared to the encoder for reconstructing video images. Embodiments relating to "encoding" of video pictures (or pictures in general) are to be understood as referring to "encoding" or "decoding" video pictures 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 encoding, the original video images can be restored, i.e. The restored video images are of the same quality as the original video images (provided there are no transmission losses or other data loss during storage or transmission). In the case of lossy video encoding, additional compression is performed, for example through quantization, to reduce the amount of data representing video images that cannot be fully reconstructed at the decoder, i.e. the quality of the restored video images is lower or worse compared to the quality of the original video images.
Несколько стандартов видеокодирования принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборки и кодирование с 2D преобразованием для применения квантования в области преобразования). Каждая картинка видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодировка обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например, с использованием пространственного (внутри картинки) предсказания и/или временного (внешнего) предсказания для генерирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут генерировать идентичные предсказания (например, внутреннее (intra) и внешнее (inter) предсказания) и/или реконструкции для обработки, то есть кодирования, последующих блоков.Several video coding standards belong to the group of "hybrid lossy video codecs" (that is, they combine spatial and temporal prediction in the sample domain and 2D transform coding to apply quantization in the transform domain). Each picture of a video sequence is usually divided into a set of non-overlapping blocks, and encoding is usually performed at the block level. In other words, in an encoder, video is typically processed, that is, encoded, at the block (video block) level, for example, using spatial (intra-picture) prediction and/or temporal (external) prediction to generate a prediction block, the prediction block being subtracted from the current block ( block which is currently being processed/to be processed) to obtain a residual block, the residual block is transformed and this residual block is quantized in the transformation domain to reduce the amount of data (compression) to be transmitted, whereas in the decoder, reverse processing compared to the encoder is applied to an encoded or compressed block to reconstruct the current block for presentation. In addition, the encoder duplicates the decoder's processing loop so that they will both generate identical predictions (eg, intra and inter predictions) and/or reconstructions for processing, ie encoding, subsequent blocks.
Настоящее раскрытие относится к улучшениям в процессе внешнего предсказания. В частности, настоящее раскрытие относится к усовершенствованиям в процессе вывода векторов движения цветности. В частности, настоящее раскрытие относится к усовершенствованиям в процессе вывода вектора движения аффинных блоков цветности (например, субблоков цветности). Более конкретно, настоящее раскрытие относится к улучшениям в процессе вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности.The present disclosure relates to improvements in the external prediction process. In particular, the present disclosure relates to improvements in the process of inferring chroma motion vectors. In particular, the present disclosure relates to improvements in the motion vector inference process of affine chroma blocks (eg, chroma subblocks). More specifically, the present disclosure relates to improvements in the motion vector inference process for affine inter-prediction of chroma subblocks based on chroma format.
В данном документе раскрыты улучшенные механизмы для поддержки множества форматов цветности для процесса вывода векторов движения цветности.This document discloses improved mechanisms to support multiple chroma formats for the chroma motion vector inference process.
В нижеследующих вариантах осуществления системы 10 видеокодировки, видеокодер 20 и видеодекодер 30 описаны на основе Фиг. с 1 по 3.In the following embodiments,
Фиг. 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 связи.The
Источник 16 картинки может содержать или быть устройством захвата картинки любого типа, например, камерой для захвата картинки реального мира, и/или устройством генерирования картинки любого типа, например, процессором компьютерной графики для генерирования компьютерной анимированной картинки, или любым типом другого устройства для получения и/или предоставления картинки реального мира, генерируемой компьютером картинки (например, содержимого экрана, картинки виртуальной реальности (VR)) и/или любой их комбинации (например, картинки дополненной реальности (AR)). Источником картинки может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых картинок.The
В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, картинка или данные 17 картинки также могут именоваться необработанной картинкой или необработанными данными 17 картинки.In contrast to the
Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 картинки и выполнения предварительной обработки в отношении этих данных 17 картинки для получения предварительно обработанной картинки 19 или предварительно обработанных данных 19 картинки. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.The
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 картинки и предоставления кодированных данных 21 картинки (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).
Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 картинки и передачи этих кодированных данных 21 картинки (или любой их дополнительно обработанной версии) по каналу 13 связи в другое устройство, например устройство-получатель 14 или любое другое устройство, для сохранения или непосредственного восстановления. The
Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения.The
Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема кодированных данных 21 картинки (или любой их дополнительно обработанной версии), например непосредственно от устройства-источника 12 или из любого другого источника, например, запоминающего устройства, например, устройства хранения кодированных данных картинки, и предоставления кодированных данных 21 картинки в декодер 30.The
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 картинки или кодированных данных 21 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.The
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки кодированных данных 21 картинки в соответствующий формат, например, в пакеты, и/или обработки кодированных данных картинки с использованием любого типа кодирования передачи или обработки для передачи по линии связи или сети связи.The
Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого типа соответствующего декодирования передачи или обработки и/или распаковки для получения кодированных данных 21 картинки.The
Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены как интерфейсы однонаправленной связи, как показано стрелкой для канала 13 связи на Фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например, отправки и приема сообщений, например для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например передаче кодированных данных изображения.Both
Декодер 30 выполнен с возможностью приема кодированных данных 21 картинки и предоставления декодированных данных 31 картинки или декодированной картинки 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг. 3 или Фиг. 5.The
Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки декодированных данных 31 картинки (также называемых данными восстановленной картинки), таких как декодированная картинка 31, чтобы получить пост-обработанные данные 33 картинки, такие как пост-обработанная картинка 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например, для подготовки декодированных данных 31 картинки для отображения, например с помощью устройства 34 отображения.The post-processor 32 of the
Устройство 34 отображения из состава устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 картинки для отображения картинки, например пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленной картинки, например, интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, жидко-кристаллические на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.The display device 34 of the
Хотя Фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать оба или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.Although Fig. 1A illustrates
Как будет очевидно для специалиста на основании описания, существование и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения.As will be apparent to one skilled in the art from the description, the existence and (precise) separation of functionality of 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 (eg, video encoder 20) or decoder 30 (eg, video decoder 30) or both
Устройство-источник 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 present invention are described herein, for example, with reference to High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software, a next generation video coding standard being developed by the Joint Collaboration on Video Coding (JCT-VC) Expert Group. ITU-T Video Coding (VCEG) and ISO/IEC Moving Picture Expert Group (MPEG). One of ordinary skill in the art will understand that embodiments of the present 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 контурного фильтра, буфер 230 (DPB) декодированных картинок, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разбиения. Модуль 244 внешнего предсказания может включать в себя модуль оценки движения и модуль компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.Fig. 2 shows a schematic block diagram of an
Блок 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.The remainder calculation block 204, transform
Картинки и разбиение картинок (картинки и блоки)Pictures and picture breakdown (pictures and blocks)
Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 картинки 17 (или данных 17 картинки), например картинки из последовательности картинок, образующих видео или видеопоследовательность. Принятая картинка или данные картинки также могут представлять собой предварительно обработанную картинку 19 (или предварительно обработанные данные 19 картинки). Для простоты нижеследующее описание ссылается на картинку 17. Картинка 17 также может именоваться текущей картинкой или картинкой, которая подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущую картинку от других картинок, например, ранее кодированных и/или декодированных картинок той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущую картинку).
(Цифровая) картинка является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента картинки) или пэл. Число выборок в горизонтальном и вертикальном направлении (или оси) массива или картинки определяет размер и/или разрешение картинки. Для представления цвета обычно используются три цветовые компоненты, т.е. картинка может быть представлена или включать в себя три массива выборок. В формате RGB или цветовом пространстве картинка содержит соответствующий массив красных, зеленых или синих выборок. Однако при видеокодировке каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (или сокращенно яркость (luma)) представляет яркость или интенсивность уровня серого (например, как в полутоновой картинке), в то время как две компоненты Cb и Cr цветности (или сокращенно цветности (chroma)) представляют компоненты информации о цветности или цвете. Соответственно, картинка в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Картинки в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конверсия. Если картинка является монохромной, она может содержать только массив выборок яркости. Соответственно, картинка может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.A (digital) picture is, or can be viewed as, a two-dimensional array or matrix of samples with intensity values. A selection in an array may also be referred to as a pixel (short form of picture element) or pel. The number of samples in the horizontal and vertical direction (or axis) of an array or picture determines the size and/or resolution of the picture. Three color components are usually used to represent color, i.e. the picture can be presented or include three arrays of samples. In RGB, or color space, a picture contains a corresponding array of red, green, or blue samples. However, in video encoding, each pixel is typically represented in a luminance-chrominance format or color space, such as YCbCr, which contains a luminance component, denoted Y (sometimes L is also used instead), and two chrominance components (chrominance components), denoted Cb and Cr. The luminance component Y (or luma for short) represents the brightness or intensity of the gray level (for example, as in a grayscale picture), while the two chrominance components Cb and Cr (or chroma for short) represent the chrominance information components or color. Accordingly, a picture in YCbCr format contains an array of brightness samples with values (Y) of brightness samples and two arrays of chrominance samples with values (Cb and Cr) of chromaticity. Pictures in RGB format can be converted or converted to YCbCr format and vice versa, the process is also known as color conversion or conversion. If the picture is monochrome, it can only contain an array of brightness samples. Accordingly, a picture can be, for example, an array of luminance samples in a 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 formats.
Варианты осуществления видеокодера 20 могут содержать блок разбиения картинки (не показан на Фиг. 2), выполненный с возможностью разбиения картинки 17 на множество (обычно не перекрывающихся) блоков 203 картинки. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разбиения картинки может быть выполнен с возможностью использования одного и того же размера блока для всех картинок в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между картинками или поднаборами или группами картинок и разбиения каждой картинки на соответствующие блоки. Embodiments of
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 картинки 17, например одного, нескольких или всех блоков, формирующих картинку 17. Блок 203 картинки также может именоваться текущим блоком картинки или блоком картинки, подлежащим кодированию.In additional embodiments, the video encoder may be configured to receive directly a block 203 of a
Подобно картинке 17, блок 203 картинки снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем картинка 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромной картинки 17 или массив яркости или цветности в случае цветной картинки) или три массива выборок (например, яркость и два массива цветности в случае цветной картинки 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, массив выборок MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования.Like
Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть выполнены с возможностью кодирования картинки 17 блок за блоком, например кодирование и предсказание выполняется для каждого блока 203.Embodiments of
Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разбита на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).Embodiments of
Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования картинки с использованием групп тайлов (также называемых группами видеотайлов) и/или тайлов (также называемых видеотайлами), при этом картинка может быть разбита на или закодировано с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или фракционные блоки.Embodiments of
Вычисление остаткаCalculating the remainder
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также именуемого остатком 205) на основе блока 203 картинки и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания приведены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 картинки, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборок.Residual calculation block 204 may be configured to calculate residual block 205 (also referred to as residual 205) based on picture block 203 and prediction block 265 (additional details about prediction block 265 are provided below), for example, by subtracting the sample values of prediction block 265 from the values samples the picture block 203, sample by sample (pixel by pixel), to obtain a residual block 205 in the sample region.
ПреобразованиеConversion
Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.Transform processing
Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с некоторым коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе некоторых ограничений, например коэффициенты масштабирования представляют собой степень двойки для операций сдвига, битовую глубину коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например, блоком 312 обработки обратного преобразования в видеодекодере 30), а соответствующие коэффициенты масштабирования для прямого преобразования, например блоком 206 обработки преобразования, могут быть заданы надлежащим образом в кодере 20.
Варианты осуществления видеокодера 20 (соответственно блока 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.Embodiments of video encoder 20 (respectively transform processing unit 206) may be configured to output transform parameters, such as the type of transform or transforms, for example, directly or encoded or compressed via
КвантованиеQuantization
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.The
Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть модифицирована посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для предопределенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать тонкому квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее деквантование и/или обратное квантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть модифицирована из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform factor may be rounded to an m-bit transform factor during quantization, where n is greater than m. The degree of quantization can be modified by adjusting the quantization parameter (QP). For example, for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. The applicable quantization step size may be specified by the quantization parameter (QP). The quantization parameter may, for example, be an index to a predefined set of applicable quantization step sizes. For example, small quantization parameters may correspond to fine quantization (small quantization step sizes), and large quantization parameters may correspond to coarse quantization (large quantization step sizes), or vice versa. Quantization may include dividing by a quantization step size, and corresponding dequantization and/or inverse quantization, such as by
Варианты осуществления видеокодера 20 (соответственно блока 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.Embodiments of video encoder 20 (respectively quantization unit 208) may be configured to output quantization parameters (QPs), for example, directly or encoded through
Обратное квантованиеInverse quantization
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования относительно схемы, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать, хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании, коэффициентам 207 преобразования.The
Обратное преобразованиеReverse conversion
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования относительно преобразования, применяемого блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST) или других обратных преобразований для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.The inverse
ВосстановлениеRecovery
Блок 214 восстановления (например, блок сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т. е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например, посредством сложения, выборка за выборкой, значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.A reconstruction block 214 (e.g., an add block or an adder 214) is configured to add a transform block 213 (i.e., a reconstructed residual block 213) with a prediction block 265 to obtain a reconstructed block 215 in the sample domain, for example, through addition, sample per 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.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 edge filter unit, for example, is configured to smooth pixel transitions or otherwise improve video quality.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять аналогичные параметры контурного фильтра или соответствующие контурные фильтры для декодирования.Embodiments of video encoder 20 (respectively, loop filter block 220) may be configured to output loop filter parameters (such as sample-adaptive offset information), such as directly or encoded through
Буфер декодированных картинокBuffer of decoded pictures
Буфер 230 декодированных картинок (DPB) может быть памятью, в которой хранятся опорные картинки или, в общем, данные опорных картинок для видеокодирования данных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных картинок может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных картинок может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущей картинки или разных картинок, например, ранее восстановленных картинок, и может предоставлять полные ранее восстановленные, т.е. декодированные, картинки (и соответствующие опорные блоки и выборки) и/или частично восстановленную текущую картинку (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. Буфер 230 декодированных картинок (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например, если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.Decoded picture buffer (DPB) 230 may be a memory that stores reference pictures or, generally, reference picture data for video encoding of data by
Выбор режима (разбиение и предсказание)Mode selection (partitioning and prediction)
Блок 260 выбора режима содержит блок 262 разбиения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и сконфигурирован для приема или получения данных исходной картинки, например, исходного блока 203 (текущего блока 203 текущей картинки 17), и данные восстановленной картинки, например отфильтрованные и/или нефильтрованные восстановленные выборки или блоки одной и той же (текущей) картинки и/или из одного или множества ранее декодированных картинок, например, из буфера 230 декодированных картинок или других буферов (например, строкового буфера, не показано). Данные восстановленной картинки используются в качестве данных опорной картинки для предсказания, например, внешнего предсказания или внутреннего предсказания, чтобы получить блок 265 предсказания или предиктор 265. Как будет подробно описано ниже, варианты осуществления, представленные в данном документе, обеспечивают улучшение блока 244 внешнего предсказания, обеспечивая более точное предсказание вектора движения, используемое блоком внешнего предсказания при выполнении внешнего предсказания, например, аффинное внешнее предсказание или внешнее предсказание на основе субблоков.The
Модуль 260 выбора режима может быть выполнен с возможностью определения или выбора разбиения для текущего режима предсказания блока (в том числе отсутствие разбиения) и режима предсказания (например, режима внутреннего или внешнего предсказания) и генерации соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.The
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разбиения и режима предсказания (например, из тех, которые поддерживаются блоком 260 выбора режима или доступны для него), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные непроизводительные затраты на сигнализацию (минимальные непроизводительные затраты на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба фактора. Блок 260 выбора режима может быть выполнен с возможностью определения режима разбиения и предсказания на основе оптимизации искажения скорости (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как «лучший», «минимальный», «оптимальный» и т. д. в этом контексте не обязательно относятся к всеобъемлющему «лучшему», «минимуму», «оптимальному» и т. д., но также могут относиться к выполнению критерия выбора или прекращения, например, когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к «субоптимальному выбору», но уменьшающих сложность и время обработки.Embodiments of the
Другими словами, блок 262 разбиения может быть выполнен с возможностью разбиения блока 203 на более мелкие разбиения блока или субблоки (которые снова образуют блоки), например итеративно с использованием разбиения квадродерева (QT), двоичного разбиения (BT), или разбиеня троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разбиений блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разбиваемого блока 203, а режимы предсказания применяются к каждому из разбиений блока или субблоков.In other words,
Далее более подробно поясняется разбиение (например, посредством блока 260 разбиения) и обработка предсказания (посредством блока 244 внешнего предсказания и блока 254 внутреннего предсказания), выполняемые примерным видеокодером 20.Next, the partitioning (e.g., through partitioner 260) and prediction processing (via
РазбиениеSplitting
Блок 262 разбиения может разбивать (или разделять) текущий блок 203 на более мелкие разбиения, например, блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разбиты на еще меньшие разбиения. Это также называется разбиением дерева или иерархическим разбиением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разбит, например, разбит на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разбиты на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разбиение не будет завершено, например, из-за выполнения критерия прекращения, например, достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разбиваются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разбиение на два разбиения, называется двоичным деревом (BT), дерево, использующее разбиение на три разбиения, называется троичным деревом (TT), а дерево, использующее разбиение на четыре разбиения, называется квадродеревом (QT).The
Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью картинки. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).As mentioned earlier, the term "block" as used herein can be a part, particularly a square or rectangular part of a picture. With respect to, for example, HEVC and VVC, a block may be or correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) and a transform unit (TU) and/or corresponding blocks, such as a coding tree block (CTB ), a coding block (CB), a transform block (TB), or a prediction block (PB).
Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности картинки, которая имеет три массива выборок, или CTB выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разбиением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности картинки, которое имеет три массива выборок, или блок кодирования выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разбиением.For example, a coding tree unit (CTU) may be or contain a CTB of luma samples, two corresponding CTBs of chroma samples of a picture that has three arrays of samples, or a CTB of samples of a monochrome picture or a picture that is encoded using three separate color planes and the syntax structures used for encoding samples. Accordingly, a coding tree block (CTB) may be an N×N block of samples for some value of N, such that dividing a component by the CTB is a partition. A coding unit (CU) may be or comprise a luma sample encoding unit, two corresponding chroma sample encoding units for a picture that has three sample arrays, or a monochrome sample encoding unit or a picture that is encoded using three separate color planes and syntactic structures used for encoding samples. Accordingly, a coding block (CB) may be an M×N block of samples for some values of M and N, so that dividing the CTB into coding blocks is a partition.
В вариантах осуществления, например, согласно 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) can be partitioned into CUs using a quadtree structure designated as a coding tree. The decision of whether to encode a picture region using inter-prediction (temporal) or intra-prediction (spatial) is made at the CU level. Each CU can be further partitioned into one, two or four PUs according to the PU partition type. Within a single PU, the same prediction process is applied, and the relevant information is passed to the PU-based decoder. After obtaining the residual block by applying a prediction process based on the partition type on the PU, the CU can be divided into transform units (TUs) according to another quadtree structure similar to the encoding tree for the CU.
В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом видеокодирования, который называется универсальное видеокодирование (VVC), для разбиения блока кодирования используется, например, разбиение комбинированного квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разбивается на структуру квадродерева. Листовые узлы квадродерева дополнительно разбиваются двоичным деревом или тройчной (или тройной) древовидной структурой. Листовые узлы дерева разбиения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дополнительного разбиения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с блочной структурой QTBT можно использовать множественное разбиение, например разбиение троичного дерева.In embodiments, for example, in accordance with the newest video coding standard currently under development, called Versatile Video Coding (VVC), for example, a combined quadtree and binary tree (QTBT) partitioning is used to partition the encoding block. In a block structure, a QTBT CU can be either square or rectangular in shape. For example, a coding tree unit (CTU) is first split into a quadtree structure. The leaf nodes of a quadtree are further partitioned into a binary tree or a ternary (or ternary) tree structure. The leaf nodes of the partitioning tree are called coding units (CUs), and this partitioning is used to process prediction and transformation without any additional partitioning. This means that CU, PU and TU have the same block size in the QTBT coding block structure. In parallel, multiple partitioning, such as ternary tree partitioning, can be used in conjunction with the QTBT block structure.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способа разбиения, описанных в данном документе.In one example, the
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.As described above,
Внутреннее предсказаниеInternal prediction
Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в VVC.The set of intra prediction modes may contain 35 different intra prediction modes, for example, non-directional modes, such as DC (or average) mode and planar mode, or directional modes, for example, as defined in HEVC, or may contain 67 different intra prediction modes, for example , non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined in VVC.
Блок 254 внутреннего предсказания выполнен с возможностью использования восстановленных выборок смежных блоков одной и той же текущей картинки для генерации блока 265 внутреннего предсказания согласно режиму внутреннего предсказания набора режимов внутреннего предсказания.The
Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутреннего предсказания (или, в общем, информации, указывающей выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме элементов 266 синтаксиса для включения в данные 21 кодированной картинки, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.The intra prediction block 254 (or more generally the mode selector 260) is further configured to output intra prediction parameters (or more generally information indicating the selected intra prediction mode for the block) to the
Внешнее предсказаниеExternal prediction
Набор (возможных) режимов внешнего предсказания зависит от доступных опорных картинок (то есть предыдущих, по меньшей мере, частично декодированных картинок, например, сохраненных в DPB 230) и других параметров внешнего предсказания, например используется ли опорная картинка целиком или только часть, например область окна поиска вокруг области текущего блока, опорной картинки для поиска наиболее совпадающего опорного блока и/или, например, применяется ли интерполяция пикселей, например, полупиксельная и/или четвертьпиксельная интерполяция, или нет.The set of (possible) inter prediction modes depends on the available reference pictures (i.e., previous, at least partially decoded pictures, e.g., stored in DPB 230) and other inter prediction parameters, such as whether the entire reference picture is used or only a portion, such as a region search windows around the area of the current block, a reference picture to search for the most matching reference block, and/or, for example, whether pixel interpolation, such as half-pixel and/or quarter-pixel interpolation, is applied or not.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.In addition to the above prediction modes, a skip mode and/or a direct mode may be used.
Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба на Фиг. 2 не показаны). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 картинки (блока 203 текущей картинки для текущей картинки 17) и декодированной картинки 231, или по меньшей мере одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или множества других/отличных ранее декодированных картинок 231, для оценки движения. Например, видеопоследовательность может содержать текущую картинку и ранее декодированные картинки 231 или, другими словами, текущую картинку и ранее декодированные картинки 231 могут быть частью или формировать последовательность картинок, образующих видеопоследовательность.The
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или разных картинок из множества других картинок и обеспечения опорной картинки (или индекса опорной картинки) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров внешнего предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).The
Блок компенсации движения выполнен с возможностью получения, например, приема параметра внешнего предсказания и выполнения внешнего предсказания на основе или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может генерировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число кандидатных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU блока текущей картинки блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных картинок. В настоящем раскрытии усовершенствования внешнего предсказания (в частности, афинного внешнего предсказания или внешнего предсказания на основе субблока) выполняются посредством поддержки множества форматов цветности и уточнения процесса вывода вектора движения аффинного субблока. В частности, ниже будут представлены улучшенный способ и аппаратура для вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности.The motion compensation unit is configured to obtain, for example, receiving an inter prediction parameter and performing inter prediction based on or using the inter prediction parameter to obtain an inter prediction unit 265. The motion compensation performed by the motion compensation block may include obtaining or generating a prediction block based on a motion vector/block determined by motion estimation, possibly performing interpolations with sub-pixel precision. Interpolation filtering can generate additional pixel samples from known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to encode an image block. After receiving the motion vector for the PU block of the current picture, the motion compensation unit can determine the location of the prediction block pointed to by the motion vector in one of the reference picture lists. In the present disclosure, improvements to inter-prediction (specifically, affine inter-prediction or sub-block-based inter-prediction) are accomplished by supporting multiple chrominance formats and refining the affine sub-block motion vector inference process. In particular, an improved method and apparatus for inferring a motion vector for affine inter-prediction of chrominance subblocks based on a chrominance format will be presented below.
Блок компенсации движения может также генерировать элементы синтаксиса, ассоциированные с блоками и слайсами видео, для использования видеодекодером 30 при декодировании блоков картинки видеослайса. В дополнение или в качестве альтернативы для слайсов и соответствующих элементов синтаксиса могут генерироваться или использоваться группы тайлов и/или тайлы и соответствующие элементы синтаксиса.The motion compensation block may also generate syntax elements associated with video blocks and slices for use by
Энтропийное кодированиеEntropy coding
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого способа или методологии энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров внешнего предсказания, параметров внутреннего предсказания, параметров контурного фильтра и/или других элементов синтаксиса для получения кодированных данных 21 картинки, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.The
Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для некоторых блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.Other changes to the structure of
Декодер и способ декодированияDecoder and decoding method
Фиг. 3 показывает пример видеодекодера 30, который выполнен с возможностью реализации методик настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 картинки (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированную картинку 331. Кодированные данные изображения или битовый поток содержит информацию для декодирования кодированных данных картинки, например, данных, которые представляют блоки картинки кодированного видеослайса (и/или тайлов или групп тайлов) и ассоциированные элементы синтаксиса.Fig. 3 shows an example of a
В примере на Фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных картинок, блок 360 применения режима, блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2.In the example in FIG. 3,
Как описано в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 344 внешнего предсказания и блок 354 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных картинок может быть идентичен по функции буферу 230 декодированных картинок. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.As described with respect to the
Энтропийное декодированиеEntropy Decoding
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, кодированных данных 21 картинки) и выполнения, например, энтропийного декодирования для кодированных данных 21 картинки, чтобы получить, например, квантованные коэффициенты 309 и/или параметры декодированного кодирования (не показаны на Фиг.3), например, любые или все из параметров внешнего предсказания (например, индекс опорной картинки и вектор движения), параметр внутреннего предсказания (например, индекс или режим внутреннего предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие элементы синтаксиса. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров внешнего предсказания, параметра внутреннего предсказания и/или других элементов синтаксиса блоку 360 применения режима и других параметров другим блокам декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне видеослайса и/или уровне видеоблока. В дополнение или в качестве альтернативы для слайсов и соответствующих элементов синтаксиса могут приниматься и/или использоваться группы тайлов и/или тайлы и соответствующие элементы синтаксиса.
Обратное квантованиеInverse quantization
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 картинки (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или тайле или группе тайлов), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.The
Обратное преобразованиеReverse conversion
Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также могут именоваться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 картинки (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311.The inverse
ВосстановлениеRecovery
Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.The reconstruction block 314 (e.g., add block or adder 314) may be configured to add the reconstructed residual block 313 with the prediction block 365 to obtain a reconstructed block 315 in the sample domain, for example by adding the sample values of the reconstructed residual block 313 and the sample values of the block 365 predictions.
ФильтрацияFiltration
Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 320 контурного фильтра показан на Фиг.3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.A loop filter block 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to produce a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality.
Буфер декодированных картинокBuffer of decoded pictures
Декодированные видеоблоки 321 картинки затем сохраняются в буфере 330 декодированных картинок, который сохраняет декодированные картинки 331 в качестве опорных картинок для последующей компенсации движения для других картинок и/или для вывода, соответственно, отображения.The decoded video picture blocks 321 are then stored in a decoded
Декодер 30 выполнен с возможностью вывода декодированной картинки 311, например, через вывод 312 для представления или просмотра пользователю.The
ПредсказаниеPrediction
Блок 344 внешнего предсказания может быть идентичен блоку 244 внешнего предсказания (в частности, блоку компенсации движения), а блок 354 внутреннего предсказания может быть идентичен блоку 254 внешнего предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 картинки (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутреннего или внешнего предсказания) для каждого блока на основе восстановленных картинок, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.The
Когда видеослайс кодируется как внутренне-кодируемый (I) слайс, блок 354 внутреннего предсказания блока 360 применения режима выполнен с возможностью генерирования блока 365 предсказания для блока картинки текущего видеослайса на основе просигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущей картинки. Когда видеокартинка кодируется как внешне-кодируемая (т.е. B или P) слайс, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 применения режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других элементов синтаксиса, принимаемых от блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть созданы из одной из опорных картинок в пределах одного из списков опорных картинок. Видеодекодер 30 может строить списки опорных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе опорных картинок, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.When a video slice is encoded as an intra-encoded (I) slice, an
Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других элементов синтаксиса, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (внутреннее или внешнее предсказание), используемого для кодирования видео блоков видеослайса, типа слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных картинок для слайса, векторов движения для каждого внешне-кодированного видеоблока слайса, статуса внешнего предсказания для каждого внешне-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.The mode applying unit 360 is configured to determine prediction information for a video block of the current video slice by parsing motion vectors or related information and other syntax elements, and uses the prediction information to create prediction blocks for the current video block to be decoded. For example, mode apply block 360 uses some of the received syntax elements to determine the prediction mode (intra or inter prediction) used to encode video blocks of a video slice, the type of inter prediction slice (e.g., B-slice, P-slice, or GPB slice), construction information for one or more reference picture lists for the slice, motion vectors for each outer-coded video block of the slice, inter-prediction status for each outer-coded video block of the slice, and other information for decoding the video blocks in the current video slice. The same or similar may apply to or through embodiments using tile groups (eg, video tile groups) and/or tiles (eg, video tiles) in addition to or alternatively to slices (eg, video slices), for example, video may be encoded with using groups of I, P or B tiles and/or tiles.
Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разбита на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).Embodiments of
Варианты осуществления видеодекодера 30, показанные на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования картинки с использованием групп тайлов (также называемых группами тайлов видео) и/или тайлов (также называемых видеотайлами), при этом картинка может быть разбита на или декодирована с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или фракционные блоки.Embodiments of
Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 картинки. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.Other embodiments of the
Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, выведения вектора движения или контурной фильтрации, дополнительная операция, такая как усечение или смещение, может выполняться над результатом обработки интерполяционной фильтрации, выведения вектора движения или контурной фильтрации.It should be understood that in the
Следует отметить, что дополнительные операции могут применяться к выведенным векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, 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 may be applied to the derived motion vectors of the current block (including, but not limited to, affine mode checkpoint motion vectors, affine mode, planar, ATMVP mode subblock motion vectors, temporary motion vectors, and the like). For example, the value of a motion vector is limited to a predefined range according to its representing 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 16, the range is -32768~32767; if bitDepth is 18, the range is -131072~131071. For example, the value of the derived motion vector (eg, the MV of four 4x4 sub-blocks in one 8x8 block) is limited such that the maximum difference between the whole portions of the MV of the four 4x4 sub-blocks is no more than N pixels, eg, no more than 1 pixel. Here are two ways to constrain the motion vector according to bitDepth.
Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операцийMethod 1: Removing MSB (Most Significant Bit) Overflow via 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 represents the horizontal component of the motion vector of a picture block or sub-block, mvy represents the vertical component of the motion vector of a picture block or sub-block, and ux and uy indicate an intermediate value;
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двойки. Дополнением до двойки для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двойки является 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 is 32767. In a computer system, decimal numbers are stored as two's complement. The two's complement for -32769 is 1,0111,1111,1111,1111 (17 bits), then the MSB is discarded, so the resulting two's complement is 0111,1111,1111,1111 (decimal is 32767), which is the same as the output from the application of 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) to (8).
Способ 2: удаление MSB переполнения посредством усечения значенияMethod 2: Remove MSB overflow by truncating 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 represents the horizontal component of the motion vector of the picture block or sub-block, vy represents the vertical component of the motion vector of the picture block or sub-block; x, y and z respectively correspond to the three input values of the MV clipping process, and the definition of the Clip3 function is as follows:
Clip3( x, y, z ) = Clip3( x, y, z ) =
Фиг. 4 является схематичным представлением устройства 400 видеокодирования согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30 по ФИГ. 1A, или кодером, таким как видеокодер 20 по ФИГ. 1А.Fig. 4 is a schematic diagram of a
Устройство 400 видеокодирования содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.The
Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), 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 с Фиг. 1 согласно примерному варианту осуществления. Fig. 5 is a simplified block diagram of
Процессор 502 в аппаратуре 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более одного процессора.The
Память 504 в аппаратуре 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способа. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодирования, которое выполняет описанные в данном документе способа.
Устройство 500 может также включать в себя одно или более устройств вывода, например, дисплей 518. Дисплей 518 может быть, в одном примере, чувствительным к касанию дисплеем, который объединяет дисплей с чувствительным к касанию элементом, способным считывать вводы касанием. Дисплей 518 может быть соединен с процессором 502 через шину 512.
Хотя здесь изображена как одна шина, шина 512 аппаратура 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами аппаратуры 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, аппаратура 500 может быть реализована в самых разнообразных конфигурациях.Although depicted here as a single bus,
Представленные здесь варианты осуществления будут описаны более подробно следующим образом. Источник видео, представленный потоком битов, может включать в себя последовательность картинок в порядке декодирования. Каждая из картинок (которая может быть исходной картинкой или декодированной картинкой) включает в себя один или несколько из следующих массивов выборок:The embodiments presented herein will be described in more detail as follows. The video source, represented by a bitstream, may include a sequence of pictures in decoding order. Each of the pictures (which may be the original picture or the decoded picture) includes one or more of the following sample arrays:
-- Только яркость (Y) (монохромная).-- Brightness (Y) only (monochrome).
- - Яркость и две цветности (YCbCr или YCgCo).- - Brightness and two chromaticities (YCbCr or YCgCo).
- - Зеленый, синий и красный (GBR, также известный как RGB).- - Green, Blue and Red (GBR, also known as RGB).
-- Массивы, представляющие другие неопределенные монохромные или трехцветные выборки цветов (например, YZX, также известные как XYZ).-- Arrays representing other undefined monochrome or tricolor color samples (for example, YZX, also known as XYZ).
Для удобства обозначений и терминологии в настоящем раскрытии, переменные и термины, ассоциированные с этими массивами, упоминаются как яркость (или L или Y) и цветность, где два массива цветности упоминаются как Cb и Cr.For convenience of notation and terminology in the present disclosure, the variables and terms associated with these arrays are referred to as luma (or L or Y) and chroma, where the two chroma arrays are referred to as Cb and Cr.
Фиг. 9A иллюстрирует расположение компоненты цветности в случае схемы дискретизации (выборки) 4: 2: 0. Примеры других схем дискретизации показаны на рис. 9B и 9C.Fig. 9A illustrates the location of the chrominance component in the case of a 4:2:0 sampling scheme. Examples of other sampling schemes are shown in Fig. 9B and 9C.
Как показано на фиг. 9A, в схеме дискретизации 4:2:0 может иметь место сдвиг между сетками компонент яркости и цветности. В блоке 2 × 2 пикселя компоненты цветности фактически сдвинуты на половину пикселя по вертикали по сравнению с компонентой яркости (см. Фиг. 9A). Такой сдвиг может влиять на фильтры интерполяции при понижении дискретизации картинки или при повышении дискретизации картинки. На фиг. 9D представлены различные шаблоны дискретизации (выборки) в случае чересстрочной картинки. Это означает, что также учитывается четность, то есть то, находятся ли пиксели в верхнем или нижнем полях чересстрочной картинки.As shown in FIG. 9A, in a 4:2:0 sampling scheme there may be a shift between the luma and chrominance component grids. In a 2×2 pixel block, the chrominance components are actually shifted vertically by half a pixel compared to the luminance component (see FIG. 9A). This shift can affect interpolation filters when downsampling an image or upsampling an image. In fig. 9D shows various sampling patterns in the case of an interlaced picture. This means that parity is also taken into account, that is, whether the pixels are in the top or bottom margins of the interlaced picture.
Согласно проекту спецификации универсального видеокодирования (VVC), специальный флаг «sps_cclm_colocated_chroma_flag» сигнализируется на уровне параметров последовательности. Флаг «sps_cclm_colocated_chroma_flag», равный 1, указывает, что верхняя левая субдискретизированная выборка яркости в межкомпонентном линейном моделировании внутреннего предсказания совмещена с верхней левой выборкой яркости. sps_cclm_colocated_chroma_flag, равное 0, указывает, что верхняя левая субдискретизированная выборка яркости в межкомпонентной линейной модели внутреннего предсказания совмещена по горизонтали с верхней левой выборкой яркости, но сдвинута по вертикали на 0,5 единицы выборкок яркости относительно верхней левой выборки яркости.According to the draft Versatile Video Coding (VVC) specification, a special flag "sps_cclm_colocated_chroma_flag" is signaled at the sequence parameter level. A flag "sps_cclm_colocated_chroma_flag" equal to 1 indicates that the top left subsampled luminance sample in the intra-prediction intercomponent linear modeling is colocated with the top left luminance sample. sps_cclm_colocated_chroma_flag equal to 0 indicates that the top left subsampled luminance sample in the intercomponent linear intra prediction model is horizontally colocated with the top left luminance sample, but shifted vertically by 0.5 luminance sample units relative to the top left luminance sample.
Аффинное предсказание с компенсацией движенияAffine prediction with motion compensation
В реальном мире существует множество видов движения, например увеличение/уменьшение, вращение, перспективные движения, поступательное движение и другие нерегулярные движения. В HEVC (ITU-T H.265) для предсказания компенсации движения (MCP) используется только модель движения смещения. В VVC применяется предсказание компенсации движения с аффинным преобразованием. Аффинное поле движения блока описывается двумя или тремя векторами движения контрольной точки (CPMV), которые соответствуют аффинной модели движения с четырьмя параметрами и аффинной модели движения с шестью параметрами соответственно. Положения CPMV для аффинной модели движения с 4 параметрами изображены на рис. 6a, а положения CPMV для аффинной модели движения с 6 параметрами изображены на рис. 6b.In the real world, there are many types of motion, such as zoom in/out, rotation, perspective motion, translational motion, and other irregular motions. In HEVC (ITU-T H.265), only the displacement motion model is used for motion compensation prediction (MCP). VVC uses motion compensation prediction with affine transformation. The affine motion field of a block is described by two or three control point motion vectors (CPMVs), which correspond to a four-parameter affine motion model and a six-parameter affine motion model, respectively. The CPMV positions for the 4-parameter affine motion model are depicted in Fig. 6a, and the CPMV positions for the affine motion model with 6 parameters are depicted in Fig. 6b.
В случае модели движения с 4 параметрами поле вектора движения (MVF) блока описывается следующим уравнением:In the case of a 4-parameter motion model, the motion vector field (MVF) of a block is described by the following equation:
(1) (1)
Где (v0x, v0y) - вектор движения контрольной точки верхнего левого угла, а (v1x, v1y) - вектор движения контрольной точки верхнего правого угла. (vx, vy) - вектор движения в заданном местоположении (x, y) в блоке. Проверка издержек искажения скорости (RDC) используется для определения какая пара векторов движения выбрана в качестве векторов движения контрольной точки текущего CU.Where (v 0x , v 0y ) is the movement vector of the control point of the upper left corner, and (v 1x , v 1y ) is the movement vector of the control point of the upper right corner. (v x , v y ) is the motion vector at a given location (x, y) in the block. The Rate Distortion Overhead (RDC) check is used to determine which pair of motion vectors is selected as the reference point motion vectors of the current CU.
CPMV могут быть выведены на основе информации движении соседних блоков (например, в процессе режима слияния субблоков). Альтернативно или дополнительно, CPMV могут быть получены путем выведения предикторов CPMV (CPMVP) и получения разницы между CPMV и CPMVP из потока битов.CPMVs can be inferred based on the movement information of neighboring blocks (for example, during the subblock merging mode). Alternatively or additionally, CPMVs can be obtained by deriving CPMV predictors (CPMVPs) and obtaining the difference between CPMVs and CPMVPs from the bitstream.
Чтобы упростить предсказание компенсации движения, применяется аффинное предсказание преобразования на основе блоков. Например, чтобы вывести вектор движения каждого субблока 4 × 4, вектор движения центральной выборки каждого субблока, как показано на фиг.7, вычисляется согласно приведенному выше уравнению (1) и округляется с точностью до 1/16 доли. Фильтры интерполяции компенсации движения применяются для генерации предсказания каждого субблока с выведенным вектором движения.To simplify motion compensation prediction, block-based affine transformation prediction is applied. For example, to output the motion vector of each 4 × 4 sub-block, the motion vector of the center sample of each sub-block as shown in FIG. 7 is calculated according to the above equation (1) and rounded to the nearest 1/16th. Motion compensation interpolation filters are applied to generate a prediction of each sub-block with the derived motion vector.
После предсказания компенсации движения (MCP) вектор движения с более высокой точностью для каждого субблока округляется и сохраняется с той же точностью, что и нормальный вектор движения, с точностью ¼.After motion compensation prediction (MCP), the higher precision motion vector for each sub-block is rounded and stored with the same precision as the normal motion vector, with ¼ precision.
Фиг. 8 показывает пример блок-схемы, изображающей процесс 800 для аффинного внешнего предсказания (то есть компенсации движения с использованием аффинной модели движения). Процесс 800 может включать в себя следующие этапы:Fig. 8 shows an example flowchart depicting a
На этапе 810 выполняется вывод вектора движения контрольной точки для генерации векторов движения контрольной точки cpMvLX [cpIdx];At
На этапе 830 выполняется вывод массива векторов движения для создания массива mvLX [xSbIdx] [ySbIdx] векторов движения субблоков яркости и массива mvCLX [xSbIdx] [ySbIdx] векторов движения субблоков цветности. Этап 830 может включать в себя:At
Этап 831, где выполняется вывод массива векторов движения яркости, чтобы сгенерировать массив mvLX [xSbIdx] [ySbIdx] векторов движения субблока яркости;
Этап 833, где выполняется вывод массива векторов движения цветности для генерации массива mvCLX [xSbIdx] [ySbIdx] векторов движения субблока цветности;
На этапе 850 выполняется процесс интерполяции, чтобы сгенерировать предсказание каждого субблока с выведенным вектором движения, то есть массив predSamples выборок предсказания.At
Представленные здесь варианты осуществления в основном сосредоточены на этапе 833 для вывода массива векторов движения цветности (этот блок выделен жирным шрифтом на фиг.8).The embodiments presented here primarily focus on
Детали процесса выведения вектора движения цветности в предыдущем исполнении (традиционным способом) описываются следующим образом:The details of the chroma motion vector derivation process in the previous design (traditional way) are described as follows:
Входные данные для этого процесса (вывод массива векторов движения цветности) включают в себя:The inputs to this process (output of an array of chroma motion vectors) include:
массив mvLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 векторов движения субблока яркости и X равным 0 или 1array mvLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 of luminance subblock motion vectors and X equal to 0 or 1
Коэффициент дискретизации цветности по горизонтали, SubWidthCHorizontal chroma sampling factor, SubWidthC
Коэффициент дискретизации цветности по вертикали, SubHeightCVertical chroma sampling factor, SubHeightC
Выходные данные:Output:
массив mvCLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 векторов движения субблока цветности и X равным 0 или 1.array mvCLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 chroma subblock motion vectors and X equal to 0 or 1.
Этот процесс реализован следующим образом:This process is implemented as follows:
Средний вектор mvAvgLX движения яркости выводится следующим образом:The average luminance motion vector mvAvgLX is derived as follows:
mvAvgLX = mvLX[ ( xSbIdx >> 1 << 1) ][ (ySbIdx>>1<<1) ] + mvAvgLX = mvLX[ ( xSbIdx >> 1 << 1) ][ (ySbIdx>>1<<1) ] +
mvLX[ ( xSbIdx >> 1 << 1 ) + 1 ][ (ySbIdx>>1<<1) + 1 ] (2)mvLX[ ( xSbIdx >> 1 << 1 ) + 1 ][ (ySbIdx>>1<<1) + 1 ] (2)
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :
- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) ) (3)- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) ) (3)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 : mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :
- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) ) (4)- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) ) (4)
- - Масштабирование mvAvgLX в соответствии со значением refIdxLX опорного индекса. Конкретно,- - Scaling mvAvgLX according to the refIdxLX value of the reference index. Specifically,
Если опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, не является текущей картинкой, применяется следующее:If the reference picture corresponding to refIdxLX for the current encoding unit is not the current picture, the following applies:
mvCLX [0] = mvLX [0] * 2/SubWidthCmvCLX[0] = mvLX[0] * 2/SubWidthC
mvCLX [1] = mvLX [1] * 2/SubHeightCmvCLX[1] = mvLX[1] * 2/SubHeightC
В противном случае (опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, является текущей картинкой), применяется следующее:Otherwise (the reference picture corresponding to refIdxLX for the current encoding unit is the current picture), the following applies:
mvCLX [0] = ((mvLX [0] >> (3+SubWidthC)) * 32mvCLX [0] = ((mvLX [0] >> (3+SubWidthC)) * 32
mvCLX [1] = ((mvLX [1] >> (3+SubHeightC)) * 32mvCLX [1] = ((mvLX [1] >> (3+SubHeightC)) * 32
В приведенной выше схеме при вычислении mvAvgLX не учитывается подвыборка цветности. Это приводит к неточной оценке поля движения для случаев, когда одна из переменных SubWidthC и SubHeightC равна 1.In the above scheme, the chroma subsampling is not taken into account when calculating mvAvgLX. This leads to an inaccurate estimate of the motion field for cases where one of the variables SubWidthC and SubHeightC is equal to 1.
Варианты осуществления настоящего изобретения решают эту проблему путем подвыборки поля движения яркости на основе формата цветности картинки, тем самым повышая точность поля движения цветности. Более конкретно, варианты осуществления настоящего изобретения раскрывают способ учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов движения яркости выполняется линейная подвыборка поля движения яркости. Выбор векторов движения яркости на основе формата цветности картинки приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие блоки яркости при усреднении векторов движения яркости. Как следствие более точной интерполяции поля движения, ошибка прогнозирования уменьшается, что дает технический результат повышения эффективности сжатия.Embodiments of the present invention solve this problem by subsampling the luminance motion field based on the chroma format of the picture, thereby improving the accuracy of the chroma motion field. More specifically, embodiments of the present invention disclose a method for taking into account the chrominance format of a picture when deriving chroma motion vectors from luminance motion vectors. By averaging the luminance motion vectors, a linear subsampling of the luminance motion field is performed. Selecting luminance motion vectors based on the picture's chroma format results in a more accurate chroma motion field due to more accurate subsampling of the luminance motion vector field. This dependence on the chroma format allows the selection of the most appropriate luminance blocks when averaging the luminance motion vectors. As a consequence of more accurate interpolation of the motion field, the prediction error is reduced, which gives the technical result of increasing compression efficiency.
В одной примерной реализации таблица 1-1 показывает форматы цветности, которые могут поддерживаться в настоящем раскрытии. Информация формата цветности, такая как chroma_format_idc и/или own_colour_plane_flag, может использоваться для определения значений переменных SubWidthC и SubHeightC.In one exemplary implementation, Table 1-1 shows the chrominance formats that may be supported in the present disclosure. Chroma format information, such as chroma_format_idc and/or own_colour_plane_flag, can be used to determine the values of the SubWidthC and SubHeightC variables.
Таблица 1-1.Table 1-1.
chroma_format_idc определяет выборку цветности относительно выборки яркости. Значение chroma_format_idc должно быть в диапазоне от 0 до 3 включительно.chroma_format_idc specifies the chroma sample relative to the luma sample. The chroma_format_idc value must be in the
separate_colour_plane_flag, равный 1, указывает, что три цветовых компоненты формата цветности 4: 4: 4 кодируются отдельно. separate_colour_plane_flag, равный 0, указывает, что компоненты цвета не кодируются отдельно. Когда separate_colour_plane_flag отсутствует, предполагается, что он равен 0. Когда separate_colour_plane_flag равен 1, кодированная картинка состоит из трех отдельных компонент, каждая из которых состоит из кодированных выборок одной цветовой плоскости (Y, Cb или Cr) и использует синтаксис монохромного кодирования.separate_colour_plane_flag equal to 1 indicates that the three color components of the 4:4:4 chroma format are encoded separately. separate_colour_plane_flag equal to 0 indicates that color components are not encoded separately. When separate_colour_plane_flag is absent, it is assumed to be 0. When separate_colour_plane_flag is 1, the encoded picture consists of three separate components, each consisting of encoded samples of a single color plane (Y, Cb, or Cr) and using monochrome encoding syntax.
Chroma format (Формат цветности) определяет приоритет и субдискретизацию массивов цветности;Chroma format determines the priority and subsampling of chroma arrays;
В монохромной выборке есть только один массив выборок, который номинально считается массивом яркости.In a monochrome sample there is only one sample array, which is nominally considered the luma array.
При выборке 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости, как показано на рис. 9А.With 4:2:0 sampling, each of the two chroma arrays has half the height and half the width of the lumina array, as shown in Figure 1. 9A.
При выборке 4:2:2 каждый из двух массивов цветности имеет одинаковую высоту и половину ширины массива яркости, как показано на рис. 9B.With 4:2:2 sampling, each of the two chroma arrays has the same height and half the width of the lumina array, as shown in Fig. 9B.
При выборке 4:4:4, в зависимости от значения own_colour_plane_flag, применяется следующее:When sampling 4:4:4, depending on the value of own_colour_plane_flag, the following applies:
-- Если separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет ту же высоту и ширину, что и массив яркости, как показано на рис. 9C.-- If separate_colour_plane_flag is 0, each of the two chroma arrays has the same height and width as the luma array, as shown in Fig. 9C.
-- В противном случае (separate_colour_plane_flag равен 1) три цветовые плоскости обрабатываются отдельно как монохромные дискретизированные картинки.-- Otherwise (separate_colour_plane_flag is 1), the three color planes are treated separately as monochrome sampled pictures.
В других примерных реализациях Таблица 1-2 также показывает форматы цветности, которые могут поддерживаться в настоящем раскрытии. Информация формата цветности, такая как chroma_format_idc и/или own_colour_plane_flag, может использоваться для определения значений переменных SubWidthC и SubHeightC.In other example implementations, Table 1-2 also shows the chroma formats that may be supported in the present disclosure. Chroma format information, such as chroma_format_idc and/or own_colour_plane_flag, can be used to determine the values of the SubWidthC and SubHeightC variables.
Таблица 1-2.Table 1-2.
Количество битов, необходимых для представления каждой из выборок в массивах яркости и цветности в видеопоследовательности, находится в диапазоне от 8 до 16 включительно, а количество битов, используемых в массиве яркости, может отличаться от количества битов, используемых в массивах цветности.The number of bits required to represent each of the samples in the luma and chrominance arrays in a video sequence ranges from 8 to 16, inclusive, and the number of bits used in the luma array may differ from the number of bits used in the chrominance arrays.
Когда значение chroma_format_idc равно 1, номинальные вертикальные и горизонтальные относительные местоположения выборок яркости и цветности в картинках показаны на фиг. 9A. Альтернативные относительные местоположения выборок цветности могут быть указаны в информации о пригодности видео.When the value of chroma_format_idc is 1, the nominal vertical and horizontal relative locations of luma and chrominance samples in pictures are shown in FIG. 9A. Alternative relative locations of the chroma samples may be specified in the video availability information.
Когда значение chroma_format_idc равно 2, выборки цветности совмещаются с соответствующими выборками яркости, а номинальные местоположения в картинке такие, как показано на фиг. 9B.When the value of chroma_format_idc is 2, the chroma samples are combined with the corresponding luma samples, and the nominal locations in the picture are as shown in FIG. 9B.
Когда значение chroma_format_idc равно 3, все выборки массива совмещаются для всех случаев картинок, а номинальные местоположения в картинке такие, как показано на фиг. 9C.When the value of chroma_format_idc is 3, all array samples are combined for all picture cases, and the nominal locations in the picture are as shown in FIG. 9C.
В одной примерной реализации переменные SubWidthC и SubHeightC указаны в таблице 1-1 или 1-2, в зависимости от структуры выборки формата цветности, которая задается через chroma_format_idc и own_colour_plane_flag. Можно понять, что информация формата цветности, такая как структура выборки формата цветности, указывается через chroma_format_idc и own_colour_plane_flag.In one example implementation, the SubWidthC and SubHeightC variables are listed in Table 1-1 or 1-2, depending on the chroma format sampling structure, which is specified via chroma_format_idc and own_colour_plane_flag. It can be understood that chroma format information such as a chroma format sampling structure is indicated through chroma_format_idc and own_colour_plane_flag.
В отличие от предыдущего исполнения, в настоящем раскрытии изобретения определение позиций в массиве векторов движения субблока яркости может применяться для различных форматов цветности и зависит от значения коэффициента масштабирования цветности (например, SubWidthC и SubHeightC). Следует понимать, что «коэффициент масштабирования цветности в горизонтальном и вертикальном направлениях» также может упоминаться как «коэффициент дискретизации цветности в горизонтальном и вертикальном направлениях».Unlike the previous embodiment, in the present disclosure, the determination of positions in the motion vector array of the luminance subblock can be applied to different chroma formats and depends on the value of the chroma scaling factor (eg, SubWidthC and SubHeightC). It should be understood that the “horizontal and vertical direction chroma scaling factor” may also be referred to as the “horizontal and vertical direction chroma sampling factor”.
В качестве альтернативы, в другой примерной реализации SubWidthC и SubHeightC могут быть определены как SubWidthC = (1 + log2(wluma)-log2(wchroma)) and SubHeightC = (1 + log2(hluma)-log2(hchroma)), где wluma и hluma - ширина и высота массива яркости соответственно, а wchroma и hchroma - ширина и высота массива цветности соответственно.Alternatively, in another example implementation, SubWidthC and SubHeightC could be defined as SubWidthC = (1 + log2(wluma)-log2(wchroma)) and SubHeightC = (1 + log2(hluma)-log2(hchroma)), where wluma And hluma are the width and height of the brightness array, respectively, and wchroma And hchroma- width and the height of the chroma array, respectively.
В возможных реализациях некоторых вариантов осуществления настоящего раскрытия для заданного формата цветности процесс определения позиций или индексов в массиве вектора движения яркости для данного индекса совместно расположенного субблока цветности может выполняться следующим образом:In possible implementations of some embodiments of the present disclosure, for a given chroma format, the process of determining positions or indices in the luminance motion vector array for a given index of a co-located chroma subblock may be performed as follows:
Вначале значения SubWidthC и SubHeightC определяются на основе формата цветности в настоящий момент кодируемой или декодируемой картинки (или кадра).First, the values of SubWidthC and SubHeightC are determined based on the chromaticity format of the currently encoded or decoded picture (or frame).
Затем для каждой из пространственных позиций цветности, указанных индексами xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 и X, равным 0 или 1, значение вектора движения цветности сохраняется как соответствующий элемент mvCLX. Этапы для определения вектора движения цветности следующие:Then, for each of the spatial chroma positions indicated by the indices xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 and X equal to 0 or 1, the chroma motion vector value is stored as a corresponding mvCLX element. The steps to determine the chroma motion vector are as follows:
Первый этап - выполнить округление, чтобы определить индексы x и y совместно расположенного субблока яркости:The first step is to perform a rounding to determine the x and y indices of the co-located luminance subblock:
xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);xSbIdx L = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);
ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).ySbIdx L = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).
Второй этап - определить набор позиций субблока яркости, которые дополнительно определяют вектор движения цветности. Возможный пример определения такого набора S может быть описан ниже:The second step is to define a set of luma subblock positions that further define the chrominance motion vector. A possible example of defining such a set S can be described below:
S0 = (xSbIdxL, ySbIdxL)S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1))S1 = (xSbIdxL + (SubWidthC- 1), ySbIdxL + (SubHeightC-1))
Третий этап - вычислить средний вектор mvAvgLX:The third step is to calculate the average vector mvAvgLX:
Когда набор S содержит N элементов, N является степенью двойки, в одной примерной реализации вектор движения mvAvgLX определяется следующим образом:When a set S contains N elements, N is a power of two, in one example implementation the motion vector mvAvgLX is defined as follows:
- mvAvgLX = - mvAvgLX =
- mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)- mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
- mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N)- mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N)
где и координаты x и y позиции Si.Where And x and y coordinates of position S i .
Подводя итог, в одной примерной реализации определение среднего вектора mvAvgLX для усреднения можно сформулировать следующим образом:To summarize, in one example implementation, the definition of the mean vector mvAvgLX for averaging can be formulated as follows:
mvAvgLX = mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]mvAvgLX = mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]+[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]+
mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1)]mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1)]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)] (уравнение 1)[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)] (Equation 1)
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N) (уравнение 2)mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N) (Equation 2)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N) (уравнение 3)mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N) (Equation 3)
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована в различных реализациях.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in various implementations.
Следует понимать, что, хотя вышеописанный процесс описывается как трехэтапный процесс, определение среднего вектора mvAvgLX, как сформулировано выше в уравнении 1- 3 могут выполняться в любом порядке.It should be understood that although the above process is described as a three-step process, the determination of the average vector mvAvgLX as stated above in Equation 1-3 can be performed in any order.
В другой примерной реализации третий этап также может быть реализован следующим образом:In another exemplary implementation, the third step could also be implemented as follows:
mvAvgLX = mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + N>>1) >> log2(N) :mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + N>>1) >> log2(N) :
- ( (- mvAvgLX[ 0 ] + N>>1 ) >> log2(N) ) (5)- ( (- mvAvgLX[ 0 ] + N>>1 ) >> log2(N) ) (5)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + N>>1) >> log2(N) : mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + N>>1) >> log2(N) :
- ( (- mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ) ) (6)- ( (- mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ) ) (6)
где и координаты x и y позиции Si.Where And x and y coordinates of position S i .
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована в различных реализациях.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in various implementations.
Следующим этапом является масштабирование mvAvgLX в соответствии со значением опорного индекса refIdxLX. В некоторых примерах процесс масштабирования выполняется следующим образом путем замены mvLX на mvAvgLX (т.е. mvLX [0] будет заменен на mvAvgLX [0], а mvLX [1] будет заменен на mvAvgLX [1]):The next step is to scale mvAvgLX according to the reference index value refIdxLX. In some examples, the scaling process is performed as follows by replacing mvLX with mvAvgLX (i.e. mvLX[0] will be replaced with mvAvgLX[0], and mvLX[1] will be replaced with mvAvgLX[1]):
Если опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, не является текущей картинкой, применяется следующее:If the reference picture corresponding to refIdxLX for the current encoding unit is not the current picture, the following applies:
mvCLX [0] = mvLX [0] * 2/SubWidthCmvCLX[0] = mvLX[0] * 2/SubWidthC
mvCLX [1] = mvLX [1] * 2/SubHeightCmvCLX[1] = mvLX[1] * 2/SubHeightC
В противном случае (опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, является текущей картинкой), применяется следующее:Otherwise (the reference picture corresponding to refIdxLX for the current encoding unit is the current picture), the following applies:
mvCLX[0]=((mvLX[0]>>(3 + SubWidthC ) ) * 32mvCLX[0]=((mvLX[0]>>(3 + SubWidthC ) ) * 32
mvCLX[1]=((mvLX[1]>>(3 + SubHeightC ) ) * 32mvCLX[1]=((mvLX[1]>>(3 + SubHeightC ) ) * 32
Аналогичным образом, процесс вывода векторов движения цветности в пункте 8.5.2.13, описанный ниже, может быть вызван с mvAvgLX и refIdxLX в качестве входных данных и с массивом векторов движения цветности mvCLXSub [xCSbIdx] [yCSbIdx] в качестве выходных данных. В процессе, описанном в пункте 8.5.2.13, mvLX будет заменен на mvAvgLX, и, в частности, mvLX [0] будет заменен на mvAvgLX [0], а mvLX [1] будет заменен на mvAvgLX [1].Similarly, the chroma motion vector inference process in clause 8.5.2.13 described below can be called with mvAvgLX and refIdxLX as input and with the chroma motion vector array mvCLXSub[xCSbIdx][yCSbIdx] as output. In the process described in clause 8.5.2.13, mvLX will be replaced by mvAvgLX, and in particular, mvLX[0] will be replaced by mvAvgLX[0], and mvLX[1] will be replaced by mvAvgLX[1].
Подробности возможных реализаций вычисления среднего вектора mvAvgLX в процессе вывода вектора движения цветности предлагаемого способа описаны ниже в формате модификации спецификации проекта VVC. Есть несколько вариантов этого процесса.Details of possible implementations of calculating the average vector mvAvgLX in the process of deriving the chroma motion vector of the proposed method are described below in the format of a modification of the VVC project specification. There are several variations of this process.
1. Один из вариантов вычисления среднего вектора mvAvgLX в процессе вывода вектора движения цветности предлагаемого способа можно описать следующим образом в формате модификации спецификации проекта VVC :1. One of the options for calculating the average vector mvAvgLX in the process of outputting the chroma motion vector of the proposed method can be described as follows in the format of a modification of the VVC project specification:
…...
Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:
mvAvgLX =mvAvgLX =
mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]
[ ( ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] + [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] +
mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + ( 1 >> ( 2 - SubWidthC))]mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + ( 1 >> ( 2 - SubWidthC))]
[ ( ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1) ) + (1 >> (2 - SubHeightC))] [ ( ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1) ) + (1 >> (2 - SubHeightC))]
Пояснительные примечания: Вышеприведенное уравнение показывает пример выбора векторов движения яркости для вычисления среднего вектора движения (например, выбор позиций субблока яркости для данной позиции субблока цветности). Выбранные субблоки яркости (и, следовательно, их соответствующие позиции) представлены их соответствующими индексами субблока в горизонтальном и вертикальном направлениях. Например, как показано выше, для данного субблока цветности (xSbIdx, ySbIdx), где xSbIdx и ySbIdx - индексы субблока для субблока цветности в горизонтальном и вертикальном направлении, соответственно, два субблока яркости (и, следовательно, их соответствующие позиции, например, их соответствующие индексы субблока) могут быть выбраны. Один из двух выбранных субблоков яркости может быть представлен индексом субблока в горизонтальном направлении как [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] и индексом субблока в вертикальном направлении как [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]. Другой выбранный субблок яркости может быть представлен индексом субблока в горизонтальном направлении как [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (2 - SubWidthC))] и индексом субблока в вертикальном направлении как [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + (1 >> (2 - SubHeightC))]). Соответственно, выбор блоков яркости для усреднения векторов движения яркости зависит от формата цветности картинки. В частности, выбор блоков яркости для усреднения векторов движения яркости зависит от коэффициентов SubWidthC и SubHeightC масштабирования цветности, которые определяются на основе формата цветности картинки // Explanatory Notes: The above equation shows an example of selecting luma motion vectors to calculate the average motion vector (eg, selecting luma subblock positions for a given chrominance subblock position). The selected luma subblocks (and hence their corresponding positions) are represented by their corresponding subblock indices in the horizontal and vertical directions. For example, as shown above, for a given chrominance subblock (xSbIdx, ySbIdx), where xSbIdx and ySbIdx are the subblock indices for the chrominance subblock in the horizontal and vertical directions, respectively, the two luma subblocks (and hence their respective positions, e.g. their respective subblock indices) can be selected. One of the two selected luma subblocks can be represented by a subblock index in the horizontal direction as [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] and a subblock index in the vertical direction as [(ySbIdx >> (SubHeightC - 1) ) << (SubHeightC - 1))]. Another selected luma subblock can be represented by a subblock index in the horizontal direction as [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (2 - SubWidthC))] and a subblock index in the vertical direction as [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + (1 >> (2 - SubHeightC))]). Accordingly, the choice of brightness blocks for averaging brightness motion vectors depends on the color format of the picture. In particular, the choice of luminance blocks for averaging luminance motion vectors depends on the chrominance scaling coefficients SubWidthC and SubHeightC, which are determined based on the chrominance format of the picture //
Полученный выше mvAvgLX может быть дополнительно обработан:The mvAvgLX obtained above can be further processed:
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :
- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :
- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована по-разному.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in different ways.
-- Процесс вывода векторов движения цветности в пункте 8.5.2.13, представленный далее в этом раскрытии, вызывается с mvAvgLX и refIdxLX в качестве входных данных и вектором движения цветности mvCLX [xSbIdx] [ySbIdx] в качестве выходных данных.-- The chroma motion vector inference process in clause 8.5.2.13, presented later in this disclosure, is called with mvAvgLX and refIdxLX as input and the chroma motion vector mvCLX [xSbIdx] [ySbIdx] as output.
…...
2. Другой вариант вычисления среднего вектора mvAvgLX в процессе вывода вектора движения цветности предлагаемого способа можно описать следующим образом в формате модификации спецификации проекта VVC:2. Another option for calculating the average vector mvAvgLX in the process of chroma motion vector output of the proposed method can be described as follows in the format of a modification of the VVC project specification:
…...
Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:
mvAvgLX =mvAvgLX =
mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] + [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] +
mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (4 - SubWidthC - SubHeightC))]mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (4 - SubWidthC - SubHeightC))]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + ( 1 >> (4 - SubWidthC - SubHeightC))][(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + ( 1 >> (4 - SubWidthC - SubHeightC))]
// Пояснительные примечания: вышеприведенное уравнение показывает пример выбора векторов движения яркости для вычисления среднего вектора движения (например, выбор позиций субблока яркости для данной позиции субблока цветности). Выбранные субблоки яркости (и, следовательно, их соответствующие позиции) представлены их соответствующими индексами субблока в горизонтальном и вертикальном направлениях. Например, как показано выше, для данного субблока цветности (xSbIdx, ySbIdx), где xSbIdx и ySbIdx - индексы субблока для субблока цветности в горизонтальном и вертикальном направлении, соответственно, два субблока яркости (и, следовательно, их соответствующие позиции, например, их соответствующие индексы субблока) могут быть выбраны. Один из двух выбранных субблоков яркости может быть представлен индексом субблока в горизонтальном направлении как [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) ] и индексом субблока в вертикальном направлении как [( ySbIdx >> (SubHeightC 1) << (SubHeightC 1) ) ]. Другой выбранный субблок яркости может быть представлен индексом субблока в горизонтальном направлении как [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC) )] и индекс субблока в вертикальном направлении как [( ySbIdx >> (SubHeightC 1) << (SubHeightC - 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC ) )]) . Соответственно, выбор блоков яркости для усреднения векторов движения яркости зависит от формата цветности картинки. В частности, выбор блоков яркости для усреднения векторов движения яркости зависит от коэффициентов масштабирования цветности SubWidthC и SubHeightC, которые определяются на основе формата цветности картинки //// Explanatory Notes: The above equation shows an example of selecting luma motion vectors to calculate the average motion vector (eg, selecting luma subblock positions for a given chrominance subblock position). The selected luma subblocks (and hence their corresponding positions) are represented by their corresponding subblock indices in the horizontal and vertical directions. For example, as shown above, for a given chrominance subblock (xSbIdx, ySbIdx), where xSbIdx and ySbIdx are the subblock indices for the chrominance subblock in the horizontal and vertical directions, respectively, the two luma subblocks (and hence their respective positions, e.g. their respective subblock indices) can be selected. One of the two selected luma subblocks can be represented by a subblock index in the horizontal direction as [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) ] and a subblock index in the vertical direction as [( ySbIdx >> (SubHeightC 1) << (SubHeightC 1) )]. Another selected luma subblock can be represented by the subblock index in the horizontal direction as [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC) )] and the subblock index in the vertical direction as [( ySbIdx >> (SubHeightC 1) << (SubHeightC - 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC ) )]) . Accordingly, the choice of brightness blocks for averaging brightness motion vectors depends on the color format of the picture. In particular, the choice of luminance blocks for averaging luminance motion vectors depends on the chromaticity scaling factors SubWidthC and SubHeightC, which are determined based on the chromaticity format of the picture //
По сравнению с первым вариантом в этом варианте используются разные способы определения набора субблоков яркости. В частности, 1 >> ( 4 - SubWidthC - SubHeightC) используется для определения индекса второго субблока яркости (соседнего субблока яркости для первого субблока яркости) в этом варианте, тогда как 1 >> ( 2 - SubWidthC ) и 1 >> ( 2 - SubHeightC ) используются в первом варианте. В первом варианте сам первый субблок яркости, его диагональный сосед или его горизонтальный сосед могут использоваться в качестве второго субблока. Во втором варианте либо сам первый субблок яркости, либо его диагональный сосед может использоваться в качестве второго субблока яркости в зависимости от значений коэффициента масштабирования цветности.Compared to the first embodiment, this embodiment uses different methods to determine the set of luminance subblocks. Specifically, 1 >> ( 4 - SubWidthC - SubHeightC ) is used to determine the index of the second luminance subblock (the adjacent luminance subblock to the first luminance subblock) in this embodiment, whereas 1 >> ( 2 - SubWidthC ) and 1 >> ( 2 - SubHeightC ) are used in the first option. In a first embodiment, the first luminance subblock itself, its diagonal neighbor, or its horizontal neighbor may be used as the second subblock. In the second embodiment, either the first luma subblock itself or its diagonal neighbor can be used as the second luma subblock depending on the chroma scaling factor values.
Полученный выше mvAvgLX может быть дополнительно обработан:The mvAvgLX obtained above can be further processed:
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :
- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :
- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )
- Процесс вывода векторов движения цветности в пункте 8.5.2.13 вызывается с mvAvgLX и refIdxLX в качестве входных данных и вектором движения цветности mvCLX [xSbIdx] [ySbIdx] в качестве выходных данных.- The chroma motion vector inference process in clause 8.5.2.13 is called with mvAvgLX and refIdxLX as inputs and the chroma motion vector mvCLX [xSbIdx] [ySbIdx] as output.
…...
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована по-разному.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in different ways.
3. Другой вариант процесса вывода вектора движения цветности предложенного способа можно описать следующим образом в формате модификации спецификации проекта VVC:3. Another version of the chroma motion vector output process of the proposed method can be described as follows in the format of a modification of the VVC project specification:
…...
Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:
mvAvgLX = mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]mvAvgLX = mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))][(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]
-- Процесс вывода векторов движения цветности в пункте 8.5.2.13 вызывается с mvAvgLX и refIdxLX в качестве входных данных и вектором движения цветности mvCLX [xSbIdx] [ySbIdx] в качестве выходных данных.-- The chroma motion vector inference process in clause 8.5.2.13 is called with mvAvgLX and refIdxLX as input and the chroma motion vector mvCLX [xSbIdx] [ySbIdx] as output.
…...
4. Другой вариант процесса вывода вектора движения цветности предлагаемого способа можно описать следующим образом в формате модификации спецификации проекта VVC:4. Another variant of the chroma motion vector inference process of the proposed method can be described as follows in the format of a modification of the VVC design specification:
…...
Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:
Если SubWidthC == 1 и SubHeightC == 1:If SubWidthC == 1 and SubHeightC == 1:
mvAvgLX=mvLX [xSbIdx] [ySbIdx]mvAvgLX=mvLX [xSbIdx] [ySbIdx]
иначеotherwise
xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);
ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).
mvAvgLX = mvLX[xSbIdxL ][ySbIdxL ]+ mvLX[xSbIdxL + (SubWidthC-1)][ySbIdxL+(SubHeightC-1)]mvAvgLX = mvLX[xSbIdxL ][ySbIdxL ]+ mvLX[xSbIdxL + (SubWidthC-1)][ySbIdxL+(SubHeightC-1)]
// Пояснительные примечания: вышеприведенное уравнение показывает пример выбора векторов движения яркости для вычисления среднего вектора движения (например, выбор позиций субблока яркости для данной позиции субблока цветности). Выбранные субблоки яркости (и, следовательно, их соответствующие позиции) представлены их соответствующими индексами субблока в горизонтальном и вертикальном направлениях. Например, как показано выше, для данного субблока цветности (xSbIdx, ySbIdx), где xSbIdx и ySbIdx - индексы субблока для субблока цветности в горизонтальном и вертикальном направлении, соответственно, два субблока яркости (и, следовательно, их соответствующие позиции, например, их соответствующие индексы субблока) могут быть выбраны. Один из двух выбранных субблоков яркости может быть представлен индексом субблока в горизонтальном направлении как [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] и индексом субблока в вертикальном направлении как [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]; Другой выбранный субблок яркости может быть представлен индексом субблока в горизонтальном направлении как [( xSbIdx >> (SubWidthC - 1 ) << ( SubWidthC - 1) ) + ( SubWidthC - 1 )] и индексом субблока в вертикальном направлении как [( ySbIdx >> ( SubHeightC - 1 ) << ( SubHeightC - 1 ) ) + ( SubHeightC - 1 )]). Соответственно, выбор блоков яркости для усреднения векторов движения яркости зависит от формата цветности картинки. В частности, выбор блоков яркости для усреднения векторов движения яркости зависит от коэффициентов SubWidthC и SubHeightC масштабирования цветности, которые определяются на основе формата цветности картинки //// Explanatory Notes: The above equation shows an example of selecting luma motion vectors to calculate the average motion vector (eg, selecting luma subblock positions for a given chrominance subblock position). The selected luma subblocks (and hence their corresponding positions) are represented by their corresponding subblock indices in the horizontal and vertical directions. For example, as shown above, for a given chrominance subblock (xSbIdx, ySbIdx), where xSbIdx and ySbIdx are the subblock indices for the chrominance subblock in the horizontal and vertical directions, respectively, the two luma subblocks (and hence their respective positions, e.g. their respective subblock indices) can be selected. One of the two selected luma subblocks can be represented by a subblock index in the horizontal direction as [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] and a subblock index in the vertical direction as [(ySbIdx >> (SubHeightC - 1) ) << (SubHeightC - 1))]; Another selected luminance subblock can be represented by a subblock index in the horizontal direction as [( xSbIdx >> (SubWidthC - 1 ) << ( SubWidthC - 1 ) ) + ( SubWidthC - 1 )] and a subblock index in the vertical direction as [( ySbIdx >> ( SubHeightC - 1 ) << ( SubHeightC - 1 ) ) + ( SubHeightC - 1 )]). Accordingly, the choice of brightness blocks for averaging brightness motion vectors depends on the color format of the picture. In particular, the choice of luminance blocks for averaging luminance motion vectors depends on the chrominance scaling coefficients SubWidthC and SubHeightC, which are determined based on the chrominance format of the picture //
Полученный выше mvAvgLX может быть дополнительно обработан:The mvAvgLX obtained above can be further processed:
mvAvgLX[0] = mvAvgLX[0]>=0 ? mvAvgLX[0] >> 1 : -(( -mvAvgLX[0]) >> 1)mvAvgLX[0] = mvAvgLX[0]>=0 ? mvAvgLX[0] >> 1 : -(( -mvAvgLX[0]) >> 1)
mvAvgLX[1] = mvAvgLX[1]>= 0 ? mvAvgLX[1] >> 1 : -(( -mvAvgLX[1]) >> 1)mvAvgLX[1] = mvAvgLX[1]>= 0 ? mvAvgLX[1] >> 1 : -(( -mvAvgLX[1]) >> 1)
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована по-разному.It should be noted that the method presented here for averaging luminance motion vectors is not limited as stated above, and that the averaging function in the present disclosure may be implemented in different ways.
Детали определения позиций субблока яркости, которые дополнительно используются при определении вектора движения цветности для различных форматов цветности, будут объяснены в комбинации с фиг.10A-10C и фигурами 11A-11C, как показано ниже.Details of determining luma subblock positions, which are further used in determining the chroma motion vector for various chroma formats, will be explained in combination with FIGS. 10A-10C and FIGS. 11A-11C as shown below.
Фиг. 10A показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в блок текущей картинки (например, блок кодирования) текущей картинки, где формат цветности текущей картинки составляет 4: 2: 0. Как показано на фиг. 10A и в таблице 1-1, когда формат цветности текущей картинки составляет 4: 2: 0, SubWidthC=2 и SubHeightC=2. Если ширина блока яркости равна W, а высота блока яркости - H, ширина соответствующего блока цветности равна W/SubWidthC, а высота соответствующего блока цветности - H/SubHeightC. В частности, для блока текущей картинки, содержащего совмещенные блоки яркости и цветности, блок яркости обычно содержит в четыре раза больше выборок соответствующего блока цветности.Fig. 10A shows an example illustrating combined luma and chrominance blocks that are included in a current picture block (eg, an encoding block) of the current picture, where the chrominance format of the current picture is 4:2:0. As shown in FIG. 10A and Table 1-1 when the chroma format of the current picture is 4:2:0, SubWidthC=2 and SubHeightC=2. If the width of a luma block is W and the height of a luma block is H, the width of the corresponding chroma block is W/SubWidthC and the height of the corresponding chroma block is H/SubHeightC. In particular, for a block of the current picture containing combined luma and chrominance blocks, the luma block typically contains four times as many samples of the corresponding chrominance block.
Фиг. 10В - пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в блок текущей картинки для текущей картинки, где формат цветности текущей картинки составляет 4: 2: 2. Как показано на фиг. 10B и в таблице 1-1 или 1-2, когда формат цветности текущей картинки составляет 4: 2: 2, SubWidthC=2 и SubHeightC=1. Если ширина блока яркости равна W, а высота блока яркости - H, ширина соответствующего блока цветности равна W/SubWidthC, а высота соответствующего блока цветности - H/SubHeightC. В частности, для блока текущей картинки, содержащего совмещенные блоки яркости и цветности, блок яркости обычно содержит в два раза больше выборок соответствующего блока цветности.Fig. 10B is an example illustrating combined luma and chrominance blocks that are included in a current picture block for a current picture where the chroma format of the current picture is 4:2:2. As shown in FIG. 10B and in Table 1-1 or 1-2 when the chroma format of the current picture is 4:2:2, SubWidthC=2 and SubHeightC=1. If the width of a luma block is W and the height of a luma block is H, the width of the corresponding chroma block is W/SubWidthC and the height of the corresponding chroma block is H/SubHeightC. In particular, for a block of the current picture containing combined luma and chrominance blocks, the luma block typically contains twice as many samples of the corresponding chrominance block.
Фиг. 10C - пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в блок текущей картинки для текущей картинки, где формат цветности текущей картинки составляет 4: 4: 4. Как показано на фиг. 10C и в таблице 1-1 или 1-2, когда формат цветности текущей картинки составляет 4: 2: 2, SubWidthC=1 и SubHeightC=1. Если ширина блока яркости равна W, а высота блока яркости - H, ширина соответствующего блока цветности равна W/SubWidthC, а высота соответствующего блока цветности - H/SubHeightC. В частности, для блока текущей картинки, содержащего совмещенные блоки яркости и цветности, блок яркости обычно содержит такое же количество выборок соответствующего блока цветности.Fig. 10C is an example illustrating combined luma and chrominance blocks that are included in a current picture block for a current picture where the chrominance format of the current picture is 4:4:4. As shown in FIG. 10C and in Table 1-1 or 1-2, when the chromaticity format of the current picture is 4: 2: 2, SubWidthC=1 and SubHeightC=1. If the width of a luma block is W and the height of a luma block is H, the width of the corresponding chroma block is W/SubWidthC and the height of the corresponding chroma block is H/SubHeightC. In particular, for a block of the current picture containing combined luma and chrominance blocks, the luma block typically contains the same number of samples of the corresponding chrominance block.
Фиг. 11A - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки равен 4: 2: 0, как показано на фиг. 10А. Fig. 11A is an example illustrating the positions of two luminance subblocks for a given chroma subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:2:0, as shown in FIG. 10A.
Индексы x и y совместно расположенного субблока яркости определяются с использованием соответствующих индексов x и y субблока цветности (обозначаемых как xSbIdx, ySbIdx):The x and y indices of a co-located luma subblock are determined using the corresponding x and y indices of the chrominance subblock (denoted xSbIdx, ySbIdx):
xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);xSbIdx L = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);
ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).ySbIdx L = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).
Два аффинных субблока яркости выбираются для дополнительного усреднения их векторов движения. Позиции этих двух субблоков определяются как:Two luminance affine subblocks are selected to further average their motion vectors. The positions of these two subblocks are defined as:
(xSbIdxL, ySbIdxL) и(xSbIdxL, ySbIdxL) and
(xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).(xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).
Как показано на фиг. 11A, в случае формата YUV 4: 2: 0, векторы движения двух субблоков яркости блока 1010 яркости (размер яркости 8×8) по диагонали используются для усреднения, а усредненное MV используется для аффинного процесса выведения вектора движения субблока для субблока цветности. В частности,As shown in FIG. 11A, in the case of YUV 4:2:0 format, the motion vectors of the two luminance subblocks of the luminance block 1010 (luminance size 8x8) diagonally are used for averaging, and the averaged MV is used for the affine process of deriving the subblock motion vector for the chrominance subblock. In particular,
Индекс субблока яркости или субблока цветности 0: xSbIdx=0, ySbIdx=0Index of luma subblock or chrominance subblock 0: xSbIdx=0, ySbIdx=0
Индекс субблока яркости или субблока цветности 1: xSbIdx=1, ySbIdx=0Index of luma subblock or chrominance subblock 1: xSbIdx=1, ySbIdx=0
Индекс субблока яркости или субблока цветности 2: xSbIdx=0, ySbIdx=1Index of luma subblock or chrominance subblock 2: xSbIdx=0, ySbIdx=1
Индекс субблока яркости или субблока цветности 3: xSbIdx=1, ySbIdx=1;Index of luma subblock or chrominance subblock 3: xSbIdx=1, ySbIdx=1;
Следуя варианту 4 исполнения, вектор движения каждого сублока цветности выводится на основе усредненного значения, и усредненное значение получается на основе вектора движения сублока 0 яркости (mvLX [0] [0]) и сублока 3 яркости ( mvLX [1] [1]), которые являются диагональными.Following
Фиг. 11В - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4: 2: 2, как показано на фиг. 10B; Как показано на фиг. 11B, в случае формата YUV 4: 2: 2, векторы движения двух смежных по горизонтали субблоков яркости блока 1010 яркости (размер яркости 8×8) используются для усреднения, а усредненное MV используется для аффинного процесса выведения векторов движения субблока для субблока цветности. В частности,Fig. 11B is an example illustrating the positions of two luminance subblocks for a given chrominance subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:2:2, as shown in FIG. 10B; As shown in FIG. 11B, in the case of YUV 4:2:2 format, the motion vectors of two horizontally adjacent luminance subblocks of the luminance block 1010 (luminance size 8x8) are used for averaging, and the averaged MV is used for the affine process of deriving subblock motion vectors for the chrominance subblock. In particular,
Индекс субблока яркости или субблока цветности 0: xSbIdx=0, ySbIdx=0Index of luma subblock or chrominance subblock 0: xSbIdx=0, ySbIdx=0
Индекс субблока яркости или субблока цветности 1: xSbIdx=1, ySbIdx=0Index of luma subblock or chrominance subblock 1: xSbIdx=1, ySbIdx=0
Индекс субблока яркости или субблока цветности 2: xSbIdx=0, ySbIdx=1Index of luma subblock or chrominance subblock 2: xSbIdx=0, ySbIdx=1
Индекс субблока яркости или субблока цветности 3: xSbIdx=1, ySbIdx=1;Index of luma subblock or chrominance subblock 3: xSbIdx=1, ySbIdx=1;
Следуя приведенному выше варианту 4 исполнения, вектор движения каждого субблока цветности в первой строке блока 920 цветности выводится на основе усредненного значения, и усредненное значение получается на основе векторов движения субблока яркости 0 (mvLX [0 ] [0]) и субблок 1 яркости (mvLX [1] [0]), которые смежны по горизонтали. Вектор движения каждого субблока цветности во второй строке блока 920 цветности выводится на основе усредненного значения, и усредненное значение получается на основе векторов движения сублока 2 яркости (mvLX [0] [1]) и субблока 3 яркости (mvLX [1] [1]), которые смежны по горизонтали.Following the
Фиг. 11С - пример, иллюстрирующий позицию субблока яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4: 4: 4, как показано на фиг. 10C.Fig. 11C is an example illustrating a luminance subblock position for a given chroma subblock position at the time of outputting chroma motion vectors from luminance motion vectors when the chroma format of the current picture is 4:4:4, as shown in FIG. 10C.
Как показано на фиг. 11C, в случае формата YUV 4: 4: 4 вектор(ы) движения совместно расположенного субблока яркости блока 1010 яркости (размер яркости 8×8) используется для каждого субблока цветности для выполнения аффинного предсказания, т. е. аффинный процесс выведения вектора движения субблока для цветности такой же, как и для яркости.As shown in FIG. 11C, in the case of YUV 4:4:4 format, the co-located luminance subblock motion vector(s) of the luminance block 1010 (luminance size 8x8) are used for each chrominance subblock to perform affine prediction, i.e., an affine subblock motion vector inference process for chrominance is the same as for brightness.
Следует понимать, что усреднение не требуется, то есть вектор движения может быть определен с использованием вектора движения совместно расположенного субблока яркости, или эта операция усреднения будет принимать в качестве входных данных один и тот же MV дважды и генерировать один и тот же вектор движения как выходные данные. Размер субблока яркости или цветности может быть 4×4.It should be understood that averaging is not required, that is, the motion vector can be determined using the motion vector of a co-located luminance subblock, or this averaging operation will take as input the same MV twice and generate the same motion vector as output data. The luma or chrominance subblock size may be 4x4.
Фиг. 12A показывает несколько примеров поднабора S, который содержит позиции субблоков яркости для данной позиции субблока цветности, когда формат цветности установлен на 4:4:4. В этом примере рассматриваются четыре случая вывода поднабора S.Fig. 12A shows several examples of a subset S that contains luma subblock positions for a given chrominance subblock position when the chroma format is set to 4:4:4. This example examines four cases of outputting a subset of S.
В первом случае позиция «A» (1201) цветности имеет соответствующие соседние блоки яркости, расположенные в позициях «A» (1202).In the first case, the chroma position "A" (1201) has corresponding adjacent luminance blocks located at the positions "A" (1202).
Во втором случае позиция «B» (1203) цветности выбирается на нижней границе блока цветности. В этом случае (кроме позиции справа-внизу) соответствующие позиции 1204 субблоков яркости, принадлежащих S, выбираются смежными по горизонтали.In the second case, the chrominance position "B" (1203) is selected at the lower boundary of the chrominance block. In this case (except for the right-bottom position), the corresponding
В третьем случае позиция «C» (1205) цветности выбирается на правой границе блока цветности. В этом случае (за исключением правой нижней позиции) соответствующие позиции 1206 субблоков яркости, принадлежащих S, выбираются смежными по вертикали.In the third case, the chrominance position “C” (1205) is selected at the right edge of the chrominance block. In this case (except for the lower right position), the corresponding
В четвертом случае позиция «D» (1207) цветности выбирается в нижнем правом углу блока цветности. В этом случае набор S содержит единственный субблок яркости, который расположен в нижнем правом углу блока яркости.In the fourth case, the chrominance position "D" (1207) is selected at the lower right corner of the chrominance block. In this case, the set S contains a single luma subblock, which is located in the lower right corner of the luma block.
Фиг. 12B показывает другой вариант осуществления получения поднабора S. В этом варианте осуществления блоки цветности, расположенные на границе блока цветности, имеют соответствующие позиции в блоке яркости, как в четвертом случае «D», показанном на фиг. 12A.Fig. 12B shows another embodiment of obtaining a subset S. In this embodiment, chrominance blocks located on a chroma block boundary have corresponding positions in a luma block, as in the fourth case "D" shown in FIG. 12A.
В вариантах осуществления настоящего раскрытия, описанных выше, количество субблоков цветности такое же, как количество совместно расположенных субблоков яркости в случае, когда используется подвыборка цветности. В частности, количество субблоков яркости в горизонтальном направлении numSbX такое же, как количество субблоков цветности в горизонтальном направлении numSbX, а количество субблоков яркости в вертикальном направлении numSbY такое же, как количество субблоков цветности в вертикальном направлении numSbY. Соответственно, размеры субблоков цветности отличаются от размеров совместно расположенных субблоков яркости в случае, когда используется подвыборка цветности.In the embodiments of the present disclosure described above, the number of chrominance subblocks is the same as the number of co-located luminance subblocks in the case where chroma subsampling is used. Specifically, the number of luminance subblocks in the horizontal direction numSbX is the same as the number of chroma subblocks in the horizontal direction numSbX, and the number of luminance subblocks in the vertical direction numSbY is the same as the number of chroma subblocks in the vertical direction numSbY. Accordingly, the sizes of chrominance subblocks are different from the sizes of co-located luminance subblocks in the case where chroma subsampling is used.
В других сценариях размеры субблоков цветности и субблоков яркости сохраняются одинаковыми независимо от формата цветности. В этих сценариях количество субблоков цветности в блоке цветности и количество субблоков яркости в совмещенном блоке яркости может быть различным. Следующий вариант осуществления направлен на вывод вектора движения цветности для субблоков одинакового размера для компоненты цветности и яркости. То есть для текущей картинки, содержащей блок текущей картинки, содержащий совместно расположенные блоки яркости и цветности, блок яркости текущей картинки включает в себя набор субблоков яркости одинакового размера, а блок цветности текущей картинки включает в себя набор одинакового размера субблоков цветности, а размер субблока цветности устанавливается равным размеру субблока яркости. Можно понять, что количество субблоков цветности отличается от количества совместно расположенных субблоков яркости в случае, когда используется подвыборка цветности. В частности, количество субблоков яркости в горизонтальном направлении, numSbX, отличается от количества субблоков цветности в горизонтальном направлении, numSbX, а количество субблоков яркости в вертикальном направлении, numSbY, отличается от количества субблоков цветности в вертикальном направлении, numSbY.In other scenarios, the sizes of the chrominance subblocks and luma subblocks are kept the same regardless of the chrominance format. In these scenarios, the number of chroma subblocks in a chroma block and the number of lumina subblocks in a combined lumina block may be different. The next embodiment aims to derive a chroma motion vector for subblocks of the same size for the chrominance and luma components. That is, for a current picture containing a block of the current picture containing co-located luminance and chrominance blocks, the luminance block of the current picture includes a set of luminance subblocks of the same size, and the chrominance block of the current picture includes a set of equal sized chrominance subblocks, and the size of the chrominance subblock is set equal to the size of the luma subblock. It can be understood that the number of chrominance subblocks is different from the number of co-located luminance subblocks in the case where chrominance subsampling is used. Specifically, the number of luminance subblocks in the horizontal direction, numSbX, is different from the number of chroma subblocks in the horizontal direction, numSbX, and the number of luminance subblocks in the vertical direction, numSbY, is different from the number of chroma subblocks in the vertical direction, numSbY.
Как показано на фиг. 13A, в случае формата YUV 4: 2: 0, например, блок яркости текущей картинки имеет размер 8×8, четыре субблока яркости одинакового размера включены в блок яркости, и набор субблоков цветности одинакового размера включены в блок цветности текущей картинки (субблок цветности=блок цветности), при этом размер субблока цветности устанавливается равным размеру субблока яркости. Векторы движения двух субблоков яркости по диагонали усредняются, и усредненное MV используется для аффинного процесса вывода вектора движения субблока для субблока цветности. В частности, поскольку количество субблоков отличается, xSbIdx (индекс субблока субблока яркости в горизонтальном направлении) будет изменяться с размером шага SubWidth, и ySbIdx (индекс субблока субблока яркости в вертикальном направлении) будет изменяться с размером шага SubHeightC. Например, для формата 4: 2: 0 xSbIdx=0, 2, 4, 6 ... и ySbIdx=0, 2, 4, 6 …As shown in FIG. 13A, in the case of YUV 4:2:0 format, for example, the luma block of the current picture has a size of 8×8, four luma subblocks of the same size are included in the luma block, and a set of chroma subblocks of the same size are included in the chroma block of the current picture (chroma subblock= chrominance block), with the size of the chrominance subblock being set equal to the size of the luminance subblock. The diagonal motion vectors of the two luma subblocks are averaged, and the averaged MV is used for the affine process of inferring the subblock motion vector for the chrominance subblock. In particular, since the number of subblocks is different, xSbIdx (subblock index of the luma subblock in the horizontal direction) will change with the step size SubWidth, and ySbIdx (subblock index of the luma subblock in the vertical direction) will change with the step size SubHeightC. For example, for 4:2:0 format xSbIdx=0, 2, 4, 6... and ySbIdx=0, 2, 4, 6...
Как показано на фиг. 13B, в случае формата YUV 4: 2: 2 векторы движения двух смежных по горизонтали субблоков яркости используются для усреднения согласно уравнению вышеприведенного варианта 4, чтобы сгенерировать вектор движения для субблока цветности. Усредненное MV используется для аффинного процесса вывода вектора движения субблока для субблока цветности. В частности, поскольку количество субблоков отличается, xSbIdx будет изменяться с размером шага SubWidth, а ySbIdx будет изменяться с размером шага SubHeightC. Например, для 4: 2: 2 xSbIdx=0, 2, 4, 8 ... и ySbIdx=0, 1, 2, 3 …As shown in FIG. 13B, in the case of YUV 4:2:2 format, the motion vectors of two horizontally adjacent luminance subblocks are used for averaging according to the equation of
Как показано на фиг. 13C, в случае формата YUV 4:4:4 и количество, и размер равны для субблоков яркости и субблоков цветности. В этом случае для каждого субблока цветности вектор(ы) движения совместно расположенного субблока яркости используется для выполнения аффинного предсказания. Другими словами, аффинный процесс вывода вектора движения субблока для блока цветности такой же, как и для блока яркости. Например, для формата 4: 4: 4 xSbIdx=0, 1, 2, 3 ... и ySbIdx=0, 1, 2, 3 ... Следует отметить, что в этом случае операцию усреднения, указанную в уравнении вышеприведенного варианта 4, не нужно выполнять, потому что два субблока, используемые для усреднения, одинаковы, и операция усреднения будет выводить то же значение, что и входные данные. По существу, в этом случае вектор движения субблока яркости может быть выбран для субблока цветности без прохождения операции усреднения, сформулированной в уравнении любого предыдущего варианта.As shown in FIG. 13C, in the case of YUV 4:4:4 format, both the number and size are equal for luma subblocks and chrominance subblocks. In this case, for each chroma subblock, the motion vector(s) of the co-located luminance subblock are used to perform affine prediction. In other words, the affine process of deriving the subblock motion vector for a chrominance block is the same as for a luminance block. For example, for 4:4:4 format xSbIdx=0, 1, 2, 3... and ySbIdx=0, 1, 2, 3... It should be noted that in this case the averaging operation specified in the equation of
Из вышеизложенного можно видеть, что блок будет иметь количество субблоков цветности, которое отличается от количества субблоков яркости, когда SubWidthC больше 1 или SubHeightC больше 1. Фиг. 14A показывает пример подразделения блока яркости 16×16 и подразделения совместно размещенного блока цветности для формата цветности YUV 4:2:0. В этом примере блок яркости разделен на 16 субблоков, каждый размером 4×4. Блок цветности имеет размер 8×8 выборок и разделен на 4 субблока, каждый из которых имеет размер 4×4 выборки. Эти 4 субблока цветности сгруппированы в 2 строки, каждая из которых имеет по 2 субблока. Буквы «A», «B», «C» и «D» указывают, какие субблоки яркости используются для выведения вектора движения для соответствующего субблока цветности, обозначенного той же буквой.From the above, it can be seen that a block will have a number of chroma subblocks that is different from the number of luminance subblocks when SubWidthC is greater than 1 or SubHeightC is greater than 1. FIG. 14A shows an example of a 16x16 luma block subdivision and a co-located chrominance block subdivision for the YUV 4:2:0 chrominance format. In this example, the luma block is divided into 16 subblocks, each 4x4 in size. The chrominance block has a size of 8x8 samples and is divided into 4 subblocks, each of which has a size of 4x4 samples. These 4 chroma subblocks are grouped into 2 rows, each of which has 2 subblocks. The letters "A", "B", "C" and "D" indicate which luma subblocks are used to derive the motion vector for the corresponding chrominance subblock denoted by the same letter.
Фиг. 14B иллюстрирует подразделение блока яркости 16×16 и его совмещенного блока цветности на картинке, имеющей формат цветности YUV 4: 2: 2. В этом случае блок цветности имеет размер 8×16 выборок и подразделяется на 8 субблоков, сгруппированных в 4 строки, причем каждая строка имеет 2 субблока. Каждый субблок яркости и субблок цветности имеет размер 4×4 выборки. Буквы «A», «B», «C», «D», «E», «F», «G» и «H» указывают, какие субблоки яркости используются для выведения вектора движения для соответствующего субблока цветности, обозначенного той же буквой.Fig. 14B illustrates the subdivision of a 16x16 luma block and its combined chrominance block in a picture having a YUV 4:2:2 chroma format. In this case, the chroma block has a size of 8x16 samples and is subdivided into 8 subblocks grouped into 4 rows, each the line has 2 subblocks. Each luma subblock and chrominance subblock has a sample size of 4x4. The letters "A", "B", "C", "D", "E", "F", "G" and "H" indicate which luma subblocks are used to derive the motion vector for the corresponding chroma subblock denoted by the same letter.
Предполагая, что блок яркости разделен на numSbY строк субблоков, каждая строка имеет numSbX субблоков, и что вектор движения задан или получен для каждого из субблоков яркости, представленный здесь вариант осуществления может быть определен следующим образом:Assuming that the luma block is divided into numSbY rows of subblocks, each row has numSbX subblocks, and that a motion vector is specified or obtained for each of the luma subblocks, the embodiment presented here can be defined as follows:
1. Первым этаповом является определение значений SubWidthC и SubHeightC на основе информации формата цветности, указывающей формат цветности текущей картинки (или кадра) кодирования или декодирования. Например, информация формата цветности может содержать информацию, представленную в приведенной выше таблице 1-1 или 1-2.1. The first step is to determine the values of SubWidthC and SubHeightC based on chrominance format information indicating the chrominance format of the current encoding or decoding picture (or frame). For example, the chroma format information may include the information presented in Table 1-1 or 1-2 above.
2. Второй этап может включать в себя: получение количества субблоков цветности вдоль горизонтального направления, numCSbX, и количества субблоков цветности вдоль вертикального направления, numCSbY, следующим образом:2. The second step may include: obtaining the number of chroma subblocks along the horizontal direction, numCSbX, and the number of chroma subblocks along the vertical direction, numCSbY, as follows:
numCSbX = numSbX >>( SubWidthC - 1), где numSbX - количество субблоков яркости в блоке яркости в горизонтальном направлении; numCSbX = numSbX >>( SubWidthC - 1), where numSbX is the number of luminance subblocks in the luminance block in the horizontal direction;
numCSbY = numSbY >>( SubHeightC - 1), где numSbY - количество субблоков яркости в блоке яркости в вертикальном направлении. numCSbY = numSbY >>( SubHeightC - 1), where numSbY is the number of luminance subblocks in a luminance block in the vertical direction.
Блок яркости может быть кодируемым или декодируемым в настоящее время блоком кодируемой или декодируемой в настоящее время картинки.The luma block may be a block of a picture currently being encoded or decoded.
3. Обозначение субблока цветности, расположенного в строке yCSbIdx и столбце xCSbIdx, с использованием пространственных индексов (xCSbIdx, yCSbIdx), где xCSbIdx=0, ..., numCSbX - 1 и yCSbIdx=0 .. numCSbY - 1, значение вектора движения цветности для субблока цветности можно определить следующим образом:3. Designation of the chrominance subblock located in row yCSbIdx and column xCSbIdx, using spatial indices (xCSbIdx, yCSbIdx), where xCSbIdx=0, ..., numCSbX - 1 and yCSbIdx=0 .. numCSbY - 1, the value of the chroma motion vector for a chrominance subblock can be defined as follows:
Пространственные индексы (xSbIdxL, ySbIdxL) совместно расположенного субблока яркости определяются следующим образом:Spatial indexes (xSbIdxL, ySbIdxL) together located subblock brightness are determined as follows:
xSbIdxL = xCSbIdx << (SubWidthC - 1);xSbIdx L = xCSbIdx << (SubWidthC - 1);
ySbIdxL = yCSbIdx << (SubHeightC - 1).ySbIdx L = yCSbIdx << (SubHeightC - 1).
Пространственная позиция субблока цветности (sbX, sbY) внутри блока цветности может быть выведена с использованием пространственных индексов (xCSbIdx, yCSbIdx) следующим образом:The spatial position of a chrominance subblock (sbX, sbY) within a chroma block can be inferred using spatial indices (xCSbIdx, yCSbIdx) as follows:
sbX=xCSbIdx * sbX;sbX=xCSbIdx * sbX;
sbY=yCSbIdx * sbY.sbY=yCSbIdx * sbY.
То же самое применимо к определению пространственной позиции для субблока яркости в пределах пространственных индексов (xSbIdx, ySbIdx) блока яркости для субблока яркости:The same applies to determining the spatial position for the luma subblock within the spatial indices (xSbIdx, ySbIdx) of the luma block for the luma subblock:
sbX=xSbIdx * sbX;sbX=xSbIdx * sbX;
sbY=ySbIdx * sbY.sbY=ySbIdx * sbY.
Определенные пространственные индексы совместно размещенного субблока яркости (xSbIdxL, ySbIdxL) могут быть дополнительно использованы при определении вектора движения цветности. Например, набор субблоков яркости может быть определен, как описано ниже:Specific spatial indices of the co-located luminance subblock (xSbIdxL,ySbIdxL) can be extra used in determining the chromaticity motion vector. For example, a set of luminance subblocks may be defined as follows:
S0 = (xSbIdxL, ySbIdxL) S 0 = (xSbIdx L , ySbIdx L )
S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 1 = (xSbIdx L + (SubWidthC-1), ySbIdx L + (SubHeightC-1))
В этом примере набор субблоков яркости включает в себя два субблока, проиндексированных S0 и S1, вычисленные выше. Каждый из S0 и S1 включает в себя пару пространственных индексов, определяющих позицию субблока.In this example, the luma subblock set includes two subblocks indexed S0 and S1, calculated above. Each of the S0 and S1includes a pair of spatial indices defining the position of the subblock.
Набор субблоков яркости используется для вычисления среднего вектора движения mvAvgLX. Здесь и в обозначениях вектора движения, используемых ниже, X может быть либо 0, либо 1, соответственно указывая индекс списка ссылок для вектора движения, являющийся либо L0, либо L1. L0 указывает список ссылок 0, а L1 указывает список ссылок 1. Предполагается, что вычисления вектора движения выполняются путем применения соответствующих формул независимо к горизонтальной составляющей mvAvgLX [0] и вертикальной составляющей mvAvgLX [1] вектора движения.A set of luminance subblocks is used to calculate the average motion vector mvAvgLX. Here and in the motion vector notation used below, X can be either 0 or 1, respectively indicating the reference list index for the motion vector being either L0 or L1. L0 indicates
Если вектор движения яркости субблока с пространственными индексами (xSbIdxL, ySbIdxL) обозначен как mvLX[ xSbIdxL][ ySbIdxL], средний вектор движения mvAvgLX может быть получен следующим образом:If the brightness motion vector of a subblock with spatial indices (xSbIdxL, ySbIdxL) is designated like mvLX[ xSbIdxL][ ySbIdxL], average motion vector mvAvgLXMaybebe obtained as follows:
mvAvgLX = mvAvgLX 0>= 0 ? mvAvgLX >> 1 : -(( -mvAvgLX) >> 1)mvAvgLX =
где и горизонтальные и вертикальные пространственные индексы элемента Si, как обсуждалось выше, где i=0, 1. Where And horizontal and vertical spatial indices of the element Si , as discussed above, where i=0, 1.
Вектор движения субблока mvCLX цветности с пространственными индексами (xCSbIdx, yCSbIdx) получается из среднего вектора движения mvAvgLX следующим образом:The motion vector of the chrominance subblock mvCLX with spatial indices (xCSbIdx, yCSbIdx) is obtained from the average motion vector mvAvgLX as follows:
mvCLX [0] = mvAvgLX [0] * 2/SubWidthCmvCLX[0] = mvAvgLX[0] * 2/SubWidthC
mvCLX [1] = mvAvgLX [1] * 2/SubHeightCmvCLX[1] = mvAvgLX[1] * 2/SubHeightC
Подробности процесса выведения вектора движения яркости и цветности согласно представленным здесь вариантам осуществления описаны следующим образом в формате части спецификации проекта VVC:The details of the luma and chrominance motion vector derivation process according to the embodiments presented here are described as follows in the format of part of the VVC design specification:
8.5.5.9 Процесс выведения массивов векторов движения из аффинных векторов движения контрольных точек8.5.5.9 Process of deriving arrays of motion vectors from affine motion vectors of control points
Входные данные для этого процесса являются следующими:The inputs for this process are as follows:
местоположение яркости (xCb, yCb) верхней левой выборки текущего блока кодирования яркости относительно верхней левой выборки яркости текущей картинки,luminance location (xCb, yCb) of the top left sample of the current luminance encoding block relative to the top left luminance sample of the current picture,
две переменные cbWidth и cbHeight, определяющие ширину и высоту блока кодирования яркости соответственно,two variables cbWidth and cbHeight, defining the width and height of the luminance encoding block, respectively,
количество векторов движения контрольной точки numCpMv, number of control point motion vectors numCpMv,
векторы движения контрольной точки cpMvLX [cpIdx], с cpIdx=0..numCpMv - 1 и X равным 0 или 1,control point motion vectors cpMvLX [cpIdx], with cpIdx=0..numCpMv - 1 and X equal to 0 or 1,
ссылочный индекс refIdxLX и X равны 0 или 1,reference index refIdxLX and X are 0 or 1,
количество субблоков кодирования яркости в горизонтальном направлении (numSbX) и в вертикальном направлении (numSbY).number of luminance coding subblocks in the horizontal direction (numSbX) and in the vertical direction (numSbY).
Выходными данными этого процесса являются:The output of this process is:
массив векторов движения субблока яркости mvLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 и X равным 0 или 1,an array of motion vectors of the brightness subblock mvLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 and X equal to 0 or 1,
массив векторов движения субблока цветности mvCLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 и X равным 0 или 1.an array of motion vectors of the chromaticity subblock mvCLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 and X equal to 0 or 1.
Следующие присвоения сделаны для x=xCb..xCb+cbWidth - 1 и y=yCb..yCb+cbHeight - 1:The following assignments are made for x=xCb..xCb+cbWidth - 1 and y=yCb..yCb+cbHeight - 1:
CpMvLX [x] [y] [0] = cpMvLX [0] CpMvLX [x] [y] [0] = cpMvLX [0]
CpMvLX [x] [y] [1] = cpMvLX [1]CpMvLX [x] [y] [1] = cpMvLX [1]
CpMvLX [x] [y] [2] = cpMvLX [2]CpMvLX [x] [y] [2] = cpMvLX [2]
Переменные log2CbW и log2CbH выводятся следующим образом:The log2CbW and log2CbH variables are output as follows:
log2CbW=Log2 (cbWidth) log2CbW=Log2 (cbWidth)
log2CbH=Log2 (cbHeight) log2CbH=Log2 (cbHeight)
Переменные mvScaleHor, mvScaleVer, dHorX и dVerX выводятся следующим образом:The variables mvScaleHor, mvScaleVer, dHorX and dVerX are output as follows:
mvScaleHor = cpMvLX[0][0] << 7 mvScaleHor = cpMvLX[0][0] << 7
mvScaleVer = cpMvLX[0][1] << 7 mvScaleVer = cpMvLX[0][1] << 7
dHorX = (cpMvLX[1][0] - cpMvLX[0][0]) << (7 - log2CbW) dHorX = (cpMvLX[1][0] - cpMvLX[0][0]) << (7 - log2CbW)
dVerX = (cpMvLX[1][1] - cpMvLX[0][1]) << (7 - log2CbW)dVerX = (cpMvLX[1][1] - cpMvLX[0][1]) << (7 - log2CbW)
Переменные dHorY и dVerY выводятся следующим образом:The variables dHorY and dVerY are output as follows:
Если numCpMv равно 3, применяется следующее:If numCpMv is 3, the following applies:
dHorY =(cpMvLX[2][0] - cpMvLX[0][0]) << (7 - log2CbH)dHorY =(cpMvLX[2][0] - cpMvLX[0][0]) << (7 - log2CbH)
dVerY = (cpMvLX[2][1] - cpMvLX[0][1]) << (7 - log2CbHdVerY = (cpMvLX[2][1] - cpMvLX[0][1]) << (7 - log2CbH
В противном случае (numCpMv равно 2) применяется следующее:Otherwise (numCpMv is 2) the following applies:
dHorY = - dVerXdHorY = - dVerX
dVerY=dHorXdVerY=dHorX
Для xSbIdx=0..numSbX - 1 и ySbIdx=0..numSbY - 1 применяется следующее:For xSbIdx=0..numSbX - 1 and ySbIdx=0..numSbY - 1 the following applies:
Вектор движения яркости mvLX [xSbIdx] [ySbIdx] выводится следующим образом:The brightness motion vector mvLX [xSbIdx] [ySbIdx] is output as follows:
xPosCb=2+(xSbIdx << 2)xPosCb=2+(xSbIdx << 2)
yPosCb = 2+(ySbIdx << 2)yPosCb = 2+(ySbIdx << 2)
mvLX[xSbIdx][ySbIdx][0]=(mvScaleHor+dHorX*xPosCb+dHorY*yPosCb)mvLX[xSbIdx][ySbIdx][0]=(mvScaleHor+dHorX*xPosCb+dHorY*yPosCb)
mvLX[xSbIdx][ySbIdx][1] = (mvScaleVer + dVerX * xPosCb + dVerY * yPosCb)mvLX[xSbIdx][ySbIdx][1] = (mvScaleVer + dVerX * xPosCb + dVerY * yPosCb)
Процесс округления для векторов движения, как указано в пункте 8.5.2.14, вызывается с mvX, установленным равным mvLX [xSbIdx] [ySbIdx], rightShift установлен равным 7, а leftShift установлен равным 0 в качестве входных данных и округленным mvLX [xSbIdx] [ ySbIdx] в качестве вывходных данных.The rounding process for motion vectors as specified in clause 8.5.2.14 is called with mvX set to mvLX [xSbIdx] [ySbIdx], rightShift set to 7 and leftShift set to 0 as input and rounded mvLX [xSbIdx] [ySbIdx ] as output.
Векторы движения mvLX [xSbIdx] [ySbIdx] отсекаются следующим образом:Motion vectors mvLX [xSbIdx] [ySbIdx] are clipped as follows:
mvLX[xSbIdx][ySbIdx][0] = Clip3( -217, 217 - 1, mvLX[xSbIdx][ySbIdx][0])mvLX[xSbIdx][ySbIdx][0] = Clip3( -2 17 , 2 17 - 1, mvLX[xSbIdx][ySbIdx][0])
mvLX[xSbIdx][ySbIdx][1] = Clip3( -217, 217 - 1, mvLX[xSbIdx][ySbIdx][1])mvLX[xSbIdx][ySbIdx][1] = Clip3( -2 17 , 2 17 - 1, mvLX[xSbIdx][ySbIdx][1])
Переменные numCSbX и numCSbY определены следующим образом:The variables numCSbX and numCSbY are defined as follows:
numCSbX = numCSbX >> (SubWidthC - 1)numCSbX = numCSbX >> (SubWidthC - 1)
numCSbY = numCSbY >> (SubHeightC - 1)numCSbY = numCSbY >> (SubHeightC - 1)
Следует отметить, что этот вариант осуществления отличается от предыдущих вариантов осуществления. В предыдущих вариантах осуществления количество субблоков яркости в блоке яркости и количество субблоков цветности в совмещенном блоке цветности одинаковы. В этом варианте осуществления, однако, для форматов цветности 4: 2: 0 и 4: 2: 2 количество субблоков яркости в блоке яркости и количество субблоков цветности в совмещенном блоке цветности различаются. Поскольку количество субблоков в блоке цветности и в блоке яркости различается, xSbIdx будет изменяться с размером шага SubWidth, а ySbIdx будет изменяться с размером шага SubHeightC, как можно видеть ниже.It should be noted that this embodiment is different from the previous embodiments. In previous embodiments, the number of luma subblocks in a luma block and the number of chrominance subblocks in a combined chrominance block are the same. In this embodiment, however, for 4:2:0 and 4:2:2 chrominance formats, the number of luminance subblocks in a luminance block and the number of chroma subblocks in a combined chroma block are different. Since the number of subblocks in a chroma block and a luma block are different, xSbIdx will change with the SubWidth step size, and ySbIdx will change with the SubHeightC step size, as can be seen below.
Для xCSbIdx=0..numCSbX - 1 и yCSbIdx=0..numCSbY - 1 применяется следующее:For xCSbIdx=0..numCSbX - 1 and yCSbIdx=0..numCSbY - 1 the following applies:
Средний вектор движения яркости mvAvgLX выводится следующим образом:The average brightness motion vector mvAvgLX is derived as follows:
Если SubWidthC == 1 и SubHeightC == 1:If SubWidthC == 1 and SubHeightC == 1:
mvAvgLX=mvLX [xCSbIdx] [yCSbIdx] mvAvgLX=mvLX [xCSbIdx] [yCSbIdx]
ИначеOtherwise
– xSbIdxL = xCSbIdx << (SubWidthC - 1)– xSbIdx L = xCSbIdx << (SubWidthC - 1)
– ySbIdxL = yCSbIdx << (SubHeightC - 1)– ySbIdx L = yCSbIdx << (SubHeightC - 1)
– mvAvgLX = mvLX[xSbIdxL ][ySbIdxL ]+ mvLX[ xSbIdxL + (SubWidthC-1)][ySbIdxL + (SubHeightC-1)] – mvAvgLX = mvLX[xSbIdx L ][ySbIdx L ]+ mvLX[ xSbIdx L + (SubWidthC-1)][ySbIdx L + (SubHeightC-1)]
mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0]) >> 1 : -(( -mvAvgLX[0]) >> 1)mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0]) >> 1 : -(( -mvAvgLX[0]) >> 1)
mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1]) >> 1 : -(( -mvAvgLX[1]) >> 1)mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1]) >> 1 : -(( -mvAvgLX[1]) >> 1)
Процесс вывода векторов движения цветности в пункте 8.5.2.13, представленный ниже, вызывается с mvAvgLX и refIdxLX в качестве входных данных и с массивом векторов движения цветности mvCLXSub [xCSbIdx] [yCSbIdx] в качестве выходных данных.The chroma motion vector inference process in clause 8.5.2.13 presented below is called with mvAvgLX and refIdxLX as input and with the chroma motion vector array mvCLXSub[xCSbIdx][yCSbIdx] as output.
Массив векторов движения субблока цветности mvCLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 выводится из mvCLXSub следующим образом:An array of chroma subblock motion vectors mvCLX [xSbIdx] [ySbIdx] with xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 is derived from mvCLXSub as follows:
mvCLX[xSbIdx][ySbIdx] = mvCLXSub[xSbIdx>>(SubWidthC-1) ][ySbIdx >> (SubHeightC - 1)]mvCLX[xSbIdx][ySbIdx] = mvCLXSub[xSbIdx>>(SubWidthC-1) ][ySbIdx >> (SubHeightC - 1)]
Следует отметить, что операция усреднения, представленная выше, предназначена для иллюстрации и не должна рассматриваться как ограничение. Различные другие способа выполнения операции усреднения могут использоваться при определении векторов движения цветности из векторов движения яркости.It should be noted that the averaging operation presented above is for illustrative purposes and should not be construed as limiting. Various other methods of performing the averaging operation can be used in determining chroma motion vectors from luminance motion vectors.
8.5.2.13 Процесс вывода векторов движения цветности8.5.2.13 Chroma motion vector output process
Входными данными для этого процесса является следующее:The input data for this process is the following:
вектор движения яркости с точностью 1/16 фракционной выборки mvLX, brightness motion vector with an accuracy of 1/16 fractional sampling mvLX,
ссылочный индекс refIdxLX.reference index refIdxLX.
Выходными данными этого процесса является вектор движения цветности с точностью до 1/32 фракционной выборки mvCLX.The output of this process is a chroma motion vector accurate to 1/32 of the mvCLX fractional sample.
Вектор движения цветности выводится из соответствующего вектора движения яркости.The chroma motion vector is derived from the corresponding luminance motion vector.
Вектор движения цветности mvCLX выводится следующим образом:The mvCLX chroma motion vector is output as follows:
mvCLX [0] = mvLX [0] * 2/SubWidthCmvCLX[0] = mvLX[0] * 2/SubWidthC
mvCLX [1] = mvLX [1] * 2/SubHeightCmvCLX[1] = mvLX[1] * 2/SubHeightC
Операции этого процесса деривации зависят от того, как этот процесс вызывается. Например, ранее было описано, что «процесс вывода векторов движения цветности в пункте 8.5.2.13 вызывается с mvAvgLX и refIdxLX в качестве входных данных, а также с массивом векторов движения цветности mvCLXSub [xCSbIdx] [yCSbIdx] в качестве выходных данных». В этом примере mvLX в пункте 8.5.2.13, описанном здесь, будет заменен на mvAvgLX для выполнения операций по мере его вызова.The operations of this derivation process depend on how the process is invoked. For example, it was previously described that "the chroma motion vector inference process in clause 8.5.2.13 is called with mvAvgLX and refIdxLX as input, and with the chroma motion vector array mvCLXSub[xCSbIdx][yCSbIdx] as output." In this example, mvLX in clause 8.5.2.13 described here will be replaced by mvAvgLX to perform operations as it is called.
Существуют дополнительные аспекты, относящиеся к вариантам осуществления, которые учитывают смещение между позициями подвыборки для выборок цветности относительно позиции выборок яркости.There are additional aspects related to embodiments that take into account the offset between subsample positions for chroma samples relative to the position of luma samples.
Примерный вариант осуществления должен задавать или определять набор S субблоков яркости в соответствии со значением sps_cclm_colocated_chroma_flag. Конкретно,An exemplary embodiment would define or define a set of S luminance subblocks according to the value of sps_cclm_colocated_chroma_flag. Specifically,
Когда SubHeightC=1 и SubWidthC=2 и sps_cclm_colocated_chroma_flag установлен равным 1, набор S состоит из одного элемента S0 = (xSbIdxL, ySbIdxL)When SubHeightC=1 and SubWidthC=2 and sps_cclm_colocated_chroma_flag is set to 1, the set S consists of a single element S 0 = ( xSbIdxL , ySbIdxL )
В противном случае набор S включает в себяOtherwise the set S includes
S0 = (xSbIdxL, ySbIdxL) S 0 = (xSbIdx L , ySbIdx L )
S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 1 = (xSbIdx L + (SubWidthC-1), ySbIdx L + (SubHeightC-1))
Другой примерный вариант осуществления вводит зависимость между определением среднего вектора движения и значением «sps_cclm_colocated_chroma_flag». В частности, веса вводятся в операциях усреднения и могут указываться по-разному для разных субблоков яркости. Примерный процесс получения среднего вектора движения выглядит следующим образом:Another exemplary embodiment introduces a relationship between the determination of the average motion vector and the "sps_cclm_colocated_chroma_flag" value. In particular, weights are introduced in averaging operations and can be specified differently for different luminance subblocks. An example process for obtaining the average motion vector is as follows:
xSbIdxL = xCSbIdx << (SubWidthC - 1)xSbIdx L = xCSbIdx << (SubWidthC - 1)
ySbIdxL = yCSbIdx << (SubHeightC - 1).ySbIdx L = yCSbIdx << (SubHeightC - 1).
sps_cclm_colocated_chroma_flag устанавливается равным 1, весовые коэффициенты w0 и w1 устанавливаются следующим образом: w0=5, w1=3;sps_cclm_colocated_chroma_flag is set to 1, the weights w0 and w1 are set as follows: w0=5, w1=3;
mvAvgLX = w0 * mvLX[ xSbIdxL ][ySbIdxL ] + mvAvgLX = w0 * mvLX[ xSbIdx L ][ySbIdx L ] +
+ w1 * mvLX[xSbIdxL + (SubWidthC-1)][ySbIdxL + (SubHeightC-1)] + w1 * mvLX[xSbIdx L + (SubWidthC-1)][ySbIdx L + (SubHeightC-1)]
mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0] + 3) >>3 : -(( -mvAvgLX[0] +3) >> 3)mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0] + 3) >>3 : -(( -mvAvgLX[0] +3) >> 3)
mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1] + 3) >> 3 : -( -AvgLX[1]+3) >> 3)mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1] + 3) >> 3 : -( -AvgLX[1]+3) >> 3)
Следует отметить, что операция усреднения, представленная в этом примере, предназначена для иллюстрации и не должна рассматриваться как ограничение. Различные другие способы выполнения операции усреднения могут использоваться при определении векторов движения цветности из векторов движения яркости.It should be noted that the averaging operation presented in this example is for illustration purposes and should not be construed as a limitation. Various other methods of performing the averaging operation can be used in determining chroma motion vectors from luminance motion vectors.
Фиг. 15 является блок-схемой примерного способа 1300 для аффинного внешнего предсказания субблоков цветности, при этом способ включает:Fig. 15 is a flow diagram of an example method 1300 for affine inter-prediction of chroma subblocks, the method including:
На этапе 1501 определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки;At
На этапе 1503 определение набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; иAt
На этапе 1505 определение вектора движения для субблока цветности упомянутого блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости.At
Фиг. 16 является блок-схемой другого примерного способа 1300 для аффинного внешнего предсказания субблоков цветности, при этом способ содержит:Fig. 16 is a flow diagram of another exemplary method 1300 for affine inter-prediction of chroma subblocks, the method comprising:
На этапе 1601 определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки;At
На этапе 1603 определение значения вектора движения для каждого субблока яркости во множестве субблоков яркости, при этом N субблоков яркости включены в блок яркости;At
На этапе 1605 выполняется усреднение векторов движения субблоков яркости в наборе S субблоков яркости, при этом набор (S) определяется на основе коэффициентов масштабирования цветности; иAt
На этапе 1607 для субблока цветности во множестве субблоков цветности выводят вектор движения для субблока цветности на основе среднего вектора движения яркости, при этом субблоки цветности включены в блок цветности.At
Настоящее изобретение раскрывает способ учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов яркости выполняется линейная подвыборка поля движения яркости. Когда цветовые плоскости цветности имеют ту же высоту, что и плоскость яркости, более целесообразно выбирать векторы движения из блоков яркости, которые смежны по горизонтали, чтобы они имели одинаковую вертикальную позицию. Выбор векторов движения яркости, который зависит от формата цветности картинки, приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие позиции блоков яркости при усреднении векторов движения яркости. Как следствие более точной интерполяции поля движения, ошибка предсказания уменьшается, что имеет технический результат в улучшении характеристик сжатия.The present invention discloses a method for taking into account the chrominance format of a picture when deriving chroma motion vectors from luminance motion vectors. By averaging the brightness vectors, a linear subsampling of the brightness motion field is performed. When chroma color planes have the same height as the lumina plane, it makes more sense to select motion vectors from lumina blocks that are horizontally adjacent so that they have the same vertical position. The selection of luminance motion vectors, which depends on the chroma format of the picture, results in a more accurate chroma motion field due to more accurate subsampling of the luminance motion vector field. This dependence on the chromaticity format allows you to select the most appropriate positions of luminance blocks when averaging the luminance motion vectors. As a consequence of more accurate interpolation of the motion field, the prediction error is reduced, which has the technical result of improving compression characteristics.
Кроме того, когда количество субблоков цветности задано равным количеству субблоков яркости, и когда размер цветовой плоскости цветности не равен размеру плоскости яркости, векторы движения смежных субблоков цветности могут принимать одинаковое значение. При реализации этих этапов обработки можно выполнить оптимизацию, пропустив этап вычисления повторяющихся значений. Предлагаемое изобретение раскрывает способ определения размера субблока цветности, равного размеру субблока яркости. В этом случае реализация может быть упрощена за счет унификации обработки яркости и цветности, и, естественно, можно избежать избыточных вычислений вектора движения.In addition, when the number of chrominance subblocks is set equal to the number of lumina subblocks, and when the size of the chroma color plane is not equal to the size of the lumina plane, the motion vectors of adjacent chrominance subblocks may take on the same value. When implementing these processing steps, you can perform optimization by skipping the step of calculating duplicate values. The present invention discloses a method for determining the size of a chrominance subblock equal to the size of a luminance subblock. In this case, the implementation can be simplified by unifying the luminance and chrominance processing, and, naturally, redundant motion vector calculations can be avoided.
Фиг. 17 иллюстрирует устройство для аффинного внешнего предсказания согласно другому аспекту изобретения. Устройство 1700 содержит: Fig. 17 illustrates an apparatus for affine inter prediction according to another aspect of the invention. The 1700 device contains:
модуль 1701 определения, сконфигурированный для определения коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки; и определять набор (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; иa determination module 1701 configured to determine chrominance scaling factors in the horizontal and vertical directions based on chrominance format information, wherein the chrominance format information indicates the chrominance format of the current picture to which the block of the current picture belongs; and determine a set (S) of luminance subblocks of the luminance block based on the values of the chroma scaling factors; And
модуль 1703 выведения вектора движения, сконфигурированный для определения вектора движения для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости.a motion vector derivation module 1703, configured to determine a motion vector for a chrominance subblock of a chroma block based on the motion vectors of one or more luminance subblocks in the luminance subblock set (S).
В примере модуль 1703 вывода вектора движения может содержать:In an example, motion vector output module 1703 may include:
модуль 1703a выведения вектора движения яркости, сконфигурированный для определения значения вектора движения для каждого субблока яркости во множестве субблоков яркости, при этом множество субблоков яркости включено в блок яркости;a luminance motion vector output unit 1703a, configured to determine a motion vector value for each luminance sub-block in a plurality of luminance sub-blocks, wherein the plurality of luminance sub-blocks are included in the luminance block;
модуль 1703b выведения вектора движения цветности, сконфигурированный для субблока цветности во множестве субблоков цветности, определения вектора движения для субблока цветности на основе вектора движения по меньшей мере одного субблока яркости в наборе (S) субблоков яркости, при этом набор (S) определяется на основе коэффициентов масштабирования цветности; при этом субблоки цветности включены в блок цветности. В схеме равного размера, множество субблоков цветности может составлять только один субблок цветности.a chroma motion vector output module 1703b, configured for a chroma subblock in a plurality of chrominance subblocks, determining a motion vector for the chroma subblock based on a motion vector of at least one luminance subblock in a set (S) of luminance subblocks, wherein the set (S) is determined based on the coefficients color scaling; wherein the chrominance subblocks are included in the chrominance block. In an equal-sized circuit, multiple chrominance subblocks may constitute only one chrominance subblock.
Устройство 1700 дополнительно содержит: модуль 1705 компенсации движения, сконфигурированный для генерации предсказания субблока цветности на основе определенного вектора движения.The device 1700 further includes: a motion compensation module 1705 configured to generate a chroma subblock prediction based on the determined motion vector.
Соответственно, в некотором примере, примерная структура устройства 1700 может соответствовать кодеру 200 на фиг. 2. В другом примере примерная структура устройства 1700 может соответствовать декодеру 300 на фиг. 3.Accordingly, in some example, an exemplary structure of device 1700 may correspond to encoder 200 in FIG. 2. In another example, an exemplary structure of device 1700 may correspond to decoder 300 in FIG. 3.
В другом примере примерная структура устройства 1700 может соответствовать блоку 244 внешнего предсказания на фиг. 2. В другом примере примерная структура устройства 1700 может соответствовать блоку 344 внешнего предсказания на фиг. 3.In another example, an exemplary structure of device 1700 may correspond to
Настоящее раскрытие предоставляет следующие дополнительные аспекты.The present disclosure provides the following additional aspects.
Согласно первому аспекту изобретения предоставляется способ вывода вектора движения цветности, используемый в аффинной компенсации движения блока внешнего предсказания, PU, причем PU, содержит совмещенные блоки яркости и цветности, причем способ содержитAccording to a first aspect of the invention, there is provided a method for deriving a chroma motion vector used in affine motion compensation of an inter prediction unit, PU, wherein the PU comprises combined luma and chrominance units, wherein the method comprises
определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях (SubWidthC и SubHeightC) на основе формата цветности текущей картинки (например, текущего кодирования или декодирования картинки);determining the chromaticity scaling factors in the horizontal and vertical directions (SubWidthC and SubHeightC) based on the chromaticity format of the current picture (for example, the current encoding or decoding of the picture);
разделение блока яркости текущей картинки на первый набор субблоков яркости;dividing the brightness block of the current picture into a first set of brightness subblocks;
получение значения вектора движения для каждого субблока яркости в первом наборе субблоков яркости;obtaining a motion vector value for each luminance sub-block in the first set of luminance sub-blocks;
разделение блока цветности текущей картинки (в примере, блок цветности и блок яркости содержатся в одном и том же PU) на набор субблоков цветности;dividing the chrominance block of the current picture (in the example, the chrominance block and the luma block are contained in the same PU) into a set of chrominance subblocks;
для субблока цветности в наборе субблоков цветности определяют второй набор субблоков (S) яркости, при этом позиции субблоков яркости во втором наборе определяются форматом цветности текущей картинки; иfor a chrominance subblock in a set of chrominance subblocks, a second set of luminance subblocks (S) is determined, wherein the positions of the luminance subblocks in the second set are determined by the chrominance format of the current picture; And
получение вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе S.obtaining a motion vector for the chrominance subblock based on the motion vectors of the luminance subblocks in the second set S.
В возможной форме реализации способа согласно первому аспекту как таковому второй набор субблоков (S) яркости содержит любую комбинацию следующих субблоков:In a possible form of implementation of the method according to the first aspect as such, the second set of luminance subblocks (S) comprises any combination of the following subblocks:
S0 = (xSbIdxL, ySbIdxL)S 0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))
S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)S 2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)
S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором второй набор субблоков (S) яркости содержит два субблока:In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such, wherein the second set of luminance subblocks (S) comprises two subblocks:
S0 = (xSbIdxL, ySbIdxL)S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором получение вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе S содержит усреднение векторов движения субблоков яркости во втором наборе S.In an exemplary form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein deriving a motion vector for a chroma subblock based on the motion vectors of the luma subblocks in the second set S comprises averaging the motion vectors of the luma subblocks in the second set S.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect as such, wherein averaging the motion vectors of the luminance subblocks in the second set S comprises the following steps:
mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2(N) - это степень, до которой число 2 должно быть увеличено, чтобы получить значение N, а “>>” - это арифметический сдвиг вправо. where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the subblock S i in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luma sub-blocks (S), log2(N) is the degree to which the
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S включает следующие этапы:In a possible form of implementation of the method according to any previous implementation of the first aspect or the first aspect itself, wherein averaging the motion vectors of the luminance subblocks in the second set S includes the following steps:
mvAvgLX = mvAvgLX =
если mvAvgLX[ 0 ] больше или равно 0, тоif mvAvgLX[ 0 ] is greater than or equal to 0, then
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), otherwise,
mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )
если mvAvgLX[ 1 ] больше или равно 0, то if mvAvgLX[ 1 ] is greater than or equal to 0, then
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), otherwise,
mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N)), где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока Luma с индексами и , N - это количество элементов во втором наборе субблоков (S) яркости, log2 (N) - это степень, до которой число 2 должно быть увеличено, чтобы получить значение N, а “>>” -арифметический сдвиг вправо.mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N)), where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component motion vector mvAvgLX, And - horizontal and vertical indices of the subblock S i in the array of motion vectors, - motion vector of the Luma subblock with indices And , N is the number of elements in the second set of luma subblocks (S), log2(N) is the degree to which the
Согласно второму аспекту изобретения предоставляется способ вывода вектора движения цветности, используемый в аффинной компенсации движения блока внешнего предсказания, PU, содержащего совместно расположенные блоки яркости и цветности, причем способ содержит:According to a second aspect of the invention, there is provided a chroma motion vector output method used in affine motion compensation of an inter-prediction unit, PU, containing co-located luma and chrominance blocks, the method comprising:
получение первого набора субблоков яркости, при этом первый набор субблоков яркости включен в блок яркости текущей картинки (например, текущего кодирования или декодирования картинки);obtaining a first set of luminance subblocks, wherein the first set of luminance subblocks is included in a luminance block of the current picture (eg, the current encoding or decoding of the picture);
получение значения вектора движения для каждого субблока яркости в первом наборе субблоков яркости;obtaining a motion vector value for each luminance sub-block in the first set of luminance sub-blocks;
получение набора субблоков цветности, причем набор субблоков цветности включен в блок цветности текущей картинки (в примере, блок цветности и блок яркости содержатся в одном и том же PU); иobtaining a set of chrominance subblocks, wherein the set of chrominance subblocks is included in the chrominance block of the current picture (in the example, the chroma block and the luma block are contained in the same PU); And
получение вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе (S) субблоков яркости, при этом для субблока цветности в наборе субблоков цветности второй набор (S) субблоков яркости (S) определяется из первого набора субблоков яркости согласно формату цветности текущей картинки.obtaining a motion vector for a chrominance subblock based on the motion vectors of luminance subblocks in the second set (S) of luminance subblocks, wherein for a chrominance subblock in a set of chrominance subblocks, the second set (S) of luminance subblocks (S) is determined from the first set of luminance subblocks according to the chrominance format of the current Pictures.
В возможной форме реализации способа согласно второму аспекту как таковому, в котором второй набор субблоков (S) яркости содержит любую комбинацию следующих субблоков:In a possible form of implementing the method according to the second aspect as such, wherein the second set of luminance subblocks (S) comprises any combination of the following subblocks:
S0 = (xSbIdxL, ySbIdxL) S 0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))
S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)S 2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)
S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором второй набор субблоков (S) яркости содержит два субблока:In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein the second set of luminance subblocks (S) comprises two subblocks:
S0 = (xSbIdxL, ySbIdxL) S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором вывод вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе S содержит:In an exemplary form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein the output of a motion vector for a chroma subblock based on the motion vectors of luminance subblocks in the second set S comprises:
усреднение векторов движения субблоков яркости во втором наборе S.averaging the motion vectors of brightness subblocks in the second set S.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит: In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein the averaging of the motion vectors of the luminance subblocks in the second set S comprises:
усреднение горизонтальной составляющей векторов движения субблоков яркости во втором наборе S; и/или averaging the horizontal component of the motion vectors of the brightness subblocks in the second set S; and/or
усреднение вертикальной составляющей векторов движения субблоков яркости во втором наборе S.averaging of the vertical component of the motion vectors of brightness subblocks in the second set S.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение элементов содержит проверку того, является ли сумма элементов (например, больше или равна 0,In a possible implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein averaging the elements comprises checking whether the sum of the elements (e.g. greater than or equal to 0,
в случае, если сумма элементов больше или равна 0, сумма элементов делится операцией сдвига в зависимости от количества элементов;if the sum of the elements is greater than or equal to 0, the sum of the elements is divided by a shift operation depending on the number of elements;
в противном случае абсолютное значение суммы элементов делится с помощью операции сдвига в зависимости от количества элементов, и из сдвинутого результата получается отрицательное значение.otherwise, the absolute value of the sum of the elements is divided by a shift operation depending on the number of elements, and a negative value is obtained from the shifted result.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап разделения посредством операции сдвига содержит:In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein the step of dividing by a shift operation comprises:
округление до нуля;round to zero;
округление от нуля;rounding from zero;
округление от бесконечности; илиrounding from infinity; or
округление к бесконечности.rounding to infinity.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит: усреднение или округление от нуля.In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein the averaging step comprises: averaging or rounding away from zero.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит усреднение или округление до нуля.In a possible implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein the averaging step comprises averaging or rounding to zero.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит усреднение или округление от бесконечности.In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect as such, wherein the averaging step comprises averaging or rounding away from infinity.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит усреднение или округление до бесконечности.In a possible form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein the averaging step comprises averaging or rounding to infinity.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:In an exemplary form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein averaging the motion vectors of the luminance subblocks in the second set S comprises the following steps:
mvAvgLX = mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:In an exemplary form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein averaging the motion vectors of the luminance subblocks in the second set S comprises the following steps:
mvAvgLX = mvAvgLX =
если mvAvgLX[ 0 ] больше или равно 0, то if mvAvgLX[ 0 ] is greater than or equal to 0, then
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), otherwise,
mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )
если mvAvgLX[ 1 ] больше или равно 0, то if mvAvgLX[ 1 ] is greater than or equal to 0, then
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), otherwise,
mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ),mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо. where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:In an exemplary form of implementation of the method according to any previous implementation of the second aspect or the second aspect itself, wherein averaging the motion vectors of the luminance subblocks in the second set S comprises the following steps:
mvAvgLX = если mvAvgLX[ 0 ] больше или равно 0, то mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) ) если mvAvgLX[ 1 ] больше или равно 0, то mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N) ), mvAvgLX = if mvAvgLX[ 0 ] is greater than or equal to 0, then mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), otherwise, mvAvgLX[ 0 ] = - ( (- mvAvgLX [ 0 ] + (N>>1) - 1) >> log2(N) ) if mvAvgLX[ 1 ] is greater than or equal to 0, then mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1 ) >> log2(N), otherwise, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N) ),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо. where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the
Согласно третьему аспекту изобретения предоставляется способ аффинной компенсации движения текущей картинки, который содержит:According to a third aspect of the invention, there is provided a method for affine motion compensation of a current picture, which comprises:
разделение блока яркости текущей картинки на набор субблоков яркости одинакового размера, иdividing the brightness block of the current picture into a set of brightness subblocks of the same size, and
разделение блока цветности текущей картинки на набор субблоков цветности одинакового размера, при этом размер субблока цветности устанавливается равным размеру субблока яркости.dividing the chrominance block of the current picture into a set of chrominance subblocks of the same size, with the size of the chrominance subblock set equal to the size of the luminance subblock.
В возможной форме реализации способа согласно третьему аспекту как такового, причем способ дополнительно включает:In a possible form of implementing the method according to the third aspect as such, the method further includes:
определение количества субблоков цветности в горизонтальном и вертикальном направлениях на основе значений коэффициентов масштабирования цветности.determining the number of chroma subblocks in the horizontal and vertical directions based on the values of the chroma scaling factors.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях (SubWidthC и SubHeightC) определяются на основе формата цветности текущей картинки (например, текущее кодирование или декодирование картинки).In a possible implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein the horizontal and vertical chroma scaling factors (SubWidthC and SubHeightC) are determined based on the chrominance format of the current picture (eg, the current encoding or decoding of the picture).
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в которомIn a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, in which
numCSbX = numSbX >>(SubWidthC-1) andnumCSbX = numSbX >>(SubWidthC-1) and
numCSbY = numSbY >>( SubHeightC -1);numCSbY = numSbY >>( SubHeightC -1);
numCSbX и numCSbY представляют количество субблоков цветности в горизонтальном и вертикальном направлениях соответственно.numCSbX and numCSbY represent the number of chrominance subblocks in the horizontal and vertical directions, respectively.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором разделение блока цветности текущей картинки содержит:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, wherein the chrominance block division of the current picture comprises:
разделение блока цветности текущей картинки (в примере, блок цветности и блок яркости содержатся в одном и том же PU) на numCSbY строк, каждая строка имеет numCSbX субблоков цветности.dividing the chroma block of the current picture (in the example, the chroma block and the luma block are contained in the same PU) into numCSbY lines, each line having numCSbX chroma subblocks.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где способ дополнительно включает:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where the method further includes:
для каждого из субблоков цветности определяют набор субблоков (S) яркости, при этом позиции субблоков яркости в наборе определяются форматом цветности текущей картинки; иfor each of the chromaticity subblocks, a set of luminance subblocks (S) is determined, and the positions of the luminance subblocks in the set are determined by the chromaticity format of the current picture; And
выводят вектор движения для субблока цветности на основе векторов движения субблоков яркости в наборе S.outputs a motion vector for the chrominance subblock based on the motion vectors of the luminance subblocks in the set S.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором вектор движения определяется для каждого из субблоков яркости, принадлежащих набору S.In a possible implementation form of the method according to any previous implementation of the third aspect or the third aspect itself, wherein a motion vector is determined for each of the luminance subblocks belonging to the set S.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором набор субблоков (S) яркости содержит любую комбинацию следующих субблоков:In an exemplary form of implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein the set of luminance subblocks (S) comprises any combination of the following subblocks:
S0 = (xSbIdxL, ySbIdxL)S 0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))S 1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))
S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)S 2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)
S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))S 3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором набор субблоков (S) яркости содержит два субблока:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, in which the set of luminance subblocks (S) contains two subblocks:
S0 = (xSbIdxL, ySbIdxL) S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором выведение вектора движения для субблока цветности на основе векторов движения субблоков яркости в наборе S включает усреднение векторов движения субблоков яркости в наборе S.In an exemplary form of implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein deriving a motion vector for a chroma subblock based on the motion vectors of the lumina subblocks in the set S involves averaging the motion vectors of the luminance subblocks in the set S.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит: In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, wherein the averaging of the motion vectors of the luminance subblocks in the set S comprises:
усреднение горизонтальной составляющей векторов движения субблоков яркости в наборе S, averaging of the horizontal component of the motion vectors of brightness subblocks in the set S,
усреднение вертикальной составляющей векторов движения субблоков яркости в наборе S.averaging of the vertical component of the motion vectors of brightness subblocks in the set S.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение элементов включает проверку того, больше ли сумма элементов или равна 0.In a possible implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein averaging the elements includes checking whether the sum of the elements is greater than or equal to 0.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение, отличное от нуля.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where averaging means averaging other than zero.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение к нулю.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where averaging means averaging towards zero.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение от бесконечности.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where averaging means averaging from infinity.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение до бесконечности.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where averaging means averaging to infinity.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит следующие этапы:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein averaging the motion vectors of the luminance subblocks in the set S comprises the following steps:
mvAvgLX = mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо. where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит следующие этапы:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, wherein averaging the motion vectors of the luminance subblocks in the set S comprises the following steps:
mvAvgLX = mvAvgLX =
если mvAvgLX[ 0 ] больше или равно 0, тоif mvAvgLX[ 0 ] is greater than or equal to 0, then
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), otherwise,
mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )
если mvAvgLX[ 1 ] больше или равно 0, тоif mvAvgLX[ 1 ] is greater than or equal to 0, then
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), иначе,mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), otherwise,
mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ), mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит следующие этапы:In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, wherein averaging the motion vectors of the luminance subblocks in the set S comprises the following steps:
mvAvgLX = mvAvgLX =
если mvAvgLX[ 0 ] больше или равно 0, тоif mvAvgLX[ 0 ] is greater than or equal to 0, then
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), иначе,mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), otherwise,
mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) )mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) )
если mvAvgLX[ 1 ] больше или равно 0, тоif mvAvgLX[ 1 ] is greater than or equal to 0, then
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), иначе,mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), otherwise,
mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)),mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.where mvAvgLX is the result of averaging, mvAvgLX [0] is the horizontal component of the motion vector mvAvgLX, mvAvgLX [1] is the vertical component of the motion vector mvAvgLX, And - horizontal and vertical indices of the Si subblock in the array of motion vectors, - motion vector of the brightness subblock with indices And , N is the number of elements in the second set of luminance sub-blocks (S), log2(N) is the power to which the
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где N равно 1.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, where N is 1.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором набор S определяется на основе значения sps_cclm_colocated_chroma_flag.In a possible implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein the set S is determined based on the value of sps_cclm_colocated_chroma_flag.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором вывод среднего вектора движения выполняется на основе значения sps_cclm_colocated_chroma_flag.In an exemplary form of implementation of the method according to any previous implementation of the third aspect or the third aspect itself, wherein the average motion vector is inferred based on the value of sps_cclm_colocated_chroma_flag.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором формат цветности определяется как YUV 4: 2: 2.In a possible implementation of the method according to any previous implementation of the third aspect or the third aspect itself, in which the chroma format is specified as YUV 4:2:2.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором блок цветности и блок яркости содержатся в одном и том же PU, а блоки яркости и цветности совмещены.In a possible form of implementation of the method according to any previous implementation of the third aspect or the third aspect as such, in which the chrominance block and the luminance block are contained in the same PU, and the luminance and chrominance blocks are combined.
Четвертый аспект кодера (20), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по третий.A fourth aspect of the encoder (20) comprising processing circuitry for performing a method according to any of the first to third aspects.
Пятый аспект декодера (30), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по третий.A fifth aspect of the decoder (30) comprising processing circuitry for performing a method according to any of the first to third aspects.
Шестой аспект компьютерного программного продукта, содержащий программный код для выполнения способа согласно любому из аспектов с первого по третий.A sixth aspect of a computer program product comprising program code for performing a method according to any of the first to third aspects.
Седьмой аспект декодера, содержащий:The seventh aspect of the decoder, containing:
один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа в соответствии с любым из аспектов с первого по третий.one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to perform a method in accordance with any of the first to third aspects.
Восьмой аспект кодера, содержащий:The eighth aspect of the encoder, containing:
один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа в соответствии с любым из аспектов с первого по третий.one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures an encoder to perform a method in accordance with any of the first to third aspects.
На основании вышеизложенного настоящее раскрытие направлено на раскрытие способа учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов движения яркости выполняется линейная подвыборка поля движения яркости. Когда цветовые плоскости цветности имеют ту же высоту, что и плоскость яркости, более целесообразно выбирать векторы движения из блоков яркости, которые смежны по горизонтали, чтобы они имели одинаковую вертикальную позицию. Выбор векторов движения яркости в зависимости от формата цветности картинки приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие блоки яркости при усреднении векторов движения яркости для генерации вектора движения цветности. Как следствие более точной интерполяции поля движения, ошибка предсказания уменьшается, что приводит к техническому результату улучшения характеристик сжатия.Based on the foregoing, the present disclosure is aimed at disclosing a method for taking into account the chrominance format of a picture when deriving chroma motion vectors from luminance motion vectors. By averaging the luminance motion vectors, a linear subsampling of the luminance motion field is performed. When chroma color planes have the same height as the lumina plane, it makes more sense to select motion vectors from lumina blocks that are horizontally adjacent so that they have the same vertical position. Selecting luminance motion vectors depending on the chroma format of the picture results in a more accurate chroma motion field due to more accurate subsampling of the luminance motion vector field. This dependence on the chroma format allows the selection of the most appropriate luminance blocks when averaging the luminance motion vectors to generate a chroma motion vector. As a consequence of more accurate interpolation of the motion field, the prediction error is reduced, which leads to the technical result of improved compression characteristics.
Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.The following will be an explanation of the applications of the encoding method as well as the decoding method as shown in the above-mentioned embodiments and the system using them.
Фиг. 18 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Данная система 3100 поставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и необязательно включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.Fig. 18 is a block diagram showing a
Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по-отдельности.The
В системе 3100 поставки контента терминальное устройство 3106 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинацию, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.In the
Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.For a terminal device with its own display, such as a smartphone or tablet 3108, a computer or laptop 3110, a network video recorder (NVR)/digital video recorder (DVR) 3112, a
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования картинки или устройство декодирования картинки, как показано в вышеупомянутых вариантах осуществления.When each device in this system performs encoding or decoding, a picture encoding device or a picture decoding device may be used, as shown in the above embodiments.
Фиг. 19 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.Fig. 19 is a diagram showing the structure of an
После того, как блок 3202 обработки протокола обработает поток, генерируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.After the
Посредством обработки демультиплексирования генерируются элементарный видеопоток (ES), аудио ES и, необязательно, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерирования видеокадра и подает эти данные в синхронный блок 3212. Аудиодекодер 3212 декодирует аудио ES для генерации аудиокадра и подает эти данные в синхронный блок 3212. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на ФИГ. Y) перед его подачей в синхронный блок 3212. Аналогично аудиокадр может сохраняться в буфере (не показан на ФИГ. Y) перед его подачей в синхронный блок 3212.Through demultiplexing processing, an elementary video stream (ES), audio ES, and optionally subtitles are generated. The
Синхронный блок 3212 синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, синхронный блок 3212 синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.A
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.If subtitles are included in the stream,
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования картинки, либо устройство декодирования картинки в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.The present invention is not limited to the above system, and either the picture encoding device or the picture decoding device in the above embodiments may be included in another system, such as an automobile system.
Математические операторыMathematical operators
Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, и определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т. д.The mathematical operators used in this application are similar to those used in the C programming language. However, the results of the integer division and arithmetic shift operations are defined more precisely, and additional operations such as exponentiation and real-valued division are defined. Numbering and counting conventions specify starting at 0, for example, "first" is equivalent to 0, "second" is equivalent to 1, etc.
Арифметические операторыArithmetic operators
Следующие арифметические операторы определены следующим образом:The following arithmetic operators are defined as follows:
Логические операторыLogical operators
Следующие логические операторы определены следующим образом:The following logical operators are defined as follows:
x && yx && y
х || y Булево логическое "или" для x и yx || y Boolean logical "or" for x and y
! Булево логическое «не»! Boolean logical "not"
x?y:z Если x равен ИСТИНЕ или не равен 0, вычисляется значение y; в противном случае вычисляется значение z.x?y:z If x is TRUE or not 0, the value of y is calculated; otherwise, the z value is calculated.
Операторы отношенияRelational operators
Следующие операторы отношения определены следующим образом:The following relational operators are defined as follows:
> Больше> More
>= Больше или равно>= Greater than or equal to
< Меньше< Less
<= Меньше или равно<= Less than or equal to
= == Равно= == Equal
!=Не равно!=Not equal
Когда оператор сравнения применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение «na» не считается равным любому другому значению.When a comparison operator is applied to a syntax element or variable that is assigned the value "na" (not applicable), the value "na" is treated as a separate value for the syntax element or variable. The value "na" is not considered equal to any other value.
Битовые операторыBit operators
Следующие битовые операторы определены следующим образом:The following bitwise operators are defined as follows:
& Побитовое «и». При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более старших битов, равных 0.& Bitwise "and". When operating on integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits that are 0.
| При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более старших битов, равных 0.| When operating on integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits that are 0.
^ При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более старших битов, равных 0.^ When operating on integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits that are 0.
x >> y Арифметический сдвиг вправо целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига.x >> y Arithmetic right shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. The bits shifted to the most significant bits (MSB) by a right shift have a value equal to the MSB of x before the shift operation.
x << y Арифметический сдвиг влево целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0.x << y Arithmetic left shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the least significant bits (LSB) by left shifting have a value of 0.
Операторы присваиванияAssignment Operators
Следующие арифметические операторы определены следующим образом:The following arithmetic operators are defined as follows:
= оператор присваивания= assignment operator
+ +Приращение, т.е. x+ + эквивалентно x=x+1; при использовании в индексе массива оценивается в значение переменной до операции приращения.+ +Increment, i.e. x+ + is equivalent to x=x+1; when used in an array index, evaluates to the value of the variable before the increment operation.
- - Уменьшение, т.е. x- - эквивалентно x=x - 1; при использовании в индексе массива оценивает значение переменной до операции уменьшения.- - Decrease, i.e. x- - equivalent to x=x - 1; when used in an array index, evaluates the value of the variable before the decrement operation.
+= Приращение на указанную величину, т.е. x += 3 эквивалентно x=x+3, а x += (-3) эквивалентно x=x + (-3).+= Increment by the specified amount, i.e. x += 3 is equivalent to x=x+3, and x += (-3) is equivalent to x=x + (-3).
-= Уменьшение на указанную величину, т.е. x -= 3 эквивалентно x=x - 3, а x -= (-3) эквивалентно x=x - (-3).-= Decrease by the specified amount, i.e. x -= 3 is equivalent to x=x - 3, and x -= (-3) is equivalent to x=x - (-3).
Обозначение диапазонаRange designation
Следующее обозначение используется для указания диапазона значений:The following notation is used to indicate a range of values:
x = y..z x принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, а z больше y. x = y..z x takes integer values from y to z, inclusive, where x, y and z are integers and z is greater than y.
Математические функцииMathematical functions
Определены следующие математические функции:The following mathematical functions are defined:
Abs( x ) = Abs( x ) =
Asin( x ) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от 1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан. Asin( x ) is a trigonometric arcsine function operating on an argument x that ranges from 1.0 to 1.0 inclusive, with an output value ranging from -π÷2 to π÷2 inclusive, in units of radians.
Atan(x) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан. Atan(x) is a trigonometric arctangent function operating on an argument x, with an output value ranging from -π÷2 to π÷2 inclusive, in units of radians.
Atan2( y, x ) = Atan2( y, x ) =
Ceil( x )наименьшее целое, большее чем или равное x.Ceil( x ) is the smallest integer greater than or equal to x.
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) - 1, x )Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) - 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) - 1, x )Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) - 1, x )
Clip3( x, y, z ) = Clip3( x, y, z ) =
Cos( x ) тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан. Cos( x ) is a trigonometric cosine function that operates on x in units of radians.
Floor( x ) наибольшее целое число, меньшее или равное x. Floor( x ) is the largest integer less than or equal to x.
GetCurrMsb( a, b, c, d ) = GetCurrMsb( a, b, c, d ) =
Ln( x ) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2.718 281 828...).Ln( x ) natural logarithm of x (logarithm to base e, where e is the base constant of the natural logarithm 2.718 281 828...).
Log2( x ) логарифм x по основанию 2Log2( x ) logarithm of x to
Log10( x ) логарифм x по основанию 10. Log10( x ) is the logarithm of x to
Min( x, y ) = Min( x, y ) =
Max( x, y ) = Max( x, y ) =
Round( x ) = Sign( x ) * Floor( Abs( x ) + ) Round( x ) = Sign( x ) * Floor( Abs( x ) + )
Sign( x ) = Sign( x ) =
Sin( x ) тригонометрическая функция синуса, работающая с аргументом x в единицах радиан. Sin( x ) is a trigonometric sine function that operates on x in units of radians.
Sqrt( x ) = Sqrt( x ) =
Swap( x, y ) = ( y, x ) Swap( x, y ) = ( y, x )
Tan( x ) тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан. Tan( x ) is a trigonometric tangent function that operates on x in units of radians.
Порядок приоритетности операцийOrder of priority of operations
Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:When the order of precedence in an expression is not explicitly specified using parentheses, the following rules apply:
-- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.-- Higher priority operations are evaluated before any lower priority operation.
-- Операции с одинаковым приоритетом оцениваются последовательно слева направо.-- Operations with the same priority are evaluated sequentially from left to right.
В таблице ниже указан приоритет операций от наивысшей к низшей; более высокая позиция в таблице указывает на более высокий приоритет.The table below lists the priority of operations from highest to lowest; a higher position in the table indicates higher priority.
Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.For those operators that are also used in the C programming language, the order of precedence used in this description is the same as in the C programming language.
Таблица: Приоритетность операций от наивысшей (в верхней части таблицы) до низшей (в нижней части таблицы)Table: Operation priority from highest (at the top of the table) to lowest (at the bottom of the table)
Текстовое описание логических операцийText description of logical operations
В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:
если (условие 0 ) if (condition 0 )
определение 0
иначе если (условие 1) else if (condition 1)
определение 1 ...
иначе /* информативный комментарий по оставшемуся условию */ определение nelse /* informative comment on the remaining condition */ definition n
может быть описано следующим образом:can be described as follows:
... как указано ниже / ... применяется следующее:... as below / ... the following applies:
- если условие 0, определение 0- if
- Иначе, если условие 1, определение 1- Otherwise, if
- …-...
-- Иначе (информативный комментарий по оставшемуся условию), определение n.-- Otherwise (informative comment on the remaining condition), definition n.
Каждое определение «если … иначе, если … иначе, …» в тексте вводится словами «… как указано ниже» или «…применяется следующее», за которым сразу следует «если …». Последним условием «если … иначе, если … иначе, …» всегда является «иначе, …». Чередование определений «если … иначе, если … иначе, …» могут быть идентифицированы путем сопоставления «… как указано ниже» или «… применяется следующее» с завершающим «иначе,…».Each "if...otherwise, if...else,..." definition in the text is introduced by the words "...as follows" or "...the following applies" followed immediately by "if...". The final condition of “if...otherwise, if...otherwise,...” is always “otherwise,...”. Alternating definitions "if...otherwise, if...otherwise,..." can be identified by matching "...as follows" or "...the following applies" with the final "otherwise,...".
В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:
если ( условие 0a && условие 0b ) if ( condition 0a && condition 0b )
определение 0
иначе если( условие 1a | | условие 1b ) else if( condition 1a | | condition 1b )
определение 1 …
мначе определение nOtherwise, the definition of n
может быть описано следующим образом:can be described as follows:
… как указано ниже / … применяется следующее:... as below / ... the following applies:
-- Если все из следующих условий истинны, определение 0:-- If all of the following conditions are true, definition 0:
- условие 0a- condition 0a
- условие 0b- condition 0b
-- Иначе, если истинными являются одно или более из следующих условий, определение 1:-- Else, if one or more of the following conditions are true, definition 1:
- условие 1a- condition 1a
- условие 1b- condition 1b
- …-...
- Иначе, определение n- Otherwise, the definition of n
В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:
если (условие 0 ) if (condition 0 )
определение 0
если (условие 1) if (condition 1)
определение 1
может быть описано следующим образом:can be described as follows:
Когда условие 0, определение 0When condition is 0, definition is 0
Когда условие 1, определение 1When
Изобретение было описано в связи с различными вариантами осуществления в данном документе. Однако другие варианты раскрытых вариантов осуществления могут быть поняты и осуществлены специалистами в данной области техники при практической реализации заявленного изобретения на основе изучения чертежей, данного раскрытия и прилагаемой формулы изобретения. В формуле изобретения слово «содержащий» не исключает другие элементы или этапы, а упоминание чего-либо в единственном числе, не исключает множественности. Один процессор или другой блок может выполнять функции нескольких элементов, указанных в формуле изобретения. Простой факт, что определенные меры изложены в обычно различных зависимых пунктах формулы изобретения, не означает, что комбинация этих мер не может быть использована с выгодой. Компьютерная программа может храниться/распространяться на подходящем носителе, таком как оптический носитель данных или твердотельный носитель, поставляемый вместе с другим аппаратным обеспечением или как его часть, но также может распространяться в других формах, например, через Интернет или другие системы проводной или беспроводной связи.The invention has been described in connection with various embodiments herein. However, other variations of the disclosed embodiments may be understood and implemented by those skilled in the art in the practice of the claimed invention based on a study of the drawings, this disclosure, and the accompanying claims. In a claim, the word “comprising” does not exclude other elements or steps, and mentioning something in the singular does not exclude the plurality. One processor or other unit can perform the functions of several elements specified in the claims. The mere fact that certain measures are set forth in typically different dependent claims does not mean that a combination of these measures cannot be used to advantage. The computer program may be stored/distributed on a suitable medium, such as an optical storage medium or a solid-state medium provided with or as part of other hardware, but may also be distributed in other forms, such as via the Internet or other wired or wireless communications systems.
Специалист в данной области техники поймет, что «блоки» («модули») на различных фигурах (способ и устройство) представляют или описывают функциональные возможности вариантов осуществления изобретения (а не обязательно отдельные «блоки» в аппаратном или программном обеспечении) и таким образом они в равной степени описывают функции или особенности вариантов осуществления устройства, а также варианты осуществления способа (блок=этап).One skilled in the art will understand that the "blocks" ("modules") in the various figures (method and apparatus) represent or describe the functionality of embodiments of the invention (and not necessarily individual "blocks" in hardware or software) and thus they equally describe the functions or features of embodiments of the device as well as embodiments of the method (block=step).
Термин «блок» используется лишь для целей иллюстрации функциональных возможностей вариантов осуществления кодера/декодера и не предназначен для ограничения данного раскрытия.The term “block” is used for purposes of illustrating the functionality of encoder/decoder embodiments only and is not intended to limit this disclosure.
В нескольких вариантах осуществления, представленных в данной заявке, следует понимать, что раскрытые система, аппаратура и способ могут быть реализованы другими способами. Например, описанный вариант осуществления аппаратуры является лишь примерным. Например, разделение на блоки является лишь логическим разделением по функциям, а в фактической реализации может иметь место другое разделение. Например, множество блоков или составляющих могут быть объединены или интегрированы в другую систему, или некоторые признаки могут игнорироваться или не выполняться. Кроме того, показанные или описанные взаимные связи или прямые связи или коммуникационные соединения могут быть реализованы с использованием некоторых интерфейсов. Непрямые связи или коммуникационные соединения между аппаратурами или блоками могут быть реализованы электрическими, механическими или иметь другие формы.In several embodiments presented herein, it should be understood that the disclosed system, apparatus, and method may be implemented in other ways. For example, the hardware embodiment described is merely exemplary. For example, the division into blocks is only a logical division by function, and in the actual implementation there may be a different division. For example, multiple blocks or components may be combined or integrated into another system, or some features may be ignored or not executed. In addition, the mutual connections or direct connections or communication connections shown or described may be implemented using certain interfaces. Indirect connections or communication connections between equipment or units can be electrical, mechanical, or other forms.
Блоки, описанные как отдельные части, могут быть или могут не быть физически отдельными, а части, показанные как блоки, могут быть или могут не быть физическими блоками, могут быть расположены в одном месте или могут быть распределены по множеству сетевых блоков. Некоторые или все блоки могут быть выбраны согласно фактическим требованиям для достижения целей решений в вариантах осуществления.Blocks described as individual pieces may or may not be physically separate, and pieces shown as blocks may or may not be physical blocks, may be located in one location, or may be distributed across multiple network blocks. Some or all of the blocks may be selected according to actual requirements to achieve the objectives of the solutions in the embodiments.
Кроме того, функциональные блоки в вариантах осуществления настоящего изобретения могут быть интегрированы в один блок обработки, или каждый из блоков может существовать физически отдельно, или два или более блоков интегрируются в один блок.Moreover, the functional blocks in embodiments of the present invention may be integrated into a single processing block, or each of the blocks may exist physically separately, or two or more blocks are integrated into a single block.
Варианты осуществления изобретения могут дополнительно включать в себя аппаратуру, например кодер и/или декодер, который содержит схему обработки, выполненную с возможностью выполнения любого из способа и/или процессов, описанных в данном документе.Embodiments of the invention may further include hardware, such as an encoder and/or decoder, that includes processing circuitry configured to perform any of the methods and/or processes described herein.
Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 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 present invention have been primarily described in terms of video encoding, it should be noted that embodiments of
Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям, которые являются долговременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.Embodiments of, for example,
В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.By way of example, and not limitation, such computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other media that can used to store desired program code in the form of instructions or data structures and can be accessed by a computer. Additionally, 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 communications, then coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave communications are included in the definition of media. However, it should be understood that computer readable and storage media do not include connections, carrier waves, signals, or other short-lived media, but are instead directed to long-term, tangible storage media. The disk and disc used in this document include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where discs ) typically reproduce data magnetically, while discs (discs) reproduce data optically using lasers. Combinations of the above should also be included in 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), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term “processor” as used herein can refer to any of the above structure or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within specialized hardware and/or software modules configured for encoding and decoding or included in a bundled codec. In addition, the techniques may be fully implemented in one or more circuits or logic elements.
Методики этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных составляющих, в том числе беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.The techniques of this disclosure may be implemented in a wide variety of devices or hardware components, including a wireless telephone, an integrated circuit (IC), or a set of ICs (eg, a chipset). This disclosure describes various components, modules, or blocks to highlight functional aspects of devices configured to implement the disclosed technologies, but not necessarily required to be implemented by different hardware units. Rather, as described above, the various blocks may be combined into a codec hardware block or provided by a collection of interacting hardware blocks, including one or more processors as described above, together with suitable software and/or firmware.
Claims (135)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/809,551 | 2019-02-22 | ||
US62/823,653 | 2019-03-25 | ||
US62/824,302 | 2019-03-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2021127615A RU2021127615A (en) | 2023-03-22 |
RU2816202C2 true RU2816202C2 (en) | 2024-03-27 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170105014A1 (en) * | 2015-10-08 | 2017-04-13 | Qualcomm Incorporated | Luma-driven chroma scaling for high dynamic range and wide color gamut contents |
US9743091B2 (en) * | 2012-12-17 | 2017-08-22 | Lg Electronics Inc. | Method for encoding/decoding image, and device using same |
WO2017143467A1 (en) * | 2016-02-22 | 2017-08-31 | Mediatek Singapore Pte. Ltd. | Localized luma mode prediction inheritance for chroma coding |
US20170374384A1 (en) * | 2015-01-14 | 2017-12-28 | Vid Scale, Inc. | Palette coding for non-4:4:4 screen content video |
RU2654525C1 (en) * | 2011-06-28 | 2018-05-21 | Самсунг Электроникс Ко., Лтд. | Method for image interpolation using asymmetric interpolation filter and device therefor |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2654525C1 (en) * | 2011-06-28 | 2018-05-21 | Самсунг Электроникс Ко., Лтд. | Method for image interpolation using asymmetric interpolation filter and device therefor |
US9743091B2 (en) * | 2012-12-17 | 2017-08-22 | Lg Electronics Inc. | Method for encoding/decoding image, and device using same |
US20170374384A1 (en) * | 2015-01-14 | 2017-12-28 | Vid Scale, Inc. | Palette coding for non-4:4:4 screen content video |
US20170105014A1 (en) * | 2015-10-08 | 2017-04-13 | Qualcomm Incorporated | Luma-driven chroma scaling for high dynamic range and wide color gamut contents |
WO2017143467A1 (en) * | 2016-02-22 | 2017-08-31 | Mediatek Singapore Pte. Ltd. | Localized luma mode prediction inheritance for chroma coding |
Non-Patent Citations (2)
Title |
---|
Anish Tamse et al, "Proposed WD for CE2-related: MV Derivation for Affine Chroma", JVET- M0192_WD, 13th Meeting: Marrakech, January 2019. * |
Yi-Wen Chen et al, "CE2-related: Affine mode modifications", JVET- M0228, 13th Meeting: Marrakech, January 2019. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12088799B2 (en) | Encoder, a decoder and corresponding methods of intra prediction | |
JP7332703B2 (en) | Method and apparatus for affine-based inter-prediction of chroma sub-blocks | |
AU2020318106B2 (en) | An encoder, a decoder and corresponding methods related to intra prediction mode | |
JP7314300B2 (en) | Method and apparatus for intra prediction | |
JP7391991B2 (en) | Method and apparatus for intra-smoothing | |
CN113508592A (en) | Encoder, decoder and corresponding inter-frame prediction method | |
CN113545063A (en) | Method and apparatus for intra prediction using linear model | |
JP2023126795A (en) | Method and apparatus for chroma intra prediction in video coding | |
JP2023100701A (en) | Encoder, decoder and corresponding methods using intra mode coding for intra prediction | |
CN113228632B (en) | Encoder, decoder, and corresponding methods for local illumination compensation | |
RU2816202C2 (en) | Method and apparatus for affine external prediction of chroma subunits | |
RU2822448C2 (en) | Encoder, decoder and corresponding intra-prediction methods | |
RU2814812C2 (en) | Deriving chroma sample weight for geometric separation mode | |
JP2024109748A (en) | Encoder, decoder and corresponding method of complexity reduction in intra prediction for planar modes - Patents.com | |
CN114830652A (en) | Method and apparatus for reference sample interpolation filtering for directional intra prediction |