RU2802844C2 - Method and device for encoding and decoding video using inter-prediction - Google Patents

Method and device for encoding and decoding video using inter-prediction Download PDF

Info

Publication number
RU2802844C2
RU2802844C2 RU2022121747A RU2022121747A RU2802844C2 RU 2802844 C2 RU2802844 C2 RU 2802844C2 RU 2022121747 A RU2022121747 A RU 2022121747A RU 2022121747 A RU2022121747 A RU 2022121747A RU 2802844 C2 RU2802844 C2 RU 2802844C2
Authority
RU
Russia
Prior art keywords
sample
block
affine
prediction
target block
Prior art date
Application number
RU2022121747A
Other languages
Russian (ru)
Other versions
RU2022121747A (en
Inventor
Чи Вон КАН
Сан Хё ПАК
Сон Ук ПАК
Хва Пён ЛИМ
Original Assignee
Хёндэ Мотор Кампани
Киа Корпорейшн
Ихва Юниверсити - Индастри Коллаборейшн Фаундейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хёндэ Мотор Кампани, Киа Корпорейшн, Ихва Юниверсити - Индастри Коллаборейшн Фаундейшн filed Critical Хёндэ Мотор Кампани
Publication of RU2022121747A publication Critical patent/RU2022121747A/en
Application granted granted Critical
Publication of RU2802844C2 publication Critical patent/RU2802844C2/en

Links

Abstract

FIELD: means for video coding and decoding.
SUBSTANCE: it is determined at the sequence level whether affine motion prediction is enabled by decoding the first high-level syntax element. It is determined, at the image level, whether each of the at least one encoding tool is enabled by decoding one or more second high-level syntax elements. At least one coding tool includes a count-by-count correction of affine motion prediction samples. When the affine motion prediction is enabled, the predictor defines two or three vectors of checkpoints movement of the target block encoded using affine motion prediction are determined, and affine prediction samples are generated for each of the subblocks in the target block by performing affine motion prediction in a unit of subblocks. When sample-by-sample adjustment of affine motion prediction samples is enabled, the predictor modifies the sample values in the affine prediction samples by motion compensation.
EFFECT: increased efficiency of video coding.
13 cl, 22 dwg

Description

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

[1] Настоящее раскрытие относится к кодированию и декодированию видео и, в частности, к инструменту кодирования для повышения эффективности сжатия интер-предсказания.[1] The present disclosure relates to video encoding and decoding and, in particular, to an encoding tool for improving inter-prediction compression efficiency.

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

[2] Поскольку объем видеоданных больше, чем объем речевых данных или данных статического изображения, для хранения или передачи видеоданных без обработки для сжатия требуется много аппаратных ресурсов, включая память. Соответственно, при хранении или передаче видеоданных видеоданные обычно сжимаются с использованием кодировщика для хранения или передачи. Затем декодер принимает сжатые видеоданные, распаковывает и воспроизводит видеоданные. Процедуры сжатия для такого видео включают H.264/AVC и высокоэффективное кодирование видео (HEVC), которое повышает эффективность кодирования по сравнению с H.264/AVC примерно на 40%.[2] Since the volume of video data is larger than the volume of speech data or still image data, storing or transmitting video data without processing for compression requires a lot of hardware resources, including memory. Accordingly, when storing or transmitting video data, the video data is typically compressed using an encoder for storage or transmission. The decoder then receives the compressed video data, decompresses and plays back the video data. Compression procedures for such video include H.264/AVC and High Efficiency Video Coding (HEVC), which improves encoding efficiency over H.264/AVC by approximately 40%.

[3] Однако размер изображения, разрешение и частота кадров постепенно увеличиваются, и, соответственно, увеличивается также объем данных, которые необходимо кодировать. Соответственно, требуется новая процедура сжатия, имеющая лучшую эффективность кодирования и более высокое качество изображения, чем существующая процедура сжатия.[3] However, image size, resolution and frame rate are gradually increasing, and accordingly the amount of data that needs to be encoded is also increasing. Accordingly, a new compression procedure having better coding efficiency and higher image quality than the existing compression procedure is required.

[4] В кодировании видео для повышения эффективности сжатия видео в основном используется кодирование с предсказанием. Существуют интра-предсказание для предсказания целевого блока, который должен быть закодирован, на основе предварительно восстановленных отсчетов в текущем изображении, и интер-предсказание для предсказания текущего блока с использованием предварительно восстановленного опорного изображения. В частности, интер-предсказание широко используется для кодирования видео, поскольку оно демонстрирует превосходные характеристики сжатия по сравнению с интра-предсказанием.[4] In video coding, predictive coding is mainly used to improve video compression efficiency. There is intra-prediction for predicting the target block to be encoded based on the previously reconstructed samples in the current image, and inter-prediction for predicting the current block using the previously reconstructed reference image. In particular, inter-prediction is widely used for video encoding because it exhibits superior compression performance compared to intra-prediction.

[5] Настоящее раскрытие предусматривает инструмент кодирования для повышения эффективности сжатия существующего интер-предсказания.[5] The present disclosure provides an encoding tool for improving the compression efficiency of existing inter-prediction.

[6] В частности, настоящее раскрытие относится к инструменту кодирования для повышения эффективности сжатия при интер-предсказании и, в одном аспекте, относится к инструменту кодирования, способному компенсировать различные движения объекта, включая движение поступательного движения.[6] In particular, the present disclosure relates to an encoding tool for improving inter-prediction compression efficiency and, in one aspect, relates to an encoding tool capable of compensating for various object motions, including translational motion.

Раскрытие сущности изобретенияDisclosure of the invention

[7] В соответствии с одним аспектом настоящего раскрытия, предоставляется способ декодирования видео для декодирования последовательности кодированных изображений на поблочной основе. Способ включает в себя установление, на уровне последовательности, разрешено ли аффинное предсказание движения, посредством декодирования первого элемента синтаксиса высокого уровня из битового потока; установление, на уровне изображения, разрешен ли каждый из по меньшей мере одного инструмента кодирования, посредством декодирования одного или более вторых элементов синтаксиса высокого уровня для каждого из по меньшей мере одного инструмента кодирования из битового потока в зависимости от первого элемента синтаксиса высокого уровня, причем по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения; когда установление на уровне последовательности указывает, что аффинное предсказание движения разрешено, определение множество векторов движения контрольных точек целевого блока, кодированных с использованием аффинного предсказание движения, и генерирование отсчетов аффинного предсказания для каждого из субблоков в целевом блоке посредством выполнения аффинного предсказания движения в единице субблоков с использованием векторов движения контрольных точек; и когда на основе установления на уровне изображения установлено, что поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, модификацию значений отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока.[7] In accordance with one aspect of the present disclosure, a video decoding method is provided for decoding a sequence of encoded images on a block-by-block basis. The method includes determining, at the sequence level, whether affine motion prediction is enabled by decoding a first high-level syntax element from the bitstream; determining, at the image level, whether each of the at least one encoding tool is enabled by decoding one or more second high-level syntax elements for each of the at least one encoding tool from the bitstream depending on the first high-level syntax element, wherein the at least one encoding tool includes sample-by-sample adjustment of the affine motion prediction samples; when the sequence-level setting indicates that affine motion prediction is enabled, determining a plurality of target block reference point motion vectors encoded using the affine motion prediction, and generating affine prediction samples for each of the subblocks in the target block by performing affine motion prediction in the unit of subblocks with using motion vectors of control points; and when, based on the image-level determination, it is determined that sample-by-sample adjustment of the affine motion prediction samples is allowed for the current image containing the target block, modifying the sample values in the affine prediction samples by motion compensation in accordance with the position of the sample in each of the sub-blocks based on the reference motion vectors points of the target block.

[8] В соответствии с другим аспектом настоящего раскрытия, предоставляется устройство декодирования видео для декодирования последовательности кодированных изображений на поблочной основе. Устройство включает в себя декодер конфигурированный: устанавливать, на уровне последовательности, разрешено ли аффинное предсказание движения, посредством декодирования первого элемента синтаксиса высокого уровня из битового потока; и устанавливать, на уровне изображения, разрешен ли каждый из по меньшей мере одного инструмента кодирования, посредством декодирования одного или нескольких вторых элементов синтаксиса высокого уровня для каждого из по меньшей мере одного инструмента кодирования из битового потока в зависимости от первого элемента синтаксиса высокого уровня. В частности, по меньшей мере один инструмент кодирования включает поотсчетное корректирование отсчетов аффинного предсказания движения. [8] According to another aspect of the present disclosure, a video decoding apparatus for decoding a sequence of encoded images on a block-by-block basis is provided. The apparatus includes a decoder configured to: set, at the sequence level, whether affine motion prediction is enabled by decoding a first high-level syntax element from the bitstream; and determining, at the image level, whether each of the at least one encoding tool is enabled by decoding one or more second high-level syntax elements for each of the at least one encoding tool from the bitstream depending on the first high-level syntax element. In particular, the at least one encoding tool includes sample-by-sample updating of the affine motion prediction samples.

[9] Устройство также включает в себя предиктор, конфигурированный определять, когда установление на уровне последовательности указывает, что аффинное предсказание движения разрешено, множество векторов движения контрольных точек целевого блока, кодированных с использованием аффинного предсказания движения, и генерировать отсчеты аффинного предсказания для каждого субблока в целевом блоке путем выполнения аффинного предсказания движения на посубблочной основе с использованием векторов движения контрольных точек. В ответ на идентификацию, основанную на установление на уровне изображения, что поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, предиктор конфигурирован модифицировать значения отсчетов аффинного предсказания путем компенсации движения в соответствии с положением отсчета в каждом из сублоков на основе векторов движения контрольных точек целевого блока.[9] The apparatus also includes a predictor configured to determine when a sequence-level assertion indicates that affine motion prediction is enabled, a plurality of target block reference point motion vectors encoded using the affine motion prediction, and generate affine prediction samples for each sub-block in target block by performing affine motion prediction on a sub-block basis using control point motion vectors. In response to the identification based on the determination at the image level that sample-by-sample adjustment of affine motion prediction samples is allowed for the current image containing the target block, the predictor is configured to modify the values of the affine prediction samples by motion compensation according to the position of the sample in each of the sub-blocks based on the vectors movements of control points of the target block.

[10] В соответствии с другим аспектом настоящего раскрытия, предоставляется способ кодирования последовательности кодированных изображений на поблочной основе. Способ включает в себя кодирование, в заголовке последовательности, первого элемента синтаксиса высокого уровня в уровне последовательности, для указания, отключены ли как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования, при этом по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения; в зависимости от первого элемента синтаксиса высокого уровня, кодирование одного или более вторых элементов синтаксиса высокого уровня, указывающих на установление уровня последовательности или уровня изображения в отношении разрешения каждого из по меньшей мере одного инструмента кодирования; когда первый элемент синтаксиса высокого уровня указывает, что как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования не отключены, определение векторов движения контрольных точек для целевого блока, подлежащего кодированию, и генерирование отсчетов аффинного предсказания для каждого из субблоков посредством выполнения посубблочного аффинного предсказания движения с использованием векторов движения контрольных точек; и когда поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, модификацию значений отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока. [10] In accordance with another aspect of the present disclosure, a method for encoding a sequence of encoded images on a block-by-block basis is provided. The method includes encoding, in a sequence header, a first high-level syntax element in the sequence level to indicate whether both affine motion prediction and at least one encoding tool are disabled, wherein the at least one encoding tool includes a count-by-count adjustment of affine motion prediction samples; depending on the first high-level syntax element, encoding one or more second high-level syntax elements indicating the establishment of a sequence level or an image level with respect to the resolution of each of the at least one encoding tool; when the first high-level syntax element indicates that both the affine motion prediction and at least one encoding tool are not disabled, determining motion vectors of reference points for the target block to be encoded, and generating affine prediction samples for each of the sub-blocks by performing a sub-block affine motion prediction using motion vectors of control points; and when sample-by-sample adjustment of the affine motion prediction samples is enabled for the current image containing the target block, modifying the sample values in the affine prediction samples by motion compensation according to the position of the sample in each of the sub-blocks based on the motion vectors of the target block's reference points.

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

[11] Фиг. 1 - примерная блочная схема устройства кодирования видео, выполненного с возможностью осуществления процедур согласно настоящему раскрытию.[11] FIG. 1 is an exemplary block diagram of a video encoding apparatus configured to implement the procedures of the present disclosure.

[12] Фиг. 2 в качестве примера показывает структуру разделения блоков с использованием структуры QTBTTT.[12] FIG. 2 shows an example of a block division structure using a QTBTTT structure.

[13] Фиг. 3 в качестве примера показывает множество режимов интра-предсказания.[13] FIG. 3 shows a variety of intra-prediction modes as an example.

[14] Фиг. 4 в качестве примера показывает соседние блоки вокруг текущего блока.[14] FIG. 4 shows the neighboring blocks around the current block as an example.

[15] Фиг. 5 - примерная блочная схема устройства декодирования видео, выполненного с возможностью реализации технологии согласно настоящему раскрытию.[15] FIG. 5 is an exemplary block diagram of a video decoding apparatus configured to implement the technology of the present disclosure.

[16] Фиг. 6 - примерная схема, иллюстрирующая концепцию оптического потока с двойным предсказанием, предусмотренную настоящим раскрытием.[16] FIG. 6 is an exemplary diagram illustrating the dual prediction optical flow concept provided by the present disclosure.

[17] Фиг. 7 - примерная схема, иллюстрирующая способ получения градиента для отсчета границы блока в двунаправленном оптическом потоке.[17] FIG. 7 is an exemplary diagram illustrating a method for obtaining a gradient for sampling a block boundary in bidirectional optical flow.

[18] Фиг. 8A-8B и 9 - примерные схемы, иллюстрирующие аффинное предсказание движения, предусмотренное настоящим раскрытием.[18] FIG. 8A-8B and 9 are exemplary diagrams illustrating the affine motion prediction provided by the present disclosure.

[19] Фиг. 10 - примерная схема, иллюстрирующая способ получения кандидатов на слияние для аффинного предсказания движения из векторов поступательного движения соседних блоков.[19] FIG. 10 is an exemplary diagram illustrating a method for obtaining fusion candidates for affine motion prediction from translational motion vectors of neighboring blocks.

[20] Фиг. 11A-11С - примерные схемы, иллюстрирующие способ получения параметра компенсации освещенности согласно варианту осуществления компенсации освещенности, предусмотренному настоящим раскрытием.[20] FIG. 11A to 11C are exemplary diagrams illustrating a method for obtaining an illumination compensation parameter according to an illumination compensation embodiment provided by the present disclosure.

[21] Фиг. 12A-12B - примерные схемы, иллюстрирующие способ разделения целевого блока на множество областей согласно другому варианту осуществления компенсации освещения, предусмотренному настоящим раскрытием.[21] FIG. 12A-12B are exemplary diagrams illustrating a method for dividing a target block into multiple areas according to another embodiment of illumination compensation provided by the present disclosure.

[22] Фиг. 13 - примерная схема, иллюстрирующая способ определения опорных отсчетов, которые должны использоваться для получения параметров компенсации, когда целевой блок разделен на четыре области, согласно другому варианту осуществления компенсации освещенности, предусмотренному настоящим раскрытием.[22] FIG. 13 is an exemplary diagram illustrating a method for determining reference samples to be used to obtain compensation parameters when a target block is divided into four areas, according to another illumination compensation embodiment provided by the present disclosure.

[23] Фиг. 14 и 15 - примерные схемы, иллюстрирующие способ осуществления компенсации освещенности с использованием параметров компенсации освещенности для четырех областей, когда целевой блок разделен на четыре области, согласно другому варианту осуществления компенсации освещенности, предусмотренному настоящим раскрытием.[23] FIG. 14 and 15 are exemplary diagrams illustrating a method for performing illumination compensation using illumination compensation parameters for four areas when a target block is divided into four areas, according to another embodiment of illumination compensation provided by the present disclosure.

[24] Фиг. 16 и 17 - примерные схемы, иллюстрирующие способ осуществления компенсации освещенности для каждой области, когда целевой блок разделен на две области, согласно другому варианту осуществления компенсации освещенности, предусмотренному настоящим раскрытием.[24] FIG. 16 and 17 are exemplary diagrams illustrating a method for performing illumination compensation for each area when a target block is divided into two areas, according to another embodiment of illumination compensation provided by the present disclosure.

[25] Фиг. 18 - примерные схемы, иллюстрирующие способ осуществления компенсации освещенности для каждой области, когда целевой блок разделен на множество областей, более чем четыре области, согласно другому варианту осуществления компенсации освещенности, предусмотренной настоящим раскрытием.[25] FIG. 18 are exemplary diagrams illustrating a method for performing illumination compensation for each area when a target block is divided into a plurality of areas more than four areas, according to another embodiment of illumination compensation provided by the present disclosure.

Подробное описаниеDetailed description

[26] Далее вариант осуществления настоящего изобретения будет подробно описан со ссылкой на приложенные чертежи. Следует отметить, что при добавлении цифровых обозначений к составляющим элементам на соответствующих чертежах одинаковые цифровые обозначения обозначают одинаковые элементы, даже если элементы показаны на разных чертежах. Кроме того, в последующем описании настоящего раскрытия подробное описание известных функций и конфигураций, включенных в настоящий документ, будет опущено, чтобы не оттенять предмет настоящего раскрытия.[26] Hereinafter, an embodiment of the present invention will be described in detail with reference to the accompanying drawings. It should be noted that when adding numerals to constituent elements in the respective drawings, the same numerals designate the same elements even if the elements are shown in different drawings. Moreover, in the following description of the present disclosure, detailed description of known functions and configurations included herein will be omitted so as not to detract from the subject matter of the present disclosure.

[27] Фиг. 1 - примерная блочная схема устройства кодирования видео, выполненного с возможностью реализации технологии согласно настоящему раскрытию. Далее устройство кодирования виде и элементы устройства будут описаны со ссылкой на фиг. 1.[27] FIG. 1 is an exemplary block diagram of a video encoding device configured to implement the technology of the present disclosure. Next, the encoding device and the elements of the device will be described with reference to FIG. 1.

[28] Устройство кодирования видео включает в себя разделитель 110 блоков, предиктор 120, вычитатель 130, преобразователь 140, квантователь 145, модуль 150 переупорядочения, энтропийный кодер 155, обратный квантователь 160, обратный преобразователь 165, сумматор 170, модуль 180 петлевого фильтра и память 190.[28] The video encoding apparatus includes a block separator 110, a predictor 120, a subtractor 130, a transformer 140, a quantizer 145, a reordering module 150, an entropy encoder 155, an inverse quantizer 160, an inverse transformer 165, an adder 170, a loop filter module 180, and a memory. 190.

[29] Каждый элемент устройства кодирования видео может быть реализован в виде аппаратного или программного обеспечения или комбинации аппаратного и программного обеспечения. Функции соответствующих элементов могут быть реализованы в виде программного обеспечения, и микропроцессор может быть реализован для выполнения функций программного обеспечения, соответствующих соответствующим элементам.[29] Each element of a video encoding device may be implemented as hardware or software, or a combination of hardware and software. The functions of the corresponding elements may be implemented as software, and the microprocessor may be implemented to perform the software functions corresponding to the corresponding elements.

[30] Одно видео состоит из одной или нескольких последовательностей, включающих множество изображений. Каждое изображение разбивается на множество областей, и для каждой области выполняется кодирование. Например, одно изображение разбивается на один или более фрагментов и/или секций. В частности, один или более тайлов могут быть определены как группа тайлов. Каждый тайл и/или слайс разделяют на одну или более единиц дерева кодирования (CTU). И каждую CTU разделяют на одну или более единиц кодирования (CU) древовидной структурой. Информация, применяемая к каждой CU, кодируют как синтаксис CU, а информацию, применяемая к CU, включенным в одну общую CTU, кодируют как синтаксис CTU. Кроме того, информация, применяемая ко всем блокам в одном слайсе в целом, кодируется как синтаксис заголовка слайса, а информация, применяемая ко всем блокам, составляющим одно или несколько изображений, кодируется в наборе параметров изображения (PPS) или заголовке изображения.[30] A single video consists of one or more sequences containing multiple images. Each image is divided into multiple regions, and coding is performed for each region. For example, one image is divided into one or more fragments and/or sections. In particular, one or more tiles may be defined as a group of tiles. Each tile and/or slice is divided into one or more coding tree units (CTUs). And each CTU is divided into one or more coding units (CU) in a tree structure. Information applied to each CU is encoded as CU syntax, and information applied to CUs included in one common CTU is encoded as CTU syntax. In addition, information applied to all blocks in one slice as a whole is encoded as slice head syntax, and information applied to all blocks composing one or more images is encoded in picture parameter set (PPS) or image header.

[31] Кроме того, информация, на которую ссылается последовательность, состоящая из множества изображений в общем, кодируется в наборе параметров последовательности (SPS). Кроме того, информация, применяемая к одному тайлу или группе тайлов в общем мозаичного изображения, может кодироваться как синтаксис заголовка тайла или группы тайлов. Синтаксисы, включенные в SPS, PPS, заголовок слайса и заголовок тайла или группы тайлов, могут называться синтаксисами высокого уровня.[31] In addition, information referenced by a sequence consisting of a plurality of images in general is encoded in a sequence parameter set (SPS). In addition, information applied to one tile or group of tiles in the overall tile image may be encoded as tile or tile group header syntax. The syntaxes included in the SPS, PPS, slice header, and tile or tile group header may be referred to as high-level syntaxes.

[32] Разделитель 110 блоков выполнен с возможностью определения размера единицы (CTU) дерева кодирования. Информация о размере CTU (размер CTU) кодируется как синтаксис набора SPS или набора PPS и передается в устройство декодирования видео. Кроме того, разделитель 110 блоков конфигурирован разделять каждое изображение, составляющее видео, на множество CTU, имеющих заданный размер, а затем рекурсивно разделять CTU с использованием древовидной структуры. В древовидной структуре листовой узел служит в качестве единицы (CU) кодирования, которая является базовой единицей кодирования.[32] The block separator 110 is configured to determine a coding tree unit (CTU) size. CTU size information (CTU size) is encoded as SPS set or PPS set syntax and transmitted to the video decoding device. In addition, the block divider 110 is configured to divide each image constituting a video into a plurality of CTUs having a predetermined size, and then recursively divide the CTUs using a tree structure. In a tree structure, a leaf node serves as a coding unit (CU), which is the basic coding unit.

[33] Древовидная структура может быть деревом квадрантов (QuadTree (QT), в которой узел (или родительский узел) разделен на четыре субузла (или дочерние узлы) одинакового размера, двоичным деревом (BinaryTree (BT)), в котором узел разделен на два субузла, троичным деревом (TernaryTree (TT)), в котором узел разделен на три подузла в соотношении 1:2:1, или структура, образованная комбинацией двух или более из структуры QT, структуры BT, и структуры ТТ. Например, может использоваться структура, включающая дерево квадрантов и двоичное дерево (QTBT), или структура, включающая дерево квадрантов и двоичное дерево троичное дерево (QTBTTT). Здесь BTTT может в совокупности называться деревом множественного типа (MTT).[33] The tree structure can be a quadtree (QT), in which a node (or parent node) is divided into four subnodes (or child nodes) of the same size, a binary tree (BT), in which a node is divided into two subnode, a TernaryTree (TT) in which a node is divided into three subnodes in a 1:2:1 ratio, or a structure formed by a combination of two or more of a QT structure, a BT structure, and a TT structure. For example, a structure may be used , including a quadtree and a binary tree (QTBT), or a structure including a quadtree and a binary tree, a ternary tree (QTBTTT).Here, the BTTT may be collectively referred to as a multiple type tree (MTT).

[34] На фиг. 2 в качестве примера показана древовидная структура разделения QTBTTT. Как показано на фиг. 2, CTU может быть первоначально разделена в структуре QT. Разделение QT может повторяться до тех пор, пока размер блока разделения не достигнет минимального размера блока MinQTSize листового узла, разрешенного в структуре QT. Первый флаг (QT_split_flag), указывающий, разделен ли каждый узел структуры QT на четыре узла нижнего уровня, кодируется энтропийным кодером 155 и сигнализируется в устройство декодирования видео. Если концевой узел структуры QT, равен или меньше, чем максимальный размер блока корневого узла (MaxBTSize), разрешенного в структуре BT, он может быть дополнительно разделен на одну или более структуры BT или структуры TT. Структура BT и/или структура TT может иметь множество направлений разделения. Например, может быть два направления, а именно направление, в котором блок узла разделяется по горизонтали, и направление, в котором блок разделяется по вертикали. [34] In FIG. Figure 2 shows the tree structure of the QTBTTT partition as an example. As shown in FIG. 2, CTU can be initially divided into QT structure. QT splitting can be repeated until the split block size reaches the minimum leaf node MinQTSize block size allowed in the QT structure. The first flag (QT_split_flag) indicating whether each node of the QT structure is divided into four lower-level nodes is encoded by the entropy encoder 155 and signaled to the video decoding device. If a leaf node of a QT structure is equal to or less than the maximum root node block size (MaxBTSize) allowed in a BT structure, it may be further divided into one or more BT structures or TT structures. The BT structure and/or the TT structure may have multiple division directions. For example, there may be two directions, namely the direction in which the node block is split horizontally and the direction in which the block is split vertically.

[35] Как показано на фиг. 2, когда начинается разделение MTT, второй флаг (mtt_split_flag), указывающий, разделены ли узлы, флаг, указывающий направление разделения (вертикальное или горизонтальное) в случае разделения, и/или флаг, указывающий тип разделения (двоичное или троичное) кодируются энтропийным кодером 155 и сигнализируются в устройство декодирования видео. В качестве альтернативы, перед кодированием первого флага (QT_split_flag), указывающего, разделен ли каждый узел на 4 узла нижнего слоя, может быть закодирован флаг разделения CU (split_cu_flag), указывающий, разделен ли узел. Когда значение флага разделения CU (split_cu_flag) указывает, что разделение не выполняется, блок узла становится конечным узлом в структуре дерева разделения и обслуживает единицу кодирования (CU), которая является базовой единицей кодирования. Когда значение флага разделения CU (split_cu_flag) указывает, что разделение выполнено, устройство кодирования видео начинает кодирование флагов способом, описанным выше, начиная с первого флага.[35] As shown in FIG. 2, when MTT splitting begins, a second flag (mtt_split_flag) indicating whether nodes are split, a flag indicating the direction of splitting (vertical or horizontal) in case of splitting, and/or a flag indicating the type of splitting (binary or ternary) are encoded by entropy encoder 155 and are signaled to the video decoding device. Alternatively, before encoding the first flag (QT_split_flag) indicating whether each node is split into 4 bottom layer nodes, a CU split flag (split_cu_flag) indicating whether the node is split may be encoded. When the value of the CU split flag (split_cu_flag) indicates that no split is being performed, the node block becomes the leaf node in the split tree structure and serves a coding unit (CU), which is the basic coding unit. When the value of the CU split flag (split_cu_flag) indicates that splitting is complete, the video encoding device begins encoding the flags in the manner described above, starting with the first flag.

[36] Когда QTBT используется в качестве другого примера древовидной структуры, может быть два типа разделения, которые представляют собой тип горизонтального разделения блока на два блока одинакового размера (т.е. симметричное горизонтальное разделение) и тип вертикального разделения блока на два блока одинакового размера (т.е. симметричное вертикальное разделение). Флаг разделения (split_flag), указывающий, разделен ли каждый узел структуры BT на блок нижнего слоя, и информация о типе разделения, указывающая тип разделения, кодируются энтропийным кодером 155 и сигнализируются в устройство декодирования видео. Возможен дополнительный тип разбиения блока узла на два асимметричных блока. Тип асимметричного разделения может включать в себя тип разделения блока на два прямоугольных блока с соотношением размеров 1:3 или тип диагонального разделения блока узла.[36] When QTBT is used as another example of a tree structure, there can be two types of partitioning, which are a type of horizontal partitioning of a block into two blocks of equal size (i.e. symmetrical horizontal partitioning) and a type of vertical partitioning of a block into two blocks of equal size (i.e. symmetrical vertical division). A split flag (split_flag) indicating whether each node of the BT structure is divided into a lower layer block and split type information indicating the split type are encoded by the entropy encoder 155 and signaled to the video decoding device. An additional type of splitting a node block into two asymmetric blocks is possible. The asymmetrical division type may include a block division type into two rectangular blocks with an aspect ratio of 1:3 or a node block diagonal division type.

[37] Кроме того, CU могут иметь различные размеры в соответствии с разделением CTU на QTBT или QTBTTT. В дальнейшем блок, соответствующий CU (то есть листовому узлу QTBTTT), который должен быть закодирован или декодирован, называется «текущим блоком». Поскольку используется разделение QTBTTT, форма текущего блока может быть квадратной или прямоугольной. Предиктор 120 предсказывает текущий блок, чтобы сгенерировать блок предсказания. Предиктор 120 включает в себя интра-предиктор 122 и интер-предиктор 124.[37] In addition, CUs can have different sizes according to the division of the CTU into QTBT or QTBTTT. In the following, the block corresponding to the CU (i.e., leaf node QTBTTT) to be encoded or decoded is called the “current block”. Because QTBTTT partitioning is used, the shape of the current block can be square or rectangular. Predictor 120 predicts the current block to generate a prediction block. Predictor 120 includes intra-predictor 122 and inter-predictor 124.

[38] Модуль 122 внутреннего предсказания конфигурирован для предсказания отсчетов в текущем блоке с использованием отсчетов (опорных отсчетов), расположенных вокруг текущего блока в текущем изображении, включающем текущий блок. Существует множество режимов интра-предсказания согласно направлениям предсказания. Например, как показано на фиг. 3, множество режимов интра-предсказания может включать в себя два ненаправленных режима, которые включают в себя планарный режим и режим DC, и 65 направленных режимов. Соседние отсчеты и используемое уравнение определяются по-разному для каждого режима предсказания.[38] The intra prediction unit 122 is configured to predict samples in the current block using samples (reference samples) located around the current block in the current image including the current block. There are many intra-prediction modes according to the prediction directions. For example, as shown in FIG. 3, the plurality of intra-prediction modes may include two omnidirectional modes, which include planar mode and DC mode, and 65 directional modes. The neighboring samples and the equation used are defined differently for each prediction mode.

[39] Интра-предиктор 122 может быть конфигурирован для определения режима интра-предсказания, который будет использоваться при кодировании текущего блока. В некоторых примерах интра-предиктор 122 может быть конфигурирован кодировать текущий блок с использованием нескольких режимов интра-предсказания и выбирать для использования подходящий режим интра-предсказания из проверенных режимов. Например, интра-предиктор 122 может быть конфигурирован вычислять значения скоростного искажения с использованием анализа скорости-искажения нескольких протестированных режимов интра-предсказания и выбирать режим интра-предсказания, который имеет лучшие характеристики скорости-искажения среди протестированных режимов.[39] Intra predictor 122 may be configured to determine the intra prediction mode to be used when encoding the current block. In some examples, intra-predictor 122 may be configured to encode the current block using multiple intra-prediction modes and select an appropriate intra-prediction mode from the tested modes to use. For example, intra-predictor 122 may be configured to calculate rate-distortion values using rate-distortion analysis of several tested intra-prediction modes and select the intra-prediction mode that has the best rate-distortion characteristics among the tested modes.

[40] Интра-предиктор 122 конфигурирован для одного режима интра-предсказания из множества режимов интра-предсказания и предсказывает текущий блок, используя соседние пиксели (опорные пиксели) и уравнение, определенное согласно выбранному режиму интра-предсказания. Информация о выбранном режиме интра-предсказания кодируется энтропийным кодером 155 и передается в устройство декодирования видео. Интер-предиктор 124 конфигурирован для предсказания блока предсказания для текущего блока посредством компенсации движения. Кроме того, интер-предиктор 124 конфигурирован искать блок, наиболее похожий на текущий блок в опорном изображении, которое был кодировано и декодировано раньше, чем текущее изображение, и генерирует блок предсказания для текущего блока, используя найденный блок.[40] The intra predictor 122 is configured for one intra prediction mode from a plurality of intra prediction modes, and predicts the current block using neighboring pixels (reference pixels) and an equation determined according to the selected intra prediction mode. Information about the selected intra-prediction mode is encoded by the entropy encoder 155 and transmitted to the video decoding device. The inter-predictor 124 is configured to predict a prediction block for the current block by motion compensation. In addition, inter-predictor 124 is configured to search for a block most similar to the current block in a reference picture that was encoded and decoded earlier than the current picture, and generates a prediction block for the current block using the found block.

[41] Затем интер-предиктор конфигурирован для генерации вектора движения, соответствующего смещению между текущим блоком в текущем изображении и блоком предсказания в опорном изображении. В целом, оценку движения выполняют для компонента яркости, а вектор движения, вычисленный на основе компонента яркости, используется как для компонента яркости, так и для компонента цветности. Информация о движении, включающая в себя информацию об опорном изображении и информацию о векторе движения, используемую для предсказания текущего блока, кодируется энтропийным кодером 155 и передается в устройство декодирования видео.[41] The inter-predictor is then configured to generate a motion vector corresponding to the offset between the current block in the current image and the prediction block in the reference image. In general, motion estimation is performed on the luminance component, and the motion vector calculated based on the luminance component is used for both the luminance component and the chrominance component. Motion information including reference image information and motion vector information used for predicting the current block is encoded by the entropy encoder 155 and transmitted to the video decoding apparatus.

[42] Интер-предиктор 124 может быть конфигурирован для выполнения интерполяции на основе опорного изображения или опорного блока, чтобы повысить точность предсказания. Другими словами, суботсчеты между двумя последовательными целыми отсчетами интерполируются путем применения коэффициентов фильтра к множеству последовательных целых отсчетов, включая два целых отсчета. Когда операция поиска блока, наиболее похожего на текущий блок, выполняется на интерполированном опорном изображении, вектор движения может быть выражен с уровнем точности дробной единицы отсчета, а не с уровнем точности целой единицы отсчета.[42] Inter-predictor 124 may be configured to perform interpolation based on a reference image or reference block to improve prediction accuracy. In other words, the subsamples between two consecutive integer samples are interpolated by applying the filter coefficients to a plurality of consecutive integer samples, including the two integer samples. When a search operation for a block most similar to the current block is performed on an interpolated reference image, the motion vector can be expressed at a fractional unit precision level rather than an integer unit precision level.

[43] Точность или разрешение вектора движения могут быть установлены по-разному для каждой целевой кодируемой области, например, для каждой единицы, такой как слайс, тайл, CTU или CU. Когда применяется такое адаптивное разрешение вектора движения, информация о разрешении вектора движения, которая должна применяться к каждой целевой области, должна передаваться для каждой целевой области. Например, когда целевая область является CU, передается информация о разрешении вектора движения, применяемом к каждой CU. Информация о разрешении вектора движения может быть информацией, указывающей точность разности векторов движения, которая будет описана далее.[43] The precision or resolution of the motion vector can be set differently for each target coded area, for example, for each unit such as slice, tile, CTU or CU. When such adaptive motion vector resolution is applied, motion vector resolution information that should be applied to each target region must be transmitted for each target region. For example, when the target region is a CU, information about the motion vector resolution applied to each CU is transmitted. The motion vector resolution information may be information indicating the accuracy of the motion vector difference, which will be described later.

[44] Интер-предиктор 124 может быть конфигурирован для выполнения интер-предсказания с использованием двойного предсказания. При двунаправленном предсказании интер-предиктор 124 использует два опорных изображения и два вектора движения, представляющие положения блоков, наиболее похожих на текущий блок в соответствующих опорных изображениях. Интер-предиктор 124 конфигурирован для выбора первого опорного изображения и второго опорного изображения из списка 0 опорных изображений (RefPicList0) и списка 1 опорных изображений (RefPicList1), соответственно, для поиска блоков, похожих на текущий блок, в соответствующих опорных изображениях, и генерирования первого опорного блока и второго опорного блока. Затем интер-предиктор 124 конфигурирован для генерации блока предсказания для текущего блока путем усреднения или взвешивания первого опорного блока и второго опорного блока. Затем интер-предиктор 124 конфигурирован для передачи информации о движении, включая информацию о двух опорных изображениях и двух векторах движения, используемых для предсказания текущего блока, в кодер 150. [44] Inter-predictor 124 may be configured to perform inter-prediction using dual prediction. In bidirectional prediction, inter-predictor 124 uses two reference pictures and two motion vectors representing the positions of blocks most similar to the current block in the corresponding reference pictures. The inter-predictor 124 is configured to select a first reference picture and a second reference picture from reference picture list 0 (RefPicList0) and reference picture list 1 (RefPicList1), respectively, to search for blocks similar to the current block in the corresponding reference pictures, and generate the first a support block and a second support block. Inter-predictor 124 is then configured to generate a prediction block for the current block by averaging or weighting the first reference block and the second reference block. Inter-predictor 124 is then configured to transmit motion information, including information about two reference pictures and two motion vectors used to predict the current block, to encoder 150.

[45] В частности, RefPicList0 может состоять из изображений, предшествующих текущему изображению в порядке отображения среди восстановленных изображений, а RefPicList1 может состоять из изображений, следующих за текущим изображением в порядке отображения среди восстановленных изображений. Однако варианты осуществления этим не ограничиваются. Предварительно восстановленные изображения, следующие за текущим изображением в порядке отображения, могут быть дополнительно включены в RefPicList0, и, наоборот, предварительно восстановленные изображения, предшествующие текущему изображению, могут быть дополнительно включены в RefPicList1.[45] Specifically, RefPicList0 may consist of images preceding the current image in display order among the restored images, and RefPicList1 may consist of images following the current image in display order among the restored images. However, the embodiments are not limited to this. Pre-reconstructed images following the current image in display order may be further included in RefPicList0, and conversely, pre-reconstructed images preceding the current image may be further included in RefPicList1.

[46] Для минимизации количества битов, необходимых для кодирования информации о движении, могут использоваться различные способы. Например, когда опорное изображение и вектор движения текущего блока такие же, как опорное изображение и вектор движения соседнего блока, информация о движении текущего блока может быть передана в устройство декодирования посредством кодирования информации для идентификации соседнего блока. Этот способ называется «режимом слияния».[46] Various techniques can be used to minimize the number of bits required to encode motion information. For example, when the reference image and motion vector of the current block are the same as the reference image and motion vector of the adjacent block, the motion information of the current block can be transmitted to the decoding device by encoding information to identify the adjacent block. This method is called "merge mode".

[47] В режиме слияния интер-предиктор 124 выбирает предопределенное количество блоков кандидатов на слияние (в дальнейшем именуемых «кандидатами на слияние») из числа соседних блоков текущего блока. Как показано на фиг. 4, все или часть левого блока L, верхнего блока A, верхнего правого блока AR, нижнего левого блока BL и верхнего левого блока AL, которые являются смежными с текущим блоком в текущем изображении, могут использоваться в качестве соседних блоков для получения кандидатов на слияние. Кроме того, блок, расположенный в опорном изображении (который может быть таким же или отличным от опорного изображения, используемого для предсказания текущего блока), кроме текущего изображения, в котором расположен текущий блок, может использоваться в качестве кандидата на слияние. Например, совмещенный блок, который находится в том же положении, что и текущий блок, или блоки, смежные с совмещенным блоком в опорном изображении, могут дополнительно использоваться в качестве кандидатов на слияние.[47] In the merge mode, the inter-predictor 124 selects a predetermined number of merge candidate blocks (hereinafter referred to as “merge candidates”) from among the neighboring blocks of the current block. As shown in FIG. 4, all or part of the left block L, the top block A, the top right block AR, the bottom left block BL and the top left block AL, which are adjacent to the current block in the current image, can be used as neighboring blocks to obtain merge candidates. In addition, a block located in a reference picture (which may be the same or different from the reference picture used to predict the current block) other than the current picture in which the current block is located can be used as a merge candidate. For example, a merged block that is in the same position as the current block, or blocks adjacent to a merged block in the reference image, can further be used as fusion candidates.

[48] Интер-предиктор 124 конфигурирует список слияния, включающий в себя заранее определенное количество кандидатов на слияние, используя такие соседние блоки. Интер-предиктор 124 выполнен с возможностью выбора кандидата на слияние для использования в качестве информации о движении для текущего блока из числа кандидатов на слияние, включенных в список слияния, и генерирования информации индекса слияния для идентификации выбранных кандидатов. Сгенерированная информация индекса слияния кодируется кодером 155 и передается в устройство декодирования.[48] Inter-predictor 124 configures a merge list including a predetermined number of merge candidates using such neighboring blocks. The inter-predictor 124 is configured to select a merge candidate for use as traffic information for the current block from among the merge candidates included in the merge list, and generate merge index information for identifying the selected candidates. The generated merge index information is encoded by the encoder 155 and transmitted to the decoding device.

[49] Другой способ кодирования информации о движении - это режим AMVP. В режиме AMVP интер-предиктор 124 конфигурирован для получения предсказанных кандидатов вектора движения для вектора движения текущего блока с использованием соседних блоков текущего блока. Все или часть из левого блока L, верхнего блока А, верхнего правого блока AR, нижнего левого блока BL и верхнего левого блока AL, которые являются смежными с текущим блоком в текущем изображении на фиг. 2, могут использоваться в качестве соседних блоков, используемых для получения предсказанных кандидатов векторов движения. Кроме того, блок, расположенный в опорном изображении (которое может быть таким же или отличным от опорного изображения, используемого для предсказания текущего блока), отличном от текущего изображения, включающего в себя текущий блок, может использоваться в качестве соседних блоков, используемых для получения предсказанных кандидатов векторов движения. Например, могут использоваться совмещенный блок, который находится в том же положении, что и текущий блок, или блоки, смежные с совмещенным блоком в опорном изображении.[49] Another way to encode motion information is the AMVP mode. In AMVP mode, inter-predictor 124 is configured to obtain predicted motion vector candidates for the motion vector of the current block using neighboring blocks of the current block. All or part of a left block L, an upper block A, an upper right block AR, a lower left block BL and an upper left block AL that are adjacent to the current block in the current image in FIG. 2 can be used as neighboring blocks used to obtain predicted motion vector candidates. In addition, a block located in a reference picture (which may be the same or different from the reference picture used to predict the current block) other than the current picture including the current block can be used as neighboring blocks used to obtain predicted candidate motion vectors. For example, a registered block that is in the same position as the current block, or blocks adjacent to a registered block in the reference image, may be used.

[50] Интер-предиктор 124 конфигурирован для получения предсказанных кандидатов векторов движения с использованием векторов движения соседних блоков и определения предсказанного вектора движения для вектора движения текущего блока с использованием предсказанных кандидатов векторов движения. Затем вычисляют разность векторов движения путем вычитания предсказанного вектора движения из вектора движения текущего блока.[50] The inter-predictor 124 is configured to obtain predicted motion vector candidates using the motion vectors of neighboring blocks and determine a predicted motion vector for the motion vector of the current block using the predicted motion vector candidates. The motion vector difference is then calculated by subtracting the predicted motion vector from the motion vector of the current block.

[51] Предсказанный вектор движения может быть получен путем применения заранее определенной функции (например, функции для вычисления медианы, среднего значения и т.п.) к предсказанным кандидатам векторов движения. В частности, устройство декодирования видео также "знает" предопределенную функцию. Поскольку соседние блоки, используемые для получения предсказанных кандидатов векторов движения, уже были кодированы и декодированы, устройство декодирования видео также уже "знает" векторы движения соседних блоков. Соответственно, устройству кодирования видео не требуется кодировать информацию для идентификации предсказанных кандидатов векторов движения. Следовательно, в этом случае кодируется информация о разности векторов движения и информация об опорном изображении, используемом для предсказания текущего блока.[51] The predicted motion vector can be obtained by applying a predetermined function (eg, a function for calculating the median, average value, etc.) to the predicted motion vector candidates. In particular, the video decoding device also "knows" the predefined function. Since the neighboring blocks used to obtain the predicted motion vector candidates have already been encoded and decoded, the video decoder also already knows the motion vectors of the neighboring blocks. Accordingly, the video encoding apparatus does not need to encode information to identify predicted motion vector candidates. Therefore, in this case, motion vector difference information and reference image information used for predicting the current block are encoded.

[52] Предсказываемый вектор движения может быть определен путем выбора любого одного из предсказанных кандидатов векторов движения. В частности, информация для идентификации выбранного предсказанного кандидата вектора движения дополнительно кодируется вместе с информацией о разности векторов движения и информацией об опорном изображении, которые предназначены для использования для предсказания текущего блока.[52] The predicted motion vector can be determined by selecting any one of the predicted motion vector candidates. Specifically, information for identifying the selected predicted motion vector candidate is further encoded together with motion vector difference information and reference image information, which are to be used for predicting the current block.

[53] Вычитатель 130 конфигурирован для вычитания блока предсказания, сгенерированного интра-предиктором 122 или интер-предиктором 124, из текущего блока для генерирования остаточного блока. Преобразователь 140 может быть конфигурирован для разделения остаточного блока на один или несколько субблоков и применения преобразования к одному или нескольким субблокам, тем самым преобразуя остаточные значения блоков преобразования из области отчетов в область частот. В области частот преобразованные блоки называются блоками коэффициентов или блоками преобразования, содержащими одно или более значений коэффициентов преобразования. Ядро двумерного преобразования может использоваться для преобразования, а ядра одномерного преобразования могут использоваться для горизонтального преобразования и вертикального преобразования соответственно. Ядра преобразования могут быть основаны на дискретном косинусном преобразовании (DCT), дискретном синусоидальном преобразовании (DST) или другом подобном.[53] Subtractor 130 is configured to subtract a prediction block generated by intra-predictor 122 or inter-predictor 124 from the current block to generate a residual block. Converter 140 may be configured to divide a residual block into one or more subblocks and apply a transform to one or more subblocks, thereby converting the residual values of the transform blocks from the reporting domain to the frequency domain. In the frequency domain, transformed blocks are called coefficient blocks or transform blocks containing one or more transform coefficient values. The two-dimensional transformation kernel can be used for transformation, and the one-dimensional transformation kernels can be used for horizontal transformation and vertical transformation, respectively. The transform kernels may be based on discrete cosine transform (DCT), discrete sine transform (DST), or the like.

[54] Преобразователь 140 может быть конфигурирован для преобразования остаточных сигналов в остаточном блоке с использованием всего размера остаточного блока в качестве единицы преобразования. В качестве альтернативы, остаточный блок может быть разделен на множество субблоков, и остаточные сигналы в субблоках могут быть преобразованы с использованием субблока в качестве единицы преобразования.[54] Converter 140 may be configured to convert residual signals in a residual block using the entire size of the residual block as a conversion unit. Alternatively, the residual block may be divided into a plurality of subblocks, and the residual signals in the subblocks may be converted using the subblock as a conversion unit.

[55] Преобразователь 140 может быть выполнен с возможностью индивидуального преобразования остаточного блока в горизонтальном направлении и вертикальном направлении. Для преобразования могут использоваться различные типы функций преобразования или матриц преобразования. Например, пары функций преобразования для горизонтального преобразования и вертикального преобразования могут быть определены как набор множественных преобразований (MTS). Преобразователь 140 может быть конфигурирован для выбора одой пары функций преобразования, имеющих наибольшую эффективность преобразования в MTS, и преобразования остаточного блока в горизонтальном и вертикальном направлениях соответственно. Информация (mts_idx) о паре функций преобразования, выбранных в MTS, кодируется энтропийным кодером 155 и передается в устройство декодирования видео.[55] The converter 140 may be configured to individually convert the residual block in the horizontal direction and the vertical direction. Various types of transformation functions or transformation matrices can be used for transformation. For example, pairs of transform functions for a horizontal transform and a vertical transform may be defined as a multiple transform set (MTS). Converter 140 may be configured to select one pair of transform functions having the greatest conversion efficiency in the MTS, and transform the residual block in the horizontal and vertical directions, respectively. Information (mts_idx) about the pair of transform functions selected in the MTS is encoded by the entropy encoder 155 and transmitted to the video decoding device.

[56] Квантователь 145 конфигурирован для квантования коэффициентов преобразования, выводимых из преобразователя 140, с использованием параметров квантования, и вывода квантованных коэффициентов преобразования в энтропийный кодер 155. Для некоторых блоков или кадров, квантователь 145 может быть конфигурирован для непосредственного квантования соответствующего остаточного блока без преобразования. Квантователь 145 может быть конфигурирован для применения различных коэффициентов квантования (значений масштабирования) согласно положениям коэффициентов преобразования в блоке преобразования. Матрица квантованных коэффициентов, применяемых к двумерно скомпонованным квантованным коэффициентам преобразования, может быть кодирована и сигнализирована в устройство декодирования видео.[56] Quantizer 145 is configured to quantize transform coefficients output from transformer 140 using quantization parameters, and output the quantized transform coefficients to entropy encoder 155. For some blocks or frames, quantizer 145 may be configured to directly quantize the corresponding residual block without transform. . Quantizer 145 may be configured to apply different quantization factors (scale values) according to the positions of the transform coefficients in the transform block. A matrix of quantized coefficients applied to the two-dimensionally arranged quantized transform coefficients may be encoded and signaled to a video decoding device.

[57] Модуль 150 переупорядочения может быть конфигурирован для пересортировки значений коэффициентов для квантованного остаточного значения. Модуль 150 переупорядочения может быть конфигурирован для преобразования двумерного массива коэффициентов в одномерную последовательность коэффициентов посредством сканирования коэффициентов. Например, модуль 150 переупорядочения может быть конфигурирован для сканирования коэффициентов от коэффициента прямого тока (DC) до коэффициента в высокочастотной области с использованием зигзагообразного сканирования или диагонального сканирования для вывода одномерной последовательности коэффициентов. В зависимости от размера единицы преобразования и режима интра-предсказания, вертикальное сканирование, при котором двумерный массив коэффициентов сканируется в направлении столбцов, или горизонтальное сканирование, в котором двумерные блочные коэффициенты сканирование в направлении сток, может использоваться вместо зигзагообразного сканирования. Другими словами, используемый режим сканирования может быть определен среди зигзагообразного сканирования, диагонального сканирования, вертикального сканирования и горизонтального сканирования в соответствии с размером единицы преобразования и режимом интра-предсказания.[57] Reordering module 150 may be configured to reorder coefficient values for the quantized residual value. The reordering module 150 may be configured to convert a two-dimensional array of coefficients into a one-dimensional sequence of coefficients by scanning the coefficients. For example, reordering module 150 may be configured to scan coefficients from a forward current (DC) coefficient to a high-frequency domain coefficient using a zigzag scan or a diagonal scan to output a one-dimensional sequence of coefficients. Depending on the size of the transform unit and the intra-prediction mode, vertical scanning, in which a two-dimensional array of coefficients is scanned in the column direction, or horizontal scanning, in which two-dimensional block coefficients are scanned in the drain direction, can be used instead of zigzag scanning. In other words, the scanning mode used can be determined among zigzag scanning, diagonal scanning, vertical scanning and horizontal scanning according to the size of the transformation unit and the intra-prediction mode.

[58] Энтропийный кодер 155 конфигурирован для кодирования одномерных квантованных коэффициентов преобразования, выводимых из модуля 150 переупорядочения, с использованием различных процедур кодирования, таких как контекстно-зависимый адаптивный двоичный арифметический код (CABAC) и экспоненциальный код Голомба, для генерации битового потока. Энтропийный кодер 155 конфигурирован для кодирования информации, такой как размер CTU, флаг разделения CU, флаг разделения QT, тип разделения MTT и направление разделения MTT, которые связаны с разделением блоков, так что устройство декодирования видео может разделять блок так же, как в устройстве кодирования видео. [58] Entropy encoder 155 is configured to encode one-dimensional quantized transform coefficients output from reordering unit 150 using various encoding procedures such as context-sensitive adaptive binary arithmetic code (CABAC) and exponential Golomb code to generate a bit stream. The entropy encoder 155 is configured to encode information such as CTU size, CU partition flag, QT partition flag, MTT partition type, and MTT partition direction, which are associated with block partitioning, so that the video decoding apparatus can partition the block in the same way as in the encoding apparatus. video.

[59] Кроме того, энтропийный кодер 155 конфигурирован для кодирования информации о типе предсказания, указывающей, закодирован ли текущий блок посредством интра-предсказания или интер-предсказания, и кодирует информацию интра-предсказания (т.е. информацию о режиме интра-предсказания) или информация интер-предсказания (индекс слияния для режима слияния, информацию об индексе опорного изображения и разность векторов движения для режима AMVP) согласно типу предсказания. Энтропийный кодер 155 также кодирует информацию, относящуюся к квантованию, то есть информацию о параметрах квантования и информацию о матрице квантования.[59] In addition, the entropy encoder 155 is configured to encode prediction type information indicating whether the current block is encoded by intra-prediction or inter-prediction, and encodes intra-prediction information (i.e., intra-prediction mode information) or inter-prediction information (fusion index for the fusion mode, reference image index information, and motion vector difference for the AMVP mode) according to the prediction type. The entropy encoder 155 also encodes quantization-related information, that is, quantization parameter information and quantization matrix information.

[60] Обратный квантователь 160 конфигурирован для обратного квантования квантованных коэффициентов преобразования, выводимых из квантователя 145, для генерации коэффициентов преобразования. Обратный преобразователь 165 конфигурирован для преобразования коэффициентов преобразования, выводимых из обратного квантователя 160, из частотной области в пространственную область, и для восстановления остаточного блока. [60] The inverse quantizer 160 is configured to inversely quantize the quantized transform coefficients output from the quantizer 145 to generate transform coefficients. The inverse converter 165 is configured to convert the conversion coefficients output from the inverse quantizer 160 from the frequency domain to the spatial domain, and to reconstruct the residual block.

[61] Кроме того, сумматор 170 конфигурирован для добавления восстановленного остаточного блока к блоку предсказания, сгенерированному предиктором 120, для восстановления текущего блока. Отсчеты в восстановленном текущем блоке используются в качестве опорных отсчетов при выполнении интра-предсказания следующего блока. Модуль 180 петлевого фильтра конфигурирован для фильтрации восстановленных отсчетов для уменьшения артефактов блочности, артефактов звонка и артефактов размытия, генерируемых из-за поблочного предсказания и преобразования/квантования. Модуль 180 петлевого фильтра может включать в себя по меньшей мере фильтр 182 удаления блочности, фильтр 184 с адаптивным смещением отсчета (SAO) и адаптивный петлевой фильтр (ALF) 186.[61] In addition, the adder 170 is configured to add the reconstructed residual block to the prediction block generated by the predictor 120 to recover the current block. The samples in the reconstructed current block are used as reference samples when performing intra-prediction of the next block. Loop filter module 180 is configured to filter the reconstructed samples to reduce blocking artifacts, ringing artifacts, and blur artifacts generated due to block-by-block prediction and transform/quantization. Loop filter module 180 may include at least a deblocking filter 182, an adaptive sample offset (SAO) filter 184, and an adaptive loop filter (ALF) 186.

[62] Фильтр 182 удаления блочности конфигурирован для фильтрации границы между восстановленными блоками, чтобы удалить артефакт блочности, вызванный поблочным кодированием/декодированием, а фильтр 184 SAO выполняет дополнительную фильтрацию видео, отфильтрованного с удалением блочности. SAO-фильтр 184 представляет собой фильтр, используемый для компенсации разницы между восстановленным отсчетом и исходным отсчетом, вызванной кодированием с потерями, и выполняет фильтрацию таким образом, что добавляет соответствующее смещение к каждому восстановленному отсчету. ALF 186 конфигурирован для выполнения фильтрации целевого отсчета, подлежащего фильтрации, путем применения коэффициентов фильтрации к целевому отсчету и соседним отсчетам целевого отсчета. ALF 186 может быть конфигурирован разделять отсчеты, включенные в изображение, на заранее определенные группы, а затем определять один фильтр, который должен быть применен к соответствующей группе, для дифференциального осуществления фильтрации в каждой группе. Информация о коэффициентах фильтра, которые должны использоваться для ALF, может кодироваться и передаваться в устройство декодирования видео.[62] A deblocking filter 182 is configured to filter the boundary between reconstructed blocks to remove blocking artifact caused by block encoding/decoding, and an SAO filter 184 performs additional filtering on the deblocking filtered video. The SAO filter 184 is a filter used to compensate for the difference between the reconstructed sample and the original sample caused by lossy encoding, and performs filtering such that it adds a corresponding offset to each reconstructed sample. ALF 186 is configured to perform filtering on a target sample to be filtered by applying filter coefficients to the target sample and adjacent samples of the target sample. ALF 186 may be configured to divide the samples included in the image into predefined groups, and then determine a single filter to be applied to the corresponding group to perform filtering differentially in each group. Information about the filter coefficients to be used for the ALF may be encoded and transmitted to the video decoding device.

[63] Восстановленные блоки, отфильтрованные через модуль 180 петлевого фильтра, сохраняются в памяти 190. Когда все блоки в одном изображении восстановлены, восстановленное изображение может использоваться в качестве опорного изображения для интер-предсказания блоков в изображении, подлежащим последующему кодированию.[63] The reconstructed blocks filtered through the loop filter unit 180 are stored in the memory 190. When all the blocks in one image are reconstructed, the reconstructed image can be used as a reference image for inter-prediction of blocks in an image to be subsequently encoded.

[64] Фиг. 5 - примерная функциональная блочная схема устройства декодирования видео, выполненного с возможностью реализации технологии согласно настоящему раскрытию. Далее устройство декодирования видео и элементы устройства будут описаны со ссылкой на фиг. 5. Устройство декодирования видео может включать в себя энтропийный декодер 510, модуль 515 переупорядочения, обратный квантователь 520, обратный преобразователь 530, предиктор 540, сумматор 550, модуль 560 петлевого фильтра и память 570.[64] FIG. 5 is an exemplary functional block diagram of a video decoding apparatus configured to implement the technology of the present disclosure. Next, the video decoding device and elements of the device will be described with reference to FIG. 5. The video decoding apparatus may include an entropy decoder 510, a reordering module 515, an inverse quantizer 520, an inverse transformer 530, a predictor 540, an adder 550, a loop filter module 560, and a memory 570.

[65] Подобно устройству кодирования видео с фиг. 1, каждый элемент устройства декодирования видео может быть реализован в виде аппаратного обеспечения, программного обеспечения или комбинации аппаратного и программного обеспечения. Кроме того, функция каждого элемента может быть реализована в программном обеспечении, а микропроцессор может быть реализован для выполнения функции программного обеспечения, соответствующей каждому элементу. [65] Similar to the video encoding apparatus of FIG. 1, each element of a video decoding apparatus may be implemented as hardware, software, or a combination of hardware and software. In addition, the function of each element may be implemented in software, and a microprocessor may be implemented to execute the software function corresponding to each element.

[66] Энтропийный декодер 510 конфигурирован для определения текущего блока, который должен быть декодирован, путем декодирования битового потока, сгенерированного устройством кодирования видео, и извлечения информации, относящейся к блочному разделению, и извлечения информации предсказания и информации остаточного сигнала и т.п., необходимых для восстановления текущего блока. Кроме того, энтропийный декодер 510 конфигурирован для извлечения информации о размере CTU из набора параметров последовательности (SPS) или набора параметров изображения (PPS), определяет размер CTU и разбивает изображение на единицы CTU определенного размера. Затем декодер конфигурирован определять CTU как самый верхний уровень, то есть корневой узел, древовидной структуры, и извлекать информацию о разделении CTU для разделения CTU с использованием древовидной структуры.[66] The entropy decoder 510 is configured to determine the current block to be decoded by decoding the bit stream generated by the video encoding apparatus and extracting block division related information and extracting prediction information and residual signal information and the like. necessary to restore the current block. In addition, entropy decoder 510 is configured to extract CTU size information from a Sequence Parameter Set (SPS) or Picture Parameter Set (PPS), determines the CTU size, and splits the image into CTUs of a certain size. The decoder is then configured to determine the CTU as the topmost level, that is, the root node, of the tree structure, and retrieve CTU partitioning information to partition the CTU using the tree structure.

[67] Например, когда CTU разделяется с использованием структуры QTBTTT, первый флаг (QT_split_flag), связанный с разделением QT, извлекается для разделения каждого узла на четыре узла подуровня. Для узла, соответствующего конечному узлу QT, извлекаются второй флаг (MTT_split_flag) и информация о направлении разделения (вертикальное/горизонтальное) и/или о типе разделения (двоичное/троичное), относящиеся к разделению MTT для разделения соответствующего листового узла в структуре MTT. Соответственно, каждый узел ниже листового узла QT рекурсивно разделяется в структуре BT или TT.[67] For example, when a CTU is split using the QTBTTT structure, the first flag (QT_split_flag) associated with the QT split is retrieved to split each node into four sublayer nodes. For a node corresponding to a leaf QT node, a second flag (MTT_split_flag) and split direction (vertical/horizontal) and/or split type (binary/ternary) information related to the MTT split are retrieved to split the corresponding leaf node in the MTT structure. Accordingly, each node below the leaf node QT is recursively split into a BT or TT structure.

[68] В качестве другого примера, когда CTU разделяют с использованием структуры QTBTTT, может быть извлечен флаг разделения CU (split_cu_flag), указывающий, следует ли разделить CU. Когда соответствующий блок разделен, может быть извлечен первый флаг (QT_split_flag). В операции разделения ноль или более рекурсивных МТТ-разделений может происходить для каждого узла после нулевого или более рекурсивных QT-разделений. Например, CTU может быть конфигурирована так, чтобы непосредственно подвергаться MTT-разделению без QT-разделения или многократно подвергаться только QT-разделению.[68] As another example, when a CTU is split using a QTBTTT structure, a CU split flag (split_cu_flag) may be retrieved indicating whether the CU should be split. When the corresponding block is split, the first flag (QT_split_flag) can be retrieved. In a split operation, zero or more recursive MTT splits can occur for each node after zero or more recursive QT splits. For example, a CTU may be configured to directly undergo MTT partitioning without QT partitioning, or to repeatedly undergo only QT partitioning.

[69] В качестве другого примера, когда CTU разделяют с использованием структуры QTBT, извлекают первый флаг (QT_split_flag), связанный с QT-разделением, и каждый узел разделяют на четыре узла нижнего уровня. Затем извлекается флаг разделения (split_flag), указывающий, разделяется ли узел, соответствующий листовому узлу QT, дополнительно в BT и информацию о направлении разделения.[69] As another example, when a CTU is split using a QTBT structure, the first flag (QT_split_flag) associated with the QT split is retrieved, and each node is split into four lower-level nodes. Then, a split flag (split_flag) is retrieved indicating whether the node corresponding to the QT leaf node is split further into BT and split direction information.

[70] Как только текущий блок, подлежащий декодированию, определен посредством разделения в древовидной структуре, энтропийный декодер 510 конфигурирован извлекать информацию о типе предсказания, указывающую, является ли текущий блок интра-предсказанным или интер-предсказанным. Когда информация о типе предсказания указывает на интра-предсказание, энтропийный декодер 510 конфигурирован для извлечения элемента синтаксиса для информации интра-предсказания (режим интра-предсказания) для текущего блока. Когда информация о типе предсказания указывает на интер-предсказание, энтропийный декодер 510 конфигурирован извлекать элемент синтаксиса для информации интер-предсказания, то есть информацию, указывающую вектор движения и опорное изображение, на которое ссылается вектор движения.[70] Once the current block to be decoded is determined by partitioning in the tree structure, the entropy decoder 510 is configured to extract prediction type information indicating whether the current block is intra-predicted or inter-predicted. When the prediction type information indicates intra-prediction, the entropy decoder 510 is configured to extract a syntax element for intra-prediction information (intra-prediction mode) for the current block. When the prediction type information indicates inter-prediction, the entropy decoder 510 is configured to extract a syntax element for the inter-prediction information, that is, information indicating the motion vector and the reference image referenced by the motion vector.

[71] Энтропийный декодер 510 также конфигурирован для извлечения информации о квантованных коэффициентах преобразования текущего блока в качестве информации, относящейся к квантованию, и информации об остаточных сигналах. Модуль 515 переупорядочения может быть конфигурирован для изменения последовательности одномерных квантованных коэффициентов преобразования, энтропийно декодированных энтропийным декодером 510, на двумерный массив коэффициентов (то есть блок) в порядке, обратном сканированию коэффициентов, выполняемому устройством кодирования видео.[71] The entropy decoder 510 is also configured to extract information about the quantized transform coefficients of the current block as quantization-related information and residual signal information. Reordering module 515 may be configured to change the sequence of one-dimensional quantized transform coefficients entropy decoded by entropy decoder 510 into a two-dimensional coefficient array (ie, block) in the reverse order of the coefficient scan performed by the video encoding device.

[72] Обратный квантователь 520 выполнен с возможностью обратного квантования квантованных коэффициентов преобразования с использованием параметра квантования. Обратный квантователь 520 может быть конфигурирован для применения различных коэффициентов квантования (значений масштабирования) к квантованным коэффициентам преобразования, размещенным в двух измерениях. Обратный квантователь 520 может быть конфигурирован для выполнения обратного квантования путем применения матрицы коэффициентов квантования (значений масштабирования) от устройства кодирования видео к двумерному массиву квантованных коэффициентов преобразования.[72] Inverse quantizer 520 is configured to inversely quantize the quantized transform coefficients using a quantization parameter. The inverse quantizer 520 may be configured to apply different quantization factors (scaling values) to the quantized transform coefficients located in two dimensions. Inverse quantizer 520 may be configured to perform inverse quantization by applying a matrix of quantization coefficients (scale values) from the video encoder to a two-dimensional array of quantized transform coefficients.

[73] Обратный преобразователь 530 выполнен с возможностью обратного преобразования обратно квантованных коэффициентов преобразования из частотной области в пространственную для восстановления остаточных сигналов, тем самым генерируя восстановленный остаточный блок для текущего блока. Кроме того, когда применяется MTS, обратный преобразователь 530 конфигурирован для определения функций преобразования или матриц преобразования, которые должны применяться в горизонтальном и вертикальном направлениях, соответственно, с использованием информации MTS (mts_idx), передаваемой из устройства кодирования видео, и использования определенных функций преобразования для обратного преобразования коэффициентов преобразования в блоке преобразования в горизонтальном и вертикальном направлениях.[73] The inverse converter 530 is configured to inversely convert the inversely quantized transform coefficients from the frequency domain to the spatial domain to restore the residual signals, thereby generating a reconstructed residual block for the current block. In addition, when MTS is applied, the inverter 530 is configured to determine transform functions or transform matrices to be applied in the horizontal and vertical directions, respectively, using MTS information (mts_idx) transmitted from the video encoding device, and use the determined transform functions to inverse conversion of the conversion coefficients in the conversion block in the horizontal and vertical directions.

[74] Предиктор 540 может включать в себя интра-предиктор 542 и интер-предиктор 544. Интра-предиктор 542 активируют, когда тип предсказания текущего блока является интра-предсказанием, а интер-предиктор 544 активируют, когда тип предсказания текущего блока является интер-предсказанием. Интра-предиктор 542 конфигурирован для определения режима интра-предсказания текущего блока среди множества режимов интра-предсказания на основе элемента синтаксиса для режима интра-предсказания, извлеченного из энтропийного декодера 510, и предсказания текущего блока с использованием опорных отсчетов вокруг текущего блока в соответствии с режимом интра-предсказания.[74] Predictor 540 may include intra predictor 542 and inter predictor 544. Intra predictor 542 is activated when the prediction type of the current block is intra prediction, and inter predictor 544 is activated when the prediction type of the current block is inter-prediction. prediction. The intra predictor 542 is configured to determine the intra prediction mode of the current block among the plurality of intra prediction modes based on the syntax element for the intra prediction mode extracted from the entropy decoder 510, and predict the current block using reference samples around the current block in accordance with the mode intra-predictions.

[75] Интер-предиктор 544 конфигурирован для определения вектора движения текущего блока и опорного изображения, на которое ссылается вектор движения, с использованием элемента синтаксиса для режима интра-предсказания, извлеченного из энтропийного декодера 510, и предсказания текущего блока на основе вектора движения и опорного изображения. Сумматор 550 конфигурирован для восстановления текущего блока путем добавления остаточного блока, выводимого из обратного преобразователя, и блока предсказания, выводимого из интер-предиктора или интра-предиктора. Отсчеты в восстановленном текущем блоке используются в качестве опорных отсчетов при интра-предсказании блока, подлежащего декодированию следующим.[75] The inter-predictor 544 is configured to determine the motion vector of the current block and a reference image referenced by the motion vector using an intra-prediction mode syntax element extracted from the entropy decoder 510, and predict the current block based on the motion vector and the reference Images. The adder 550 is configured to reconstruct the current block by adding a residual block output from the inverter and a prediction block output from the inter-predictor or intra-predictor. The samples in the reconstructed current block are used as reference samples in intra-prediction of the block to be decoded next.

[76] Модуль 560 петлевого фильтра может включать в себя по меньшей мере один из фильтра 562 удаления блочности, фильтра 564 SAO и фильтра 566 ALF. Фильтр 562 удаления блочности фильтрует границу между восстановленными блоками для удаления артефактов блочности, вызванных поблочным декодированием. SAO-фильтр 564 конфигурирован для выполнения фильтрации способом добавления восстановленного блока после фильтрации удаления блочности к соответствующим смещениям, чтобы компенсировать разницу между восстановленным отсчетом и исходным отсчетом, вызванную кодированием с потерями. ALF 566 конфигурирован для выполнения фильтрации целевого отсчета, подлежащего фильтрации, путем применения коэффициентов фильтрации к целевому отсчету и соседним отсчетам целевого отсчета. ALF 566 может быть конфигурирован разделять отсчеты в изображении на заранее определенные группы, а затем определять один фильтр, который должен быть применен к соответствующей группе, для дифференциального осуществления фильтрации в каждой группе. Коэффициент фильтрации ALF определяется на основе информации о коэффициенте фильтрации, декодированной из битового потока.[76] Loop filter module 560 may include at least one of deblocking filter 562, SAO filter 564, and ALF filter 566. A deblocking filter 562 filters the boundary between reconstructed blocks to remove blocking artifacts caused by block-by-block decoding. The SAO filter 564 is configured to perform filtering by adding the reconstructed block after deblocking filtering to the corresponding offsets to compensate for the difference between the reconstructed sample and the original sample caused by lossy encoding. ALF 566 is configured to perform filtering of a target sample to be filtered by applying filter coefficients to the target sample and adjacent samples of the target sample. ALF 566 can be configured to separate samples in an image into predefined groups, and then determine a single filter to be applied to the corresponding group to perform filtering differentially in each group. The filter factor ALF is determined based on the filter factor information decoded from the bit stream.

[77] Восстановленный блок, отфильтрованный через модуль 560 петлевого фильтра, сохраняется в памяти 570. Когда все блоки в одном изображении восстановлены, восстановленное изображение может использоваться в качестве опорного изображения для интер-предсказания блоков в подлежащем последующему кодированию изображении.[77] The reconstructed block filtered through the loop filter unit 560 is stored in the memory 570. When all blocks in one image are reconstructed, the reconstructed image can be used as a reference image for inter-prediction of blocks in the image to be subsequently encoded.

[78] Следующее раскрытие относится к инструментам кодирования для улучшения характеристик сжатия интер-предсказания, которые могут управляться интер-предиктором 124 устройства кодирования видео и интер-предиктором 544 устройства декодирования видео. Используемый здесь термин «целевой блок» может иметь то же значение, что и термины «текущий блок» или «единица кодирования (CU)», использованные выше, или может означать частичную область CU.[78] The following disclosure relates to encoding tools for improving inter-prediction compression characteristics that can be controlled by video encoding device inter-predictor 124 and video decoding device inter-predictor 544. As used herein, the term "target block" may have the same meaning as the terms "current block" or "coding unit (CU)" used above, or may mean a partial area of the CU.

[79] I. Двунаправленный оптический поток[79] I. Bidirectional optical flow

[80] Двунаправленный оптический поток - это метод дополнительной компенсации перемещений отчетов, предсказанных с использованием двунаправленного предсказания движения, при условии, что отсчеты или объекты, составляющие видео, перемещаются с постоянной скоростью и что значения отсчетов мало меняются.[80] Bidirectional optical flow is a method of additionally compensating for motions of reports predicted using bidirectional motion prediction, provided that the samples or objects composing the video move at a constant speed and that the sample values change little.

[81] Фиг. 6 представляет собой примерную схему, иллюстрирующую основную концепцию BIO. Предполагается, что двунаправленные векторы движения MV0 и MV1, указывающие на соответствующие области (т.е. опорные блоки), наиболее похожие на подлежащий кодированию целевой блок в текущем изображении, были определены в опорных изображениях Ref0 и Ref1 посредством (нормального) двунаправленного предсказания движения для целевого блока. Два вектора движения имеют значения, представляющие движение всего целевого блока. В примере на фиг. 6, P0 представляет собой отсчет в опорном изображении Ref0, указанный вектором движения MV0 и соответствующий отсчету P в целевом блоке, а P1 представляет собой отсчет в опорном изображении Ref1, указанный вектором движения MV1 и соответствующий отсчету P в целевом блоке.[81] FIG. 6 is an example diagram illustrating the basic concept of BIO. It is assumed that the bidirectional motion vectors MV0 and MV1 pointing to the corresponding regions (i.e. reference blocks) most similar to the target block to be encoded in the current image have been determined in the reference images Ref0 and Ref1 by (normal) bidirectional motion prediction for target block. The two motion vectors have values representing the motion of the entire target block. In the example in FIG. 6,P0 is the sample in the reference image Ref0 indicated by the motion vector MV0 and corresponding to the sample P in the target block, and P1 represents the sample in the reference image Ref1, indicated by the motion vector MV1 and corresponding to the sample P in the target block.

[82] Кроме того, предполагается, что движение для отсчета P на фиг. 6 немного отличается от общего движения целевого блока. Например, когда объект, расположенный в отсчете A в Ref0 на фиг. 6 перемещается к отсчету B в Ref1 через отсчет P в целевом блоке текущего изображения, отсчет A и отсчет B могут иметь значения, очень похожие друг на друга. Кроме того, в этом случае точкой в Ref0, наиболее похожей на отсчет P в целевом блоке, является не P0, указанный двунаправленным вектором движения MV0, а отсчет A, сдвинутый от P0 на предопределенный вектор смещения (vxt0, vyt1). Точкой в Ref1, наиболее похожей на отсчет P в целевом блоке, является не P1, указанный двунаправленным вектором движения MV1, а отсчет B, который был сдвинут от P1 на заданный вектор смещения (-vxt0, -vyt1). В частности, t0 и t1 обозначают расстояния Ref0 и Ref1 по оси времени по отношению к текущему изображению, соответственно, и вычисляются на основе счетчика порядка изображений (POC). Далее (vx, vy) называется «оптическим потоком».[82] In addition, it is assumed that the motion for reference P in FIG. 6 is slightly different from the general movement of the target block. For example, when an object located at sample A in Ref0 in FIG. 6 moves to reference B in Ref1 through sample P in the target block of the current image, sample A and sample B can have values very similar to each other. Moreover, in this case, the point in Ref0, most similar to the sample P in the target block is not P0, indicated by the bidirectional motion vector MV0, and the reference A, shifted fromP0 to a predefined displacement vector (vxt0,vyt1). The point in Ref1 most similar to sample P in the target block is not P1, indicated by the bidirectional motion vector MV1, and the reference B, which has been shifted from P1 to a given displacement vector (-vxt0, -vyt1). In particular, t0 and t1 indicate distances Ref0 and Ref1 along the time axis with respect to the current image, respectively, and are calculated based on the Picture Order Counter (POC). Next (vx, vy) is called "optical flow".

[83] При предсказании значения отсчета P текущего блока в текущем изображении два опорных отсчета A и B обеспечивают более точное предсказание, чем опорные отсчеты P0 и P1, указанные двунаправленными векторами движения MV0 и MV1. В частности, I(0) (i,j) обозначает значение отсчета в опорном изображении Ref0, указанного вектором движения MV0 в качестве соответствующего отсчету (i,j) в целевом блоке, и I(1) (i,j) обозначает значение отсчета в опорном изображении Ref1, указанного вектором движения MV1 в качестве соответствующего отсчету (i,j) в целевом блоке.[83] When predicting the sample value P of the current block in the current image, the two reference samples A and B provide a more accurate prediction than the reference samples P 0 and P 1 indicated by the bidirectional motion vectors MV 0 and MV 1 . Specifically, I (0) (i,j) denotes the value of the sample in the reference image Ref0 indicated by the motion vector MV 0 as corresponding to the sample (i,j) in the target block, and I (1) (i,j) denotes the value a sample in the reference image Ref 1 indicated by the motion vector MV 1 as corresponding to a sample (i,j) in the target block.

[84] Значение отсчета A в опорном изображении Ref0, указанное вектором движения BIO (vx, vy) как соответствующее отсчету в целевом блоке, может быть определено как I(0) (i+ vxt0, j +vyt0), а значение отсчета B в опорном изображении Ref1 может быть определено как I(1)(i - vxt1, j - vyt1).Здесь, когда линейная аппроксимация выполняется с использованием только члена первого порядка ряда Тейлора, A и B могут быть выражены как уравнение 1.[84] The sample value A in the reference image Ref 0 indicated by the motion vector BIO (v x , v y ) as corresponding to the sample in the target block can be defined as I (0) (i+ v x t 0 , j +v y t 0 ), and the sample value B in the reference image Ref1 can be defined as I (1) (i - v x t 1 , j - v y t 1 ). Here, when the linear approximation is performed using only the first order term of the Taylor series, A and B can be expressed as Equation 1.

Уравнение 1Equation 1

[85] где Ix (k) и Iy (k) (k = 0, 1) - значения градиента в горизонтальном и вертикальном направлениях в положении (i, j) в Ref0 и Ref1. Кроме того, t0 и t1 обозначают расстояния по оси времени для Ref0 и Ref1 относительно текущего изображения, соответственно, и рассчитываются на основе POC: t0 = POC(текущее) - POC(Ref0) и t1 = POC(Ref1) - POC (текущий).[85] where Ix (k) and Iy (k) (k = 0, 1) - gradient values in horizontal and vertical directions at position (i, j) in Ref0 and Ref1. Besides,t0 Andt1 denote the time axis distances of Ref0 and Ref1 relative to the current image, respectively, and are calculated based on POC: t0 = POC(current) - POC(Ref0) and t1 = POC(Ref1) - POC (current).

[86] Двунаправленный оптический поток (vx, vy) каждого отсчета в блоке определяется как решение, которое минимизирует Δ, которое определяется как разница между отсчетом A и отсчетом B. При этом Δ может быть определена в уравнении 2 с использованием линейного приближения из A и B, полученных из уравнения 1.[86] The bidirectional optical flow (v x , v y ) of each sample in the block is defined as the solution that minimizes Δ, which is defined as the difference between sample A and sample B. Δ can be determined in Equation 2 using the linear approximation from A and B obtained from Equation 1.

Уравнение 2Equation 2

[87] Для простоты, положение (i, j) отсчета опущено в каждом члене уравнения 2.[87] For simplicity, the position (i, j) of the sample is omitted in each term of Equation 2.

[88] Для реализации более надежной оценки оптического потока предполагается, что движение локально согласуется с соседними отсчетами. Для BIO - вектора движения для отсчета (i, j), который в настоящее время должен быть предсказан, учитываются разности Δ в уравнении 2 для всех отсчетов (i', j'), присутствующих в маске Ω определенного размера, центрированной по отсчету (i, j). То есть оптический поток для текущего отсчета (i, j) может быть определен как вектор, минимизирующий целевую функцию Φ(vx, vy), представляющую собой сумму квадратов разностей Δ[i', j'] полученных для соответствующих отсчетов в маске Ω, как показано в уравнении 3.[88] To realize more reliable optical flow estimation, the motion is assumed to be locally consistent with neighboring samples. For BIO, the motion vector for the sample (i, j) that is currently to be predicted, the differences Δ in Equation 2 are taken into account for all samples (i', j') present in a mask Ω of a certain size centered on the sample (i , j). That is, the optical flow for the current sample (i, j) can be defined as a vector that minimizes the objective function Φ(v x , v y ), which is the sum of squared differences Δ[i', j'] obtained for the corresponding samples in the mask Ω , as shown in Equation 3.

Уравнение 3Equation 3

[89] Двунаправленный оптический поток согласно настоящему раскрытию может применяться в случае, когда одно из двух опорных изображений, используемых для двунаправленного предсказания, предшествует текущему изображению в порядке отображения, другое следует за текущим изображением, а расстояния от двух опорных изображений до текущего изображения равны друг другу, то есть разницы в счетчике порядка изображений (РОС) между каждым опорным изображением и текущим изображением равны друг другу. Следовательно, t0 и t1 можно игнорировать.[89] Bidirectional optical flow according to the present disclosure can be applied in the case where one of the two reference pictures used for bidirectional prediction precedes the current picture in the display order, the other follows the current picture, and the distances from the two reference pictures to the current picture are equal to each other. each other, that is, the differences in picture order counter (POC) between each reference picture and the current picture are equal to each other. Therefore, t 0 and t 1 can be ignored.

[90] Кроме того, двунаправленный оптический поток согласно настоящему раскрытию может применяться только к компонентам яркости. Двунаправленный оптический поток согласно настоящему раскрытию выполняется на основе субблоков, а не на основе пикселей, для целевого блока, к которому применяется двунаправленное предсказание. В нижеследующем описании для простоты предполагается, что субблок, который может иметь различные размеры 2×2, 4×4 и 8×8, имеет размер 4×4.[90] Moreover, the bidirectional optical flow according to the present disclosure can only be applied to luminance components. The bidirectional optical flow of the present disclosure is performed on a sub-block basis, rather than a pixel-based basis, for the target block to which the bidirectional prediction is applied. In the following description, for simplicity, it is assumed that the subblock, which can have various sizes of 2x2, 4x4 and 8x8, has a size of 4x4.

[91] Перед выполнением оптического потока интер-предиктор 124 устройства кодирования видео генерирует два опорных блока для целевого блока с использованием вышеупомянутого двунаправленного предсказания. Первый опорный блок из двух опорных блоков представляет собой блок, состоящий из предсказанных отсчетов, сгенерированных из опорного изображения Ref0 с использованием первого вектора MV0 движения целевого блока, а второй опорный блок представляет собой блок, состоящий из предсказанных отсчетов, сгенерированных из опорного изображения Ref1 с использованием вектора MV1 движения.[91] Before performing the optical flow, the inter-predictor 124 of the video encoding device generates two reference blocks for the target block using the above-mentioned bidirectional prediction. The first reference block of the two reference blocks is a block consisting of predicted samples generated from the reference image Ref0 using the first motion vector MV 0 of the target block, and the second reference block is a block consisting of predicted samples generated from the reference image Ref 1 using the motion vector MV 1 .

[92] Интер-предиктор 124 конфигурирован для вычисления (vx, vy), называемого оптическим потоком, для каждого из субблоков 4x4, составляющих целевой блок, с использованием значений горизонтального и вертикального градиента предсказанных отсчетов в первом опорном блоке и во втором опорном блоке. Оптический поток (vx, vy) определяется таким образом, чтобы разница между предсказанными отсчетами из опорного изображения Ref0 и предсказанными отсчетами из опорного изображения Ref1 была минимизирована. Интер-предиктор 124 конфигурирован для получения смещения отсчета для модификации двунаправленных предсказанных отсчетов для субблока 4×4 с использованием (vx, vy), вычисленного для субблока 4×4, и градиентов предсказанных отсчетов в субблоке 4×4.[92] Inter-predictor 124 is configured to calculate (v x , v y ), called optical flow, for each of the 4x4 sub-blocks constituting the target block using the horizontal and vertical gradient values of the predicted samples in the first reference block and in the second reference block . The optical flow (v x , v y ) is determined such that the difference between the predicted samples from the reference image Ref 0 and the predicted samples from the reference image Ref 1 is minimized. Inter-predictor 124 is configured to obtain a sample offset to modify bidirectional predicted samples for the 4x4 subblock using (v x , v y ) computed for the 4x4 subblock and gradients of the predicted samples in the 4x4 subblock.

[93] В частности, интер-предиктор 124 вычисляет горизонтальный и вертикальный градиенты значений отсчетов в положении (i, j) с использованием уравнения 4.[93] Specifically, inter-predictor 124 calculates the horizontal and vertical gradients of sample values at position (i, j) using Equation 4.

Уравнение 4Equation 4

[94] где k равно 0 или 1, а I(0) (i,j) и I(1) (i,j) обозначают значения отсчетов в положении (i,j) в первом опорном блоке и во втором опорном блоке, соответственно. Кроме того, Shift1 - это значение, полученное из битовой глубины компонента яркости, например, shift1 = max(6, bitDepth-6).[94] where k is 0 or 1, and I (0) (i,j) and I (1) (i,j) denote the sample values at position (i,j) in the first reference block and in the second reference block, respectively. Additionally, Shift1 is a value derived from the bit depth of the luma component, for example shift1 = max(6, bitDepth-6).

[95] Чтобы получить градиент отсчета, расположенного на границе каждого опорного блока, необходимы отсчеты за пределами границы первого опорного блока и второго опорного блока. Соответственно, как показано на фиг. 7, каждый опорный блок расширен на один столбец влево и вправо и на одну строку вверх и вниз. Чтобы уменьшить объем вычислений, каждый отсчет в расширенной части может быть заполнен отсчетом или целым отсчетом в ближайшем положении в опорном блоке. Кроме того, градиенты в положении отсчета за пределами границы каждого опорного блока могут быть дополнены градиентами, соответствующими отсчетам в ближайшем положении.[95] To obtain the gradient of a sample located at the boundary of each reference block, samples are required beyond the boundary of the first reference block and the second reference block. Accordingly, as shown in FIG. 7, each reference block is expanded one column left and right and one row up and down. To reduce the amount of computation, each sample in the extended part can be filled with a sample or an entire sample at the nearest position in the reference block. Additionally, gradients at a sample position outside the boundary of each reference block can be complemented by gradients corresponding to samples at a nearby position.

[96] Интер-предиктор 124 конфигурирован для вычисления S1, S2, S3, S5 и S6, соответствующих автокорреляции и взаимной корреляции градиентов, с использованием горизонтальных и вертикальных градиентов в окне 6x6, перекрывающем субблок 4x4, как показано на фиг. 7.[96] Inter-predictor 124 is configured to calculate S1, S2, S3, S5 and S6 corresponding to autocorrelation and cross-correlation gradients using horizontal and vertical gradients in a 6x6 window spanning a 4x4 subblock, as shown in FIG. 7.

Уравнение 5Equation 5

[97] где Ω обозначает окно, перекрывающее субблок. Кроме того, как показано в уравнении 6 ниже, Ψx(i,j) обозначает сумму значений горизонтального градиента в положении (i,j) в первом опорном блоке и втором опорном блоке, Ψy (i,j) обозначает сумму значений вертикального градиента в положении (i,j) в первом опорном блоке и во втором опорном блоке, а θ(i,j) обозначает разницу между значением отсчета в положении (i,j) во втором опорном блоке и значение отсчета в положении (i,j) в первом опорном блоке.[97] where Ω denotes the window spanning the subblock. Moreover, as shown in Equation 6 below, Ψx(i,j) denotes the sum of the horizontal gradient values at position (i,j) in the first reference block and the second reference block, Ψy(i,j) denotes the sum of the vertical gradient values at position (i,j) in the first reference block and in the second reference block, and θ(i,j) denotes the difference between the sample value at position (i,j) in the second reference block and the sample value at position (i,j) in the first support block.

Уравнение 6Equation 6

[98] где na и nb являются значениями, полученными из битовой глубины, и имеют значения min(1, bitDepth-11) и min(4, bitDepth-8).[98] where n a and n b are values derived from the bit depth and have the values min(1, bitDepth-11) and min(4, bitDepth-8).

[99] Интер-предиктор 124 конфигурирован для вычисления оптических потоков (vx, vy) для субблока 4x4 с использованием уравнения 7 на основе S1, S2, S3, S5 и S6.[99] Inter-predictor 124 is configured to calculate optical flows (v x , v y ) for a 4x4 subblock using Equation 7 based on S1, S2, S3, S5 and S6.

Уравнение 7Equation 7

[100] где, , и . является функцией округления, и .[100] where, , And . is a rounding function, and .

[101] Смещение отсчета для модификации предсказываемого отсчета в каждом положении отсчета (x, y) в субблоке 4x4 в целевом блоке может быть вычислено с использованием оптического потока, рассчитанного для субблока 4x4, и значений градиента в положении отсчета (x, y), как показано в уравнении 8. В уравнении 8 rnd() представляет собой операцию округления.[101] The sample offset for modifying the predicted sample at each sample position (x, y) in a 4x4 sub-block in the target block can be calculated using the optical flow calculated for the 4x4 sub-block and the gradient values at the sample position (x, y) as shown in Equation 8. In Equation 8, rnd() is a rounding operation.

Уравнение 8Equation 8

[102] Интер-предиктор 124 выполнен с возможностью генерировать окончательный предсказанный отсчет pred(x, y) с использованием смещения отсчета b(x, y) в положении (x, y) и предсказанных отсчетов I(0) (x,y) и I(1) (x,y) в первом опорном блоке и во втором опорном блоке, как в уравнении 9.[102] The inter-predictor 124 is configured to generate a final predicted sample pred(x, y) using the sample offset b(x, y) at position (x, y) and the predicted samples I (0) (x,y) and I (1) (x,y) in the first reference block and in the second reference block as in Equation 9.

Уравнение 9Equation 9

[103] где сдвиг равен Max(3, 15-BitDepth), aOoffset представляет собой значение для операции округления и составляет половину сдвига.[103] where the offset is Max(3, 15-BitDepth) and Ooffset is the value for the rounding operation and is half the offset.

[104] Как описано выше, метод двунаправленного оптического потока использует значения отсчетов, предсказанных с использованием информации о движении (два вектора движения и два опорных изображения), используемых для двунаправленного предсказания. Следовательно, интер-предиктор 544 устройства декодирования видео также может быть конфигурирован для осуществления двунаправленного оптического потока таким же образом, как и устройство кодирования видео, с использованием информации движения (векторов движения, опорных изображений) для двунаправленного предсказания, полученных от устройства кодирования видео. При этом не требуется, чтобы устройство кодирования видео сигнализировало дополнительную информацию для процесса двунаправленного оптического потока устройству декодирования видео.[104] As described above, the bidirectional optical flow method uses sample values predicted using motion information (two motion vectors and two reference images) used for bidirectional prediction. Therefore, the inter-predictor 544 of the video decoding device can also be configured to implement bidirectional optical flow in the same manner as the video encoding device, using motion information (motion vectors, reference pictures) for bidirectional prediction received from the video encoding device. This does not require the video encoding device to signal additional information for the bidirectional optical flow process to the video decoding device.

[105] II. Аффинное предсказание движения[105] II. Affine motion prediction

[106] Вышеописанное интер-предсказание представляет собой предсказание движения, отражающее модель поступательного движения. Другими словами, это метод предсказания движения в горизонтальном направлении (направление оси x) и вертикальном направлении (направление оси y). Однако на практике в дополнение к поступательному движению могут быть различные типы движений, такие как вращение, увеличение или уменьшение масштаба. Один аспект настоящего раскрытия предусматривает аффинное предсказание движения, способное охватывать такие различные типы движений.[106] The above inter-prediction is a motion prediction reflecting a translational motion model. In other words, it is a method for predicting motion in the horizontal direction (x-axis direction) and vertical direction (y-axis direction). However, in practice, in addition to translational motion, there can be various types of motions, such as rotation, zooming in, and zooming out. One aspect of the present disclosure provides affine motion prediction capable of covering these different types of motions.

[107] Фиг. 8A-8B - примерные схемы, иллюстрирующие аффинное предсказание движения. Для аффинного предсказания движения могут быть два типа моделей. Одна из них - это модель, использующая векторы движения двух контрольных точек верхнего левого угла и верхнего правого угла целевого блока, который должен быть кодирован в текущий момент, то есть четырех параметров, как показано на фиг. 8А. Другая модель представляет собой модель, использующую векторы движения трех контрольных точек верхнего левого угла, верхнего правого угла и нижнего левого угла целевого блока, то есть шесть параметров, как показано на фиг. 8B.[107] FIG. 8A-8B are exemplary diagrams illustrating affine motion prediction. For affine motion prediction, there can be two types of models. One is a model that uses the motion vectors of two reference points of the upper left corner and the upper right corner of the target block that is currently to be encoded, that is, four parameters, as shown in FIG. 8A. Another model is a model using the motion vectors of three control points of the upper left corner, upper right corner and lower left corner of the target block, that is, six parameters, as shown in FIG. 8B.

[108] Аффинная модель с четырьмя параметрами выражается уравнением 10. Движение в положении (x, y) отсчета в целевом блоке можно рассчитать по уравнению 10. Здесь предполагается, что положение вышеприведенного левого отсчета целевого блока равна (0, 0).[108] The four-parameter affine model is expressed by Equation 10. The motion at the position (x, y) of the sample in the target block can be calculated by Equation 10. Here, the position of the above left sample of the target block is assumed to be (0, 0).

Уравнение 10Equation 10

[109] Аффинная модель с шестью параметрами выражается уравнением 11. Движение в положении (x, y) отсчета в целевом блоке можно рассчитать по уравнению 11.[109] The six-parameter affine model is expressed by Equation 11. The motion at the reference position (x, y) in the target block can be calculated by Equation 11.

Уравнение 11Equation 11

[110] где (mv0x, mv0y) - вектор движения контрольной точки в левом верхнем углу, (mv1x, mv1y) - вектор движения контрольной точки в правом верхнем углу, а (mv2x, mv2y) - вектор движения контрольной точки в левом нижнем углу. W - константа, определяемая по длине целевого блока по горизонтали, а H - константа, определяемая по длине целевого блока по вертикали.[110] where (mv 0x , mv 0y ) is the movement vector of the control point in the upper left corner, (mv 1x , mv 1y ) is the movement vector of the control point in the upper right corner, and (mv 2x , mv 2y ) is the movement vector of the control dots in the lower left corner. W is a constant determined by the horizontal length of the target block, and H is a constant determined by the vertical length of the target block.

[111] Аффинное предсказание движения может выполняться для каждого отсчета в целевом блоке с использованием вектора движения, рассчитанного по уравнению 10 или 11. В качестве альтернативы, чтобы уменьшить вычислительную сложность, предсказание может выполняться для каждого субблока, отделенного от целевого блока, как показано на фиг. 9. Например, размер субблока может быть 4x4, 2x2 или 8x8. В примерном варианте осуществления, приведенном ниже, аффинное предсказание движения для целевого блока выполняется на основе субблока 4x4. Этот пример предназначен только для удобства объяснения, и настоящее раскрытие им не ограничивается.[111] Affine motion prediction can be performed for each sample in the target block using the motion vector calculated from Equation 10 or 11. Alternatively, to reduce computational complexity, prediction can be performed for each sub-block separated from the target block, as shown in fig. 9. For example, the subblock size could be 4x4, 2x2 or 8x8. In the exemplary embodiment below, affine motion prediction for a target block is performed based on a 4x4 subblock. This example is provided for convenience of explanation only, and the present disclosure is not limited to it.

[112] При аффинном предсказании движения на основе субблоков вектор движения (аффинный вектор движения) каждого субблока вычисляется путем подстановки центрального положения каждого субблока в (x, y) в уравнении 10 или 11. В частности, центральное положение может быть фактической центральной точкой субблока или нижним правым положением отсчета центральной точки. Например, в случае субблока 4x4, в котором координаты нижнего левого отсчета равны (0, 0), положение центра субблока может быть (1,5, 1,5) или (2, 2). Предсказываемый блок для каждого субдблока генерируется с использованием аффинного вектора движения (mvx, mvy) субблока.[112] In sub-block-based affine motion prediction, the motion vector (affine motion vector) of each sub-block is calculated by substituting the center position of each sub-block into (x, y) in Equation 10 or 11. Specifically, the center position may be the actual center point of the sub-block or lower right position of the center point reference. For example, in the case of a 4x4 subblock in which the bottom left reference coordinates are (0, 0), the position of the center of the subblock could be (1.5, 1.5) or (2, 2). A predicted block for each sub-block is generated using the affine motion vector (mv x , mv y ) of the sub-block.

[113] Векторы движения (mvx, mvy) могут иметь точность в 1/16 отсчета. В частности, вектор движения (mvx, mvy), вычисленный по уравнению 10 или 11, может быть округлен до 1/16 единиц отсчета. Адаптивное разрешение вектора движения может применяться к аффинному предсказанию движения, как и в обычном интер-предсказании. В частности, информация о разрешении вектора движения целевого блока, то есть о точности вектора движения, передается для каждого целевого блока.[113] Motion vectors (mv x , mv y ) can have an accuracy of 1/16th of a sample. In particular, the motion vector (mv x , mv y ) calculated from equation 10 or 11 can be rounded to 1/16 units. Adaptive motion vector resolution can be applied to affine motion prediction as in conventional inter-prediction. In particular, information about the resolution of the motion vector of the target block, that is, the accuracy of the motion vector, is transmitted for each target block.

[114] Аффинное предсказание движения может выполняться не только для компонента яркости, но также для компонента цветности. В случае формата видео 4:2:0, когда аффинное предсказание движения для компонента яркости выполняется на основе субблока 4x4, аффинное предсказание движения для компонента цветности может выполняться на основе субблока 2x2. Вектор движения (mvx, mvy) каждого субблока компонента цветности может быть получен из вектора движения соответствующего компонента яркости. В качестве альтернативы, размер субблока для аффинного предсказания движения для компонента цветности может быть таким же, как и для компонента яркости. [114] Affine motion prediction can be performed not only on the luminance component, but also on the chrominance component. In the case of a 4:2:0 video format, when affine motion prediction for the luma component is performed based on a 4x4 sub-block, affine motion prediction for the chrominance component may be performed based on a 2x2 sub-block. The motion vector (mv x , mv y ) of each chroma component subblock can be obtained from the motion vector of the corresponding luminance component. Alternatively, the affine motion prediction subblock size for the chroma component may be the same as for the luminance component.

[115] Когда аффинное предсказание движения для компонента яркости выполняется на основе субблока 4x4, аффинное предсказание движения для компонента цветности также выполняется на основе субблока 4x4. В этом случае, поскольку субблок 4x4 для компонента цветности соответствует четырем субблокам 4x4 для компонента яркости, вектор движения (mvx, mvy) для субблока компонента цветности может быть рассчитан путем вычисления среднего значения векторов движения для компонента цветности из четырех соответствующих субдблоков компонента яркости.[115] When affine motion prediction for the luma component is performed based on the 4x4 subblock, affine motion prediction for the chrominance component is also performed based on the 4x4 subblock. In this case, since a 4x4 sub-block for the chrominance component corresponds to four 4x4 sub-blocks for the luma component, the motion vector (mv x , mv y ) for the chrominance component sub-block can be calculated by calculating the average of the motion vectors for the chrominance component from the four corresponding luma component sub-blocks.

[116] Устройство кодирования видео выполняет интра-предсказание, интер-предсказание (предсказание поступательного движения), аффинное предсказание движения и т.п. и вычисляет стоимость скорость-искажение (RD), чтобы выбрать оптимальный способ предсказания. Для выполнения аффинного предсказания интер-предиктор 124 устройства кодирования видео определяет, какой из двух типов моделей использовать, и определяет две или три контрольные точки в соответствии с определенным типом. Интер-предиктор 124 вычисляет вектор движения (mvx, mvy) для каждого из субблоков 4x4 в целевом блоке, используя векторы движения контрольных точек. Затем он выполняет компенсацию движения в опорном изображении на посубблочной основе, используя вектор движения (mvx,mvy) каждого субблока, чтобы сгенерировать предсказанный блок для каждого субблока в целевом блоке.[116] The video encoding apparatus performs intra-prediction, inter-prediction (translational motion prediction), affine motion prediction, and the like. and calculates the rate-distortion (RD) cost to select the optimal prediction method. To perform affine prediction, the inter-predictor 124 of the video encoding device determines which of two types of models to use and determines two or three control points according to the determined type. Inter-predictor 124 calculates a motion vector (mv x , mv y ) for each of the 4x4 subblocks in the target block using the motion vectors of the control points. It then performs motion compensation on the reference image on a sub-block basis using the motion vector (mv x ,mv y ) of each sub-block to generate a predicted block for each sub-block in the target block.

[117] Энтропийный кодер 155 устройства кодирования видео конфигурирован для кодирования связанных аффинных элементов синтаксиса, включая флаг, указывающий, применяется ли аффинное предсказание движения к целевому блоку, информацию о типе, указывающую тип аффинной модели, и информацию о движении, указывающую вектор движения каждой контрольной точки, и передачи этого на устройство декодирования видео. Информация о типе и информация о движении относительно контрольных точек могут передаваться, когда выполняется аффинное предсказание движения, и может передаваться столько векторов движения контрольных точек, сколько определено в соответствии с информацией о типе. Кроме того, когда применяется адаптивное разрешение вектора движения, передается информация о разрешении вектора движения об аффинном векторе движения целевого блока.[117] The entropy encoder 155 of the video encoding device is configured to encode associated affine syntax elements, including a flag indicating whether the affine motion prediction is applied to the target block, type information indicating the type of the affine model, and motion information indicating the motion vector of each reference point, and transmitting this to the video decoding device. Type information and motion information about reference points may be transmitted when affine motion prediction is performed, and as many motion vectors of reference points as determined according to the type information may be transmitted. In addition, when adaptive motion vector resolution is applied, motion vector resolution information about the affine motion vector of the target block is transmitted.

[118] Устройство декодирования видео конфигурировано для определения типа аффинной модели и векторов движения контрольных точек с использованием сигнализированных элементов синтаксиса и вычисления вектора движения (mvx, mvy) для каждого субблока 4×4 в целевом блоке с использованием уравнения 10 или 11. Когда сообщается информация о разрешении вектора движения об аффинном векторе движения целевого блока, вектор движения (mvx, mvy) корректируется до точности, определяемой информацией о разрешении вектора движения, посредством таких операций, как округление.[118] The video decoding apparatus is configured to determine the affine model type and motion vectors of the reference points using the signaled syntax elements and calculate the motion vector (mv x , mv y ) for each 4x4 sub-block in the target block using equation 10 or 11. When motion vector resolution information about the affine motion vector of the target block is reported, the motion vector (mv x , mv y ) is adjusted to the accuracy determined by the motion vector resolution information through operations such as rounding.

[119] Устройство декодирования видео выполнено с возможностью генерировать предсказанный блок для каждого субблока путем выполнения компенсации движения в опорном изображении с использованием вектора движения (mvx, mvy) для каждого субблока. Чтобы уменьшить количество битов, требуемых для кодирования векторов движения контрольных точек, может быть применен способ, который используется в вышеописанном обычном интер-предсказании (предсказании поступательного движения).[119] The video decoding apparatus is configured to generate a predicted block for each sub-block by performing motion compensation on the reference image using a motion vector (mv x , mv y ) for each sub-block. To reduce the number of bits required to encode the motion vectors of the reference points, a method that is used in the above-described conventional inter-prediction (translational motion prediction) can be applied.

[120] В качестве примера, в режиме слияния интер-предиктор 124 устройства кодирования видео конфигурирован получать вектор движения каждой контрольной точки из соседних блоков целевого блока. Например, интер-предиктор 124 конфигурирован для генерации списка кандидатов на слияние путем получения заранее определенного количества кандидатов на слияние из соседних отсчетов L, BL, A, AR и AL целевого блока, проиллюстрированного на фиг. 4. Каждый из кандидатов на слияние, включенных в список, соответствует паре векторов движения из двух или трех контрольных точек.[120] As an example, in the fusion mode, the inter-predictor 124 of the video encoding device is configured to obtain the motion vector of each reference point from neighboring blocks of the target block. For example, inter-predictor 124 is configured to generate a list of merge candidates by obtaining a predetermined number of merge candidates from neighboring samples L, BL, A, AR, and AL of the target block illustrated in FIG. 4. Each of the merge candidates included in the list corresponds to a pair of motion vectors from two or three control points.

[121] Во-первых, интер-предиктор 124 конфигурирован для получения кандидата на слияние из векторов движения контрольных точек соседних блоков, предсказанных в аффинном режиме, среди соседних блоков. В некоторых вариантах осуществления количество кандидатов на слияние, полученных из соседних блоков, предсказанных в аффинном режиме, может быть ограничено. Например, интер-предиктор 124 может быть конфигурирован для получения двух кандидатов на слияние из соседних блоков, предсказанных в аффинном режиме: один из L и BL и один из A, AR и AL. Приоритет может быть назначен в порядке L и BL и в порядке A, AR и AL. Когда общее количество кандидатов на слияние больше или равно 3, интер-предиктор 124 может быть конфигурирован для получения необходимого количества кандидатов на слияние из векторов поступательного движения соседних блоков.[121] First, the inter-predictor 124 is configured to obtain a fusion candidate from the motion vectors of the affine-mode-predicted neighboring blocks' control points among the neighboring blocks. In some embodiments, the number of merge candidates obtained from adjacent blocks predicted in affine mode may be limited. For example, inter-predictor 124 may be configured to obtain two merge candidates from adjacent blocks predicted in affine mode: one from L and BL and one from A, AR and AL. Priority can be assigned in the order L and BL and in the order A, AR and AL. When the total number of merge candidates is greater than or equal to 3, the inter-predictor 124 can be configured to obtain the required number of merge candidates from the translation vectors of neighboring blocks.

[122] Фиг. 10 - примерная схема, иллюстрирующая способ получения кандидатов на слияние для аффинного предсказания движения из векторов поступательного движения соседних блоков. Интер-предиктор 124 конфигурирован для получения векторов движения CPMV1, CPMV2, CPMV3 контрольной точки из соседней группы блоков {B2, B3, A2}, соседней группы блоков {B1, B0} и соседней группы блоков {A1, A0}, соответственно. Например, приоритеты в каждой группе соседних блоков могут быть назначены в порядке B2, B3, A2, порядке B1 и B0 и порядке A1 и A0. Кроме того, другой вектор движения CPMV4 контрольной точки получается из совместно расположенного блока T в опорном изображении. Интер-предиктор 124 выполнен с возможностью генерировать столько кандидатов на слияние, сколько необходимо, посредством комбинаций двух или трех векторов движения контрольных точек среди четырех векторов движения контрольных точек. Приоритеты комбинаций назначаются, как показано ниже. Элементы в каждой группе перечислены в порядке векторов движения контрольных точек верхнего левого угла, верхнего правого угла и нижнего левого угла.[122] FIG. 10 is an exemplary diagram illustrating a method for obtaining fusion candidates for affine motion prediction from translational motion vectors of neighboring blocks. The inter-predictor 124 is configured to obtain reference point motion vectors CPMV1, CPMV2, CPMV3 from the neighboring block group {B2, B3, A2}, the neighboring block group {B1, B0} and the neighboring block group {A1, A0}, respectively. For example, the priorities in each group of neighboring blocks may be assigned in the order B2, B3, A2, the order B1 and B0, and the order A1 and A0. In addition, another reference point motion vector CPMV4 is obtained from a co-located block T in the reference image. The inter-predictor 124 is configured to generate as many merge candidates as needed through combinations of two or three control point motion vectors among the four control point motion vectors. Combination priorities are assigned as shown below. The elements in each group are listed in order of the motion vectors of the top left corner, top right corner and bottom left corner control points.

{CPMV1, CPMV2, CPMV3}, {CPMV1, CPMV2, CPMV4}, {CPMV1, CPMV3, CPMV4}, {CPMV2, CPMV3, CPMV4}, {CPMV1, CPMV2}, {CPMV1, CPMV3}{CPMV1, CPMV2, CPMV3}, {CPMV1, CPMV2, CPMV4}, {CPMV1, CPMV3, CPMV4}, {CPMV2, CPMV3, CPMV4}, {CPMV1, CPMV2}, {CPMV1, CPMV3}

[123] Интер-предиктор 124 конфигурирован выбирать кандидата на слияние в списке кандидатов на слияние и выполнять аффинное предсказание движения для целевого блока. Когда выбранный кандидат состоит из двух векторов движения контрольных точек, аффинное предсказание движения выполняется с использованием модели с четырьмя параметрами. С другой стороны, когда выбранный кандидат состоит из трех векторов движения контрольных точек, аффинное предсказание движения выполняется с использованием модели с шестью параметрами. Энтропийный кодер 155 устройства кодирования видео конфигурирован для кодирования индексной информации, указывающей на кандидата на слияние, выбранного из кандидатов на слияние в списке кандидатов на слияние, и сигнализирования его устройству декодирования видео.[123] The inter-predictor 124 is configured to select a merge candidate from the list of merge candidates and perform affine motion prediction for the target block. When the selected candidate consists of two control point motion vectors, affine motion prediction is performed using a four-parameter model. On the other hand, when the selected candidate consists of three control point motion vectors, affine motion prediction is performed using a six-parameter model. The entropy encoder 155 of the video encoding device is configured to encode index information indicating a merge candidate selected from the merge candidates in the merge candidate list and signal it to the video decoding device.

[124] Энтропийный декодер 510 устройства декодирования видео конфигурирован для декодирования индексной информации, сигнализированный от устройства кодирования видео. Интер-предиктор 544 устройства декодирования видео составляет список кандидатов на слияние таким же образом, что и устройство кодирования видео, и выполняет аффинное предсказание движения с использованием векторов движения контрольных точек, соответствующих кандидату на слияние, указанному индексной информацией.[124] The entropy decoder 510 of the video decoding apparatus is configured to decode index information signaled from the video encoding apparatus. The video decoding device inter-predictor 544 lists fusion candidates in the same manner as the video encoding device, and performs affine motion prediction using motion vectors of reference points corresponding to the fusion candidate indicated by the index information.

[125] В качестве другого примера, в режиме AMVP интер-предиктор 124 устройства кодирования видео конфигурирован определять тип аффинной модели и векторов движения контрольных точек для целевого блока. Затем интер-предиктор 124 конфигурирован вычислять разности векторов движения, которые являются разностями между фактическими векторами движения контрольных точек целевого блока и предсказанными векторами движения соответствующих контрольных точек, и передачи разностей векторов движения, которые соответственно соответствуют контрольным точкам.[125] As another example, in AMVP mode, the video encoding device inter-predictor 124 is configured to determine the type of affine model and reference point motion vectors for a target block. Next, the inter-predictor 124 is configured to calculate motion vector differences, which are differences between the actual motion vectors of the target block's reference points and the predicted motion vectors of the corresponding reference points, and transmit the motion vector differences, which respectively correspond to the reference points.

[126] Соответственно, интер-предиктор 124 устройства кодирования видео конфигурирует список из заранее определенного количества аффинных AMVP. Когда целевой блок относится к типу с 4 параметрами, каждый из кандидатов, включенных в список, состоит из пары векторов движения двух контрольных точек. С другой стороны, когда целевой блок относится к типу с 6 параметрами, каждый кандидат, включенный в список, составлен из пары векторов движения трех контрольных точек. Список аффинных AMVP может быть получен с использованием векторов движения контрольных точек или векторов поступательного движения соседних блоков способом, аналогичным способу создания списка кандидатов на слияние, описанному выше.[126] Accordingly, the inter-predictor 124 of the video encoding device configures a list of a predetermined number of affine AMVPs. When the target block is a 4-parameter type, each of the candidates included in the list consists of a pair of motion vectors of two control points. On the other hand, when the target block is a 6-parameter type, each candidate included in the list is composed of a pair of motion vectors of three control points. The list of affine AMVPs can be obtained using the motion vectors of control points or the translational motion vectors of neighboring blocks in a manner similar to the method for generating the list of merge candidates described above.

[127] Однако для получения кандидатов для включения в список аффинных AMVP может существовать ограничение рассмотрения только соседних блоков, которые опираются на то же опорное изображение, что и целевой блок, среди соседних блоков на фиг. 4.[127] However, to obtain candidates for inclusion in the affine AMVP list, there may be a limitation of considering only neighboring blocks that rely on the same reference image as the target block among the neighboring blocks in FIG. 4.

[128] Кроме того, в режиме AMVP следует учитывать тип аффинной модели целевого блока. Когда тип аффинной модели целевого блока представляет собой тип с 4 параметрами, устройство кодирования видео конфигурируется для получения двух векторов движения контрольных точек (вектора движения контрольной точки верхнего левого угла и вектора движения контрольной точки правого верхнего угла целевого блока) с использованием аффинной модели соседнего блока. Когда тип аффинной модели целевого блока представляет собой тип с 6 параметрами, устройство получает три вектора движения контрольной точки (верхний левый угол, верхний правый угол и нижний левый вектор движения контрольной точки целевого блока) с использованием аффинной модели соседнего блока.[128] In addition, in AMVP mode, the type of affine model of the target block should be taken into account. When the affine model type of the target block is a 4-parameter type, the video encoding device is configured to obtain two reference point motion vectors (the top left corner reference point motion vector and the top right corner reference point motion vector of the target block) using the affine model of the adjacent block. When the affine model type of the target block is a 6-parameter type, the device obtains three control point motion vectors (upper left corner, upper right corner, and lower left control point motion vector of the target block) using the affine model of the neighboring block.

[129] Когда соседний блок относится к типу с 4 параметрами, два или три вектора движения контрольной точки предсказываются в соответствии с типом аффинной модели целевого блока с использованием двух векторов движения контрольных точек соседнего блока. Например, может использоваться аффинная модель соседнего блока, выраженная Уравнением 10. В Уравнении 10 (mv0x, mv0y) и (mv1x, mv1y) заменяются векторами движения контрольной точки в верхнем левом и правом верхнем углу соседнего блока соответственно. В частности, в W подставляется горизонтальная длина соседнего блока. Предсказываемый вектор движения для каждой контрольной точки целевого блока может быть получен путем ввода в (x, y) разницы между положением соответствующей контрольной точки целевого блока и положением верхнего левого угла соседнего блока.[129] When the adjacent block is a 4-parameter type, two or three control point motion vectors are predicted according to the affine model type of the target block using the two control point motion vectors of the adjacent block. For example, an affine neighbor block model expressed by Equation 10 may be used. In Equation 10, (mv 0x , mv 0y ) and (mv 1x , mv 1y ) are replaced by the motion vectors of the control point at the upper left and upper right corner of the adjacent block, respectively. In particular, the horizontal length of the adjacent block is substituted into W. The predicted motion vector for each target block's control point can be obtained by entering into (x, y) the difference between the position of the corresponding target block's control point and the position of the upper left corner of the adjacent block.

[130] Когда соседний блок относится к типу с 6 параметрами, два или три вектора движения контрольной точки предсказываются в соответствии с типом аффинной модели целевого блока с использованием трех векторов движения контрольных точек соседнего блока. Например, может использоваться аффинная модель соседнего блока, выраженная Уравнением 11. В уравнении 11 (mv0x,mv0y), (mv1x, mv1y) и (mv2x, mv2y) заменяются векторами движения контрольной точки левого верхнего угла, правого верхнего угла и левого нижнего угла соседнего блока, соответственно. В частности, W и H заменены на длину по горизонтали и длину по вертикали соседнего блока, соответственно. Предсказываемый вектор движения для каждой контрольной точки целевого блока может быть получен путем ввода в (x, y) разницы между положением соответствующей контрольной точки целевого блока и положением верхнего левого угла соседнего блока.[130] When the adjacent block is a 6-parameter type, two or three control point motion vectors are predicted according to the affine model type of the target block using the three control point motion vectors of the adjacent block. For example, the affine neighbor block model expressed by Equation 11 can be used. In Equation 11, (mv 0x , mv 0y ), (mv 1x , mv 1y ) and (mv 2x , mv 2y ) are replaced by the motion vectors of the control point of the upper left corner, the upper right corner and lower left corner of the adjacent block, respectively. Specifically, W and H are replaced by the horizontal length and vertical length of the adjacent block, respectively. The predicted motion vector for each target block's control point can be obtained by entering into (x, y) the difference between the position of the corresponding target block's control point and the position of the upper left corner of the adjacent block.

[131] Интер-предиктор 124 устройства кодирования видео конфигурирован выбирать одного кандидата в списке аффинных AMVP и генерировать разность векторов движения между вектором движения каждой фактической контрольной точки и предсказанным вектором движения соответствующей контрольной точки выбранного кандидата. Энтропийный кодер 155 устройства кодирования видео конфигурирован для кодирования информации о типе, указывающей тип аффинной модели целевого блока, индексной информации, указывающей на кандидата, выбранного среди кандидатов в списке аффинных AMVP, и разности векторов движения, соответствующей каждой контрольной точке, и для сигнализирования этого в устройство декодирования видео.[131] The inter-predictor 124 of the video encoding device is configured to select one candidate from the list of affine AMVPs and generate a motion vector difference between the motion vector of each actual reference point and the predicted motion vector of the corresponding reference point of the selected candidate. The entropy encoder 155 of the video encoding device is configured to encode type information indicating the type of the affine model of the target block, index information indicating a candidate selected among the candidates in the AMVP affine list, and a motion vector difference corresponding to each reference point, and to signal it to video decoding device.

[132] Интер-предиктор 544 устройства декодирования видео конфигурирован для определения типа аффинной модели с использованием информации, сигнализируемой из устройства кодирования видео, и генерирования разности векторов движения для каждой контрольной точки. Затем интер-предиктор конфигурирован генерировать аффинный список AMVP таким же образом, что и устройство кодирования видео, и выбирать кандидата, указанного индексной информацией, переданной в аффинном списке AMVP. Интер-предиктор 544 устройства декодирования видео конфигурирован для вычисления вектора движения каждой контрольной точки путем добавления предсказанного вектора движения каждой контрольной точки выбранного кандидата и соответствующей разности векторов движения.[132] The video decoder inter-predictor 544 is configured to determine the affine model type using information signaled from the video encoder and generate a motion vector difference for each reference point. The inter-predictor is then configured to generate an AMVP affine list in the same manner as the video encoder, and select a candidate indicated by the index information transmitted in the AMVP affine list. The inter-predictor 544 of the video decoding device is configured to calculate the motion vector of each reference point by adding the predicted motion vector of each reference point of the selected candidate and the corresponding motion vector difference.

[133] III. Поблочная корректировка отсчетов аффинного предсказания движения[133] III. Block-by-block adjustment of affine motion prediction samples

[134] Выше было описано посубблочное аффинное предсказание движения для целевого блока. Другой аспект настоящего раскрытия относится к корректировке, на поотсчетной основе, значений отсчетов предсказанных отсчетов, сгенерированных посубблочным аффинным предсказанием движения. Движение по положению каждого отсчета дополнительно компенсируется в каждом субблоке, что составляет основу аффинного предсказания движения.[134] Sub-block affine motion prediction for a target block was described above. Another aspect of the present disclosure relates to updating, on a sample-by-sample basis, sample values of predicted samples generated by sub-block affine motion prediction. The motion based on the position of each sample is further compensated in each sub-block, which forms the basis of affine motion prediction.

[135] Когда значения отсчетов в любом субблоке, сгенерированном в результате посубблочного аффинного предсказания движения для целевого блока, равны I(x, y), устройство кодирования видео вычисляет горизонтальный и вертикальный градиенты gx (i, j) и gy (i, j) в каждом положении отсчетов. Уравнение 12 можно использовать для расчета градиентов.[135] When the sample values in any sub-block generated as a result of the sub-block affine motion prediction for the target block are equal to I(x, y), the video encoding device calculates the horizontal and vertical gradients g x (i, j) and g y (i, j) at each reading position. Equation 12 can be used to calculate gradients.

Уравнение 12Equation 12

[136] Смещение отсчета ΔI(i, j) для корректировки отсчета предсказания вычисляется по следующему уравнению.[136] The sample offset ΔI(i, j) for correcting the prediction sample is calculated by the following equation.

Уравнение 13Equation 13

[137] где Δmv(i,j) обозначает смещение движения, то есть разницу между аффинным вектором движения в отсчете (i, j) и аффинным вектором движения в центральном положении субблока, и может быть вычислено посредством Уравнения 10 или 11 в зависимости от типа аффинной модели целевого блока. Другими словами, Δmv(i, j) может быть вычислено из уравнения 10 или 11 путем вычитания вектора движения, заданного, когда положение центра субблока подставляется в (x, y) из вектора движения, заданного, когда (i, j) подставляется в (х, у). Кроме того, Δmv(i, j) можно рассчитать из уравнения, которое получается путем замены (x, y) в уравнениях 11 и 12 смещением по горизонтали и вертикали от положения центра субблока до положения отсчета (i,j) и удаления последнего члена «+ mv0x» и «+ mv0y». Центральное положение может быть фактической центральной точкой субблока или может быть нижним правым положением отсчета центральной точки.[137] where Δmv(i,j) denotes the motion displacement, that is, the difference between the affine motion vector at sample (i, j) and the affine motion vector at the center position of the subblock, and can be calculated by Equation 10 or 11 depending on the type affine model of the target block. In other words, Δmv(i, j) can be calculated from Equation 10 or 11 by subtracting the motion vector specified when the subblock center position is substituted into (x, y) from the motion vector specified when (i, j) is substituted into ( x, y). In addition, Δmv(i, j) can be calculated from the equation, which is obtained by replacing (x, y) in Equations 11 and 12 with the horizontal and vertical displacement from the sub-block center position to the reference position (i,j) and removing the last term " + mv 0x " and " + mv 0y ". The center position may be the actual center point of the subblock or may be the lower right position of the center point reference.

[138] Вектор движения каждой контрольной точки целевого блока, используемый для расчета ∆mv(i, j), и разница между положением отсчета (i, j) и положением центра субблока одинаковы для всех субблоков. Соответственно, значения Δmv(i, j) могут быть рассчитаны только для одного субблока, например, первого субблока, и могут повторно использоваться для других субблоков.[138] The motion vector of each target block reference point used to calculate ∆mv(i, j) and the difference between the reference position (i, j) and the subblock center position are the same for all subblocks. Accordingly, the values of Δmv(i, j) can be calculated for only one sub-block, for example, the first sub-block, and can be reused for other sub-blocks.

[139] Методика согласно настоящему раскрытию основана на предположении, что объект движется с постоянной скоростью и изменение значений отсчета является плавным. Следовательно, вариации отсчета в горизонтальном направлении и величина изменения отсчета в вертикальном направлении получаются путем умножения компонента x(Δmvx) и компонента y (Δmvy) Δmv(i, j) на значения горизонтального и вертикального градиента отсчета, соответственно. Смещение ΔI(i,j) отсчета вычисляется путем сложения двух вариантов отсчета. Окончательное значение предсказываемого отсчета рассчитывается следующим образом.[139] The technique of the present disclosure is based on the assumption that the object is moving at a constant speed and the change in reference values is smooth. Therefore, the sample variation in the horizontal direction and the magnitude of the sample change in the vertical direction are obtained by multiplying the x component (Δmv x ) and the y component (Δmv y ) Δmv(i, j) by the horizontal and vertical sample gradient values, respectively. The offset ΔI(i,j) of the reference is calculated by adding the two reference options. The final value of the predicted count is calculated as follows.

Уравнение 14Equation 14

[140] Когда применяется поотсчетная корректировка для отсчетов аффинного предсказания движения, интер-предиктор 124 устройства кодирования видео и интер-предиктор 544 устройства декодирования видео выполняют вышеописанный процесс для корректирования значений отсчетов предсказанных отсчетов, сгенерированных с помощью аффинного предсказания движения. Значения градиента получаются из предсказанных отсчетов, сгенерированных посредством аффинного предсказания движения, а Δmv(i, j) получается из векторов движения контрольных точек целевого блока. Следовательно, не требуется, чтобы устройство кодирования видео сигнализировало дополнительную информацию для процесса настоящей методики в устройство декодирования видео.[140] When sample-by-sample correction is applied to the affine motion prediction samples, the inter-predictor 124 of the video encoding device and the inter-predictor 544 of the video decoding device perform the above-described process to correct the sample values of the predicted samples generated by the affine motion prediction. The gradient values are obtained from the predicted samples generated through affine motion prediction, and Δmv(i, j) is obtained from the motion vectors of the target block reference points. Therefore, the video encoding apparatus is not required to signal additional information for the process of the present technique to the video decoding apparatus.

[141] IV. Компенсация локальной освещенности для отсчетов аффинного предсказания движения[141] IV. Local illumination compensation for affine motion prediction samples

[142] Методика компенсации локальной освещенности представляет собой метод кодирования, компенсирующий изменение освещенности между целевым блоком и предсказываемым блоком с помощью линейной модели. Интер-предиктор 124 устройства кодирования видео конфигурирован для определения опорного блока в опорном изображении с использованием вектора движения (вектора поступательного движения) целевого блока и получения параметров линейной модели для компенсации освещенности с использованием предварительно восстановленных отсчетов вокруг (на верхней и левой сторонах) опорного блока и предварительно восстановленных отсчетов вокруг (на верхней и левой сторонах) целевого блока.[142] The local illumination compensation technique is a coding method that compensates for the illumination variation between a target block and a predicted block using a linear model. The video encoding device inter-predictor 124 is configured to determine a reference block in the reference image using a motion vector (translation vector) of the target block and obtain linear model parameters for illumination compensation using pre-reconstructed samples around (on the top and left sides) of the reference block and pre-reconstructed samples around (on the top and left sides) of the target block.

[143] Когда предварительно восстановленные отсчеты вокруг опорного блока обозначаются как x, а соответствующие предварительно восстановленные отсчета вокруг целевого блока обозначаются как y, параметры «A» и «b» выводятся, как в уравнении 15, так что сумма квадратов разностей между y и (Ax + b) минимизируется.[143] When the pre-recovered samples around the reference block are denoted as x and the corresponding pre-recovered samples around the target block are denoted as y, the parameters " A " and " b " are derived as in Equation 15 such that the sum of the squared differences between y and ( Ax + b ) is minimized.

Уравнение 15Equation 15

[144] Окончательные предсказанные отсчеты генерируются путем применения веса A и смещения b к отсчетам в предсказываемом блоке (опорном блоке), сгенерированном вектором движения целевого блока, как показано в уравнении 16. В уравнении 16 pred[x][y] - это предсказанный отсчет в положении (x, y), сгенерированная вектором движения целевого блока, а predLIC[x][y] - это конечный предсказанный отсчет после компенсации освещенности.[144] The final predicted samples are generated by applying a weight A and a bias b to the samples in the prediction block (reference block) generated by the motion vector of the target block, as shown in Equation 16. In Equation 16, pred[x][y] is the predicted sample at position (x, y), generated by the motion vector of the target block, and predLIC[x][y] is the final predicted sample after illumination compensation.

Уравнение 16Equation 16

[145] Другой аспект настоящего раскрытия относится к методике комбинирования метода компенсации освещения с аффинным предсказанием движения.[145] Another aspect of the present disclosure relates to a technique for combining a lighting compensation method with affine motion prediction.

[146] Как описано выше, когда посубблочное аффинное предсказание движения применяется к целевому блоку, вектор движения генерируется для каждого из субблоков. Параметры компенсации освещенности могут быть получены с использованием соответствующего вектора движения для каждого субблока, а затем компенсация освещенности может выполняться в модуле субблоков с использованием соответствующего вектора движения. Это, однако, не только увеличивает сложность вычислений, но и вызывает проблему с задержкой. Поскольку восстановленные отсчеты в каждом субблоке необходимы для компенсации освещенности следующего субблока, процесс компенсации освещенности для субблока должен быть приостановлен до тех пор, пока не будет восстановлен соседний субблок (то есть до тех пор, пока не будут восстановлены и блок предсказания, и остаточный блок для субблока). Настоящее раскрытие направлено на решение таких проблем.[146] As described above, when sub-block affine motion prediction is applied to a target block, a motion vector is generated for each of the sub-blocks. Light compensation parameters can be obtained using a corresponding motion vector for each sub-block, and then light compensation can be performed in the sub-block module using the corresponding motion vector. This, however, not only increases the computational complexity but also causes a latency problem. Since the reconstructed samples in each sub-block are needed to compensate for the illumination of the next sub-block, the illumination compensation process for the sub-block must be suspended until the adjacent sub-block is reconstructed (that is, until both the prediction block and the residual block for subblock). The present disclosure addresses such problems.

[147] Фиг. 11A-11C показывают различные примеры определения положения опорного блока для получения параметра компенсации освещения согласно варианту осуществления настоящего раскрытия. В этом варианте осуществления выводится один набор параметров компенсации освещенности (A, b) для целевого блока, и один и тот же параметр применяется ко всем субблокам в целевом блоке. То есть весь целевой блок модифицируется одним набором параметров компенсации освещенности.[147] FIG. 11A to 11C show various examples of determining the position of the reference block to obtain the illumination compensation parameter according to an embodiment of the present disclosure. In this embodiment, one set of light compensation parameters (A, b) for the target block is output, and the same parameter is applied to all sub-blocks in the target block. That is, the entire target block is modified by one set of light compensation parameters.

[148] Как показано на фиг. 11А интер-предиктор 124 устройства кодирования видео может быть конфигурирован для определения положения опорного блока в опорном изображении с использованием аффинного вектора движения субблока, расположенного в верхнем левом углу целевого блока или вектор движения контрольной точки в верхнем левом углу целевого блока. Предварительно восстановленные отсчета вокруг определенного опорного блока используются для получения параметров. В качестве альтернативы, как показано на фиг. 11B, положение опорного блока может быть определено с использованием аффинного вектора движения центрального субблока в целевом блоке. Как только положение опорного блока определено, параметр компенсации освещенности выводится с использованием предварительно восстановленных отсчетов, примыкающих к верхней и левой сторонам опорного блока, и соответствующих предварительно восстановленных отсчетов, примыкающих к верхней и левой сторонам целевого блока.[148] As shown in FIG. 11A, the inter-predictor 124 of the video encoder may be configured to determine the position of a reference block in the reference image using an affine motion vector of a subblock located in the upper left corner of the target block or a motion vector of a reference point in the upper left corner of the target block. Pre-reconstructed samples around a specific reference block are used to obtain parameters. Alternatively, as shown in FIG. 11B, the position of the reference block can be determined using the affine motion vector of the central subblock in the target block. Once the position of the reference block is determined, the illumination compensation parameter is derived using the pre-reconstructed samples adjacent to the top and left sides of the reference block and the corresponding pre-reconstructed samples adjacent to the top and left sides of the target block.

[149] В качестве другого примера можно использовать множество субблоков в целевом блоке. Как показано на фиг. 11С интер-предиктор 124 определяет опорный субблок, соответствующий каждому граничному субблоку, используя аффинные векторы движения субблоков (граничных субблоков), расположенных на границе в целевом блоке. Отсчеты для получения параметра компенсации освещенности извлекаются из предварительно восстановленных отсчетов, смежных с граничными субблоками в целевом блоке и соответствующих опорных субблоках, соответственно. Для субблоков, расположенных на верхней границе в целевом блоке, и соответствующих опорных субблоков отсчеты извлекаются из предварительно восстановленных отсчетов, примыкающих к верхней стороне. Для субблоков, расположенных на левой границе в целевом блоке, и соответствующих опорных субблоков отсчеты извлекаются из предварительно восстановленных отсчетов, примыкающих к левой стороне.[149] As another example, multiple sub-blocks in a target block can be used. As shown in FIG. 11C, inter-predictor 124 determines a reference sub-block corresponding to each boundary sub-block using the affine motion vectors of the sub-blocks (border sub-blocks) located on the boundary in the target block. The samples for obtaining the illumination compensation parameter are extracted from the pre-reconstructed samples adjacent to the boundary subblocks in the target block and the corresponding reference subblocks, respectively. For subblocks located at the top edge in the target block and the corresponding reference subblocks, samples are extracted from the previously reconstructed samples adjacent to the top side. For subblocks located on the left edge in the target block and the corresponding reference subblocks, samples are extracted from the previously reconstructed samples adjacent to the left side.

[150] В настоящем варианте осуществления, поскольку параметр компенсации освещенности выводится с использованием предварительно построенных отсчетов вокруг целевого блока и предварительно построенных отсчетов вокруг опорного блока, вышеупомянутая проблема задержки может быть решена. Однако применение только одного параметра компенсации освещенности к целевому блоку, к которому применяется посубблочное аффинное предсказание движения, потенциально может привести к более низкой эффективности кодирования. Другой вариант осуществления, описанный ниже, приводит к увеличению эффективности кодирования в обмен на небольшое увеличение сложности.[150] In the present embodiment, since the illumination compensation parameter is derived using pre-constructed samples around the target block and pre-constructed samples around the reference block, the above-mentioned delay problem can be solved. However, applying only one illumination compensation parameter to a target block to which sub-block affine motion prediction is applied could potentially result in lower coding efficiency. Another embodiment described below results in increased coding efficiency in exchange for a slight increase in complexity.

[151] Согласно другому варианту осуществления настоящего раскрытия, интер-предиктор 124 устройства кодирования видео разделяет целевой блок на множество областей. Каждая область включает в себя по крайней мере один субблок, который является единицей, в которой выполняется аффинное предсказание движения. Интер-предиктор 124 конфигурирован для вычисления параметров компенсации освещенности для множества областей и выполняет компенсацию освещенности в единицах областей или субблоков в целевом блоке на основе вычисленных параметров компенсации освещенности.[151] According to another embodiment of the present disclosure, the inter-predictor 124 of the video encoding device divides the target block into a plurality of regions. Each region includes at least one sub-block, which is the unit in which affine motion prediction is performed. Inter-predictor 124 is configured to calculate light compensation parameters for a plurality of regions, and performs light compensation in units of regions or sub-blocks in a target block based on the calculated light compensation parameters.

1. Разделение целевого блока1. Splitting the target block

[152] Интер-предиктор 124 устройства кодирования видео конфигурирован для разделения целевого блока на множество областей, каждая из которых включает в себя один или более субблоков, которые являются единицами, в которых выполняется аффинное предсказание движения.[152] The inter-predictor 124 of the video encoding device is configured to divide a target block into a plurality of regions, each of which includes one or more sub-blocks, which are units in which affine motion prediction is performed.

[153] Целевой блок может быть разделен с использованием векторов движения контрольных точек целевого блока. Фиг. 12A-12B являются примерами разделения целевого блока с использованием векторов движения контрольных точек. Ссылаясь на фиг. 12A, когда угол между вектором MV0 движения контрольной точки верхнего левого угла и вектором MV1 движения контрольной точки верхнего правого угла целевого блока представляет собой тупой угол (более 90 градусов), целевой блок разделяется по вертикали. Например, целевой блок может быть разделен на две области. В противном случае целевой блок не разделяется по вертикали. Ссылаясь на фиг. 12B, когда угол между вектором MV0 движения контрольной точки верхнего левого угла и вектором MV2 движения контрольной точки нижнего левого угла представляет собой тупой угол, целевой блок разделяется по горизонтали, например, на две половины. В противном случае целевой блок не разделяется по горизонтали. Когда тип аффинной модели целевого блока соответствует 4 параметрам, вектор MV2 движения контрольной точки нижнего левого угла может быть получен путем ввода координат отсчета нижнего левого угла целевого блока в (x, y) в Уравнении 1.[153] The target block can be divided using motion vectors of the target block's control points. Fig. 12A-12B are examples of dividing a target block using motion vectors of reference points. Referring to FIG. 12A, when the angle between the top left corner reference point motion vector MV0 and the top right corner reference point motion vector MV1 of the target block is an obtuse angle (more than 90 degrees), the target block is divided vertically. For example, the target block can be divided into two areas. Otherwise, the target block is not split vertically. Referring to FIG. 12B, when the angle between the upper left corner reference point motion vector MV0 and the lower left corner reference point motion vector MV2 is an obtuse angle, the target block is divided horizontally into two halves, for example. Otherwise, the target block is not split horizontally. When the affine model type of the target block corresponds to 4 parameters, the motion vector MV2 of the lower left corner reference point can be obtained by inputting the reference coordinates of the lower left corner of the target block into (x, y) in Equation 1.

[154] На основе угла, образованного векторами движения контрольной точки, интер-предиктор 124 либо пропускает разделение целевого блока, либо разделяет целевой блок на две области (левую область и правую область в случае вертикального разделения и верхнюю область и нижнюю область в случае горизонтального разделения) или на 4 области. Когда скалярное произведение двух векторов меньше 0, угол является тупым. Соответственно интер-предиктор 124 может определить, является ли угол между векторами движения контрольной точки тупым углом, на основе скалярного произведения двух векторов.[154] Based on the angle formed by the reference point motion vectors, inter-predictor 124 either skips the target block division or divides the target block into two regions (a left region and a right region in the case of a vertical division, and an upper region and a lower region in the case of a horizontal division ) or 4 areas. When the dot product of two vectors is less than 0, the angle is obtuse. Accordingly, inter-predictor 124 can determine whether the angle between the motion vectors of the reference point is an obtuse angle based on the dot product of the two vectors.

[155] Хотя в приведенном выше примере показано, что целевой блок разделяется, когда угол между векторами движения двух контрольных точек представляет собой тупой угол, блок может быть разделен, когда угол представляет собой острый угол (угол меньше 90 градусов). Кроме того, размер целевого блока может учитываться при разделении целевого блока. Например, когда длина по горизонтали превышает установленное пороговое значение, целевой блок разделяется по вертикали. Когда длина по вертикали превышает предварительно установленное пороговое значение, целевой блок разделяется по горизонтали. Чтобы разделить целевой блок, можно использовать как размер целевого блока, так и угол между векторами движения контрольной точки.[155] Although the above example shows that the target block is divided when the angle between the motion vectors of the two reference points is an obtuse angle, the block can be divided when the angle is an acute angle (an angle less than 90 degrees). In addition, the size of the target block may be taken into account when dividing the target block. For example, when the horizontal length exceeds a set threshold, the target block is split vertically. When the vertical length exceeds a preset threshold, the target block is split horizontally. To split a target block, you can use both the size of the target block and the angle between the control point motion vectors.

[156] Например, устройство кодирования видео может быть конфигурировано для определения необходимости разделения блока на основе угла между векторами движения контрольных точек только тогда, когда горизонтальная и/или вертикальная длина целевого блока больше предварительно установленного порогового значения. В качестве другого примера, когда длина по горизонтали превышает предварительно установленное пороговое значение, устройство кодирования видео может быть конфигурировано определять необходимость вертикального разделения блока на основе угла между векторами движения контрольной точки левого верхнего угла и правого верхнего угла целевого блока. Кроме того, когда длина по вертикали превышает заданное пороговое значение, устройство может быть конфигурировано определять необходимость разделения блока по вертикали на основе угла между векторами движения контрольной точки левого верхнего угла и левого нижнего угла целевого блока.[156] For example, a video encoding device may be configured to determine whether to divide a block based on the angle between the motion vectors of the reference points only when the horizontal and/or vertical length of the target block is greater than a predetermined threshold. As another example, when the horizontal length exceeds a predetermined threshold, the video encoding device may be configured to determine whether to vertically divide a block based on the angle between the motion vectors of the upper left corner reference point and the upper right corner of the target block. In addition, when the vertical length exceeds a predetermined threshold, the device may be configured to determine whether to split a block vertically based on the angle between the motion vectors of the upper left corner reference point and the lower left corner of the target block.

[157] Хотя было описано, что целевой блок разделяется на множество областей на основе векторов движения контрольных точек целевого блока, варианты осуществления не ограничиваются этим. Например, аффинные векторы движения верхнего левого субблока, верхнего правого субблока и нижнего левого субблока в целевом блоке могут использоваться вместо вектора MV0 движения контрольной точки левого верхнего угла, вектора MV1 движения контрольной точки верхнего правого угла и вектора MV2 движения контрольной точки нижнего левого угла.[157] Although it has been described that a target block is divided into a plurality of regions based on motion vectors of reference points of the target block, embodiments are not limited to this. For example, the affine motion vectors of the top left sub-block, the top right sub-block and the bottom left sub-block in the target block may be used instead of the top left corner reference point motion vector MV0, the top right corner reference point motion vector MV1 and the bottom left corner reference point motion vector MV2.

[158] В то время как фиг. 12A-12B показано, что целевой блок разделяется пополам в горизонтальном или вертикальном направлении, варианты осуществления не ограничиваются этим. Например, целевой блок может разделяться на множество блоков в горизонтальном направлении и/или множество блоков в вертикальном направлении. Альтернативно, целевой блок может разделяться на субблоки, в которых было выполнено аффинное предсказание движения. В этом случае один субблок составляет одну область.[158] While FIG. 12A-12B show that the target block is divided in half in the horizontal or vertical direction, embodiments are not limited to this. For example, the target block may be divided into a plurality of blocks in the horizontal direction and/or a plurality of blocks in the vertical direction. Alternatively, the target block may be divided into subblocks in which affine motion prediction has been performed. In this case, one subblock constitutes one area.

[159] Каждая область разделения из целевого блока должна быть больше или равна размеру субблока, в котором было выполнено аффинное предсказание движения. Другими словами, каждая область должна состоять из одного или нескольких субблоков. Например, если размер субблока равен 4x4, размер области равен 2m x 2n (где m и n - целые числа, большие или равные 2).[159] Each partition region from the target block must be greater than or equal to the size of the subblock on which the affine motion prediction was performed. In other words, each area must consist of one or more subblocks. For example, if the subblock size is 4x4, the area size is 2m x 2n (where m and n are integers greater than or equal to 2).

[160] Когда целевой блок не разделяется, параметры компенсации освещенности могут быть получены согласно первому варианту осуществления, описанному выше. Далее, в случае, когда целевой блок разделяется, будет описан способ получения параметров компенсации освещенности.[160] When the target block is not divided, the light compensation parameters can be obtained according to the first embodiment described above. Next, in the case where the target block is divided, a method for obtaining light compensation parameters will be described.

2. Получение параметров компенсации освещенности и компенсация освещенности2. Obtaining light compensation parameters and light compensation

[161] Устройство кодирования видео конфигурировано для вычисления параметров компенсации освещенности, соответственно соответствующих множеству областей. Компенсация освещенности выполняется в единицах областей или субблоков в целевом блоке с использованием множества параметров компенсации освещенности. Устройство кодирования видео конфигурировано для определения для каждой из множества областей предварительно построенных отсчетов (опорных отсчетов) в текущем изображении и опорном изображении, которые должны использоваться для получения параметров компенсации. Опорные отсчеты в текущем изображении выбираются из предварительно построенных отсчетов, смежных с целевым блоком. Для области, отстоящей от левой границы целевого блока, в качестве опорных выбираются предварительно построенные отсчеты, смежные с левой стороной целевого блока. Для области, отстоящей от верхней границы целевого блока, в качестве опорных выбирают предварительно построенные отсчеты, смежные с верхней стороной целевого блока.[161] The video encoding apparatus is configured to calculate illumination compensation parameters corresponding to a plurality of areas. Light compensation is performed in units of regions or sub-blocks within a target block using a variety of light compensation parameters. The video encoding apparatus is configured to determine, for each of a plurality of regions, pre-constructed samples (reference samples) in the current picture and the reference picture to be used to obtain compensation parameters. The reference samples in the current image are selected from pre-constructed samples adjacent to the target block. For the area distant from the left border of the target block, pre-constructed samples adjacent to the left side of the target block are selected as reference. For the area distant from the upper boundary of the target block, pre-constructed samples adjacent to the upper side of the target block are selected as reference ones.

[162] Опорные отсчеты в опорном изображении могут быть выбраны с использованием векторов движения контрольных точек целевого блока или одного или более векторов движения, полученных из векторов движения контрольных точек. Далее будет подробно описан способ получения параметров компенсации освещенности и осуществления компенсации освещенности в соответствии с различными типами разделения целевого блока.[162] Reference samples in the reference image may be selected using motion vectors of the reference points of the target block or one or more motion vectors derived from the motion vectors of the reference points. Next, a method for obtaining illumination compensation parameters and performing illumination compensation in accordance with various types of division of the target block will be described in detail.

[163] 2-1. Когда целевой блок разделяется на 4 области[163] 2-1. When the target block is divided into 4 areas

[164] Во-первых, в качестве примера будет описан случай, когда целевой блок, имеющий длину по горизонтали и длину по вертикали, равные W и H, разделяется в горизонтальном и вертикальном направлениях и, таким образом, состоит из четырех областей. Устройство кодирования видео конфигурировано для определения предварительно построенных отсчетов (опорных отсчетов) в текущем изображении и опорном изображении, которые должны использоваться для получения параметров компенсации для каждой области.[164] First, as an example, a case will be described where a target block having a horizontal length and a vertical length equal to W and H is divided in the horizontal and vertical directions and is thus composed of four regions. The video encoding apparatus is configured to determine pre-constructed samples (reference samples) in the current image and the reference image to be used to obtain compensation parameters for each region.

[165] Фиг. 13 является примерной схемой, иллюстрирующей способ определения опорных отсчетов, которые должны использоваться для получения параметров компенсации. Для верхней левой области в целевом блоке устройство кодирования видео выбирает от T0 до Tw/2-1 рядом с верхней стороной верхней левой области и от L0 до LH/2-1 рядом с левой стороной верхней левой области в текущем изображении в качестве опорных отсчетов, которые будут использоваться для получения параметров компенсации. Затем опорная область, соответствующая верхней левой области опорного изображения, определяется с использованием репрезентативного вектора движения верхней левой области, а затем в качестве опорных отсчетов выбираются предварительно построенные отсчеты, смежные с верхней и левой сторонами опорной области. В частности, репрезентативный вектор движения верхней левой области может быть вектором MV0 движения контрольной точки верхнего левого угла целевого блока.[165] FIG. 13 is an exemplary diagram illustrating a method for determining reference samples to be used to obtain compensation parameters. For the top left region in the target block, the video encoder selects T 0 to T w/2-1 next to the top side of the top left region and L 0 to L H/2-1 next to the left side of the top left region in the current image in as reference samples that will be used to obtain compensation parameters. Then, a reference region corresponding to the upper left region of the reference image is determined using a representative motion vector of the upper left region, and then pre-constructed samples adjacent to the upper and left sides of the reference region are selected as reference samples. In particular, the representative motion vector of the upper left region may be the motion vector MV0 of the control point of the upper left corner of the target block.

[166] Для верхней правой области устройство кодирования видео конфигурировано выбирать от Tw/2 до Tw-1 рядом с верхней стороной верхней правой области в качестве по меньшей мере некоторых опорных отсчетов, которые должны использоваться для получения параметров компенсации. В частности, L0 - LH /2-1, смежные с левой стороной целевого блока, могут быть дополнительно выбраны в качестве опорных отсчетов. Поскольку нет предварительно построенных отсчетов, смежных с левой стороной верхней правой области, от L0 до LH/2-1 на левой стороне целевого блока можно заполнить в качестве опорных отсчетов с левой стороны верхней правой области. [166] For the upper right region, the video encoding apparatus is configured to select T w/2 to T w-1 adjacent the upper side of the upper right region as at least some reference samples to be used to obtain compensation parameters. In particular, L 0 - L H /2-1 adjacent to the left side of the target block can be further selected as reference samples. Since there are no pre-constructed samples adjacent to the left side of the upper right region, L 0 to L H/2-1 on the left side of the target block can be filled in as reference samples on the left side of the upper right region.

[167] Затем устройство кодирования видео конфигурировано определять опорную область, соответствующую верхней правой области в опорном изображении, с использованием репрезентативного вектора движения верхней правой области, и выбирает предварительно построенные отсчеты, смежные с верхней стороной опорной области, в качестве опорных отсчетов, используемых для получения параметров компенсации. Когда дополнительно выбираются от L0 до LH/2-1, смежные с левой стороной целевого блока, устройство кодирования видео может дополнительно выбирать предварительно построенные отсчеты, смежные с левой стороной опорной области, в качестве опорных отсчетов. В частности, репрезентативный вектор движения верхней правой области может быть вектором MV1 движения контрольной точки правого верхнего угла целевого блока.[167] The video encoding apparatus is then configured to determine a reference region corresponding to the upper right region in the reference image using a representative motion vector of the upper right region, and selects pre-constructed samples adjacent to the upper side of the reference region as reference samples used to obtain compensation parameters. When additionally selected from L0before LH/2-1adjacent to the left side of the target block, the video encoding device may further select pre-constructed samples adjacent to the left side of the reference region as reference samples. Specifically, the representative motion vector of the upper right region may be the motion vector MV1 of the upper right corner reference point of the target block.

[168] Для нижней левой области устройство кодирования видео выбирает от LH/2 до LH-1 рядом с левой стороной нижней левой области в качестве по меньшей мере некоторых опорных отсчетов. Дополнительно могут быть выбраны от T0 до Tw/2-1, смежные с верхней стороной целевого блока. Затем устройство кодирования видео конфигурировано определять опорную область, соответствующую нижней левой области в опорном изображении, с использованием репрезентативного вектора движения нижней левой области, и выбирать предварительно построенные отсчеты, смежные с левой стороной опорной области в качестве опорных отсчетов. Когда дополнительно выбирается от T0 до Tw/2-1, смежные с верхней стороной целевого блока, устройство кодирования видео может быть конфигурировано дополнительно выбирать предварительно построенные отсчеты, смежные с верхней стороной опорной области. Здесь репрезентативный вектор движения верхней левой области может быть вектором MV1 движения контрольной точки нижнего левого угла целевого блока.[168] For the lower left region, the video encoding device selects L H/2 to L H-1 adjacent the left side of the lower left region as at least some reference samples. Additionally, T 0 to T w/2-1 adjacent to the top side of the target block can be selected. The video encoding device is then configured to determine a reference region corresponding to the lower left region in the reference image using a representative motion vector of the lower left region, and select pre-constructed samples adjacent to the left side of the reference region as reference samples. When T 0 to T w/2-1 adjacent to the top side of the target block are further selected, the video encoding apparatus may be configured to further select pre-constructed samples adjacent to the top side of the reference region. Here, the representative motion vector of the upper left region may be the motion vector MV1 of the control point of the lower left corner of the target block.

[169] Как только опорные отсчеты для каждой из верхней левой, верхней правой и нижней левой областей в целевом блоке определены, устройство кодирования видео конфигурировано получать параметр компенсации освещенности для каждой области путем соответствующего ввода опорных отсчетов, выбранных из опорного изображения, и опорные отсчеты, выбранные из текущего изображения, в x и y Уравнения 15. Параметр компенсации освещенности для нижней правой области может быть получен из параметров компенсации освещенности верхней левой, верхней правой и нижней левой областей. Например, параметр компенсации освещенности нижней правой области может быть установлен равным среднему значению параметров компенсации освещенности верхней правой и нижней левой областей.[169] Once the reference samples for each of the upper left, upper right and lower left regions in the target block are determined, the video encoding device is configured to obtain a light compensation parameter for each region by correspondingly inputting the reference samples selected from the reference image and the reference samples. selected from the current image, in x and y of Equation 15. The illumination compensation parameter for the lower right region can be obtained from the illumination compensation parameters of the upper left, upper right and lower left regions. For example, the light compensation parameter of the lower right region may be set to the average of the light compensation parameters of the upper right and lower left regions.

[170] Альтернативно, устройство кодирования видео может быть конфигурировано определять репрезентативный вектор движения для нижней правой области и получать параметр компенсации освещенности для нижней правой области с использованием репрезентативного вектора движения. Репрезентативный вектор движения для правой нижней области может быть вектором движения контрольной точки в правом нижнем углу целевого блока. Устройство кодирования видео может быть конфигурировано получать вектор движения контрольной точки нижнего правого угла целевого блока путем замены координаты (W-1, H-1) отсчета нижнего правого угла (отсчет нижнего правого угла нижней правой области) в целевом блоке для (x, y) в Уравнении 10 или 11. [170] Alternatively, the video encoding apparatus may be configured to determine a representative motion vector for the lower right region and obtain a light compensation parameter for the lower right region using the representative motion vector. The representative motion vector for the bottom right region may be the motion vector of a reference point in the bottom right corner of the target block. The video encoding apparatus may be configured to obtain a reference point motion vector of the lower right corner of the target block by replacing the coordinate (W-1, H-1) of the lower right corner sample (lower right corner sample of the lower right region) in the target block for (x, y) in Equation 10 or 11.

[171] Нет заранее построенных отсчетов, смежных с правой нижней частью целевого блока. Следовательно, от Tw/2 до Tw-1 и от LH/2 до LH-1, смежные к верхней и левой сторонам целевого блока, используются в качестве опорных отсчетов для получения параметров компенсации. Затем определяется опорная область в опорном изображении на основе вектора движения контрольной точки нижнего правого угла целевого блока, и в качестве опорных отсчетов выбираются предварительно построенные отсчеты, смежные с верхней и левой сторонами опорной области. Устройство кодирования видео получает параметр компенсации освещенности для нижней правой области, используя Уравнение 15 с выбранными опорными отсчетами.[171] There are no pre-constructed samples adjacent to the bottom right of the target block. Therefore, from Tw/2 before Tw-1 and from LH/2 to LH-1, adjacent to the top and left sides of the target block, are used as reference samples to obtain the compensation parameters. Then, a reference region in the reference image is determined based on the motion vector of the reference point of the lower right corner of the target block, and pre-constructed samples adjacent to the top and left sides of the reference region are selected as reference samples. The video encoder obtains the illumination compensation parameter for the lower right region using Equation 15 with the selected reference samples.

[172] В вышеприведенном примере для определения опорных отсчетов в опорном изображении для получения параметра компенсации используется репрезентативный вектор движения каждой области. В качестве примера используются векторы движения контрольной точки (т.е. параметры для аффинного предсказания движения). Однако варианты осуществления не ограничиваются этим. Репрезентативный вектор движения каждой области может быть вектором движения, полученным из векторов движения контрольных точек целевого блока.[172] In the above example, a representative motion vector of each region is used to determine reference samples in the reference image to obtain a compensation parameter. The reference point motion vectors (i.e. parameters for affine motion prediction) are used as an example. However, the embodiments are not limited to this. The representative motion vector of each region may be a motion vector obtained from the motion vectors of the target block's control points.

[173] В примерном варианте осуществления репрезентативный вектор движения каждой области может быть вектором движения предопределенном положении, полученным из векторов движения контрольных точек целевого блока. Например, аффинные векторы движения 4x4 верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков в целевом блоке, предварительно сгенерированном при аффинном предсказании движения, могут использоваться как репрезентативные векторы движения верхней левой, верхней правой, нижней левой и нижней правой области соответственно. В качестве другого примера, аффинный вектор движения в центральной точке каждой из верхней левой, верхней правой, нижней левой и нижней правой области может использоваться в качестве репрезентативного вектора движения каждой области. Аффинный вектор движения в центральной точке каждой области может быть сгенерирован путем замены (x, y) положением центра каждой области в Уравнении 10 или 11.[173] In an exemplary embodiment, the representative motion vector of each region may be a predetermined position motion vector obtained from the motion vectors of target block reference points. For example, the 4x4 affine motion vectors of the top left, top right, bottom left, and bottom right subblocks in a target block previously generated by affine motion prediction can be used as representative motion vectors of the top left, top right, bottom left, and bottom right regions, respectively. As another example, the affine motion vector at the center point of each of the top left, top right, bottom left, and bottom right regions can be used as a representative motion vector of each region. An affine motion vector at the center point of each region can be generated by replacing (x, y) with the position of the center of each region in Equation 10 or 11.

[174] В другом примерном варианте осуществления среднее значение аффинных векторов движения субблоков в каждой области может использоваться в качестве репрезентативного вектора движения соответствующей области. В качестве другого способа определения опорных отсчетов, которые должны использоваться в опорном изображении для получения параметров компенсации, вместо репрезентативного вектора движения каждой области могут использоваться аффинные векторы движения субблоков в каждой области. Другими словами, опорные блоки 4x4 в положениях, указанных аффинными векторами движения субблоков 4x4 в каждой области, могут быть определены в опорном изображении, а предварительно построенные пиксели, смежные с верхней и левой сторонами опорных блоков 4x4, могут быть выбраны в качестве опорных пикселей.[174] In another exemplary embodiment, the average of the affine motion vectors of the subblocks in each region may be used as a representative motion vector of the corresponding region. As another way to determine the reference samples to be used in the reference image to obtain the compensation parameters, affine motion vectors of the subblocks in each region can be used instead of the representative motion vector of each region. In other words, 4x4 reference blocks at positions indicated by the affine motion vectors of 4x4 sub-blocks in each region can be determined in the reference image, and pre-constructed pixels adjacent to the top and left sides of the 4x4 reference blocks can be selected as reference pixels.

[175] Фиг. 14 является примерной схемой для описания способа выполнения компенсации освещенности с использованием параметров компенсации освещенности для четырех областей целевого блока. Каждая область включает в себя один или несколько субблоков, которые представляют собой единицы, в которых выполняется аффинное преобразование. В примере на фиг. 14, верхняя левая область TL, верхняя правая область TR, нижняя левая область BL и нижняя правая область BR целевого блока включают в себя по четыре субблока (субблок 4 × 4). Устройство кодирования видео конфигурировано для выполнения компенсации освещенности для предсказываемых отсчетов в соответствующей области (предсказываемые отсчеты, сгенерированные посредством аффинного предсказания движения) с использованием параметра компенсации освещенности каждой области. Каждый субблок может компенсироваться с использованием параметра компенсации освещенности области, которой принадлежит субблок. Например, четыре субблока, включенные в верхнюю левую область, компенсируются с использованием параметров компенсации освещенности (A0, b0) верхней левой области.[175] FIG. 14 is an exemplary diagram for describing a method for performing illumination compensation using illumination compensation parameters for four areas of a target block. Each region includes one or more subblocks, which are the units in which the affine transformation is performed. In the example in FIG. 14, the upper left area TL, upper right area TR, lower left area BL and lower right area BR of the target block each include four sub-blocks (4×4 sub-block). The video encoding apparatus is configured to perform illumination compensation for predicted samples in a corresponding region (predicted samples generated by affine motion prediction) using the illumination compensation parameter of each region. Each subblock can be compensated using the light compensation parameter of the area to which the subblock belongs. For example, four subblocks included in the upper left region are compensated using the light compensation parameters ( A0 , b0 ) of the upper left region.

[176] В некоторых других вариантах осуществления устройство кодирования видео может быть конфигурировано интерполировать параметры компенсации освещенности, которые соответственно соответствуют субблокам в каждой области, с использованием параметров компенсации освещенности четырех областей TL, TR, BL и BR, а затем выполнять компенсацию освещенности на каждом субблоке с использованием интерполированного параметра компенсации освещенности. Как описано выше, параметр компенсации освещенности каждой области может быть получен из репрезентативного вектора движения области. Однако репрезентативный вектор движения может не отражать движение всех субблоков в соответствующей области. [176] In some other embodiments, the video encoding device may be configured to interpolate the light compensation parameters that respectively correspond to the sub-blocks in each region using the light compensation parameters of the four regions TL, TR, BL and BR, and then perform light compensation on each sub-block using an interpolated light compensation parameter. As described above, the illumination compensation parameter of each region can be obtained from a representative motion vector of the region. However, the representative motion vector may not reflect the motion of all sub-blocks in the corresponding region.

[177] Например, параметры компенсации освещенности соответствующих областей могут быть получены из векторов движения контрольных точек верхнего левого, верхнего правого, нижнего левого и нижнего правого угла целевого блока или аффинных векторов движения из 4x4 верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков целевого блока. В частности, движение верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков 4x4 может иметь большее влияние на получение параметров компенсации освещенности. Соответственно, устройство кодирования видео может быть конфигурировано для получения параметров компенсации освещенности соответствующих субблоков посредством интерполяции с использованием параметров компенсации освещенности соответствующих областей.[177] For example, the light compensation parameters of the corresponding regions can be obtained from the motion vectors of the control points of the top left, top right, bottom left and bottom right corners of the target block or the affine motion vectors from the 4x4 top left, top right, bottom left and bottom right subblocks target block. In particular, the movement of the top left, top right, bottom left, and bottom right 4x4 subblocks can have a greater impact on obtaining the light compensation parameters. Accordingly, the video encoding apparatus may be configured to obtain the light compensation parameters of the corresponding sub-blocks by interpolation using the light compensation parameters of the corresponding regions.

[178] Фиг. 15 представляет собой примерную схему, иллюстрирующей способ интерполяции параметров компенсации освещенности субблоков с использованием параметров компенсации освещенности соответствующих областей. (A0, b0) - (A3, b3) - параметры компенсации освещенности соответствующих областей, полученные из векторов движения контрольных точек левого верхнего угла, правого верхнего угла, левого нижнего угла и правого нижнего угла целевого блока соответственно, или из аффинных векторов движения 4x4 верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков целевого блока. Кроме того, предполагается, что (A0, b0) является параметром компенсации освещенности верхнего левого субблока 4x4 в верхней левой области целевого блока. Аналогично, предполагается, что от (A1, b1) до (A3, b3) являются параметрами компенсации освещенности верхнего правого субблока 4x4 в верхней правой области, параметром компенсации освещенности нижнего левого субблока 4x4 в нижней левой области и параметром компенсации освещенности нижнего правого субблока 4x4 в нижней правой области. Другими словами, предполагается, что (A0, b0) - (A3, b3) являются параметрами компенсации четырех угловых субблоков целевого блока.[178] FIG. 15 is an exemplary diagram illustrating a method for interpolating the illumination compensation parameters of sub-blocks using the illumination compensation parameters of the corresponding areas. (A 0 , b 0 ) - (A 3 , b 3 ) - illumination compensation parameters of the corresponding areas, obtained from the motion vectors of the control points of the upper left corner, upper right corner, lower left corner and lower right corner of the target block, respectively, or from affine 4x4 motion vectors of the top left, top right, bottom left and bottom right subblocks of the target block. In addition, it is assumed that (A 0 , b 0 ) is the illumination compensation parameter of the upper left 4x4 subblock in the upper left region of the target block. Similarly, it is assumed that (A 1 , b 1 ) to (A3, b 3 ) are the illumination compensation parameters of the upper right 4x4 subblock in the upper right region, the illumination compensation parameter of the lower left 4x4 subblock in the lower left region, and the illumination compensation parameter of the lower right 4x4 subblock in the lower right area. In other words, it is assumed that (A 0 , b 0 ) - (A 3 , b 3 ) are the compensation parameters of the four corner subblocks of the target block.

[179] Устройство кодирования видео интерполирует параметры компенсации других субблоков, используя параметры компенсации четырех угловых субблоков. Может быть выполнена билинейная интерполяция с использованием четырех угловых субблоков или линейная интерполяция. Например, субблоки в первой строке целевого блока могут быть интерполированы с использованием (A0, b0) и (A2, b2). Субблоки в первом столбце целевого блока могут быть интерполированы с использованием (A0, b0) и (A2, b2). Таким образом получают параметры компенсации всех субблоков.[179] The video encoding device interpolates the compensation parameters of the other sub-blocks using the compensation parameters of the four corner sub-blocks. Bilinear interpolation using four corner subblocks or linear interpolation can be performed. For example, subblocks in the first row of a target block can be interpolated using (A 0 , b 0 ) and (A 2 , b 2 ). Subblocks in the first column of the target block can be interpolated using (A 0 , b 0 ) and (A 2 , b 2 ). In this way, the compensation parameters of all subblocks are obtained.

[180] В частности, коэффициент фильтрации или весовой коэффициент, используемый для интерполяции, может быть установлен в соответствии с разницей между положениями угловых субблоков и положениями целевого субблока (или расстоянием между угловыми субблоками и целевым субблоком). Меньшей разнице в положении присваивается больший вес.[180] In particular, the filter coefficient or weight coefficient used for interpolation can be set according to the difference between the positions of the corner sub-blocks and the positions of the target sub-block (or the distance between the corner sub-blocks and the target sub-block). Smaller differences in position are given more weight.

[181] В качестве альтернативы, коэффициент фильтрации или вес, используемые для интерполяции, могут быть установлены в соответствии с разницей между векторами движения, используемыми для получения параметров компенсации угловых субблоков (векторы движения контрольной точки верхнего левого, верхнего правого, нижнего левого и нижнего правого углов, или аффинные векторы движения верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков 4x4 целевого блока) и аффинный вектор движения целевого субблока. Меньшей разнице векторов движения присваивается больший вес.[181] Alternatively, the filter coefficient or weight used for interpolation can be set according to the difference between the motion vectors used to obtain the corner subblock compensation parameters (top-left, top-right, bottom-left, and bottom-right reference point motion vectors corners, or affine motion vectors of the top left, top right, bottom left, and bottom right 4x4 subblocks of the target block) and the affine motion vector of the target subblock. Smaller differences in motion vectors are assigned more weight.

[182] 2.2 Когда целевой блок разделяется на две области[182] 2.2 When the target block is divided into two areas

[183] Даже когда целевой блок разделяется на две области, параметр компенсации освещенности каждой области может быть получен таким же образом, как когда целевой блок разделяется на четыре области. Например, ссылаясь на фиг. 16, устройство кодирования видео выбирает в качестве опорных отсчетов в текущем изображении для получения параметра компенсации верхней области предварительно построенные отсчеты от T0 до Tw-1, смежные с верхней стороной верхней области, и предварительно построенные отсчеты от L0 до LH/2-1, смежные с левой стороной верхней области. Затем устройство кодирования видео конфигурировано определять опорную область в опорном изображении с использованием репрезентативного вектора движения верхней области и выбирать предварительно построенные отсчеты, смежные с верхней и левой сторонами опорной области, в качестве опорных отсчетов.[183] Even when the target block is divided into two areas, the illumination compensation parameter of each area can be obtained in the same manner as when the target block is divided into four areas. For example, referring to FIG. 16, the video encoding apparatus selects as reference samples in the current image to obtain the upper region compensation parameter the pre-built samples T 0 to T w-1 adjacent to the top side of the upper region, and the pre-built samples L 0 to L H/2 -1 adjacent to the left side of the top region. The video encoding device is then configured to determine a reference region in the reference image using a representative motion vector of the upper region, and select pre-constructed samples adjacent to the top and left sides of the reference region as reference samples.

[184] Репрезентативный вектор движения верхней области может быть вектором движения контрольной точки левого верхнего угла целевого блока. В качестве альтернативы, это может быть вектор движения, полученный из векторов движения контрольных точек целевого блока. Например, может использоваться аффинный вектор движения верхнего левого субблока 4x4 в верхней области или может использоваться аффинный вектор движения, соответствующий центральной точке верхней области. В другом примере среднее значение аффинных векторов движения субблоков в каждой области может использоваться в качестве репрезентативного вектора движения соответствующей области.[184] The representative motion vector of the upper region may be a motion vector of the upper left corner reference point of the target block. Alternatively, it could be a motion vector derived from the motion vectors of the target block's control points. For example, an affine motion vector of the top left 4x4 subblock in the top region may be used, or an affine motion vector corresponding to the center point of the top region may be used. In another example, the average of the affine motion vectors of the subblocks in each region may be used as a representative motion vector of the corresponding region.

[185] Устройство кодирования видео конфигурировано для выбора в качестве опорных отсчетов в текущем изображении для получения параметра компенсации нижней области предварительно построенных отсчетов T0 - Tw-1, смежных с верхней стороной целевого блока, и предварительно построенных отсчетов LH/2 - LH-1, смежных с левой стороной нижней области. Затем устройство кодирования видео конфигурировано определять опорную область в опорном изображении с использованием репрезентативного вектора движения нижней области и выбирать предварительно построенные отсчеты, смежные с верхней и левой сторонами опорной области, в качестве опорных отсчетов.[185] The video encoding apparatus is configured to select, as reference samples in the current image to obtain a lower region compensation parameter, the pre-built samples T 0 - T w-1 adjacent to the top side of the target block, and the pre-built samples L H/2 - L H-1 adjacent to the left side of the lower area. The video encoding device is then configured to determine a reference region in the reference image using a representative motion vector of the bottom region, and select pre-constructed samples adjacent to the top and left sides of the reference region as reference samples.

[186] Репрезентативный вектор движения нижней области может быть вектором движения контрольной точки левого нижнего угла целевого блока. В качестве альтернативы, это может быть вектор движения, полученный из векторов движения контрольных точек целевого блока. Например, может использоваться аффинный вектор движения нижнего левого субблока 4x4 в нижней области или может использоваться аффинный вектор движения, соответствующий центральной точке нижней области. В качестве другого примера, среднее значение аффинных векторов движения субблоков в нижней области может использоваться в качестве репрезентативного вектора движения нижней области.[186] The representative motion vector of the lower region may be a motion vector of the control point of the lower left corner of the target block. Alternatively, it could be a motion vector derived from the motion vectors of the target block's control points. For example, an affine motion vector of the lower left 4x4 subblock in the bottom region may be used, or an affine motion vector corresponding to the center point of the bottom region may be used. As another example, the average of the affine motion vectors of the subblocks in the bottom region can be used as a representative motion vector of the bottom region.

[187] В вышеприведенном примере в качестве способа определения опорных отсчетов в опорном изображении, используемом для получения параметра компенсации, используется репрезентативный вектор движения каждой области. Однако аффинные векторы движения субблоков в каждой области могут использоваться вместо репрезентативного вектора движения каждой области. То есть для каждой области опорные блоки 4x4 в положениях, указанных аффинными векторами движения субблоков 4x4, могут быть определены в опорном изображении, а предварительно построенные пиксели, смежные с верхней и левой сторонами опорных блоков 4x4, могут быть выбраны в качестве опорных пикселей.[187] In the above example, a representative motion vector of each region is used as a method for determining reference samples in the reference image used to obtain the compensation parameter. However, the affine motion vectors of the subblocks in each region can be used instead of the representative motion vector of each region. That is, for each region, 4x4 reference blocks at positions indicated by the affine motion vectors of the 4x4 sub-blocks can be determined in the reference image, and pre-constructed pixels adjacent to the top and left sides of the 4x4 reference blocks can be selected as reference pixels.

[188] Для каждой области устройство кодирования видео конфигурировано вводить опорные отсчеты, выбранные в опорном изображении, и опорные отсчеты, выбранные в текущем изображении, в x и y в Уравнении 15, соответственно, для получения параметров компенсации для соответствующих областей. Кроме того, устройство кодирования видео выполняет компенсацию освещенности для отсчетов предсказания в соответствующей области (отсчеты предсказания, сгенерированные посредством аффинного предсказания движения), используя параметр компенсации освещенности каждой области. Каждый субблок может компенсироваться с использованием параметра компенсации освещенности области, которой принадлежит субблок.[188] For each region, the video encoding apparatus is configured to input reference samples selected in the reference image and reference samples selected in the current image into x and y in Equation 15, respectively, to obtain compensation parameters for the respective regions. In addition, the video encoding device performs illumination compensation for the prediction samples in the corresponding region (prediction samples generated by affine motion prediction) using the illumination compensation parameter of each region. Each subblock can be compensated using the light compensation parameter of the area to which the subblock belongs.

[189] Альтернативно, устройство кодирования видео может быть конфигурировано для интерполяции параметров компенсации освещенности, которые соответствуют субблокам, с использованием параметров компенсации освещенности соответствующих областей, и для выполнения компенсации освещенности для каждого субблока с использованием интерполированных параметров, как в случае, когда целевой блок разделен на четыре области.[189] Alternatively, the video encoding apparatus may be configured to interpolate the light compensation parameters that correspond to the sub-blocks using the light compensation parameters of the corresponding regions, and to perform light compensation for each sub-block using the interpolated parameters, as in the case where the target block is divided into four areas.

[190] Интерполяция может применяться, когда репрезентативный вектор движения каждой области, используемый для получения параметра компенсации, связан с конкретным положениемв каждой области. Например, векторы движения контрольной точки верхнего левого и нижнего левого углов целевого блока или аффинные векторы движения верхнего левого и нижнего левого субблоков 4×4 целевого блока могут использоваться в качестве репрезентативных векторов движения. В частности, параметры компенсации двух областей рассматриваются как параметры компенсации освещенности верхних левого и нижнего левого угловых субблоков TL и BL в целевом блоке, как показано на фиг. 17.[190] Interpolation can be used when the representative motion vector of each region used to obtain the compensation parameter is associated with a specific position in each region. For example, the control point motion vectors of the top left and bottom left corners of the target block or the affine motion vectors of the top left and bottom left 4x4 subblocks of the target block can be used as representative motion vectors. Specifically, the compensation parameters of the two areas are considered as the illumination compensation parameters of the upper left and lower left corner subblocks TL and BL in the target block, as shown in FIG. 17.

[191] Устройство кодирования видео может быть конфигурировано для интерполяции параметра компенсации целевого субблока путем применения весового коэффициента к параметрам компенсации (A0, b0) верхней области и параметрам компенсации (A2, b2) нижней области. В частности, вес может быть назначен согласно расстоянию между верхним левым и нижним левым угловыми субблоками в целевом блоке и целевом субблоке. В качестве альтернативы он может быть установлен в соответствии с разницей между векторами движения, используемыми для получения параметров компенсации двух областей (векторы движения контрольной точки левого верхнего и левого нижнего углов целевого блока или аффинные векторы движения верхнего левого и нижнего левого субблока 4×4 целевого блока) и аффинный вектор движения целевого субблока. По мере уменьшения разницы между векторами движения вес увеличивается.[191] The video encoding apparatus may be configured to interpolate a compensation parameter of a target subblock by applying a weighting factor to the compensation parameters (A 0 , b 0 ) of the upper region and the compensation parameters (A 2 , b 2 ) of the lower region. In particular, the weight may be assigned according to the distance between the upper left and lower left corner sub-blocks in the target block and the target sub-block. Alternatively, it can be set according to the difference between the motion vectors used to obtain the compensation parameters of the two regions (the control point motion vectors of the top left and bottom left corners of the target block, or the affine motion vectors of the top left and bottom left 4x4 subblock of the target block ) and the affine motion vector of the target subblock. As the difference between motion vectors decreases, the weight increases.

[192] Даже когда целевой блок разделяется по вертикали на две области, может использоваться тот же метод, что и при горизонтальном разделении целевого блока на две области. В частности, репрезентативные векторы движения двух областей (левая область и правая область) могут быть, например, векторами движения контрольной точки левого верхнего угла и верхнего правого угла целевого блока или аффинными векторами движения векторы движения верхнего левого и верхнего правого субблоков 4×4 целевого блока. Альтернативно, аффинный вектор движения центральной точки каждой области или среднее значение аффинных векторов движения субблоков каждой области может использоваться в качестве репрезентативного вектора движения каждой области. Другие операции являются такими же, как и в случае горизонтального разделения, описанного выше, или могут быть явно выведены из него, поэтому их дальнейшее подробное описание опущено.[192] Even when the target block is divided vertically into two areas, the same method as when the target block is divided horizontally into two areas can be used. Specifically, the representative motion vectors of the two regions (left region and right region) may be, for example, the control point motion vectors of the top left corner and top right corner of the target block, or the affine motion vectors of the top left and top right 4x4 subblocks of the target block . Alternatively, the affine motion vector of the center point of each region or the average of the affine motion vectors of the subblocks of each region may be used as a representative motion vector of each region. Other operations are the same as in the case of horizontal division described above or can be explicitly derived from it, so further detailed description thereof will be omitted.

[193] 2.3 Когда целевой блок разбивается более чем на 4 субблока[193] 2.3 When a target block is split into more than 4 subblocks

[194] Как описано выше, целевой блок может быть разделен на 2m и 2n блоков (где m и n являются целыми числами, большими или равными 2) в горизонтальном и вертикальном направлениях. Например, целевой блок может быть разделен на субблоки, которые являются единицами, в которых выполняется аффинное предсказание движения. Этот случай проиллюстрирован на фиг. 18. Ссылаясь на фиг. 18, устройство кодирования видео выводит параметры компенсации освещенности для верхней левой области TL, верхней правой области TR, нижней левой области BL и нижней правой области BR целевого блока, используя способ, описанный в разделе 2.1.[194] As described above, the target block can be divided into 2m and 2n blocks (where m and n are integers greater than or equal to 2) in the horizontal and vertical directions. For example, a target block can be divided into subblocks, which are units in which affine motion prediction is performed. This case is illustrated in FIG. 18. Referring to FIG. 18, the video encoding device outputs light compensation parameters for the upper left area TL, upper right area TR, lower left area BL and lower right area BR of the target block using the method described in Section 2.1.

[195] Для остальных областей, отличных от этих четырех областей, параметры компенсации освещенности остальных областей могут быть получены путем применения интерполяции, описанной в разделе 2.1. Альтернативно, для остальных областей параметры компенсации освещенности могут быть получены таким же образом, как и в случае верхней левой области TL, верхней правой области TR, нижней левой области BL и нижней правой области BR. Например, для области А устройство кодирования видео выбирает предварительно построенные отсчеты, расположенные на верхней стороне области А и смежные с целевым блоком, и предварительно построенные отсчеты, расположенные на левой стороне области А и смежные с целевым блоком, в качестве опорных пикселей в текущем изображении. Кроме того, опорные отсчеты в опорном изображении выбираются с использованием вектора движения контрольной точки в верхнем левом углу области A, аффинного вектора движения субблока 4x4, расположенного в верхнем левом углу области A, или аффинного вектора движения центральной точки области A. Параметр компенсации освещенности области A выводится с использованием выбранных опорных отсчетов.[195] For areas other than these four areas, the illumination compensation parameters for the remaining areas can be obtained by applying the interpolation described in section 2.1. Alternatively, for the remaining areas, the illumination compensation parameters can be obtained in the same way as in the case of the upper left area TL, upper right area TR, lower left area BL and lower right area BR. For example, for region A, the video encoding device selects pre-constructed samples located on the top side of region A and adjacent to the target block, and pre-constructed samples located on the left side of region A and adjacent to the target block, as reference pixels in the current image. In addition, reference samples in the reference image are selected using the motion vector of a reference point in the upper left corner of area A, the affine motion vector of a 4x4 subblock located in the upper left corner of area A, or the affine motion vector of the center point of area A. Area A Light Compensation Parameter output using the selected reference samples.

[196] Описанная выше методика компенсации освещенности - это методика, использующая вектор движения, который может быть получен с помощью предварительно построенных отсчетов и аффинного предсказания движения. Соответственно, устройство декодирования видео может быть конфигурировано для выполнения компенсации освещенности таким же образом, как и устройство кодирования видео. Не требуется, чтобы устройство кодирования видео сигнализировало дополнительную информацию для процесса компенсации освещенности устройству декодирования видео.[196] The illumination compensation technique described above is a technique that uses a motion vector that can be obtained using pre-constructed samples and affine motion prediction. Accordingly, the video decoding apparatus may be configured to perform illumination compensation in the same manner as the video encoding apparatus. The video encoding apparatus is not required to signal additional information for the illumination compensation process to the video decoding apparatus.

[197] Описанная выше методика компенсации освещенности может использоваться вместе с другими инструментами кодирования для компенсации движения целевого блока в единицах субблоков в дополнение к аффинному предсказанию движения. Например, это может быть применено к двунаправленному оптическому потоку. Устройство кодирования видео и устройство декодирования видео могут быть конфигурированы для генерирования отсчетов предсказания для каждого субблока путем выполнения двунаправленного оптического потока на по субблочной основе для целевого блока и дополнительно могут быть конфигурированы для выполнения вышеупомянутой компенсации освещения на отсчетах предсказания в целевом блоке. Методика компенсации освещения, применяемая к двунаправленному оптическому потоку, такая же, как методика компенсации освещения, описанная выше, за исключением следующего.[197] The illumination compensation technique described above can be used in conjunction with other encoding tools to compensate for the motion of a target block in units of subblocks in addition to affine motion prediction. For example, this can be applied to bidirectional optical flow. The video encoding apparatus and the video decoding apparatus may be configured to generate prediction samples for each sub-block by performing bidirectional optical flow on a sub-block basis for the target block, and may be further configured to perform the above illumination compensation on the prediction samples in the target block. The illumination compensation technique applied to bidirectional optical flow is the same as the illumination compensation technique described above, except for the following.

[198] В методике компенсации освещенности, описанном выше, векторы движения контрольной точки целевого блока или аффинные векторы движения субблоков используются для разделения целевого блока и вычисления репрезентативного вектора движения каждой области, отделенной от целевого блока. Однако в случае двунаправленного оптического потока нет ни вектора движения контрольной точки, ни аффинного вектора движения. Соответственно, когда методика компенсации освещенности применяется к двунаправленному оптическому потоку, оптические потоки (vx, vy) субблоков используются вместо векторов движения контрольных точек или аффинных векторов движения субблоков.[198] In the illumination compensation technique described above, target block reference point motion vectors or sub-block affine motion vectors are used to partition the target block and calculate a representative motion vector of each region separated from the target block. However, in the case of bidirectional optical flow, there is neither a reference point motion vector nor an affine motion vector. Accordingly, when the illumination compensation technique is applied to bidirectional optical flow, the optical flows (v x , v y ) of the subblocks are used instead of the motion vectors of the control points or the affine motion vectors of the subblocks.

[199] V. Сигнализирование синтаксиса[199] V. Syntax signaling

[200] Другой аспект настоящего раскрытия относится к способу сигнализирования синтаксисов высокого уровня для управления включением/выключением различных средств, описанных выше. Вышеописанное аффинное предсказание движения, корректировка на отсчетной основе отсчетов аффинного предсказания движения, адаптивное разрешение вектора движения и компенсация освещенности являются инструментами кодирования, используемыми для повышения эффективности кодирования видео. Однако для конкретного контента, такого как, например, экранный контент, вышеупомянутые различные инструменты кодирования могут не способствовать повышению производительности сжатия. Соответственно, сигнализирование на основе единицы кодирования о том, следует ли применять каждый инструмент кодирования, или решение на основе единицы кодирования о том, следует ли применять каждый инструмент кодирования, может скорее ухудшить эффективность кодирования или увеличить вычислительную сложность. Настоящее раскрытие раскрывает методику сигнализирования для эффективного управления вышеописанными инструментами кодирования.[200] Another aspect of the present disclosure relates to a method for signaling high-level syntaxes for controlling enable/disable the various features described above. The above-described affine motion prediction, affine motion prediction sample-based adjustment, adaptive motion vector resolution, and illumination compensation are coding tools used to improve video coding efficiency. However, for specific content, such as screen content, the aforementioned various encoding tools may not improve compression performance. Accordingly, signaling on a coding unit basis whether to apply each coding tool or deciding on a coding unit basis whether to apply each coding tool is likely to degrade coding efficiency or increase computational complexity. The present disclosure discloses a signaling technique for effectively controlling the above-described encoding tools.

[201] Для кодирования последовательности изображений устройство кодирования видео конфигурировано кодировать первый элемент синтаксиса уровня высокого уровня последовательности, указывающий, отключено ли множество инструментов кодирования. Первый элемент синтаксиса высокого уровня может быть закодирован в заголовке последовательности, то есть SPS. В частности, множество инструментов кодирования включает в себя аффинное предсказание движения, а также включает в себя, по меньшей мере, одно из следующего: поотсчетную корректировку для отсчетов аффинного предсказания движения, адаптивное разрешение вектора движения и компенсацию освещенности.[201] To encode a sequence of images, the video encoding apparatus is configured to encode a first high-level syntax element of the sequence indicating whether the plurality of encoding tools is disabled. The first element of the high-level syntax can be encoded in the sequence header, that is, SPS. In particular, the plurality of encoding tools includes affine motion prediction and also includes at least one of the following: sample-by-sample adjustment for affine motion prediction samples, adaptive motion vector resolution, and illumination compensation.

[202] Когда первый элемент синтаксиса высокого уровня указывает, что все множество инструментов кодирования отключено, никакие инструменты кодирования не применяются к кодированию последовательности. Другими словами, описанные выше инструменты кодирования не применяются ни к каким изображениям в последовательности. Когда первый элемент синтаксиса высокого уровня указывает, что множество инструментов кодирования не отключено, множество инструментов кодирования может использоваться для кодирования соответствующей последовательности. Например, аффинное предсказание движения может быть применено ко всем изображениям в последовательности. Соответственно, устройство кодирования видео может кодировать флаг единицы кодирования, указывающий, применялось ли кодирование с использованием аффинного предсказания движения к каждой из единиц кодирования, и передавать его в устройство декодирования видео.[202] When the first high-level syntax element indicates that the entire set of encoding tools is disabled, no encoding tools are applied to the encoding of the sequence. In other words, the encoding tools described above do not apply to any images in the sequence. When the first high-level syntax element indicates that the plurality of encoding tools is not disabled, the plurality of encoding tools may be used to encode the corresponding sequence. For example, affine motion prediction can be applied to all images in a sequence. Accordingly, the video encoding apparatus may encode a coding unit flag indicating whether affine motion prediction coding has been applied to each of the encoding units and transmit it to the video decoding apparatus.

[203] Когда флагом единицы кодирования указано, что аффинное предсказание движения было применено к соответствующей единице кодирования, устройство декодирования видео может быть конфигурировано выполнять вышеописанное аффинное предсказание движения на единице кодирования. Когда первый элемент синтаксиса высокого уровня указывает, что множество инструментов кодирования не отключено, устройство кодирования видео может быть конфигурировано кодировать один или более вторых элементов синтаксиса высокого уровня, указывающих, допустим ли каждый инструмент кодирования по меньшей мере в части множества инструментов кодирования на уровне последовательности или на уровне изображения.[203] When the encoding unit flag indicates that affine motion prediction has been applied to the corresponding encoding unit, the video decoding apparatus may be configured to perform the above-described affine motion prediction on the encoding unit. When the first high-level syntax element indicates that the plurality of encoding tools is not disabled, the video encoding device may be configured to encode one or more second high-level syntax elements indicating whether each encoding tool is valid in at least a portion of the plurality of sequence-level encoding tools or at the image level.

[204] В некоторых вариантах осуществления для кодирования одного или более вторых элементов синтаксиса высокого уровня устройство кодирования видео кодирует для каждого инструмента кодирования флаг уровня последовательности, указывающий, разрешен ли соответствующий инструмент кодирования в SPS. Когда флаг уровня последовательности указывает, что соответствующий инструмент кодирования не разрешен, соответствующий инструмент кодирования не используется для кодирования изображений, принадлежащих последовательности. Кроме того, устройство кодирования видео конфигурировано для кодирования флага уровня изображения, указывающего, разрешен ли соответствующий инструмент кодирования в заголовке изображения (т.е. PPS) каждого из изображений, принадлежащих последовательности, в зависимости от значения флага уровня последовательности. [204] In some embodiments, to encode one or more second high-level syntax elements, the video encoding device encodes, for each encoding tool, a sequence level flag indicating whether the corresponding encoding tool is enabled in the SPS. When the sequence level flag indicates that the corresponding encoding tool is not enabled, the corresponding encoding tool is not used to encode images belonging to the sequence. In addition, the video encoding device is configured to encode a picture level flag indicating whether a corresponding encoding tool is enabled in a picture header (ie, PPS) of each of the pictures belonging to the sequence depending on the value of the sequence level flag.

[205] Например, когда флаг уровня последовательности указывает, что соответствующий инструмент кодирования разрешен на уровне последовательности, кодируется флаг уровня изображения для указания, разрешен ли соответствующий инструмент кодирования на уровне изображения. Когда первый элемент синтаксиса высокого уровня указывает, что все множество инструментов кодирования отключено, или флаг уровня последовательности указывает, что соответствующий инструмент кодирования не разрешен на уровне последовательности, флаг уровня изображения отдельно не кодируется. В частности, устройство декодирования видео выполнено с возможностью автоматического установления флага уровня изображения на значение, указывающее, что соответствующий инструмент кодирования не разрешен.[205] For example, when a sequence level flag indicates that the corresponding encoding tool is enabled at the sequence level, a picture level flag is encoded to indicate whether the corresponding encoding tool is enabled at the picture level. When the first high-level syntax element indicates that the entire set of encoding tools is disabled, or the sequence level flag indicates that the corresponding encoding tool is not enabled at the sequence level, the image level flag is not separately encoded. In particular, the video decoding apparatus is configured to automatically set the picture level flag to a value indicating that the corresponding encoding tool is not enabled.

[206] Флаги уровня изображения для средств кодирования, отличных от аффинного предсказания движения, могут передаваться в зависимости от флага уровня изображения для аффинного предсказания движения. Когда флаг уровня изображения для аффинного предсказания движения указывает, что аффинное предсказания движения не разрешено на уровне изображения, флаги уровня изображения для других инструментов кодирования не кодируются, и другие инструменты кодирования не разрешены на уровне изображения. Когда флаги уровня изображения для других инструментов кодирования не включены в битовый поток, устройство декодирования видео конфигурировано устанавливать каждый флаг уровня изображения в значение, указывающее, что соответствующие инструменты кодирования не разрешены на уровне изображения.[206] Image level flags for encoding means other than affine motion prediction may be transmitted depending on the image level flag for affine motion prediction. When the image level flag for affine motion prediction indicates that affine motion prediction is not enabled at the image level, image level flags for other encoding tools are not encoded, and other encoding tools are not enabled at the image level. When picture level flags for other encoding tools are not included in the bitstream, the video decoding apparatus is configured to set each picture level flag to a value indicating that the corresponding encoding tools are not enabled at the picture level.

[207] Устройство декодирования видео может быть конфигурировано устанавливать на уровне изображения, разрешать ли соответствующий инструмент кодирования, из флага уровня изображения, сигнализируемого из устройства кодирования видео, или флага уровня изображения, значение которого устанавливается автоматически. Второй элемент синтаксиса высокого уровня для аффинного предсказания движения может быть опущен. В частности, то, разрешено ли аффинное предсказание движения на уровне последовательности, контролируется первым синтаксисом высокого уровня. Устройство декодирования видео конфигурировано декодировать первый синтаксис высокого уровня от устройства кодирования видео, а затем определять, разрешать ли аффинное предсказание движения на уровне последовательности.[207] The video decoding device may be configured to set at the picture level whether to enable a corresponding encoding tool from a picture level flag signaled from the video encoding device or a picture level flag whose value is set automatically. The second high-level syntax element for affine motion prediction may be omitted. In particular, whether affine motion prediction is enabled at the sequence level is controlled by the first high-level syntax. The video decoding apparatus is configured to decode the first high-level syntax from the video encoding apparatus, and then determine whether to enable affine motion prediction at the sequence level.

[208] В соответствии с вышеописанной структурой синтаксиса устройство кодирования видео может быть конфигурировано для адаптивного определения того, разрешать ли использование инструментов кодирования на уровне последовательности и уровне изображения. Кроме того, устройство декодирования видео может быть выполнено с возможностью адаптивного определения того, разрешать ли инструменты кодирования на уровне последовательности и уровне изображения путем декодирования синтаксисов, переданных от устройства кодирования видео.[208] According to the above-described syntax structure, a video encoding apparatus may be configured to adaptively determine whether to enable the use of encoding tools at the sequence level and the picture level. In addition, the video decoding apparatus may be configured to adaptively determine whether to enable sequence-level and picture-level encoding tools by decoding syntaxes transmitted from the video encoding apparatus.

[209] В некоторых других вариантах осуществления для кодирования одного или более вторых элементов синтаксиса высокого уровня флаг уровня изображения вышеописанного варианта осуществления может быть заменен флагом уровня слайса. Другими словами, когда флаг уровня последовательности указывает, что соответствующий инструмент кодирования разрешен на уровне последовательности, устройство кодирования видео кодирует в заголовке слайса флаг уровня слайса для указания, разрешен ли соответствующий инструмент кодирования на уровне слайса. Когда флаг уровня последовательности указывает, что соответствующий инструмент кодирования не разрешен, флаг уровня слайса не кодируется. Устройство кодирования видео может быть выполнено с возможностью адаптивного определения того, разрешать ли использовать инструменты кодирования на уровне последовательности и уровне слайса. Устройство декодирования видео может быть конфигурировано для определения того, разрешить ли использование каждого инструмента на уровне слайса с помощью флага уровня слайса.[209] In some other embodiments, to encode one or more second high-level syntax elements, the image level flag of the above-described embodiment may be replaced by a slice level flag. In other words, when the sequence level flag indicates that the corresponding encoding tool is enabled at the sequence level, the video encoding device encodes in the slice header a slice level flag to indicate whether the corresponding encoding tool is enabled at the slice level. When the sequence level flag indicates that the corresponding encoding tool is not enabled, the slice level flag is not encoded. The video encoding apparatus may be configured to adaptively determine whether to enable encoding tools at the sequence level and the slice level. The video decoder may be configured to determine whether to allow each tool to be used at the slice level using a slice level flag.

[210] В некоторых других вариантах осуществления для кодирования одного или более вторых элементов синтаксиса высокого уровня флаг уровня последовательности может быть опущен. Флаг уровня изображения или флаг уровня слайса сигнализируется в зависимости от первого элемента синтаксиса высокого уровня. Когда первый элемент синтаксиса высокого уровня указывает, что разрешено множество инструментов кодирования, флаг уровня изображения или флаг уровня слайса кодируется в заголовке изображения или заголовке слайса.[210] In some other embodiments, the sequence level flag may be omitted to encode one or more second high-level syntax elements. The image-level flag or slice-level flag is signaled depending on the first high-level syntax element. When the first high-level syntax element indicates that multiple encoding tools are enabled, the image-level flag or slice-level flag is encoded in the image header or slice header.

[211] Следует понимать, что описанные выше примерные варианты осуществления могут быть реализованы множеством различных способов. Функции, описанные в одном или нескольких примерах, могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Следует понимать, что описанные здесь функциональные компоненты были помечены как «модуль», чтобы еще больше подчеркнуть их независимость от реализации.[211] It should be understood that the exemplary embodiments described above may be implemented in a variety of different ways. The functions described in one or more examples may be implemented in hardware, software, firmware, or any combination thereof. It should be understood that the functional components described here have been labeled "module" to further emphasize their implementation independence.

[212] Различные способы или функции, приведенные в настоящем описании, могут быть реализованы как инструкции, хранящиеся на энергонезависимом носителе информации, которые могут быть прочитаны и выполнены одним или более процессорами. Невременный носитель записи включает в себя, например, все типы записывающих устройств, в которых данные хранятся в форме, читаемой компьютерной системой. Например, невременные носители записи включают в себя носители, такие как стираемая программируемая постоянная память (EPROM), флэш-накопители, оптические приводы, магнитные жесткие диски и твердотельные накопители (SSD).[212] Various methods or functions described herein may be implemented as instructions stored on a non-volatile storage medium that can be read and executed by one or more processors. Non-transitory recording medium includes, for example, all types of recording devices in which data is stored in a form readable by a computer system. For example, non-transitory recording media includes media such as erasable programmable read-only memory (EPROM), flash drives, optical drives, magnetic hard disks, and solid-state drives (SSDs).

[213] Хотя примерные варианты осуществления были описаны в иллюстративных целях, специалисты в данной области техники поймут, что возможны различные модификации и изменения, не выходящие за рамки идеи и объема вариантов осуществления. Примерные варианты осуществления были описаны для краткости и ясности. Соответственно, рядовой специалист поймет, что объем вариантов осуществления не ограничивается вариантами осуществления, явно описанными выше, но включает формулу изобретения и ее эквиваленты.[213] Although exemplary embodiments have been described for illustrative purposes, those skilled in the art will appreciate that various modifications and changes are possible without departing from the spirit and scope of the embodiments. Exemplary embodiments have been described for brevity and clarity. Accordingly, one of ordinary skill in the art will appreciate that the scope of the embodiments is not limited to the embodiments expressly described above, but includes the claims and their equivalents.

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННУЮ ЗАЯВКУCROSS REFERENCE TO RELATED APPLICATION

В данной заявке испрашивается приоритет корейских патентных заявок №№10-2019-0070633, 10-2019-0082010 и 10-2020-0072332, поданных соответственно 14 июня 2019 г., 8 июля 2019 г. и 15 июня 2020 г., все содержание из которых включены в настоящий документ посредством ссылки.This application claims the benefit of Korean Patent Application Nos. 10-2019-0070633, 10-2019-0082010, and 10-2020-0072332, filed June 14, 2019, July 8, 2019, and June 15, 2020, respectively, all contents of which are incorporated herein by reference.

Claims (44)

1. Устройство декодирования видео для декодирования последовательности кодированных изображений на поблочной основе, содержащее:1. A video decoding device for decoding a sequence of encoded images on a block-by-block basis, comprising: декодер, конфигурированный:decoder configured: устанавливать, на уровне последовательности, разрешено ли аффинное предсказание движения, посредством декодирования первого элемента синтаксиса высокого уровня из битового потока; иdetermine, at the sequence level, whether affine motion prediction is enabled by decoding the first high-level syntax element from the bitstream; And устанавливать, на уровне изображения, разрешен ли каждый из по меньшей мере одного инструмента кодирования, посредством декодирования одного или более вторых элементов синтаксиса высокого уровня для каждого из по меньшей мере одного инструмента кодирования из битового потока в зависимости от первого элемента синтаксиса высокого уровня, причем по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения; иdetermine, at the image level, whether each of the at least one encoding tool is enabled by decoding one or more second high-level syntax elements for each of the at least one encoding tool from the bitstream depending on the first high-level syntax element, wherein the at least one encoding tool includes sample-by-sample adjustment of the affine motion prediction samples; And предиктор, конфигурированный, когда установление на уровне последовательности указывает, что аффинное предсказание движения разрешено, определять два или три вектора движения контрольных точек целевого блока, кодированных с использованием аффинного предсказания движения, и генерировать отсчеты аффинного предсказания для каждого из субблоков в целевом блоке посредством выполнения аффинного предсказания движения в единице субблоков с использованием векторов движения контрольных точек,a predictor configured, when the sequence level assertion indicates that affine motion prediction is enabled, to determine two or three motion vectors of target block reference points encoded using affine motion prediction, and to generate affine prediction samples for each of the subblocks in the target block by executing the affine predicting motion in a unit of subblocks using motion vectors of control points, причем, когда на основе установления на уровне изображения установлено, что поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, предиктор конфигурирован модифицировать значения отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока.wherein, when it is determined based on the image level determination that sample-by-sample adjustment of affine motion prediction samples is allowed for the current image containing the target block, the predictor is configured to modify sample values in the affine prediction samples by motion compensation in accordance with the position of the sample in each of the sub-blocks based on motion vectors of control points of the target block. 2. Устройство по п. 1, в котором первый элемент синтаксиса высокого уровня декодируется из заголовка последовательности.2. The apparatus of claim 1, wherein the first high-level syntax element is decoded from a sequence header. 3. Устройство по п. 2, в котором декодер конфигурирован декодировать один или более вторых элементов синтаксиса высокого уровня для поотсчетной корректировки отсчетов аффинного предсказания движения посредством:3. The apparatus of claim 2, wherein the decoder is configured to decode one or more second high-level syntax elements for sample-by-sample adjustment of the affine motion prediction samples by: когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения разрешено, декодирования флага уровня последовательности, указывающего, разрешена ли поотсчетная корректировка отсчетов аффинного предсказания движения, из заголовка последовательности; иwhen the first high-level syntax element indicates that affine motion prediction is enabled, decoding a sequence level flag indicating whether sample-by-sample adjustment of affine motion prediction samples is enabled from the sequence header; And в зависимости от флага уровня последовательности, декодирования флага уровня изображения, указывающего, разрешена ли поотсчетная корректировка отсчетов аффинного предсказания движения, из заголовка изображения каждого из изображений, принадлежащих последовательности.depending on the sequence level flag, decoding a picture level flag indicating whether sample-by-sample adjustment of affine motion prediction samples is enabled from the image header of each of the images belonging to the sequence. 4. Устройство по п. 3, в котором, когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения не разрешено, или флаг уровня последовательности указывает, что поотсчетная корректировка не разрешена, декодер конфигурирован устанавливать флаг уровня изображения в значение, указывающее, что поотсчетная корректировка не разрешена, без декодирования из заголовка изображения.4. The apparatus of claim 3, wherein when the first high-level syntax element indicates that affine motion prediction is not enabled or the sequence level flag indicates that sample-by-sample adjustment is not enabled, the decoder is configured to set the picture level flag to a value indicating that sample-by-sample adjustment is not allowed, without decoding from the image header. 5. Устройство по п. 1, в котором, когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения не разрешено, любое из аффинного предсказания движения и по меньшей мере одного средства кодирования не разрешено для всех изображений в последовательности.5. The apparatus of claim 1, wherein when the first high-level syntax element indicates that affine motion prediction is not enabled, any of the affine motion prediction and the at least one encoder is not enabled for all pictures in the sequence. 6. Устройство по п. 1, в котором предиктор конфигурирован модифицировать значения отсчетов аффинного предсказания посредством:6. The device according to claim 1, in which the predictor is configured to modify the values of the affine prediction samples by: генерирования смещения движения, возникающего в результате разницы между положением отсчета в целевом субблоке, подлежащем модификации, и центром целевого субблока, с использованием векторов движения контрольных точек целевого блока;generating a motion offset resulting from a difference between a reference position in the target sub-block to be modified and the center of the target sub-block using motion vectors of the reference points of the target block; генерирования горизонтального и вертикального градиентов относительно положения отсчета в целевом субблоке;generating horizontal and vertical gradients relative to a reference position in the target subblock; генерирования смещения отсчета для отсчета аффинного предсказания, соответствующего положению отсчета в целевом субблоке, с использованием горизонтального и вертикального градиентов и смещения движения; иgenerating a sample offset for an affine prediction sample corresponding to a sample position in the target sub-block using horizontal and vertical gradients and motion offset; And добавления смещения отсчета к значению отсчета аффинного предсказания, соответствующему положению отсчета.adding a sample offset to the affine prediction sample value corresponding to the sample position. 7. Устройство по п. 6, в котором смещение движения, сгенерированное для положения отсчета в целевом субблоке, повторно используется в качестве смещения движения для того же положения отсчета в другом субблоке целевого блока.7. The apparatus of claim 6, wherein the motion offset generated for a reference position in the target subblock is reused as a motion offset for the same reference position in another subblock of the target block. 8. Устройство кодирования видео для кодирования последовательности изображений на поблочной основе, включающее:8. A video encoding apparatus for encoding a sequence of images on a block-by-block basis, comprising: кодер, сконфигурированный осуществлять:encoder configured to implement: кодирование, в заголовке последовательности, первого элемента синтаксиса высокого уровня в уровне последовательности, для указания, отключены ли как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования, при этом по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения;encoding, in a sequence header, a first high-level syntax element in the sequence level to indicate whether both the affine motion prediction and at least one encoding tool are disabled, wherein the at least one encoding tool includes a sample-by-sample adjustment of the affine prediction samples movements; в зависимости от первого элемента синтаксиса высокого уровня, кодирование одного или более вторых элементов синтаксиса высокого уровня, указывающих на установление уровня последовательности или уровня изображения в отношении разрешения каждого из по меньшей мере одного инструмента кодирования; иdepending on the first high-level syntax element, encoding one or more second high-level syntax elements indicating the establishment of a sequence level or an image level with respect to the resolution of each of the at least one encoding tool; And предиктор, сконфигурированный осуществлять:predictor configured to implement: когда первый элемент синтаксиса высокого уровня указывает, что как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования не отключены, определение двух или трех векторов движения контрольных точек для целевого блока, подлежащего кодированию, и генерирование отсчетов аффинного предсказания для каждого из субблоков посредством выполнения посубблочного аффинного предсказания движения с использованием векторов движения контрольных точек; иwhen the first high-level syntax element indicates that both the affine motion prediction and at least one encoding tool are not disabled, determining two or three reference point motion vectors for the target block to be encoded, and generating affine prediction samples for each of the subblocks by performing sub-block affine motion prediction using control point motion vectors; And при этом когда поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, предиктор сконфигурирован для модификации значений отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока.wherein when sample-by-sample adjustment of affine motion prediction samples is enabled for the current image containing the target block, the predictor is configured to modify sample values in the affine prediction samples by motion compensation in accordance with the position of the sample in each of the sub-blocks based on the motion vectors of the target block's reference points. 9. Устройство по п. 8, в котором кодер сконфигурирован для кодирования по меньшей мере одного второго элемента синтаксиса высокого уровня для поотсчетной корректировки отсчетов аффинного предсказания движения следующим образом:9. The apparatus of claim 8, wherein the encoder is configured to encode the at least one second high-level syntax element for sample-by-sample adjustment of the affine motion prediction samples as follows: когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения разрешено, кодирование флага уровня последовательности, указывающего, разрешена ли поотсчетная корректировка отсчетов аффинного предсказания движения, в заголовке последовательности; иwhen the first high-level syntax element indicates that affine motion prediction is enabled, encoding a sequence level flag indicating whether sample-by-sample adjustment of affine motion prediction samples is enabled in the sequence header; And в зависимости от флага уровня последовательности, кодирование флага уровня изображения, указывающего, разрешена ли поотсчетная корректировка, в заголовке изображения каждого из изображений, принадлежащих последовательности.depending on the sequence level flag, encoding a picture level flag indicating whether per-sample adjustment is enabled in a picture header of each of the pictures belonging to the sequence. 10. Устройство по п. 9, в котором когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения не разрешено, или флаг уровня последовательности указывает, что поотсчетная корректировка не разрешена, кодер сконфигурирован так, чтобы не кодировать флаг уровня изображения.10. The apparatus of claim 9, wherein when the first high-level syntax element indicates that affine motion prediction is not enabled or the sequence level flag indicates that sample-by-sample adjustment is not enabled, the encoder is configured not to encode the picture level flag. 11. Устройство по п. 8, в котором предиктор сконфигурирован для модификации значений отсчетов для отсчетов аффинного предсказания следующим образом:11. The apparatus of claim 8, wherein the predictor is configured to modify sample values for the affine prediction samples as follows: генерирование смещения движения, возникающего в результате разницы между положением отсчета в целевом субблоке, подлежащем модификации, и центром целевого субблока, с использованием векторов движения контрольных точек целевого блока;generating a motion offset resulting from a difference between a reference position in the target sub-block to be modified and the center of the target sub-block using motion vectors of the reference points of the target block; генерирование горизонтального и вертикального градиентов относительно положения отсчета в целевом субблоке;generating horizontal and vertical gradients relative to a reference position in the target subblock; генерирование смещения отсчета для отсчета аффинного предсказания, соответствующего положению отсчета в целевом субблоке, с использованием горизонтального и вертикального градиентов и смещения движения; иgenerating a sample offset for an affine prediction sample corresponding to a sample position in the target sub-block using horizontal and vertical gradients and motion offset; And добавление смещения отсчета к значению отсчета аффинного предсказания, соответствующему положению отсчета.adding a sample offset to the affine prediction sample value corresponding to the sample position. 12. Устройство по п. 11, в котором смещение движения, сгенерированное для положения отсчета в целевом субблоке, повторно используется в качестве смещения движения для того же положения отсчета в другом субблоке целевого блока.12. The apparatus of claim 11, wherein the motion offset generated for a reference position in the target subblock is reused as a motion offset for the same reference position in another subblock of the target block. 13. Способ хранения битового потока, связанного с видеоданными, при этом способ содержит:13. A method for storing a bitstream associated with video data, the method comprising: генерирование битового потока посредством кодирования видеоданных для последовательности изображений; иgenerating a bit stream by encoding video data for a sequence of images; And сохранение битового потока в невременном машиночитаемом носителе,storing the bitstream in a non-transitory machine-readable medium, причем генерирование битового потока содержит:wherein the bitstream generation comprises: кодирование, в заголовке последовательности, первого элемента синтаксиса высокого уровня в уровне последовательности, для указания, отключены ли как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования, при этом по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения;encoding, in a sequence header, a first high-level syntax element in the sequence level to indicate whether both the affine motion prediction and the at least one encoding tool are disabled, wherein the at least one encoding tool includes a sample-by-sample adjustment of the affine prediction samples movements; в зависимости от первого элемента синтаксиса высокого уровня, кодирование одного или более вторых элементов синтаксиса высокого уровня, указывающих на установление уровня последовательности или уровня изображения в отношении разрешения каждого из по меньшей мере одного инструмента кодирования; иdepending on the first high-level syntax element, encoding one or more second high-level syntax elements indicating the establishment of a sequence level or an image level with respect to the resolution of each of the at least one encoding tool; And когда первый элемент синтаксиса высокого уровня указывает, что как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования не отключены, определение двух или трех векторов движения контрольных точек для целевого блока, подлежащего кодированию, и генерирование отсчетов аффинного предсказания для каждого из субблоков посредством выполнения посубблочного аффинного предсказания движения с использованием векторов движения контрольных точек;when the first high-level syntax element indicates that both the affine motion prediction and at least one encoding tool are not disabled, determining two or three reference point motion vectors for the target block to be encoded, and generating affine prediction samples for each of the subblocks by performing sub-block affine motion prediction using control point motion vectors; когда поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, модифицирование значений отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока; иwhen sample-by-sample adjustment of the affine motion prediction samples is enabled for the current image containing the target block, modifying the sample values in the affine prediction samples by motion compensation according to the position of the sample in each of the sub-blocks based on the motion vectors of the reference points of the target block; And генерирование остаточных сигналов для целевого блока на основании модифицированных значений отсчетов и кодирование остаточных сигналов.generating residual signals for the target block based on the modified sample values and encoding the residual signals.
RU2022121747A 2019-06-14 2020-06-15 Method and device for encoding and decoding video using inter-prediction RU2802844C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2019-0070633 2019-06-14
KR10-2019-0082010 2019-07-08
KR10-2020-0072332 2020-06-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2021137067A Division RU2778099C9 (en) 2019-06-14 2020-06-15 Method and device for video encoding and decoding, using inter-prediction

Publications (2)

Publication Number Publication Date
RU2022121747A RU2022121747A (en) 2022-10-04
RU2802844C2 true RU2802844C2 (en) 2023-09-05

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017065525A2 (en) * 2015-10-13 2017-04-20 삼성전자 주식회사 Method and device for encoding or decoding image
US20170214932A1 (en) * 2014-07-18 2017-07-27 Mediatek Singapore Pte. Ltd Method of Motion Vector Derivation for Video Coding
WO2017200771A1 (en) * 2016-05-16 2017-11-23 Qualcomm Incorporated Affine motion prediction for video coding
US20180270500A1 (en) * 2017-03-14 2018-09-20 Qualcomm Incorporated Affine motion information derivation
RU2671307C1 (en) * 2015-03-10 2018-10-30 Хуавэй Текнолоджиз Ко., Лтд. Method for predicting images and related device
US20190110075A1 (en) * 2017-10-09 2019-04-11 Google Llc Video coding using parameterized motion model

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170214932A1 (en) * 2014-07-18 2017-07-27 Mediatek Singapore Pte. Ltd Method of Motion Vector Derivation for Video Coding
RU2671307C1 (en) * 2015-03-10 2018-10-30 Хуавэй Текнолоджиз Ко., Лтд. Method for predicting images and related device
WO2017065525A2 (en) * 2015-10-13 2017-04-20 삼성전자 주식회사 Method and device for encoding or decoding image
WO2017200771A1 (en) * 2016-05-16 2017-11-23 Qualcomm Incorporated Affine motion prediction for video coding
US20180270500A1 (en) * 2017-03-14 2018-09-20 Qualcomm Incorporated Affine motion information derivation
US20190110075A1 (en) * 2017-10-09 2019-04-11 Google Llc Video coding using parameterized motion model

Similar Documents

Publication Publication Date Title
US11683481B2 (en) Method and apparatus for encoding and decoding video using inter-prediction
US11432002B2 (en) Method and apparatus for encoding and decoding video using inter-prediction
KR20210040787A (en) Method and Apparatus for Encoding and Decoding Video by Using Inter Prediction
US12088839B2 (en) Method and apparatus for encoding and decoding video using inter-prediction
RU2802844C2 (en) Method and device for encoding and decoding video using inter-prediction
RU2806279C2 (en) Method and device for encoding and decoding video using inter-prediction
RU2806280C2 (en) Method and device for encoding and decoding video using inter-prediction
RU2801342C2 (en) Method and device for encoding and decoding video using inter-prediction
RU2778099C9 (en) Method and device for video encoding and decoding, using inter-prediction
RU2778099C1 (en) Method and device for video encoding and decoding, using inter-prediction
US11997309B2 (en) Method and apparatus for encoding and decoding video using inter-prediction
US12114008B2 (en) Method and apparatus for inter-prediction of pictures with different resolutions
EP4090027A1 (en) Image encoding and decoding based on reference picture having different resolution
US20230055497A1 (en) Image encoding and decoding based on reference picture having different resolution
KR20230105648A (en) Method for Decoder Side Motion Vector Derivation Using Spatial Correlation
CN116918323A (en) Video encoding and decoding method and apparatus for improving prediction signal of intra prediction