RU2776356C1 - Method and device for encoding and decoding, equipment on the encoding side and equipment on the decoding side - Google Patents

Method and device for encoding and decoding, equipment on the encoding side and equipment on the decoding side Download PDF

Info

Publication number
RU2776356C1
RU2776356C1 RU2021127171A RU2021127171A RU2776356C1 RU 2776356 C1 RU2776356 C1 RU 2776356C1 RU 2021127171 A RU2021127171 A RU 2021127171A RU 2021127171 A RU2021127171 A RU 2021127171A RU 2776356 C1 RU2776356 C1 RU 2776356C1
Authority
RU
Russia
Prior art keywords
motion vector
block
pixel
value
determining
Prior art date
Application number
RU2021127171A
Other languages
Russian (ru)
Inventor
Фандун ЧЭНЬ
Original Assignee
Ханчжоу Хиквижен Диджитал Текнолоджи Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ханчжоу Хиквижен Диджитал Текнолоджи Ко., Лтд. filed Critical Ханчжоу Хиквижен Диджитал Текнолоджи Ко., Лтд.
Application granted granted Critical
Publication of RU2776356C1 publication Critical patent/RU2776356C1/en

Links

Images

Abstract

FIELD: predictive coding and decoding
SUBSTANCE: invention relates to the field of predictive coding and decoding. A method for encoding and decoding is proposed and includes the following steps: if the characteristic information of the current block meets a special condition, the first reference block corresponding to the current block is determined based on the first initial motion vector of the current block, and the second reference block corresponding to the current block is determined based on the second the initial motion vector of the current block; adjusting the first and second source motion vectors according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; encoding or decoding the current block based on the first and second target motion vectors.
EFFECT: improvement of coding performance, in particular, prediction quality, prediction error.
15 cl, 11 dwg

Description

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

[01] Настоящая заявка относится к технологиям кодирования и декодирования, в частности, к способу и оборудованию кодирования и декодирования, устройству на стороне кодирования и устройству на стороне декодирования.[01] The present application relates to encoding and decoding technologies, in particular, to an encoding and decoding method and equipment, an encoding-side apparatus, and a decoding-side apparatus.

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

[02] Для экономии пространства, передачу видеоизображений осуществляют после их кодирования, при этом способ полного кодирования видеоданных может включать в себя процессы предсказания, преобразования, квантования, энтропийного кодирования, фильтрации и т.п. Кодирование с предсказанием включает в себя межкадровое кодирование и внутрикадровое кодирование, причем при межкадровом кодировании по пикселям примыкающего закодированного изображения предсказывают пиксели текущего изображения согласно корреляции во временной области видеоданных для эффективного устранения избыточности видеоданных во временной области.[02] To save space, transmission of video images is carried out after encoding them, and the method of completely encoding video data may include the processes of prediction, transformation, quantization, entropy coding, filtering, and the like. Predictive coding includes inter-frame coding and intra-frame coding, wherein inter-frame coding predicts the pixels of the current image according to time domain correlation of video data to effectively eliminate video data redundancy in time domain by pixels of an adjacent encoded image.

[03] В процессе межкадрового кодирования возможно применение вектора движения (ВД, англ. Motion Vector (MV)), отражающего относительное смещение между блоком текущего изображения видеоизображения текущего кадра и блоком опорного изображения видеоизображения опорного кадра. Например, при наличии сильной корреляции во временной области между видеоизображением A текущего кадра и видеоизображением B опорного кадра, если нужно передать блок A1 изображения (блок текущего изображения) видеоизображения A, можно выполнить поиск движения в видеоизображении B для обнаружения блока B1 изображения (т.е. блока опорного изображения), наилучшим образом совпадающего с блоком A1 изображения, и для определения относительного смещения между блоком A1 изображения и блок B1 изображения, при этом относительное смещение также представляет собой вектор движения блока A1 изображения.[03] In the process of inter-frame coding, it is possible to use a motion vector (VD, English Motion Vector (MV)), reflecting the relative offset between the block of the current image of the video image of the current frame and the block of the reference video image of the reference frame. For example, if there is a strong correlation in the time domain between the video image A of the current frame and the video image B of the reference frame, if the image block A1 (current image block) of the video image A is to be transmitted, motion search can be performed in the video image B to detect the image block B1 (i.e., . of the reference picture block) best matching the picture block A1, and to determine the relative offset between the picture block A1 and the picture block B1, wherein the relative shift is also the motion vector of the picture block A1.

[04] Сторона кодирования может отправлять стороне декодирования вектор движения вместо того, чтобы отправлять стороне декодирования блок A1 изображения. Сторона декодирования может получать блок A1 изображения на основе вектора движения и блока B1 изображения. Очевидно, что вышеуказанное решение позволяет сэкономить большое число бит, так как число бит, занимаемое вектором движения, меньше числа бит, занимаемого блоком A1 изображения.[04] The encoding side may send a motion vector to the decoding side instead of sending the image block A1 to the decoding side. The decoding side may obtain the picture block A1 based on the motion vector and the picture block B1. Obviously, the above solution can save a large number of bits, since the number of bits occupied by the motion vector is less than the number of bits occupied by the image block A1.

[05] Согласно известному способу, если текущий блок является однонаправленным блоком, то после того, как будет получен вектор движения текущего блока (далее именуемый «исходный вектор движения»), исходный вектор движения можно скорректировать и осуществить кодирование/декодирование на основе скорректированного вектора движения, что позволяет улучшить показатели кодирования. При этом, если текущий блок является двунаправленным блоком, то в настоящее время отсутствует рациональное решение задачи, состоящей в том, как корректировать первый исходный вектор движения и второй исходный вектор движения после получения первого и второго исходных векторов движения текущего блока. То есть, в случае двунаправленного блока, возможны такие проблемы, как низкое качество предсказания, погрешность предсказания и т.п., приводящие к низким показателям кодирования.[05] According to the known method, if the current block is a unidirectional block, after the motion vector of the current block (hereinafter referred to as "original motion vector") is obtained, the original motion vector can be corrected and encoding/decoding based on the corrected motion vector which improves coding performance. Meanwhile, if the current block is a bidirectional block, there is currently no rational solution to the problem of how to correct the first original motion vector and the second original motion vector after obtaining the first and second original motion vectors of the current block. That is, in the case of a bidirectional block, problems such as poor prediction quality, prediction error, and the like are possible, leading to poor coding performance.

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

[06] В настоящей заявке предложены способ, оборудование и устройство кодирования и декодирования, позволяющие улучшить показатели кодирования.[06] The present application proposes a method, equipment and apparatus for encoding and decoding to improve encoding performance.

[07] В настоящей заявке предложен способ кодирования и декодирования, включающий в себя этапы, на которых: если характеристическая информация текущего блока соответствует особому условию, определяют первый опорный блок, соответствующий текущему блоку, на основе первого исходного вектора движения текущего блока, и определяют второй опорный блок, соответствующий текущему блоку, на основе второго исходного вектора движения текущего блока; корректируют первый и второй исходные векторы движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; кодируют или декодируют текущий блок на основе первого и второго целевых векторов движения.[07] The present application provides a method for encoding and decoding, including the steps of: if the characteristic information of the current block meets a specific condition, determining the first reference block corresponding to the current block based on the first original motion vector of the current block, and determining the second a reference block corresponding to the current block based on the second original motion vector of the current block; adjusting the first and second source motion vectors according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; encoding or decoding the current block based on the first and second target motion vectors.

[08] В настоящей заявке предложено оборудование кодирования и декодирования, содержащее: определяющий модуль, выполненный с возможностью, если характеристическая информация текущего блока соответствует особому условию, определения первого опорного блока, соответствующего текущему блоку, на основе первого исходного вектора движения текущего блока, и определения второго опорного блока, соответствующего текущему блоку, на основе второго исходного вектора движения текущего блока; обрабатывающий модуль, выполненный с возможностью коррекции первого и второго исходных векторов движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; и кодирующий и декодирующий модуль, выполненный с возможностью кодирования или декодирования текущего блока на основе первого и второго целевых векторов движения.[08] The present application provides encoding and decoding equipment, comprising: a determination module configured to, if the characteristic information of the current block meets a specific condition, determine the first reference block corresponding to the current block based on the first original motion vector of the current block, and determine a second reference block corresponding to the current block, based on the second original motion vector of the current block; a processing module configured to correct the first and second source motion vectors according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source vector movement; and an encoding and decoding module, configured to encode or decode the current block based on the first and second target motion vectors.

[09] В настоящей заявке предложено устройство на стороне кодирования, содержащее процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных содержит сохраненные на нем машиноисполняемые инструкции, которые, при исполнении их процессором, инициируют выполнение набора операций, при которых: если характеристическая информация текущего блока соответствует особому условию, определяют первый опорный блок, соответствующий текущему блоку, на основе первого исходного вектора движения текущего блока, и определяют второй опорный блок, соответствующий текущему блоку, на основе второго исходного вектора движения текущего блока; корректируют первый и второй исходные векторы движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; и кодируют текущий блок на основе первого и второго целевых векторов движения.[09] The present application provides an encoding-side apparatus comprising a processor and a computer-readable storage medium, the computer-readable storage medium having computer-executable instructions stored thereon which, when executed by the processor, initiate a set of operations in which: if the characteristic information of the current block meets the specific condition, determining a first reference block corresponding to the current block based on the first source motion vector of the current block, and determining a second reference block corresponding to the current block based on the second source motion vector of the current block; adjusting the first and second source motion vectors according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; and encoding the current block based on the first and second target motion vectors.

[10] В настоящей заявке предложено устройство на стороне декодирования, содержащее процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных содержит сохраненные на нем машиноисполняемые инструкции, которые, при исполнении их процессором, инициируют выполнение набора операций, при которых: если характеристическая информация текущего блока соответствует особому условию, определяют первый опорный блок, соответствующий текущему блоку, на основе первого исходного вектора движения текущего блока, и определяют второй опорный блок, соответствующий текущему блоку, на основе второго исходного вектора движения текущего блока; корректируют первый и второй исходные векторы движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; и декодируют текущий блок на основе первого и второго целевых векторов движения.[10] The present application provides a device on the decoding side, comprising a processor and a computer-readable storage medium, and the computer-readable storage medium contains computer-executable instructions stored thereon, which, when executed by the processor, initiate the execution of a set of operations in which: if the characteristic information of the current block meets the specific condition, determining a first reference block corresponding to the current block based on the first source motion vector of the current block, and determining a second reference block corresponding to the current block based on the second source motion vector of the current block; adjusting the first and second source motion vectors according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; and decoding the current block based on the first and second target motion vectors.

[11] В настоящей заявке предложен способ декодирования, включающий в себя этапы, на которых: когда текущий блок допускает режим уточнения вектора движения, определяют значения предсказания субблоков текущего блока, и определяют значение предсказания текущего блока на основе значений предсказания субблоков текущего блока, причем для каждого субблока текущего блока определение значения предсказания субблока включает в себя следующее: получают информацию о движении текущего блока, содержащую первый исходный вектор движения и первый опорный кадр, второй исходный вектор движения и второй опорный кадр; определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока; получают оптимальный вектор движения на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, причем получение оптимального вектора движения включает в себя следующее: принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения; причем исходный вектор движения представляет собой первый исходный вектор движения или второй исходный вектор движения; получают значение стоимости, соответствующее исходному вектору движения и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока; выбирают вектор движения из исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе значения стоимости, соответствующего исходному вектору движения, и значений стоимости, соответствующих потенциальным векторам движения; корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; определяют значение предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения; причем определение значения предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения включает в себя следующее: определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения; взвешивают значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока для получения значения предсказания субблока.[11] The present application proposes a decoding method, including the steps of: when the current block allows the motion vector refinement mode, determine the prediction values of the sub-blocks of the current block, and determine the prediction value of the current block based on the prediction values of the sub-blocks of the current block, and for of each subblock of the current block, determining the subblock prediction value includes: obtaining motion information of the current block, comprising a first original motion vector and a first reference frame, a second original motion vector and a second reference frame; determining a first reference block corresponding to the subblock based on the first source motion vector of the current block, and determining a second reference block corresponding to the subblock based on the second source motion vector of the current block; obtaining the optimal motion vector based on the pixel values of the first reference block and the pixel values of the second reference block, wherein obtaining the optimal motion vector includes: taking the original motion vector as the center, selecting the motion vectors from the motion vectors containing the original motion vector and the motion vectors , surrounding the original motion vector, and define the selected motion vectors as potential motion vectors; wherein the original motion vector is a first original motion vector or a second original motion vector; obtaining a cost value corresponding to the original motion vector and cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block; selecting a motion vector from the original motion vector and the potential motion vectors as the optimal motion vector based on the cost value corresponding to the original motion vector and the cost values corresponding to the potential motion vectors; adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; determining a subblock prediction value based on the first target motion vector and the second target motion vector; wherein determining the sub-block prediction value based on the first target motion vector and the second target motion vector includes: determining a third reference block corresponding to the sub-block based on the first target motion vector, and determining a fourth reference block corresponding to the sub-block based on the second target motion vector movement; weighing the pixel values of the third reference block and the pixel values of the fourth reference block to obtain a sub-block prediction value.

[12] В качестве примера, этап, на котором принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения, включает в себя: принимают исходный вектор движения в качестве центра, выполняют поиск 25 векторов движения, содержащих исходный вектор движения в диапазоне поиска, равном 2, и определяют 25 векторов движения в качестве потенциальных векторов движения; причем последовательность поиска из 25 векторов движения является следующей: { Mv(-2, -2), Mv(-1, -2), Mv(0, -2), Mv(1, -2), Mv(2, -2), Mv(-2, -1), Mv(-1, -1), Mv(0, -1), Mv(1, -1), Mv(2, -1), Mv(-2, 0), Mv(-1, 0), Mv(0, 0), Mv(1, 0), Mv(2, 0), Mv(-2, 1), Mv(-1, 1), Mv(0, 1), Mv(1, 1), Mv(2, 1), Mv(-2, 2), Mv(-1, 2), Mv(0, 2), Mv(1, 2), Mv(2, 2) }.[12] As an example, the step of taking the original motion vector as the center, selecting motion vectors from motion vectors containing the original motion vector and motion vectors surrounding the original motion vector, and determining the selected motion vectors as potential motion vectors, includes: taking the original motion vector as the center, searching for 25 motion vectors containing the original motion vector in a search range of 2, and determining 25 motion vectors as candidate motion vectors; wherein the search sequence of 25 motion vectors is: { Mv(-2, -2), Mv(-1, -2), Mv(0, -2), Mv(1, -2), Mv(2, - 2), Mv(-2, -1), Mv(-1, -1), Mv(0, -1), Mv(1, -1), Mv(2, -1), Mv(-2, 0), Mv(-1, 0), Mv(0, 0), Mv(1, 0), Mv(2, 0), Mv(-2, 1), Mv(-1, 1), Mv( 0, 1), Mv(1, 1), Mv(2, 1), Mv(-2, 2), Mv(-1, 2), Mv(0, 2), Mv(1, 2), Mv (2, 2) }.

[13] В качестве примера, этап, на котором получают значение стоимости, соответствующее исходному вектору движения и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, включает в себя следующее: получение значений стоимости, соответствующих потенциальным векторам движения, включает в себя: определяют первые опорные субблоки, соответствующие потенциальным векторам движения, на основе первого опорного блока, и определяют вторые опорные субблоки, соответствующие потенциальным векторам движения, на основе второго опорного блока; вычисляют сумму абсолютных разностей выборочных значений пиксельных точек в первых опорных субблоках и вторых опорных субблоках путем использования операции понижающей дискретизации, выполняемой по вертикали в 2 раза; определяют значения стоимости, соответствующие потенциальным векторам движения, на основе полученной суммы абсолютных разностей; получение значения стоимости, соответствующего исходному вектору движения, включает в себя: определяют первый опорный субблок, соответствующий исходному вектору движения, на основе первого опорного блока, и определяют второй опорный субблок, соответствующий исходному вектору движения, на основе второго опорного блока; вычисляют сумму абсолютных разностей выборочных значений пиксельных точек в первом опорном субблоке и втором опорном субблоке путем использования операции понижающей дискретизации, выполняемой по вертикали в 2 раза; определяют значение стоимости, соответствующее исходному вектору движения, на основе полученной суммы абсолютных разностей.[13] As an example, the step of obtaining the cost value corresponding to the original motion vector and the cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block includes the following: obtaining the cost values , corresponding to the potential motion vectors, includes: determining the first reference sub-blocks corresponding to the potential motion vectors based on the first reference block, and determining the second reference sub-blocks corresponding to the potential motion vectors based on the second reference block; calculate the sum of the absolute differences of the sampled values of the pixel dots in the first reference sub-blocks and the second reference sub-blocks by using a 2-fold vertical downsampling operation; determining cost values corresponding to potential motion vectors based on the obtained sum of absolute differences; obtaining a cost value corresponding to the original motion vector includes: determining a first reference subblock corresponding to the original motion vector based on the first reference block, and determining a second reference subblock corresponding to the original motion vector based on the second reference block; calculate the sum of the absolute differences of the sampled values of the pixel dots in the first reference subblock and the second reference subblock by using a 2-fold vertical downsampling operation; determine the value of the cost corresponding to the original motion vector, based on the obtained sum of absolute differences.

[14] В качестве примера, этап, на котором корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения, включает в себя: определяют первое целопиксельное значение коррекции вектора движения и второе целопиксельное значение коррекции вектора движения на основе оптимального вектора движения; корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения; и корректируют второй исходный вектор движения согласно второму целопиксельному значению коррекции вектора движения для получения второго целевого вектора движения, соответствующего второму исходному вектору движения.[14] As an example, the step of adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain the first target motion vector corresponding to the first source motion vector and the second target motion vector corresponding to the second source motion vector, includes: determining a first integer pixel motion vector correction value and a second integer pixel motion vector correction value based on the optimal motion vector; correcting the first source motion vector according to the first integer pixel motion vector correction value to obtain a first target motion vector corresponding to the first source motion vector; and adjusting the second source motion vector according to the second integer pixel motion vector correction value to obtain a second target motion vector corresponding to the second source motion vector.

[15] В качестве примера, этап, на котором определяют первое целопиксельное значение коррекции вектора движения и второе целопиксельное значение коррекции вектора движения на основе оптимального вектора движения, включает в себя: определяют первое целопиксельное значение коррекции вектора движения на основе оптимального вектора движения, причем первое целопиксельное значение коррекции вектора движения равно разности оптимального вектора движения и исходного вектора движения; определяют второе целопиксельное значение коррекции вектора движения на основе первого целопиксельного значения коррекции вектора движения; причем второе целопиксельное значение коррекции вектора движения и первое целопиксельное значение коррекции вектора движения противоположны друг другу.[15] As an example, the step of determining the first integer pixel motion vector correction value and the second integer pixel motion vector correction value based on the optimal motion vector includes: determining the first integer pixel motion vector correction value based on the optimal motion vector, the first the integer value of the motion vector correction is equal to the difference between the optimal motion vector and the original motion vector; determining a second integer pixel motion vector correction value based on the first integer pixel motion vector correction value; wherein the second integer pixel motion vector correction value and the first integer pixel motion vector correction value are opposite to each other.

[16] В качестве примера, этап, на котором корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения; и корректируют второй исходный вектор движения согласно второму целопиксельному значению коррекции вектора движения для получения второго целевого вектора движения, соответствующего второму исходному вектору движения, включает в себя: первый целевой вектор движения равен сумме первого исходного вектора движения и первого целопиксельного значения коррекции вектора движения; второй целевой вектор движения равен сумме второго исходного вектора движения и второго целопиксельного значения коррекции вектора движения.[16] As an example, the step of correcting the first source motion vector according to the first integer-pixel motion vector correction value to obtain the first target motion vector corresponding to the first source motion vector; and adjusting the second source motion vector according to the second integer pixel motion vector correction value to obtain a second target motion vector corresponding to the second source motion vector, including: the first target motion vector is equal to the sum of the first source motion vector and the first integer pixel motion vector correction value; the second target motion vector is equal to the sum of the second source motion vector and the second integer pixel motion vector correction value.

[17] В качестве примера, этап, на котором корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения, включает в себя: определяют первое целопиксельное значение коррекции вектора движения, первое субпиксельное значение коррекции вектора движения, второе целопиксельное значение коррекции вектора движения и второе субпиксельное значение коррекции вектора движения на основе оптимального вектора движения; корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения и первому субпиксельному значению коррекции вектора движения для получения первого целевого вектора движения субблока; и корректируют второй исходный вектор движения согласно второму целопиксельному значению коррекции вектора движения и второму субпиксельному значению коррекции вектора движения для получения второго целевого вектора движения субблока.[17] As an example, the step of adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain the first target motion vector corresponding to the first source motion vector and the second target motion vector corresponding to the second source motion vector, includes: determining a first integer pixel motion vector correction value, a first subpixel motion vector correction value, a second integer pixel motion vector correction value, and a second subpixel motion vector correction value based on the optimal motion vector; correcting the first source motion vector according to the first integer motion vector correction value and the first subpixel motion vector correction value to obtain the first target motion vector of the subblock; and correcting the second source motion vector according to the second integer motion vector correction value and the second subpixel motion vector correction value to obtain a second target motion vector of the subblock.

[18] В качестве примера, этап, на котором корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения, включает в себя: определяют первое целопиксельное значение коррекции вектора движения и первое субпиксельное значение коррекции вектора движения на основе оптимального вектора движения; получают оптимальный смещенный вектор движения согласно первому целопиксельному значению коррекции вектора движения и первому субпиксельному значению коррекции вектора движения; корректируют первый исходный вектор движения на основе оптимального смещенного вектора движения для получения первого целевого вектора движения; корректируют второй исходный вектор движения на основе значения, противоположного оптимальному смещенному вектору движения, для получения второго целевого вектора движения[18] As an example, the step of adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain the first target motion vector corresponding to the first source motion vector and the second target motion vector corresponding to the second source motion vector, includes: determining a first integer pixel motion vector correction value and a first subpixel motion vector correction value based on the optimal motion vector; obtaining an optimal offset motion vector according to the first integer motion vector correction value and the first subpixel motion vector correction value; adjusting the first source motion vector based on the optimal offset motion vector to obtain a first target motion vector; adjusting the second source motion vector based on the opposite value of the optimal offset motion vector to obtain the second target motion vector

[19] В качестве примера, этап, на котором определяют первое целопиксельное значение коррекции вектора движения и первое субпиксельное значение коррекции вектора движения на основе оптимального вектора движения, включает в себя: определяют первое целопиксельное значение коррекции вектора движения на основе оптимального вектора движения, причем первое целопиксельное значение коррекции вектора движения равно разности оптимального вектора движения и исходного вектора движения; определяют первое субпиксельное значение коррекции вектора движения на основе значения стоимости, соответствующего оптимальному вектору движения, и значений стоимости, соответствующих краевым векторам движения, соответствующим оптимальному вектору движения.[19] As an example, the step of determining the first integer pixel motion vector correction value and the first subpixel motion vector correction value based on the optimal motion vector includes: determining the first integer pixel motion vector correction value based on the optimal motion vector, the first the integer value of the motion vector correction is equal to the difference between the optimal motion vector and the original motion vector; determining a first sub-pixel motion vector correction value based on a cost value corresponding to the optimal motion vector and cost values corresponding to edge motion vectors corresponding to the optimal motion vector.

[20] В качестве примера, этап, на котором определяют первое субпиксельное значение коррекции вектора движения на основе значения стоимости, соответствующего оптимальному вектору движения, и значений стоимости, соответствующих краевым векторам движения, соответствующим оптимальному вектору движения, включает в себя: последовательно определяют значения стоимости 5 целопиксельных векторов движения, для которых оптимальный вектор движения принят в качестве центра; причем 5 целопиксельных векторов движения представляют собой 5 краевых векторов движения, полученных путем сдвига по горизонтали влево, по горизонтали вправо, по вертикали вверх и по вертикали вниз соответственно, когда оптимальный вектор движения принят в качестве центра.[20] As an example, the step of determining the first sub-pixel motion vector correction value based on the cost value corresponding to the optimal motion vector and the cost values corresponding to the edge motion vectors corresponding to the optimal motion vector includes: sequentially determining the cost values 5 whole-pixel motion vectors, for which the optimal motion vector is taken as the center; wherein the 5 integer motion vectors are 5 edge motion vectors obtained by shifting horizontally left, horizontally right, vertically up, and vertically down, respectively, when the optimal motion vector is taken as the center.

[21] В качестве примера, первый целевой вектор движения равен сумме первого исходного вектора движения, первого целопиксельного значения коррекции вектора движения и первого субпиксельного значения коррекции вектора движения; второй целевой вектор движения равен сумме второго исходного вектора движения, второго целопиксельного значения коррекции вектора движения и второго субпиксельного значения коррекции вектора движения; причем второе целопиксельное значение коррекции вектора движения и первое целопиксельное значение коррекции вектора движения противоположны друг другу; второе субпиксельное значение коррекции вектора движения и первое субпиксельное значение коррекции вектора движения противоположны друг другу.[21] As an example, the first target motion vector is equal to the sum of the first source motion vector, the first integer-pixel motion vector correction value, and the first sub-pixel motion vector correction value; the second target motion vector is equal to the sum of the second source motion vector, the second integer-pixel motion vector correction value, and the second sub-pixel motion vector correction value; wherein the second integer pixel motion vector correction value and the first integer pixel motion vector correction value are opposite to each other; the second sub-pixel motion vector correction value and the first sub-pixel motion vector correction value are opposite to each other.

[22] В качестве примера, оптимальный вектор движения представляет собой вектор движения с меньшим значением стоимости, выбранный из исходного вектора движения и потенциальных векторов движения.[22] As an example, the optimal motion vector is the lower cost motion vector selected from the original motion vector and potential motion vectors.

[23] В качестве примера, когда абсолютное значение первого целопиксельного значения коррекции вектора движения в вертикальном и/или горизонтальном направлении равно заданному значению, корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения.[23] As an example, when the absolute value of the first integer pixel motion vector correction value in the vertical and/or horizontal direction is equal to the predetermined value, adjust the first source motion vector according to the first integer pixel motion vector correction value to obtain the first target motion vector corresponding to the first source vector movement.

[24] В качестве примера, когда абсолютное значение первого целопиксельного значения коррекции вектора движения в вертикальном и/или горизонтальном направлении не равно заданному значению, корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения и первому субпиксельному значению коррекции вектора движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения.[24] As an example, when the absolute value of the first integer pixel motion vector correction value in the vertical and/or horizontal direction is not equal to the predetermined value, the first original motion vector is corrected according to the first integer pixel motion vector correction value and the first subpixel motion vector correction value to obtain the first a target motion vector corresponding to the first source motion vector.

[25] В качестве примера, когда значение стоимости, соответствующее исходному вектору движения, больше или равно заданного порога, выполняют этап выбора вектора движения из исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе значения стоимости, соответствующего исходному вектору движения, и значений стоимости, соответствующих потенциальным векторам движения; в ином случае, указанный этап не выполняют, причем заданный порог определяют на основе ширины и высоты субблока.[25] As an example, when the cost value corresponding to the original motion vector is greater than or equal to a predetermined threshold, the step of selecting a motion vector from the original motion vector and potential motion vectors as the optimal motion vector based on the cost value corresponding to the original motion vector is performed, and cost values corresponding to potential motion vectors; otherwise, this step is not performed, and the predetermined threshold is determined based on the width and height of the sub-block.

[26] В качестве примера, когда текущий блок содержит один субблок, указанный субблок и является текущим блоком.[26] As an example, when the current block contains one subblock, the specified subblock is the current block.

[27] В качестве примера, первый опорный блок и второй опорный блок представляют собой блоки предсказания яркости, определенные на основе яркостной составляющей.[27] As an example, the first reference block and the second reference block are luminance prediction blocks determined based on the luminance component.

[28] В качестве примера, как значения пикселей первого опорного блока, так и значения пикселей второго опорного блока получают посредством билинейной интерполяции.[28] As an example, both the pixel values of the first reference block and the pixel values of the second reference block are obtained by bilinear interpolation.

[29] В качестве примера, этап, на котором определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока включает в себя: определяют первый опорный блок посредством билинейной интерполяции на основе первого исходного вектора движения и первого опорного кадра текущего блока; определяют второй опорный блок посредством билинейной интерполяции на основе второго исходного вектора движения и второго опорного кадра текущего блока; причем размер первого опорного блока равен размеру второго опорного блока, причем значение ширины первого опорного блока определяют на основе значения ширины субблока и диапазона поиска, значение высоты первого опорного блока определяют на основе значения высоты субблока и диапазона поиска.[29] As an example, the step of determining the first reference block corresponding to the subblock based on the first original motion vector of the current block and determining the second reference block corresponding to the subblock based on the second original motion vector of the current block includes: determining the first a reference block by bilinear interpolation based on the first original motion vector and the first reference frame of the current block; determining a second reference block by bilinear interpolation based on the second original motion vector and the second reference frame of the current block; wherein the size of the first reference block is equal to the size of the second reference block, wherein the width value of the first reference block is determined based on the sub-block width value and the search range, the height value of the first reference block is determined based on the sub-block height value and the search range.

[30] В качестве примера, этап, на котором определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока, включает в себя: получают первый целопиксельный блок из первого опорного кадра текущего блока на основе первого исходного вектора движения, выполняют билинейную интерполяцию первого целопиксельного блока для получения первого опорного блока; получают второй целопиксельный блок из второго опорного кадра текущего блока на основе второго исходного вектора движения, выполняют билинейную интерполяцию второго целопиксельного блока для получения второго опорного блока; если W - это ширина субблока, H - это высота субблока, а SR - это диапазон поиска, то оба значения ширины первого опорного блока и второго опорного блока равны W+2*SR, оба значения высоты первого опорного блока и второго опорного блока равны H+2*SR, причем значение SR равно 2.[30] As an example, the step of determining the first reference block corresponding to the subblock based on the first original motion vector of the current block, and determining the second reference block corresponding to the subblock based on the second original motion vector of the current block, includes: obtaining the first integer pixel block from the first reference frame of the current block based on the first original motion vector, bilinearly interpolating the first integer pixel block to obtain the first reference block; obtaining a second integer pixel block from the second reference frame of the current block based on the second original motion vector, performing bilinear interpolation of the second integer pixel block to obtain a second reference block; if W is the sub-box width, H is the sub-box height, and SR is the search range, then the widths of the first ref-box and the second ref-box are both W+2*SR, the heights of the first ref-box and the second ref-box are both H +2*SR, with the value of SR being 2.

[31] В качестве примера, значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока, когда взвешены, имеют один и тот же вес.[31] As an example, the pixel values of the third reference block and the pixel values of the fourth reference block, when weighted, have the same weight.

[32] В качестве примера, значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока получают на основе интерполяции с помощью 8-отводного интерполяционного фильтра.[32] As an example, the pixel values of the third reference block and the pixel values of the fourth reference block are obtained based on interpolation with an 8-tap interpolation filter.

[33] В качестве примера, этап, на котором определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения, включает в себя: определяют пятый опорный блок, соответствующий субблоку, из первого опорного кадра текучего блока на основе первого целевого вектора движения, и выполняют интерполяцию значений пикселей в пятом опорном блоке на основе 8-отводного интерполяционного фильтра для получения третьего опорного блока; определяют шестой опорный блок, соответствующий субблоку, из второго опорного кадра, на основе второго целевого вектора движения, и выполняют интерполяцию значений пикселей в шестом опорном блоке на основе 8-отводного интерполяционного фильтра для получения четвертого опорного блока; причем размер пятого опорного блока больше размера субблока, размер шестого опорного блока больше размера субблока, причем указанный размер включает в себя ширину и высоту.[33] As an example, determining a third reference block corresponding to a subblock based on a first target motion vector and determining a fourth reference block corresponding to a subblock based on a second target motion vector includes: determining a fifth reference block , corresponding to the sub-block, from the first reference frame of the fluid block based on the first target motion vector, and interpolating the pixel values in the fifth reference block based on the 8-tap interpolation filter to obtain the third reference block; determining a sixth reference block corresponding to the sub-block from the second reference frame based on the second target motion vector, and interpolating pixel values in the sixth reference block based on the 8-tap interpolation filter to obtain a fourth reference block; wherein the size of the fifth reference block is greater than the size of the sub-block, the size of the sixth reference block is greater than the size of the sub-block, said dimension including the width and the height.

[34] В качестве примера, субблок содержит яркостную составляющую, причем выполнение компенсации движения со взвешиванием субблока согласно первому целевому вектору движения и второму целевому вектору движения для получения взвешенного значения предсказания субблока, включает в себя: для яркостной составляющей субблока выполняют компенсацию движения со взвешиванием субблока согласно первому целевому вектору движения и второму целевому вектору движения для получения взвешенного значения предсказания яркости субблока.[34] As an example, the sub-block contains a luminance component, and performing motion compensation with sub-block weighting according to the first target motion vector and the second target motion vector to obtain a weighted sub-block prediction value, includes: for the luminance component of the sub-block, performing motion compensation with sub-block weighting according to the first target motion vector and the second target motion vector to obtain a weighted sub-block brightness prediction value.

[35] В качестве примера, субблок содержит цветностную составляющую, причем выполнение компенсации движения со взвешиванием субблока согласно первому целевому вектору движения и второму целевому вектору движения для получения взвешенного значения предсказания субблока включает в себя: для цветностной составляющей субблока выполняют компенсацию движения со взвешиванием субблока согласно первому целевому вектору движения и второму целевому вектору движения для получения взвешенного значения предсказания цветности субблока.[35] As an example, the sub-block contains a chrominance component, and performing motion compensation with sub-block weighting according to the first target motion vector and the second target motion vector to obtain the sub-block prediction weighted value includes: for the chrominance component of the sub-block, performing motion compensation with sub-block weighting according to to the first target motion vector and the second target motion vector to obtain a weighted sub-block chrominance prediction value.

[36] В качестве примера, когда текущий блок допускает режим уточнения вектора движения, характеристическая информация текущего блока соответствует особым условиям, причем особые условия включают в себя режим предсказания информации о движении, соответствующий текущему блоку; атрибут информации о движении, соответствующий текущему блоку и информацию о размере текущего блока; причем, когда текущий блок допускает режим уточнения вектора движения, условия, которым соответствует текущий блок, включают в себя по меньшей мере следующее: для текущего блока не применен режим слияния для кодирования значений разности информации о движении (режим MMVD), для текущего блока применен режим слияния, размер текущего блока находится в пределах заданного диапазона, информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, и расстояния между текущим кадром и каждым из двух опорных кадров, соответствующих информации о движении в двух разных направлениях, являются одинаковыми.[36] As an example, when the current block allows the motion vector refinement mode, the characteristic information of the current block corresponds to specific conditions, the specific conditions include the motion information prediction mode corresponding to the current block; a motion information attribute corresponding to the current block and size information of the current block; wherein, when the current block allows the motion vector refinement mode, the conditions to which the current block corresponds include at least the following: the merge mode for encoding motion information difference values (MMVD mode) is not applied to the current block, the merge mode is applied to the current block merge, the size of the current block is within the specified range, the motion information of the current block includes motion information in two different directions, and the distances between the current frame and each of the two reference frames corresponding to the motion information in two different directions are the same .

[37] В качестве примера, если текущий блок не соответствует ни одному из следующих условий, текущий блок не допускает режим уточнения вектора движения: для текущего блока не применен режим слияния для кодирования значений разности информации о движении (режим MMVD), для текущего блока применен режим слияния, размер текущего блока находится в пределах заданного диапазона, информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, и расстояния между текущим кадром и каждым из двух опорных кадров, соответствующих информации о движении в двух разных направлениях, являются одинаковыми.[37] As an example, if the current block does not meet any of the following conditions, the current block does not allow the motion vector refinement mode: the merge mode for encoding motion information difference values (MMVD mode) is not applied to the current block, the merge mode is applied to the current block merge mode, the size of the current block is within the specified range, the motion information of the current block includes motion information in two different directions, and the distances between the current frame and each of the two reference frames corresponding to the motion information in two different directions are the same.

[38] В качестве примера, расстояние между текущим кадром текущего блока и первым опорным кадром равно расстоянию между текущим кадром текущего блока и вторым опорным кадром.[38] As an example, the distance between the current frame of the current block and the first key frame is equal to the distance between the current frame of the current block and the second key frame.

[39] В качестве примера, когда текущий блок содержит один субблок, указанный субблок и является текущим блоком, причем первый исходный вектор движения и второй исходный вектор движения являются исходными векторами движения текущего блока в двух разных направлениях.[39] As an example, when the current block contains one subblock, the specified subblock is the current block, and the first source motion vector and the second source motion vector are the source motion vectors of the current block in two different directions.

[40] В качестве примера, когда текущий блок содержит множество субблоков, каждый из множества субблоков, первый исходный вектор движения и второй исходный вектор движения имеют общие исходные векторы движения текущего блока в двух разных направлениях.[40] As an example, when the current block contains a plurality of sub-blocks, each of the plurality of sub-blocks, the first original motion vector and the second original motion vector have common original motion vectors of the current block in two different directions.

[41] Согласно другому аспекту, в настоящей заявке предложен способ кодирования, включающий в себя этапы, на которых: когда текущий блок допускает режим уточнения вектора движения, определяют значения предсказания субблоков текущего блока, и определяют значение предсказания текущего блока на основе значений предсказания субблоков текущего блока, причем для каждого субблока текущего блока определение значения предсказания субблока включает в себя следующее: получают информацию о движении текущего блока, содержащую первый исходный вектор движения и первый опорный кадр, второй исходный вектор движения и второй опорный кадр; определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока; получают оптимальный вектор движения на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, причем получение оптимального вектора движения включает в себя следующее: принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения; причем исходный вектор движения представляет собой первый исходный вектор движения или второй исходный вектор движения; получают значение стоимости, соответствующее исходному вектору движения и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока; выбирают вектор движения из исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе значения стоимости, соответствующего исходному вектору движения, и значений стоимости, соответствующих потенциальным векторам движения; корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; определяют значение предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения; причем определение значения предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения включает в себя следующее: определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения; взвешивают значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока для получения значения предсказания субблока.[41] According to another aspect, the present application proposes an encoding method, including the steps of: when the current block allows the motion vector refinement mode, determine the prediction values of the sub-blocks of the current block, and determine the prediction value of the current block based on the prediction values of the sub-blocks of the current block, wherein for each subblock of the current block, determining the subblock prediction value includes: obtaining motion information of the current block, comprising a first original motion vector and a first reference frame, a second original motion vector and a second reference frame; determining a first reference block corresponding to the subblock based on the first source motion vector of the current block, and determining a second reference block corresponding to the subblock based on the second source motion vector of the current block; obtaining the optimal motion vector based on the pixel values of the first reference block and the pixel values of the second reference block, wherein obtaining the optimal motion vector includes: taking the original motion vector as the center, selecting the motion vectors from the motion vectors containing the original motion vector and the motion vectors , surrounding the original motion vector, and define the selected motion vectors as potential motion vectors; wherein the original motion vector is a first original motion vector or a second original motion vector; obtaining a cost value corresponding to the original motion vector and cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block; selecting a motion vector from the original motion vector and the potential motion vectors as the optimal motion vector based on the cost value corresponding to the original motion vector and the cost values corresponding to the potential motion vectors; adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; determining a subblock prediction value based on the first target motion vector and the second target motion vector; wherein determining the sub-block prediction value based on the first target motion vector and the second target motion vector includes: determining a third reference block corresponding to the sub-block based on the first target motion vector, and determining a fourth reference block corresponding to the sub-block based on the second target motion vector movement; weighing the pixel values of the third reference block and the pixel values of the fourth reference block to obtain a sub-block prediction value.

[42] Согласно другому аспекту, в настоящей заявке предложено оборудование декодирования, содержащее: процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных содержит сохраненные на нем машиноисполняемые инструкции, которые может исполнять процессор; причем процессор выполнен с возможностью его использования для исполнения машиноисполняемых инструкций для реализации вышеупомянутого способа.[42] According to another aspect, the present application provides decoding equipment, comprising: a processor and a computer-readable storage medium, the computer-readable storage medium having computer-executable instructions stored thereon that can be executed by the processor; wherein the processor is configured to be used to execute machine-executable instructions for implementing the above method.

[43] Согласно другому аспекту, в настоящей заявке предложено оборудование кодирования, содержащее: процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных содержит сохраненные на нем машиноисполняемые инструкции, которые может исполнять процессор; причем процессор выполнен с возможностью его использования для исполнения машиноисполняемых инструкций для реализации этапов, на которых: когда текущий блок допускает режим уточнения вектора движения, определяют значения предсказания субблоков текущего блока, и определяют значение предсказания текущего блока на основе значений предсказания субблоков текущего блока, причем для каждого субблока текущего блока определение значения предсказания субблока включает в себя следующее: получают информацию о движении текущего блока, содержащую первый исходный вектор движения и первый опорный кадр, второй исходный вектор движения и второй опорный кадр; определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока; получают оптимальный вектор движения на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, причем получение оптимального вектора движения включает в себя следующее: принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения; причем исходный вектор движения представляет собой первый исходный вектор движения или второй исходный вектор движения; получают значение стоимости, соответствующее исходному вектору движения и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока; выбирают вектор движения из исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе значения стоимости, соответствующего исходному вектору движения, и значений стоимости, соответствующих потенциальным векторам движения; корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; определяют значение предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения; причем определение значения предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения включает в себя следующее: определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения; взвешивают значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока для получения значения предсказания субблока.[43] According to another aspect, the present application provides encoding equipment, comprising: a processor and a computer-readable storage medium, the computer-readable storage medium having computer-executable instructions stored thereon, which can be executed by the processor; wherein the processor is configured to be used to execute computer-executable instructions to implement the steps where: when the current block allows the motion vector refinement mode, determine the prediction values of the sub-blocks of the current block, and determine the prediction value of the current block based on the prediction values of the sub-blocks of the current block, and for of each subblock of the current block, determining the subblock prediction value includes: obtaining motion information of the current block, comprising a first original motion vector and a first reference frame, a second original motion vector and a second reference frame; determining a first reference block corresponding to the subblock based on the first source motion vector of the current block, and determining a second reference block corresponding to the subblock based on the second source motion vector of the current block; obtaining the optimal motion vector based on the pixel values of the first reference block and the pixel values of the second reference block, wherein obtaining the optimal motion vector includes: taking the original motion vector as the center, selecting the motion vectors from the motion vectors containing the original motion vector and the motion vectors , surrounding the original motion vector, and define the selected motion vectors as potential motion vectors; wherein the original motion vector is a first original motion vector or a second original motion vector; obtaining a cost value corresponding to the original motion vector and cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block; selecting a motion vector from the original motion vector and the potential motion vectors as the optimal motion vector based on the cost value corresponding to the original motion vector and the cost values corresponding to the potential motion vectors; adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; determining a subblock prediction value based on the first target motion vector and the second target motion vector; wherein determining the sub-block prediction value based on the first target motion vector and the second target motion vector includes: determining a third reference block corresponding to the sub-block based on the first target motion vector, and determining a fourth reference block corresponding to the sub-block based on the second target motion vector movement; weighing the pixel values of the third reference block and the pixel values of the fourth reference block to obtain a sub-block prediction value.

[44] Согласно другому аспекту, в настоящей заявке предложено декодирующее устройство, выполненное с возможностью исполнения вышеупомянутого способа.[44] According to another aspect, the present application proposes a decoding device capable of executing the above method.

[45] Согласно другому аспекту, в настоящей заявке предложено кодирующее устройство, выполненное с возможностью исполнения этапов, на которых: когда текущий блок допускает режим уточнения вектора движения, определяют значения предсказания субблоков текущего блока, и определяют значение предсказания текущего блока на основе значений предсказания субблоков текущего блока, причем для каждого субблока текущего блока определение значения предсказания субблока включает в себя следующее: получают информацию о движении текущего блока, содержащую первый исходный вектор движения и первый опорный кадр, второй исходный вектор движения и второй опорный кадр; определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока; получают оптимальный вектор движения на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, причем получение оптимального вектора движения включает в себя следующее: принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения; причем исходный вектор движения представляет собой первый исходный вектор движения или второй исходный вектор движения; получают значение стоимости, соответствующее исходному вектору движения и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока; выбирают вектор движения из исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе значения стоимости, соответствующего исходному вектору движения, и значений стоимости, соответствующих потенциальным векторам движения; корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; определяют значение предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения; причем определение значения предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения включает в себя следующее: определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения; взвешивают значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока для получения значения предсказания субблока.[45] According to another aspect, the present application provides an encoder capable of executing the steps of: when the current block allows the motion vector refinement mode, determine the prediction values of the sub-blocks of the current block, and determine the prediction value of the current block based on the prediction values of the sub-blocks of the current block, wherein, for each subblock of the current block, determining the subblock prediction value includes: obtaining motion information of the current block comprising a first source motion vector and a first reference frame, a second source motion vector and a second reference frame; determining a first reference block corresponding to the subblock based on the first source motion vector of the current block, and determining a second reference block corresponding to the subblock based on the second source motion vector of the current block; obtaining the optimal motion vector based on the pixel values of the first reference block and the pixel values of the second reference block, wherein obtaining the optimal motion vector includes: taking the original motion vector as the center, selecting the motion vectors from the motion vectors containing the original motion vector and the motion vectors , surrounding the original motion vector, and define the selected motion vectors as potential motion vectors; wherein the original motion vector is a first original motion vector or a second original motion vector; obtaining a cost value corresponding to the original motion vector and cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block; selecting a motion vector from the original motion vector and the potential motion vectors as the optimal motion vector based on the cost value corresponding to the original motion vector and the cost values corresponding to the potential motion vectors; adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; determining a subblock prediction value based on the first target motion vector and the second target motion vector; wherein determining the sub-block prediction value based on the first target motion vector and the second target motion vector includes: determining a third reference block corresponding to the sub-block based on the first target motion vector, and determining a fourth reference block corresponding to the sub-block based on the second target motion vector movement; weighing the pixel values of the third reference block and the pixel values of the fourth reference block to obtain a sub-block prediction value.

[46] Согласно другому аспекту, в настоящей заявке предложен долговременный машиночитаемый носитель данных, содержащий сохраненные на нем машиноисполняемые инструкции, которые может исполнять процессор, причем процессор выполнен с возможностью его использования для исполнения машиноисполняемых инструкций для реализации вышеупомянутого способа.[46] According to another aspect, the present application provides a durable computer-readable storage medium containing computer-executable instructions stored thereon, which can be executed by a processor, and the processor is configured to be used to execute computer-executable instructions for implementing the above method.

[47] Из указанных выше технических решений очевидно, что в варианте осуществления настоящей заявки первый и второй целевые векторы движения текущего блока можно определять на основе первого и второго исходных векторов движения, при этом текущий блок можно кодировать или декодировать на основе первого и второго целевых векторов движения вместо того, чтобы кодировать или декодировать текущий блок непосредственно на основе первого и второго исходных векторов движения, для решения таких проблем, как низкое качество предсказания, погрешность предсказания и т.п., а также улучшения показателей кодирования и повышения эффективности кодирования.[47] From the above technical solutions it is obvious that in the embodiment of the present application, the first and second target motion vectors of the current block can be determined based on the first and second source motion vectors, while the current block can be encoded or decoded based on the first and second target vectors motion instead of encoding or decoding the current block based on the first and second original motion vectors directly, to solve problems such as poor prediction quality, prediction error, and the like, and improve encoding performance and increase encoding efficiency.

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

[48] Для создания более ясного представления о техническом решении в варианте осуществления настоящей заявки или известного решения, ниже будут кратко описаны чертежи, предназначенные для применения в указанных вариантах осуществления и чертежи известного решения. Разумеется, представленные ниже чертежи предназначены только для некоторых вариантов осуществления настоящей заявки; при этом специалисты в данной области техники смогут получить и другие чертежи на основе этих чертежей.[48] In order to give a clearer idea of the technical solution in the embodiment of the present application or the known solution, the drawings for use in these embodiments and the drawings of the known solution will be briefly described below. Of course, the drawings below are intended only for some embodiments of the present application; however, those skilled in the art will be able to obtain other drawings based on these drawings.

[49] Фиг. 1A - принципиальная схема интерполяции по варианту осуществления настоящей заявки;[49] FIG. 1A is a schematic diagram of an interpolation according to an embodiment of the present application;

[50] Фиг. 1B - принципиальная схема инфраструктуры кодирования видеоданных по варианту осуществления настоящей заявки;[50] FIG. 1B is a schematic diagram of a video coding infrastructure according to an embodiment of the present application;

[51] Фиг. 2 - блок-схема способа кодирования и декодирования по варианту осуществления настоящей заявки;[51] FIG. 2 is a flowchart of an encoding and decoding method according to an embodiment of the present application;

[52] Фиг. 3 - блок-схема способа кодирования и декодирования по варианту осуществления настоящей заявки;[52] FIG. 3 is a flowchart of an encoding and decoding method according to an embodiment of the present application;

[53] Фиг. 4 - блок-схема способа кодирования и декодирования по варианту осуществления настоящей заявки;[53] FIG. 4 is a flowchart of an encoding and decoding method according to an embodiment of the present application;

[54] Фиг. 5 - принципиальная схема опорных пикселей по варианту осуществления настоящей заявки;[54] FIG. 5 is a schematic diagram of reference pixels according to an embodiment of the present application;

[55] Фиг. 6 - принципиальная схема итерации по вектору движения по варианту осуществления настоящей заявки;[55] FIG. 6 is a schematic diagram of a motion vector iteration according to an embodiment of the present application;

[56] Фиг. 7A-7E - принципиальные схемы последовательности потенциальных точек по варианту осуществления настоящей заявки;[56] FIG. 7A-7E are schematic diagrams of a sequence of potential points according to an embodiment of the present application;

[57] Фиг.8 - принципиальная схема привязки в пространственной области текущего блока по варианту осуществления настоящей заявки;[57] FIG. 8 is a schematic diagram of an anchor in the spatial domain of a current block according to an embodiment of the present application;

[58] Фиг. 9 - структурная схема оборудования кодирования и декодирования по варианту осуществления настоящей заявки;[58] FIG. 9 is a block diagram of the encoding and decoding equipment of an embodiment of the present application;

[59] Фиг. 10 - структурная схема аппаратных средств устройства на стороне декодирования по варианту осуществления настоящей заявки;[59] FIG. 10 is a hardware block diagram of a device on the decoding side of an embodiment of the present application;

[60] Фиг. 11 - структурная схема аппаратных средств устройства на стороне кодирования по варианту осуществления настоящей заявки.[60] FIG. 11 is a hardware block diagram of an encoding-side device according to an embodiment of the present application.

Осуществление изобретенияImplementation of the invention

[61] Понятия, используемые в вариантах осуществления настоящей заявки, служат исключительно для их раскрытия и не предназначены для ограничения настоящей заявки. В ней, если не указано иначе и/или иное явно не следует из контекста, неопределенные артикли (англ. «a» или «an») означают «по меньшей мере один», а определенный артикль (англ. «the») означает «указанный по меньшей мере один». Следует понимать, что выражение «и/или» в настоящей заявке служит для обозначения всех возможных комбинаций одной или нескольких перечисленных позиций, к которым оно относится.[61] The terms used in the embodiments of the present application are for disclosure purposes only and are not intended to limit the present application. In it, unless otherwise indicated and / or otherwise clearly follows from the context, indefinite articles (English "a" or "an") mean "at least one", and the definite article (English "the") means " specified at least one. It should be understood that the expression "and/or" in this application is used to denote all possible combinations of one or more of the listed positions to which it refers.

[62] Следует понимать, что, несмотря на возможность применения понятий «первый», «второй», «третий» и т.д. в отношении различных элементов, эти элементы не следует ограничивать данными понятиями. Они служат исключительно для проведения различия между элементами разных типов. Например, «первый» элемент также может именоваться «второй» элемент, а «второй» элемент, аналогичным образом, также может именоваться «первый» элемент без отступления от объема настоящей заявки. Слово «если» может иметь значение «при…», или «когда…», «в качестве реакции на определение», в зависимости от контекста.[62] It should be understood that, despite the possibility of using the concepts of "first", "second", "third", etc. regarding the various elements, these elements should not be limited by these concepts. They serve solely to distinguish between elements of different types. For example, the "first" element may also be referred to as the "second" element, and the "second" element may similarly be referred to as the "first" element without departing from the scope of the present application. The word "if" can mean "when ..." or "when ...", "as a reaction to the definition", depending on the context.

[63] В варианте осуществления настоящей заявки предложен способ кодирования и декодирования, с которым могут быть связаны следующие понятия:[63] In an embodiment of the present application, an encoding and decoding method is proposed, with which the following concepts can be associated:

[64] Методики внутрикадрового предсказания и межкадрового предсказания: методика внутрикадрового предсказания состоит в применении пикселей закодированного блока текущего изображения для предсказания текущих пикселей согласно пространственной корреляции видеоданных для эффективного устранения избыточности видеоданных в пространственной области. Методика внутрикадрового предсказания предусматривает задание множества режимов предсказания, каждый из которых соответствует одному направлению текстуры (за исключением режима прямого кодирования), при этом сигнал предсказания текущего блока генерируют на основе значения граничного восстановленного пикселя блока, примыкающего к текущему блоку в направлении предсказания. Например, если текстура изображения ориентирована по горизонтали, информацию изображения лучше предсказывать путем выбора режима предсказания по горизонтали. Так как видеопоследовательность обычно имеет более сильную корреляцию во временной области, методика межкадрового предсказания должна предусматривать применение пикселей примыкающего закодированного изображения для предсказания текущих пикселей текущего изображения согласно корреляции во временной области видеоданных для эффективного устранения избыточности видеоданных во временной области. Раздел о междкадровом предсказании основного стандарта кодирования видеоданных предусматривает применение технологии поблочной компенсации движения, основной принцип которой состоит в получении оптимально совпадающего блока в ранее закодированном изображении для каждого блока пикселей текущего изображения, именуемом «оценка движения» (ОД, англ. Motion Estimation (ME)).[64] Intra-picture prediction and inter-picture prediction techniques: The intra-picture prediction technique is to apply the pixels of the encoded block of the current image to predict the current pixels according to the spatial correlation of the video data to effectively eliminate the redundancy of the video data in the spatial domain. The intra-frame prediction technique provides for setting a plurality of prediction modes, each of which corresponds to one texture direction (except for the direct coding mode), while the prediction signal of the current block is generated based on the value of the boundary reconstructed pixel of the block adjacent to the current block in the prediction direction. For example, if the image texture is horizontally oriented, the image information is better predicted by selecting the horizontal prediction mode. Since a video sequence usually has a stronger time domain correlation, an inter-picture prediction technique should use pixels of an adjacent encoded image to predict the current pixels of the current image according to the time domain correlation of the video data to effectively eliminate video data redundancy in the time domain. The section on interframe prediction of the main video data coding standard provides for the use of block motion compensation technology, the basic principle of which is to obtain an optimally matching block in a previously encoded image for each block of pixels in the current image, called Motion Estimation (ME) ).

[65] Вектор движения (ВД): при межкадровом кодировании, векторы движения служат для указания относительного смещения между текущим кодируемым блоком и оптимально совпадающим блоком в соответствующем опорном изображении. Каждый поделенный блок имеет соответствующий вектор движения, который передают стороне декодирования, при этом на независимое кодирование и передачу вектора движения каждого блока, в частности, поделенного на мелкие блоки, расходуется значительное число бит. Для уменьшения числа бит для кодирования вектора движения применяют пространственную корреляцию между примыкающими блоками изображения для предсказания вектора движения кодируемого текущего блока согласно вектору движения примыкающего закодированного блока с последующей передачей предсказанной разности. Это позволяет эффективно уменьшить число бит, представляющих вектор движения. В процессе кодирования вектора движения текущего блока, вектор движения текущего блока предсказывают на основе вектора движения примыкающего закодированного блока с последующим кодированием разности векторов движения (РВД, англ. Motion Vector Difference (MVD)) между предсказанным вектором движения (ПВД, Motion Vector Prediction (MVP)) и фактическим оцененным значением вектора движения, что значительно уменьшает число кодируемых бит ВД.[65] Motion vector (VD): In inter-frame coding, motion vectors serve to indicate the relative offset between the currently encoded block and the optimally matched block in the corresponding reference picture. Each divided block has a corresponding motion vector, which is transmitted to the decoding side, and a significant number of bits are consumed for independent encoding and transmission of the motion vector of each block, in particular, divided into small blocks. To reduce the number of bits for motion vector coding, spatial correlation between adjacent image blocks is used to predict the motion vector of the encoded current block according to the motion vector of the adjacent encoded block, followed by transmission of the predicted difference. This effectively reduces the number of bits representing the motion vector. In the process of encoding the motion vector of the current block, the motion vector of the current block is predicted based on the motion vector of the adjacent encoded block, followed by encoding the motion vector difference (MVD, eng. Motion Vector Difference (MVD)) between the predicted motion vector (PVD, Motion Vector Prediction (MVP) )) and the actual estimated value of the motion vector, which significantly reduces the number of encoded TD bits.

[66] Информация о движении: так как вектор движения указывает смещение между блоком текущего изображения и определенным блоком опорного изображения, для сбора точной информации, указывающей на этот блок изображения, в дополнение к вектору движения необходима информация об индексе изображения опорного кадра для указания применяемого изображения опорного кадра. Технология кодирования видеоданных предусматривает возможность создания общего перечня изображений опорного кадра для изображения текущего кадра, при этом информация об индексе изображения опорного кадра указывает изображение опорного кадра в перечне изображений опорного кадра, принятое блоком текущего изображения. Кроме того, многие методики кодирования также допускают наличие нескольких перечней опорных изображений, в связи с чем также возможно применение значения индекса, могущего именоваться «опорное направление», для указания применяемого перечня опорных изображений. В технологии кодирования видеоданных, относящаяся к движению информация, например, вектор движения, индекс опорного кадра и опорное направление, может собирательно именоваться «информация о движении».[66] Motion information: since the motion vector indicates the offset between the current picture block and a certain reference picture block, in order to collect accurate information pointing to this picture block, in addition to the motion vector, reference frame picture index information is needed to indicate the applied picture reference frame. The video coding technology provides for the possibility of creating a common key frame picture list for the current frame picture, wherein the key frame picture index information indicates the key frame picture in the key frame picture list received by the current picture block. In addition, many coding techniques also allow multiple reference picture lists, so it is also possible to use an index value, which may be referred to as "reference direction", to indicate which reference picture list to use. In video coding technology, motion-related information such as motion vector, reference frame index, and reference direction may be collectively referred to as "motion information".

[67] Сигнал предсказания: сигнал предсказания - это значение пикселя, полученное на основе уже закодированного и декодированного пикселя, при этом остаток получают на основе разности исходного пикселя и предсказанного пикселя, с последующим преобразованием и квантованием остатка и кодированием коэффициентов. В частности, сигнал межкадрового предсказания относится к значению пикселя, полученному на основе опорного кадра (кадра из восстановленных пикселей) текущего блока, при этом окончательный предсказанный пиксель получают путем интерполяции из-за дискретного расположения пикселей. Чем ближе предсказанный пиксель к исходному пикселю, тем меньше остаточная энергия, получаемая путем вычитания предсказанного пикселя из исходного пикселя и тем лучше показатели сжатия при кодировании.[67] Prediction signal: The prediction signal is a pixel value obtained based on an already encoded and decoded pixel, with a residual obtained based on the difference between the original pixel and the predicted pixel, and then transforming and quantizing the residual and encoding the coefficients. In particular, the inter-picture prediction signal refers to a pixel value obtained based on a reference frame (a frame of reconstructed pixels) of the current block, whereby the final predicted pixel is obtained by interpolation due to the discrete arrangement of pixels. The closer the predicted pixel is to the original pixel, the smaller the residual energy obtained by subtracting the predicted pixel from the original pixel, and the better the encoding compression performance.

[68] Интерполяция: если точность текущего ВД не является целопиксельной, существующее значение пикселя нельзя непосредственно скопировать из соответствующего опорного кадра, при этом необходимое значение пикселя можно получить только путем интерполяции. На Фиг.1A показано, что если нужно получить значение пикселя Y1/2 со сдвигом 1/2 пикселя, то его получают путем интерполяции значений Х окружающих существующих пикселей. При применении интерполяционного фильтра с числом отводов N, интерполяцию осуществляют путем интерполяции N окружающих целочисленных пикселей. [68] Interpolation: If the accuracy of the current VD is not integer pixel, the existing pixel value cannot be directly copied from the corresponding reference frame, and the required pixel value can only be obtained by interpolation. FIG. 1A shows that if a Y1/2 pixel value with a 1/2 pixel offset is to be obtained, it is obtained by interpolating the X values of the surrounding existing pixels. When using an interpolation filter with N taps, interpolation is performed by interpolating N surrounding integer pixels.

[69] Компенсация движения: компенсация движения - это процесс получения всех значений пикселей текущего блока путем интерполяции или копирования.[69] Motion compensation: motion compensation is the process of obtaining all pixel values of the current block by interpolation or copying.

[70] Инфраструктура кодирования видеоданных: как раскрыто на Фиг. 1B, последовательность обработки на стороне кодирования по варианту осуществления настоящей заявки можно реализовать с помощью инфраструктуры кодирования видеоданных, при этом принципиальная схема инфраструктуры декодирования видеоданных схожа со схемой на Фиг.1B, которая не раскрывается в настоящем параграфе, при этом последовательность обработки на стороне декодирования по варианту осуществления настоящей заявки можно реализовать с помощью инфраструктуры декодирования видеоданных. В частности, инфраструктура кодирования видеоданных и инфраструктура декодирования видеоданных включают в себя модули, например, внутрикадрового предсказания, оценки движения / компенсации движения, буферизации опорных изображений, внутриконтурной фильтрации, восстановления, преобразования, квантования, обратного преобразования, обратного квантования, энтропийного кодирования и т.п. Последовательность обработки на стороне кодирования может быть реализована путем взаимодействия между указанными модулями, при этом последовательность обработки на стороне декодирования может быть реализована путем взаимодействия этих модулей.[70] Video coding infrastructure: as disclosed in FIG. 1B, the encoding-side processing sequence of an embodiment of the present application can be implemented with a video encoding infrastructure, the circuit diagram of the video decoding infrastructure is similar to that of FIG. embodiment of the present application can be implemented using a video decoding infrastructure. In particular, the video coding infrastructure and the video decoding infrastructure include modules such as intra-frame prediction, motion estimation/motion compensation, reference picture buffering, in-loop filtering, reconstruction, transform, quantization, inverse transform, inverse quantization, entropy coding, etc. P. The processing sequence on the encoding side can be implemented by interaction between these modules, while the processing sequence on the decoding side can be implemented by interaction of these modules.

[71] В известном способе, если текущий блок является двунаправленным, то отсутствует рациональное решение задачи, состоящей в том, как корректировать первый и второй исходные векторы движения после получения первого и второго исходных векторов движения текущего блока. В варианте осуществления заявки, если текущий блок является двунаправленным блоком, то сначала оценивают, соответствует ли характеристическая информация текущего блока особому условию; если да, определяют первый опорный блок, соответствующий текущему блоку, на основе первого исходного вектора движения, определяют второй опорный блок на основе второго исходного вектора движения текущего блока, и корректируют первый и второй исходные векторы движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого и второго целевых векторов движения.[71] In the known method, if the current block is bidirectional, then there is no rational solution to the problem of how to correct the first and second original motion vectors after obtaining the first and second original motion vectors of the current block. In an embodiment of the application, if the current block is a bidirectional block, then it is first judged whether the characteristic information of the current block meets a specific condition; if so, determine the first reference block corresponding to the current block based on the first original motion vector, determine the second reference block based on the second original motion vector of the current block, and adjust the first and second original motion vectors according to the first pixel value of the first reference block and the second value pixels of the second reference block to obtain the first and second target motion vectors.

[72] Таким образом, первый и второй целевые векторы движения получают путем коррекции первого и второго исходных векторов движения, что позволяет кодировать или декодировать текущий блок на основе первого и второго целевых векторов движения, улучшить показатели кодирования и повысить эффективность кодирования.[72] Thus, the first and second target motion vectors are obtained by correcting the first and second source motion vectors, which makes it possible to encode or decode the current block based on the first and second target motion vectors, improve encoding performance, and improve encoding efficiency.

[73] Ниже детально раскрыт способ кодирования и декодирования по настоящей заявке на примере нескольких частных вариантов осуществления.[73] Below, the method of encoding and decoding according to the present application is described in detail using several particular embodiments as an example.

[74] Вариант осуществления 1: на Фиг.2 представлена принципиальная схема последовательности способа кодирования и декодирования по варианту осуществления настоящей заявки, причем способ применим к стороне декодирования или стороне кодирования, при этом способ может включать в себя следующие этапы:[74] Embodiment 1: FIG. 2 is a flowchart of an encoding and decoding method according to an embodiment of the present application, the method is applicable to a decoding side or an encoding side, and the method may include the following steps:

[75] На этапе 201, если характеристическая информация текущего блока соответствует особому условию, определяют первый опорный блок, соответствующий текущему блоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий текущему блоку, на основе второго исходного вектора движения текущего блока. Характеристическая информация включает в себя, помимо прочего, по меньшей мере одно из следующего: режим предсказания информации о движении, соответствующий текущему блоку; атрибут информации о движении, соответствующий текущему блоку; информацию о размере текущего блока.[75] In step 201, if the characteristic information of the current block meets the specific condition, the first reference block corresponding to the current block is determined based on the first original motion vector of the current block, and the second reference block corresponding to the current block is determined based on the second original motion vector of the current block. block. The characteristic information includes, but is not limited to, at least one of the following: a motion information prediction mode corresponding to the current block; a motion information attribute corresponding to the current block; information about the size of the current block.

[76] В одном примере, когда характеристическая информация представляет собой режим предсказания информации о движении, соответствующий текущему блоку, соответствие характеристической информации текущего блока особому условию может включать в себя, помимо прочего: если режим предсказания информации о движении, соответствующий текущему блоку, представляет собой стандартный режим слияния, определяют, что режим предсказания информации о движении, соответствующий текущему блоку, соответствует особому условию; или, если режим предсказания информации о движении, соответствующий текущему блоку, представляет собой режим слияния для генерирования нового значения предсказания путем объединения значения межкадрового предсказания и значения внутрикадрового предсказания, определяют, что режим предсказания информации о движении, соответствующий текущему блоку, соответствует особому условию.[76] In one example, when the characteristic information is the motion information prediction mode corresponding to the current block, matching the characteristic information of the current block to a particular condition may include, but is not limited to: if the motion information prediction mode corresponding to the current block is standard merge mode, determining that the motion information prediction mode corresponding to the current block meets a specific condition; or, if the motion information prediction mode corresponding to the current block is a merge mode to generate a new prediction value by combining the inter prediction value and the intra prediction value, it is determined that the motion information prediction mode corresponding to the current block meets the special condition.

[77] В одном примере, когда характеристическая информация представляет собой атрибут информации о движении, соответствующий текущему блоку, соответствие характеристической информации текущего блока особому условию может включать в себя, помимо прочего: если атрибут информации о движении, соответствующий текущему блоку, состоит в том, что информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, определяют, что атрибут информации о движении, соответствующий текущему блоку, соответствует особому условию; или, если атрибут информации о движении, соответствующий текущему блоку, состоит в том, что информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, а расстояния между текущим кадром и каждым из двух опорных кадров, соответствующих информации о движении в двух разных направлениях, являются одинаковыми, определяют, что атрибут информации о движении, соответствующий текущему блоку, соответствует особому условию; или, если атрибут информации о движении, соответствующий текущему блоку, состоит в том, что для текущего блока вновь используют информацию о движении окружающих блоков, определяют, что атрибут информации о движении, соответствующий текущему блоку, соответствует особому условию; или, если атрибут информации о движении, соответствующий текущему блоку, состоит в том, что информация о движении каждого субблока текущего блока является одинаковой, определяют, что атрибут информации о движении, соответствующий текущему блоку, соответствует особому условию. [77] In one example, when the characteristic information is a motion information attribute corresponding to the current block, matching the characteristic information of the current block to a specific condition may include, but is not limited to: if the motion information attribute corresponding to the current block is, that the motion information of the current block includes motion information in two different directions, determining that the motion information attribute corresponding to the current block meets a specific condition; or, if the motion information attribute corresponding to the current block is that the motion information of the current block includes motion information in two different directions, and the distances between the current frame and each of the two reference frames corresponding to the motion information in two different directions are the same, determine that the motion information attribute corresponding to the current block meets the particular condition; or, if the motion information attribute corresponding to the current block is that for the current block, the motion information of surrounding blocks is reused, determining that the motion information attribute corresponding to the current block meets a special condition; or, if the motion information attribute corresponding to the current block is that the motion information of each sub-block of the current block is the same, it is determined that the motion information attribute corresponding to the current block meets the special condition.

[78] Например, то, что информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, означает: информация о движении текущего блока в двух разных направлениях относится соответственно к первому опорному кадру и второму опорному кадру, при этом первый опорный кадр расположен перед текущим кадром, в котором расположен текущий блок, а второй опорный кадр расположен за текущим кадром, в котором расположен текущий блок.[78] For example, that the motion information of the current block includes motion information in two different directions means: the motion information of the current block in two different directions refers to the first reference frame and the second reference frame, respectively, with the first reference the frame is located before the current frame in which the current block is located, and the second reference frame is located behind the current frame in which the current block is located.

[79] В одном примере, когда характеристическая информация представляет собой информацию о размере текущего блока, информация о размере текущего блока может включать в себя значение ширины и значение высоты текущего блока, при этом соответствие характеристической информации текущего блока особому условию может включать в себя, помимо прочего: если значение ширины текущего блока находится в пределах первого интервала [первый порог, второй порог], определяют, что информация о размере текущего блока соответствует особому условию; или, если значение высоты текущего блока находится в пределах второго интервала [третий порог, четвертый порог], определяют, что информация о размере текущего блока соответствует особому условию; или, если площадь, полученная на основе значения ширины и значения высоты текущего блока, находится в пределах третьего интервала [пятый порог, шестой порог], определяют, что информация о размере текущего блока соответствует особому условию; или, если значение ширины находится в пределах первого интервала [первый порог, второй порог], значение высоты находится в пределах второго интервала [третий порог, четвертый порог], а площадь находится в пределах третьего интервала [пятый порог, шестой порог], определяют, что информация о размере текущего блока соответствует особому условию.[79] In one example, when the characteristic information is current block size information, the current block size information may include a width value and a height value of the current block, wherein the characteristic information of the current block matches a particular condition may include, in addition to other things: if the width value of the current block is within the first interval [first threshold, second threshold], determining that the size information of the current block meets a specific condition; or, if the height value of the current block is within the second interval [third threshold, fourth threshold], determining that the size information of the current block meets a special condition; or, if the area obtained based on the width value and the height value of the current block is within the third interval [fifth threshold, sixth threshold], it is determined that the size information of the current block meets a specific condition; or, if the width value is within the first interval [first threshold, second threshold], the height value is within the second interval [third threshold, fourth threshold], and the area is within the third interval [fifth threshold, sixth threshold], determine, that the information about the size of the current block meets a special condition.

[80] Например, первый порог может быть меньше второго порога, при этом ни первый порог, ни второй порог не ограничен, например, первый порог может составлять 4, а второй порог может составлять 128. Третий порог может быть меньше четвертого порога, при этом ни третий порог, ни четвертый порог не ограничен, например, третий порог может составлять 8, а четвертый порог может составлять 128. Пятый порог может быть меньше шестого порога, при этом ни пятый порог, ни шестой порог не ограничен, например, при этом пятый порог может составлять 64, а шестой порог - 128*128.[80] For example, the first threshold may be less than the second threshold, wherein neither the first threshold nor the second threshold is limited, for example, the first threshold may be 4 and the second threshold may be 128. The third threshold may be less than the fourth threshold, wherein neither the third threshold nor the fourth threshold is limited, for example, the third threshold may be 8, and the fourth threshold may be 128. The fifth threshold may be less than the sixth threshold, and neither the fifth nor the sixth threshold is limited, for example, the the threshold may be 64 and the sixth threshold may be 128*128.

[81] В одном примере, этап, на котором определяют первый опорный блок, соответствующий текущему блоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий текущему блоку, на основе второго исходного вектора движения текущего блока может включать в себя, помимо прочего, действия, состоящие в том, что: определяют первый опорный блок, соответствующий текущему блоку, из первого опорного кадра на основе первого исходного вектора движения текущего блока; и определяют второй опорный блок, соответствующий текущему блоку, из второго опорного кадра на основе второго исходного вектора движения текущего блока. Первое значение пикселя каждой пиксельной точки в первом опорном блоке получают путем интерполяции значений пикселей примыкающих пиксельных точек в первом опорном блоке или получают путем копирования значений пикселей примыкающих пиксельных точек в первом опорном блоке; второе значение пикселя каждой пиксельной точки во втором опорном блоке получают путем интерполяции значений пикселей примыкающих пиксельных точек во втором опорном блоке или получают путем копирования значений пикселей примыкающих пиксельных точек во втором опорном блоке. Размер первого опорного блока равен размеру второго опорного блока, при этом значение ширины первого опорного блока определяют по значению ширины текущего блока и диапазону поиска, а значение высоты первого опорного блока определяют по значению высоты текущего блока и диапазону поиска.[81] In one example, determining a first reference block corresponding to the current block based on the first original motion vector of the current block and determining a second reference block corresponding to the current block based on the second original motion vector of the current block may include , inter alia, the actions of: determining the first reference block corresponding to the current block from the first reference frame based on the first source motion vector of the current block; and determining a second reference block corresponding to the current block from the second reference frame based on the second source motion vector of the current block. The first pixel value of each pixel point in the first reference block is obtained by interpolating the pixel values of the adjacent pixel points in the first reference block, or obtained by copying the pixel values of the adjacent pixel points in the first reference block; the second pixel value of each pixel point in the second reference block is obtained by interpolating the pixel values of adjacent pixel points in the second reference block, or obtained by copying the pixel values of adjacent pixel points in the second reference block. The size of the first reference block is equal to the size of the second reference block, while the width of the first reference block is determined by the width of the current block and the search range, and the height of the first reference block is determined by the height of the current block and the search range.

[82] На этапе 202 первый и второй исходные векторы движения корректируют согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения.[82] In step 202, the first and second source motion vectors are adjusted according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source vector. movement.

[83] В одном примере, если текущий блок содержит по меньшей мере один субблок, то для каждого субблока текущего блока первый и второй исходные векторы движения корректируют согласно первому и второму значениям пикселей для получения первого и второго целевых векторов движения субблока.[83] In one example, if the current block contains at least one subblock, then for each subblock of the current block, the first and second source motion vectors are adjusted according to the first and second pixel values to obtain the first and second target motion vectors of the subblock.

[84] В одном примере этап, на котором корректируют первый и второй исходные векторы движения согласно первому и второму значениям пикселей для получения первого и второго целевых векторов движения субблока, может включать в себя действия, состоящие в том, что можно определить первое и второе целопиксельные значения коррекции вектора движения субблока и/или первое и второе субпиксельные значения коррекции вектора движения субблока на основе первого и второго значений пикселей. Далее первый исходный вектор движения можно скорректировать согласно первому целопиксельному значению коррекции вектора движения и/или первому субпиксельному значению коррекции вектора движения для получения первого целевого вектора движения субблока. При этом второй исходный вектор движения можно скорректировать согласно второму целопиксельному значению коррекции вектора движения и/или второму субпиксельному значению коррекции вектора движения для получения второго целевого вектора движения субблока.[84] In one example, the step of adjusting the first and second source motion vectors according to the first and second pixel values to obtain the first and second target motion vectors of the subblock may include determining the first and second integer pixel sub-block motion vector correction values; and/or first and second sub-pixel sub-block motion vector correction values based on the first and second pixel values. Further, the first source motion vector may be corrected according to the first integer-pixel motion vector correction value and/or the first sub-pixel motion vector correction value to obtain the first sub-block target motion vector. Meanwhile, the second source motion vector can be corrected according to the second integer-pixel motion vector correction value and/or the second sub-pixel motion vector correction value to obtain the second sub-block target motion vector.

[85] В одном примере этап, на котором определяют первое и второе целопиксельные значения коррекции вектора движения субблока, первое и второе субпиксельные значения коррекции вектора движения субблока на основе первого и второго значений пикселей, может включать в себя действия, состоящие в том, что: определяют первый исходный вектор движения или второй исходный вектор движения в качестве центрального вектора движения; определяют краевой вектор движения, соответствующий центральному вектору движения; получают первое значение стоимости, соответствующее центральному вектору движения, и второе значение стоимости, соответствующее краевому вектору движения, на основе первого и второго значений пикселей; далее выбирают вектор движения из центрального вектора движения и краевого вектора движения в качестве оптимального вектора движения на основе первого значения стоимости и второго значения стоимости и оценивают, соблюдено ли конечное условие; если нет, определяют оптимальный вектор движения в качестве центрального вектора движения и повторно определяют краевой вектор движения, соответствующий центральному вектору движения; если да, определяют первое и второе целопиксельные значения коррекции вектора движения субблока на основе оптимального вектора движения; и определяют первое и второе субпиксельные значения коррекции вектора движения субблока на основе оптимального вектора движения.[85] In one example, determining the first and second integer sub-block motion vector correction values, the first and second sub-pixel sub-block motion vector correction values based on the first and second pixel values, may include: determining the first source motion vector or the second source motion vector as the center motion vector; determining an edge motion vector corresponding to the central motion vector; obtaining a first cost value corresponding to the center motion vector and a second cost value corresponding to the edge motion vector based on the first and second pixel values; next, selecting a motion vector from the center motion vector and the edge motion vector as the optimal motion vector based on the first cost value and the second cost value, and judging whether the end condition is met; if not, determining the optimal motion vector as the center motion vector, and re-determining an edge motion vector corresponding to the center motion vector; if so, determining first and second integer sub-unit motion vector correction values based on the optimal motion vector; and determining first and second sub-pixel sub-block motion vector correction values based on the optimal motion vector.

[86] В одном примере на этапе, на котором определяют краевой вектор движения, соответствующий центральному вектору движения: сдвигают центральный вектор (x, y) движения в разных направлениях на S и последовательно получают краевой вектор (x, y+S) движения, краевой вектор (x, y-S) движения, краевой вектор (x+ S, y) движения, краевой вектор (x-S, y) движения и краевой вектор (x+ вправо, y+ вниз) движения в разных направлениях, либо сдвигают центральный вектор (x, y) движения в разных направлениях на S и последовательно получают краевой вектор (x, y-S) движения, краевой вектор (x, y+S) движения, краевой вектор (x-S, y) движения, краевой вектор (x+S, y) движения и краевой вектор (x+ вправо, y+ вниз) движения в разных направлениях. Используемое по умолчанию значение краевого вектора (x + вправо, y + вниз) движения составляет (x-S, y-S); если значение стоимости краевого вектора (x+S, y) движения меньше значения стоимости краевого вектора (x-S, y) движения, то значение «вправо» составляет S; если значение стоимости краевого вектора движения (x, y + S) меньше чем у краевого вектора (x, y-S) движения, то значение «вниз» составляет S; либо, если значение стоимости краевого вектора (x+S, y) движения меньше или равно значению стоимости краевого вектора (x-S, y) движения, то значение «вправо» составляет S; если значение стоимости краевого вектора движения (x, y + S) меньше или равно значению стоимости краевого вектора (x, y-S) движения, то значение «вниз» составляет S.[86] In one example, in a step in which the edge motion vector corresponding to the center motion vector is determined: the center motion vector (x, y) is shifted in different directions by S, and the edge motion vector (x, y+S) is sequentially obtained, the edge vector (x, y-S) of movement, edge vector (x+ S, y) of movement, edge vector (x-S, y) of movement and edge vector (x+ right, y+ down) of movement in different directions, or shift the center vector (x, y) move in different directions on S and sequentially obtain the edge vector (x, y-S) of the movement, the edge vector (x, y+S) of the movement, the edge vector (x-S, y) of the movement, the edge vector of (x+S, y) of the movement and the edge vector (x+ right, y+ down) of movement in different directions. The default edge vector value of (x + right, y + down) movement is (x-S, y-S); if the cost value of the edge vector (x+S, y) of the movement is less than the cost value of the edge vector (x-S, y) of the movement, then the value of "right" is S; if the cost value of the edge motion vector (x, y+S) is less than that of the edge motion vector (x, y-S), then the "down" value is S; or, if the cost value of the edge vector (x+S, y) of the motion is less than or equal to the value of the cost of the edge vector (x-S, y) of the motion, then the value of "right" is S; if the edge motion vector cost value (x, y + S) is less than or equal to the edge motion vector cost value (x, y-S) then the down value is S.

[87] В одном примере этап, на котором получают первое значение стоимости, соответствующее центральному вектору движения, и второе значение стоимости, соответствующее краевому вектору движения на основе первого и второго значений пикселей может включать в себя, помимо прочего, действия, состоящие в том, что: получают первое значение стоимости, соответствующее центральному вектору движения, и второе значение стоимости, соответствующее краевому вектору движения, на основе первого и второго значений пикселей без понижающей дискретизации; в качестве альтернативы, можно выполнить операцию понижающей дискретизации в отношении первого и второго значений пикселей; и получают первое значение стоимости, соответствующее центральному вектору движения, и второе значение стоимости, соответствующее краевому вектору движения, на основе первого и второго значений пикселей после понижающей дискретизации; в качестве альтернативы, можно выполнить сдвиг и операцию понижающей дискретизации в отношении первого значения пикселя и выполнить сдвиг и операцию понижающей дискретизации в отношении второго значения пикселя; и получают первое значение стоимости, соответствующее центральному вектору движения, и второе значение стоимости, соответствующее краевому вектору движения, на основе первого и второго значений пикселей после сдвига и понижающей дискретизации.[87] In one example, the step of obtaining a first cost value corresponding to a center motion vector and a second cost value corresponding to an edge motion vector based on the first and second pixel values may include, among other things, the steps of that: obtaining a first cost value corresponding to a center motion vector and a second cost value corresponding to an edge motion vector based on the first and second pixel values without downsampling; alternatively, a downsampling operation may be performed on the first and second pixel values; and obtaining a first cost value corresponding to a center motion vector and a second cost value corresponding to an edge motion vector based on the first and second downsampled pixel values; alternatively, you can perform a shift and downsampling operation on the first pixel value, and perform a shift and downsampling operation on the second pixel value; and obtaining a first cost value corresponding to the center motion vector and a second cost value corresponding to the edge motion vector based on the first and second pixel values after shifting and downsampling.

[88] В одном примере этап, на котором определяют первое и второе целопиксельные значения коррекции вектора движения субблока, первое и второе субпиксельные значения коррекции вектора движения субблока на основе первого и второго значений пикселей, может включать в себя действия, состоящие в том, что: принимают первый исходный вектор движения или второй исходный вектор движения в качестве центра, выбирают некоторые или все векторы движения из окружающих векторов движения и принимают выбранные векторы движения в качестве потенциальных векторов движения; получают третье значение стоимости, соответствующее первому исходному вектору движения или второму исходному вектору движения, и четвертое значение стоимости, соответствующее каждому из потенциальных векторов движения, на основе первого и второго значений пикселей; далее выбирают вектор движения из первого исходного вектора движения или второго исходного вектора движения и потенциального вектора движения в качестве оптимального вектора движения на основе третьего значения стоимости и четвертого значения стоимости; определяют первое и второе целопиксельные значения коррекции вектора движения субблока на основе оптимального вектора движения; и определяют первое и второе субпиксельные значения коррекции вектора движения субблока на основе оптимального вектора движения.[88] In one example, determining the first and second integer sub-block motion vector correction values, the first and second sub-pixel sub-block motion vector correction values based on the first and second pixel values, may include the steps of: taking the first source motion vector or the second source motion vector as the center, selecting some or all of the motion vectors from the surrounding motion vectors, and taking the selected motion vectors as candidate motion vectors; obtaining a third cost value corresponding to the first source motion vector or the second source motion vector and a fourth cost value corresponding to each of the potential motion vectors based on the first and second pixel values; then selecting a motion vector from the first original motion vector or the second original motion vector and the potential motion vector as the optimal motion vector based on the third cost value and the fourth cost value; determining first and second integer subblock motion vector correction values based on the optimal motion vector; and determining first and second sub-pixel sub-block motion vector correction values based on the optimal motion vector.

[89] Этап, на котором определяют первое и второе целопиксельные значения коррекции вектора движения субблока на основе оптимального вектора движения, может включать в себя, помимо прочего, действия, состоящие в том, что: определяют первое целопиксельное значение коррекции вектора движения субблока на основе оптимального вектора движения и первого исходного вектора движения и определяют второе целопиксельное значение коррекции вектора движения субблока согласно первому целопиксельному значению коррекции вектора движения.[89] The step of determining the first and second integer pixel motion vector correction values of the sub-unit based on the optimal motion vector may include, among other things, the steps of: determining the first integer pixel motion vector correction value of the sub-block based on the optimal the motion vector and the first original motion vector, and determining a second integer pixel motion vector correction value of the subblock according to the first integer pixel motion vector correction value.

[90] Этап, на котором определяют первое и второе субпиксельные значения коррекции вектора движения субблока на основе оптимального вектора движения, может включать в себя действия, состоящие в том, что: определяют первое субпиксельное значение коррекции вектора движения субблока на основе значения стоимости, соответствующего оптимальному вектору движения, и значения стоимости, соответствующего краевому вектору движения, соответствующему оптимальному вектору движения, и определяют второе субпиксельное значение коррекции вектора движения субблока на основе первого субпиксельного значения коррекции вектора движения.[90] The step of determining the first and second sub-pixel motion vector correction values of the sub-block based on the optimal motion vector may include: determining the first sub-pixel motion vector correction value of the sub-block based on the cost value corresponding to the optimal motion vector and a cost value corresponding to an edge motion vector corresponding to the optimal motion vector, and determining a second sub-pixel motion vector correction value of the subblock based on the first sub-pixel motion vector correction value.

[91] На этапе 203 текущий блок кодируют или декодируют на основе первого и второго целевых векторов движения. Например, если речь идет о стороне кодирования, то сторона кодирования может кодировать текущий блок на основе первого и второго целевых векторов движения; если речь идет о стороне декодирования, то сторона декодирования может декодировать текущий блок на основе первого и второго целевых векторов движения.[91] At step 203, the current block is encoded or decoded based on the first and second target motion vectors. For example, when it comes to the encoding side, the encoding side may encode the current block based on the first and second target motion vectors; when it comes to the decoding side, the decoding side may decode the current block based on the first and second target motion vectors.

[92] В одном примере для каждого субблока текущего блока определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения субблока и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения субблока; третье значение пикселя третьего опорного блока и четвертое значение пикселя четвертого опорного блока взвешивают для получения значения предсказания субблока; и определяют значение предсказания текущего блока на основе значения предсказания каждого субблока.[92] In one example, for each subblock of the current block, a third reference block corresponding to the subblock is determined based on the first target motion vector of the subblock, and a fourth reference block corresponding to the subblock is determined based on the second target motion vector of the subblock; the third pixel value of the third reference block and the fourth pixel value of the fourth reference block are weighted to obtain a sub-block prediction value; and determining a prediction value of the current block based on the prediction value of each sub-block.

[93] В одном примере этап, на котором определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения субблока и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения субблока может включать в себя действия, состоящие в том, что:[93] In one example, determining a third reference block corresponding to a subblock based on the first target motion vector of the subblock and determining a fourth reference block corresponding to the subblock based on the second target motion vector of the subblock may include: , what:

[94] Вариант реализации 1: определяют пятый опорный блок, соответствующий субблоку, из первого опорного кадра на основе первого целевого вектора движения субблока и интерполируют значения пикселей в пятом опорном блоке для получения третьего опорного блока. Определяют шестой опорный блок, соответствующий субблоку, из второго опорного кадра на основе второго целевого вектора движения субблока и интерполируют значения пикселей в шестом опорном блоке для получения четвертого опорного блока.[94] Embodiment 1: Determine the fifth reference block corresponding to the sub-block from the first reference frame based on the first target motion vector of the sub-block, and interpolate pixel values in the fifth reference block to obtain the third reference block. The sixth reference block corresponding to the subblock is determined from the second reference frame based on the second target motion vector of the subblock, and the pixel values in the sixth reference block are interpolated to obtain the fourth reference block.

[95] Вариант реализации 2: определяют седьмой опорный блок, соответствующий субблоку, из первого опорного кадра на основе первого целевого вектора движения субблока, строят восьмой опорный блок на основе значений пикселей в седьмом опорном блоке и интерполируют значения пикселей в восьмом опорном блоке для получения третьего опорного блока; и определяют девятый опорный блок, соответствующий субблоку, из второго опорного кадра на основе второго целевого вектора движения субблока, строят десятый опорный блок на основе значений пикселей в девятом опорном блоке и интерполируют значения пикселей в десятом опорном блоке для получения четвертого опорного блока.[95] Embodiment 2: Determine the seventh reference block corresponding to the sub-block from the first reference frame based on the first target motion vector of the sub-block, build the eighth reference block based on the pixel values in the seventh reference block, and interpolate the pixel values in the eighth reference block to obtain the third support block; and determining a ninth reference block corresponding to the subblock from the second reference frame based on the second target motion vector of the subblock, constructing a tenth reference block based on the pixel values in the ninth reference block, and interpolating the pixel values in the tenth reference block to obtain the fourth reference block.

[96] В одном примере, после кодирования или декодирования текущего блока на основе первого и второго целевых векторов движения, первый и второй целевые векторы движения для текущего блока можно сохранить. Таким образом, первый и второй целевые векторы движения применяют для контурной фильтрации текущего кадра, первый и второй целевые векторы движения применяют для привязки во временной области последующих кадров и/или первый и второй целевые векторы движения применяют для привязки в пространственной области текущего кадра.[96] In one example, after encoding or decoding the current block based on the first and second target motion vectors, the first and second target motion vectors for the current block may be stored. Thus, the first and second target motion vectors are used for contour filtering of the current frame, the first and second target motion vectors are used for anchoring in the time domain of subsequent frames, and/or the first and second target motion vectors are used for anchoring in the spatial domain of the current frame.

[97] Из раскрытых выше технических решений следует, что в варианте осуществления настоящей заявки первый и второй целевые векторы движения текущего блока можно определять на основе первого и второго исходных векторов движения, а текущий блок можно кодировать или декодировать на основе первого и второго целевых векторов движения вместо того, чтобы кодировать или декодировать его непосредственно на основе первого и второго исходных векторов движения, для решения таких проблем, как низкое качество предсказания, погрешность предсказания и т.п., улучшения показателей кодирования и повышения эффективности кодирования.[97] It follows from the above disclosed technical solutions that in the embodiment of the present application, the first and second target motion vectors of the current block can be determined based on the first and second source motion vectors, and the current block can be encoded or decoded based on the first and second target motion vectors instead of encoding or decoding it directly based on the first and second original motion vectors, to solve problems such as poor prediction quality, prediction error, and the like, improve encoding performance, and improve encoding efficiency.

[98] Вариант осуществления 2: на Фиг.3 представлена принципиальная схема последовательности способа кодирования и декодирования по варианту осуществления настоящей заявки, причем способ кодирования и декодирования применим к стороне кодирования, при этом способ кодирования и декодирования может включать в себя следующие этапы:[98] Embodiment 2: FIG. 3 is a flowchart of the encoding and decoding method of an embodiment of the present application, wherein the encoding and decoding method is applicable to the encoding side, and the encoding and decoding method may include the following steps:

[99] На этапе 301 сторона кодирования оценивает, соответствует ли характеристическая информация текущего блока особому условию. Если характеристическая информация текущего блока соответствует особому условию, выполняют этап 302; а если характеристическая информация текущего блока не соответствует особому условию, нет необходимости в применении способа коррекции вектора движения по настоящей заявке, при этом способ обработки не ограничен.[99] In step 301, the encoding side judges whether the characteristic information of the current block meets a specific condition. If the characteristic information of the current block meets the specific condition, step 302 is executed; and if the characteristic information of the current block does not meet the specific condition, it is not necessary to apply the motion vector correction method of the present application, and the processing method is not limited.

[100] В одном примере сторона кодирования может оценивать, соответствует ли характеристическая информация текущего блока особому условию, на основе закодированной информации. Если характеристическая информация текущего блока соответствует особому условию, это указывает на то, что информация о движении текущего блока недостаточно точна, в связи с чем включают (допускают) режим уточнения вектора движения и выполняют этап 302.[100] In one example, the encoding side may judge whether the characteristic information of the current block meets a particular condition based on the encoded information. If the characteristic information of the current block meets the special condition, it indicates that the motion information of the current block is not accurate enough, and therefore the motion vector refinement mode is turned on (enabled), and step 302 is performed.

[101] Если характеристическая информация текущего блока не соответствует особому условию, это указывает на то, что информация о движении текущего блока достаточно точна, поэтому режим уточнения вектора движения не разрешают, и в режиме уточнения вектора движения по настоящей заявке нет необходимости.[101] If the characteristic information of the current block does not meet a special condition, this indicates that the motion information of the current block is sufficiently accurate, so the motion vector refinement mode is not allowed, and the motion vector refinement mode of the present application is not necessary.

[102] В одном примере характеристическая информация текущего блока включает в себя, помимо прочего, по меньшей мере одно из следующего: режим предсказания информации о движении, соответствующий текущему блоку; атрибут информации о движении, соответствующий текущему блоку; информацию о размере текущего блока.[102] In one example, the characteristic information of the current block includes, among other things, at least one of the following: a motion information prediction mode corresponding to the current block; a motion information attribute corresponding to the current block; information about the size of the current block.

[103] Варианты осуществления способа оценки соответствия характеристической информации текущего блока особому условию:[103] Embodiments of the method for assessing whether the characteristic information of the current block meets a particular condition:

[104] На этапе 302 сторона кодирования определяет первый опорный блок, соответствующий текущему блоку, из первого опорного кадра на основе первого исходного вектора движения текущего блока; и определяет второй опорный блок, соответствующий текущему блоку, из второго опорного кадра на основе второго исходного вектора движения текущего блока. Значение пикселя каждой пиксельной точки в первом опорном блоке именуется «первое значение пикселя», а значение пикселя каждой пиксельной точки во втором опорном блоке именуется «второе значение пикселя» для проведения различия между ними.[104] In step 302, the encoding side determines the first reference block corresponding to the current block from the first reference frame based on the first source motion vector of the current block; and determines a second reference block corresponding to the current block from the second reference frame based on the second source motion vector of the current block. The pixel value of each pixel point in the first reference block is referred to as the "first pixel value", and the pixel value of each pixel point in the second reference block is referred to as the "second pixel value" to differentiate between them.

[105] В одном примере, если текущий блок представляет собой блок, для которого применяют двунаправленное предсказание, то информация о движении текущего блока является двунаправленной с двумя опорными кадрами и двумя исходными векторами движения. Например, сторона кодирования может получать двунаправленную информацию о движении известным способом, который не ограничен. Двунаправленная информация о движении включает в себя первый опорный кадр и первый исходный вектор движения, второй опорный кадр и второй исходный вектор движения.[105] In one example, if the current block is a block for which bidirectional prediction is applied, then the motion information of the current block is bidirectional with two reference frames and two original motion vectors. For example, the encoding side may obtain bi-directional motion information in a known manner, which is not limited. The bidirectional motion information includes a first reference frame and a first source motion vector, a second reference frame and a second source motion vector.

[106] Сторона кодирования может определять первый опорный блок, соответствующий текущему блоку, из первого опорного кадра на основе первого исходного вектора движения, при этом значение пикселя каждой пиксельной точки в первом опорном блоке может именоваться «первое значение пикселя».[106] The encoding side may determine the first reference block corresponding to the current block from the first reference frame based on the first original motion vector, wherein the pixel value of each pixel point in the first reference block may be referred to as the "first pixel value".

[107] Сторона кодирования может определять второй опорный блок, соответствующий текущему блоку, из второго опорного кадра на основе второго исходного вектора движения, при этом значение пикселя каждой пиксельной точки во втором опорном блоке может именоваться «второе значение пикселя».[107] The encoding side may determine a second reference block corresponding to the current block from the second reference frame based on the second original motion vector, wherein the pixel value of each pixel point in the second reference block may be referred to as a “second pixel value”.

[108] В одном примере расстояние между текущим кадром, в котором расположен текущий блок, и первым опорным кадром и расстояние между вторым опорным кадром и текущим кадром, в котором расположен текущий блок, могут быть одинаковыми. Например, первый опорный кадр - это 1-й кадр, текущий кадр - это 5-й кадр, а второй опорный кадр - это 9-й кадр. Разумеется, выше приведен только один из примеров, и указанные два расстояния могут быть разными.[108] In one example, the distance between the current frame in which the current block is located and the first reference frame and the distance between the second reference frame and the current frame in which the current block is located may be the same. For example, the first key frame is the 1st frame, the current frame is the 5th frame, and the second key frame is the 9th frame. Of course, the above is just one example, and the two distances may be different.

[109] Первый и второй исходные векторы движения зеркально симметричны друг другу, например, первый исходный вектор движения имеет координаты (4, 4), а второй исходный вектор движения имеет координаты (-4, -4); первый исходный вектор движения имеет координаты (2.5, 3.5), а второй исходный вектор движения имеет координаты (-2.5, -3.5). Разумеется, выше приведен только один из примеров, и между первым и вторым исходными векторами движения может не быть зеркальной симметрии.[109] The first and second source motion vectors are mirror symmetrical to each other, for example, the first source motion vector has coordinates (4, 4), and the second source motion vector has coordinates (-4, -4); the first source motion vector has coordinates (2.5, 3.5) and the second source motion vector has coordinates (-2.5, -3.5). Of course, the above is only one of the examples, and there may not be mirror symmetry between the first and second initial motion vectors.

[110] Варианты осуществления способа определения первого и второго опорных блоков:[110] Embodiments of the method for determining the first and second reference blocks:

[111] На этапе 303 для каждого субблока текущего блока: сторона кодирования корректирует первый исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения субблока; и сторона кодирования корректирует второй исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения второго целевого вектора движения субблока.[111] In step 303, for each subblock of the current block: the encoding side adjusts the first source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain the first target motion vector of the subblock; and the encoding side corrects the second source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a second sub-block target motion vector.

[112] В одном примере, если для текущего блока включен (разрешен) режим уточнения вектора движения, сторона кодирования может выполнить тонкую корректировку первого и второго исходных векторов движения с применением способа локального поиска по первому и второму значениям пикселей для получения более корректных первого целевого вектора движения и второго целевого вектора движения, а затем на их основе сгенерировать значение предсказания с меньшим искажением.[112] In one example, if the motion vector refinement mode is enabled (enabled) for the current block, the encoding side may fine-tune the first and second source motion vectors using a local search method on the first and second pixel values to obtain more correct first target vector motion and the second target motion vector, and then generate a prediction value with less distortion based on them.

[113] В одном примере текущий блок может включать в себя по меньшей мере один субблок, при этом, если он включает в себя только один субблок, то этот субблок и является текущим блоком. Данный субблок соответствует первому и второму исходным векторам движения, а после их коррекции субблок соответствует первому и второму целевым векторам движения.[113] In one example, the current block may include at least one subblock, and if it includes only one subblock, then that subblock is the current block. This sub-block corresponds to the first and second source motion vectors, and after their correction, the sub-block corresponds to the first and second target motion vectors.

[114] Если текущий блок включает в себя субблок A и субблок B, то субблок A соответствует первому исходному вектору A1 движения и второму исходному вектору A2 движения, а после их коррекции субблок A соответствует первому целевому вектору A3 движения и второму целевому вектору A4 движения. Субблок B соответствует первому исходному вектору B1 движения и второму исходному вектору B2 движения, а после их коррекции субблок B соответствует первому целевому вектору B3 движения и второму целевому вектору B4 движения.[114] If the current block includes sub-block A and sub-block B, then sub-block A corresponds to the first source motion vector A1 and the second source motion vector A2, and after their correction, sub-block A corresponds to the first target motion vector A3 and the second target motion vector A4. The sub-block B corresponds to the first source motion vector B1 and the second source motion vector B2, and after their correction, the sub-block B corresponds to the first target motion vector B3 and the second target motion vector B4.

[115] Первый исходный вектор A1 движения, соответствующий субблоку A, и первый исходный вектор B1 движения, соответствующий субблоку B, могут быть одним и тем же и представлять собой первый исходный векторы движения текущего блока; второй исходный вектор A2 движения, соответствующий субблоку A, и второй исходный вектор B2 движения, соответствующий субблоку B, могут быть одним и тем же и представлять собой второй исходный вектор движения текущего блока.[115] The first original motion vector A1 corresponding to sub-block A and the first original motion vector B1 corresponding to sub-block B may be the same and be the first original motion vectors of the current block; the second source motion vector A2 corresponding to sub-block A and the second source motion vector B2 corresponding to sub-block B may be the same and be the second source motion vector of the current block.

[116] Так как первый исходный вектор движения каждого субблока корректируют по отдельности, первый целевой вектор A3 движения, соответствующий субблоку A, и первый целевой вектор B3 движения, соответствующий субблоку B, могут представлять собой один и тот же или разные векторы. Так как второй исходный вектор движения каждого субблока корректируют по отдельности, второй целевой вектор A4 движения, соответствующий субблоку A, и второй целевой вектор B4 движения, соответствующий субблоку B, могут представлять собой один и тот же или разные векторы.[116] Since the first source motion vector of each subblock is adjusted separately, the first target motion vector A3 corresponding to subblock A and the first target motion vector B3 corresponding to subblock B may be the same or different vectors. Since the second source motion vector of each subblock is adjusted separately, the second target motion vector A4 corresponding to subblock A and the second target motion vector B4 corresponding to subblock B may be the same or different vectors.

[117] Варианты осуществления способа коррекции исходных векторов движения, которые не будут детально раскрыты в настоящем параграфе, см. ниже.[117] Embodiments of the method for correcting the original motion vectors, which will not be detailed in this paragraph, see below.

[118] На этапе 304 сторона кодирования выполняет компенсацию движения для каждого субблока текущего блока на основе первого и второго целевых векторов движения. Например, если текущий блок включает в себя субблок A и субблок B, первый и второй целевые векторы движения субблока A могут служить для выполнения компенсации движения для субблока A, а первый и второй целевые векторы движения субблока B могут служить для выполнения компенсации движения для субблока B.[118] In step 304, the encoding side performs motion compensation for each subblock of the current block based on the first and second target motion vectors. For example, if the current block includes sub-block A and sub-block B, the first and second target motion vectors of sub-block A may serve to perform motion compensation for sub-block A, and the first and second target motion vectors of sub-block B may serve to perform motion compensation for sub-block B. .

[119] Варианты осуществления способа компенсации движения, которые не будут детально раскрыты в настоящем параграфе, см. ниже.[119] Embodiments of the motion compensation method, which will not be detailed in this paragraph, see below.

[120] На этапе 305 сторона кодирования сохраняет первый и второй целевые векторы движения каждого субблока текущего блока, при этом первый и второй целевые векторы движения применяют в качестве опорных для кодирования последующего блока.[120] In step 305, the encoding side stores the first and second target motion vectors of each subblock of the current block, with the first and second target motion vectors being used as references for encoding the subsequent block.

[121] Реализацию кодирования с помощью опорных векторов см. в нижеследующих вариантах осуществления, которые не будут детально раскрыты в настоящем параграфе.[121] For implementations of support vector coding, see the following embodiments, which will not be detailed in this paragraph.

[122] Вариант осуществления 3: на Фиг.4 представлена принципиальная схема последовательности способа кодирования и декодирования по варианту осуществления настоящей заявки, причем способ кодирования и декодирования применим к стороне декодирования, при этом способ кодирования и декодирования может включать в себя следующие этапы:[122] Embodiment 3: FIG. 4 is a flowchart of an encoding and decoding method according to an embodiment of the present application, wherein the encoding and decoding method is applicable to the decoding side, and the encoding and decoding method may include the following steps:

[123] На этапе 401 сторона декодирования оценивает, соответствует ли характеристическая информация текущего блока особому условию. Если характеристическая информация текущего блока соответствует особому условию, то выполняют этап 402, а если характеристическая информация текущего блока не соответствует особому условию, то нет необходимости в применении способа коррекции вектора движения по настоящей заявке, при этом способ обработки не ограничен.[123] In step 401, the decoding side judges whether the characteristic information of the current block meets a specific condition. If the characteristic information of the current block meets the special condition, then step 402 is executed, and if the characteristic information of the current block does not meet the special condition, then there is no need to apply the motion vector correction method of the present application, and the processing method is not limited.

[124] В одном примере сторона декодирования выполнена с возможностью приема битового потока, отправленного стороной кодирования, и определения того, соответствует ли характеристическая информация текущего блока особому условию, на основе декодированной информации. Если характеристическая информация текущего блока соответствует особому условию, это указывает на то, что информация о движении текущего блока недостаточно точная, в связи с чем включают режим уточнения вектора движения и выполняют этап 402. Если характеристическая информация текущего блока не соответствует особому условию, это указывает на то, что информация о движении текущего блока достаточно точна, поэтому режим уточнения вектора движения не включают, и в режиме уточнения вектора движения по настоящей заявке нет необходимости.[124] In one example, the decoding side is configured to receive the bitstream sent by the encoding side and determine whether the characteristic information of the current block meets a particular condition based on the decoded information. If the characteristic information of the current block meets the special condition, this indicates that the motion information of the current block is not accurate enough, and therefore the motion vector refinement mode is turned on and step 402 is performed. If the characteristic information of the current block does not meet the special condition, this indicates that the motion information of the current block is accurate enough, therefore, the motion vector refinement mode is not turned on, and the motion vector refinement mode is not necessary in the present application.

[125] На этапе 402 сторона декодирования определяет первый опорный блок, соответствующий текущему блоку, из первого опорного кадра на основе первого исходного вектора движения текущего блока; и определяет второй опорный блок, соответствующий текущему блоку, из второго опорного кадра на основе второго исходного вектора движения текущего блока. Значение пикселя каждой пиксельной точки в первом опорном блоке именуется «первое значение пикселя», а значение пикселя каждой пиксельной точки во втором опорном блоке именуется «второе значение пикселя» для проведения различия между ними.[125] In step 402, the decoding side determines the first reference block corresponding to the current block from the first reference frame based on the first source motion vector of the current block; and determines a second reference block corresponding to the current block from the second reference frame based on the second source motion vector of the current block. The pixel value of each pixel point in the first reference block is referred to as the "first pixel value", and the pixel value of each pixel point in the second reference block is referred to as the "second pixel value" to differentiate between them.

[126] На этапе 403 для каждого субблока текущего блока: сторона декодирования корректирует первый исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения субблока; и сторона декодирования корректирует второй исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения второго целевого вектора движения субблока.[126] In step 403, for each subblock of the current block: the decoding side adjusts the first source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain the first target motion vector of the subblock; and the decoding side corrects the second source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a second sub-block target motion vector.

[127] На этапе 404 сторона декодирования выполняет компенсацию движения для каждого субблока текущего блока на основе первого и второго целевых векторов движения субблока.[127] In step 404, the decoding side performs motion compensation for each subblock of the current block based on the first and second target motion vectors of the subblock.

[128] На этапе 405 сторона декодирования сохраняет первый и второй целевые векторы движения каждого субблока текущего блока, при этом первый и второй целевые векторы движения применяют в качестве опорных для кодирования последующего блока.[128] In step 405, the decoding side stores the first and second target motion vectors of each sub-block of the current block, with the first and second target motion vectors used as references for encoding the subsequent block.

[129] Вариант осуществления 4: на этапе 301 и этапе 401 оценивают, соответствует ли характеристическая информация текущего блока особому условию. В данном варианте осуществления, если характеристическая информация соответствует всем следующим условиям, определяют, что характеристическая информация текущего блока соответствует особому условию, и включают режим уточнения вектора движения. В ином случае режим уточнения вектора движения не включают.[129] Embodiment 4: In step 301 and step 401, it is judged whether the characteristic information of the current block meets a specific condition. In this embodiment, if the characteristic information meets all of the following conditions, it is determined that the characteristic information of the current block meets the specific condition, and the motion vector refinement mode is turned on. Otherwise, the motion vector refinement mode is not turned on.

[130] Атрибут информации о движении, соответствующий текущему блоку, включает в себя следующее: непосредственное мультиплексирование в текущем блоке информации о движении окружающих блоков без кодирования разности информации о движении. Атрибут информации о движении, соответствующий текущему блоку, включает в себя следующее: информация о движении каждого субблока текущего блока является одной и той же, т.е. без применения режима предсказания информации о движении субблока. Атрибут информации о движении, соответствующий текущему блоку, включает в себя следующее: информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях. Информация о размере текущего блока включает в себя: размер текущего блока находится в пределах определенного диапазона, как будет раскрыто в нижеследующих вариантах осуществления.[130] The motion information attribute corresponding to the current block includes the following: directly multiplexing in the current block the motion information of the surrounding blocks without encoding the motion information difference. The motion information attribute corresponding to the current block includes the following: the motion information of each sub-block of the current block is the same, i. e. without applying the sub-block motion information prediction mode. The motion information attribute corresponding to the current block includes the following: the motion information of the current block includes motion information in two different directions. The information about the size of the current block includes: the size of the current block is within a certain range, as will be disclosed in the following embodiments.

[131] Вариант осуществления 5: на этапе 301 и этапе 401 оценивают, соответствует ли характеристическая информация текущего блока особому условию. В данном варианте осуществления, если характеристическая информация соответствует всем следующим условиям, определяют, что характеристическая информация текущего блока соответствует особому условию, и включают режим уточнения вектора движения. В ином случае режим уточнения вектора движения не включают.[131] Embodiment 5: In step 301 and step 401, it is judged whether the characteristic information of the current block meets a particular condition. In this embodiment, if the characteristic information meets all of the following conditions, it is determined that the characteristic information of the current block meets the specific condition, and the motion vector refinement mode is turned on. Otherwise, the motion vector refinement mode is not turned on.

[132] Режим предсказания информации о движении, соответствующий текущему блоку, включает в себя стандартный режим слияния (англ. Regular merge mode) или режим CIIP (а именно режим слияния для генерирования нового значения предсказания путем объединения значения межкадрового предсказания и значения внутрикадрового предсказания); в качестве альтернативы, режим предсказания информации о движении, соответствующий текущему блоку, не включает в себя режим MMVD (т.е. режим слияния для кодирования значений разности информации о движении), режим слияния SB (т.е. режим слияния для применения информации о движении субблока) или режим TPM (т.е. режим слияния для предсказания по треугольнику).[132] The motion information prediction mode corresponding to the current block includes a regular merge mode or a CIIP mode (namely, a merge mode for generating a new prediction value by combining an inter prediction value and an intra prediction value); alternatively, the motion information prediction mode corresponding to the current block does not include an MMVD mode (i.e., a merge mode for encoding motion information difference values), an SB merge mode (i.e., a merge mode for applying motion information subblock motion) or TPM mode (i.e. merge mode for triangle prediction).

[133] Атрибут информации о движении, соответствующий текущему блоку, включает в себя следующее: информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, при этом расстояния между текущим кадром и каждым из двух опорных кадров, соответствующих информации о движении в двух разных направлениях, являются одинаковыми. Информация о размере текущего блока включает в себя: размер текущего блока находится в пределах определенного диапазона.[133] The motion information attribute corresponding to the current block includes the following: the motion information of the current block includes motion information in two different directions, wherein the distances between the current frame and each of the two reference frames corresponding to the motion information in two different directions are the same. Information about the size of the current block includes: the size of the current block is within a certain range.

[134] Следует отметить, что режим слияния включает в себя, помимо прочего, следующие типы режимов слияния: стандартный режим слияния (т.е. стандартный режим слияния); режим слияния для предсказания по треугольнику (режим TPM); режим слияния для кодирования значений разности информации о движении (режим MMVD); режим слияния для применения информации о движении субблока (режим слияния SB); и режим слияния для генерирования нового значения предсказания путем объединения значения межкадрового предсказания и значения внутрикадрового предсказания (режим CIIP).[134] It should be noted that the merge mode includes, but is not limited to, the following types of merge modes: standard merge mode (i.e., standard merge mode); merge mode for triangle prediction (TPM mode); a merge mode for encoding motion information difference values (MMVD mode); a merging mode for applying sub-unit motion information (SB merging mode); and a merge mode for generating a new prediction value by combining the inter prediction value and the intra prediction value (CIIP mode).

[135] В одном примере стандартный режим слияния включает в себя стандартный режим слияния, в котором остатки не кодируют (т.е. режим пропуска) и стандартный режим слияния, в котором остатки кодируют. Режим MMVD включает в себя режим MMVD, в котором остаток не кодируют.[135] In one example, the standard merge mode includes a standard merge mode in which residues are not encoded (ie, skip mode) and a standard merge mode in which residues are encoded. The MMVD mode includes an MMVD mode in which the remainder is not encoded.

[136] Вариант осуществления 6: на этапе 301 и этапе 401 оценивают, соответствует ли характеристическая информация текущего блока особому условию. В данном варианте осуществления, если характеристическая информация соответствует всем следующим условиям, определяют, что характеристическая информация текущего блока соответствует особому условию, и включают режим уточнения вектора движения. В ином случае режим уточнения вектора движения не включают.[136] Embodiment 6: In step 301 and step 401, it is judged whether the characteristic information of the current block meets a particular condition. In this embodiment, if the characteristic information meets all of the following conditions, it is determined that the characteristic information of the current block meets the specific condition, and the motion vector refinement mode is turned on. Otherwise, the motion vector refinement mode is not turned on.

[137] Режим предсказания информации о движении, соответствующий текущему блоку, включает в себя стандартный режим слияния (т.е. стандартный режим слияния), режим CIIP (а именно режим слияния для генерирования нового значения предсказания путем объединения значения межкадрового предсказания и значения внутрикадрового предсказания) или режим TPM (т.е. режим слияния для предсказания по треугольнику); в качестве альтернативы, режим предсказания информации о движении, соответствующий текущему блоку, не включает в себя режим MMVD (т.е. режим слияния для кодирования значений разности информации о движении) или режим слияния SB (т.е. режим слияния для применения информации о движении субблока).[137] The motion information prediction mode corresponding to the current block includes a standard merge mode (i.e., a standard merge mode), a CIIP mode (namely, a merge mode for generating a new prediction value by combining an inter prediction value and an intra prediction value ) or TPM mode (i.e. merge mode for triangle prediction); alternatively, the motion information prediction mode corresponding to the current block does not include an MMVD mode (i.e., a merge mode for encoding motion information difference values) or an SB merge mode (i.e., a merge mode for applying motion information). subblock movement).

[138] Атрибут информации о движении, соответствующий текущему блоку, включает в себя следующее: информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, при этом расстояния между текущим кадром и каждым из двух опорных кадров, соответствующих информации о движении в двух разных направлениях, являются одинаковыми. Информация о размере текущего блока включает в себя: размер текущего блока находится в пределах определенного диапазона.[138] The motion information attribute corresponding to the current block includes the following: the motion information of the current block includes motion information in two different directions, wherein the distances between the current frame and each of the two reference frames corresponding to the motion information in two different directions are the same. Information about the size of the current block includes: the size of the current block is within a certain range.

[139] Вариант осуществления 7: на этапе 301 и этапе 401 оценивают, соответствует ли характеристическая информация текущего блока особому условию. В данном варианте осуществления, если характеристическая информация соответствует всем следующим условиям, определяют, что характеристическая информация текущего блока соответствует особому условию, и включают режим уточнения вектора движения. В ином случае режим уточнения вектора движения не включают.[139] Embodiment 7: In step 301 and step 401, it is judged whether the characteristic information of the current block meets a particular condition. In this embodiment, if the characteristic information meets all of the following conditions, it is determined that the characteristic information of the current block meets the specific condition, and the motion vector refinement mode is turned on. Otherwise, the motion vector refinement mode is not turned on.

[140] Режим предсказания информации о движении, соответствующий текущему блоку, включает в себя стандартный режим слияния (т.е. стандартный режим слияния), режим CIIP (а именно режим слияния для генерирования нового значения предсказания путем объединения значения межкадрового предсказания и значения внутрикадрового предсказания), режим TPM (т.е. режим слияния для предсказания по треугольнику) или режим MMVD (т.е. режим слияния для кодирования значений разности информации о движении); в качестве альтернативы, режим предсказания информации о движении, соответствующий текущему блоку, не включает в себя режим слияния SB (т.е. режим слияния для применения информации о движении субблока).[140] The motion information prediction mode corresponding to the current block includes a standard merge mode (i.e., a standard merge mode), a CIIP mode (namely, a merge mode for generating a new prediction value by combining an inter prediction value and an intra prediction value ), TPM mode (i.e., merge mode for triangle prediction), or MMVD mode (i.e., merge mode for encoding motion information difference values); alternatively, the motion information prediction mode corresponding to the current block does not include the SB merge mode (ie, the merge mode for applying sub-block motion information).

[141] Атрибут информации о движении, соответствующий текущему блоку, включает в себя следующее: информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, при этом расстояния между текущим кадром и каждым из двух опорных кадров, соответствующих информации о движении в двух разных направлениях, являются одинаковыми. Информация о размере текущего блока включает в себя: размер текущего блока находится в пределах определенного диапазона.[141] The motion information attribute corresponding to the current block includes the following: the motion information of the current block includes motion information in two different directions, wherein the distances between the current frame and each of the two reference frames corresponding to the motion information in two different directions are the same. Information about the size of the current block includes: the size of the current block is within a certain range.

[142] Вариант осуществления 8: на этапе 301 и этапе 401 оценивают, соответствует ли характеристическая информация текущего блока особому условию. В данном варианте осуществления, если характеристическая информация соответствует всем следующим условиям, определяют, что характеристическая информация текущего блока соответствует особому условию, и включают режим уточнения вектора движения. В ином случае режим уточнения вектора движения не включают.[142] Embodiment 8: In step 301 and step 401, it is judged whether the characteristic information of the current block meets a particular condition. In this embodiment, if the characteristic information meets all of the following conditions, it is determined that the characteristic information of the current block meets the specific condition, and the motion vector refinement mode is turned on. Otherwise, the motion vector refinement mode is not turned on.

[143] Режим предсказания информации о движении, соответствующий текущему блоку, включает в себя стандартный режим слияния или режим CIIP; режим предсказания информации о движении, соответствующий текущему блоку, не включает в себя режим MMVD, режим слияния SB или режим TPM; в качестве альтернативы, режим предсказания информации о движении, соответствующий текущему блоку, включает в себя стандартный режим слияния, режим CIIP или режим TPM; режим предсказания информации о движении, соответствующий текущему блоку, не включает в себя режим MMVD или режим слияния SB; в качестве альтернативы, режим предсказания информации о движении, соответствующий текущему блоку, включает в себя стандартный режим слияния, режим CIIP, или режим TPM, или режим MMVD; режим предсказания информации о движении, соответствующий текущему блоку, не включает в себя режим слияния SB.[143] The motion information prediction mode corresponding to the current block includes a standard merge mode or a CIIP mode; the motion information prediction mode corresponding to the current block does not include the MMVD mode, the SB merge mode, or the TPM mode; alternatively, the motion information prediction mode corresponding to the current block includes a standard merge mode, a CIIP mode, or a TPM mode; the motion information prediction mode corresponding to the current block does not include the MMVD mode or the SB merge mode; alternatively, the motion information prediction mode corresponding to the current block includes a standard merge mode, a CIIP mode, or a TPM mode, or an MMVD mode; the motion information prediction mode corresponding to the current block does not include the SB merge mode.

[144] Атрибут информации о движении, соответствующий текущему блоку, включает в себя следующее: информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, при этом отсутствует ограничение, состоящее в том, что расстояния между текущим кадром и каждым из двух опорных кадров, соответствующих информации о движении в двух разных направлениях, являются одинаковыми, т.е. данное ограничивающее условие снято. Информация о размере текущего блока включает в себя: размер текущего блока находится в пределах определенного диапазона.[144] The motion information attribute corresponding to the current block includes the following: the motion information of the current block includes motion information in two different directions, and there is no limitation that the distances between the current frame and each of two reference frames corresponding to motion information in two different directions are the same, i.e. this limiting condition has been removed. Information about the size of the current block includes: the size of the current block is within a certain range.

[145] Вариант осуществления 9: касательно того, что «размер текущего блока находится в пределах определенного диапазона» в раскрытых выше вариантах осуществления 4 - 8: если размер текущего блока соответствует следующему условию, определяют, что размер текущего блока находится в пределах определенного диапазона.[145] Embodiment 9: Regarding "the size of the current block is within a certain range" in the above-disclosed Embodiments 4 to 8: if the size of the current block meets the following condition, it is determined that the size of the current block is within a certain range.

[146] Значение ширины текущего блока находится в пределах диапазона [первый порог, второй порог], причем первый порог может составлять 4, а второй порог может составлять 128. Высота текущего блока находится в пределах диапазона [третий порог, четвертый порог], причем третий порог может составлять 8, а четвертый порог может составлять 128. Например, каждый из первого порога, второго порога, третьего порога и четвертого порога может составлять 2n, где n целое число не меньше 1. Площадь текущего блока находится в пределах диапазона [пятый порог, шестой порог], причем пятый порог может составлять 64, а шестой порог может составлять 128*128= 16384. Например, и пятый порог, и шестой порог могут составлять 4m, где m целое число не меньше 1. В приведенном выше примере выражение [a, b] может представлять значение не меньше a и не больше b.[146] The width value of the current block is within the range of [first threshold, second threshold], wherein the first threshold may be 4 and the second threshold may be 128. The height of the current block is within the range of [third threshold, fourth threshold], wherein the third the threshold may be 8 and the fourth threshold may be 128. For example, each of the first threshold, second threshold, third threshold, and fourth threshold may be 2n , where n is an integer greater than or equal to 1. The area of the current block is within the range [fifth threshold , sixth threshold] where the fifth threshold could be 64 and the sixth threshold could be 128*128= 16384. For example, both the fifth threshold and the sixth threshold could be 4 m , where m is an integer greater than or equal to 1. In the above example, the expression [a, b] can represent a value no less than a and no greater than b.

[147] Вариант осуществления 10: на этапе 302 и этапе 402 определяют первый опорный блок, соответствующий текущему блоку, из первого опорного кадра на основе первого исходного вектора движения, при этом значение пикселя каждой пиксельной точки в первом опорном блоке именуется «первое значение пикселя»; определяют второй опорный блок, соответствующий текущему блоку, из второго опорного кадра на основе второго исходного вектора движения, при этом значение пикселя каждой пиксельной точки во втором опорном блоке именуется «второе значение пикселя», как раскрыто ниже.[147] Embodiment 10: At step 302 and step 402, the first reference block corresponding to the current block is determined from the first reference frame based on the first source motion vector, wherein the pixel value of each pixel point in the first reference block is referred to as the "first pixel value" ; determining a second reference block corresponding to the current block from the second reference frame based on the second source motion vector, wherein the pixel value of each pixel point in the second reference block is referred to as the "second pixel value", as discussed below.

[148] Первое значение пикселя каждой пиксельной точки в первом опорном блоке получают путем интерполяции значений пикселей примыкающих пиксельных точек в первом опорном блоке или получают путем копирования значений пикселей примыкающих пиксельных точек в первом опорном блоке; второе значение пикселя каждой пиксельной точки во втором опорном блоке получают путем интерполяции значений пикселей примыкающих пиксельных точек во втором опорном блоке или получают путем копирования значений пикселей примыкающих пиксельных точек во втором опорном блоке. Размер первого опорного блока равен размеру второго опорного блока, значение ширины первого/второго опорного блока определяют по значению ширины текущего блока и диапазону поиска, а значение высоты первого/второго опорного блока определяют по значению высоты текущего блока и диапазону поиска.[148] The first pixel value of each pixel point in the first reference block is obtained by interpolating the pixel values of the adjacent pixel points in the first reference block, or obtained by copying the pixel values of the adjacent pixel points in the first reference block; the second pixel value of each pixel point in the second reference block is obtained by interpolating the pixel values of adjacent pixel points in the second reference block, or obtained by copying the pixel values of adjacent pixel points in the second reference block. The size of the first reference block is equal to the size of the second reference block, the width value of the first/second reference block is determined from the width value of the current block and the search range, and the height value of the first/second reference block is determined from the height value of the current block and the search range.

[149] На Фиг.5, если текущий блок имеет ширину W и высоту H, то первый исходный вектор движения обозначают MV0, а второй исходный вектор движения обозначают MV1. Целопиксельный блок площадью (W+FS-1)*(H+FS-1) получают на основе соответствующего положения первого исходного вектора MV0 движения в первом опорном кадре, при этом целопиксельный блок обозначают как целопиксельный блок A. Целопиксельный блок площадью (W+FS-1)*(H+FS-1) получают на основе соответствующего положения второго исходного вектора MV1 движения во втором опорном кадре, при этом целопиксельный блок обозначают как целопиксельный блок B.[149] In Fig. 5, if the current block has a width W and a height H, then the first source motion vector is designated MV0 and the second source motion vector is designated MV1. An integer pixel block of area (W+FS-1)*(H+FS-1) is obtained based on the corresponding position of the first source motion vector MV0 in the first reference frame, the integer pixel block being referred to as integer pixel block A. An integer pixel block of area (W+FS -1)*(H+FS-1) is obtained based on the corresponding position of the second source motion vector MV1 in the second reference frame, the integer pixel block being referred to as integer pixel block B.

[150] В одном примере, на основе целопиксельного блока A площадью (W+FS-1)*(H+FS-1) можно получить исходный блок опорных пикселей размером (W +2*SR)*(H +2*SR) путем билинейной интерполяции, при этом исходный блок опорных пикселей можно обозначить «первый опорный блок». На основе целопиксельного блока B площадью (W+FS-1)*(H+FS-1) можно получить исходный блок опорных пикселей размером (W +2*SR)*(H +2*SR) путем билинейной интерполяции, при этом исходный блок опорных пикселей можно обозначить как «второй опорный блок».[150] In one example, based on an integer block A of area (W+FS-1)*(H+FS-1), an original block of reference pixels of size (W +2*SR)*(H +2*SR) can be obtained by bilinear interpolation, wherein the original block of reference pixels may be referred to as "first reference block". On the basis of an integer block B of area (W+FS-1)*(H+FS-1), you can get the original block of reference pixels of size (W +2*SR)*(H +2*SR) by bilinear interpolation, while the original the block of reference pixels can be referred to as the "second reference block".

[151] В другом примере на основе целопиксельного блока A площадью (W+FS-1)*(H+FS-1) можно получить исходный блок опорных пикселей размером (W +2*SR)*(H +2*SR) путем непосредственного копирования (без интерполяции), при этом исходный блок опорных пикселей можно обозначить как «первый опорный блок». На основе целопиксельного блока B площадью (W+FS-1)*(H+FS-1), можно получить исходный блок опорных пикселей размером (W +2*SR)*(H +2*SR) путем непосредственного копирования, при этом исходный блок опорных пикселей можно обозначить как «второй опорный блок».[151] In another example, based on an integer block A of area (W+FS-1)*(H+FS-1), an original block of reference pixels of size (W +2*SR)*(H +2*SR) can be obtained by direct copying (without interpolation), while the original block of reference pixels can be referred to as the "first reference block". Based on the whole-pixel block B of area (W+FS-1)*(H+FS-1), you can get the original block of reference pixels of size (W +2*SR)*(H +2*SR) by direct copying, while the original block of reference pixels can be referred to as the "second reference block".

[152] Например, только для яркостной составляющей (поскольку в последующем процессе поиска для упрощения будет происходить вычисление значения стоимости только по яркостной составляющей), можно получить исходные блоки опорных пикселей размером (W +2*SR)*(H +2*SR) на основе целопиксельных блоков (например, целопиксельного блока A и целопиксельного блока B) площадью (W+FS-1)*(H+FS-1), т.е. первый опорный блок (например, Pred_Inter0) и второй опорный блок (например, Pred_Inter1).[152] For example, for the luminance component only (since in the subsequent search process, for simplicity, the cost value will be calculated only for the luminance component), you can get the original blocks of reference pixels of size (W + 2 * SR) * (H + 2 * SR) based on integer pixel blocks (for example, integer pixel block A and integer pixel block B) of area (W+FS-1)*(H+FS-1), i.e. the first reference block (eg Pred_Inter0) and the second reference block (eg Pred_Inter1).

[153] В одном примере FS может представлять собой число отводов интерполяционного фильтра, например FS может составлять 8 и т.д.[153] In one example, FS may be the number of interpolation filter taps, such as FS may be 8, and so on.

[154] Получение первого/второго опорных блоков путем билинейной интерполяции состоит в том, что получают значение пикселя каждой пиксельной точки в первом/втором опорном блоке путем интерполяции значений пикселей примыкающих пиксельных точек в первом/втором опорном блоке, но не ограничено этим. Получение первого/второго опорных блоков путем копирования состоит в том, что значение пикселя каждой пиксельной точки в первом/втором опорном блоке получают путем копирования значений пикселей примыкающих пиксельных точек в первом/втором опорном блоке, но не ограничено этим.[154] Obtaining the first/second reference blocks by bilinear interpolation is to obtain the pixel value of each pixel point in the first/second reference block by interpolating the pixel values of adjacent pixel points in the first/second reference block, but is not limited to this. Obtaining the first/second reference blocks by copying is that the pixel value of each pixel point in the first/second reference block is obtained by copying the pixel values of adjacent pixel points in the first/second reference block, but is not limited to this.

[155] В вышеуказанном варианте осуществления первый опорный блок имеет площадь (W +2*SR)*(H +2*SR), второй опорный блок имеет площадь (W +2*SR)*(H +2*SR), то есть значение ширины первого/второго опорного блока составляет W +2*SR, а значение высоты первого/второго опорного блока составляет H +2*SR. W - это ширина текущего блока, H - это высота текущего блока, SR - диапазон поиска, т.е. число итераций в нижеследующих вариантах осуществления; таким образом, SR - это максимальная интерполяциях по горизонтальным/вертикальным компонентам целевого вектора движения и исходного вектора движения, например SR может составлять 2 и т.д.[155] In the above embodiment, the first reference block has an area of (W+2*SR)*(H+2*SR), the second reference block has an area of (W+2*SR)*(H+2*SR), then there is a width value of the first/second reference block is W+2*SR, and a height value of the first/second reference block is H+2*SR. W is the width of the current block, H is the height of the current block, SR is the search range, i.e. the number of iterations in the following embodiments; thus, SR is the maximum interpolation over the horizontal/vertical components of the target motion vector and the source motion vector, eg SR could be 2, and so on.

[156] Первый и второй опорные блоки применяют для коррекции вектора движения в последующем процессе.[156] The first and second reference blocks are used to correct the motion vector in the subsequent process.

[157] Вариант осуществления 11: на этапе 303 и этапе 403 для каждого субблока текущего блока корректируют первый исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения субблока; при этом корректируют второй исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения второго целевого вектора движения субблока.[157] Embodiment 11: in step 303 and step 403, for each sub-block of the current block, adjust the first source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain the first target motion vector of the sub-block; while correcting the second source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain the second target motion vector of the subblock.

[158] В качестве примера, процесс коррекции исходного вектора движения раскрыт в виде процедуры обработки одного субблока (например, каждого субблока размером dx*dy текущего блока, например, субблока размером 16*16 или меньшего блока).[158] As an example, the original motion vector correction process is disclosed as a procedure for processing one sub-block (eg, each sub-block of size dx*dy of the current block, for example, a sub-block of 16*16 or smaller block).

[159] На этапе a1 первый исходный вектор движения или второй исходный вектор движения определяют в качестве центрального вектора движения.[159] In step a1, the first original motion vector or the second original motion vector is determined as the center motion vector.

[160] Например, если первый исходный вектор движения имеет координаты (4, 4), а второй исходный вектор движения имеет координаты (-4, -4), то первый исходный вектор движения (4, 4) или второй исходный вектор движения (-4, -4) можно определить в качестве центрального вектора движения. Для удобства раскрытия, в качестве центрального вектора движения определяют, например, первый исходный вектор движения (4, 4), при этом методика определения второго исходного вектора движения (-4, -4) в качестве центрального вектора движения является аналогичной.[160] For example, if the first source motion vector has coordinates (4, 4) and the second source motion vector has coordinates (-4, -4), then the first source motion vector (4, 4) or the second source motion vector (- 4, -4) can be defined as the central motion vector. For convenience of disclosure, for example, the first original motion vector (4, 4) is determined as the central motion vector, while the procedure for determining the second initial motion vector (-4, -4) as the central motion vector is similar.

[161] На этапе a2 определяют краевой вектор движения, соответствующий центральному вектору движения.[161] In step a2, an edge motion vector corresponding to the center motion vector is determined.

[162] Например, центральный вектор (x, y) движения сдвигают в разных направлениях на S и последовательно получают краевой вектор (x, y+S) движения, краевой вектор (x, y-S) движения, краевой вектор (x+ S, y) движения, краевой вектор (x-S, y) движения и краевой вектор (x+ вправо, y+ вниз) движения в разных направлениях, причем значение «вправо» может составлять S или -S, а значение «вниз» может составлять S или -S, при этом определение значений «вправо» и «вниз» раскрыто в нижеследующих вариантах осуществления.[162] For example, the center motion vector (x, y) is shifted in different directions by S, and edge motion vector (x, y+S), edge motion vector (x, y-S), edge vector (x+ S, y) movement, an edge vector (x-S, y) of movement, and an edge vector (x+ right, y+ down) of movement in different directions, where the value "right" can be S or -S, and the value "down" can be S or -S, with the definition of the values "right" and "down" are disclosed in the following embodiments.

[163] На Фиг.6, например, если центральный вектор (x, y) движения принят в качестве центра, то есть центральный вектор движения имеет координаты (0, 0), S составляет 1, а значения «вправо» и «вниз» составляют 1, то в число краевых векторов движения, соответствующих центральному вектору (0, 0) движения, входят: краевой вектор (0, 1) движения, краевой вектор (0, -1) движения, краевой вектор (1, 0) движения, краевой вектор (-1, 0) движения и краевой вектор (1, 1) движения.[163] In Fig. 6, for example, if the central motion vector (x, y) is taken as the center, that is, the central motion vector has coordinates (0, 0), S is 1, and the values "right" and "down" are 1, then the number of edge motion vectors corresponding to the central motion vector (0, 0) includes: edge vector (0, 1) motion, edge vector (0, -1) motion, edge vector (1, 0) motion, edge vector (-1, 0) of motion and edge vector (1, 1) of motion.

[164] На этапе a3 получают первое значение стоимости, соответствующее центральному вектору движения, и второе значение стоимости, соответствующее каждому краевому вектору движения, на основе первого значения пикселя первого опорного блока и второго значения пикселя второго опорного блока.[164] In step a3, a first cost value corresponding to the center motion vector and a second cost value corresponding to each edge motion vector are obtained based on the first pixel value of the first reference block and the second pixel value of the second reference block.

[165] Например, опорный субблок A1, соответствующий центральному вектору (0, 0) движения, получают путем копирования из первого опорного блока, при этом опорный субблок A1 представляет собой опорный субблок центрального вектора (0, 0) движения в первом опорном блоке. Размер опорного субблока A1 - это размер текущего блока, при этом опорный субблок A1 является наиболее близким к центру блоком W*H в первом опорном блоке.[165] For example, the reference subblock A1 corresponding to the central motion vector (0, 0) is obtained by copying from the first reference block, wherein the reference subblock A1 is the reference subblock of the central motion vector (0, 0) in the first reference block. The size of the reference sub-block A1 is the size of the current block, with the reference sub-block A1 being the closest to the center block W*H in the first reference block.

[166] Опорный субблок B1, соответствующий центральному вектору (0, 0) движения, получают путем копирования из второго опорного блока, при этом опорный субблок B1 представляет собой опорный субблок центрального вектора (0, 0) движения во втором опорном блоке. Размер опорного субблока B1 - это размер текущего блока, при этом опорный субблок B1 является наиболее близким к центру блоком W*H во втором опорном блоке.[166] Reference subblock B1 corresponding to the center motion vector (0, 0) is obtained by copying from the second reference block, wherein reference subblock B1 is the reference subblock of the central motion vector (0, 0) in the second reference block. The B1 reference subblock size is the size of the current block, with the B1 reference subblock being the closest to the center W*H block in the second reference block.

[167] Далее получают значение 1 стоимости, соответствующее центральному вектору (0, 0) движения, на основе первого значения пикселя опорного субблока A1 и второго значения пикселя опорного субблока B1; способ определения значения стоимости раскрыт в нижеследующих вариантах осуществления.[167] Next, a cost value 1 corresponding to the center motion vector (0, 0) is obtained based on the first pixel value of the reference subblock A1 and the second pixel value of the reference subblock B1; the value value determination method is disclosed in the following embodiments.

[168] Опорный субблок A2, (0, 1) движения получают путем копирования из первого опорного блока, при этом опорный субблок A2 представляет собой опорный субблок краевого вектора (0, 1) движения в первом опорном блоке. Размер опорного субблока A2 - это размер текущего блока, при этом опорный субблок A2 является наиболее близким к центру блоком W*H в первом опорном блоке.[168] Reference subblock A2, (0, 1) motion is obtained by copying from the first reference block, wherein reference subblock A2 is the reference subblock of edge vector (0, 1) motion in the first reference block. The size of the reference sub-block A2 is the size of the current block, with the reference sub-block A2 being the W*H block closest to the center in the first reference block.

[169] Опорный субблок B2, соответствующий вектору (0, -1) движения, симметричному краевому вектору (0, 1) движения, получают путем копирования из второго опорного блока, при этом опорный субблок B2 представляет собой опорный субблок симметричного вектора (0, -1) движения во втором опорном блоке. Размер опорного субблока B2, представляющего собой блок W*H во втором опорном блоке, это размер текущего блока, при.[169] Reference subblock B2 corresponding to motion vector (0, -1) symmetric edge vector (0, 1) of motion is obtained by copying from the second reference block, wherein reference subblock B2 is a reference subblock of symmetric vector (0, - 1) movement in the second support block. The size of the reference subblock B2, which is the W*H block in the second reference block, is the size of the current block, at.

[170] Далее получают значение стоимости 2, соответствующее краевому вектору (0, 1) движения, на основе первого значения пикселя опорного субблока A2 и второго значения пикселя опорного субблока B2, при этом способ определения значения стоимости раскрыт в нижеследующих вариантах осуществления.[170] Next, a cost value of 2 corresponding to an edge motion vector (0, 1) is obtained based on the first pixel value of the reference subblock A2 and the second pixel value of the reference subblock B2, and the cost value determination method is disclosed in the following embodiments.

[171] Согласно данному способу можно определить значение 2 стоимости, соответствующее краевому вектору (0, 1) движения, значение 3 стоимости, соответствующее краевому вектору (0, -1) движения, значение 4 стоимости, соответствующее краевому вектору (1, 0) движения, значение 5 стоимости, соответствующее краевому вектору (-1, 0) движения и значение 6 стоимости, соответствующее краевому вектору (1, 1) движения.[171] According to this method, it is possible to determine a cost value 2 corresponding to the edge motion vector (0, 1), a cost value 3 corresponding to the motion edge vector (0, −1), a cost value 4 corresponding to the motion edge vector (1, 0). , a cost value 5 corresponding to the edge vector (-1, 0) of the motion, and a cost value 6 corresponding to the edge vector (1, 1) of the motion.

[172] На этапе a4: выбирают вектор движения из центрального вектора движения и краевого вектора движения в качестве оптимального вектора движения на основе первого значения стоимости и второго значения стоимости. Например, вектор движения с наименьшим значением стоимости может служить в качестве оптимального вектора движения. Например, если значение 2 стоимости, соответствующее краевому вектору (0, 1) движения, является минимальным, краевой вектор (0, 1) движения, соответствующий значению 2 стоимости, может служить в качестве оптимального вектора движения.[172] In step a4: a motion vector is selected from the center motion vector and the edge motion vector as the optimal motion vector based on the first cost value and the second cost value. For example, the motion vector with the lowest cost value can serve as the optimal motion vector. For example, if the cost value 2 corresponding to the edge motion vector (0, 1) is the minimum, the edge motion vector (0, 1) corresponding to the cost value 2 can serve as the optimal motion vector.

[173] На этапе a5: оценивают соответствие конечному условию; в случае несоответствия конечному условию, оптимальный вектор движения определяют в качестве центрального вектора движения, совершают возврат на этап a2 и его выполнение; в случае соответствия конечному условию, выполняют этап a6.[173] At step a5: evaluate compliance with the end condition; in case of non-compliance with the end condition, the optimal motion vector is determined as the central motion vector, return to step a2 and its execution; if the end condition is met, step a6 is performed.

[174] В одном примере, при достижении порога числа итераций / диапазона поиска, имеет место соответствие конечному условию; если порог числа итераций / диапазона поиска не достигнут, имеет место несоответствие конечному условию. Например, если значение диапазона поиска (SR, англ. search range) составляет 2, т.е. значение порога составляет 2, разрешенное число итераций составляет два. Если число итераций / значение диапазона поиска достигнет 2, т.е. этапы a2 - a4 будут выполнены дважды, то имеет место соответствие конечному условию; в ином случае имеет место несоответствие конечному условию.[174] In one example, when a threshold of iterations/search range is reached, the end condition is met; if the threshold for the number of iterations / search range is not reached, there is a mismatch in the end condition. For example, if the value of the search range (SR, English search range) is 2, i.e. the threshold value is 2, the allowed number of iterations is two. If the number of iterations / search range value reaches 2, i.e. steps a2 - a4 will be executed twice, then the end condition is met; otherwise, there is a discrepancy with the final condition.

[175] В дополнительном примере, после выбора вектора движения из центрального вектора движения и краевых векторов движения в качестве оптимального вектора движения, если центральный вектор движения будет выбран в качестве оптимального вектора движения, то будет иметь место соответствие конечному условию.[175] In an additional example, after selecting a motion vector from the center motion vector and edge motion vectors as the optimal motion vector, if the center motion vector is selected as the optimal motion vector, then the end condition will be met.

[176] На этапе a6 определяют первое целопиксельное значение коррекции вектора движения (которое применяют для коррекции первого исходного вектора движения) и второе целопиксельное значение коррекции вектора движения (которое применяют для коррекции второго исходного вектора движения) на основе оптимального вектора движения.[176] In step a6, a first integer pixel motion vector correction value (which is used to correct the first original motion vector) and a second integer pixel motion vector correction value (which is used to correct the second original motion vector) are determined based on the optimal motion vector.

[177] В одном примере первое целопиксельное значение коррекции вектора движения можно определять на основе оптимального вектора движения и первого исходного вектора движения, а второе целопиксельное значение коррекции вектора движения можно определять согласно первому целопиксельному значению коррекции вектора движения, причем второе целопиксельное значение коррекции вектора движения симметрично первому целопиксельному значению коррекции вектора движения.[177] In one example, the first integer pixel motion vector correction value may be determined based on the optimal motion vector and the first original motion vector, and the second integer pixel motion vector correction value may be determined according to the first integer pixel motion vector correction value, wherein the second integer pixel motion vector correction value is symmetrical the first integer value of the motion vector correction.

[178] Например, если в процессе первой итерации оптимальный вектор движения - это краевой вектор (0, 1) движения, то вторую итерацию выполняют с краевым вектором (0, 1) движения в качестве центра, при этом в процессе второй итерации оптимальный вектор движения - это краевой вектор (0, 1) движения; если итеративный процесс на этом завершают, то первое целопиксельное значение коррекции вектора движения составляет (0, 2), то есть сумму краевого вектора (0, 1) движения и краевого вектора (0, 1) движения.[178] For example, if during the first iteration the optimal motion vector is the edge motion vector (0, 1), then the second iteration is performed with the edge vector (0, 1) as the center, while during the second iteration the optimal motion vector is the edge vector (0, 1) of the motion; if the iterative process ends there, then the first integer pixel motion vector correction value is (0, 2), that is, the sum of the (0, 1) motion edge vector and the (0, 1) motion edge vector.

[179] С учетом вышесказанного, если первый исходный вектор движения имеет координаты (4, 4), то оптимальный вектор движения - это краевой вектор (0, 1) движения в процессе первой итерации, т.е. оптимальный вектор движения может соответствовать оптимальному вектору (4, 5) движения. При выполнении процесса второй итерации краевой вектор (0, 1) движения принимают в качестве центра, причем оптимальный вектор движения - это краевой вектор (0, 1) движения в процессе второй итерации, то есть оптимальный вектор движения может соответствовать оптимальному вектору (4, 6) движения.[179] In view of the above, if the first initial motion vector has coordinates (4, 4), then the optimal motion vector is the edge vector (0, 1) of motion during the first iteration, i.e. the optimal motion vector may correspond to the optimal motion vector (4, 5). When performing the process of the second iteration, the edge vector (0, 1) of the motion is taken as the center, and the optimal motion vector is the edge vector (0, 1) of the motion in the second iteration, that is, the optimal motion vector can correspond to the optimal vector (4, 6 ) movement.

[180] Таким образом, первое целопиксельное значение коррекции вектора движения определяют на основе оптимального вектора (4, 6) движения и первого исходного вектора движения (4, 4), при этом первое целопиксельное значение коррекции вектора движения представляет собой разность оптимального вектора (4, 6) движения и первого исходного вектора (4, 4) движения, т.е. первое целопиксельное значение коррекции вектора движения составляет (0, 2).[180] Thus, the first integer pixel motion vector correction value is determined based on the optimal motion vector (4, 6) and the first original motion vector (4, 4), wherein the first integer pixel motion vector correction value is the difference of the optimal motion vector (4, 6) movement and the first initial vector (4, 4) of movement, i.e. the first integer pixel value of the motion vector correction is (0, 2).

[181] Далее определяют второе целопиксельное значение коррекции вектора движения согласно первому целопиксельному значению коррекции вектора движения (0, 2), которое может составлять (0, -2), т.е. представлять собой значение, симметричное (0, 2).[181] Next, a second integer pixel motion vector correction value is determined according to the first integer pixel motion vector correction value (0, 2), which may be (0, -2), i. be a value symmetric to (0, 2).

[182] На этапе a7 определяют первое субпиксельное значение коррекции вектора движения (которое применяют для коррекции первого исходного вектора движения) и второе субпиксельное значение коррекции вектора движения (которое применяют для коррекции второго исходного вектора движения) на основе оптимального вектора движения.[182] In step a7, a first sub-pixel motion vector correction value (which is used to correct the first original motion vector) and a second sub-pixel motion vector correction value (which is used to correct the second original motion vector) are determined based on the optimal motion vector.

[183] В одном примере первое субпиксельное значение коррекции вектора движения можно определить на основе значения стоимости, соответствующего оптимальному вектору движения, и значения стоимости, соответствующего краевому вектору движения, соответствующему оптимальному вектору движения, а затем определить второе субпиксельное значение коррекции вектора движения на основе первого субпиксельного значения коррекции вектора движения.[183] In one example, the first sub-pixel motion vector correction value can be determined based on the cost value corresponding to the optimal motion vector and the cost value corresponding to the edge motion vector corresponding to the optimal motion vector, and then to determine the second sub-pixel motion vector correction value based on the first subpixel motion vector correction value.

[184] Например, x0=N*(E(-1,0) - E(1,0)) / (E(-1,0) + E(1,0) - 2* E(0,0)), y0=N*(E(0,-1) - E(0,1)) / (E(0,-1) + E(0,1) -2* E(0,0)), и если пиксельная точность вектора движения составляет 1/2, 1/4, 1/8 и 1/16, то N =1, 2, 4 и 8 соответственно. Далее (x0, y0) назначают для deltaMv, SPMV = deltaMv/2N, и если пиксельная точность текущего вектора движения составляет 1/16, то SPMV составляет (x0/16, y0/16).[184] For example, x 0 =N*(E(-1.0) - E(1.0)) / (E(-1.0) + E(1.0) - 2* E(0.0 )), y 0 =N*(E(0,-1) - E(0.1)) / (E(0,-1) + E(0.1) -2* E(0.0)) , and if the motion vector pixel precision is 1/2, 1/4, 1/8, and 1/16, then N=1, 2, 4, and 8, respectively. Next, (x 0 , y 0 ) is assigned to deltaMv, SPMV = deltaMv/2N, and if the pixel precision of the current motion vector is 1/16, then SPMV is (x 0 /16, y 0 /16).

[185] В вышеприведенном уравнении SPMV - это первое субпиксельное значение коррекции вектора движения, а N связано с пиксельной точностью вектора движения, например, если пиксельная точность вектора движения составляет 1/2, то N составляет 1; если пиксельная точность вектора движения составляет 1/4, то N составляет 2; если пиксельная точность вектора движения составляет 1/8, то N составляет 4; если пиксельная точность вектора движения составляет 1/16, то N составляет 8.[185] In the above equation, SPMV is the first sub-pixel motion vector correction value, and N is related to the pixel precision of the motion vector, for example, if the pixel precision of the motion vector is 1/2, then N is 1; if the pixel precision of the motion vector is 1/4, then N is 2; if the pixel precision of the motion vector is 1/8, then N is 4; if the pixel precision of the motion vector is 1/16, then N is 8.

[186] В вышеприведенном уравнении E(0,0) - значение стоимости оптимального вектора движения; E(-1,0) - это значение стоимости краевого вектора движения (-1,0) оптимального вектора (0,0) движения, если оптимальный вектор движения принят в качестве центра; E(1,0) - это значение стоимости краевого вектора (1,0) движения оптимального вектора (0,0) движения, если оптимальный вектор движения принят в качестве центра; E(0, -1) - это значение стоимости краевого вектора (0, -1) движения оптимального вектора (0,0) движения, если оптимальный вектор движения принят в качестве центра; E(0,1) - это значение стоимости краевого вектора (0,1) движения оптимального вектора (0,0) движения, если оптимальный вектор движения принят в качестве центра. Способ определения значения стоимости каждого вектора движения можно узнать из предыдущих вариантов осуществления, в связи с чем он не будет подробно раскрывать в настоящем параграфе.[186] In the above equation, E(0,0) is the cost value of the optimal motion vector; E(-1,0) is the cost value of the edge motion vector (-1,0) of the optimal motion vector (0,0) if the optimal motion vector is taken as the center; E(1,0) is the cost value of the edge motion vector (1,0) of the optimal motion vector (0,0) if the optimal motion vector is taken as the center; E(0, -1) is the cost value of the edge vector (0, -1) of motion of the optimal motion vector (0,0) if the optimal motion vector is taken as the center; E(0,1) is the cost value of the edge motion vector (0,1) of the optimal motion vector (0,0) if the optimal motion vector is taken as the center. The method of determining the cost value of each motion vector can be learned from the previous embodiments, and therefore will not be disclosed in detail in this paragraph.

[187] После определения первого субпиксельного значения коррекции вектора движения согласно раскрытому выше способу, можно определить второе субпиксельное значение коррекции вектора движения на основе первого субпиксельного значения коррекции вектора движения, причем второе субпиксельное значение коррекции вектора движения - это значение, симметричное первому субпиксельному значению коррекции вектора движения. Например, если первое субпиксельное значение коррекции вектора движения составляет (1, 0), то второе субпиксельное значение коррекции вектора движения составляет (-1, 0), т.е. значение, симметричное (1, 0).[187] After determining the first sub-pixel motion vector correction value according to the method disclosed above, it is possible to determine the second sub-pixel motion vector correction value based on the first sub-pixel motion vector correction value, wherein the second sub-pixel motion vector correction value is a value symmetric to the first sub-pixel motion vector correction value movement. For example, if the first sub-pixel motion vector correction value is (1, 0), then the second sub-pixel motion vector correction value is (-1, 0), i. value symmetrical to (1, 0).

[188] На этапе a8 корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения и/или первому субпиксельному значению коррекции вектора движения для получения первого целевого вектора движения.[188] In step a8, the first source motion vector is corrected according to the first integer motion vector correction value and/or the first subpixel motion vector correction value to obtain the first target motion vector.

[189] Например, первый целевой вектор движения = первый исходный вектор движения + первое целопиксельное значение коррекции вектора движения + первое субпиксельное значение коррекции вектора движения. Разумеется, приведенный выше пример не является ограничивающим.[189] For example, the first target motion vector = the first source motion vector + the first integer-pixel motion vector correction value + the first sub-pixel motion vector correction value. Of course, the above example is not limiting.

[190] На этапе a9 корректируют второй исходный вектор движения согласно второму целопиксельному значению коррекции вектора движения и/или второму субпиксельному значению коррекции вектора движения для получения второго целевого вектора движения.[190] In step a9, the second source motion vector is corrected according to the second integer motion vector correction value and/or the second subpixel motion vector correction value to obtain the second target motion vector.

[191] Например, второй целевой вектор движения = второй исходный вектор движения + второе целопиксельное значение коррекции вектора движения + второе субпиксельное значение коррекции вектора движения. Разумеется, приведенный выше пример не является ограничивающим.[191] For example, the second target motion vector = the second source motion vector + the second integer-pixel motion vector correction value + the second sub-pixel motion vector correction value. Of course, the above example is not limiting.

[192] Вариант осуществления 12: на этапе 303 и этапе 403 для каждого субблока текущего блока корректируют первый исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения субблока; и корректируют второй исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения второго целевого вектора движения субблока.[192] Embodiment 12: in step 303 and step 403, for each sub-block of the current block, adjust the first source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain the first target motion vector of the sub-block; and adjusting the second source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a second target motion vector of the subblock.

[193] Процесс коррекции исходного вектора движения раскрыт в виде процедуры обработки одного субблока (например, каждого субблока размером dx*dy текущего блока, например, субблока размером 16*16 или меньшего блока). Первый исходный вектор движения обозначают Org_MV0, второй исходный вектор движения обозначают Org_MV1, первый целевой вектор движения, полученный после коррекции первого исходного вектора движения Org_MV0, обозначают Refined_MV0, а второй целевой вектор движения, полученный после коррекции второго исходного вектора движения Org_MV1, обозначают Refined_MV1.[193] The original motion vector correction process is disclosed as a procedure for processing one sub-block (eg, each sub-block of size dx*dy of the current block, for example, a sub-block of 16*16 or smaller block). The first source motion vector is designated Org_MV0, the second source motion vector is designated Org_MV1, the first target motion vector obtained after the correction of the first original motion vector Org_MV0 is designated Refined_MV0, and the second target motion vector obtained after the correction of the second source motion vector Org_MV1 is designated Refined_MV1.

[194] На этапе b1 выполняют итерации числом SR для получения оптимального целопиксельного смещения точки целопиксельного ВД, обозначаемого IntegerDeltaMV и представляющего собой первое целопиксельное значение коррекции вектора движения в раскрытых выше вариантах осуществления. Например, устанавливают начальное значение (0, 0) для IntegerDeltaMV, после чего выполняют обработку для каждой итерации следующим образом:[194] In step b1, iterations by the number of SRs are performed to obtain the optimal integer pixel offset of the integer pixel VD point, denoted by IntegerDeltaMV and representing the first integer pixel value of the motion vector correction in the embodiments disclosed above. For example, set the initial value (0, 0) for IntegerDeltaMV, and then perform processing for each iteration as follows:

[195] На этапе b11 устанавливают значение (0, 0) для deltaMV. При выполнении первой итерации блок A1 значения предсказания (т.е. блок W*H в центре первого опорного блока) копируют на основе опорного пикселя первого исходного вектора движения в первом опорном блоке; блок B1 значения предсказания (т.е. блок W*H в центре второго опорного блока) копируют на основе опорного пикселя второго исходного вектора движения во втором опорном блоке. Получают исходное значение стоимости (исходное значение стоимости представляет собой САР (сумму абсолютных разностей, англ. sum of absolute differences (SAD)) на основе блока A1 значения предсказания и блока B1 значения предсказания) на основе блока A1 значения предсказания и блока B1 значения предсказания, при этом способ определения исходного значения стоимости раскрыт в нижеследующих вариантах осуществления. Если исходное значение стоимости меньше 4*dx*dy/2, где dx и dy - ширина и высота текущего субблока, последующий процесс поиска непосредственно пропускают, выполняют этап b2 и устанавливают значение «false» («ложно») для notZeroCost.[195] At step b11 set the value (0, 0) for deltaMV. When the first iteration is performed, the prediction value block A1 (ie, the W*H block at the center of the first reference block) is copied based on the reference pixel of the first original motion vector in the first reference block; the prediction value block B1 (ie, the W*H block at the center of the second reference block) is copied based on the reference pixel of the second original motion vector in the second reference block. The initial cost value is obtained (the initial cost value is the CAP (sum of absolute differences (SAD)) based on the prediction value block A1 and the prediction value block B1) based on the prediction value block A1 and the prediction value block B1, wherein the method for determining the initial cost value is disclosed in the following embodiments. If the initial cost value is less than 4*dx*dy/2, where dx and dy are the width and height of the current sub-block, the subsequent search process is directly skipped, step b2 is performed and notZeroCost is set to false.

[196] На этапе b12 на Фиг.6 последовательно получают пять смещенных ВД (все они именуются «MVOffset») в последовательности {Mv(0,1), Mv(0,-1), Mv(1,0), Mv(-1,0), Mv(вправо, вниз)}, при этом вышеуказанная исходная точка принята в качестве центра, и выполняют процесс вычисления и сравнения значений стоимости указанных пяти смещенных ВД.[196] At step b12 in Fig. 6, five offset VDs (all referred to as "MVOffset") are sequentially obtained in the sequence {Mv(0.1), Mv(0,-1), Mv(1.0), Mv( -1,0), Mv(right, down)}, with the above starting point taken as the center, and a process of calculating and comparing cost values of said five offset PDs is performed.

[197] Например, на основе определенного MVOffset (например, Mv(0, 1) и т.д.) в первом и втором опорных блоках получают два блока значения предсказания (например, блок W*H со смещением положения центра MVOffset в первом опорном блоке и блок W*H со смещением положения центра -MVOffset (противоположным MVOffset) во втором опорном блоке) на основе данного MVOffset и вычисляют, с понижающей дискретизацией, САР указанных двух блоков значения предсказания в качестве значения стоимости MVOffset.[197] For example, based on the determined MVOffset (e.g., Mv(0, 1), etc.) in the first and second reference blocks, two prediction value blocks are obtained (e.g., a W*H block with an MVOffset center offset in the first reference block). block and the W*H block with center position offset -MVOffset (opposite of MVOffset in the second reference block) based on this MVOffset, and downsampling the CAP of said two prediction value blocks as the MVOffset cost value is calculated.

[198] Далее MVOffset с минимальным значением стоимости резервируют, обновляют данное значение MVOffset до значения deltaMV и применяют в качестве новой точки смещения центра следующей итерации.[198] Next, the MVOffset with the minimum cost value is reserved, this MVOffset value is updated to the deltaMV value, and applied as the new center offset point of the next iteration.

[199] Значение IntegerDeltaMV обновляют на основе deltaMV, причем обновленное IntegerDeltaMV = IntegerDeltaMV до обновления + deltaMV, т.е. прибавляют deltaMV на основе текущего IntegerDeltaMV.[199] The value of IntegerDeltaMV is updated based on deltaMV, with updated IntegerDeltaMV = IntegerDeltaMV before update + deltaMV, i.e. add deltaMV based on the current IntegerDeltaMV.

[200] На этапе b13, после итерации, если оптимальный ВД все еще представляет собой исходный ВД (т.е. не MVOffset) или минимальное значение стоимости составляет 0, следующий процесс итеративного поиска не выполняют, выполняют этап b2 и устанавливают значение «false» для notZeroCost. В ином случае, если число итераций достигло SR, выполняют этап b2, а если число итераций не достигло SR, принимают оптимальный ВД в качестве центра и выполняют следующий процесс итеративного поиска, то есть совершают возврат на этап b11.[200] In step b13, after iteration, if the optimal VD is still the original VD (i.e., not MVOffset) or the minimum cost value is 0, the next iterative search process is not performed, step b2 is performed and set to "false" for notZeroCost. Otherwise, if the number of iterations has reached SR, step b2 is performed, and if the number of iterations has not reached SR, the optimal VD is taken as the center and the next iterative search process is performed, i.e., return to step b11.

[201] После завершения процесса итеративного поиска, получают значение IntegerDeltaMV, а именно конечное значение IntegerDeltaMV, то есть первое целопиксельное значение коррекции вектора движения, далее обозначаемое как IntegerDeltaMV.[201] After the iterative search process is completed, the IntegerDeltaMV value, namely the final IntegerDeltaMV value, that is, the first integer pixel motion vector correction value, hereinafter referred to as IntegerDeltaMV, is obtained.

[202] На этапе b2 оптимальную точку целопиксельного ВД с этапа b1 принимают в качестве центра, далее получают оптимальный субпиксельный смещенный ВД, который обозначают как SPMV, при этом SPMV представляет собой первое субпиксельное значение коррекции вектора движения в раскрытых выше вариантах осуществления. Например, можно установить начальное значение (0, 0) для SPMV и выполнить последующую обработку следующим образом.[202] In step b2, the optimal point of the whole-pixel VD from step b1 is taken as the center, then the optimal sub-pixel offset VD is obtained, which is referred to as SPMV, wherein SPMV is the first sub-pixel motion vector correction value in the embodiments disclosed above. For example, you can set the initial value (0, 0) for SPMV and perform post-processing as follows.

[203] На этапе b21 последующую обработку (а именно - получение SPMV) выполняют только в том случае, если notZeroCost не имеет значение «false», а deltaMV имеет значение (0, 0), в ином случае исходный вектор движения корректируют непосредственно с применением IntegerDeltaMV вместо применения IntegerDeltaMV и SPMV.[203] In step b21, subsequent processing (namely, obtaining SPMV) is performed only if notZeroCost is not "false" and deltaMV is (0, 0), otherwise the original motion vector is corrected directly using IntegerDeltaMV instead of using IntegerDeltaMV and SPMV.

[204] На этапе b22 E(x, y) представлено как значение стоимости, соответствующее ВД смещения точки оптимального ВД (x, y), полученное на этапе b1 (значение стоимости, вычисленное на этапе b1). На основе E (x, y) пяти точек - центральной, верхней, нижней, левой и правой - может быть получено смещение (x0, y0) точки с наименьшим E(x, y) следующим образом: x0 = N*(E(-1,0) - E(1,0)) / (E(-1,0) + E(1,0) - 2* E(0,0)), y0 = N*(E(0,-1) - E(0,1)) / (E(0,-1) + E(0,1) - 2* E(0,0)).[204] In step b22, E(x, y) is presented as the cost value corresponding to the offset PD of the optimal PD point (x, y) obtained in step b1 (the cost value calculated in step b1). Based on E (x, y) of five points - center, top, bottom, left and right - the offset (x 0 , y 0 ) of the point with the smallest E(x, y) can be obtained as follows: x 0 = N*( E(-1.0) - E(1.0)) / (E(-1.0) + E(1.0) - 2* E(0.0)), y 0 = N*(E( 0,-1) - E(0,1)) / (E(0,-1) + E(0,1) - 2* E(0,0)).

[205] В одном примере, если пиксельная точность вектора движения составляет 1/2, 1/4, 1/8 и 1/16, то N =1, 2, 4 и 8 соответственно. Далее (x0, y0) назначают для deltaMv, SPMV = deltaMv/2N, и, если пиксельная точность текущего вектора движения составляет 1/16, то SPMV имеет значение (x0/16, y0/16).[205] In one example, if the motion vector pixel precision is 1/2, 1/4, 1/8, and 1/16, then N=1, 2, 4, and 8, respectively. Next, (x 0 , y 0 ) is assigned to deltaMv, SPMV = deltaMv/2N, and if the pixel precision of the current motion vector is 1/16, then SPMV is (x 0 /16, y 0 /16).

[206] Если E(-1, 0) = E(0, 0), выполняют сдвиг на половину пикселя по горизонтали влево (deltaMv[0] = -N).[206] If E(-1, 0) = E(0, 0), shift half a pixel horizontally to the left (deltaMv[0] = -N).

[207] Если E(1, 0) = E(0, 0), выполняют сдвиг на половину пикселя по горизонтали вправо (deltaMv[0] = N).[207] If E(1, 0) = E(0, 0), shift half a pixel horizontally to the right (deltaMv[0] = N).

[208] Если E(0, -1) = E(0, 0), выполняют сдвиг на половину пикселя по вертикали вверх (deltaMv [1] = -N).[208] If E(0, -1) = E(0, 0), perform a shift of half a pixel vertically up (deltaMv [1] = -N).

[209] Если E(0, 1) = E(0, 0), выполняют сдвиг на половину пикселя по вертикали вниз (deltaMv [1] = N).[209] If E(0, 1) = E(0, 0), perform a shift of half a pixel vertically down (deltaMv [1] = N).

[210] Вышеуказанная обработка позволяет получить значение SPMV, т.е. первое субпиксельное значение коррекции вектора движения.[210] The above processing allows you to get the value of SPMV, ie. the first subpixel motion vector correction value.

[211] На этапе b3 получают оптимальный смещенный ВД на основе IntegrarteltaMV с целопиксельным смещением на этапе b1 и SPMV с субпиксельным смещением на этапе b2 и обозначают оптимальный смещенный ВД BestMVoffset. Также, BestMVoffset=IntegerDeltaMV+ SPMV.[211] In step b3, an optimal offset VD based on IntegrarteltaMV with integer pixel offset in step b1 and SPMV with subpixel offset in step b2 is obtained and the optimal offset VD is designated BestMVoffset. Also, BestMVoffset=IntegerDeltaMV+ SPMV.

[212] На основе BestMVoffset могут быть получены целевые векторы движения в двух направлениях: Refined_MV0= Org_MV0+BestMVoffset; Refined_MV1=Org_MV1-BestMVoffset.[212] Based on BestMVoffset, target motion vectors in two directions can be obtained: Refined_MV0=Org_MV0+BestMVoffset; Refined_MV1=Org_MV1-BestMVoffset.

[213] Следует отметить, что BestMVoffset=IntegerDeltaMV+SPMV, т.е. сумме первого целопиксельного значения коррекции вектора движения и первого субпиксельного значения коррекции вектора движения. Кроме того, -IntegerDeltaMV представляет собой значение, симметричное IntegerDeltaMV, т.е. второе целопиксельное значение коррекции вектора движения, а -SPMV - это значение, симметричное SPMV, т.е. второе субпиксельное значение коррекции вектора движения, таким образом, -BestMVoffset=(-IntegerDeltaMV)+(-SPMV), т.е. сумме второго целопиксельного значения коррекции вектора движения и второго субпиксельного значения коррекции вектора движения.[213] It should be noted that BestMVoffset=IntegerDeltaMV+SPMV, ie. the sum of the first integer pixel motion vector correction value and the first subpixel motion vector correction value. Also, -IntegerDeltaMV is a value that is symmetrical to IntegerDeltaMV, i.e. the second integer pixel motion vector correction value, and -SPMV is the value symmetrical to SPMV, i.e. second subpixel motion vector correction value, thus -BestMVoffset=(-IntegerDeltaMV)+(-SPMV), i.e. the sum of the second integer pixel motion vector correction value and the second subpixel motion vector correction value.

[214] Вариант осуществления 13: на этапе 303 и этапе 403 реализация коррекции первого и второго исходных векторов Org_MV0 и Org_MV1 движения до первого и второго целевых векторов Refined_MV0 и Refined_MV1 движения соответственно аналогична реализации в варианте осуществления 12, за исключением того, что:[214] Embodiment 13: In step 303 and step 403, the implementation of correcting the first and second source motion vectors Org_MV0 and Org_MV1 to the first and second target motion vectors Refined_MV0 and Refined_MV1, respectively, is the same as the implementation in Embodiment 12, except that:

[215] фразу «если исходное значение стоимости меньше 4*dx*dy/2, …, последующий процесс поиска непосредственно пропускают» на этапе b11 опускают, то есть даже если исходное значение стоимости меньше 4*dx*dy/2, то вместо того, чтобы «непосредственно пропустить последующий процесс поиска», последующий процесс поиска продолжают, то есть этап b12 должен быть выполнен.[215] the phrase "if the initial cost value is less than 4*dx*dy/2, ..., the subsequent search process is directly skipped" in step b11 is omitted, that is, even if the initial cost value is less than 4*dx*dy/2, then instead to "directly skip the subsequent search process", the subsequent search process is continued, that is, step b12 must be performed.

[216] Вариант осуществления 14: на этапе 303 и этапе 403 реализация коррекции первого и второго исходных векторов Org_MV0 и Org_MV1 движения до первого и второго целевых векторов Refined_MV0 и Refined_MV1 движения соответственно аналогична реализации в варианте осуществления 12, за исключением того, что:[216] Embodiment 14: In step 303 and step 403, the implementation of correcting the first and second source motion vectors Org_MV0 and Org_MV1 to the first and second target motion vectors Refined_MV0 and Refined_MV1, respectively, is the same as the implementation in Embodiment 12, except that:

[217] фразу «если исходное значение стоимости меньше 4*dx*dy/2, последующий процесс поиска непосредственно пропускают» на этапе b11 опускают, то есть даже если исходное значение стоимости меньше 4*dx*dy/2, то вместо того, чтобы «непосредственно пропустить последующий процесс поиска», последующий процесс поиска продолжают, то есть этап b12 должен быть выполнен.[217] the phrase "if the initial cost value is less than 4*dx*dy/2, the subsequent search process is directly skipped" in step b11 is omitted, that is, even if the initial cost value is less than 4*dx*dy/2, then instead of "directly skip the subsequent search process", the subsequent search process is continued, that is, step b12 must be performed.

[218] фразу «если оптимальный ВД все еще представляет собой исходный ВД (т.е. не MVOffset) или минимальное значение стоимости составляет 0, следующий процесс итеративного поиска не выполняют» на этапе b13 опускают, то есть, даже если оптимальный ВД все еще представляет собой исходный ВД или минимальное значение стоимости составляет 0, следующий процесс итеративного поиска можно выполнить.[218] the phrase "if the optimal VP is still the original VP (i.e., not MVOffset) or the minimum cost value is 0, the next iterative search process is not performed" in step b13 is omitted, i.e., even if the optimal VP is still is the original PD or the minimum cost value is 0, the following iterative search process can be performed.

[219] Вариант осуществления 15: на этапе 303 и этапе 403 реализация коррекции первого и второго исходных векторов Org_MV0 и Org_MV1 движения до первого и второго целевых векторов Refined_MV0 и Refined_MV1 движения соответственно аналогична реализации в варианте осуществления 12, за исключением того, что:[219] Embodiment 15: In step 303 and step 403, the implementation of correcting the first and second source motion vectors Org_MV0 and Org_MV1 to the first and second target motion vectors Refined_MV0 and Refined_MV1, respectively, is the same as the implementation in Embodiment 12, except that:

[220] процесс корреляции «notZeroCost» опускают, то есть значение notZeroCost не устанавливают и не сохраняют на этапе b11 и этапе b13. На этапе b21 можно выполнить процесс вычисления субпиксельного смещения (т.е. этап b22), если deltaMV имеет значение (0, 0), а не только в том случае, если notZeroCost не имеет значение «false», а deltaMV имеет значение (0, 0).[220] The "notZeroCost" correlation process is omitted, that is, notZeroCost is not set and stored in step b11 and step b13. In step b21, it is possible to execute the sub-pixel offset calculation process (i.e., step b22) if deltaMV is (0, 0), not only if notZeroCost is not "false" but deltaMV is (0) , 0).

[221] Вариант осуществления 16: на этапе 303 и этапе 403 реализация коррекции первого и второго исходных векторов Org_MV0 и Org_MV1 движения до первого и второго целевых векторов Refined_MV0 и Refined_MV1 движения соответственно аналогична реализации в варианте осуществления 12, за исключением того, что:[221] Embodiment 16: In step 303 and step 403, the implementation of correcting the first and second source motion vectors Org_MV0 and Org_MV1 to the first and second target motion vectors Refined_MV0 and Refined_MV1, respectively, is the same as the implementation in Embodiment 12, except that:

[222] фразу «последующую обработку выполняют только в том случае, если notZeroCost не имеет значение «false», а deltaMV имеет значение (0, 0), в ином случае исходный вектор движения корректируют непосредственно с применением IntegerDeltaMV» на этапе b21 видоизменяют на «последующую обработку выполняют только в том случае, если notZeroCost не имеет значение «false», при этом значения стоимости в четырех точках, расположенных соответственно сверху, снизу, слева и справа на расстоянии одного пикселя от текущего оптимального целочисленного пикселя, получают вычислением на этапе b1, в ином случае исходный вектор движения корректируют непосредственно с применением IntegerDeltaMV».[222] the phrase "post-processing is performed only if notZeroCost is not false and deltaMV is (0, 0), otherwise the original motion vector is corrected directly using IntegerDeltaMV" in step b21 is modified to " post-processing is performed only if notZeroCost is not "false", while the cost values at four points located respectively above, below, left and right at a distance of one pixel from the current optimal integer pixel are obtained by calculation in step b1, otherwise, the original motion vector is corrected directly using IntegerDeltaMV."

[223] В одном примере «последующая обработка» означает процесс вычисления субпиксельного смещения на этапе b22.[223] In one example, "post-processing" means the process of calculating the sub-pixel offset in step b22.

[224] В одном примере в процессе вычисления субпиксельного смещения на этапе b22 необходимо применять значения стоимости в четырех точках, расположенных соответственно сверху, снизу, слева и справа на расстоянии одного пикселя от текущего оптимального целочисленного пикселя, то есть вычисление «значений стоимости в четырех точках, расположенных соответственно сверху, снизу, слева и справа на расстоянии одного пикселя от текущего оптимального целочисленного пикселя» на этапе b1 является обязательным условием.[224] In one example, in the process of calculating the sub-pixel offset in step b22, it is necessary to apply cost values at four points located respectively above, below, left, and right at a distance of one pixel from the current optimal integer pixel, that is, calculating “four-point cost values located respectively above, below, left and right at a distance of one pixel from the current optimal integer pixel" in step b1 is a prerequisite.

[225] Вариант осуществления 17: на этапе 303 и этапе 403 реализация коррекции первого и второго исходных векторов Org_MV0 и Org_MV1 движения до первого и второго целевых векторов Refined_MV0 и Refined_MV1 движения соответственно аналогична реализации в варианте осуществления 12, за исключением того, что:[225] Embodiment 17: In step 303 and step 403, the implementation of correcting the first and second source motion vectors Org_MV0 and Org_MV1 to the first and second target motion vectors Refined_MV0 and Refined_MV1, respectively, is the same as the implementation in Embodiment 12, except that:

[226] фразу «последующую обработку выполняют только в том случае, если notZeroCost не имеет значение «false», а deltaMV имеет значение (0, 0), в ином случае исходный вектор движения корректируют непосредственно с применением IntegerDeltaMV» на этапе b21 видоизменяют на «последующую обработку (т.е. процесс вычисления субпиксельного смещения) выполняют только в том случае, если значения стоимости в четырех точках, расположенных соответственно сверху, снизу, слева и справа на расстоянии одного пикселя от текущего оптимального целочисленного пикселя, получают вычислением на этапе b1, в ином случае исходный вектор движения корректируют непосредственно с применением IntegerDeltaMV».[226] the phrase "post-processing is performed only if notZeroCost is not false and deltaMV is (0, 0), otherwise the original motion vector is corrected directly using IntegerDeltaMV" in step b21 is modified to " the post-processing (i.e., the sub-pixel offset calculation process) is performed only if the cost values at four points located respectively above, below, left, and right at a distance of one pixel from the current optimal integer pixel are obtained by calculation in step b1, otherwise, the original motion vector is corrected directly using IntegerDeltaMV."

[227] Вариант осуществления 18: на этапе 303 и этапе 403 реализация коррекции первого и второго исходных векторов Org_MV0 и Org_MV1 движения до первого и второго целевых векторов Refined_MV0 и Refined_MV1 движения соответственно аналогична реализации в варианте осуществления 12, за исключением того, что:[227] Embodiment 18: In step 303 and step 403, the implementation of correcting the first and second source motion vectors Org_MV0 and Org_MV1 to the first and second target motion vectors Refined_MV0 and Refined_MV1, respectively, is the same as the implementation in Embodiment 12, except that:

[228] фразу «последующую обработку выполняют только в том случае, если notZeroCost не имеет значение «false», а deltaMV имеет значение (0, 0), в ином случае исходный вектор движения корректируют непосредственно с применением IntegerDeltaMV» на этапе b21 видоизменяют на «последующую обработку (т.е. процесс вычисления субпиксельного смещения на этапе b22) выполняют, если значения стоимости в четырех точках, расположенных соответственно сверху, снизу, слева и справа на расстоянии одного пикселя от текущего оптимального целочисленного пикселя, получены на этапе b1, в ином случае выполняют этап b23».[228] the phrase "post-processing is performed only if notZeroCost is not false and deltaMV is (0, 0), otherwise the original motion vector is corrected directly using IntegerDeltaMV" in step b21 is modified to " the subsequent processing (i.e., the sub-pixel offset calculation process in step b22) is performed if the cost values at four points located respectively above, below, left, and right at a distance of one pixel from the current optimal integer pixel are obtained in step b1, otherwise case, perform step b23".

[229] На этапе b23 в качестве текущей оптимальной целопиксельной точки MV_inter_org принимают ближайшую целопиксельную точку MV_inter_nearest, при этом значения стоимости в четырех точках, расположенных соответственно сверху, снизу, слева и справа на расстоянии одного пикселя от ближайшей целопиксельной точки, были получены на этапе b1. Далее выполняют процесс вычисления субпиксельного смещения на этапе b22 с центром в MV_inter_nearest, то есть получают SPMV с центром в MV_inter_nearest.[229] At step b23, the nearest integer pixel point MV_inter_nearest is taken as the current optimal integer pixel point MV_inter_org, while the cost values at four points located respectively above, below, left and right at a distance of one pixel from the nearest integer pixel point were obtained at step b1 . Next, the sub-pixel offset calculation process in step b22 is performed centered on MV_inter_nearest, that is, an SPMV centered on MV_inter_nearest is obtained.

[230] Например, если значения стоимости в четырех точках, расположенных соответственно сверху, снизу, слева и справа на расстоянии одного пикселя от текущей оптимальной целопиксельной точки, не были получены в полном составе на этапе b1, одну целопиксельную точку MV_inter_nearest выбирают из области у границы оптимальной целопиксельной точки MV_inter_org, при этом значения стоимости в четырех точках, расположенных соответственно сверху, снизу, слева и справа от целопиксельной точки MV_inter_nearest получают на этапе b1.[230] For example, if the cost values at four points located respectively above, below, left and right at a distance of one pixel from the current optimal integer pixel point were not obtained in full in step b1, one integer MV_inter_nearest point is selected from the area near the border the optimal integer point MV_inter_org, while the cost values at four points located respectively above, below, left and right of the integer pixel point MV_inter_nearest are obtained in step b1.

[231] Далее целопиксельную точку MV_inter_nearest принимают в качестве текущей оптимальной целопиксельной точки и получают SPMV с центром в целопиксельной точке MV_inter_nearest, при этом конкретный процесс относится к этапу b22.[231] Next, the integer pixel point MV_inter_nearest is taken as the current optimal integer pixel point, and an SPMV centered on the integer pixel point MV_inter_nearest is obtained, with the specific process related to step b22.

[232] В процессе получения SPMV с центром в целопиксельной точке MV_inter_nearest на этапе b22, вычисление x0 и y0 может быть ограничено диапазоном [-2N, 2N]. Если x0/y0 больше 2N, x0/y0 может быть присвоено значение 2N; если x0/y0 меньше -2N, x0/y0 может быть присвоено значение -2N. Если пиксельная точность вектора движения составляет 1/2, 1/4, 1/8 и 1/16, то N =1, 2, 4 и 8 соответственно.[232] In the process of obtaining SPMV centered on the integer pixel point MV_inter_nearest in step b22, the calculation of x 0 and y 0 may be limited to the range of [-2N, 2N]. If x 0 /y 0 is greater than 2N, x 0 /y 0 can be assigned the value 2N; if x 0 /y 0 is less than -2N, x 0 /y 0 can be assigned the value -2N. If the motion vector pixel precision is 1/2, 1/4, 1/8, and 1/16, then N=1, 2, 4, and 8, respectively.

[233] Вариант осуществления 19: в раскрытых выше вариантах осуществления необходимо определить краевые векторы движения, соответствующие центральному вектору движения, например, 5 краевых векторов движения. Например, центральный вектор (x, y) движения можно сдвигать на S в разных направлениях и последовательно получать краевой вектор (x, y+S) движения, краевой вектор (x, y-S) движения, краевой вектор (x+S, y) движения, краевой вектор (x-S, y) движения и краевой вектор (x+вправо, y+вниз) движения в разных направлениях. В качестве альтернативы, центральный вектор (x, y) движения можно сдвигать на S в разных направлениях и последовательно получать краевой вектор (x, y-S) движения, краевой вектор (x, y+S) движения, краевой вектор (x-S, y) движения, краевой вектор (x+S, y) движения и краевой вектор (x + вправо, y + вниз) движения в разных направлениях.[233] Embodiment 19: In the embodiments disclosed above, it is necessary to determine edge motion vectors corresponding to the center motion vector, for example, 5 edge motion vectors. For example, the central motion vector (x, y) can be shifted by S in different directions and sequentially receive the edge vector (x, y+S) of the motion, the edge vector (x, y-S) of the motion, the edge vector (x+S, y) of the motion , edge vector (x-S, y) of movement and edge vector (x+right, y+down) of movement in different directions. Alternatively, the center motion vector (x, y) can be shifted by S in different directions and successively obtain edge motion vector (x, y-S), edge vector (x, y+S) motion, edge vector (x-S, y) motion , edge vector (x+S, y) of movement and edge vector (x + right, y + down) of movement in different directions.

[234] Например, если (x, y) имеет значение (0, 0), а S составляет 1, то можно получить 5 краевых векторов движения в последовательности (0, 1), (0, -1), (1, 0), (-1, 0) и (вправо, вниз). В качестве альтернативы, можно получить 5 краевых векторов движения в последовательности (0, -1), (0, 1), (-1, 0), (1, 0) и (вправо, вниз).[234] For example, if (x, y) is (0, 0) and S is 1, then you can get 5 edge motion vectors in the sequence (0, 1), (0, -1), (1, 0 ), (-1, 0) and (right, down). Alternatively, you can get 5 edge motion vectors in the sequence (0, -1), (0, 1), (-1, 0), (1, 0) and (right, down).

[235] Вариант осуществления 20: в раскрытых выше вариантах осуществления используемое по умолчанию значение краевого вектора (x+вправо, y+вниз) движения составляет (x-S, y-S). Если значение стоимости краевого вектора (x+S, y) движения меньше значения краевого вектора (x-S, y) движения, то значение «вправо» составляет S (-S изменяют на S); если значение стоимости краевого вектора (x, y+S) движения меньше значения краевого вектора (x, y-S) движения, то значение «вниз» составляет S (-S изменяют на S). В качестве альтернативы, если значение стоимости краевого вектора (x+S, y) движения меньше или равно значению стоимости краевого вектора (x-S, y) движения, значение «вправо» составляет S (-S изменяют на S); если значение стоимости краевого вектора (x, y+S) движения меньше или равно значению стоимости краевого вектора (x, y-S) движения, значение «вниз» составляет S (-S изменяют на S).[235] Embodiment 20: In the embodiments disclosed above, the default value of the edge vector (x+right, y+down) of motion is (x-S, y-S). If the cost value of the edge vector (x+S, y) of motion is less than the value of the edge vector (x-S, y) of motion, then the value of "right" is S (-S is changed to S); if the cost value of the edge vector (x, y+S) of the motion is less than the value of the edge vector (x, y-S) of the motion, then the "down" value is S (-S is changed to S). Alternatively, if the cost value of the edge vector (x+S, y) of the motion is less than or equal to the value of the cost of the edge vector (x-S, y) of the motion, the value of "right" is S (-S is changed to S); if the cost value of the edge vector (x, y+S) of the motion is less than or equal to the cost value of the edge vector (x, y-S) of the motion, the "down" value is S (-S is changed to S).

[236] Например, 5 краевых векторов движения получают в последовательности (0, 1), (0, -1), (1, 0), (-1, 0), (вправо, вниз), при этом используемое по умолчанию значение (вправо, вниз) составляет (-1, -1). Если значение стоимости краевого вектора (1, 0) движения меньше значения стоимости краевого вектора (-1, 0) движения, значение «вправо» составляет 1; если значение стоимости краевого вектора (0, 1) движения меньше значения стоимости краевого вектора (0, -1) движения, значение «вниз» составляет 1. В качестве альтернативы, если значение стоимости краевого вектора (1, 0) движения меньше или равно значению стоимости краевого вектора (-1, 0) движения, значение «вправо» составляет 1; если значение стоимости краевого вектора (0, 1) движения меньше или равно значению стоимости краевого вектора (0, -1) движения, значение «вниз» составляет 1.[236] For example, 5 edge motion vectors are obtained in the sequence (0, 1), (0, -1), (1, 0), (-1, 0), (right, down), with the default value (right, down) is (-1, -1). If the cost value of the edge vector (1, 0) of the motion is less than the value of the cost of the edge vector (-1, 0) of the motion, the value of "right" is 1; if the value of the edge vector (0, 1) motion cost is less than the value of the edge vector (0, -1) motion, the down value is 1. Alternatively, if the value of the edge vector (1, 0) motion vector is less than or equal to the value the cost of the edge vector (-1, 0) movement, the value of "right" is 1; if the edge vector cost value (0, 1) of the motion is less than or equal to the edge vector cost value (0, -1) of the motion, the down value is 1.

[237] Например, 5 краевых векторов движения получают в последовательности (0, -1), (0, 1), (-1, 0), (1, 0), (вправо, вниз), при этом используемое по умолчанию значение (вправо, вниз) составляет (-1, -1). Если значение стоимости краевого вектора (1, 0) движения меньше значения стоимости краевого вектора (-1, 0) движения, значение «вправо» составляет 1; если значение стоимости краевого вектора (0, 1) движения меньше значения стоимости краевого вектора (0, -1) движения, значение «вниз» составляет 1. В качестве альтернативы, если значение стоимости краевого вектора (1, 0) движения меньше или равно значению стоимости краевого вектора (-1, 0) движения, значение «вправо» составляет 1; если значение стоимости краевого вектора (0, 1) движения меньше или равно значению стоимости краевого вектора (0, -1) движения, значение «вниз» составляет 1.[237] For example, 5 edge motion vectors are obtained in the sequence (0, -1), (0, 1), (-1, 0), (1, 0), (right, down), with the default value (right, down) is (-1, -1). If the cost value of the edge vector (1, 0) of the motion is less than the value of the cost of the edge vector (-1, 0) of the motion, the value of "right" is 1; if the value of the edge vector (0, 1) motion cost is less than the value of the edge vector (0, -1) motion, the down value is 1. Alternatively, if the value of the edge vector (1, 0) motion vector is less than or equal to the value the cost of the edge vector (-1, 0) movement, the value of "right" is 1; if the edge vector cost value (0, 1) of the motion is less than or equal to the edge vector cost value (0, -1) of the motion, the down value is 1.

[238] Вариант осуществления 21: на этапах 303 и 403, для каждого субблока текущего блока, корректируют первый исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения субблока; при этом корректируют второй исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения второго целевого вектора движения субблока.[238] Embodiment 21: in steps 303 and 403, for each subblock of the current block, adjust the first source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain the first target motion vector of the subblock; while correcting the second source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain the second target motion vector of the subblock.

[239] Процесс коррекции исходного вектора движения раскрыт в виде процедуры обработки одного субблока (например, каждого субблока размером dx*dy текущего блока, например, субблока размером 16*16 или меньшего блока).[239] The original motion vector correction process is disclosed as a procedure for processing one sub-block (eg, each sub-block of size dx*dy of the current block, for example, a sub-block of 16*16 or smaller block).

[240] На этапе c1 первый исходный вектор движения или второй исходный вектор движения принимают в качестве центра, выбирают некоторые или все векторы движения из окружающих векторов движения и определяют выбранные векторы движения в качестве потенциальных векторов движения.[240] In step c1, the first source motion vector or the second source motion vector is taken as the center, some or all of the motion vectors are selected from the surrounding motion vectors, and the selected motion vectors are determined as candidate motion vectors.

[241] Например, некоторые или все векторы движения можно выбрать из окружающих векторов движения в качестве потенциальных векторов движения, при этом первый исходный вектор движения принимают в качестве центра. Подробности раскрыты в нижеследующих вариантах осуществления.[241] For example, some or all of the motion vectors can be selected from the surrounding motion vectors as potential motion vectors, with the first original motion vector being taken as the center. Details are disclosed in the following embodiments.

[242] В нижеследующих вариантах осуществления первый исходный вектор движения принимают в качестве центрального вектора движения для удобства раскрытия.[242] In the following embodiments, the first original motion vector is taken as the center motion vector for convenience of disclosure.

[243] На этапе c2 получают третье значение стоимости, соответствующее первому исходному вектору движения, и четвертое значение стоимости, соответствующее каждому потенциальному вектору движения, согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока.[243] In step c2, a third cost value corresponding to the first original motion vector and a fourth cost value corresponding to each potential motion vector are obtained according to the first pixel value of the first reference block and the second pixel value of the second reference block.

[244] Например, опорный субблок A1, соответствующий первому исходному вектору движения, получают путем копирования из первого опорного блока, при этом опорный субблок A1 представляет собой опорный субблок первого исходного вектора движения в первом опорном блоке, при этом размер опорного субблока A1 - это размер текущего блока. Опорный субблок B1, соответствующий второму исходному вектору движения, получают путем копирования из второго опорного блока, при этом опорный субблок B1 представляет собой опорный субблок второго исходного вектора движения во втором опорном блоке, при этом размер опорного субблока B1 - это размер текущего блока. Далее получают третье значение стоимости, соответствующее первому исходному вектору движения, согласно первому значению пикселя опорного субблока A1 и второму значению пикселя опорного субблока B1.[244] For example, the reference subblock A1 corresponding to the first original motion vector is obtained by copying from the first reference block, while the reference subblock A1 is the reference subblock of the first original motion vector in the first reference block, while the size of the reference subblock A1 is the size current block. Reference sub-block B1 corresponding to the second original motion vector is obtained by copying from the second reference block, wherein reference sub-block B1 is the reference sub-block of the second original motion vector in the second reference block, and the size of reference sub-block B1 is the size of the current block. Next, a third cost value corresponding to the first original motion vector is obtained according to the first pixel value of the reference sub-block A1 and the second pixel value of the reference sub-block B1.

[245] Для каждого потенциального вектора движения получают опорный субблок A2, соответствующий потенциальному вектору движения, путем копирования из первого опорного блока, при этом опорный субблок A2 представляет собой опорный субблок потенциального вектора движения в первом опорном блоке, при этом размер опорного субблока A2 - это размер текущего блока. Получают опорный субблок B2, соответствующий вектору движения, симметричному потенциальному вектору движения, путем копирования из второго опорного блока, при этом размер опорного субблока B2 - это размер текущего блока. Получают четвертое значение стоимости, соответствующее потенциальному вектору движения, согласно первому значению пикселя опорного субблока A2 и второму значению пикселя опорного субблока B2.[245] For each potential motion vector, a reference sub-block A2 corresponding to the potential motion vector is obtained by copying from the first reference block, wherein the reference sub-block A2 is the reference sub-block of the potential motion vector in the first reference block, while the size of the reference sub-block A2 is the size of the current block. The B2 reference subblock corresponding to the motion vector symmetrical to the potential motion vector is obtained by copying from the second reference block, wherein the size of the B2 reference subblock is the size of the current block. A fourth cost value corresponding to the potential motion vector is obtained according to the first pixel value of the reference sub-block A2 and the second pixel value of the reference sub-block B2.

[246] На этапе c3: выбирают вектор движения из первого исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе третьего значения стоимости и четвертого значения стоимости. Например, вектор движения с наименьшим значением стоимости (например, первый исходный вектор движения или любой из потенциальных векторов движения) применяют в качестве оптимального вектора движения.[246] In step c3: a motion vector is selected from the first original motion vector and potential motion vectors as the optimal motion vector based on the third cost value and the fourth cost value. For example, the motion vector with the lowest cost value (eg, the first original motion vector or any of the potential motion vectors) is used as the optimal motion vector.

[245] На этапе c4 определяют первое целопиксельное значение коррекции вектора движения (которое применяют для коррекции первого исходного вектора движения) и второе целопиксельное значение коррекции вектора движения (которое применяют для коррекции второго исходного вектора движения) на основе оптимального вектора движения. В одном примере первое целопиксельное значение коррекции вектора движения можно определять на основе оптимального вектора движения и первого исходного вектора движения, а второе целопиксельное значение коррекции вектора движения можно определять согласно первому целопиксельному значению коррекции вектора движения, причем второе целопиксельное значение коррекции вектора движения симметрично первому целопиксельному значению коррекции вектора движения.[245] In step c4, a first integer pixel motion vector correction value (which is used to correct the first original motion vector) and a second integer pixel motion vector correction value (which is used to correct the second original motion vector) are determined based on the optimal motion vector. In one example, the first integer pixel motion vector correction value may be determined based on the optimal motion vector and the first original motion vector, and the second integer pixel motion vector correction value may be determined according to the first integer pixel motion vector correction value, wherein the second integer pixel motion vector correction value is symmetrical to the first integer pixel value. motion vector correction.

[248] Например, если оптимальный вектор движения имеет координаты (4, 6), а первый исходный вектор движения имеет координаты (4, 4), то первое целопиксельное значение коррекции вектора движения определяют на основе оптимального вектора движения (4, 6) и первого исходного вектора движения (4, 4), при этом первое целопиксельное значение коррекции вектора движения представляет собой разность оптимального вектора (4, 6) движения и первого исходного вектора (4, 4) движения, т.е. первое целопиксельное значение коррекции вектора движения составляет (0, 2).[248] For example, if the optimal motion vector has coordinates (4, 6) and the first original motion vector has coordinates (4, 4), then the first integer pixel motion vector correction value is determined based on the optimal motion vector (4, 6) and the first of the original motion vector (4, 4), wherein the first integer value of the motion vector correction is the difference between the optimal motion vector (4, 6) and the first original motion vector (4, 4), i.e. the first integer pixel value of the motion vector correction is (0, 2).

[249] Далее определяют второе целопиксельное значение коррекции вектора движения согласно первому целопиксельному значению коррекции вектора движения (0, 2), при этом второе целопиксельное значение коррекции вектора движения может составлять (0, -2), т.е. представлять собой значение, симметричное (0, 2).[249] Next, a second integer pixel motion vector correction value is determined according to the first integer pixel motion vector correction value (0, 2), wherein the second integer pixel motion vector correction value may be (0, -2), i. be a value symmetric to (0, 2).

[250] На этапе c5 определяют первое субпиксельное значение коррекции вектора движения (которое применяют для коррекции первого исходного вектора движения) и второе субпиксельное значение коррекции вектора движения (которое применяют для коррекции второго исходного вектора движения) на основе оптимального вектора движения.[250] In step c5, a first sub-pixel motion vector correction value (which is used to correct the first original motion vector) and a second sub-pixel motion vector correction value (which is used to correct the second original motion vector) are determined based on the optimal motion vector.

[251] В одном примере первое субпиксельное значение коррекции вектора движения можно определить на основе значения стоимости, соответствующего оптимальному вектору движения, и значению стоимости, соответствующему краевому вектору движения, соответствующему оптимальному вектору движения, а затем можно определить второе субпиксельное значение коррекции вектора движения на основе первого субпиксельного значения коррекции вектора движения.[251] In one example, the first sub-pixel motion vector correction value can be determined based on the cost value corresponding to the optimal motion vector and the cost value corresponding to the edge motion vector corresponding to the optimal motion vector, and then the second sub-pixel motion vector correction value can be determined based on the first sub-pixel motion vector correction value.

[252] Например, x0=N*(E(-1,0) - E(1,0)) / (E(-1,0) + E(1,0) - 2* E(0,0)), y0=N*(E(0,-1) - E(0,1)) / (E(0,-1) + E(0,1) - 2* E(0,0)), при этом если пиксельная точность вектора движения составляет 1/2, 1/4, 1/8 и 1/16, то N =1, 2, 4 и 8 соответственно. Далее (x0, y0) назначают для deltaMv, SPMV = deltaMv/2N, при этом если пиксельная точность текущего вектора движения составляет 1/16, то SPMV составляет (x0/16, y0/16).[252] For example, x 0 =N*(E(-1.0) - E(1.0)) / (E(-1.0) + E(1.0) - 2* E(0.0 )), y 0 =N*(E(0,-1) - E(0.1)) / (E(0,-1) + E(0.1) - 2* E(0.0)) , while if the pixel accuracy of the motion vector is 1/2, 1/4, 1/8 and 1/16, then N =1, 2, 4 and 8, respectively. Next, (x 0 , y 0 ) is assigned to deltaMv, SPMV = deltaMv/2N, whereby if the pixel precision of the current motion vector is 1/16, then SPMV is (x 0 /16, y 0 /16).

[253] SPMV - это первое субпиксельное значение коррекции вектора движения. E(0,0) - значение стоимости оптимального вектора движения; E(-1,0) - значение стоимости краевого вектора (-1,0) движения оптимального вектора (0,0) движения, если оптимальный вектор движения принят в качестве центра; E(1,0) - значение стоимости краевого вектора (1,0) движения оптимального вектора (0,0) движения, если оптимальный вектор движения принят в качестве центра; E(0, -1) - значение стоимости краевого вектора (0, -1) движения оптимального вектора (0,0) движения, если оптимальный вектор движения принят в качестве центра; E(0,1) - значение стоимости краевого вектора (0,1) движения оптимального вектора (0,0) движения, если оптимальный вектор движения принят в качестве центра. Способ определения значения стоимости каждого вектора движения можно узнать из раскрытых выше вариантов осуществления.[253] SPMV is the first subpixel motion vector correction value. E(0,0) - value of the cost of the optimal motion vector; E(-1,0) - the value of the cost of the edge vector (-1,0) motion of the optimal motion vector (0,0) if the optimal motion vector is taken as the center; E(1,0) - value of the cost of the edge vector (1,0) motion of the optimal motion vector (0,0) if the optimal motion vector is taken as the center; E(0, -1) - value of the cost of the edge vector (0, -1) of the movement of the optimal motion vector (0,0) if the optimal motion vector is taken as the center; E(0,1) is the value of the cost of the edge vector (0,1) of the optimal motion vector (0,0) of the motion, if the optimal motion vector is taken as the center. The method for determining the cost value of each motion vector can be learned from the embodiments disclosed above.

[254] После определения первого субпиксельного значения коррекции вектора движения согласно раскрытому выше способу, можно определить второе субпиксельное значение коррекции вектора движения на основе первого субпиксельного значения коррекции вектора движения, причем второе субпиксельное значение коррекции вектора движения - это значение, симметричное первому субпиксельному значению коррекции вектора движения. Например, если первое субпиксельное значение коррекции вектора движения составляет (1, 0), то второе субпиксельное значение коррекции вектора движения составляет (-1, 0), т.е. представляет собой значение, симметричное (1, 0).[254] After determining the first sub-pixel motion vector correction value according to the method disclosed above, it is possible to determine the second sub-pixel motion vector correction value based on the first sub-pixel motion vector correction value, wherein the second sub-pixel motion vector correction value is a value symmetric to the first sub-pixel motion vector correction value movement. For example, if the first sub-pixel motion vector correction value is (1, 0), then the second sub-pixel motion vector correction value is (-1, 0), i. is a value symmetric to (1, 0).

[255] На этапе c6 корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения и/или первому субпиксельному значению коррекции вектора движения для получения первого целевого вектора движения.[255] In step c6, the first source motion vector is corrected according to the first integer motion vector correction value and/or the first subpixel motion vector correction value to obtain the first target motion vector.

[256] Например, первый целевой вектор движения = первый исходный вектор движения + первое целопиксельное значение коррекции вектора движения + первое субпиксельное значение коррекции вектора движения. Разумеется, приведенный выше пример не является ограничивающим.[256] For example, the first target motion vector = the first source motion vector + the first integer-pixel motion vector correction value + the first sub-pixel motion vector correction value. Of course, the above example is not limiting.

[257] На этапе c7 корректируют второй исходный вектор движения согласно второму целопиксельному значению коррекции вектора движения и/или второму субпиксельному значению коррекции вектора движения для получения второго целевого вектора движения.[257] In step c7, the second source motion vector is corrected according to the second integer motion vector correction value and/or the second subpixel motion vector correction value to obtain the second target motion vector.

[258] Например, второй целевой вектор движения = второй исходный вектор движения + второе целопиксельное значение коррекции вектора движения + второе субпиксельное значение коррекции вектора движения. Разумеется, приведенный выше пример не является ограничивающим.[258] For example, the second target motion vector = the second source motion vector + the second integer-pixel motion vector correction value + the second sub-pixel motion vector correction value. Of course, the above example is not limiting.

[259] Вариант осуществления 22: на этапе 303 и этапе 403 для каждого субблока текущего блока корректируют первый исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения субблока; и корректируют второй исходный вектор движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения второго целевого вектора движения субблока.[259] Embodiment 22: in step 303 and step 403, for each sub-block of the current block, adjust the first source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain the first target motion vector of the sub-block; and adjusting the second source motion vector according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a second target motion vector of the subblock.

[260] Процесс коррекции исходного вектора движения раскрыт в виде процедуры обработки одного субблока (например, каждого субблока размером dx*dy текущего блока, например, субблока размером 16*16, или меньшего блока). Первый исходный вектор движения обозначают Org_MV0, второй исходный вектор движения обозначают Org_MV1, первый целевой вектор движения обозначают Refined_MV0, а второй целевой вектор движения обозначают Refined_MV1.[260] The original motion vector correction process is disclosed as a procedure for processing one sub-block (eg, each sub-block of size dx*dy of the current block, for example, a sub-block of size 16*16, or a smaller block). The first source motion vector is denoted Org_MV0, the second source motion vector is denoted Org_MV1, the first target motion vector is denoted Refined_MV0, and the second target motion vector is denoted Refined_MV1.

[261] На этапе d1 выбирают некоторые или все векторы движения из (2*SR+1)*(2*SR+1) точек вокруг первого исходного вектора движения, при этом первый исходный вектор движения принят в качестве центра. Например, если SR =2, то выбирают некоторые или все векторы движения из 25 точек вокруг первого исходного вектора движения в качестве потенциальных векторов движения. Далее определяют значение стоимости первого исходного вектора движения и определяют значение стоимости каждого потенциального вектора движения. Далее вектор движения с минимальным значением стоимости применяют в качестве оптимального вектора движения.[261] In step d1, some or all of the motion vectors are selected from (2*SR+1)*(2*SR+1) points around the first original motion vector, with the first original motion vector taken as the center. For example, if SR=2, then some or all of the 25-point motion vectors around the first original motion vector are selected as candidate motion vectors. Next, the value of the cost of the first initial motion vector is determined and the value of the cost of each potential motion vector is determined. Next, the motion vector with the minimum cost value is used as the optimal motion vector.

[262] В отличие от этапа b1 раскрытого выше варианта осуществления, на этапе d1 все подлежащие обработке потенциальные векторы движения могут быть выбраны одновременно без выполнения итеративного процесса вместо того, чтобы выбрать некоторые векторы движения в ходе первой итерации и выбрать другие векторы движения в ходе второй итерации итеративного процесса. Благодаря этому, все подлежащие обработке потенциальные векторы движения выбирают одновременно, чтобы потенциальные векторы движения можно было обработать параллельно для получения значения стоимости каждого потенциального вектора движения, что позволяет снизить вычислительную сложность и улучшить показатели кодирования.[262] In contrast to step b1 of the above embodiment, in step d1, all potential motion vectors to be processed can be selected simultaneously without performing an iterative process, instead of selecting some motion vectors during the first iteration and selecting other motion vectors during the second iteration. iterations of an iterative process. Due to this, all potential motion vectors to be processed are selected simultaneously so that the potential motion vectors can be processed in parallel to obtain a cost value of each potential motion vector, which can reduce computational complexity and improve coding performance.

[263] На этапе d2 определяют значение IntegerDeltaMV на основе оптимального вектора движения, причем конечное значение IntegerDeltaMV представляет собой первое целопиксельное значение коррекции вектора движения; способ определения не будет повторно раскрываться в настоящем параграфе.[263] In step d2, an IntegerDeltaMV value is determined based on the optimal motion vector, the final IntegerDeltaMV value being the first integer pixel value of the motion vector correction; the method of determination will not be rediscovered in this paragraph.

[264] На этапе d3: оптимальный вектор движения принимают в качестве центра, получают оптимальный субпиксельный смещенный ВД, который обозначают SPMV, при этом SPMV - это первое субпиксельное значение коррекции вектора движения.[264] In step d3: the optimal motion vector is taken as the center, the optimal sub-pixel offset VD is obtained, which is denoted SPMV, wherein SPMV is the first sub-pixel motion vector correction value.

[265] С процессом реализации этапе d3 можно ознакомиться выше в описании этапа b2, поэтому он не будет раскрываться повторно в настоящем параграфе.[265] The implementation process of step d3 can be found above in the description of step b2, so it will not be disclosed again in this paragraph.

[266] На этапе d4 получают BestMVoffset на основе IntegerDeltaMV и SPMV. Например, BestMVoffset= IntegerDeltaMV+SPMV.[266] In step d4, a BestMVoffset is obtained based on IntegerDeltaMV and SPMV. For example, BestMVoffset= IntegerDeltaMV+SPMV.

[267] Целевой вектор движения получают на основе BestMVoffset: Refined_MV0=Org_MV0+BestMVoffset; Refined_MV1=Org_MV1-BestMVoffset.[267] The target motion vector is obtained based on the BestMVoffset: Refined_MV0=Org_MV0+BestMVoffset; Refined_MV1=Org_MV1-BestMVoffset.

[268] Вариант осуществления 23: на этапе 303 и этапе 403 реализация коррекции первого и второго исходных векторов Org_MV0 и Org_MV1 движения до первого и второго целевых векторов Refined_MV0 и Refined_MV1 движения соответственно аналогична реализации в вариантах осуществления 21, 22.[268] Embodiment 23: In step 303 and step 403, the implementation of correcting the first and second source motion vectors Org_MV0 and Org_MV1 to the first and second target motion vectors Refined_MV0 and Refined_MV1, respectively, is similar to the implementation in Embodiments 21, 22.

[269] В данном варианте осуществления все векторы движения выбирают из (2*SR+1)*(2*SR+1) точек вокруг исходного вектора движения, при этом исходный вектор движения принят в качестве центра. Например, если SR =2, то все векторы движения выбирают из 25 точек вокруг исходного вектора движения, определяют значения стоимости этих векторов и определяют значение стоимости каждого вектора движения. Далее вектор движения с минимальным значением стоимости применяют в качестве оптимального вектора движения.[269] In this embodiment, all motion vectors are selected from (2*SR+1)*(2*SR+1) points around the original motion vector, with the original motion vector taken as the center. For example, if SR=2, then all motion vectors are selected from 25 points around the original motion vector, the cost values of these vectors are determined, and the cost value of each motion vector is determined. Next, the motion vector with the minimum cost value is used as the optimal motion vector.

[270] Вариант осуществления 24: на этапе 303 и этапе 403 реализация коррекции первого и второго исходных векторов Org_MV0 и Org_MV1 движения до первого и второго целевых векторов Refined_MV0 и Refined_MV1 движения соответственно аналогична реализации в вариантах осуществления 21, 22. В данном варианте осуществления все подлежащие обработке потенциальные векторы движения выбирают одновременно, чтобы потенциальные векторы движения можно было обработать параллельно для получения значения стоимости каждого потенциального вектора движения, что позволяет снизить вычислительную сложность и улучшить показатели кодирования.[270] Embodiment 24: In step 303 and step 403, the implementation of correcting the first and second source motion vectors Org_MV0 and Org_MV1 to the first and second target motion vectors Refined_MV0 and Refined_MV1, respectively, is similar to the implementation in Embodiments 21, 22. In this embodiment, all subjects processing, the potential motion vectors are selected simultaneously so that the potential motion vectors can be processed in parallel to obtain a cost value for each potential motion vector, which can reduce computational complexity and improve coding performance.

[271] В данном варианте осуществления некоторые из векторов движения со смещением не больше SR выбирают из (2*SR+1)*(2*SR+1) точек вокруг исходного вектора движения, при этом исходный вектор движения принят в качестве центра. Например, N (N не меньше 1 и не больше (2*SR+1)*(2*SR+1)) потенциальных точек выбирают из (2*SR+1)*(2*SR+1) точек, включающих исходный вектор движения. Определяют значения стоимости векторов движения, соответствующие указанным N точкам. Значения стоимости N точек просматривают в определенной последовательности и выбирают вектор движения с минимальным значением стоимости в качестве оптимального вектора движения. Если значения стоимости равны, предпочтительно выбирают потенциальные точки самого высокого порядка.[271] In this embodiment, some of the motion vectors with an offset of no more than SR are selected from (2*SR+1)*(2*SR+1) points around the original motion vector, with the original motion vector taken as the center. For example, N (N is not less than 1 and not more than (2*SR+1)*(2*SR+1)) potential points are selected from (2*SR+1)*(2*SR+1) points, including the original motion vector. The cost values of the motion vectors corresponding to the specified N points are determined. The cost values of N points are viewed in a certain sequence and the motion vector with the minimum cost value is selected as the optimal motion vector. If the cost values are equal, the highest order potential points are preferably selected.

[272] В одном примере, если SR =2, число потенциальных точек может составлять 25, при этом последовательность потенциальных точек может быть слева направо и сверху вниз. На Фиг.7A последовательность потенциальных точек может быть: { Mv(-2, -2), Mv(-1, -2), Mv(0, -2), Mv(1, -2), Mv(2, -2), Mv(-2, -1), Mv(-1, -1), Mv(0, -1), Mv(1, -1), Mv(2, -1), Mv(-2, 0), Mv(-1, 0), Mv(0, 0), Mv(1, 0), Mv(2, 0), Mv(-2, 1), Mv(-1, 1), Mv(0, 1), Mv(1, 1), Mv(2, 1), Mv(-2, 2), Mv(-1, 2), Mv(0, 2), Mv(1, 2), Mv(2, 2) }.[272] In one example, if SR=2, the number of candidate points may be 25, with the sequence of candidate points being left to right and top to bottom. 7A, the sequence of potential points may be: { Mv(-2, -2), Mv(-1, -2), Mv(0, -2), Mv(1, -2), Mv(2, - 2), Mv(-2, -1), Mv(-1, -1), Mv(0, -1), Mv(1, -1), Mv(2, -1), Mv(-2, 0), Mv(-1, 0), Mv(0, 0), Mv(1, 0), Mv(2, 0), Mv(-2, 1), Mv(-1, 1), Mv( 0, 1), Mv(1, 1), Mv(2, 1), Mv(-2, 2), Mv(-1, 2), Mv(0, 2), Mv(1, 2), Mv (2, 2) }.

[273] Определяют значения стоимости, соответствующие векторам движения 25 точек, выполняют просмотр в вышеуказанной последовательности, получают вектор движения с минимальным значением стоимости в виде оптимального смещенного ВД, с помощью которого можно определять целопиксельное значение коррекции вектора движения и субпиксельное значение коррекции вектора движения, при этом способы определения можно узнать из раскрытых выше вариантов осуществления.[273] The cost values corresponding to the motion vectors of 25 points are determined, scanned in the above sequence, a motion vector with a minimum cost value is obtained in the form of an optimal offset VD, with which an integer pixel motion vector correction value and a subpixel motion vector correction value can be determined, when this determination methods can be learned from the embodiments disclosed above.

[274] В другом примере, если SR =2, то число потенциальных точек может составлять 21, при этом последовательность потенциальных точек может быть слева направо и сверху вниз. На Фиг. 7B последовательность потенциальных точек может быть: {Mv(-1,-2), Mv(0,-2), Mv(1,-2), Mv(-2,-1), Mv(-1,-1), Mv(0,-1), Mv(1, -1), Mv(2, -1), Mv(-2, 0), Mv(-1, 0), Mv(0, 0), Mv(1, 0), Mv(2, 0), Mv(-2, 1), Mv(-1, 1), Mv(0, 1), Mv(1, 1), Mv(2, 1), Mv(-1, 2), Mv(0, 2), Mv(1, 2)}. Определяют значения стоимости, соответствующие векторам движения 21 точки, выполняют просмотр в вышеуказанной последовательности, получают вектор движения с минимальным значением стоимости в виде оптимального смещенного ВД, с помощью которого можно определять целопиксельное значение коррекции вектора движения и субпиксельное значение коррекции вектора движения, при этом способы определения можно узнать из раскрытых выше вариантов осуществления.[274] In another example, if SR=2, then the number of candidate points may be 21, with the sequence of candidate points being left to right and top to bottom. On FIG. 7B the sequence of potential points can be: {Mv(-1,-2), Mv(0,-2), Mv(1,-2), Mv(-2,-1), Mv(-1,-1) , Mv(0,-1), Mv(1, -1), Mv(2, -1), Mv(-2, 0), Mv(-1, 0), Mv(0, 0), Mv( 1, 0), Mv(2, 0), Mv(-2, 1), Mv(-1, 1), Mv(0, 1), Mv(1, 1), Mv(2, 1), Mv (-1, 2), Mv(0, 2), Mv(1, 2)}. The cost values corresponding to the motion vectors of 21 points are determined, the view is performed in the above sequence, the motion vector with the minimum cost value is obtained in the form of an optimal offset VD, with which it is possible to determine the integral pixel value of the motion vector correction and the subpixel value of the motion vector correction, while methods for determining can be learned from the embodiments disclosed above.

[275] В другом примере, если SR = 2, число потенциальных точек может составлять 25, при этом последовательность этих потенциальных точек представляет собой последовательность от области вблизи центра к области вдали от него, при этом вектор (0, 0) движения принят в качестве центра. На Фиг.7C последовательность потенциальных точек может быть: {Mv(0, 0) , Mv(-1, 0), Mv(0,-1), Mv(1, 0), Mv(0, 1), Mv(-1, 1), Mv(-1,-1), Mv(1,-1), Mv(1, 1), Mv(0, 2), Mv(-2, 0), Mv(0,-2), Mv(2, 0), Mv(1, 2), Mv(-1, 2), Mv(-2, 1), Mv(-2,-1), Mv(-1,-2), Mv(1,-2), Mv(2,-1), Mv(2, 1), Mv(-2, 2), Mv(-2,-2), Mv(2,-2), Mv(2, 2)}. Определяют значения стоимости, соответствующие векторам движения 25 точек, выполняют просмотр в вышеуказанной последовательности, получают вектор движения с минимальным значением стоимости в виде оптимального смещенного ВД, с помощью которого можно определять целопиксельное значение коррекции вектора движения и субпиксельное значение коррекции вектора движения, при этом способы определения можно узнать из раскрытых выше вариантов осуществления.[275] In another example, if SR = 2, the number of candidate points may be 25, with the sequence of these candidate points being a sequence from an area near the center to an area away from it, with the (0, 0) motion vector taken as center. In Fig.7C, the sequence of potential points can be: {Mv(0, 0) , Mv(-1, 0), Mv(0,-1), Mv(1, 0), Mv(0, 1), Mv( -1, 1), Mv(-1,-1), Mv(1,-1), Mv(1, 1), Mv(0, 2), Mv(-2, 0), Mv(0,- 2), Mv(2, 0), Mv(1, 2), Mv(-1, 2), Mv(-2, 1), Mv(-2,-1), Mv(-1,-2) , Mv(1,-2), Mv(2,-1), Mv(2, 1), Mv(-2, 2), Mv(-2,-2), Mv(2,-2), Mv (2, 2)}. The cost values corresponding to the motion vectors of 25 points are determined, the scan is performed in the above sequence, the motion vector with the minimum cost value is obtained in the form of an optimal shifted VD, with which you can determine the integral pixel value of the motion vector correction and the subpixel value of the motion vector correction, while methods for determining can be learned from the embodiments disclosed above.

[276] В другом примере, если SR =2, число потенциальных точек может составлять 21, при этом последовательность этих потенциальных точек представляет собой последовательность от области вблизи центра к области вдали от него, при этом вектор (0, 0) движения принят в качестве центра. На Фиг.7D последовательность потенциальных точек представляет собой: { Mv(0,0), Mv(-1,0), Mv(0, -1), Mv(1,0), Mv(0,1), Mv(-1,1), Mv(-1, -1), Mv(1, -1), Mv(1,1), Mv(0,2), Mv(-2,0), Mv(0, -2), Mv(2,0), Mv(1, 2), Mv(-1,2), Mv(-2,1), Mv(-2, -1), Mv(-1, -2), Mv(1, -2), Mv(2, -1), Mv(2, 1) }. [276] In another example, if SR =2, the number of potential points may be 21, with the sequence of these potential points being a sequence from an area near the center to an area away from it, with the motion vector (0, 0) taken as center. 7D, the sequence of potential points is: { Mv(0.0), Mv(-1.0), Mv(0, -1), Mv(1.0), Mv(0.1), Mv( -1.1), Mv(-1, -1), Mv(1, -1), Mv(1.1), Mv(0.2), Mv(-2.0), Mv(0, - 2), Mv(2,0), Mv(1, 2), Mv(-1,2), Mv(-2,1), Mv(-2, -1), Mv(-1, -2) , Mv(1, -2), Mv(2, -1), Mv(2, 1) }.

[277] Определяют значения стоимости, соответствующие векторам движения 21 точки, выполняют просмотр в вышеуказанной последовательности, получают вектор движения с минимальным значением стоимости в виде оптимального смещенного ВД, с помощью которого можно определять целопиксельное значение коррекции вектора движения и субпиксельное значение коррекции вектора движения, при этом способы определения можно узнать из раскрытых выше вариантов осуществления.[277] The cost values corresponding to the motion vectors of the 21 points are determined, scanned in the above sequence, the motion vector with the minimum cost value is obtained in the form of the optimal offset VD, with which the integral pixel motion vector correction value and the subpixel motion vector correction value can be determined, when this determination methods can be learned from the embodiments disclosed above.

[278] В другом примере, если SR =2, число потенциальных точек может составлять 13, при этом последовательность этих потенциальных точек представляет собой последовательность от области вблизи центра к области вдали от него, при этом вектор (0, 0) движения принят в качестве центра. На Фиг.7E последовательность потенциальных точек представляет собой: {Mv(0,0), Mv(-1,0), Mv(0,-1), Mv(1,0), Mv(0,1), Mv(-1,1), Mv(-1,-1), Mv(1,-1), Mv(1, 1), Mv(0, 2), Mv(-2, 0), Mv(0,-2), Mv(2, 0)}. Определяют значения стоимости, соответствующие векторам движения 13 точек, выполняют просмотр в вышеуказанной последовательности, получают вектор движения с минимальным значением стоимости в виде оптимального смещенного ВД, с помощью которого можно определять целопиксельное значение коррекции вектора движения и субпиксельное значение коррекции вектора движения, при этом способы определения можно узнать из раскрытых выше вариантов осуществления.[278] In another example, if SR =2, the number of potential points may be 13, with the sequence of these potential points being a sequence from an area near the center to an area away from it, with the motion vector (0, 0) taken as center. 7E, the sequence of potential points is: {Mv(0.0), Mv(-1.0), Mv(0,-1), Mv(1.0), Mv(0.1), Mv( -1,1), Mv(-1,-1), Mv(1,-1), Mv(1, 1), Mv(0, 2), Mv(-2, 0), Mv(0,- 2), Mv(2, 0)}. The cost values corresponding to the motion vectors of 13 points are determined, the view is performed in the above sequence, the motion vector with the minimum cost value is obtained in the form of an optimal offset VD, with which it is possible to determine the integral pixel value of the motion vector correction and the subpixel value of the motion vector correction, while methods for determining can be learned from the embodiments disclosed above.

[279] Вариант осуществления 25: на этапе 303 и этапе 403 реализация коррекции первого и второго исходных векторов Org_MV0 и Org_MV1 движения до первого и второго целевых векторов Refined_MV0 и Refined_MV1 движения соответственно аналогична реализации в вариантах осуществления 21, 22. В данном варианте осуществления все подлежащие обработке потенциальные векторы движения выбирают одновременно, чтобы потенциальные векторы движения можно было обработать параллельно для получения значения стоимости каждого потенциального вектора движения, что позволяет снизить вычислительную сложность и улучшить показатели кодирования.[279] Embodiment 25: In step 303 and step 403, the implementation of correcting the first and second source motion vectors Org_MV0 and Org_MV1 to the first and second target motion vectors Refined_MV0 and Refined_MV1, respectively, is similar to the implementation in Embodiments 21, 22. In this embodiment, all subjects processing, the potential motion vectors are selected simultaneously so that the potential motion vectors can be processed in parallel to obtain a cost value for each potential motion vector, which can reduce computational complexity and improve coding performance.

[280] В данном варианте осуществления некоторые из векторов движения со смещением не больше SR выбирают из (2*SR+1)*(2*SR+1) точек вокруг исходного вектора движения, при этом исходный вектор движения принят в качестве центра. Например, N (N не меньше 1 и не больше (2*SR+1)*(2*SR+1)) потенциальных точек выбирают из (2*SR+1)*(2*SR+1) точек, включающих исходный вектор движения. Определяют значения стоимости векторов движения, соответствующие указанным N точкам. Значения стоимости N точек просматривают в определенной последовательности и выбирают вектор движения с минимальным значением стоимости в качестве оптимального вектора движения. Если значения стоимости равны, предпочтительно выбирают потенциальные точки самого высокого порядка.[280] In this embodiment, some of the motion vectors with an offset of no more than SR are selected from (2*SR+1)*(2*SR+1) points around the original motion vector, with the original motion vector taken as the center. For example, N (N is not less than 1 and not more than (2*SR+1)*(2*SR+1)) potential points are selected from (2*SR+1)*(2*SR+1) points, including the original motion vector. The cost values of the motion vectors corresponding to the specified N points are determined. The cost values of N points are viewed in a certain sequence and the motion vector with the minimum cost value is selected as the optimal motion vector. If the cost values are equal, the highest order potential points are preferably selected.

[281] Вариант осуществления 25 отличен от варианта осуществления 24 в том, что все положения потенциальных точек варианте осуществления 24 являются фиксированными, т.е. независимыми от исходного вектора движения, тогда как положения потенциальных точек в варианте осуществления 25 связаны с исходным вектором движения, несколько частных примеров чего описаны ниже.[281] Embodiment 25 differs from Embodiment 24 in that all potential dot positions of Embodiment 24 are fixed, i. independent of the original motion vector, while the positions of the potential points in embodiment 25 are associated with the original motion vector, a few particular examples of which are described below.

[282] В одном примере, если SR =2, то число потенциальных точек может составлять 13, при этом последовательность этих потенциальных точек представляет собой последовательность от области вблизи центра к области вдали от него, при этом вектор (0, 0) движения принят в качестве центра. Кроме того, последовательность потенциальных точек первого слоя от центра не зависит от размера исходного вектора движения, а последовательность потенциальных точек второго слоя от центра зависит от размера исходного вектора движения. Последовательность потенциальных точек представляет собой: {Mv(0,0), Mv(-1,0), Mv(0,-1), Mv(1,0), Mv(0,1), Mv(-1,1), Mv(-1,-1), Mv(1,-1), Mv(1,1), Mv(sign_H*2,0), Mv(sign_H*2,sign_V*1), Mv(sign_H*1, sign_V *2), Mv(sign_H*1, sign_V *2)}. Первый исходный вектор движения обозначают MV0, горизонтальную составляющую - MV0_Hor, а вертикальную составляющую - MV0_Ver. Если MV0_Hor не меньше 0, то sign_H = 1; в ином случае sign_H = -1; если MV0_Ver не меньше 0, то sign_V = 1; в ином случае sign_V = -1.[282] In one example, if SR =2, then the number of potential points may be 13, with the sequence of these potential points being a sequence from the area near the center to the area away from it, with the motion vector (0, 0) taken in as a centre. In addition, the sequence of potential points of the first layer from the center does not depend on the size of the original motion vector, and the sequence of potential points of the second layer from the center depends on the size of the original motion vector. The sequence of potential points is: {Mv(0.0), Mv(-1.0), Mv(0,-1), Mv(1.0), Mv(0.1), Mv(-1.1 ), Mv(-1,-1), Mv(1,-1), Mv(1,1), Mv(sign_H*2,0), Mv(sign_H*2,sign_V*1), Mv(sign_H* 1, sign_V *2), Mv(sign_H*1, sign_V *2)}. The first original motion vector is designated MV0, the horizontal component is MV0_Hor, and the vertical component is MV0_Ver. If MV0_Hor is not less than 0, then sign_H = 1; otherwise sign_H = -1; if MV0_Ver is not less than 0, then sign_V = 1; otherwise sign_V = -1.

[283] Определяют значения стоимости, соответствующие векторам движения 13 точек, выполняют просмотр в вышеуказанной последовательности, получают вектор движения с минимальным значением стоимости в виде оптимального смещенного ВД, с помощью которого можно определять целопиксельное значение коррекции вектора движения и субпиксельное значение коррекции вектора движения, при этом способы определения можно узнать из раскрытых выше вариантов осуществления.[283] The cost values corresponding to the motion vectors of the 13 points are determined, scanned in the above sequence, the motion vector with the minimum cost value is obtained in the form of the optimal offset VD, with which the integral pixel motion vector correction value and the subpixel motion vector correction value can be determined, when this determination methods can be learned from the embodiments disclosed above.

[284] В другом примере, если SR =2, то число потенциальных точек может составлять 13, при этом последовательность этих потенциальных точек представляет собой последовательность от области вблизи центра к области вдали от него, при этом вектор (0, 0) движения принят в качестве центра. Кроме того, последовательность потенциальных точек первого слоя от центра не зависит от размера исходного вектора движения, а последовательность потенциальных точек второго слоя от центра зависит от размера исходного вектора движения. Последовательность потенциальных точек представляет собой: {Mv(0,0), Mv(-1,0), Mv(0,-1), Mv(1,0), Mv(0,1), Mv(-1,1), Mv(-1,-1), Mv(1,-1), Mv(1,1), Mv(sign_H*2,0), Mv(sign_H*2,sign_V*1), Mv(sign_H*1, sign_V *2), Mv(sign_H*1, sign_V *2)}. Первый исходный вектор движения обозначают MV0, горизонтальную составляющую - MV0_Hor, а вертикальную составляющую - MV0_Ver. Если MV0_Hor больше 0, то sign_H = 1; в ином случае sign_H = -1; если MV0_Ver больше 0, то sign_V = 1; в ином случае sign_V = -1.[284] In another example, if SR =2, then the number of potential points may be 13, with the sequence of these potential points being a sequence from the area near the center to the area away from it, with the motion vector (0, 0) taken in as a centre. In addition, the sequence of potential points of the first layer from the center does not depend on the size of the original motion vector, and the sequence of potential points of the second layer from the center depends on the size of the original motion vector. The sequence of potential points is: {Mv(0.0), Mv(-1.0), Mv(0,-1), Mv(1.0), Mv(0.1), Mv(-1.1 ), Mv(-1,-1), Mv(1,-1), Mv(1,1), Mv(sign_H*2,0), Mv(sign_H*2,sign_V*1), Mv(sign_H* 1, sign_V *2), Mv(sign_H*1, sign_V *2)}. The first original motion vector is designated MV0, the horizontal component is MV0_Hor, and the vertical component is MV0_Ver. If MV0_Hor is greater than 0, then sign_H = 1; otherwise sign_H = -1; if MV0_Ver is greater than 0, then sign_V = 1; otherwise sign_V = -1.

[285] Определяют значения стоимости, соответствующие векторам движения 13 точек, выполняют просмотр в вышеуказанной последовательности, получают вектор движения с минимальным значением стоимости в виде оптимального смещенного ВД, с помощью которого можно определять целопиксельное значение коррекции вектора движения и субпиксельное значение коррекции вектора движения, при этом способы определения можно узнать из раскрытых выше вариантов осуществления.[285] The cost values corresponding to the motion vectors of the 13 points are determined, scanned in the above sequence, the motion vector with the minimum cost value is obtained in the form of the optimal offset VD, with which the integral pixel motion vector correction value and the subpixel motion vector correction value can be determined, when this determination methods can be learned from the embodiments disclosed above.

[286] Вариант осуществления 26: в раскрытых выше вариантах осуществления первое значение стоимости, соответствующее центральному вектору движения, и второе значение стоимости, соответствующее краевому вектору движения, получают на основе первого значения пикселя первого опорного блока и второго значения пикселя второго опорного блока. Третье значение стоимости, соответствующее первому исходному вектору движения, и четвертое значение стоимости, соответствующее потенциальным векторам движения, получают на основе первого значения пикселя первого опорного блока и второго значения пикселя второго опорного блока.[286] Embodiment 26: In the embodiments disclosed above, the first cost value corresponding to the center motion vector and the second cost value corresponding to the edge motion vector are obtained based on the first pixel value of the first reference block and the second pixel value of the second reference block. A third cost value corresponding to the first original motion vector and a fourth cost value corresponding to the potential motion vectors are obtained based on the first pixel value of the first reference block and the second pixel value of the second reference block.

[287] В одном примере первое значение стоимости, соответствующее центральному вектору движения, второе значение стоимости, соответствующее краевому вектору движения, третье значение стоимости, соответствующее первому исходному вектору движения, и четвертое значение стоимости, соответствующее потенциальному вектору движения, можно получать на основе первого значения пикселя без понижающей дискретизации и второго значения пикселя без понижающей дискретизации.[287] In one example, a first cost value corresponding to a center motion vector, a second cost value corresponding to an edge motion vector, a third cost value corresponding to a first source motion vector, and a fourth cost value corresponding to a potential motion vector can be obtained based on the first value. a non-downsampling pixel and a second non-downsampling pixel value.

[288] В другом примере выполняют операцию понижающей дискретизации в отношении первого и второго значений пикселей; далее на основе первого и второго значений пикселей после понижающей дискретизации получают первое значение стоимости, соответствующее центральному вектору движения, второе значение стоимости, соответствующее краевому вектору движения, третье значение стоимости, соответствующее первому исходному вектору движения, и четвертое значение стоимости, соответствующий потенциальному вектору движения.[288] In another example, a downsampling operation is performed on the first and second pixel values; further, based on the first and second pixel values after downsampling, the first cost value corresponding to the central motion vector, the second cost value corresponding to the edge motion vector, the third cost value corresponding to the first original motion vector, and the fourth cost value corresponding to the potential motion vector are obtained.

[289] В другом примере выполняют понижающую дискретизацию и операцию сдвига в отношении первого и второго значений пикселей, после чего на основе первого и второго значений пикселей после сдвига и понижающей дискретизации получают первое значение стоимости, соответствующее центральному вектору движения, второе значение стоимости, соответствующее краевому вектору движения, третье значение стоимости, соответствующее первому исходному вектору движения, и четвертое значение стоимости, соответствующее потенциальному вектору движения.[289] In another example, a downsampling and shifting operation is performed on the first and second pixel values, and then based on the first and second pixel values after shifting and downsampling, a first cost value corresponding to the central motion vector, a second cost value corresponding to the edge motion vector, a third cost value corresponding to the first original motion vector, and a fourth cost value corresponding to the potential motion vector.

[290] Способ, включающий в себя определение значения стоимости, аналогичен для разных ситуаций. Например, для получения значения стоимости, соответствующего центральному вектору движения, опорный субблок A1, соответствующий центральному вектору движения, можно получать путем копирования из первого опорного блока, a опорный субблок B1, соответствующий вектору движения, симметричному центральному вектору движения, можно получать путем копирования из второго опорного блока, при этом значение стоимости, соответствующее центральному вектору движения, можно получать согласно первому значению пикселя опорного субблока A1 и второму значению пикселя опорного субблока B1. Для получения значения стоимости, соответствующего краевому вектору движения, опорный субблок A2, соответствующий краевому вектору движения, можно получать путем копирования из первого опорного блока, a опорный субблок B2, соответствующий вектору движения, симметричному краевому вектору движения, можно получать путем копирования из второго опорного блока, при этом значение стоимости, соответствующее краевому вектору движения, можно получать согласно первому значению пикселя опорного субблока A2 и второму значению пикселя опорного субблока B2, и т.п.[290] The method including determining the cost value is similar for different situations. For example, to obtain a cost value corresponding to the central motion vector, the reference sub-block A1 corresponding to the central motion vector may be obtained by copying from the first reference block, and the reference sub-block B1 corresponding to the motion vector symmetric to the central motion vector may be obtained by copying from the second of the reference block, wherein the cost value corresponding to the center motion vector can be obtained according to the first pixel value of the reference subblock A1 and the second pixel value of the reference subblock B1. To obtain a cost value corresponding to an edge motion vector, a reference subblock A2 corresponding to the edge motion vector may be obtained by copying from the first reference block, and a reference subblock B2 corresponding to a motion vector symmetric to the edge motion vector may be obtained by copying from the second reference block. , wherein the cost value corresponding to the edge motion vector can be obtained according to the first pixel value of the reference sub-block A2 and the second pixel value of the reference sub-block B2, and the like.

[291] Таким образом, для получения значения стоимости, соответствующего вектору движения, опорный субблок, соответствующий вектору движения, получают на основе первого опорного блока, опорный субблок, соответствующий вектору движения, симметричному указанному вектору движения, получают на основе второго опорного блока, после чего получают значение стоимости, соответствующее вектору движения, по значениям пикселей указанных двух опорных субблоков.[291] Thus, in order to obtain a cost value corresponding to a motion vector, a reference subblock corresponding to the motion vector is obtained based on the first reference block, a reference subblock corresponding to a motion vector symmetric to said motion vector is obtained based on the second reference block, and then obtaining a cost value corresponding to the motion vector from the pixel values of said two reference subblocks.

[292] Вариант осуществления 27: на основе варианта осуществления 26, получают значение стоимости, соответствующее вектору движения, на основе первого значения пикселя без понижающей дискретизации (т.е. значения пикселя без понижающей дискретизации для опорного субблока в первом опорном блоке) и второго значения пикселя без понижающей дискретизации (т.е. значения пикселя без понижающей дискретизации для опорного субблока во втором опорном блоке).[292] Embodiment 27: Based on Embodiment 26, a cost value corresponding to a motion vector is obtained based on the first non-downsampling pixel value (i.e., the non-downsampling pixel value for the reference subblock in the first reference block) and the second value non-downsampling pixel (ie, non-downsampling pixel values for a reference subblock in the second reference block).

[293] В одном примере, предположим, что опорный субблок в первом опорном блоке – это pred0, а опорный субблок во втором опорном блоке - это pred1, значение стоимости определяют на основе САР всех значений пикселей опорных субблоков pred0, pred1, и нет необходимости выполнять понижающую дискретизацию по вертикали в отношении пикселей опорных субблоков pred0, pred1.[293] In one example, suppose the reference subblock in the first reference block is pred0, and the pivot subblock in the second pivot block is predone, the cost value is determined based on the CAP of all pixel values of the reference subblocks pred0, predictone, and there is no need to perform vertical downsampling on the pixels of the reference subblocks pred0, predictone.

[294] На основе всех значений пикселей опорных субблоков pred0, pred1, формула вычисления значения стоимости представляет собой:[294] Based on all the pixel values of the reference subblocks pred 0 , pred 1 , the cost value calculation formula is:

Figure 00000001
Figure 00000001

[295] В вышеприведенном уравнении «cost» - значение стоимости, W - значение ширины опорного субблока, H - значение высоты опорного субблока, pred0(i,j) - значение пикселя вертикального ряда i и горизонтального ряда j опорного субблока pred0, pred1(i,j) - значение пикселя вертикального ряда i и горизонтального ряда j опорного субблока pred1, а abs(x) представляет абсолютное значение x.[295] In the above equation, "cost" is the cost value, W is the width value of the reference subblock, H is the height value of the reference subblock, pred 0 (i,j) is the pixel value of the vertical row i and horizontal row j of the reference subblock pred 0 , pred 1 (i,j) is the pixel value of the vertical row i and horizontal row j of the reference subblock pred 1 , and abs(x) represents the absolute value of x.

[296] Вариант осуществления 28: на основе варианта осуществления 26, можно выполнить операцию понижающей дискретизации в отношении первого и второго значений пикселей; значение стоимости, соответствующее вектору движения, получают на основе первого значения пикселя после понижающей дискретизации (т.е. значения пикселя после понижающей дискретизации для опорного субблока в первом опорном блоке) и второго значения пикселя после понижающей дискретизации (т.е. значения пикселя после понижающей дискретизации для опорного субблока во втором опорном блоке).[296] Embodiment 28: Based on Embodiment 26, a downsampling operation can be performed on the first and second pixel values; the cost value corresponding to the motion vector is obtained based on the first downsampled pixel value (i.e., the downsampled pixel value for the reference subblock in the first reference block) and the second downsampled pixel value (i.e., the downsampled pixel value sampling for the reference subblock in the second reference block).

[297] В одном примере предположим, что опорный субблок в первом опорном блоке – это pred0 , а опорный субблок во втором опорном блоке - это pred1, значение стоимости определяют на основе САР всех значений пикселей опорных субблоков pred0, pred1. Если значение стоимости определяют на основе САР всех значений пикселей, можно выполнить операцию понижающей дискретизации по вертикали в отношении значений пикселей опорных субблоков pred0, pred1 в N раз (N - целое число больше 0 и может составлять 2).[297] In one example, suppose that the reference subblock in the first reference block is pred 0 and the reference subblock in the second reference block is pred 1 , the cost value is determined based on the CAP of all pixel values of the reference subblocks pred 0 , pred 1 . If the cost value is determined based on the CAP of all pixel values, a vertical downsampling operation can be performed on the pixel values of the reference subblocks pred 0 , pred 1 by N times (N is an integer greater than 0 and may be 2).

[298] На основе всех значений пикселей опорных субблоков pred0, pred1, формула вычисления значения стоимости представляет собой:[298] Based on all the pixel values of the reference subblocks pred 0 , pred 1 , the cost value calculation formula is:

Figure 00000002
Figure 00000002

[299] В вышеприведенном уравнении «cost» - значение стоимости, W - значение ширины опорного субблока, H - значение высоты опорного субблока; N представляет параметр понижающей дискретизации и представляет собой целое число больше 0, могущее составлять 2; pred0(1+N(i-1), j) - значение пикселя вертикального ряда 1+N(i-1) и горизонтального ряда j опорного субблока pred0, pred1(1+N(i-1), j) - значение пикселя вертикального ряда 1+N(i-1) и горизонтального ряда j опорного субблока pred1, а abs(x) представляет абсолютное значение x.[299] In the above equation, "cost" is a cost value, W is a reference subblock width value, H is a reference subblock height value; N represents the downsampling parameter and is an integer greater than 0, which may be 2; pred 0 (1+N(i-1), j) - pixel value of vertical row 1+N(i-1) and horizontal row j of reference subblock pred 0 , pred 1 (1+N(i-1), j) is the pixel value of the vertical row 1+N(i-1) and the horizontal row j of the reference subblock pred 1 , and abs(x) represents the absolute value of x.

[300] Вариант осуществления 29: на основе варианта осуществления 26 выполняют операцию понижающей дискретизации в отношении первого и второго значений пикселей, далее на основе первого и второго значений пикселей (значения пикселя после сдвига и понижающей дискретизации для опорного субблока в первом опорном блоке и значения пикселя после сдвига и понижающей дискретизации для опорного субблока во втором опорном блоке) после сдвига и понижающей дискретизации получают значения стоимости, соответствующие векторам движения.[300] Embodiment 29: Based on Embodiment 26, a downsampling operation is performed on the first and second pixel values, then based on the first and second pixel values (the pixel value after shifting and downsampling for the reference subblock in the first reference block and the pixel value after shifting and downsampling for the reference subblock in the second reference block) after shifting and downsampling, cost values corresponding to motion vectors are obtained.

[301] В одном примере предположим, что опорный субблок в первом опорном блоке - это pred0, опорный субблок во втором опорном блоке - это pred1, при этом и pred0, и pred1 сохранены в форме D бит, то есть каждое значение пикселя в pred0 сохранено в D бит и каждое значение пикселя в pred1 сохранено в D бит.[301] In one example, suppose that the reference subblock in the first reference block is pred 0 , the reference subblock in the second reference block is pred 1 , with both pred 0 and pred 1 stored in the form of D bits, that is, each value pixel in pred 0 is stored in D bits and each pixel value in pred 1 is stored in D bits.

[302] Если D не больше 8, то значение стоимости определяют на основе САР всех значений пикселей опорных субблоков pred0, pred1. Если значение стоимости определяют на основе САР всех значений пикселей, можно выполнить операцию понижающей дискретизации по вертикали в отношении значений пикселей опорных субблоков pred0, pred1 в N раз (N – целое число больше 0 и может составлять 2). На основе всех значений пикселей опорных субблоков pred0, pred1, уравнение вычисления значения стоимости имеет вид:[302] If D is not greater than 8, then the cost value is determined based on the CAP of all pixel values of the reference subblocks pred 0 , pred 1 . If the cost value is determined based on the CAP of all pixel values, a vertical downsampling operation can be performed on the pixel values of the reference subblocks pred 0 , pred 1 by N times (N is an integer greater than 0 and may be 2). Based on all the pixel values of the reference subblocks pred 0 , pred 1 , the cost value calculation equation is:

Figure 00000002
Figure 00000002

[303] В вышеприведенном уравнении «cost» - значение стоимости, W - значение ширины опорного субблока, H - значение высоты опорного субблока; N представляет параметр понижающей дискретизации и представляет собой целое число больше 0, могущее составлять 2; pred0(1+N(i-1), j) - значение пикселя вертикального ряда 1+N(i-1) и горизонтального ряда j опорного субблока pred0, pred1(1+N(i-1), j) - значение пикселя вертикального ряда 1+N(i-1) и горизонтального ряда j опорного субблока pred1, а abs(x) представляет абсолютное значение x. Из вышесказанного можно понять, что вычисляют только сумму абсолютных значений разности в горизонтальному ряду 1, N +1, 2N +1, … .[303] In the above equation, "cost" is a cost value, W is a reference subblock width value, H is a reference subblock height value; N represents the downsampling parameter and is an integer greater than 0, which may be 2; pred 0 (1+N(i-1), j) - pixel value of vertical row 1+N(i-1) and horizontal row j of reference subblock pred 0 , pred 1 (1+N(i-1), j) is the pixel value of the vertical row 1+N(i-1) and the horizontal row j of the reference subblock pred 1 , and abs(x) represents the absolute value of x. From the foregoing, it can be understood that only the sum of the absolute values of the difference in the horizontal row 1, N +1, 2N +1, ... is calculated.

[304] Если D больше 8, все значения пикселей опорных субблоков pred0, pred1 сначала сдвигают на 8 бит для получения 8-битового pred0 и 8-битового pred1, обозначенных pred0_8bit(i, j) и pred1_8bit(i, j). Целью является уменьшение стоимости хранения данных вычисления САР, а хранение 8 бит позволяет повысить степень параллельности обработки данных.[304] If D is greater than 8, all pixel values of the reference subblocks pred 0 , pred 1 are first shifted by 8 bits to obtain 8-bit pred 0 and 8-bit pred 1 , denoted by pred 0_8bit(i, j) and pred 1_8bit(i , j) . The goal is to reduce the cost of storing CAP calculation data, and storing 8 bits can increase the degree of parallelism in data processing.

Figure 00000003
Figure 00000003

[305] Далее можно выполнить операцию понижающей дискретизации по вертикали в отношении значений пикселей 8-битового pred0 и 8-битового pred1 в N раз (N - целое число больше 0 и может составлять 2), что позволяет вычислить значение стоимости следующим образом:[305] Next, a vertical downsampling operation can be performed on the pixel values of 8-bit pred 0 and 8-bit pred 1 N times (N is an integer greater than 0 and may be 2), which allows the cost value to be calculated as follows:

Figure 00000004
Figure 00000004

[306] Значения выражений в вышеприведенном уравнении приведены в раскрытых выше вариантах осуществления и не будут повторно приводиться в настоящем параграфе.[306] The meanings of the expressions in the above equation are given in the embodiments disclosed above and will not be repeated in this paragraph.

[307] Вариант осуществления 30: на этапе 304 и этапе 404 для каждого субблока текущего блока выполняют компенсацию движения в отношении субблока на основе первого целевого вектора движения субблока и второго целевого вектора движения субблока. В частности, определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения субблока, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения субблока. Третье значение пикселя третьего опорного блока и четвертое значение пикселя четвертого опорного блока взвешивают для получения значения предсказания субблока.[307] Embodiment 30: In step 304 and step 404, for each subblock of the current block, motion compensation is performed on the subblock based on the subblock's first target motion vector and the subblock's second target motion vector. Specifically, a third reference block corresponding to a subblock is determined based on the first target motion vector of the subblock, and a fourth reference block corresponding to the subblock is determined based on the second target motion vector of the subblock. The third pixel value of the third reference block and the fourth pixel value of the fourth reference block are weighted to obtain a sub-block prediction value.

[308] Например, опорные блоки (т.е. третий и четвертый опорные блоки, включающие в себя трехкомпонентные значения предсказания, при этом необходима интерполяция, так как целевой вектор движения может быть субпиксельным) в двух направлениях получают путем интерполяции (например, с помощью 8-отводного интерполяционного фильтра) на основе двух целевых векторов движения субблока. Третье значение пикселя третьего опорного блока и четвертое значение пикселя четвертого опорного блока взвешивают для получения конечного значения предсказания (три компонента).[308] For example, reference blocks (i.e., third and fourth reference blocks including 3-component prediction values, and interpolation is necessary because the target motion vector may be sub-pixel) in two directions are obtained by interpolation (for example, using 8-tap interpolation filter) based on the two target motion vectors of the subblock. The third pixel value of the third reference block and the fourth pixel value of the fourth reference block are weighted to obtain a final prediction value (three components).

[309] В одном примере пятый опорный блок, соответствующий субблоку, можно определить из первого опорного кадра на основе первого целевого вектора движения субблока, а третий опорный блок можно получать путем интерполяции значений пикселей в пятом опорном блоке. Шестой опорный блок, соответствующий субблоку, можно определить из второго опорного кадра на основе второго целевого вектора движения субблока, а четвертый опорный блок можно получать путем интерполяции значений пикселей в шестом опорном блоке.[309] In one example, a fifth reference block corresponding to a subblock may be determined from the first reference frame based on the first target motion vector of the subblock, and a third reference block may be obtained by interpolating pixel values in the fifth reference block. The sixth reference block corresponding to the subblock may be determined from the second reference frame based on the second target motion vector of the subblock, and the fourth reference block may be obtained by interpolating pixel values in the sixth reference block.

[310] Например, предположим, что размер текущего блока составляет W*H, пятый опорный блок размером A*B можно определить из первого опорного кадра на основе первого целевого вектора движения, размер A*B пятого опорного блока зависит от способа интерполяции, причем, без каких-либо ограничений, A больше W и B больше H. Третий опорный блок размером W*H можно получить путем интерполяции значений пикселей в пятом опорном блоке, причем способ интерполяции в данном случае не ограничен. Шестой опорный блок размером A*B можно определить из второго опорного кадра на основе второго целевого вектора движения, при этом размер A*B шестого опорного блока зависит от способа интерполяции, причем A больше W и B больше H. Четвертый опорный блок размером W*H можно получить путем интерполяции значений пикселей в шестом опорном блоке, причем способ интерполяции в данном случае не ограничен.[310] For example, suppose the size of the current block is W*H, the fifth reference block of size A*B can be determined from the first reference frame based on the first target motion vector, the size A*B of the fifth reference block depends on the interpolation method, and, without any limitation, A is greater than W and B is greater than H. A third reference block of size W*H can be obtained by interpolating pixel values in the fifth reference block, and the interpolation method is not limited in this case. The sixth reference block of size A*B can be determined from the second reference frame based on the second target motion vector, while the size A*B of the sixth reference block depends on the interpolation method, where A is greater than W and B is greater than H. The fourth reference block is W*H can be obtained by interpolating the pixel values in the sixth reference block, and the method of interpolation in this case is not limited.

[311] В другом примере седьмой опорный блок, соответствующий субблоку, определяют из первого опорного кадра на основе первого целевого вектора движения субблока, восьмой опорный блок строят на основе значений пикселей в седьмом опорном блоке и интерполируют значения пикселей в восьмом опорном блоке для получения третьего опорного блока. Девятый опорный блок, соответствующий субблоку, определяют из второго опорного кадра на основе второго целевого вектора движения субблока, десятый опорный блок строят на основе значений пикселей в девятом опорном блоке и интерполируют значения пикселей в десятом опорном блоке для получения четвертого опорного блока.[311] In another example, a seventh reference block corresponding to a subblock is determined from the first reference frame based on the first target motion vector of the subblock, an eighth reference block is built based on the pixel values in the seventh reference block, and the pixel values in the eighth reference block are interpolated to obtain a third reference block. block. The ninth reference block corresponding to the sub-block is determined from the second reference frame based on the second target motion vector of the sub-block, the tenth reference block is built based on the pixel values in the ninth reference block, and the pixel values in the tenth reference block are interpolated to obtain the fourth reference block.

[312] Например, предположим, что размер текущего блока составляет W*H, при этом седьмой опорный блок размером W*H можно определить из первого опорного кадра на основе первого целевого вектора движения. Восьмой опорный блок размером A*B строят на основе значения пикселей в седьмом опорном блоке, при этом способ построения не ограничен. Размер A*B восьмого опорного блока зависит от способа интерполяции, причем, без каких-либо ограничений, A больше W и B больше H. Значения пикселей в восьмом опорном блоке интерполируют для получения третьего опорного блока размером W*H, при этом способ интерполяции не ограничен.[312] For example, suppose that the size of the current block is W*H, while the seventh reference block of size W*H can be determined from the first reference frame based on the first target motion vector. The eighth reference block of size A*B is built based on the pixel value in the seventh reference block, and the construction method is not limited. The size A*B of the eighth reference block depends on the interpolation method, and without any limitation, A is greater than W and B is greater than H. Pixel values in the eighth reference block are interpolated to obtain a third reference block of size W*H, and the interpolation method is not limited.

[313] Например, предположим, что размер текущего блока составляет W*H, при этом девятый опорный блок размером W*H можно определить из второго опорного кадра на основе второго целевого вектора движения. Десятый опорный блок размером A*B строят на основе значения пикселей в девятом опорном блоке, при этом способ построения не ограничен. Размер A*B десятого опорного блока зависит от способа интерполяции, причем, без каких-либо ограничений, A больше W и B больше H. Значения пикселей в десятом опорном блоке интерполируют для получения четвертого опорного блока размером W*H, при этом способ интерполяции не ограничен.[313] For example, suppose that the size of the current block is W*H, while the ninth reference block of size W*H can be determined from the second reference frame based on the second target motion vector. The tenth reference block of size A*B is built based on the pixel value in the ninth reference block, and the construction method is not limited. The size A*B of the tenth reference block depends on the interpolation method, and without any limitation, A is greater than W and B is greater than H. Pixel values in the tenth reference block are interpolated to obtain a fourth reference block of size W*H, and the interpolation method is not limited.

[314] Вариант осуществления 31: после получения целевого вектора движения, на основе целевого вектора движения каждого субблока получают значения предсказания в двух направлениях (т.е. три компонента Y, U, V, т.е. значение предсказания третьего опорного блока и значение предсказания четвертого опорного блока) с помощью 8-отводного интерполяционного фильтра и взвешивают их для получения конечных значений предсказания. На Фиг. 5 значения пикселей черной области и белой области получают из опорного кадра, а значения пикселей серой области необязательно получают из опорного кадра, при этом их можно получить путем копирования значений примыкающих пикселей.[314] Embodiment 31: After obtaining the target motion vector, based on the target motion vector of each sub-block, bi-directional prediction values (i.e., three components Y, U, V, i.e., the prediction value of the third reference block and the value reference block prediction) with an 8-tap interpolation filter and weight them to obtain final prediction values. On FIG. 5, the pixel values of the black region and the white region are obtained from the reference frame, and the pixel values of the gray region are optionally obtained from the reference frame, and can be obtained by copying adjacent pixel values.

[315] В одном примере, сначала W+FS-1 значений пикселей в первом горизонтальном ряду белой зоны можно скопировать в значения пикселей в первых SR горизонтальных рядах серой области. W + FS-1 значений пикселей в последнем горизонтальном ряду белой зоны копируют в значения пикселей в последних SR горизонтальных рядах серой области. Далее H+FS-1 значений пикселей в первом вертикальном ряду белой зоны, а также SR значений пикселей серой области, полученных на верхней стороне, и SR значений пикселей серой области, полученных на нижней стороне, можно скопировать в значения пикселей в первых SR вертикальных рядах серой области. H+FS-1 значений пикселей в последнем вертикальном ряду белой зоны и SR значения пикселей серой области, полученных на верхней стороне, и SR значений пикселей серой области, полученных на нижней стороне, можно скопировать в значения пикселей в последних SR вертикальных рядах серой области.[315] In one example, first W+FS-1 pixel values in the first horizontal row of the white area can be copied to pixel values in the first SR horizontal rows of the gray area. W + FS-1 the pixel values in the last horizontal row of the white area are copied to the pixel values in the last SR horizontal rows of the gray area. Next, the H+FS-1 pixel values in the first vertical row of the white area, as well as the SR pixel values of the gray area obtained on the top side and the SR pixel values of the gray area obtained on the bottom side, can be copied to the pixel values in the first SR vertical rows gray area. H+FS-1 pixel values in the last vertical row of the white area and SR pixel values of the gray area obtained on the top side and SR pixel values of the gray area obtained on the bottom side can be copied to the pixel values in the last SR vertical rows of the gray area.

[316] В другом примере сначала можно скопировать H+FS-1 значений пикселей в первом вертикальном ряду белой зоны в значения пикселей в первых SR вертикальных рядах серой области. H+FS-1 значений пикселей в последнем вертикальном ряду белой зоны копируют в значения пикселей в последних SR вертикальных рядах серой области. Далее W+FS-1 значений пикселей в первом горизонтальном ряду белой зоны, SR значений пикселей серой области, полученных на левой стороне, и SR значений пикселей серой области, полученных на правой стороне, можно скопировать в значения пикселей в первых SR горизонтальных рядах серой области. W+FS-1 значений пикселей в последнем горизонтальном ряду белой зоны, SR значений пикселей серой области, полученных на левой стороне, и SR значения пикселей серой области, полученных на правой стороне, можно скопировать в значения пикселей в последних SR горизонтальных рядах серой области.[316] In another example, the H+FS-1 pixel values in the first vertical row of the white area can first be copied to the pixel values in the first SR vertical rows of the gray area. The H+FS-1 pixel values in the last vertical row of the white area are copied to the pixel values in the last SR vertical rows of the gray area. Further, W+FS-1 pixel values in the first horizontal row of the white area, SR pixel values of the gray area obtained on the left side, and SR pixel values of the gray area obtained on the right side can be copied to the pixel values in the first SR horizontal rows of the gray area . W+FS-1 pixel values in the last horizontal row of the white area, SR pixel values of the gray area obtained on the left side, and SR pixel values of the gray area obtained on the right side can be copied to the pixel values in the last SR horizontal rows of the gray area.

[317] Вариант осуществления 32: после получения целевого вектора движения, на основе целевого вектора движения каждого субблока получают значения предсказания в двух направлениях (т.е. три компонента Y, U, V, т.е. значение предсказания третьего опорного блока и значение предсказания четвертого опорного блока) с помощью 8-отводного интерполяционного фильтра и взвешивают их для получения конечных значений предсказания. На Фиг. 5 значения пикселей черной области и белой области получают из опорного кадра, а значения пикселей серой области получают путем копирования непосредственно из соответствующей зоны опорного кадра, а не путем копирования значений примыкающих пикселей. Данный способ прост и обеспечивает более высокие показатели, однако при этом возрастает количество данных доступа к опорному кадру.[317] Embodiment 32: After obtaining the target motion vector, based on the target motion vector of each sub-block, bi-directional prediction values (i.e., three components Y, U, V, i.e., the prediction value of the third reference block and the value reference block prediction) with an 8-tap interpolation filter and weight them to obtain final prediction values. On FIG. 5, the pixel values of the black region and the white region are obtained from the reference frame, and the pixel values of the gray region are obtained by copying directly from the corresponding area of the reference frame, rather than copying adjacent pixel values. This method is simple and provides better performance, but it increases the amount of access data per reference frame.

[318] Вариант осуществления 33: после получения целевого вектора движения, на основе целевого вектора движения каждого субблока получают значения предсказания в двух направлениях (т.е. три компонента Y, U, V, т.е. предсказанное значение третьего опорного блока и предсказанное значение четвертого опорного блока) с помощью билинейного интерполяционного фильтра (а не 8-отводного интерполяционного фильтра) и взвешивают их для получения конечных значений предсказания. На Фиг.5 значения пикселей черной области и белой области получают из опорного кадра. Так как число отводов относительно мало, нет необходимости в значениях пикселей серой области.[318] Embodiment 33: After obtaining the target motion vector, based on the target motion vector of each sub-block, bi-directional prediction values (i.e., three Y, U, V components, i.e., the predicted value of the third reference block and the predicted the value of the fourth reference block) with a bilinear interpolation filter (rather than an 8-tap interpolation filter) and weight them to obtain final prediction values. In Fig. 5, the pixel values of the black region and the white region are obtained from the reference frame. Since the number of taps is relatively small, there is no need for gray area pixel values.

[319] Вариант осуществления 34: в вариантах осуществления с 30 по 33, после получения значений предсказания в двух направлениях, получают конечное значение предсказания в виде среднего арифметического взвешенного значения (т.е. значения предсказания в двух направлениях имеют одинаковый вес). В качестве альтернативы, после получения значений предсказания в двух направлениях, конечное предсказанное значение получают в виде средневзвешенного значения, при этом веса указанных двух значений предсказания могут быть разными. Например, соотношение весов двух значений предсказания может составлять 1:2, 1:3, 2:1 и т.д.[319] Embodiment 34: In Embodiments 30 to 33, after obtaining the prediction values in the two directions, the final prediction value is obtained as an arithmetic weighted average (i.e., the prediction values in the two directions have the same weight). Alternatively, after bidirectional prediction values are obtained, the final predicted value is obtained as a weighted average, and the weights of the two prediction values may be different. For example, the weight ratio of two prediction values may be 1:2, 1:3, 2:1, and so on.

[320] Для стороны кодирования, таблица весов может включать в себя соотношение весов: 1:2, 1:3, 2:1 и т.д., при этом сторона кодирования может определять значение стоимости каждого соотношения весов и определять соотношение весов с минимальным значением стоимости, благодаря чему сторона кодирования может получать конечное значение предсказания в виде средневзвешенного значения на основе соотношения весов с минимальным значением стоимости.[320] For the encoding side, the weight table may include a weight ratio: 1:2, 1:3, 2:1, etc., while the encoding side can determine the value of the cost of each weight ratio and determine the weight ratio with a minimum cost value, whereby the encoding side can obtain the final prediction value as a weighted average based on the ratio of the weights with the minimum cost value.

[321] Когда сторона кодирования отправляет битовый поток кодирования стороне декодирования, битовый поток кодирования содержит значение индекса соотношения весов в таблице весов. Таким образом, сторона декодирования анализирует значение индекса битового потока кодирования, получает соотношение весов, соответствующее значению индекса, из таблицы весов и получает конечное значение предсказания в виде средневзвешенного значения на основе соотношения весов.[321] When the coding side sends the coding bitstream to the decoding side, the coding bitstream contains a weight ratio index value in the weight table. Thus, the decoding side analyzes the index value of the encoding bitstream, obtains a weight ratio corresponding to the index value from the weight table, and obtains a prediction end value as a weighted average based on the weight ratio.

[322] В одном примере таблица весов может включать в себя, помимо прочего, {-2, 3, 4, 5, 10}. Вес «-2» указывает, что конечное значение предсказания = (значение предсказания 1*(-2) + значение предсказания 2*(8- (-2))), т.е. (-2*-значение предсказания 1 + 10*-значение предсказания 2) / 8. Вес «10» указывает, что соотношение весов составляет 10: -2, т.е. конечное значение предсказания = (значение предсказания 1*(10) + предсказанное значение 2*(-2)), т.е. (10*значение предсказания 1 - 2*значение предсказания 2) / 8. Вес «3» указывает соотношение весов 3: 5. Вес «5» указывает соотношение весов 5: 3. Вес «4» указывает соотношение весов 4: 4, т.е. вес «4» указывает, что веса являются одинаковыми.[322] In one example, the weight table may include, among other things, {-2, 3, 4, 5, 10}. The weight "-2" indicates that the final prediction value = (prediction value 1*(-2) + prediction value 2*(8- (-2))), i.e. (-2*-prediction value 1 + 10*-prediction value 2) / 8. The weight "10" indicates that the weight ratio is 10: -2, i.e. final prediction value = (prediction value 1*(10) + predicted value 2*(-2)), i.e. (10*prediction value 1 - 2*prediction value 2) / 8. Weight "3" indicates a weight ratio of 3:5. Weight "5" indicates a weight ratio of 5:3. Weight "4" indicates a weight ratio of 4:4, m .e. weight "4" indicates that the weights are the same.

[323] Вариант осуществления 35: на этапе 305 и этапе 405 должны быть сохранены первый и второй целевые векторы движения каждого субблока текущего блока, при этом первый и второй целевые векторы движения применяют в качестве опорных для кодирования и декодирования последующего блока. Например, первый и второй целевые векторы движения применяют для контурной фильтрации текущего кадра; первый и второй целевые векторы движения применяют для привязки во временной области последующих кадров; и/или первый и второй целевые векторы движения применяют для привязки в пространственной области текущего кадра.[323] Embodiment 35: At step 305 and step 405, the first and second target motion vectors of each subblock of the current block are to be stored, with the first and second target motion vectors being used as references for encoding and decoding the subsequent block. For example, the first and second target motion vectors are used for loop filtering of the current frame; the first and second target motion vectors are used for time-domain anchoring of subsequent frames; and/or the first and second target motion vectors are used for anchoring in the spatial region of the current frame.

[324] Например, первый и второй целевые векторы движения каждого субблока текущего блока можно применять для компенсации движения текущего блока, а также для привязки во временной области последующих кадров. В другом примере первый и второй целевые векторы движения каждого субблока текущего блока можно применять для компенсации движения текущего блока, для контурной фильтрации текущего блока и для привязки во временной области последующих кадров.[324] For example, the first and second target motion vectors of each sub-block of the current block can be used to compensate for the motion of the current block, as well as to anchor subsequent frames in the time domain. In another example, the first and second target motion vectors of each sub-block of the current block can be used to compensate for the motion of the current block, to contour filter the current block, and to time-domain anchor subsequent frames.

[325] В другом примере первый и второй целевые векторы движения каждого субблока текущего блока можно применять для компенсации движения текущего блока, для контурной фильтрации текущего блока, для привязки во временной области последующих кадров, а также для привязки в пространственной области текущего кадра, как будет раскрыто ниже.[325] In another example, the first and second target motion vectors of each sub-block of the current block can be used to compensate for the motion of the current block, to loop filter the current block, to anchor in the time domain of subsequent frames, and also for anchor in the spatial domain of the current frame, as will be disclosed below.

[326] Первый и второй целевые векторы движения каждого субблока текущего блока можно применять для привязки в пространственной области блоков в пределах определенных НЕК (наибольших единиц кодирования, англ. Largest Coding units (НЕК)) в пространственной области. Так как кодирование осуществляют в последовательности сверху вниз и слева направо, вектор движения текущего блока может быть привязан к другим блокам в пределах текущей НЕК, а также к блокам в пределах последующей примыкающей НЕК. Учитывая большой объем вычислений, необходимых для получения целевого вектора движения, в случае привязки последующих блоков к целевому вектору движения текущего блока время ожидания будет долгим. Во избежание задержки по времени из-за слишком долгого ожидания, разрешено привязывать только малое число примыкающих блоков в пространственной области к целевому вектору движения текущего блока, а прочие блоки привязывают к исходному вектору движения текущего блока. На Фиг.8 указанное малое число блоков включает в себя субблоки, расположенные в наибольших единицах кодирования, расположенных ниже и ниже справа от нижней стороны текущей НЕК, при этом субблоки, расположенные в наибольших единицах кодирования, расположенных справа и ниже слева, могут не быть привязаны к целевому вектору движения текущего блока.[326] The first and second target motion vectors of each sub-block of the current block can be used to anchor in the spatial domain of blocks within certain LECs (Largest Coding Units (HEC)) in the spatial domain. Since encoding is performed in a top-to-bottom, left-to-right sequence, the current block's motion vector can be linked to other blocks within the current NEK, as well as blocks within a subsequent adjacent NEK. Given the large amount of computation required to obtain the target motion vector, if subsequent blocks are tied to the target motion vector of the current block, the wait time will be long. In order to avoid time delay due to too long waiting, it is allowed to bind only a small number of adjoining blocks in the spatial region to the target motion vector of the current block, and other blocks are bound to the source motion vector of the current block. In FIG. 8, the indicated small number of blocks includes sub-blocks located in the largest coding units located below and below to the right of the bottom side of the current HEK, while sub-blocks located in the largest coding units located to the right and lower left may not be associated. to the target motion vector of the current block.

[327] Вариант осуществления 36: ниже раскрыт частный пример процесса коррекции вектора движения. Конкретные этапы коррекции вектора движения могут быть такими, как указано ниже, при этом «копирование» означает получение без интерполяции, т.е. если ВД представляет собой целопиксельное смещение, то его можно непосредственно скопировать из опорного кадра, а в ином случае необходима интерполяция.[327] Embodiment 36: A particular example of a motion vector correction process is disclosed below. The specific motion vector correction steps may be as follows, where "copy" means to obtain without interpolation, i.e. if the VD is an integer pixel offset, then it can be directly copied from the reference frame, otherwise interpolation is necessary.

[328] На этапе e1, в случае применения режима слияния или пропуска для текущего блока, выполняют последующую обработку.[328] In step e1, if the merge or skip mode is applied to the current block, post-processing is performed.

[329] На этапе e2 готовят значения опорных пикселей (исходя из того, что ширина текущего блока составляет W, а высота составляет H).[329] In step e2, reference pixel values are prepared (assuming the width of the current block is W and the height is H).

[390] Готовят целопиксельный блок для этапа e3: на основе исходного вектора движения (исходный вектор движения list0 обозначают Org_MV0, исходный вектор движения list1 обозначают Org_MV1), целопиксельные блоки трех компонентов с двумя блоками площадью (W+FS-1) (H+FS-1) копируют в соответствующем положении соответствующих опорных кадров.[390] Integer pixel block for step e3 is prepared: based on the original motion vector (original motion vector list0 is Org_MV0, original motion vector list1 is Org_MV1), integer pixel blocks of three components with two area blocks (W+FS-1) (H+FS -1) are copied at the corresponding position of the corresponding reference frames.

[331] Готовят целопиксельный блок для этапа e4: на основе целопиксельных блоков площадью (W+FS-1)*(H+FS-1) целопиксельные блоки трех компонентов площадью (W+FS-1) (H+FS-1) увеличивают вверх, вниз, влево и вправо на SR горизонтальных рядов/вертикальных рядов и получают, после увеличения, целопиксельные блоки трех компонентов площадью (W+FS-1+2*SR) * (H+FS-1+2*SR), обозначенные на Фиг.5 как Pred_Inter0, Pred_Inter1.[331] Whole pixel block is prepared for step e4: based on whole pixel blocks with area (W+FS-1)*(H+FS-1), whole pixel blocks of three components with area (W+FS-1) (H+FS-1) increase up, down, left and right by SR horizontal rows/vertical rows and get, after enlargement, whole pixel blocks of three components of area (W+FS-1+2*SR) * (H+FS-1+2*SR) denoted 5 as Pred_Inter0, Pred_Inter1.

[332] Сначала выполняют компенсацию движения на основе информации о движении в двух разных направлениях. Например, для яркостной составляющей (поскольку для упрощения в последующем процессе поиска применяют только яркостную составляющую для вычисления значения стоимости), исходные значения предсказания опорных пикселей (обозначенных Pred_Bilinear0, Pred_Bilinear1) размером (W +2 SR)*((H +2 SR)) можно получать путем билинейной интерполяции на основе двух целопиксельных опорных блоков площадью (W+FS-1)*(H+FS-1). FS - это число отводов фильтра, по умолчанию составляющее 8, а SR - диапазон поиска, т.е. максимальной интерполяции горизонтальной/вертикальной составляющей целевого вектора движения и исходного вектора движения, по умолчанию составляющий 2. Pred_Bilinear0/Pred_Bilinea1 применяют на этапе e3.[332] First, motion compensation is performed based on motion information in two different directions. For example, for the luminance component (since only the luminance component is used to calculate the cost value for simplicity in the subsequent search process), the original reference pixel prediction values (denoted Pred_Bilinear0, Pred_Bilinear1) of size (W +2 SR)*((H +2 SR)) can be obtained by bilinear interpolation based on two integer pixel reference blocks of area (W+FS-1)*(H+FS-1). FS is the number of filter taps, which is 8 by default, and SR is the search range, i.e. the maximum interpolation of the horizontal/vertical component of the target motion vector and the source motion vector, defaulting to 2. Pred_Bilinear0/Pred_Bilinea1 is applied in step e3.

[333] На этапе e3 для каждого субблока dx*dy (целого блока размером 16*16 или менее) текущего блока получают соответствующие целевые векторы движения (два целевых вектора движения обозначены соответственно Refined_MV0 и Refined_MV1).[333] In step e3, for each sub-block dx*dy (an entire block of 16*16 or less) of the current block, corresponding target motion vectors are obtained (two target motion vectors are designated Refined_MV0 and Refined_MV1, respectively).

[334] На этапе e31 выполняют SR итераций для получения оптимального целопиксельного смещения точки целопиксельного ВД, обозначаемого IntegerDeltaMV, при этом для IntegerDeltaMV устанавливают начальное значение (0, 0), и выполняют последующую обработку для каждой итерации:[334] At step e31, SR iterations are performed to obtain the optimal integer pixel offset of the integer VD point, denoted by IntegerDeltaMV, with IntegerDeltaMV set to the initial value (0, 0), and subsequent processing is performed for each iteration:

[335] на этапе e311 устанавливают значение (0, 0) для deltaMV. При выполнении первой итерации два блока значения предсказания (т.е. наиболее близкий к центру блок W*H Pred_Bilinear0/1) получают путем копирования на основе исходных векторов движения в опорном пикселе Pred_Bilinear0/1; и получают исходное значение стоимости, т.е. САР после операции понижающей дискретизации, выполняемой по вертикали в отношении блоков значения предсказания в двух направлениях в 2 раза, на основе указанных двух блоков значения предсказания.[335] at step e311 set the value (0, 0) for deltaMV. When the first iteration is performed, two prediction value blocks (ie, the closest to the center block W*H Pred_Bilinear0/1) are obtained by copying based on the original motion vectors in the reference pixel Pred_Bilinear0/1; and get the initial cost value, i.e. A CAP after a vertical downsampling operation on bi-directional prediction value blocks by a factor of 2 based on said two prediction value blocks.

[336] Если исходное значение стоимости меньше 4*dx*dy/2, где dx и dy - ширина и высота текущего субблока, последующий процесс поиска непосредственно пропускают, выполняют этап e32, а для notZeroCost устанавливают значение «false».[336] If the initial cost value is less than 4*dx*dy/2, where dx and dy are the width and height of the current subblock, the subsequent search process is directly skipped, step e32 is performed, and notZeroCost is set to "false".

[337] На этапе e312, как показано на Фиг.6, последовательно получают пять смещенных ВД (все они именуются MVOffset) в последовательности {Mv(0,1), Mv(0,-1), Mv(1,0), Mv(-1,0), Mv(вправо, вниз)}, при этом вышеуказанная исходная точка принята в качестве центра, и выполняют процесс вычисления и сравнения значений стоимости указанных пяти смещенных ВД.[337] In step e312, as shown in FIG. 6, five offset VDs (all referred to as MVOffset) are sequentially obtained in the sequence {Mv(0,1), Mv(0,-1), Mv(1,0), Mv(-1.0), Mv(right, down)}, with the above starting point taken as the center, and a process of calculating and comparing cost values of said five offset PDs is performed.

[338] Например, на основе определенного MVOffset, в опорном пикселе Pred_Bilinear0/1 получают два блока значения предсказания (например, блок W*H со смещением положения центра MVOffset в Pred_Bilinear0 и блок W*H со смещением положения центра -MVOffset (противоположно list0) в Pred_Bilinear1) на основе данного MVOffset, выполняют понижающую дискретизацию САР указанных двух блоков и вычисляют значения предсказания в качестве значения стоимости MVOffset. Далее резервируют MVOffset (сохраняют в deltaMV) с минимальным значением стоимости, который применяют в качестве новой точки смещения центра следующей итерации.[338] For example, based on the determined MVOffset, two blocks of prediction value are obtained at the reference pixel Pred_Bilinear0/1 (e.g., a W*H block with a center offset of MVOffset in Pred_Bilinear0 and a W*H block with a center offset of -MVOffset (opposite of list0) in Pred_Bilinear1) based on the given MVOffset, the CAP of the two blocks is downsampled, and the prediction values are calculated as the cost value of the MVOffset. Next, an MVOffset is reserved (stored in deltaMV) with a minimum cost value, which is used as the new center offset point of the next iteration.

[339] Используемое по умолчанию значение Mv(вправо, вниз) составляет (-1, -1), при этом, если значение стоимости Mv(1,0) меньше, чем значение Mv(-1, 0), то значение «вправо» составляет 1; если значение стоимости of Mv(0, 1) меньше значения Mv(0, -1), то значение «вниз» составляет 1.[339] The default value of Mv(right, down) is (-1, -1), while if the cost value of Mv(1,0) is less than the value of Mv(-1, 0), then the value of "right » is 1; if the cost value of Mv(0, 1) is less than the value of Mv(0, -1), then the down value is 1.

[340] IntegerDeltaMV обновляют на основе значения deltaMV: IntegerDeltaMV:= IntegerDeltaMV + deltaMV.[340] IntegerDeltaMV is updated based on the value of deltaMV: IntegerDeltaMV:= IntegerDeltaMV + deltaMV.

[341] На этапе e313, после итерации, если оптимальный ВД все еще представляет собой исходный ВД или минимальное значение стоимости составляет 0, то следующий процесс итеративного поиска не выполняют, выполняют этап e32 и устанавливают значение «false» для notZeroCost. В ином случае, если число итераций достигло SR, выполняют этап e32, а если число итераций не достигло SR, оптимальный ВД принимают в качестве центра и выполняют следующий процесс итеративного поиска, то есть совершают возврат на этап e311.[341] In step e313, after iteration, if the optimal VP is still the original VP or the minimum cost value is 0, then the next iterative search process is not performed, step e32 is performed, and notZeroCost is set to false. Otherwise, if the number of iterations has reached SR, step e32 is performed, and if the number of iterations has not reached SR, the optimal VD is taken as the center and the next iterative search process is performed, that is, return to step e311.

[342] На этапе e32 принимают оптимальную точку целопиксельного ВД на этапе e31 в качестве центра, получают оптимальный субпиксельный смещенный ВД, который обозначают SPMV, устанавливают начальное значение (0, 0) для SPMV, а затем выполняют последующую процедуру:[342] In step e32, take the optimal point of the whole-pixel VD in step e31 as the center, obtain the optimal sub-pixel offset VD, which is designated SPMV, set the initial value (0, 0) for SPMV, and then perform the following procedure:

[343] На этапе e321 последующую процедуру выполняют только в том случае, если notZeroCost не имеет значение «false», а deltaMV имеет значение (0, 0), в ином случае исходный вектор движения корректируют непосредственно с применением IntegerDeltaMV.[343] In step e321, the following procedure is performed only if notZeroCost is not "false" and deltaMV is (0, 0), otherwise the original motion vector is corrected directly using IntegerDeltaMV.

[344] На этапе e322 E(x, y) представлено как значение стоимости, соответствующее ВД смещения точки оптимального ВД (x, y), полученному на этапе e31 (значение стоимости, вычисленное на этапе e31). На основе E (x, y) центральной, верхней, нижней, левой и правой точек можно получить смещение (x0, y0) точки с наименьшим E(x, y) следующим образом: x0=N*(E(-1,0)-E(1,0)) / (E(-1,0) + E(1,0)-2* E(0,0)), y0 =N*(E(0,-1)-E(0,1)) / (E(0,-1) + E(0,1)-2* E(0,0)).[344] In step e322, E(x, y) is presented as a cost value corresponding to the offset PD of the optimal PD point (x, y) obtained in step e31 (cost value calculated in step e31). Based on E (x, y) of the center, top, bottom, left and right points, you can get the offset (x 0 , y 0 ) of the point with the smallest E(x, y) as follows: x 0 =N*(E(-1 ,0)-E(1,0)) / (E(-1,0) + E(1,0)-2* E(0,0)), y 0 =N*(E(0,-1 )-E(0,1)) / (E(0,-1) + E(0,1)-2* E(0,0)).

[345] В одном примере, если пиксельная точность вектора движения составляет 1/2, 1/4, 1/8 и 1/16, то N =1, 2, 4 и 8 соответственно. Далее (x0, y0) назначают для deltaMv, SPMV = deltaMv/2N, а если пиксельная точность текущего вектора движения составляет 1/16, то SPMV может составлять (x0/16, y0/16).[345] In one example, if the motion vector pixel precision is 1/2, 1/4, 1/8, and 1/16, then N=1, 2, 4, and 8, respectively. Further, (x 0 , y 0 ) is assigned to deltaMv, SPMV = deltaMv/2N, and if the pixel precision of the current motion vector is 1/16, then SPMV may be (x 0 /16, y 0 /16).

[346] Если E(-1, 0) = E(0, 0), выполняют сдвиг на половину пикселя по горизонтали влево (deltaMv[0] = -N).[346] If E(-1, 0) = E(0, 0), shift half a pixel horizontally to the left (deltaMv[0] = -N).

[347] Если E(1, 0) = E(0, 0), выполняют сдвиг на половину пикселя по горизонтали вправо (deltaMv[0] = N).[347] If E(1, 0) = E(0, 0), shift half a pixel horizontally to the right (deltaMv[0] = N).

[348] Если E(0, -1) = E(0, 0), выполняют сдвиг на половину пикселя по вертикали вверх (deltaMv [1] = -N).[348] If E(0, -1) = E(0, 0), perform a shift of half a pixel vertically up (deltaMv [1] = -N).

[349] Если E(0, -1) = E(0, 0), выполняют сдвиг на половину пикселя по вертикали вниз (deltaMv [1] = N).[349] If E(0, -1) = E(0, 0), perform a shift of half a pixel vertically down (deltaMv[1] = N).

[350] На этапе e33 получают оптимальный смещенный ВД на основе IntegrarteltaMV с целопиксельным смещением на этапе e31 и SPMV с субпиксельным смещением на этапе e32, который обозначают BestMVoffset. BestMVoffset=IntegerDeltaMV+ SPMV. На основе BestMVoffset можно получить целевые векторы движения в двух направлениях: Refined_MV0= Org_MV0+BestMVoffset; Refined_MV1=Org_MV1-BestMVoffset.[350] In step e33, an optimal offset VD is obtained based on IntegrarteltaMV with integer pixel offset in step e31 and SPMV with subpixel offset in step e32, which is designated BestMVoffset. BestMVoffset=IntegerDeltaMV+SPMV. Based on BestMVoffset, you can get target motion vectors in two directions: Refined_MV0= Org_MV0+BestMVoffset; Refined_MV1=Org_MV1-BestMVoffset.

[351] На этапе e4 получают значения предсказания в двух направлениях с помощью 8-отводного интерполяционного фильтра на основе целевого вектора движения каждого субблока и взвешивают его для получения конечного значения предсказания (три компонента). Например, на основе целевых векторов движения Refined_MV0 и Refined_MV1 каждого субблока, в Pred_Inter0/1, полученном на этапе e2, получают соответствующий блок предсказания путем интерполяции (векторы движения могут быть субпиксельными, в связи с чем необходима интерполяция для получения соответствующего блока пикселей).[351] In step e4, bi-directional prediction values are obtained with an 8-tap interpolation filter based on the target motion vector of each subblock and weighted to obtain a final prediction value (three components). For example, based on the target motion vectors Refined_MV0 and Refined_MV1 of each sub-block, in Pred_Inter0/1 obtained in step e2, a corresponding prediction block is obtained by interpolation (the motion vectors may be sub-pixel, and therefore interpolation is necessary to obtain the corresponding block of pixels).

[352] На этапе e5 целевой вектор движения применяют для компенсации движения текущего блока и привязки во временной области последующего кадра.[352] At step e5, the target motion vector is used to compensate for the motion of the current block and anchor in the time domain of the subsequent frame.

[353] Вариант осуществления 37: вышеуказанные варианты осуществления можно реализовать по отдельности или в какой-либо комбинации. Например, варианты осуществления 13, 15, 24 и 29 можно реализовать по отдельности. Вариант осуществления 13 и вариант осуществления 15 реализуют в комбинации, вариант осуществления 13 и вариант осуществления 24 реализуют в комбинации, вариант осуществления 13 и вариант осуществления 29 реализуют в комбинации, вариант осуществления 15 и вариант осуществления 24 реализуют в комбинации, вариант осуществления 15 и вариант осуществления 29 реализуют в комбинации, вариант осуществления 24 и вариант осуществления 29 реализуют в комбинации, вариант осуществления 13, вариант осуществления 15 и вариант осуществления 24 реализуют в комбинации, вариант осуществления 13, вариант осуществления 15 и вариант осуществления 29 реализуют в комбинации, вариант осуществления 15, вариант осуществления 24 и вариант осуществления 29 реализуют в комбинации, вариант осуществления 13, вариант осуществления 15, вариант осуществления 24 и вариант осуществления 29 реализуют в комбинации и т.д. Разумеется, выше приведены только некоторые неограничивающие примеры. Все варианты осуществления настоящей заявки можно реализовать по отдельности или в комбинации.[353] Embodiment 37: The above embodiments can be implemented individually or in any combination. For example, embodiments 13, 15, 24, and 29 may be implemented individually. Embodiment 13 and Embodiment 15 are implemented in combination, Embodiment 13 and Embodiment 24 are implemented in combination, Embodiment 13 and Embodiment 29 are implemented in combination, Embodiment 15 and Embodiment 24 are implemented in combination, Embodiment 15 and Embodiment 29 are implemented in combination, Embodiment 24 and Embodiment 29 are implemented in combination, Embodiment 13, Embodiment 15 and Embodiment 24 are implemented in combination, Embodiment 13, Embodiment 15 and Embodiment 29 are implemented in combination, Embodiment 15, Embodiment 24 and Embodiment 29 are implemented in combination, Embodiment 13, Embodiment 15, Embodiment 24 and Embodiment 29 are implemented in combination, and so on. Of course, the above are only some non-limiting examples. All embodiments of the present application can be implemented individually or in combination.

[354] Вариант осуществления 38:[354] Embodiment 38:

[355] На основе той же идеи, что лежит в основе способа, один из вариантов осуществления настоящей заявки также относится к оборудованию кодирования и декодирования с возможностью применения на стороне кодирования или стороне декодирования, как раскрыто на Фиг.9, представляющей собой структурную схему оборудования, причем оборудование включает в себя:[355] Based on the same idea that underlies the method, one embodiment of the present application also relates to encoding and decoding equipment with the possibility of application on the encoding side or the decoding side, as disclosed in Fig. 9, which is a block diagram of the equipment and the equipment includes:

[356] определяющий модуль 91, выполненный с возможностью, если характеристическая информация текущего блока соответствует особому условию, определения первого опорного блока, соответствующего текущему блоку, на основе первого исходного вектора движения текущего блока и определения второго опорного блока, соответствующего текущему блоку, на основе второго исходного вектора движения текущего блока; обрабатывающий модуль 92, выполненный с возможностью коррекции первого и второго исходных векторов движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; и кодирующий и декодирующий модуль 93, выполненный с возможностью кодирования или декодирования текущего блока на основе первого и второго целевых векторов движения.[356] A determination module 91, configured, if the characteristic information of the current block meets a specific condition, to determine the first reference block corresponding to the current block based on the first original motion vector of the current block, and to determine the second reference block corresponding to the current block based on the second the initial motion vector of the current block; a processing unit 92 configured to correct the first and second source motion vectors according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; and an encoding and decoding module 93, configured to encode or decode the current block based on the first and second target motion vectors.

[357] Характеристическая информация включает в себя по меньшей мере одно из следующего: режим предсказания информации о движении, соответствующий текущему блоку; атрибут информации о движении, соответствующий текущему блоку; информацию о размере текущего блока.[357] The characteristic information includes at least one of the following: a motion information prediction mode corresponding to the current block; a motion information attribute corresponding to the current block; information about the size of the current block.

[358] Если характеристическая информация представляет собой режим предсказания информации о движении, соответствующий текущему блоку, определяющий модуль 91 также выполнен с возможностью: определения того, что режим предсказания информации о движении, соответствующий текущему блоку, соответствует особому условию, если режим предсказания информации о движении, соответствующий текущему блоку, представляет собой стандартный режим слияния; или определения того, что режим предсказания информации о движении, соответствующий текущему блоку, соответствует особому условию, если режим предсказания информации о движении, соответствующий текущему блоку, представляет собой режим слияния для генерирования нового значения предсказания путем объединения значения межкадрового предсказания и значения внутрикадрового предсказания.[358] If the characteristic information is the motion information prediction mode corresponding to the current block, the determination module 91 is also configured to: determine that the motion information prediction mode corresponding to the current block meets a specific condition if the motion information prediction mode , corresponding to the current block, represents the standard merge mode; or determining that the motion information prediction mode corresponding to the current block meets a special condition if the motion information prediction mode corresponding to the current block is a merge mode to generate a new prediction value by combining the inter prediction value and the intra prediction value.

[359] Если характеристическая информация представляет собой атрибут информации о движении, соответствующий текущему блоку, определяющий модуль 91 также выполнен с возможностью: определения того, что атрибут информации о движении, соответствующий текущему блоку, соответствует особому условию, если атрибут информации о движении, соответствующий текущему блоку, состоит в том, что информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях; или определения того, что атрибут информации о движении, соответствующий текущему блоку, соответствует особому условию, если атрибут информации о движении, соответствующий текущему блоку, состоит в том, что информация о движении текущего блока включает в себя информацию о движении в двух разных направлениях, а расстояния между текущим кадром и каждым из двух опорных кадров, соответствующих информации о движении в двух разных направлениях, являются одинаковыми; или определения того, что атрибут информации о движении, соответствующий текущему блоку, соответствует особому условию, если атрибут информации о движении, соответствующий текущему блоку, состоит в том, что для текущего блока вновь используют информацию о движении окружающих блоков; или определения того, что атрибут информации о движении, соответствующий текущему блоку, соответствует особому условию, если атрибут информации о движении, соответствующий текущему блоку, состоит в том, что информация о движении каждого субблока текущего блока является одинаковой.[359] If the characteristic information is a motion information attribute corresponding to the current block, the determining module 91 is also configured to: determine that the motion information attribute corresponding to the current block meets a special condition if the motion information attribute corresponding to the current block is that the movement information of the current block includes movement information in two different directions; or determining that the motion information attribute corresponding to the current block meets a specific condition if the motion information attribute corresponding to the current block is that the motion information of the current block includes motion information in two different directions, and the distances between the current frame and each of the two reference frames corresponding to the motion information in two different directions are the same; or determining that the motion information attribute corresponding to the current block meets a specific condition if the motion information attribute corresponding to the current block is that motion information of surrounding blocks is reused for the current block; or determining that the motion information attribute corresponding to the current block meets a specific condition if the motion information attribute corresponding to the current block is that the motion information of each sub-block of the current block is the same.

[360] Если характеристическая информация представляет собой информацию о размере текущего блока, при этом информация о размере текущего блока включает в себя значение ширины и значение высоты текущего блока, определяющий модуль 91 также выполнен с возможностью: определения того, что информация о размере текущего блока соответствует особому условию, если значение ширины текущего блока находится в пределах первого интервала [первый порог, второй порог]; или определения того, что информация о размере текущего блока соответствует особому условию, если значение высоты текущего блока находится в пределах второго интервала [третий порог, четвертый порог]; или определения того, что информация о размере текущего блока соответствует особому условию, если площадь, полученная на основе значения ширины и значения высоты текущего блока, находится в пределах третьего интервала [пятый порог, шестой порог]; или определения того, что информация о размере текущего блока соответствует особому условию, если значение ширины находится в пределах первого интервала [первый порог, второй порог], значение высоты находится в пределах второго интервала [третий порог, четвертый порог], а площадь находится в пределах третьего интервала [пятый порог, шестой порог].[360] If the characteristic information is current block size information, and the current block size information includes a width value and a height value of the current block, the determination module 91 is also configured to: determine that the current block size information corresponds to a special condition if the width value of the current block is within the first interval [first threshold, second threshold]; or determining that the size information of the current block meets a special condition if the height value of the current block is within the second interval [third threshold, fourth threshold]; or determining that the size information of the current block meets a specific condition if the area obtained based on the width value and the height value of the current block is within a third interval [fifth threshold, sixth threshold]; or determining that the size information of the current block meets a special condition, if the width value is within the first interval [first threshold, second threshold], the height value is within the second interval [third threshold, fourth threshold], and the area is within third interval [fifth threshold, sixth threshold].

[361] Определяющий модуль 91 выполнен с возможностью определения первого опорного блока, соответствующего текущему блоку, на основе первого исходного вектора движения текущего блока и определения второго опорного блока, соответствующего текущему блоку, на основе второго исходного вектора движения текущего блока, что, в частности, означает возможность: определения первого опорного блока, соответствующего текущему блоку, из первого опорного кадра на основе первого исходного вектора движения текущего блока; и определения второго опорного блока, соответствующего текущему блоку, из второго опорного кадра на основе второго исходного вектора движения текущего блока; причем первое значение пикселя каждой пиксельной точки в первом опорном блоке получают путем интерполяции значений пикселей примыкающих пиксельных точек в первом опорном блоке или получают путем копирования значений пикселей примыкающих пиксельных точек в первом опорном блоке; второе значение пикселя каждой пиксельной точки во втором опорном блоке получают путем интерполяции значений пикселей примыкающих пиксельных точек во втором опорном блоке или путем копирования значений пикселей примыкающих пиксельных точек во втором опорном блоке.[361] The determining module 91 is configured to determine the first reference block corresponding to the current block based on the first original motion vector of the current block and determine the second reference block corresponding to the current block based on the second original motion vector of the current block, which, in particular, means the ability to: determine the first reference block corresponding to the current block from the first reference frame based on the first source motion vector of the current block; and determining a second reference block corresponding to the current block from the second reference frame based on the second source motion vector of the current block; wherein the first pixel value of each pixel point in the first reference block is obtained by interpolating pixel values of adjacent pixel points in the first reference block, or obtained by copying pixel values of adjacent pixel points in the first reference block; the second pixel value of each pixel point in the second reference block is obtained by interpolating the pixel values of adjacent pixel points in the second reference block or by copying the pixel values of adjacent pixel points in the second reference block.

[362] Обрабатывающий модуль 92 выполнен с возможностью коррекции первого и второго исходных векторов движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения, что, в частности, означает возможность:[362] The processing module 92 is configured to correct the first and second source motion vectors according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to to the second initial motion vector, which, in particular, means the possibility of:

[363] коррекции первого и второго исходных векторов движения согласно первому и второму значениям пикселей для получения первого и второго целевых векторов движения субблока для каждого субблока текущего блока, если текущий блок содержит по меньшей мере один субблок.[363] correcting the first and second source motion vectors according to the first and second pixel values to obtain the first and second sub-block target motion vectors for each sub-block of the current block, if the current block contains at least one sub-block.

[364] Например, определяют первое целопиксельное значение коррекции вектора движения и второе целопиксельное значение коррекции вектора движения субблока и/или первое субпиксельное значение коррекции вектора движения и второе субпиксельное значение коррекции вектора движения субблока на основе первого и второго значений пикселей; корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения и/или первому субпиксельному значению коррекции вектора движения для получения первого целевого вектора движения субблока; и корректируют второй исходный вектор движения согласно второму целопиксельному значению коррекции вектора движения и/или второму субпиксельному значению коррекции вектора движения для получения второго целевого вектора движения субблока.[364] For example, determining the first integer pixel motion vector correction value and the second integer pixel motion vector correction value of the subblock and/or the first subpixel motion vector correction value and the second subpixel motion vector correction value of the subblock based on the first and second pixel values; correcting the first source motion vector according to the first integer motion vector correction value and/or the first subpixel motion vector correction value to obtain the first target motion vector of the subblock; and adjusting the second source motion vector according to the second integer motion vector correction value and/or the second subpixel motion vector correction value to obtain a second target motion vector of the subblock.

[365] Обрабатывающий модуль 92 выполнен с возможностью определения первого и второго целопиксельных значений коррекции вектора движения субблока, первого и второго субпиксельных значений коррекции вектора движения субблока на основе первого и второго значений пикселей, что, в частности, означает возможность:[365] The processing unit 92 is configured to determine the first and second integer pixel sub-block motion vector correction values, the first and second sub-pixel sub-block motion vector correction values based on the first and second pixel values, which specifically means being able to:

[366] определения первого исходного вектора движения или второго исходного вектора движения в качестве центрального вектора движения;[366] determining the first original motion vector or the second original motion vector as the central motion vector;

[367] определения краевого вектора движения, соответствующего центральному вектору движения;[367] determining the edge motion vector corresponding to the central motion vector;

[368] получения первого значения стоимости, соответствующего центральному вектору движения, и второго значения стоимости, соответствующего краевому вектору движения, на основе первого и второго значений пикселей;[368] obtaining a first cost value corresponding to the center motion vector and a second cost value corresponding to the edge motion vector based on the first and second pixel values;

[369] выбора вектора движения из центрального вектора движения и краевого вектора движения в качестве оптимального вектора движения на основе первого значения стоимости и второго значения стоимости;[369] selecting a motion vector from the center motion vector and the edge motion vector as the optimal motion vector based on the first cost value and the second cost value;

[370] оценки того, соблюдено ли конечное условие; если нет, то определения оптимального вектора движения в качестве центрального вектора движения и повторного определения краевого вектора движения, соответствующего центральному вектору движения;[370] evaluating whether an end condition is met; if not, determining the optimal motion vector as the center motion vector and re-determining the edge motion vector corresponding to the center motion vector;

[371] если да, то определения первого и второго целопиксельных значений коррекции вектора движения субблока на основе оптимального вектора движения; и определения первого и второго субпиксельных значений коррекции вектора движения субблока на основе оптимального вектора движения.[371] if so, determining first and second integer sub-unit motion vector correction values based on the optimal motion vector; and determining first and second sub-pixel sub-block motion vector correction values based on the optimal motion vector.

[372] Обрабатывающий модуль 92 выполнен с возможностью определения краевого вектора движения, соответствующего центральному вектору движения, что, в частности, означает возможность:[372] The processing module 92 is configured to determine an edge motion vector corresponding to the center motion vector, which specifically means the ability to:

[373] сдвига центрального вектора (x, y) движения в разных направлениях на S и последовательного получения краевого вектора (x, y+S) движения, краевого вектора (x, y-S) движения, краевого вектора (x+ S, y) движения, краевого вектора (x-S, y) движения и краевого вектора (x+ вправо, y+ вниз) движения в разных направлениях; или[373] shifting the central motion vector (x, y) in different directions by S and successively obtaining the edge vector (x, y+S) of the motion, the edge vector (x, y-S) of the motion, the edge vector (x+ S, y) of the motion, edge vector (x-S, y) of movement and edge vector (x+ to the right, y+ down) of movement in different directions; or

[374] сдвига центрального вектора (x, y) движения в разных направлениях на S и последовательного получения краевого вектора (x, y-S) движения, краевого вектора (x, y+S) движения, краевого вектора (x-S, y) движения, краевого вектора (x+S, y) движения и краевого вектора (x+ вправо, y+ вниз) движения в разных направлениях;[374] shifting the central motion vector (x, y) in different directions by S and successively obtaining the edge vector (x, y-S) motion, edge vector (x, y+S) motion, edge vector (x-S, y) motion, edge vector (x+S, y) of movement and edge vector (x+ to the right, y+ down) of movement in different directions;

[375] причем используемое по умолчанию значение краевого вектора (x + вправо, y + вниз) движения составляет (x-S, y-S);[375] wherein the default value of the edge vector (x + right, y + down) of motion is (x-S, y-S);

[376] если значение стоимости краевого вектора (x+S, y) движения меньше значения стоимости краевого вектора (x-S, y) движения, то значение «вправо» составляет S; если значение стоимости краевого вектора движения (x, y + S) меньше чем у краевого вектора (x, y-S) движения, то значение «вниз» составляет S; или, если значение стоимости краевого вектора (x+S, y) движения меньше или равно значению стоимости краевого вектора (x-S, y) движения, то значение «вправо» составляет S; если значение стоимости краевого вектора движения (x, y + S) меньше или равно значению стоимости краевого вектора (x, y-S) движения, то значение «вниз» составляет S.[376] if the cost value of the edge vector (x+S, y) of motion is less than the cost value of the edge vector (x-S, y) of motion, then the value of "right" is S; if the cost value of the edge motion vector (x, y+S) is less than that of the edge motion vector (x, y-S), then the "down" value is S; or, if the cost value of the edge vector (x+S, y) of motion is less than or equal to the cost value of the edge vector (x-S, y) of motion, then the value of "right" is S; if the edge motion vector cost value (x, y + S) is less than or equal to the edge motion vector cost value (x, y-S) then the down value is S.

[377] Обрабатывающий модуль 92 выполнен с возможностью получения первого значения стоимости, соответствующего центральному вектору движения, и второго значения стоимости, соответствующего краевому вектору движения, на основе первого и второго значений пикселей, что, в частности, означает возможность:[377] The processing module 92 is configured to obtain a first cost value corresponding to the center motion vector and a second cost value corresponding to the edge motion vector based on the first and second pixel values, which specifically means being able to:

[378] получения первого значения стоимости, соответствующего центральному вектору движения, и второго значения стоимости, соответствующего краевому вектору движения, на основе первого и второго значений пикселей без понижающей дискретизации; или[378] deriving a first cost value corresponding to the center motion vector and a second cost value corresponding to the edge motion vector based on the first and second non-downsampling pixel values; or

[379] выполнения операции понижающей дискретизации в отношении первого и второго значений пикселей; и получения первого значения стоимости, соответствующего центральному вектору движения, и второго значения стоимости, соответствующего краевому вектору движения, на основе первого и второго значений пикселей после понижающей дискретизации; или[379] performing a downsampling operation on the first and second pixel values; and deriving a first cost value corresponding to the center motion vector and a second cost value corresponding to the edge motion vector based on the first and second downsampled pixel values; or

[380] выполнения сдвига и операции понижающей дискретизации в отношении первого значения пикселя и выполнения сдвига и операции понижающей дискретизации в отношении второго значения пикселя; и получения первого значения стоимости, соответствующего центральному вектору движения, и второго значения стоимости, соответствующего краевому вектору движения, на основе первого и второго значений пикселей после сдвига и понижающей дискретизации.[380] performing a shift and downsampling operation on the first pixel value, and performing a shift and downsampling operation on the second pixel value; and deriving a first cost value corresponding to the center motion vector and a second cost value corresponding to the edge motion vector based on the first and second pixel values after the shift and downsampling.

[381] Обрабатывающий модуль 92 выполнен с возможностью определения первого и второго целопиксельных значений коррекции вектора движения субблока, первого и второго субпиксельных значений коррекции вектора движения субблока на основе первого и второго значений пикселей, что, в частности, означает возможность:[381] The processing unit 92 is configured to determine the first and second integer pixel sub-block motion vector correction values, the first and second sub-pixel sub-block motion vector correction values based on the first and second pixel values, which specifically means being able to:

[382] принятия первого исходного вектора движения или второго исходного вектора движения в качестве центра, выбора некоторых или всех векторов движения из окружающих векторов движения и определения выбранных векторов движения в качестве потенциальных векторов движения;[382] taking the first source motion vector or the second source motion vector as the center, selecting some or all of the motion vectors from the surrounding motion vectors, and determining the selected motion vectors as potential motion vectors;

[383] получения третьего значения стоимости, соответствующего первому исходному вектору движения или второму исходному вектору движения, и четвертого значения стоимости, соответствующего каждому из потенциальных векторов движения, на основе первого и второго значений пикселей;[383] obtaining a third cost value corresponding to the first source motion vector or the second source motion vector and a fourth cost value corresponding to each of the potential motion vectors based on the first and second pixel values;

[384] выбора вектора движения из первого исходного вектора движения или второго исходного вектора движения и потенциального вектора движения в качестве оптимального вектора движения на основе третьего значения стоимости и четвертого значения стоимости;[384] selecting a motion vector from the first original motion vector or the second original motion vector and the potential motion vector as the optimal motion vector based on the third cost value and the fourth cost value;

[385] определения первого и второго целопиксельных значений коррекции вектора движения субблока на основе оптимального вектора движения; и определения первого и второго субпиксельных значений коррекции вектора движения субблока на основе оптимального вектора движения.[385] determining first and second integer pixel motion vector correction values of the subblock based on the optimal motion vector; and determining first and second sub-pixel sub-block motion vector correction values based on the optimal motion vector.

[386] Обрабатывающий модуль 92 выполнен с возможностью определения первого и второго целопиксельных значений коррекции вектора движения субблока на основе оптимального вектора движения, что, в частности, означает возможность: определения первого целопиксельного значения коррекции вектора движения субблока на основе оптимального вектора движения и первого исходного вектора движения и определения второго целопиксельного значения коррекции вектора движения субблока на основе первого целопиксельного значения коррекции вектора движения.[386] The processing unit 92 is configured to determine the first and second integer pixel motion vector correction values of the subblock based on the optimal motion vector, which specifically means: determining the first integer pixel motion vector correction value of the subblock based on the optimal motion vector and the first source vector motion and determining a second integer pixel motion vector correction value of the subblock based on the first integer pixel motion vector correction value.

[387] Обрабатывающий модуль 92 выполнен с возможностью определения первого и второго субпиксельных значений коррекции вектора движения субблока на основе оптимального вектора движения, что, в частности, означает возможность: определения первого субпиксельного значения коррекции вектора движения субблока на основе значения стоимости, соответствующего оптимальному вектору движения, и значения стоимости, соответствующего краевому вектору движения, соответствующему оптимальному вектору движения, и определения второго субпиксельного значения коррекции вектора движения субблока на основе первого субпиксельного значения коррекции вектора движения.[387] The processing unit 92 is configured to determine the first and second sub-pixel sub-block motion vector correction values based on the optimal motion vector, which specifically means: determining the first sub-pixel sub-block motion vector correction value based on the cost value corresponding to the optimal motion vector , and a cost value corresponding to an edge motion vector corresponding to the optimal motion vector, and determining a second sub-pixel motion vector correction value of the sub-block based on the first sub-pixel motion vector correction value.

[388] Кодирующий и декодирующий модуль 93 выполнен с возможностью кодирования или декодирования текущего блока на основе первого и второго целевых векторов движения, что, в частности, означает возможность: если текущий блок содержит по меньшей мере один субблок, определения, для каждого субблока текущего блока, третьего опорного блока, соответствующего субблоку, на основе первого целевого вектора движения субблока, и определения четвертого опорного блока, соответствующего субблоку, на основе второго целевого вектора движения субблока; взвешивания третьего значения пикселя третьего опорного блока и четвертого значения пикселя четвертого опорного блока для получения значения предсказания субблока; и определения значения предсказания текущего блока на основе значения предсказания каждого субблока.[388] Encoding and decoding module 93 is configured to encode or decode the current block based on the first and second target motion vectors, which specifically means: if the current block contains at least one subblock, definitions for each subblock of the current block , a third reference block corresponding to the subblock based on the first target motion vector of the subblock, and determining a fourth reference block corresponding to the subblock based on the second target motion vector of the subblock; weighting a third pixel value of the third reference block and a fourth pixel value of the fourth reference block to obtain a sub-block prediction value; and determining a prediction value of the current block based on the prediction value of each sub-block.

[389] Кодирующий и декодирующий модуль 93 выполнен с возможностью определения третьего опорного блока, соответствующего субблоку, на основе первого целевого вектора движения субблока, и определения четвертого опорного блока, соответствующего субблоку, на основе второго целевого вектора движения субблока, что, в частности, означает возможность: определения пятого опорного блока, соответствующего субблоку, из первого опорного кадра на основе первого целевого вектора движения субблока и интерполяции значений пикселей в пятом опорном блоке для получения третьего опорного блока; определения шестого опорного блока, соответствующего субблоку, из второго опорного кадра на основе второго целевого вектора движения субблока и интерполяции значений пикселей в шестом опорном блоке для получения четвертого опорного блока.[389] The encoding and decoding module 93 is configured to determine the third reference block corresponding to the subblock based on the first target motion vector of the subblock, and to determine the fourth reference block corresponding to the subblock based on the second target motion vector of the subblock, which specifically means being able to: determine a fifth reference block corresponding to the sub-block from the first reference frame based on the first target motion vector of the sub-block and interpolate pixel values in the fifth reference block to obtain a third reference block; determining a sixth reference block corresponding to the subblock from the second reference frame based on the second target motion vector of the subblock, and interpolating pixel values in the sixth reference block to obtain a fourth reference block.

[390] Кодирующий и декодирующий модуль 93 выполнен с возможностью определения третьего опорного блока, соответствующего субблоку, на основе первого целевого вектора движения субблока и определения четвертого опорного блока, соответствующего субблоку, на основе второго целевого вектора движения субблока, что, в частности, означает возможность: определения седьмого опорного блока, соответствующего субблоку, из первого опорного кадра на основе первого целевого вектора движения субблока, построения восьмого опорного блока на основе значений пикселей в седьмом опорном блоке и интерполяции значений пикселей в восьмом опорном блоке для получения третьего опорного блока; определения девятого опорного блока, соответствующего субблоку, из второго опорного кадра на основе второго целевого вектора движения субблока, построения десятого опорного блока на основе значений пикселей в девятом опорном блоке и интерполяции значений пикселей в десятом опорном блоке для получения четвертого опорного блока.[390] The encoding and decoding module 93 is configured to determine the third reference block corresponding to the subblock based on the first target motion vector of the subblock, and to determine the fourth reference block corresponding to the subblock based on the second target motion vector of the subblock, which specifically means that : determining a seventh reference block corresponding to the sub-block from the first reference frame based on the first target motion vector of the sub-block, constructing an eighth reference block based on the pixel values in the seventh reference block, and interpolating the pixel values in the eighth reference block to obtain a third reference block; determining a ninth reference block corresponding to the subblock from the second reference frame based on the second target motion vector of the subblock, constructing a tenth reference block based on the pixel values in the ninth reference block, and interpolating the pixel values in the tenth reference block to obtain the fourth reference block.

[391] Оборудование также включает в себя: сохраняющий модуль для сохранения первого и второго целевых векторов движения для текущего блока; причем первый и второй целевые векторы движения применяют для контурной фильтрации текущего кадра, первый и второй целевые векторы движения применяют для привязки во временной области последующих кадров и/или первый и второй целевые векторы движения применяют для привязки в пространственной области текущего кадра.[391] The equipment also includes: a storage module for storing the first and second target motion vectors for the current block; wherein the first and second target motion vectors are used for loop filtering of the current frame, the first and second target motion vectors are used for anchoring in the time domain of subsequent frames, and/or the first and second target motion vectors are used for anchoring in the spatial domain of the current frame.

[392] Вариант осуществления 39: [392] Embodiment 39:

[393] Устройство на стороне декодирования по варианту осуществления настоящей заявки на аппаратном уровне, со схемой аппаратной структуры которого можно ознакомиться, в частности, на Фиг.10. Устройство включает в себя: процессор 101 и машиночитаемый носитель 102 данных, причем машиночитаемый носитель 102 данных содержит сохраненные на нем машиноисполняемые инструкции, которые может исполнять процессор 101; процессор 101 выполнен с возможностью исполнения машиноисполняемых инструкций для реализации способов, раскрытых в приведенных выше примерах настоящей заявки. Например, процессор применяют для исполнения машиноисполняемых инструкций для реализации этапов, на которых:[393] The device on the decoding side of the embodiment of the present application at the hardware level, the hardware structure diagram of which can be seen, in particular, in Fig.10. The device includes: a processor 101 and a computer-readable storage medium 102, the computer-readable storage medium 102 having computer-executable instructions stored thereon, which the processor 101 can execute; the processor 101 is configured to execute computer-executable instructions for implementing the methods disclosed in the above examples of the present application. For example, a processor is used to execute machine-executable instructions to implement steps in which:

[394] если характеристическая информация текущего блока соответствует особому условию, определяют первый опорный блок, соответствующий текущему блоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий текущему блоку, на основе второго исходного вектора движения текущего блока; корректируют первый и второй исходные векторы движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; и декодируют текущий блок на основе первого и второго целевых векторов движения.[394] if the characteristic information of the current block meets the specific condition, determining the first reference block corresponding to the current block based on the first original motion vector of the current block, and determining the second reference block corresponding to the current block based on the second original motion vector of the current block; adjusting the first and second source motion vectors according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; and decoding the current block based on the first and second target motion vectors.

[395] Устройство на стороне кодирования по варианту осуществления настоящей заявки на аппаратном уровне, со схемой аппаратной структуры которого можно ознакомиться, в частности, на Фиг.11. Устройство включает в себя: процессор 111 и машиночитаемый носитель 112 данных, причем машиночитаемый носитель 112 данных содержит сохраненные на нем машиноисполняемые инструкции, которые может исполнять процессор 111; процессор 111 выполнен с возможностью исполнения машиноисполняемых инструкций для реализации способов, раскрытых в приведенных выше примерах настоящей заявки. Например, процессор 111 применяют для исполнения машиноисполняемых инструкций для реализации этапов, на которых: если характеристическая информация текущего блока соответствует особому условию, определяют первый опорный блок, соответствующий текущему блоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий текущему блоку, на основе второго исходного вектора движения текущего блока; корректируют первый и второй исходные векторы движения согласно первому значению пикселя первого опорного блока и второму значению пикселя второго опорного блока для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения; и кодируют текущий блок на основе первого и второго целевых векторов движения.[395] The device on the side of encoding according to an embodiment of the present application at the hardware level, the hardware structure diagram of which can be seen, in particular, in Fig.11. The device includes: a processor 111 and a computer-readable storage medium 112, the computer-readable storage medium 112 having computer-executable instructions stored thereon, which can be executed by the processor 111; the processor 111 is configured to execute computer-executable instructions for implementing the methods disclosed in the above examples of the present application. For example, the processor 111 is used to execute computer-executable instructions to implement the steps of: if the characteristic information of the current block meets a specific condition, determine the first reference block corresponding to the current block based on the first initial motion vector of the current block, and determine the second reference block corresponding to the current block, based on the second source motion vector of the current block; adjusting the first and second source motion vectors according to the first pixel value of the first reference block and the second pixel value of the second reference block to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; and encoding the current block based on the first and second target motion vectors.

[396] На основе той же идеи, что лежит в основе способа, вариант осуществления настоящей заявки также относится к машиночитаемому носителю данных, причем машиночитаемый носитель данных содержит сохраненные на нем множество компьютерных инструкций, при этом, при исполнении компьютерных инструкций процессором, могут быть реализованы способы кодирования и декодирования, раскрытые в приведенных выше примерах настоящей заявки. Машиночитаемый носитель данных может представлять собой любое электронное, магнитное, оптическое или иное физическое устройство хранения, могущее содержать или хранить информацию, например, исполнимые инструкции, данные и т.п. Например, машиночитаемый носитель данных может представлять собой: оперативное запоминающее устройство (ОЗУ, англ. Random Access Memory (RAM)), энергозависимое запоминающее устройство, энергонезависимое запоминающее устройство, флэш-память, накопитель (например, жесткий диск), твердотельный накопитель, диск хранения любого типа (например, компактный диск, цифровой универсальный диск (DVD-диск, англ. Digital Versatile Disk) и т.п.), или аналогичный носитель данных, или их комбинацию.[396] Based on the same idea that underlies the method, an embodiment of the present application also relates to a computer-readable storage medium, and the computer-readable storage medium contains a plurality of computer instructions stored thereon, while, when the computer instructions are executed by the processor, can be implemented the encoding and decoding methods disclosed in the above examples of the present application. A computer-readable storage medium can be any electronic, magnetic, optical, or other physical storage device capable of containing or storing information, such as executable instructions, data, and the like. For example, a computer-readable storage medium can be: any type (for example, a compact disc, a digital versatile disk (DVD-ROM, English Digital Versatile Disk), etc.), or a similar storage medium, or a combination thereof.

[397] Системы, оборудование, модули или блоки, речь о которых шла в раскрытых выше вариантах осуществления, могут быть, в частности, реализованы посредством компьютерной микросхемы или объекта, либо реализованы посредством продукта с определенными функциями. Типичное устройство реализации представляет собой компьютер, который может быть выполнен в форме персонального компьютера, ноутбука, сотового телефона, камерофона, смартфона, карманного персонального компьютера, мультимедийного проигрывателя, навигационного устройства, устройства обмена сообщениями электронной почты, игровой приставки, планшетного компьютера, носимого устройства или их комбинации.[397] The systems, equipment, modules, or blocks discussed in the embodiments disclosed above may, in particular, be implemented by a computer chip or object, or implemented by a product with certain functions. A typical implementation device is a computer, which may be in the form of a personal computer, laptop, cellular phone, camera phone, smartphone, personal digital assistant, media player, navigation device, email messaging device, game console, tablet computer, wearable device, or their combinations.

[398] Для упрощения описания, вышеуказанные устройство раскрыты по отдельности в составе различных блоков в соответствии с их функциями. Разумеется, при реализации настоящей заявки, функции каждого блока могут быть реализованы в одном или нескольких программных и/или аппаратных средствах.[398] To simplify the description, the above devices are disclosed separately in various blocks in accordance with their functions. Of course, in the implementation of the present application, the functions of each block can be implemented in one or more software and/or hardware.

[399] Специалистам в данной области техники будет понятно, что варианты осуществления настоящей заявки могут быть раскрыты применительно к способам, системам или компьютерным программным продуктам. Соответственно, настоящая заявка может быть составлена в форме варианта осуществления, полностью относящегося к аппаратной части, варианта осуществления, полностью относящегося к программной части, или варианта осуществления, сочетающего программные и аппаратные аспекты. Кроме того, варианты осуществления настоящей заявки могут представлять собой компьютерный программный продукт, реализованный на одном или нескольких пригодных для применения в компьютере носителях (в том числе, помимо прочих, на дисковом накопителе, постоянном запоминающем устройстве на компакт-диске (англ. Compact Disk Read-Only Memory (CD-ROM)), оптическом накопителе и т.п.), с выполненной в нем программой, пригодной для применения в компьютере.[399] Those skilled in the art will appreciate that embodiments of the present application may be disclosed in connection with methods, systems, or computer program products. Accordingly, the present application may be in the form of an all-hardware embodiment, an all-software embodiment, or a combination of software and hardware aspects. In addition, embodiments of the present application may be a computer program product implemented on one or more media suitable for use in a computer (including, but not limited to, a disk drive, compact disk read only memory). -Only Memory (CD-ROM)), an optical drive, etc.), with a program executed in it, suitable for use in a computer.

[400] Варианты осуществления способов, устройств (систем) и компьютерных программных продуктов раскрыты в настоящей заявке на примерах, проиллюстрированных на схемах последовательности и/или блок-схемах. Следует понимать, что каждая иллюстрация в виде схемы последовательности, и/или блока схем последовательности, и/или блок-схем и комбинации схем последовательности, и/или блоков схем последовательностей и/или блок-схем может быть реализована посредством компьютерных программных инструкций. Компьютерные программные инструкции могут быть введены в процессор компьютера общего назначения, компьютера специального назначения, встраиваемый процессор или иное программируемое устройство обработки данных, в результате чего будет создана машина, за счет которой инструкции, исполняемые посредством процессора компьютера или иного программируемого устройства обработки данных, образуют оборудование для реализации функций, указанных в последовательности или последовательностях на схемах последовательности и/или в блоке или блоках блок-схем.[400] Embodiments of methods, devices (systems) and computer software products are disclosed in this application by examples illustrated in the sequence diagrams and/or block diagrams. It should be understood that each sequence diagram and/or block of sequence diagrams and/or block diagrams and combination of sequence diagrams and/or blocks of sequence diagrams and/or block diagrams may be implemented by computer program instructions. Computer program instructions may be entered into the processor of a general purpose computer, a special purpose computer, an embedded processor, or other programmable data processing device, resulting in a machine by which instructions, executable by the computer processor or other programmable data processing device, form equipment. to implement the functions indicated in the sequence or sequences in the sequence diagrams and/or in the block or blocks of the block diagrams.

[401] Кроме того, компьютерные программные инструкции также можно хранить в машиночитаемом запоминающем устройстве, могущем побуждать компьютер или иное программируемое оборудование обработки данных к функционированию определенным образом, в связи с чем инструкции, хранимые в этом машиночитаемом запоминающем устройстве, образуют изделие, включающее в себя управляющее устройство, реализующее функцию, указанную в последовательности или последовательностях на схемах последовательности и/или в блоке или блоках блок-схем.[401] In addition, computer program instructions may also be stored in a computer-readable storage device that can cause a computer or other data processing firmware to function in a certain way, in connection with which the instructions stored in this computer-readable storage device form an article, including a control device that implements the function indicated in the sequence or sequences in the sequence diagrams and/or in the block or blocks of the block diagrams.

[402] Компьютерные программные инструкции также могут быть загружены в компьютер или иное программируемое устройство обработки данных для инициирования выполнения в компьютере или ином программируемом устройстве серии рабочих этапов с образованием компьютеризованного процесса, в котором инструкции, исполняемые в компьютере или ином программируемом устройстве, относятся к этапам реализации функций, указанных в последовательности или последовательностях на схемах последовательности и/или в блоке или блоках блок-схем.[402] Computer program instructions may also be downloaded to a computer or other programmable processing device to cause the computer or other programmable device to execute a series of operating steps to form a computerized process in which the instructions executable on the computer or other programmable device are referred to as steps. implementation of the functions indicated in the sequence or sequences in the sequence diagrams and/or in the block or blocks of the block diagrams.

[403] Выше раскрыт только один из вариантов осуществления настоящей заявки, не предназначенный для ограничения настоящей заявки. Специалистам в области техники, к которой относится настоящая заявка, могут прийти на ум разнообразные модификации и изменения. Любая модификация, эквивалентная замена, улучшение или нечто подобное без отступления от существа и принципа настоящей заявки входит в объем, определенный формулой изобретения по настоящей заявке.[403] The above discloses only one of the embodiments of the present application, not intended to limit the present application. Specialists in the field of technology to which this application relates, may come to mind a variety of modifications and changes. Any modification, equivalent replacement, improvement, or the like, without departing from the spirit and principle of the present application, is within the scope of the claims of the present application.

Claims (68)

1. Способ декодирования, включающий в себя этапы, на которых:1. A decoding method, which includes the steps of: когда текущий блок допускает режим уточнения вектора движения, определяют значения предсказания субблоков текущего блока, и определяют значение предсказания текущего блока на основе значений предсказания субблоков текущего блока, причем для каждого субблока текущего блока определение значения предсказания субблока включает в себя следующее:when the current block allows the motion vector refinement mode, determining the sub-block prediction values of the current block, and determining the prediction value of the current block based on the sub-block prediction values of the current block, wherein for each sub-block of the current block, determining the sub-block prediction value includes the following: получают информацию о движении текущего блока, содержащую первый исходный вектор движения и первый опорный кадр, второй исходный вектор движения и второй опорный кадр;receiving information about the movement of the current block, containing the first source motion vector and the first reference frame, the second source motion vector and the second reference frame; определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока;determining a first reference block corresponding to the subblock based on the first source motion vector of the current block, and determining a second reference block corresponding to the subblock based on the second source motion vector of the current block; получают оптимальный вектор движения на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, причем получение оптимального вектора движения включает в себя следующее:deriving the optimal motion vector based on the pixel values of the first reference block and the pixel values of the second reference block, wherein obtaining the optimal motion vector includes the following: принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения; причем исходный вектор движения представляет собой первый исходный вектор движения или второй исходный вектор движения; получают значение стоимости, соответствующее исходному вектору движения, и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока; выбирают вектор движения из исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе значения стоимости, соответствующего исходному вектору движения, и значений стоимости, соответствующих потенциальным векторам движения;taking the original motion vector as the center, selecting motion vectors from motion vectors containing the original motion vector and motion vectors surrounding the original motion vector, and determining the selected motion vectors as candidate motion vectors; wherein the original motion vector is a first original motion vector or a second original motion vector; obtaining a cost value corresponding to the original motion vector and cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block; selecting a motion vector from the original motion vector and the potential motion vectors as the optimal motion vector based on the cost value corresponding to the original motion vector and the cost values corresponding to the potential motion vectors; корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения;adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; определяют значение предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения; причем определение значения предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения включает в себя следующее: определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения; взвешивают значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока для получения значения предсказания субблока.determining a subblock prediction value based on the first target motion vector and the second target motion vector; wherein determining the sub-block prediction value based on the first target motion vector and the second target motion vector includes: determining a third reference block corresponding to the sub-block based on the first target motion vector, and determining a fourth reference block corresponding to the sub-block based on the second target motion vector movement; weighing the pixel values of the third reference block and the pixel values of the fourth reference block to obtain a sub-block prediction value. 2. Способ по п. 1, в котором:2. The method according to claim 1, in which: этап, на котором принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения, включает в себя: принимают исходный вектор движения в качестве центра, выполняют поиск 25 векторов движения, содержащих исходный вектор движения в диапазоне поиска, равном 2, и определяют 25 векторов движения в качестве потенциальных векторов движения; причем последовательность поиска из 25 векторов движения является следующей: { Mv(-2, -2), Mv(-1, -2), Mv(0, -2), Mv(1, -2), Mv(2, -2), Mv(-2, -1), Mv(-1, -1), Mv(0, -1), Mv(1, -1), Mv(2, -1), Mv(-2, 0), Mv(-1, 0), Mv(0, 0), Mv(1, 0), Mv(2, 0), Mv(-2, 1), Mv(-1, 1), Mv(0, 1), Mv(1, 1), Mv(2, 1), Mv(-2, 2), Mv(-1, 2), Mv(0, 2), Mv(1, 2), Mv(2, 2) }.the step of taking the original motion vector as the center, selecting the motion vectors from the motion vectors containing the original motion vector and motion vectors surrounding the original motion vector, and determining the selected motion vectors as potential motion vectors, includes: receiving the original motion vector motion as the center, search for 25 motion vectors containing the original motion vector in the search range of 2, and determine 25 motion vectors as candidate motion vectors; wherein the search sequence of 25 motion vectors is: { Mv(-2, -2), Mv(-1, -2), Mv(0, -2), Mv(1, -2), Mv(2, - 2), Mv(-2, -1), Mv(-1, -1), Mv(0, -1), Mv(1, -1), Mv(2, -1), Mv(-2, 0), Mv(-1, 0), Mv(0, 0), Mv(1, 0), Mv(2, 0), Mv(-2, 1), Mv(-1, 1), Mv( 0, 1), Mv(1, 1), Mv(2, 1), Mv(-2, 2), Mv(-1, 2), Mv(0, 2), Mv(1, 2), Mv (2, 2) }. 3. Способ по п. 1, в котором:3. The method according to claim 1, in which: этап, на котором получают значение стоимости, соответствующее исходному вектору движения, и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, включает в себя следующее:a step of obtaining a cost value corresponding to the original motion vector and cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block, includes the following: получение значений стоимости, соответствующих потенциальным векторам движения, включает в себя: определяют первые опорные субблоки, соответствующие потенциальным векторам движения, на основе первого опорного блока, и определяют вторые опорные субблоки, соответствующие потенциальным векторам движения, на основе второго опорного блока; вычисляют сумму абсолютных разностей выборочных значений пиксельных точек в первых опорных субблоках и вторых опорных субблоках путем использования операции понижающей дискретизации, выполняемой по вертикали в 2 раза; определяют значения стоимости, соответствующие потенциальным векторам движения, на основе полученной суммы абсолютных разностей;obtaining cost values corresponding to potential motion vectors includes: determining first reference subblocks corresponding to potential motion vectors based on the first reference block, and determining second reference subblocks corresponding to potential motion vectors based on the second reference block; calculate the sum of the absolute differences of the sampled values of the pixel dots in the first reference sub-blocks and the second reference sub-blocks by using a 2-fold vertical downsampling operation; determining cost values corresponding to potential motion vectors based on the obtained sum of absolute differences; получение значения стоимости, соответствующего исходному вектору движения, включает в себя: определяют первый опорный субблок, соответствующий исходному вектору движения, на основе первого опорного блока, и определяют второй опорный субблок, соответствующий исходному вектору движения, на основе второго опорного блока; вычисляют сумму абсолютных разностей выборочных значений пиксельных точек в первом опорном субблоке и втором опорном субблоке путем использования операции понижающей дискретизации, выполняемой по вертикали в 2 раза; определяют значение стоимости, соответствующее исходному вектору движения, на основе полученной суммы абсолютных разностей.obtaining a cost value corresponding to the original motion vector includes: determining a first reference subblock corresponding to the original motion vector based on the first reference block, and determining a second reference subblock corresponding to the original motion vector based on the second reference block; calculate the sum of the absolute differences of the sampled values of the pixel dots in the first reference subblock and the second reference subblock by using a 2-fold vertical downsampling operation; determine the value of the cost corresponding to the original motion vector, based on the obtained sum of absolute differences. 4. Способ по п. 1, в котором:4. The method according to claim 1, in which: этап, на котором корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения, включает в себя:the step of adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain the first target motion vector corresponding to the first source motion vector and the second target motion vector corresponding to the second source motion vector, includes: определяют первое целопиксельное значение коррекции вектора движения и второе целопиксельное значение коррекции вектора движения на основе оптимального вектора движения; корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения; и корректируют второй исходный вектор движения согласно второму целопиксельному значению коррекции вектора движения для получения второго целевого вектора движения, соответствующего второму исходному вектору движения; илиdetermining a first integer pixel motion vector correction value and a second integer pixel motion vector correction value based on the optimal motion vector; correcting the first source motion vector according to the first integer pixel motion vector correction value to obtain a first target motion vector corresponding to the first source motion vector; and correcting the second source motion vector according to the second integer pixel motion vector correction value to obtain a second target motion vector corresponding to the second source motion vector; or этап, на котором определяют первое целопиксельное значение коррекции вектора движения и второе целопиксельное значение коррекции вектора движения на основе оптимального вектора движения, включает в себя:a step of determining the first integer pixel motion vector correction value and the second integer pixel motion vector correction value based on the optimal motion vector, includes: определяют первое целопиксельное значение коррекции вектора движения на основе оптимального вектора движения, причем первое целопиксельное значение коррекции вектора движения равно разности оптимального вектора движения и исходного вектора движения;determining a first integer pixel motion vector correction value based on the optimal motion vector, the first integer pixel motion vector correction value being equal to the difference between the optimal motion vector and the original motion vector; определяют второе целопиксельное значение коррекции вектора движения на основе первого целопиксельного значения коррекции вектора движения; причем второе целопиксельное значение коррекции вектора движения и первое целопиксельное значение коррекции вектора движения противоположны друг другу; илиdetermining a second integer pixel motion vector correction value based on the first integer pixel motion vector correction value; wherein the second integer pixel motion vector correction value and the first integer pixel motion vector correction value are opposite to each other; or этап, на котором корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения; и корректируют второй исходный вектор движения согласно второму целопиксельному значению коррекции вектора движения для получения второго целевого вектора движения, соответствующего второму исходному вектору движения, включает в себя:a step of adjusting the first source motion vector according to the first integer pixel motion vector correction value to obtain a first target motion vector corresponding to the first source motion vector; and adjusting the second source motion vector according to the second integer motion vector correction value to obtain a second target motion vector corresponding to the second source motion vector, including: первый целевой вектор движения равен сумме первого исходного вектора движения и первого целопиксельного значения коррекции вектора движения; второй целевой вектор движения равен сумме второго исходного вектора движения и второго целопиксельного значения коррекции вектора движения.the first target motion vector is equal to the sum of the first source motion vector and the first integer pixel motion vector correction value; the second target motion vector is equal to the sum of the second source motion vector and the second integer pixel motion vector correction value. 5. Способ по п. 1, в котором 5. The method according to claim 1, in which этап, на котором корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения, включает в себя:the step of adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain the first target motion vector corresponding to the first source motion vector and the second target motion vector corresponding to the second source motion vector, includes: определяют первое целопиксельное значение коррекции вектора движения, первое субпиксельное значение коррекции вектора движения, второе целопиксельное значение коррекции вектора движения и второе субпиксельное значение коррекции вектора движения на основе оптимального вектора движения; корректируют первый исходный вектор движения согласно первому целопиксельному значению коррекции вектора движения и первому субпиксельному значению коррекции вектора движения для получения первого целевого вектора движения субблока; и корректируют второй исходный вектор движения согласно второму целопиксельному значению коррекции вектора движения и второму субпиксельному значению коррекции вектора движения для получения второго целевого вектора движения субблока; илиdetermining a first integer pixel motion vector correction value, a first subpixel motion vector correction value, a second integer pixel motion vector correction value, and a second subpixel motion vector correction value based on the optimal motion vector; correcting the first source motion vector according to the first integer motion vector correction value and the first subpixel motion vector correction value to obtain the first target motion vector of the subblock; and correcting the second source motion vector according to the second integer motion vector correction value and the second subpixel motion vector correction value to obtain a second target motion vector of the subblock; or этап, на котором определяют первое целопиксельное значение коррекции вектора движения и первое субпиксельное значение коррекции вектора движения на основе оптимального вектора движения, включает в себя:a step of determining the first integer-pixel motion vector correction value and the first sub-pixel motion vector correction value based on the optimal motion vector, includes: определяют первое целопиксельное значение коррекции вектора движения на основе оптимального вектора движения, причем первое целопиксельное значение коррекции вектора движения равно разности оптимального вектора движения и исходного вектора движения;determining a first integer pixel motion vector correction value based on the optimal motion vector, the first integer pixel motion vector correction value being equal to the difference between the optimal motion vector and the original motion vector; определяют первое субпиксельное значение коррекции вектора движения на основе значения стоимости, соответствующего оптимальному вектору движения, и значений стоимости, соответствующих краевым векторам движения, соответствующим оптимальному вектору движения; илиdetermining a first sub-pixel motion vector correction value based on a cost value corresponding to the optimal motion vector and cost values corresponding to edge motion vectors corresponding to the optimal motion vector; or этап, на котором определяют первое субпиксельное значение коррекции вектора движения на основе значения стоимости, соответствующего оптимальному вектору движения, и значений стоимости, соответствующих краевым векторам движения, соответствующим оптимальному вектору движения, включает в себя:the step of determining the first sub-pixel motion vector correction value based on the cost value corresponding to the optimal motion vector and the cost values corresponding to edge motion vectors corresponding to the optimal motion vector, includes: последовательно определяют значения стоимости 5 целопиксельных векторов движения, для которых оптимальный вектор движения принят в качестве центра; причем 5 целопиксельных векторов движения представляют собой 5 краевых векторов движения, полученных путем сдвига по горизонтали влево, по горизонтали вправо, по вертикали вверх и по вертикали вниз соответственно, когда оптимальный вектор движения принят в качестве центра.successively determine the value of the cost of 5 integer motion vectors, for which the optimal motion vector is taken as the center; wherein the 5 integer motion vectors are 5 edge motion vectors obtained by shifting horizontally left, horizontally right, vertically up, and vertically down, respectively, when the optimal motion vector is taken as the center. 6. Способ по п. 1, в котором этап, на котором корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения, включает в себя:6. The method of claim 1, wherein the step of adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain the first target motion vector corresponding to the first source motion vector and the second target motion vector corresponding to the second source motion vector, includes: определяют первое целопиксельное значение коррекции вектора движения и первое субпиксельное значение коррекции вектора движения на основе оптимального вектора движения; получают оптимальный смещенный вектор движения согласно первому целопиксельному значению коррекции вектора движения и первому субпиксельному значению коррекции вектора движения;determining a first integer pixel motion vector correction value and a first subpixel motion vector correction value based on the optimal motion vector; obtaining an optimal offset motion vector according to the first integer motion vector correction value and the first subpixel motion vector correction value; корректируют первый исходный вектор движения на основе оптимального смещенного вектора движения для получения первого целевого вектора движения; корректируют второй исходный вектор движения на основе значения, противоположного оптимальному смещенному вектору движения, для получения второго целевого вектора движения; илиadjusting the first source motion vector based on the optimal offset motion vector to obtain a first target motion vector; adjusting the second source motion vector based on a value opposite to the optimal offset motion vector to obtain a second target motion vector; or этап, на котором определяют первое целопиксельное значение коррекции вектора движения и первое субпиксельное значение коррекции вектора движения на основе оптимального вектора движения, включает в себя:a step of determining the first integer-pixel motion vector correction value and the first sub-pixel motion vector correction value based on the optimal motion vector, includes: определяют первое целопиксельное значение коррекции вектора движения на основе оптимального вектора движения, причем первое целопиксельное значение коррекции вектора движения равно разности оптимального вектора движения и исходного вектора движения;determining a first integer pixel motion vector correction value based on the optimal motion vector, the first integer pixel motion vector correction value being equal to the difference between the optimal motion vector and the original motion vector; определяют первое субпиксельное значение коррекции вектора движения на основе значения стоимости, соответствующего оптимальному вектору движения, и значений стоимости, соответствующих краевым векторам движения, соответствующим оптимальному вектору движения; илиdetermining a first sub-pixel motion vector correction value based on a cost value corresponding to the optimal motion vector and cost values corresponding to edge motion vectors corresponding to the optimal motion vector; or этап, на котором определяют первое субпиксельное значение коррекции вектора движения на основе значения стоимости, соответствующего оптимальному вектору движения, и значений стоимости, соответствующих краевым векторам движения, соответствующим оптимальному вектору движения, включает в себя:the step of determining the first sub-pixel motion vector correction value based on the cost value corresponding to the optimal motion vector and the cost values corresponding to edge motion vectors corresponding to the optimal motion vector, includes: последовательно определяют значения стоимости 5 целопиксельных векторов движения, для которых оптимальный вектор движения принят в качестве центра; причем 5 целопиксельных векторов движения представляют собой 5 краевых векторов движения, полученных путем сдвига по горизонтали влево, по горизонтали вправо, по вертикали вверх и по вертикали вниз соответственно, когда оптимальный вектор движения принят в качестве центра.successively determine the value of the cost of 5 integer motion vectors, for which the optimal motion vector is taken as the center; wherein the 5 integer motion vectors are 5 edge motion vectors obtained by shifting horizontally left, horizontally right, vertically up, and vertically down, respectively, when the optimal motion vector is taken as the center. 7. Способ по п. 5, в котором первый целевой вектор движения равен сумме первого исходного вектора движения, первого целопиксельного значения коррекции вектора движения и первого субпиксельного значения коррекции вектора движения; второй целевой вектор движения равен сумме второго исходного вектора движения, второго целопиксельного значения коррекции вектора движения и второго субпиксельного значения коррекции вектора движения; причем второе целопиксельное значение коррекции вектора движения и первое целопиксельное значение коррекции вектора движения противоположны друг другу; второе субпиксельное значение коррекции вектора движения и первое субпиксельное значение коррекции вектора движения противоположны друг другу.7. The method of claim 5, wherein the first target motion vector is equal to the sum of the first source motion vector, the first integer pixel motion vector correction value, and the first subpixel motion vector correction value; the second target motion vector is equal to the sum of the second source motion vector, the second integer-pixel motion vector correction value, and the second sub-pixel motion vector correction value; wherein the second integer pixel motion vector correction value and the first integer pixel motion vector correction value are opposite to each other; the second sub-pixel motion vector correction value and the first sub-pixel motion vector correction value are opposite to each other. 8. Способ по п. 1, в котором оптимальный вектор движения представляет собой вектор движения с меньшим значением стоимости, выбранный из исходного вектора движения и потенциальных векторов движения.8. The method of claim 1, wherein the optimal motion vector is a lower cost motion vector selected from the original motion vector and potential motion vectors. 9. Способ по п. 1, в котором, когда текущий блок содержит один субблок, указанный субблок и является текущим блоком.9. The method of claim 1, wherein when the current block contains one subblock, said subblock is the current block. 10. Способ кодирования, включающий в себя этапы, на которых:10. An encoding method, which includes the steps of: когда текущий блок допускает режим уточнения вектора движения, определяют значения предсказания субблоков текущего блока, и определяют значение предсказания текущего блока на основе значений предсказания субблоков текущего блока, причем для каждого субблока текущего блока определение значения предсказания субблока включает в себя следующее:when the current block allows the motion vector refinement mode, determining the sub-block prediction values of the current block, and determining the prediction value of the current block based on the sub-block prediction values of the current block, wherein for each sub-block of the current block, determining the sub-block prediction value includes the following: получают информацию о движении текущего блока, содержащую первый исходный вектор движения и первый опорный кадр, второй исходный вектор движения и второй опорный кадр;receiving information about the movement of the current block, containing the first source motion vector and the first reference frame, the second source motion vector and the second reference frame; определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока;determining a first reference block corresponding to the subblock based on the first source motion vector of the current block, and determining a second reference block corresponding to the subblock based on the second source motion vector of the current block; получают оптимальный вектор движения на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, причем получение оптимального вектора движения включает в себя следующее:deriving the optimal motion vector based on the pixel values of the first reference block and the pixel values of the second reference block, wherein obtaining the optimal motion vector includes the following: принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения; причем исходный вектор движения представляет собой первый исходный вектор движения или второй исходный вектор движения; получают значение стоимости, соответствующее исходному вектору движения и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока; выбирают вектор движения из исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе значения стоимости, соответствующего исходному вектору движения, и значений стоимости, соответствующих потенциальным векторам движения;taking the original motion vector as the center, selecting motion vectors from motion vectors containing the original motion vector and motion vectors surrounding the original motion vector, and determining the selected motion vectors as candidate motion vectors; wherein the original motion vector is a first original motion vector or a second original motion vector; obtaining a cost value corresponding to the original motion vector and cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block; selecting a motion vector from the original motion vector and the potential motion vectors as the optimal motion vector based on the cost value corresponding to the original motion vector and the cost values corresponding to the potential motion vectors; корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения;adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; определяют значение предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения; причем определение значения предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения включает в себя следующее: определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения; взвешивают значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока для получения значения предсказания субблока.determining a subblock prediction value based on the first target motion vector and the second target motion vector; wherein determining the sub-block prediction value based on the first target motion vector and the second target motion vector includes: determining a third reference block corresponding to the sub-block based on the first target motion vector, and determining a fourth reference block corresponding to the sub-block based on the second target motion vector movement; weighing the pixel values of the third reference block and the pixel values of the fourth reference block to obtain a sub-block prediction value. 11. Оборудование декодирования, содержащее: процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных содержит сохраненные на нем машиноисполняемые инструкции, которые может исполнять процессор; причем процессор выполнен с возможностью его использования для исполнения машиноисполняемых инструкций для реализации способа по любому из пп. 1-9.11. Decoding equipment, comprising: a processor and a computer-readable storage medium, and the computer-readable storage medium contains machine-executable instructions stored thereon, which can be executed by the processor; moreover, the processor is configured to be used to execute machine-executable instructions for implementing the method according to any one of paragraphs. 1-9. 12. Оборудование кодирования, содержащее: процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных содержит сохраненные на нем машиноисполняемые инструкции, которые может исполнять процессор; причем процессор выполнен с возможностью его использования для исполнения машиноисполняемых инструкций для реализации этапов, на которых:12. Encoding equipment, comprising: a processor and a computer-readable storage medium, and the computer-readable storage medium contains machine-executable instructions stored thereon, which can be executed by the processor; moreover, the processor is configured to be used to execute machine-executable instructions to implement the steps, in which: когда текущий блок допускает режим уточнения вектора движения, определяют значения предсказания субблоков текущего блока, и определяют значение предсказания текущего блока на основе значений предсказания субблоков текущего блока, причем для каждого субблока текущего блока определение значения предсказания субблока включает в себя следующее:when the current block allows the motion vector refinement mode, determining the sub-block prediction values of the current block, and determining the prediction value of the current block based on the sub-block prediction values of the current block, wherein for each sub-block of the current block, determining the sub-block prediction value includes the following: получают информацию о движении текущего блока, содержащую первый исходный вектор движения и первый опорный кадр, второй исходный вектор движения и второй опорный кадр;receiving information about the movement of the current block, containing the first source motion vector and the first reference frame, the second source motion vector and the second reference frame; определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока;determining a first reference block corresponding to the subblock based on the first source motion vector of the current block, and determining a second reference block corresponding to the subblock based on the second source motion vector of the current block; получают оптимальный вектор движения на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, причем получение оптимального вектора движения включает в себя следующее:deriving the optimal motion vector based on the pixel values of the first reference block and the pixel values of the second reference block, wherein obtaining the optimal motion vector includes the following: принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения; причем исходный вектор движения представляет собой первый исходный вектор движения или второй исходный вектор движения; получают значение стоимости, соответствующее исходному вектору движения и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока; выбирают вектор движения из исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе значения стоимости, соответствующего исходному вектору движения, и значений стоимости, соответствующих потенциальным векторам движения;taking the original motion vector as the center, selecting motion vectors from motion vectors containing the original motion vector and motion vectors surrounding the original motion vector, and determining the selected motion vectors as candidate motion vectors; wherein the original motion vector is a first original motion vector or a second original motion vector; obtaining a cost value corresponding to the original motion vector and cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block; selecting a motion vector from the original motion vector and the potential motion vectors as the optimal motion vector based on the cost value corresponding to the original motion vector and the cost values corresponding to the potential motion vectors; корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения;adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; определяют значение предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения; причем определение значения предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения включает в себя следующее: определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения; взвешивают значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока для получения значения предсказания субблока.determining a subblock prediction value based on the first target motion vector and the second target motion vector; wherein determining the sub-block prediction value based on the first target motion vector and the second target motion vector includes: determining a third reference block corresponding to the sub-block based on the first target motion vector, and determining a fourth reference block corresponding to the sub-block based on the second target motion vector movement; weighing the pixel values of the third reference block and the pixel values of the fourth reference block to obtain a sub-block prediction value. 13. Декодирующее устройство, выполненное с возможностью исполнения способа по любому из пп. 1-9.13. Decoding device, configured to execute the method according to any one of paragraphs. 1-9. 14. Кодирующее устройство, выполненное с возможностью исполнения этапов, на которых:14. An encoder configured to execute the steps where: когда текущий блок допускает режим уточнения вектора движения, определяют значения предсказания субблоков текущего блока, и определяют значение предсказания текущего блока на основе значений предсказания субблоков текущего блока, причем для каждого субблока текущего блока определение значения предсказания субблока включает в себя следующее:when the current block allows the motion vector refinement mode, determining the sub-block prediction values of the current block, and determining the prediction value of the current block based on the sub-block prediction values of the current block, wherein for each sub-block of the current block, determining the sub-block prediction value includes the following: получают информацию о движении текущего блока, содержащую первый исходный вектор движения и первый опорный кадр, второй исходный вектор движения и второй опорный кадр;receiving information about the movement of the current block, containing the first source motion vector and the first reference frame, the second source motion vector and the second reference frame; определяют первый опорный блок, соответствующий субблоку, на основе первого исходного вектора движения текущего блока и определяют второй опорный блок, соответствующий субблоку, на основе второго исходного вектора движения текущего блока;determining a first reference block corresponding to the subblock based on the first source motion vector of the current block, and determining a second reference block corresponding to the subblock based on the second source motion vector of the current block; получают оптимальный вектор движения на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока, причем получение оптимального вектора движения включает в себя следующее:deriving the optimal motion vector based on the pixel values of the first reference block and the pixel values of the second reference block, wherein obtaining the optimal motion vector includes the following: принимают исходный вектор движения в качестве центра, выбирают векторы движения из векторов движения, содержащих исходный вектор движения и векторы движения, окружающие исходный вектор движения, и определяют выбранные векторы движения в качестве потенциальных векторов движения; причем исходный вектор движения представляет собой первый исходный вектор движения или второй исходный вектор движения; получают значение стоимости, соответствующее исходному вектору движения, и значения стоимости, соответствующие потенциальным векторам движения, на основе значений пикселей первого опорного блока и значений пикселей второго опорного блока; выбирают вектор движения из исходного вектора движения и потенциальных векторов движения в качестве оптимального вектора движения на основе значения стоимости, соответствующего исходному вектору движения, и значений стоимости, соответствующих потенциальным векторам движения;taking the original motion vector as the center, selecting motion vectors from motion vectors containing the original motion vector and motion vectors surrounding the original motion vector, and determining the selected motion vectors as candidate motion vectors; wherein the original motion vector is a first original motion vector or a second original motion vector; obtaining a cost value corresponding to the original motion vector and cost values corresponding to the potential motion vectors based on the pixel values of the first reference block and the pixel values of the second reference block; selecting a motion vector from the original motion vector and the potential motion vectors as the optimal motion vector based on the cost value corresponding to the original motion vector and the cost values corresponding to the potential motion vectors; корректируют первый исходный вектор движения и второй исходный вектор движения согласно оптимальному вектору движения для получения первого целевого вектора движения, соответствующего первому исходному вектору движения, и второго целевого вектора движения, соответствующего второму исходному вектору движения;adjusting the first source motion vector and the second source motion vector according to the optimal motion vector to obtain a first target motion vector corresponding to the first source motion vector and a second target motion vector corresponding to the second source motion vector; определяют значение предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения; причем определение значения предсказания субблока на основе первого целевого вектора движения и второго целевого вектора движения включает в себя следующее: определяют третий опорный блок, соответствующий субблоку, на основе первого целевого вектора движения, и определяют четвертый опорный блок, соответствующий субблоку, на основе второго целевого вектора движения; взвешивают значения пикселей третьего опорного блока и значения пикселей четвертого опорного блока для получения значения предсказания субблока.determining a subblock prediction value based on the first target motion vector and the second target motion vector; wherein determining the sub-block prediction value based on the first target motion vector and the second target motion vector includes: determining a third reference block corresponding to the sub-block based on the first target motion vector, and determining a fourth reference block corresponding to the sub-block based on the second target motion vector movement; weighing the pixel values of the third reference block and the pixel values of the fourth reference block to obtain a sub-block prediction value. 15. Долговременный машиночитаемый носитель данных, содержащий сохраненные на нем машиноисполняемые инструкции, которые может исполнять процессор, причем процессор выполнен с возможностью его использования для исполнения машиноисполняемых инструкций для реализации способа по любому из п.п. 1-9.15. A non-volatile computer-readable storage medium containing machine-executable instructions stored thereon that can be executed by a processor, the processor being capable of being used to execute machine-executable instructions for implementing a method according to any one of paragraphs. 1-9.
RU2021127171A 2019-03-11 2020-03-11 Method and device for encoding and decoding, equipment on the encoding side and equipment on the decoding side RU2776356C1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910182197.8 2019-03-11

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2022118855A Division RU2795586C2 (en) 2019-03-11 2020-03-11 Method and device for coding and decoding, equipment on the coding side and equipment on the decoding side

Publications (1)

Publication Number Publication Date
RU2776356C1 true RU2776356C1 (en) 2022-07-19

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102611886A (en) * 2011-01-22 2012-07-25 华为技术有限公司 Method for predicting or compensating motion
WO2018128417A1 (en) * 2017-01-04 2018-07-12 삼성전자 주식회사 Video decoding method and apparatus and video encoding method and apparatus
WO2019001259A1 (en) * 2017-06-28 2019-01-03 Huawei Technologies Co., Ltd. Decoder side motion vector refinement in video coding
RU2679195C1 (en) * 2015-02-16 2019-02-06 Хуавэй Текнолоджиз Ко., Лтд. Method of video image encoding, method of video image decoding, encoding device and decoding device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102611886A (en) * 2011-01-22 2012-07-25 华为技术有限公司 Method for predicting or compensating motion
RU2679195C1 (en) * 2015-02-16 2019-02-06 Хуавэй Текнолоджиз Ко., Лтд. Method of video image encoding, method of video image decoding, encoding device and decoding device
WO2018128417A1 (en) * 2017-01-04 2018-07-12 삼성전자 주식회사 Video decoding method and apparatus and video encoding method and apparatus
WO2019001259A1 (en) * 2017-06-28 2019-01-03 Huawei Technologies Co., Ltd. Decoder side motion vector refinement in video coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XU CHEN et al, EE3: Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-E0052, Chengdu, 15-21 October 2016. N.PURNACHAND еt al, Fast Motion Estimation Algorithm for HEVC, IEEE Second International Conference on Consumer Electronics - Berlin (ICCE-Berlin), 2012. *

Similar Documents

Publication Publication Date Title
EP3941056A1 (en) Encoding and decoding method and device, encoder side apparatus and decoder side apparatus
RU2776356C1 (en) Method and device for encoding and decoding, equipment on the encoding side and equipment on the decoding side
RU2795586C2 (en) Method and device for coding and decoding, equipment on the coding side and equipment on the decoding side