RU2808608C2 - Early termination of optical flow refinement - Google Patents

Early termination of optical flow refinement Download PDF

Info

Publication number
RU2808608C2
RU2808608C2 RU2021127327A RU2021127327A RU2808608C2 RU 2808608 C2 RU2808608 C2 RU 2808608C2 RU 2021127327 A RU2021127327 A RU 2021127327A RU 2021127327 A RU2021127327 A RU 2021127327A RU 2808608 C2 RU2808608 C2 RU 2808608C2
Authority
RU
Russia
Prior art keywords
block
prediction
optical flow
motion vectors
predictions
Prior art date
Application number
RU2021127327A
Other languages
Russian (ru)
Other versions
RU2021127327A (en
Inventor
Семих ЭСЕНЛИК
Срирам СЕТУРАМАН
Джива Радж А
Сагар КОТЕЧА
Original Assignee
Хуавэй Текнолоджиз Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хуавэй Текнолоджиз Ко., Лтд. filed Critical Хуавэй Текнолоджиз Ко., Лтд.
Publication of RU2021127327A publication Critical patent/RU2021127327A/en
Application granted granted Critical
Publication of RU2808608C2 publication Critical patent/RU2808608C2/en

Links

Images

Abstract

FIELD: image processing.
SUBSTANCE: invention is related to refinement of optical flow. A video encoding method is claimed, implemented in a decoding device or encoding device, wherein the method comprises: obtaining initial motion vectors for the current block; obtaining first predictions for the sample value in the current block based on the original motion vectors; calculating a first matching value according to the first predictions; determining whether the optical flow refinement process should be performed or not according to at least one preset condition, wherein the at least one preset condition comprises a condition of whether the calculated first matching value is equal to or greater than a threshold value; and performing an optical flow refinement process to obtain a final inter-prediction for the sample value in the current block when it is determined that the optical flow refinement process is to be performed.
EFFECT: increase of accuracy of external prediction of the current block of the picture to be encoded.
17 cl, 11 dwg

Description

Область техникиField of technology

Настоящее изобретение относится к области обработки картинки и, в частности, к уточнению оптического потока.The present invention relates to the field of image processing and, in particular, to optical flow refinement.

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

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

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

Недавно кодировка с внешним предсказанием была улучшена за счет уточнения оптического потока с двунаправленным предсказанием. Этот метод может повысить точность внешнего предсказания текущего блока картинки, подлежащей кодированию. Однако уточнение (совершенствование) оптического потока с двунаправленным предсказанием относительно дорого с точки зрения вычислительной нагрузки. Таким образом, необходимо найти компромисс между точным внешним предсказанием и вычислительной нагрузкой. Настоящее изобретение решает эту задачу.Recently, inter-prediction coding has been improved by refining the optical flow with bidirectional prediction. This method can improve the accuracy of the external prediction of the current block of the picture to be encoded. However, refining (improving) optical flow with bidirectional prediction is relatively expensive in terms of computational load. Thus, a trade-off must be made between accurate external prediction and computational load. The present invention solves this problem.

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

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

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

Предоставляется способ кодировки видео, реализованный в устройстве декодирования или устройстве кодирования, содержащий:A video encoding method implemented in a decoding device or an encoding device is provided, comprising:

получение исходных векторов движения для текущего блока (например, блока кодировки, или блока предсказания, или субблока);obtaining initial motion vectors for the current block (eg, an encoding block, or a prediction block, or a subblock);

получение первых предсказаний (двух значений предсказания для внешнего предсказания) для значения выборки в текущем блоке на основе исходных векторов движения;obtaining first predictions (two prediction values for the outer prediction) for the sample value in the current block based on the original motion vectors;

вычисление первой стоимости сопоставления (например, состоящей из некоторой меры подобия (или неподобия) или содержащей ее; см. также подробное описание ниже) согласно первым предсказаниям;calculating a first matching cost (eg, consisting of or containing some measure of similarity (or dissimilarity; see also detailed description below) according to the first predictions;

определение, следует ли выполнять процесс уточнения оптического потока или нет, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно заданное условие содержит условие, равна ли вычисленная первая стоимость сопоставления пороговому значению или превышает его;determining whether the optical flow refinement process should be performed or not according to at least one predetermined condition, wherein the at least one predetermined condition comprises a condition whether the calculated first matching cost is equal to or greater than a threshold value;

выполнение процесса уточнения оптического потока для получения окончательного внешнего предсказания для значения выборки в текущем блоке, когда определено, что должен быть выполнен процесс уточнения оптического потока.performing an optical flow refinement process to obtain a final inter-prediction for the sample value in the current block when it is determined that the optical flow refinement process is to be performed.

Таким образом, согласно изобретению выполнение уточнения (совершенствования) оптического потока, в частности двунаправленного уточнения оптического потока, выполняется на условной основе. Относительно дорогостоящее уточнение оптического потока выполняется только при некоторых обстоятельствах, которые обеспечивают подходящее желаемое повышение точности всего процесса внешнего предсказания. Если определено, что уточнение оптического потока, вероятно, не приводит к повышению точности внешнего предсказания, которое оправдывает относительно высокую вычислительную нагрузку, необходимую для выполнения уточнения оптического потока, уточнение оптического потока может быть подавлено. Таким образом, время декодирования может быть значительно сокращено. О исходных векторах движения можно сигнализировать в потоке битов. В качестве альтернативы, предсказания вектора движения и компоненты разности векторов движения могут быть предоставлены для исходных векторов движения.Thus, according to the invention, performing optical flow refinement, in particular bidirectional optical flow refinement, is performed on a conditional basis. Relatively expensive optical flow refinement is performed only under certain circumstances that provide a suitable desired improvement in the accuracy of the overall inter-prediction process. If it is determined that the optical flow refinement is not likely to result in an increase in inter-prediction accuracy that justifies the relatively high computational load required to perform the optical flow refinement, the optical flow refinement may be suppressed. In this way, decoding time can be significantly reduced. The original motion vectors can be signaled in the bit stream. Alternatively, motion vector predictions and motion vector difference components may be provided for the original motion vectors.

Например, по меньшей мере одно предварительно заданное условие содержит условие, что текущий блок может быть предсказан посредством уточнения вектора движения на стороне декодера. Это конкретное условие, содержащееся, по меньшей мере, в одном предварительно заданном условии, может быть проверено в первую очередь, чтобы избежать ненужных вычислительных усилий.For example, the at least one predefined condition comprises a condition that the current block can be predicted by motion vector refinement at the decoder side. This particular condition, contained in at least one predefined condition, can be checked first to avoid unnecessary computational effort.

Согласно конкретному варианту осуществления определяется, что должен выполняться процесс уточнения оптического потока, когда определяется, что все из по меньшей мере одного предварительно заданного условия выполнены. По меньшей мере одно предварительно заданное условие в принципе может содержать одно или несколько дополнительных условий. Например, по меньшей мере одно предварительно заданное условие может содержать условие, что конкретный флаг установлен (например, в 1) для выполнения процесса оптического уточнения. Если не все условия выполняются, никакое уточнение оптического потока не может быть выполнено вообще согласно конкретному варианту осуществления, чтобы уменьшить вычислительные требования.According to a particular embodiment, it is determined that the optical flow refinement process is to be performed when it is determined that all of at least one predetermined condition are satisfied. The at least one predefined condition may in principle contain one or more additional conditions. For example, the at least one predefined condition may include a condition that a particular flag is set (eg, to 1) to perform the optical refinement process. If not all conditions are met, no optical flow refinement can be performed at all according to a particular embodiment in order to reduce computational requirements.

Первые предсказания для значения выборки в текущем блоке могут быть получены на основе первого фильтра интерполяции, чтобы достичь некоторой субпиксельной точности. В частности, первый фильтр интерполяции может быть относительно простым фильтром билинейной интерполяции, который обеспечивает быструю обработку фильтра.The first predictions for the sample value in the current block can be obtained based on the first interpolation filter to achieve some sub-pixel precision. In particular, the first interpolation filter may be a relatively simple bilinear interpolation filter that provides fast filter processing.

Заявляемый способ кодировки видео, реализованный в устройстве декодирования или устройстве кодирования, может содержать некоторое уточнение вектора движения, отличное от уточнения оптического потока. Таким образом, способ может содержать получение уточненных векторов движения на основе исходных векторов движения и стоимости первого сопоставления; получение вторых предсказаний для значения выборки в текущем блоке согласно уточненным векторам движения, когда определено, что должен быть выполнен процесс уточнения оптического потока, выполнение уточнения оптического потока на основе вторых предсказаний (представляющих уже уточненные предсказания). Общая точность процесса внешнего предсказания может быть повышена за счет использования уточненных векторов движения.The inventive video encoding method, implemented in a decoding device or encoding device, may contain some motion vector refinement other than optical flow refinement. Thus, the method may comprise obtaining refined motion vectors based on the original motion vectors and the cost of the first mapping; obtaining second predictions for the sample value in the current block according to the refined motion vectors when it is determined that an optical flow refinement process is to be performed, performing optical flow refinement based on the second predictions (representing the already refined predictions). The overall accuracy of the external prediction process can be improved by using refined motion vectors.

Следует отметить, что первые предсказания, а также первая стоимость сопоставления уже вычислены для уточнения вектора движения. Следовательно, не требуется дополнительных вычислений для принятия решения о раннем прекращении/подавлении процесса уточнения оптического потока, но результаты предыдущих вычислений, задействованных в процессе уточнения вектора движения, можно использовать повторно.It should be noted that the first predictions as well as the first matching cost have already been calculated to refine the motion vector. Therefore, no additional computation is required to decide whether to stop/suppress the optical flow refinement process early, but the results of previous computations involved in the motion vector refinement process can be reused.

В каждом из вышеописанных вариантов осуществления способа согласно изобретению получение первых предсказаний для значения выборки в текущем блоке на основе исходных векторов движения может содержать получение некоторого количества пар кандидатов на основе исходных векторов движения и получение первых предсказаний для значения выборки в текущем блоке на основе по меньшей мере одной из пар кандидатов, и вычисление первой стоимости сопоставления согласно первым предсказаниям может содержать определение стоимости сопоставления для каждой из пар кандидатов на основе первых предсказаний и определение наименьшей стоимости сопоставления из определенных стоимостей сопоставления в качестве первой стоимости сопоставления.In each of the above-described embodiments of the method according to the invention, obtaining first predictions for the sample value in the current block based on the original motion vectors may comprise obtaining a number of candidate pairs based on the original motion vectors and obtaining first predictions for the sample value in the current block based on at least one of the candidate pairs, and calculating a first matching cost according to the first predictions may comprise determining a matching cost for each of the candidate pairs based on the first predictions and determining the smallest matching cost of the determined matching costs as the first matching cost.

В ходе уточнения вектора движения может быть получено некоторое количество пар кандидатов для уточненных векторов движения, причем пары включают в себя пару исходных векторов движения. Например, пары кандидатов для уточненных векторов движения содержат пару исходных векторов движения (MV0, MV1) и пары (MV0 + (0,1), MV1 + (0, -1)), (MV0 + ( 1,0), MV1 + (-1,0)), (MV0 + (0, -1), MV1 + (0,1)), (MV0 + (-1,0), MV1 + (1,0 )), где (1, -1) обозначает вектор, который имеет смещение 1 в горизонтальном (или x) направлении и смещение -1 в вертикальном (или y) направлении. Для каждой из пар может быть определена стоимость сопоставления, соответствующая этой паре, и вышеупомянутая первая стоимость сопоставления может быть определена как наименьшая из стоимостей сопоставления, определенных для пар кандидатов для уточненных векторов движения. Согласно конкретным примерам, это может быть стоимость сопоставления, соответствующая паре исходных векторов движения (MV0, MV1) или (MV0, MV1) или (MV0’=MV0 + (0,1), MV1’= MV1 + (0,-1)) с уточненными векторами движения MV0’ и MV1’.During motion vector refinement, a number of candidate pairs for the refined motion vectors may be obtained, the pairs including a pair of original motion vectors. For example, candidate pairs for refined motion vectors contain a pair of original motion vectors (MV0, MV1) and pairs (MV0 + (0,1), MV1 + (0, -1)), (MV0 + (1,0), MV1 + (-1.0)), (MV0 + (0, -1), MV1 + (0.1)), (MV0 + (-1.0), MV1 + (1.0 )), where (1, -1) denotes a vector that has an offset of 1 in the horizontal (or x) direction and an offset of -1 in the vertical (or y) direction. For each of the pairs, a matching cost corresponding to that pair may be determined, and the aforementioned first matching cost may be determined to be the lesser of the matching costs determined for the candidate pairs for the refined motion vectors. According to specific examples, this could be the matching cost corresponding to a pair of source motion vectors (MV0, MV1) or (MV0, MV1) or (MV0'=MV0 + (0,1), MV1'=MV1 + (0,-1) ) with refined motion vectors MV0' and MV1'.

Использование такого рода стоимости первого сопоставления может быть выгодным с точки зрения общей кодировки.Using this kind of first match cost can be beneficial from an overall encoding perspective.

Вышеупомянутые вторые предсказания для значения выборки в текущем блоке могут быть получены согласно второму фильтру интерполяции. Этот второй фильтр интерполяции может быть фильтром интерполяции с 6 или 8 отводами, который является относительно дорогим, но выгодным с точки зрения точности субпикселей.The above second predictions for the sample value in the current block may be obtained according to the second interpolation filter. This second interpolation filter may be a 6- or 8-tap interpolation filter, which is relatively expensive but beneficial in terms of subpixel accuracy.

Вышеупомянутые уточненные векторы движения могут быть получены согласно второй стоимости сопоставления, чтобы управлять пригодностью уточненных векторов движения для внешнего предсказания. Когда значение второй стоимости сопоставления больше или равно другому пороговому значению, может быть определено, что следует выполнить процесс уточнения оптического потока. В противном случае может быть определено, что выполнять какую-либо обработку уточнения оптического потока не стоит.The above refined motion vectors may be obtained according to a second matching cost to control the suitability of the refined motion vectors for inter-prediction. When the value of the second matching cost is greater than or equal to another threshold value, it may be determined that the optical flow refinement process should be performed. Otherwise, it may be determined that it is not worth performing any optical flow refinement processing.

Согласно другому варианту осуществления, только когда определено, что процесс уточнения оптического потока не должен выполняться, окончательное внешнее предсказание получается посредством взвешенной суммы вторых предсказаний. Взвешенная сумма вторых предсказаний обеспечивает некоторую точность, которая может считаться достаточной в случаях, когда не считается подходящим выполнять относительно дорогостоящий процесс уточнения оптического потока.According to another embodiment, only when it is determined that the optical flow refinement process should not be performed, the final external prediction is obtained by a weighted sum of the second predictions. The weighted sum of the second predictions provides some precision that may be considered sufficient in cases where it is not considered appropriate to perform the relatively expensive optical flow refinement process.

В общем, пороговое значение или другое пороговое значение может быть значением, которое вычисляется на основе битовой глубины первых предсказаний. Кроме того, пороговое значение может быть получено согласно количеству предсказанных выборок, которые используются для вычисления первой стоимости сопоставления согласно первым предсказаниям. Дополнительно, пороговое значение может быть получено в соответствии с размером (шириной и высотой в единицах числа пикселей) текущего блока. Например, порог может быть th=nCbW x nCbH x K, где K - значение больше нуля, nCbW и nCbH - ширина и высота текущего блока. Например, K=2.In general, the threshold or other threshold value may be a value that is calculated based on the bit depth of the first predictions. In addition, the threshold value can be obtained according to the number of predicted samples, which are used to calculate the first matching cost according to the first predictions. Additionally, the threshold value can be obtained according to the size (width and height in pixel units) of the current block. For example, the threshold could be th=nCbW x nCbH x K, where K is a value greater than zero, nCbW and nCbH are the width and height of the current block. For example, K=2.

Кроме того, вышеупомянутая вторая стоимость сопоставления может быть выведенной стоимостью, полученной с использованием стоимостей сопоставления, оцененных во время уточнения вектора движения, и предопределенной модели для формы стоимости сопоставления вблизи позиции минимальной стоимости сопоставления. Предопределенная модель в этом контексте может быть линейной комбинированной моделью. Использование предопределенной модели для формы стоимости сопоставления вблизи позиции минимальной стоимости сопоставления может повысить точность процесса внешнего предсказания.In addition, the above-mentioned second matching cost may be an inferred cost obtained using matching costs estimated during motion vector refinement and a predetermined model for the matching cost shape near the position of the minimum matching cost. The predefined model in this context may be a linear combination model. Using a predefined model for the matching cost shape near the position of the minimum matching cost can improve the accuracy of the external prediction process.

Способ согласно всем вышеописанным вариантам осуществления может дополнительно содержать этап генерации блока внешнего предсказания, содержащего окончательное внешнее предсказание для значения выборки в текущем блоке.The method according to all of the above-described embodiments may further comprise the step of generating an inter prediction block containing a final inter prediction for the sample value in the current block.

Кроме того, предоставляется кодер или декодер, содержащий некоторую схему обработки для выполнения способа согласно любому из вышеописанных вариантов осуществления. Кроме того, предоставляется компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому из описанных выше вариантов осуществления.In addition, an encoder or decoder is provided containing some processing circuitry for performing the method according to any of the above-described embodiments. Also provided is a computer program product containing program code for performing a method according to any of the embodiments described above.

Все описанные выше варианты способа кодировки видео могут быть реализованы в декодере или кодере. Таким образом, предоставляется декодер или кодер, содержащий:All of the video encoding method options described above can be implemented in a decoder or encoder. Thus, a decoder or encoder is provided containing:

один или несколько процессоров и энергонезависимый машиночитаемый носитель данных, подключенный к процессорам и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа в соответствии с любым из вышеописанных вариантов осуществления.one or more processors and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to perform a method in accordance with any of the above-described embodiments.

Все вышеописанные варианты способа кодировки видео могут быть реализованы в устройстве для использования в кодере изображения и/или декодере изображения, чтобы удовлетворить вышеупомянутую потребность. Таким образом, предоставляется устройство для использования в кодере изображения и/или декодере изображения, при этом устройство содержит блок исходного вектора движения, сконфигурированный для получения исходных векторов движения для текущего блока (например, блока кодировки или блока предсказания или субблока); первый блок предсказания, сконфигурированный для получения первых предсказаний для значения выборки в текущем блоке на основе исходных векторов движения; блок вычисления первой стоимости сопоставления, сконфигурированный для вычисления первой стоимости сопоставления (например, меры подобия или неподобия) согласно первым предсказаниям; блок определения процесса уточнения оптического потока, сконфигурированный для определения, следует ли выполнять процесс уточнения оптического потока, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно заданное условие содержит условие, равна ли вычисленная первая стоимость сопоставления некоторому порогу или больше него; и блок выполнения процесса уточнения оптического потока, сконфигурированный для выполнения процесса уточнения оптического потока для получения окончательного внешнего предсказания для значения выборки в текущем блоке, когда определено, что должен быть выполнен процесс уточнения оптического потока.All of the above-described embodiments of the video encoding method can be implemented in an apparatus for use in an image encoder and/or an image decoder to satisfy the above need. Thus, an apparatus is provided for use in an image encoder and/or an image decoder, the apparatus comprising a source motion vector block configured to obtain source motion vectors for a current block (eg, an encoding block or a prediction block or a subblock); a first prediction block configured to obtain first predictions for the sample value in the current block based on the original motion vectors; a first matching cost calculating unit, configured to calculate a first matching cost (eg, a measure of similarity or dissimilarity) according to the first predictions; an optical flow refinement process determining unit, configured to determine whether the optical flow refinement process should be performed according to at least one predetermined condition, wherein the at least one predetermined condition comprises a condition whether the calculated first matching cost is equal to or greater than a certain threshold ; and an optical flow refinement process execution unit configured to perform an optical flow refinement process to obtain a final inter-prediction for the sample value in the current block when it is determined that the optical flow refinement process is to be executed.

Это устройство, как описано выше, и с его вариантами, описанными ниже, обеспечивает те же преимущества, что и вышеописанные способы.This device, as described above, and with its variations described below, provides the same advantages as the methods described above.

По меньшей мере одно предварительно заданное условие может содержать условие, что текущий блок может быть предсказан посредством уточнения вектора движения на стороне декодера.The at least one predefined condition may include a condition that the current block can be predicted by motion vector refinement at the decoder side.

Блок определения процесса уточнения оптического потока может быть сконфигурирован для определения, что процесс уточнения оптического потока должен быть выполнен, когда определено, что все из по меньшей мере одного предварительно заданного условия выполнены.The optical flow refinement process determining unit may be configured to determine that the optical flow refinement process should be executed when it is determined that all of at least one predetermined condition are satisfied.

Устройство может содержать первый фильтр интерполяции (например, фильтр билинейной интерполяции), и первый блок предсказания может быть сконфигурирован для получения первых предсказаний для значения выборки в текущем блоке посредством первого фильтра интерполяции.The apparatus may include a first interpolation filter (eg, a bilinear interpolation filter), and the first prediction block may be configured to obtain first predictions for the sample value in the current block by the first interpolation filter.

Устройство может дополнительно содержать блок уточненного вектора движения, сконфигурированный для получения уточненных векторов движения на основе исходных векторов движения и стоимости первого сопоставления;The device may further comprise a refined motion vector unit configured to obtain refined motion vectors based on the original motion vectors and the cost of the first mapping;

второй блок предсказания, сконфигурированный для получения вторых предсказаний для значения выборки в текущем блоке согласно уточненным векторам движения; иa second prediction unit configured to obtain second predictions for the sample value in the current block according to the refined motion vectors; And

блок выполнения процесса уточнения оптического потока может быть сконфигурирован для выполнения уточнения оптического потока на основе вторых предсказаний, когда блок определения процесса уточнения оптического потока определяет, что должен быть выполнен процесс уточнения оптического потока.the optical flow refinement process executing unit may be configured to perform optical flow refinement based on the second predictions when the optical flow refinement process determining unit determines that the optical flow refinement process should be executed.

В вышеописанных вариантах осуществления устройства первый блок предсказания может быть сконфигурирован для получения первых предсказаний для значения выборки в текущем блоке на основе исходных векторов движения путем получения некоторого количества пар кандидатов на основе исходных векторов движения и получения первых предсказаний для значения выборки в текущем блоке на основе по меньшей мере одной из пар кандидатов. Кроме того, первый блок вычисления стоимости сопоставления может быть сконфигурирован для вычисления первой стоимости сопоставления в соответствии с первыми предсказаниями путем определения стоимости сопоставления для каждой из пар кандидатов на основе первых предсказаний и определения наименьшей стоимости сопоставления из определенных стоимостей сопоставления в качестве первой стоимости сопоставления.In the above-described embodiments of the device, the first prediction block may be configured to obtain first predictions for the sample value in the current block based on the original motion vectors by obtaining a number of candidate pairs based on the original motion vectors and obtaining first predictions for the sample value in the current block based on at least one of the candidate pairs. In addition, the first matching cost calculating unit may be configured to calculate a first matching cost according to the first predictions by determining a matching cost for each of the candidate pairs based on the first predictions and determining the smallest matching cost of the determined matching costs as the first matching cost.

Согласно варианту осуществления, устройство может дополнительно содержать второй фильтр интерполяции (например, относительно дорогой фильтр интерполяции с 6 или 8 отводами с относительно высокой точностью субпикселей), и второй блок предсказания может быть сконфигурирован для получения вторых предсказаний для значения выборки в текущем блоке с помощью второго фильтра интерполяции.According to an embodiment, the device may further comprise a second interpolation filter (e.g., a relatively expensive 6- or 8-tap interpolation filter with relatively high subpixel precision), and the second prediction block may be configured to make second predictions for the sample value in the current block using the second interpolation filter.

Согласно другому варианту осуществления устройство дополнительно содержит второй блок вычисления стоимости сопоставления, сконфигурированный для вычисления второй стоимости сопоставления, и при этом блок уточненного вектора движения сконфигурирован для получения уточненных векторов движения согласно второй стоимости сопоставления. В этом случае блок определения процесса уточнения оптического потока может быть сконфигурирован для определения того, что процесс уточнения оптического потока должен выполняться, когда значение второй стоимости сопоставления больше или равно другому пороговому значению.According to another embodiment, the apparatus further comprises a second matching cost calculation unit configured to calculate the second matching cost, and wherein the refined motion vector unit is configured to obtain refined motion vectors according to the second matching cost. In this case, the optical flow refinement process determining unit may be configured to determine that the optical flow refinement process should be executed when the value of the second matching cost is greater than or equal to another threshold value.

Устройство может дополнительно содержать блок предсказания взвешенной суммы, сконфигурированный для получения окончательного внешнего предсказания посредством взвешенной суммы вторых предсказаний, только когда блоком определения процесса уточнения оптического потока определено, что процесс уточнения оптического потока не должен выполняться.The apparatus may further comprise a weighted sum predictor configured to obtain a final inter-prediction by the weighted sum of the second predictions only when it is determined by the optical flow refinement process determination unit that the optical flow refinement process should not be performed.

Дополнительно, устройство может содержать блок вычисления порога, сконфигурированный для вычисления порогового значения или другого порога на основе битовой глубины первых предсказаний. Кроме того, устройство может дополнительно содержать блок вычисления порога, сконфигурированный для вычисления порога согласно количеству предсказанных выборок, которые используются для вычисления первой стоимости соответствия согласно первым предсказаниям, первым блоком вычисления стоимости сопоставления. Кроме того, устройство может дополнительно содержать блок вычисления порога, сконфигурированный для вычисления порога согласно размеру текущего блока. Например, порог может быть th=nCbW x nCbH x K, где K - значение больше нуля, nCbW и nCbH - ширина и высота текущего блока. Например, K=2.Additionally, the device may include a threshold calculation unit configured to calculate a threshold value or other threshold based on the bit depth of the first predictions. In addition, the device may further comprise a threshold calculating unit configured to calculate a threshold according to the number of predicted samples that are used to calculate the first matching cost according to the first predictions by the first matching cost computing unit. In addition, the device may further comprise a threshold calculation block configured to calculate a threshold according to the size of the current block. For example, the threshold could be th=nCbW x nCbH x K, where K is a value greater than zero, nCbW and nCbH are the width and height of the current block. For example, K=2.

Согласно конкретным вариантам осуществления, второй блок вычисления стоимости сопоставления сконфигурирован для вычисления второй стоимости сопоставления как выведенной стоимости, полученной с использованием стоимостей сопоставления, оцененных во время уточнения вектора движения, выполняемого уточненным блоком вектора движения и предопределенной моделью (например, линейная комбинационная модель) для формы стоимости сопоставления около позиции минимальной стоимости сопоставления.According to specific embodiments, the second matching cost calculation block is configured to calculate the second matching cost as an inferred cost obtained using matching costs estimated during motion vector refinement performed by the motion vector refinement block and a predefined model (e.g., a linear combinational model) for the shape matching cost around the minimum matching cost position.

Устройство согласно любому из описанных выше вариантов осуществления может дополнительно содержать блок генерации блока внешнего предсказания, сконфигурированный для генерации блока внешнего предсказания, содержащего окончательное внешнее предсказание для значения выборки в текущем блоке.The apparatus according to any of the above-described embodiments may further comprise an inter prediction block generation unit configured to generate an inter prediction block containing a final inter prediction for the sample value in the current block.

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

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

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

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

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

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

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

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

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

Фиг.6 - блок-схема, иллюстрирующая вариант осуществления процесса оптического уточнения;FIG. 6 is a block diagram illustrating an embodiment of an optical refinement process; FIG.

Фиг.7 - блок-схема, иллюстрирующая другой вариант осуществления процесса оптического уточнения;FIG. 7 is a block diagram illustrating another embodiment of the optical refinement process; FIG.

Фиг.8 - блок-схема, иллюстрирующая другой вариант осуществления процесса оптического уточнения;FIG. 8 is a block diagram illustrating another embodiment of the optical refinement process; FIG.

Фиг.9 - блок-схема, иллюстрирующая другой вариант осуществления процесса оптического уточнения.FIG. 9 is a block diagram illustrating another embodiment of the optical refinement process.

Фиг. 10 - блок-схема, иллюстрирующая способ кодировки видео, реализованный в устройстве декодирования или устройстве кодирования согласно варианту осуществления настоящего изобретения.Fig. 10 is a block diagram illustrating a video encoding method implemented in a decoding apparatus or an encoding apparatus according to an embodiment of the present invention.

Фиг. 11 иллюстрирует устройство для использования в кодере изображения и/или декодере изображения согласно варианту осуществления настоящего изобретения.Fig. 11 illustrates an apparatus for use in an image encoder and/or an image decoder according to an embodiment of the present invention.

Следующие идентичные ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным признакам, если явно не указано иное.The following identical reference numerals refer to identical or at least functionally equivalent features unless expressly indicated otherwise.

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

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

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

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

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

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

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

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

Как показано на ФИГ. 1A, система 10 кодировки содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 картинки, например, в устройство-получатель 14 для декодирования кодированных данных 13 картинки.As shown in FIG. 1A, encoding system 10 includes a source device 12 configured to provide encoded picture data 21, for example, to a destination device 14 for decoding the encoded picture data 13.

Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. необязательно, содержать источник 16 картинки, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 картинок, а также интерфейс связи или блок 22 связи.The source device 12 contains an encoder 20 and can additionally, i.e. optionally comprising a picture source 16, a preprocessor (or preprocessing unit) 18, such as a picture preprocessor 18, and a communications interface or communications unit 22.

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

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

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

Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 картинки и предоставления кодированных данных 21 картинки (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).Video encoder 20 is configured to receive pre-processed picture data 19 and provide encoded picture data 21 (further details will be described below, eg based on FIG. 2).

Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 картинки и передачи этих кодированных данных 21 картинки (или любой их дополнительно обработанной версии) по каналу 13 связи в другое устройство, например, устройство-получатель 14 или любое другое устройство, для сохранения или непосредственного восстановления. The communication interface 22 of the source device 12 may be configured to receive encoded picture data 21 and transmit this encoded picture data 21 (or any further processed version thereof) over the communication channel 13 to another device, for example, the destination device 14 or any other device. , for saving or immediate restoration.

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

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

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

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

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

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

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

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

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

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

Как будет очевидно для специального элемента на основании описания, наличие и (точное) разделение функциональных возможностей различных модулей или функций в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения.As will be apparent for the specific element based on the description, the presence and (precise) separation of functionality of the various modules or functions in the source device 12 and/or destination device 14, as shown in FIG. 1A, may vary depending on the actual device and applications.

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

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

В некоторых случаях система 10 кодировки видео, проиллюстрированная на Фиг. 1A, является лишь примером, а методы настоящей заявки могут применяться к настройкам кодировки видео (такого как кодирование видео или декодирование видео), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство кодирования видео может кодировать и сохранять данные в память, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.In some cases, video encoding system 10, illustrated in FIG. 1A is an example only, and the methods of the present application can be applied to video encoding settings (such as video encoding or video decoding) that do not necessarily involve transmitting any data between encoding and decoding devices. In other examples, data is retrieved from local memory, streamed over a network, or the like. A video encoding apparatus may encode and store data into memory, and/or a video decoding apparatus may retrieve and decode data from memory. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode data into memory and/or retrieve and decode data from memory.

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

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

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

Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относится к формированию прямого тракта сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 244 внешнего предсказания и блок 254 внутреннего предсказания могут относится к формированию обратного тракта сигнала видеокодера 20, при этом обратный тракт сигнала видеокодера 20 соответствует тракту сигнала декодера (см. видеодекодер 30 на Фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер декодированных картинок (DPB) 230, блок 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20.The remainder calculation block 204, transform processing block 206, quantization block 208, mode selection block 260 may relate to the formation of the forward signal path of the encoder 20, while the inverse quantization block 210, inverse transform processing block 212, restoration block 214, buffer 216, loop filter 220, decoded picture buffer (DPB) 230, inter prediction block 244, and intra prediction block 254 may relate to generating a return signal path of the video encoder 20, wherein the return signal path of the video encoder 20 corresponds to the decoder signal path (see video decoder 30 in FIG. 3) . The inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 244, and the intra prediction unit 254 are also relevant to forming the “on-chip decoder” of the video encoder 20.

Картинки и разделение картинок (картинки и блоки)Pictures and picture division (pictures and blocks)

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

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

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

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

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

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

Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разделена на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).Embodiments of video encoder 20, as shown in FIG. 2 may be further configured to divide and/or encode a picture using slices (also referred to as video slices), wherein the picture may be divided into or encoded using one or more slices (usually non-overlapping), and each slice may contain one or more units (for example, CTU).

Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования картинки с использованием групп тайлов (мозаичных элементов) (также называемых группами видеотайлов) и/или тайлов (также называемых видеотайлами), при этом картинка может быть разделена на или закодирована с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или дробные блоки.Embodiments of video encoder 20 shown in FIG. 2 may be further configured to divide and/or encode a picture using tile groups (also called video tile groups) and/or tiles (also called video tiles), wherein the picture can be divided into or encoded using one or more groups of tiles (usually non-overlapping), and each group of tiles may contain, for example, one or more blocks (for example, CTU) or one or more tiles, each tile, for example, may be rectangular in shape and may contain one or more blocks (eg CTUs), such as full or fractional blocks.

Вычисление остаткаCalculating the remainder

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ФильтрацияFiltration

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

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

Буфер декодированных картинокBuffer of decoded pictures

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

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

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

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

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

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

Далее более подробно поясняется разделение (например, посредством модуля 260 разделения) и обработка предсказания (посредством модуля 244 внешнего предсказания и модуля 254 внутреннего предсказания), выполняемые примерным видеокодером 20.Next, the division (eg, through the division module 260) and prediction processing (via the inter prediction module 244 and the intra prediction module 254) performed by the exemplary video encoder 20 are explained in more detail.

РазделениеSeparation

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

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

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

В вариантах осуществления, например, согласно HEVC, единица дерева кодировки (CTU) может быть разбита на CU с использованием структуры квадродерева, обозначенной в качества дерева кодировки. Решение о том, следует ли кодировать область картинки с использованием предсказания между картинками (временного) или внутри картинки (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU в соответствии с типом разбиения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодировки для CU.In embodiments, for example, according to HEVC, a coding tree unit (CTU) can be partitioned into CUs using a quadtree structure designated as a coding tree. The decision of whether to encode a picture region using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Each CU can be further partitioned into one, two or four PUs according to the PU partition type. Within a single PU, the same prediction process is applied, and the relevant information is passed to the PU-based decoder. After obtaining the residual block by applying a prediction process based on the partition type on the PU, the CU can be divided into transformation units (TUs) according to another quadtree structure similar to the encoding tree for the CU.

В вариантах осуществления, например, в соответствии с разрабатываемым в настоящее время наиболее новым стандартом кодировки видео, который называется универсальное кодирование видео (VVC), для разделения блока кодирования используется, например, разделение комбинированного квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодировки (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или тройчной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодировки (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодировки QTBT. Параллельно, вместе с блочной структурой QTBT можно использовать множественное разделение, например, разделение троичного дерева.In embodiments, for example, in accordance with the newest video encoding standard currently under development, called Versatile Video Coding (VVC), for example, a combined quadtree and binary tree (QTBT) partitioning is used to divide the encoding block. In a block structure, a QTBT CU can be either square or rectangular in shape. For example, a coding tree unit (CTU) is first divided into a quadtree structure. The leaf nodes of a quadtree are further separated by a binary tree or ternary (or ternary) tree structure. The leaf nodes of a partitioning tree are called coding units (CUs), and this partitioning is used to process prediction and transformation without any further partitioning. This means that CU, PU and TU have the same block size in the QTBT encoding block structure. In parallel, multiple partitioning, such as ternary tree partitioning, can be used in conjunction with the QTBT block structure.

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

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

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

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

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

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

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

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

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

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

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

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

Блок компенсации движения может также генерировать элементы синтаксиса, ассоциированные с блоками и видеослайсами, для использования видеодекодером 30 при декодировании блоков картинки этого видеослайса. В дополнение или в качестве альтернативы для слайсов и соответствующих элементов синтаксиса могут генерироваться или использоваться группы тайлов и/или тайлы и соответствующие элементы синтаксиса.The motion compensation block may also generate syntax elements associated with blocks and video slices for use by video decoder 30 when decoding the picture blocks of that video slice. In addition to or as an alternative to slices and corresponding syntax elements, groups of tiles and/or tiles and corresponding syntax elements may be generated or used.

Энтропийная кодировкаEntropy encoding

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

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

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

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

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

Как описано в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 344 внешнего предсказания и блок 354 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных картинок может быть идентичен по функции буферу 230 декодированных картинок. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.As described with respect to the encoder 20, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter-prediction unit 344, and the intra-prediction unit 354 also relate to forming the “on-chip decoder”. » video encoder 20. Accordingly, the inverse quantization block 310 may be identical in function to the inverse quantization block 110, the inverse transform processing block 312 may be identical in function to the inverse transform processing block 212, the restoration block 314 may be identical in function to the reconstruction block 214, loop filter 320 may be identical in function to loop filter 220, and decoded picture buffer 330 may be identical in function to decoded picture buffer 230. Therefore, the explanations provided for the corresponding blocks and functions of the video encoder 20 apply correspondingly to the corresponding blocks and functions of the video decoder 30.

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

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

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

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

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

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

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

Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.The reconstruction block 314 (e.g., add block or adder 314) may be configured to add the reconstructed residual block 313 with the prediction block 365 to obtain a reconstructed block 315 in the sample domain, for example by adding the sample values of the reconstructed residual block 313 and the sample values of the block 365 predictions.

ФильтрацияFiltration

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

Буфер декодированных картинокBuffer of decoded pictures

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

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

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

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

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

Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других элементов синтаксиса, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков видеослайса, типа слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных картинок для слайса, векторов движения для каждого внешне кодированного видеоблока слайса, статуса внешнего предсказания для каждого внешне кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.The mode applying unit 360 is configured to determine prediction information for a video block of the current video slice by parsing motion vectors or related information and other syntax elements, and uses the prediction information to create prediction blocks for the current video block to be decoded. For example, mode apply block 360 uses some of the received syntax elements to determine the prediction mode (e.g., intra or inter prediction) used to encode video blocks of a video slice, type of inter prediction slice (e.g., B-slice, P-slice, or GPB slice) , construction information for one or more reference picture lists for a slice, motion vectors for each externally encoded video block of the slice, inter-prediction status for each externally encoded video block of the slice, and other information for decoding video blocks in the current video slice. The same or similar may apply to or through embodiments using tile groups (eg, video tile groups) and/or tiles (eg, video tiles) in addition to or alternatively to slices (eg, video slices), for example, video may be encoded with using groups of I, P or B tiles and/or tiles.

Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разделена на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).Embodiments of video decoder 30, as shown in FIG. 3 may be configured to split and/or decode a picture using slices (also referred to as video slices), wherein the picture may be divided into or encoded using one or more slices (usually non-overlapping), and each slice may contain one or more blocks (for example, CTU).

Варианты осуществления видеодекодера 30, показанные на Фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования картинки с использованием групп тайлов (также называемых группами видеотайлов) и/или тайлов (также называемых видеотайлами), при этом картинка может быть разделена на или декодирована с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или дробные блоки.Embodiments of video decoder 30 shown in FIG. 3 may be configured to divide and/or decode a picture using groups of tiles (also called video tile groups) and/or tiles (also called video tiles), wherein the picture can be divided into or decoded using one or more tile groups ( typically non-overlapping), and each group of tiles may contain, for example, one or more blocks (eg, CTU) or one or more tiles, where each tile, for example, may be rectangular in shape and may contain one or more blocks (eg, CTU ), such as full or fractional blocks.

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

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

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

Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операцийMethod 1: Removing MSB (Most Significant Bit) Overflow via Streaming Operations

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

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

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

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

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

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

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

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

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

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

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

Способ 2: удаление MSB переполнения посредством усечения значенияMethod 2: Remove MSB overflow by truncating the value

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

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

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

Clip3( x, y, z ) = Clip3( x, y, z ) =

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

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

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

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

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

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

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

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

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

Уточнение вектора движения (MVR)Motion Vector Refinement (MVR)

Векторы движения обычно по меньшей мере частично определяются на стороне кодера и передаются декодеру в кодированном потоке битов. Однако векторы движения также могут быть уточнены в декодере (а также в кодере), начиная с исходных векторов движения, указанных в потоке битов. В таком случае, например, подобие между фрагментами уже декодированных пикселей, указанными исходными векторами движения, может использоваться для повышения точности исходных векторов движения. Такое уточнение движения обеспечивает преимущество уменьшения накладных расходов на сигнализацию: точность исходного движения улучшается одинаково как в кодере, так и в декодере, и, таким образом, не требуется никакой дополнительной сигнализации для уточнения.Motion vectors are typically at least partially determined on the encoder side and transmitted to the decoder in the encoded bitstream. However, motion vectors can also be refined at the decoder (as well as at the encoder), starting from the original motion vectors specified in the bitstream. In such a case, for example, the similarity between fragments of already decoded pixels indicated by the original motion vectors can be used to improve the accuracy of the original motion vectors. This motion refinement provides the benefit of reducing signaling overhead: the accuracy of the original motion is improved equally in both the encoder and decoder, and thus no additional signaling is required for refinement.

Следует отметить, что исходные векторы движения до уточнения могут быть не лучшими векторами движения, которые приводят к наилучшему предсказанию. Поскольку исходные векторы движения сигнализируются в потоке битов, может оказаться невозможным представить исходный вектор движения с очень высокой точностью (что увеличило бы скорость передачи битов), поэтому процесс уточнения вектора движения используется для улучшения исходного вектора движения. Исходные векторы движения могут, например, быть векторами движения, которые используются при предсказании соседнего блока текущего блока. В этом случае достаточно сигнализировать указание в потоке битов, указывающее векторы движения какого соседнего блока используются текущим блоком. Такой механизм предсказания очень эффективен при уменьшении количества битов для представления исходных векторов движения. Однако точность исходных векторов движения может быть низкой, поскольку в целом не ожидается, что векторы движения двух соседних блоков будут идентичными.It should be noted that the original motion vectors before refinement may not be the best motion vectors that lead to the best prediction. Since the original motion vectors are signaled in a bitstream, it may not be possible to represent the original motion vector with very high precision (which would increase the bit rate), so the motion vector refinement process is used to improve the original motion vector. The source motion vectors may, for example, be motion vectors that are used in predicting a neighbor block of the current block. In this case, it is sufficient to signal an indication in the bitstream indicating which neighboring block's motion vectors are being used by the current block. This prediction mechanism is very effective in reducing the number of bits to represent the original motion vectors. However, the accuracy of the original motion vectors may be low because, in general, the motion vectors of two adjacent blocks are not expected to be identical.

Чтобы дополнительно повысить точность векторов движения без дополнительного увеличения издержек на сигнализацию, может быть полезно дополнительно уточнить векторы движения, выведенные на стороне кодера и предоставленные (сигнализированные) в потоке битов. Уточнение вектора движения может выполняться в декодере без помощи кодера. Кодер в своем цикле декодера может использовать такое же уточнение для получения соответствующих уточненных векторов движения, которые были бы доступны в декодере. Уточнение для текущего блока, который восстанавливается в текущей картинке, выполняется путем определения шаблона восстановленных выборок, определения пространства поиска вокруг исходной информации о движении для текущего блока и нахождения в пространстве поиска части опорной картинки, наилучшим образом соответствующей шаблону. Часть наилучшего сопоставления определяет уточненные векторы движения для текущего блока, которые затем используются для получения выборок с внешним предсказанием для текущего блока, то есть текущего блока, который восстанавливается.To further improve the accuracy of the motion vectors without further increasing signaling overhead, it may be useful to further refine the motion vectors derived at the encoder side and provided (signaled) in the bitstream. Motion vector refinement can be performed in the decoder without the help of an encoder. The encoder in its decoder loop can use the same refinement to obtain corresponding refined motion vectors that would be available at the decoder. Refinement for the current block that is reconstructed in the current picture is performed by determining a pattern of reconstructed samples, defining a search space around the original motion information for the current block, and finding in the search space the part of the reference picture that best matches the pattern. The best matching part determines refined motion vectors for the current block, which are then used to obtain inter-predicted samples for the current block, that is, the current block that is being reconstructed.

Уточнение вектора движения является частью блока внешнего предсказания (244) на Фиг. 2 и 344 на Фиг. 3.Motion vector refinement is part of the inter prediction block (244) in FIG. 2 and 344 in Fig. 3.

Уточнение вектора движения может быть выполнено в соответствии со следующими этапами:Refinement of the motion vector can be performed in accordance with the following steps:

Обычно исходные векторы движения могут быть определены на основе указания (индикации) в потоке битов. Например, в потоке битов может сигнализироваться индекс, который указывает позицию в списке кандидатных векторов движения. В другом примере индекс предиктора вектора движения и значение разности векторов движения могут сигнализироваться в потоке битов. Векторы движения, которые определяются на основе указания в потоке битов, определяются как исходные векторы движения. В случае двунаправленного предсказания, когда внешнее предсказание для текущего блока получается как взвешенная комбинация предсказанного блока выборок, которые определены в соответствии с двумя векторами движения, пусть исходный вектор движения в первой опорной картинке в списке L0 обозначен как MV0; и исходный вектор движения во втором опорном изображении в списке L1 обозначен как MV1.Typically, the initial motion vectors can be determined based on the indication in the bit stream. For example, an index may be signaled in the bitstream that indicates a position in a list of candidate motion vectors. In another example, the motion vector predictor index and the motion vector difference value may be signaled in the bitstream. Motion vectors that are determined based on the indication in the bitstream are defined as original motion vectors. In the case of bidirectional prediction, where the outer prediction for the current block is obtained as a weighted combination of the predicted block of samples that are determined according to two motion vectors, let the original motion vector in the first reference picture in the list L0 be designated as MV0; and the original motion vector in the second reference picture in the list L1 is designated as MV1.

Используя исходные векторы движения, определяются пары кандидатных векторов движения (MV) на уточнение. По меньшей мере, необходимо определить две пары кандидатов на уточнение. Обычно пары кандидатных векторов движения на уточнение определяются на основе исходной пары векторов движения (MV0, MV1). Кроме того, пары кандидатных MV определяются путем добавления небольших разностей векторов движения к MV0 и MV1. Например, пары кандидатных MV могут включать в себя следующее:Using the original motion vectors, pairs of candidate motion vectors (MVs) for refinement are determined. At a minimum, two pairs of candidates for refinement must be identified. Typically, pairs of candidate motion vectors for refinement are determined based on the original pair of motion vectors (MV0, MV1). In addition, pairs of candidate MVs are determined by adding small motion vector differences to MV0 and MV1. For example, candidate MV pairs could include the following:

(MV0, MV1)(MV0, MV1)

(MV0 + (0,1), MV1 + (0, -1))(MV0 + (0,1), MV1 + (0, -1))

(MV0 + (1,0), MV1 + (-1,0))(MV0 + (1.0), MV1 + (-1.0))

(MV0 + (0, -1), MV1 + (0,1))(MV0 + (0, -1), MV1 + (0,1))

(MV0 + (-1,0), MV1 + (1,0))(MV0 + (-1.0), MV1 + (1.0))

...

где (1, -1) обозначает вектор, который имеет смещение 1 в горизонтальном (или x) направлении и смещение -1 в вертикальном (или y) направлении.where (1, -1) denotes a vector that has an offset of 1 in the horizontal (or x) direction and an offset of -1 in the vertical (or y) direction.

Следует отметить, что приведенный выше список пар кандидатов является просто примерами для объяснения, и изобретение не ограничивается конкретным списком кандидатов.It should be noted that the above list of candidate pairs are merely examples for explanation, and the invention is not limited to a specific list of candidates.

Пары кандидатных векторов движения (MV) на уточнение образуют пространство поиска процесса уточнения вектора движения.Pairs of candidate motion vectors (MVs) for refinement form the search space of the motion vector refinement process.

При двунаправленном предсказании текущего блока два блока предсказания, полученные с использованием соответствующего первого вектора движения списка L0 и второго вектора движения списка L1, объединяются в один сигнал предсказания, который может обеспечить лучшую адаптацию к исходному сигналу, чем единое предсказание, что приводит к меньшему количеству остаточной информации и, возможно, более эффективному сжатию.In bidirectional current block prediction, two prediction blocks obtained using the corresponding first list motion vector L0 and second list motion vector L1 are combined into one prediction signal, which can achieve better adaptation to the original signal than a single prediction, resulting in less residual information and possibly more efficient compression.

При уточнении вектора движения два блока предсказания, полученные с использованием соответствующего первого вектора движения и второго вектора движения пары кандидатных MV, сравниваются на основе метрики подобия для каждой из пар кандидатных MV на уточнение. В качестве уточненных векторов движения обычно выбирается пара кандидатных MV, дающая наибольшее подобие. Обозначенный как MV0’ и MV1’, уточненный вектор движения в первой опорной картинке в списке L0 и уточненный вектор движения во второй опорной картинке в списке L1 соответственно. Другими словами, предсказания получают, соответственно вектору движения списка L0 и вектору движения списка L1 пары кандидатных векторов движения, которые затем сравниваются на основе метрики подобия. Пара кандидатных векторов движения, которая имеет наивысшее ассоциированное подобие, выбирается как уточненная пара MV.In motion vector refinement, two prediction blocks obtained using the corresponding first motion vector and the second motion vector of a pair of candidate MVs are compared based on a similarity metric for each of the pairs of candidate MVs for refinement. The pair of candidate MVs that gives the greatest similarity is usually selected as refined motion vectors. Denoted as MV0' and MV1', the refined motion vector in the first reference picture in the L0 list and the refined motion vector in the second reference picture in the L1 list, respectively. In other words, predictions are obtained according to the motion vector of list L0 and the motion vector of list L1 of pairs of candidate motion vectors, which are then compared based on a similarity metric. The candidate motion vector pair that has the highest associated similarity is selected as the refined MV pair.

Обычно результатом процесса уточнения являются уточненные MV. Уточненные MV могут быть такими же, как исходные MV, или могут отличаться от исходных MV, в зависимости от того, какая пара кандидатных MV достигает наивысшего подобия, пара кандидатных MV, сформированная исходными MV, также входит в число кандидатов пары MV. Другими словами, если наивысшая пара кандидатных MV, которая достигает наивысшего подобия, образована исходными MV, уточненные MV и исходные MV равны друг другу.Typically, the refinement process results in refined MVs. The refined MVs may be the same as the original MVs, or may be different from the original MVs, depending on which candidate MV pair achieves the highest similarity, the candidate MV pair formed by the original MVs is also among the candidate MV pairs. In other words, if the highest pair of candidate MVs that achieves the highest similarity is formed by the original MVs, the refined MVs and the original MVs are equal to each other.

Вместо выбора позиции, которая максимизирует метрику подобия, другим методом является выбор позиции, которая минимизирует метрику неподобия. Мера сравнения неподобия может быть SAD (сумма абсолютных различий), MRSAD (средняя удаленная сумма абсолютных различий, SSE (сумма квадратов ошибок) и т. д. SAD между двумя блоками предсказания может быть получена с использованием пары кандидатных MV (CMV0, CMV1), SAD можно вычислить следующим образом:Instead of choosing a position that maximizes the similarity metric, another method is to choose a position that minimizes the dissimilarity metric. The dissimilarity comparison measure can be SAD (Sum of Absolute Differences), MRSAD (Mean Remote Sum of Absolute Differences, SSE (Sum of Squared Errors), etc. The SAD between two prediction blocks can be obtained using a pair of candidate MVs (CMV0, CMV1), SAD can be calculated as follows:

где nCbH и nCbW - высота и ширина блоков предсказания, функция abs(a) указывает абсолютное значение аргумента a, predSAmplesL0 и predSAmplesL1 - выборки блоков предсказания, полученные в соответствии с парой кандидатных MV, которая обозначена как (CMV0, CMV1 ).where nCbH and nCbW are the height and width of the prediction blocks, the function abs(a) specifies the absolute value of the argument a, predSAmplesL0 and predSAmplesL1 are the prediction block samples obtained in accordance with the pair of candidate MVs, which is denoted as (CMV0, CMV1).

В качестве альтернативы, меры сравнения неподобия могут быть получены путем оценки только подмножества выборок в блоке предсказания, чтобы уменьшить количество вычислений. Пример ниже, где строки выборок альтернативно включаются в вычисление SAD (оценивается каждая вторая строка). Alternatively, dissimilarity comparison measures can be obtained by evaluating only a subset of samples in the prediction block to reduce the amount of computation. Example below where sample rows are alternatively included in the SAD calculation (every other row is evaluated).

Один из примеров уточнения вектора движения поясняется в документе «JVET-M1001-v3, Versatile Video Coding (Draft 4)” of JVET (of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11), который находится в открытом доступе по адресу http://phenix.it-sudparis.eu/jvet/». Раздел «8.4.3 Decoder side motion vector refinement process» в документе иллюстрирует уточнение вектора движения.One example of motion vector refinement is explained in the document “JVET-M1001-v3, Versatile Video Coding (Draft 4)” of JVET (of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11), which is publicly available at http://phenix.it-sudparis.eu/jvet/.” Section “8.4.3 Decoder side motion vector refinement process” in the document illustrates motion vector refinement.

Чтобы уменьшить требования к внутренней памяти для уточнения, в некоторых вариантах осуществления процесс уточнения вектора движения может выполняться независимо для блоков выборок яркости, полученных путем разделения кодированного блока выборок, которые превышают некоторую предопределенную ширину или предопределенную высоту в выборках яркости в субблоки выборок, которые меньше или равны предопределенной ширине и предопределенной высоте в яркости. Уточненная пара MV для каждого субблока в разделенном кодированном блоке может быть разной. Затем выполняется внешнее предсказание для яркости и цветности для каждого субблока с использованием уточненной пары MV этого субблока.To reduce internal memory requirements for refinement, in some embodiments, the motion vector refinement process may be performed independently on blocks of luminance samples obtained by dividing an encoded block of samples that exceed some predetermined width or predetermined height in luminance samples into subblocks of samples that are less than or equal to equal to a predefined width and a predefined height in brightness. The refined MV pair for each subblock in a divided coded block may be different. External prediction is then performed for luma and chrominance for each sub-block using the refined MV pair of that sub-block.

Каждый MV пары исходных MV может иметь дробную пиксельную точность. Другими словами, MV указывает смещение между текущим блоком выборок и опорной областью с повторной выборкой, и это смещение может указывать на дробную позицию в горизонтальном и вертикальном направлениях из целочисленной сетки восстановленных опорных выборок. Как правило, выполняется двухмерная интерполяция восстановленных значений опорной сетки целочисленных выборок для получения значений выборок в месте смещения дробной выборки. Процесс получения предсказанных выборок из восстановленных опорных картинок с использованием пары кандидатных MV может осуществляться одним из следующих способов:Each MV of a pair of source MVs can have fractional pixel precision. In other words, the MV indicates an offset between the current block of samples and the resampled reference region, and this offset may indicate a fractional position in the horizontal and vertical directions from an integer grid of reconstructed reference samples. Typically, a two-dimensional interpolation is performed on the reconstructed reference grid values of the integer samples to obtain the sample values at the location of the fractional sample offset. The process of obtaining predicted samples from reconstructed reference pictures using a pair of candidate MVs can be carried out in one of the following ways:

Округлите дробную часть пары исходных MV до ближайшего целочисленного местоположения и получите целочисленные значения сетки восстановленных опорных картинок.Round the fractional part of a pair of original MVs to the nearest integer location and obtain the integer grid values of the reconstructed reference pictures.

Выполните 2-отводную (например, билинейную) разделяемую билинейную интерполяцию, чтобы получить предсказанные значения выборки с точностью до дробного пикселя, указанной парой исходных MV.Perform 2-tap (e.g., bilinear) separable bilinear interpolation to obtain predicted sample values to the fractional pixel precision specified by the source MV pair.

Выполните разделительную интерполяцию с более высоким отводом (например, с 8 или 6 отводами), чтобы получить предсказанные значения выборки с точностью до дробного пикселя, указанной парой исходных MV.Perform divisive interpolation with a higher tap (e.g., 8 or 6 taps) to obtain predicted sample values to the fractional pixel precision specified by the source MV pair.

Хотя пары кандидатных MV могут иметь произвольное смещение субпикселей относительно пары исходных MV, в некоторых вариантах осуществления для простоты поиска пары кандидатных MV выбираются с целочисленным расстоянием между пикселями относительно пары исходных MV. В таких случаях предсказанные выборки по всей паре кандидатных MV могут быть получены путем выполнения предсказания для блока выборок вокруг пары исходных MV, чтобы охватить все позиции уточнения вокруг пары исходных MV.Although candidate MV pairs can have an arbitrary subpixel offset relative to the source MV pair, in some embodiments, for ease of searching, candidate MV pairs are selected with an integer pixel distance relative to the source MV pair. In such cases, predicted samples over the entire pair of candidate MVs can be obtained by performing prediction on a block of samples around the pair of original MVs to cover all refinement positions around the pair of original MVs.

В некоторых вариантах осуществления, как только значение стоимости неподобия во всех парах кандидатных MV на целочисленном расстоянии от пары исходных MV было оценено, добавляются дополнительные пары кандидатных MV на смещениях субпиксельного расстояния от позиции наилучшего значения стоимости. Предсказанные выборки получаются для каждой из этих позиций с использованием одного из способов, описанных ранее, а стоимость неподобия оценивается и сравнивается для получения позиции наименьшего неподобия. В некоторых других вариантах осуществления, чтобы избежать этого дорогостоящего в вычислительном отношении процесса предсказания для каждой позиции расстояния субпикселя вокруг позиции целочисленного расстояния с наилучшей стоимостью, оцененные значения стоимости целочисленного расстояния запоминаются, и поверхность параметрической ошибки устанавливается в окрестности наилучшего целочисленного расстояния. Затем аналитически вычисляется минимум этой поверхности ошибки и используется как позиция с минимальным неподобием. В таких случаях говорят, что значение стоимости неподобия выведено из вычисленных значений стоимости целочисленного расстояния.In some embodiments, once the dissimilarity cost value in all pairs of candidate MVs at an integer distance from the pair of original MVs has been estimated, additional candidate MV pairs are added at sub-pixel distance offsets from the position of the best cost value. Predicted samples are obtained for each of these positions using one of the methods described earlier, and the cost of dissimilarity is estimated and compared to obtain the position of least dissimilarity. In some other embodiments, to avoid this computationally expensive process of predicting for each subpixel distance position around the best-cost integer distance position, the estimated integer distance cost values are stored and the parametric error surface is set to a neighborhood of the best integer distance. The minimum of this error surface is then analytically calculated and used as the position with minimum dissimilarity. In such cases, the dissimilarity cost value is said to be derived from the calculated integer distance cost values.

Применение уточнения вектора движения для данного кодированного блока выборок может быть обусловлено некоторыми свойствами кодировки кодированного блока выборок. Некоторыми примерами таких свойств кодировки могут быть:The application of motion vector refinement for a given encoded sample block may be dictated by certain encoding properties of the encoded sample block. Some examples of such encoding properties could be:

расстояние в количестве картинок (при выборке с одинаковой частотой кадров) от текущей картинки до двух опорных картинок, используемых для двунаправленного предсказания кодированного блока выборок, одинаково и попадает на противоположные стороны текущей картинки.the distance in number of pictures (when sampling at the same frame rate) from the current picture to the two reference pictures used for bidirectional prediction of the coded block of samples is the same and falls on opposite sides of the current picture.

первоначальное неподобие между двумя предсказанными блоками, полученными с использованием пары исходных MV, меньше предопределенного порога для каждой выборки. the initial dissimilarity between two predicted blocks obtained using a pair of original MVs is less than a predefined threshold for each sample.

Уточнение оптического потока с двунаправленным предсказанием (BPOF)Bidirectional Predictive Optical Flow (BPOF) refinement

Уточнение оптического потока с двунаправленным предсказанием - это процесс повышения точности двунаправленного предсказания блока без явной дополнительной сигнализации в потоке битов, кроме тех, которые указаны для двунаправленного предсказания. Это является частью блока (244) внешнего предсказания на Фиг. 2 и 344 на Фиг. 3.Bidirectional predictive optical flow refinement is the process of improving the bidirectional prediction accuracy of a block without explicit additional signaling in the bit stream other than that specified for bidirectional prediction. This is part of the inter prediction block (244) in FIG. 2 and 344 in Fig. 3.

При двунаправленном предсказании 2 внешних предсказания получаются согласно двум векторам движения, затем предсказания объединяются путем применения взвешенного усреднения. Комбинированное предсказание может привести к уменьшению остаточной энергии, поскольку шум квантования в двух опорных патчах (фрагментах) нейтрализуется, тем самым обеспечивая большую эффективность кодировки, чем однонаправленное (единичное) предсказание. Взвешенная комбинация при двунаправленном предсказании может быть выполнена с помощью уравнения:In bidirectional prediction, 2 outer predictions are obtained according to two motion vectors, then the predictions are combined by applying weighted averaging. Combined prediction can result in reduced residual energy as quantization noise in the two reference patches is cancelled, thereby providing greater encoding efficiency than unidirectional (single) prediction. Weighted combination in bidirectional prediction can be done using the equation:

Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K,Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K,

где W1 и W2 - весовые коэффициенты, которые могут сигнализироваться в потоке битов или могут быть заранее определены на стороне кодера или на стороне декодера. K - аддитивный коэффициент, который также может быть сигнализирован в потоке битов или заранее определен на стороне кодера или на стороне декодера. Например, двунаправленное предсказание может быть получено с использованиемwhere W1 and W2 are weights that may be signaled in the bitstream or may be predetermined on the encoder side or on the decoder side. K is an additive coefficient, which can also be signaled in the bitstream or predetermined on the encoder side or on the decoder side. For example, bidirectional prediction can be obtained using

Bi-prediction = (Prediction1 + Prediction2)/2,Bi-prediction = (Prediction1 + Prediction2)/2,

где W1 и W2 установлены на 1/2, а K установлено на 0.where W1 and W2 are set to 1/2 and K is set to 0.

Целью уточнения оптического потока является повышение точности двунаправленного предсказания. Оптический поток - это шаблон видимого движения объектов изображения между двумя последовательными кадрами. Оптический поток вызывается движением объекта или камеры. Процесс уточнения оптического потока повышает точность двунаправленного предсказания за счет применения уравнения оптического потока (решения уравнения оптического потока).The purpose of optical flow refinement is to improve the accuracy of bidirectional prediction. Optical flow is the pattern of apparent movement of objects in an image between two successive frames. Optical flow is caused by the movement of an object or camera. The optical flow refinement process improves the accuracy of bidirectional prediction by applying the optical flow equation (solving the optical flow equation).

В примере пиксель I (x, y, t) расположен в первом кадре (x и y соответствуют пространственным координатам, t соответствуют временному измерению). Объект, представленный пикселем, перемещается на расстояние (dx, dy) в следующем кадре, снятом после времени dt. Поскольку эти пиксели одинаковы и интенсивность не меняется, уравнение оптического потока определяется следующим образом:In the example, pixel I (x, y, t) is located in the first frame (x and y correspond to the spatial coordinates, t correspond to the time dimension). The object represented by the pixel moves a distance (dx, dy) in the next frame taken after time dt. Since these pixels are the same and the intensity does not change, the optical flow equation is defined as follows:

I (x, y, t) = = I (x+dx , y+dy , t+dt)I (x, y, t) = = I (x+dx , y+dy , t+dt)

I (x, y, t) указывает интенсивность (значение выборки) пикселя в координатах (x, y, t).I(x, y, t) indicates the intensity (sampling value) of a pixel at coordinates (x, y, t).

В другом примере небольшие смещения и члены более высокого порядка в разложении в ряд Тейлора игнорируются, уравнения оптического потока также могут быть записаны как:In another example, small displacements and higher order terms in the Taylor series expansion are ignored, the optical flow equations can also be written as:

= 0 = 0

где и - горизонтальный и вертикальный градиенты пространственной выборки в позиции (x, y), а - частная производная по времени в точке (x, y).Where And are the horizontal and vertical gradients of the spatial sample at position (x, y), and - partial derivative with respect to time at point (x, y).

Уточнение оптического потока использует вышеупомянутый принцип, чтобы улучшить качество двунаправленного предсказания.Optical flow refinement uses the above principle to improve the quality of bidirectional prediction.

Реализация уточнения оптического потока обычно включает в себя следующие этапы:Implementation of optical flow refinement usually includes the following steps:

1. Вычисление градиентов выборки;1. Calculation of sampling gradients;

2. Вычисление разницы между первым предсказанием и вторым предсказанием;2. Calculate the difference between the first prediction and the second prediction;

3. Вычисление смещения пикселей или группы пикселей, которое минимизирует ошибку между двумя опорными патчами, полученными с использованием уравнения оптического потока3. Calculate the offset of pixels or group of pixels that minimizes the error between two reference patches obtained using the optical flow equation

где I(0) соответствует значению выборки в первом предсказании, I(1) - значение выборки во втором предсказании, а ∂I(0)/ ∂x и ∂I(0)/ ∂y - градиенты в -x и -y направления. и обозначают расстояния до опорных картинок, на которых получают первое предсказание и второе предсказание. Вектор движения (vx, vy) получается путем процесса минимизации. Некоторые подходы минимизируют сумму квадратов ошибок, в то время как некоторые подходы минимизируют сумму абсолютных ошибок.where I(0)corresponds to the sample value in the first prediction, I(1) is the sample value in the second prediction, and ∂I(0)/ ∂x and ∂I(0)/ ∂y - gradients in -x and -y directions.Anddenote the distances to the reference pictures on which the first prediction and the second prediction are obtained. Motion vector (vx,vy) is obtained by the process minimization. Some approaches minimize the sum of squared errors, while some approaches minimize the sum of absolute errors.

4. Использование реализации уравнения оптического потока, например, ниже:4. Using an implementation of the optical flow equation such as below:

Где predBIO указывает модифицированное предсказание, которое является результатом процесса уточнения оптического потока.Where predBIO points to a modified prediction that is the result of an optical flow refinement process.

Примерные градиенты можно получить по следующей формулеApproximate gradients can be obtained using the following formula

∂I (x, y, t) / ∂x=I (x+1, y, t) - - I (x - 1, y, t)∂I (x, y, t) / ∂x=I (x+1, y, t) - - I (x - 1, y, t)

∂I (x, y, t) / ∂y=I (x, y+1, t) - - I (x, y - 1, t)∂I (x, y, t) / ∂y=I (x, y+1, t) - - I (x, y - 1, t)

В некоторых вариантах осуществления, чтобы упростить сложность оценки смещения для каждого пикселя, смещение оценивается для группы пикселей. В некоторых примерах для вычисления улучшенного двунаправленного предсказания для блока выборок яркости 4×4 смещения оцениваются с использованием значений выборок блока 8×8 выборок яркости с блоком 4×4 выборок в его центре.In some embodiments, to simplify the complexity of estimating the offset for each pixel, the offset is estimated for a group of pixels. In some examples, to calculate improved bidirectional prediction for a 4x4 luma sample block, the offsets are estimated using the sample values of the 8x8 luma sample block with the 4x4 luma sample block at its center.

Входными данными процесса уточнения оптического потока являются выборки предсказания из двух опорных картинок, а выходными данными уточнения оптического потока является комбинированное предсказание (predBIO), которое вычисляется в соответствии с уравнением оптического потока.The input to the optical flow refinement process is the prediction samples from two reference pictures, and the output of the optical flow refinement is a combined prediction (predBIO), which is calculated according to the optical flow equation.

Один пример уточнения оптического потока объяснен в разделе 8.4.7.4 «Bidirectional optical flow prediction process» документа JVET-M1001, Versatile Video Coding (Draft 4).One example of optical flow refinement is explained in section 8.4.7.4 “Bidirectional optical flow prediction process” of JVET-M1001, Versatile Video Coding (Draft 4).

Термины «уточнение оптического потока», «уточнение оптического потока с двунаправленным предсказанием» и «уточнение двунаправленного оптического потока» используются в раскрытии как взаимозаменяемые, поскольку эти термины эквивалентны по своей природе.The terms “optical flow refinement,” “bidirectional predictive optical flow refinement,” and “bidirectional optical flow refinement” are used interchangeably in the disclosure because the terms are equivalent in nature.

В примере уточнение вектора движения и уточнение оптического потока применяются последовательно следующим образом:In the example, motion vector refinement and optical flow refinement are applied sequentially as follows:

Этап 0, получите исходные векторы движения, как в блоке 1010 на фиг. 8.Step 0, obtain the initial motion vectors as in block 1010 of FIG. 8.

На этапе 1 применяется блок 1020 уточнения вектора движения, и получаются уточненные векторы блока 1030 движения.In step 1, the motion vector refinement block 1020 is applied, and the refined vectors of the motion vector block 1030 are obtained.

На этапе 2 предсказания получают согласно векторам движения уточнения блока 1040. Полученные предсказания - это I(0) и I(1), которые являются входными данными процесса уточнения оптического потока.In step 2, predictions are obtained according to the motion vectors of the refinement block 1040. The obtained predictions are I (0) and I (1) , which are inputs to the optical flow refinement process.

Этап 3, процесс уточнения оптического потока применяется к предсказаниям, чтобы получить модифицированное предсказание. Модифицированное предсказание получается в соответствии с уравнением оптического низкого уровня и обозначается как predBIO. Step 3, the optical flow refinement process is applied to the predictions to obtain a modified prediction. The modified prediction is obtained according to the optical low-level equation and is denoted pred BIO .

Однако процесс уточнения оптического потока требует больших вычислительных ресурсов. Время декодирования увеличивается за счет применения уточнения оптического потока.However, the optical flow refinement process requires large computational resources. Decoding time is increased by applying optical flow refinement.

В одном варианте осуществления настоящего изобретения раскрыт способ решения, применять ли уточнение оптического потока или нет, это решение может быть принято согласно вычислениям, выполняемым во время процесса уточнения вектора движения.In one embodiment of the present invention, a method for deciding whether to apply optical flow refinement or not is disclosed, which decision can be made according to calculations performed during the motion vector refinement process.

Более конкретно, результат вычислений, выполненных во время процесса уточнения вектора движения, используется для определения, применять ли уточнение оптического потока или нет.More specifically, the result of calculations performed during the motion vector refinement process is used to determine whether to apply optical flow refinement or not.

Цель изобретения - пропустить применение уточнения оптического потока в соответствии с заданным условием, чтобы уменьшить среднее время декодирования (пропуская необходимые вычисления).The purpose of the invention is to skip the application of optical flow refinement according to a given condition in order to reduce the average decoding time (by skipping the necessary calculations).

Согласно первому примерному варианту осуществления следующие этапы применяются, чтобы получить предсказание для текущего блока кодировки:According to the first exemplary embodiment, the following steps are applied to obtain a prediction for the current encoding block:

Этап 0: получить исходные векторы движения на основе информации указания в потоке битов.Step 0: Obtain the initial motion vectors based on the indication information in the bit stream.

Этап 1: получить первые предсказания на основе исходных векторов движения и интерполяционного фильтра M-отводов. Step 1: Obtain first predictions based on the original motion vectors and the M-tap interpolation filter.

Этап 2: получить сопоставимую стоимость в соответствии с первыми предсказаниями. Step 2: obtain comparable value according to first predictions.

Этап 3: получить уточненный вектор движения в соответствии с исходными векторами движения и стоимостью сопоставления. Step 3: Obtain the refined motion vector according to the original motion vectors and matching cost.

Этап 4: получить второе предсказание в соответствии с уточненным вектором движения и фильтром интерполяции K-отводов. Step 4: Obtain the second prediction according to the refined motion vector and K-tap interpolation filter.

Этап 5: определить, выполнять ли процесс уточнения оптического потока, в соответствии со стоимостью сопоставления. В одном примере стоимость сопоставления сравнивается с порогом, и процесс уточнения оптического потока выполняется, когда значение стоимости сопоставления больше или равно пороговому значению. Этап 5 также может быть выполнен перед этапом 3 или этапом 4. Step 5: Determine whether to perform the optical flow refinement process according to the matching cost. In one example, the matching cost is compared to a threshold, and the optical flow refinement process is performed when the matching cost value is greater than or equal to the threshold. Step 5 can also be performed before Step 3 or Step 4.

Этап 6: Когда определено, что необходимо выполнить процесс уточнения оптического потока, применяется уточнение оптического потока со вторым предсказанием в качестве входных данных и измененным вторым предсказанием в качестве выходных данных. Если определено отрицательно, уточнение оптического потока не применяется ко второму предсказанию. Другими словами, когда определено, что необходимо выполнить процесс уточнения оптического потока, окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и согласно процессу уточнения оптического потока. В противном случае окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и без применения процесса уточнения оптического потока.Step 6: When it is determined that the optical flow refinement process needs to be performed, optical flow refinement is applied with the second prediction as input and the modified second prediction as output. If defined negatively, the optical flow refinement is not applied to the second prediction. In other words, when it is determined that the optical flow refinement process needs to be performed, the final prediction of the current encoding block is obtained according to the second prediction and according to the optical flow refinement process. Otherwise, the final prediction of the current encoding block is obtained according to the second prediction and without applying the optical flow refinement process.

Подробное объяснение этапов следующее:The detailed explanation of the steps is as follows:

На этапе 0 в качестве входных данных получают два исходных вектора движения. Исходные векторы движения могут быть определены на основе информации указания в потоке битов. Например, индекс может быть передан в потоке битов, индекс указывает позицию в списке кандидатных векторов движения. В другом примере индекс предиктора вектора движения и значение разности векторов движения могут сигнализироваться в потоке битов. Вектор движения, который определяется на основе информации указания в потоке битов, определяется как исходные векторы движения.In step 0, two initial motion vectors are received as input. The initial motion vectors may be determined based on the indication information in the bitstream. For example, an index may be transmitted in a bitstream, the index indicating a position in a list of candidate motion vectors. In another example, the motion vector predictor index and the motion vector difference value may be signaled in the bitstream. The motion vector, which is determined based on the indication information in the bit stream, is determined as the original motion vectors.

В другом примере указания опорных картинок могут быть получены из потока битов, исходные векторы движения получаются на основе указаний опорных картинок. Указания опорных картинок используются для определения опорных картинок, на которые указывают исходные векторы движения.In another example, the reference picture indications may be obtained from the bit stream, the original motion vectors are obtained based on the reference picture indications. Reference picture indications are used to determine the reference pictures that the source motion vectors point to.

Этап 1, этап 2 и этап 3 соответствуют процессу уточнения вектора движения, как объяснено в приведенных выше примерах. Исходные векторы движения уточняются согласно уточнению вектора движения. В одном примере стоимость сопоставления является мерой подобия, которая используется при уточнении вектора движения.Stage 1, stage 2 and stage 3 correspond to the motion vector refinement process as explained in the examples above. The initial motion vectors are refined according to the motion vector refinement. In one example, the matching cost is a measure of similarity that is used in motion vector refinement.

В соответствии с этапом 1 получают первые предсказания, соответствующие исходным векторам движения. В примере есть по меньшей мере 2 пары кандидатных векторов движения в процессе уточнения вектора движения, одна из которых обычно является парой, образованной исходными векторами движения (MV0, MV1). Другими словами, набор кандидатных векторов движения обычно включает в себя более одной пары, причем одна из пар обычно (MV0, MV1). Другая пара кандидатных векторов движения определяется на основе (MV0, MV1) путем добавления небольших возмущений к векторам движения (как объяснено в приведенных выше примерах).According to step 1, the first predictions corresponding to the original motion vectors are obtained. In the example, there are at least 2 pairs of candidate motion vectors in the motion vector refinement process, one of which is usually the pair formed by the original motion vectors (MV0, MV1). In other words, the set of candidate motion vectors typically includes more than one pair, with one of the pairs usually (MV0, MV1). Another pair of candidate motion vectors is determined based on (MV0, MV1) by adding small perturbations to the motion vectors (as explained in the examples above).

На этапе 1 первые предсказания, соответствующие каждой паре кандидатных векторов движения, получаются на основе фильтра интерполяции M-отводов. Например, одно предсказание, соответствующее MV0, может быть получено путем размещения прямоугольного блока в опорной картинке (картинке, которая уже закодирована в кодере или декодирована в декодере), при этом блок указывается посредством MV0. После этого к выборкам в блоке, указанном MV0, преимущественно применяется фильтр интерполяции. Чтобы обеспечить более точную оценку движения, разрешение опорной картинки может быть улучшено путем интерполяции выборок между пикселями. Дробная интерполяция пикселей может выполняться путем взвешенного усреднения ближайших пикселей. Здесь фильтр с M-отводами обычно может быть фильтром с 2, 4, 6 или 8 отводами (не ограничиваясь этими параметрами), что означает, что фильтр имеет M коэффициентов умножения. Предсказание, соответствующее MV1, может быть получено аналогичным образом, размещая прямоугольный блок в той же или другой опорной картинке. Размер прямоугольника пропорционален размеру текущего блока кодировки.In step 1, the first predictions corresponding to each pair of candidate motion vectors are obtained based on the M-tap interpolation filter. For example, one prediction corresponding to MV0 can be obtained by placing a rectangular block in a reference picture (a picture that is already encoded in the encoder or decoded in the decoder), with the block indicated by MV0. An interpolation filter is then preferentially applied to the samples in the block indicated by MV0. To provide more accurate motion estimation, the resolution of the reference picture can be improved by interpolating samples between pixels. Fractional pixel interpolation can be performed by weighted averaging of nearby pixels. Here, an M-tap filter can typically be a 2-, 4-, 6-, or 8-tap filter (but not limited to these parameters), which means that the filter has M multipliers. The prediction corresponding to MV1 can be obtained in a similar way by placing a rectangular block in the same or a different reference picture. The size of the rectangle is proportional to the size of the current encoding block.

На этапе 2 стоимость сопоставления, связанная с каждой парой кандидатных векторов движения, определяется согласно первым предсказаниям.In step 2, the matching cost associated with each pair of candidate motion vectors is determined according to the first predictions.

Согласно этапу 2 получается, по меньшей мере, одна стоимость сопоставления (например, мера подобия), соответствующая одной из пар векторов движения (MV) кандидата на уточнение. Чем выше подобие между двумя блоками предсказания, тем меньше стоимость сопоставления.According to step 2, at least one matching cost (eg, a similarity measure) corresponding to one of the motion vector (MV) pairs of the refinement candidate is obtained. The higher the similarity between two prediction blocks, the lower the matching cost.

Указанная стоимость сопоставления используется при уточнении исходных векторов движения на этапе 3. Уточненный вектор движения выбирается согласно упомянутой стоимости сопоставления.The specified matching cost is used when refining the original motion vectors in step 3. The refined motion vector is selected according to the mentioned matching cost.

На этапе 4 второе предсказание получается согласно уточненному вектору движения и интерполяционному фильтру с K-отводами. В случае двух уточненных векторов движения (MV0’ и MV1’), что является случаем двунаправленного предсказания, получают два вторых предсказания.In step 4, the second prediction is obtained according to the refined motion vector and the K-tap interpolation filter. In the case of two refined motion vectors (MV0' and MV1'), which is the case of bidirectional prediction, two second predictions are obtained.

Второе предсказание получается путем применения второго фильтра интерполяции (фильтр с K-отводами), который может быть или не быть идентичным первому фильтру интерполяции (фильтр с M-отводами). Второе предсказание получается аналогично первому предсказанию с применением второго интерполяционного фильтра и в соответствии с блоком, указанным MV0’ и MV1’ в опорной картинке.The second prediction is obtained by applying a second interpolation filter (K-tap filter), which may or may not be identical to the first interpolation filter (M-tap filter). The second prediction is obtained similarly to the first prediction using the second interpolation filter and in accordance with the block specified by MV0' and MV1' in the reference picture.

На этапе 5 упомянутая стоимость сопоставления используется для определения того, выполнять ли процесс уточнения оптического потока или нет, в соответствии со следующим:In step 5, said matching cost is used to determine whether to perform the optical flow refinement process or not, according to the following:

когда значение стоимости сопоставления меньше заранее определенного порога, уточнение оптического потока не применяется. Когда значение стоимости сопоставления больше или равно пороговому значению, выполняется процесс уточнения оптического потока. Если выполняется процесс уточнения оптического потока, выборки окончательного предсказания изменяются.when the matching cost value is less than a predetermined threshold, optical flow refinement is not applied. When the matching cost value is greater than or equal to the threshold value, the optical flow refinement process is performed. If the optical flow refinement process is performed, the final prediction samples are changed.

На этапе 6, согласно выходным данным этапа 5, если стоимость сопоставления больше r, равного упомянутому порогу, процесс уточнения оптического потока применяется ко вторым предсказаниям, вторые предсказания получаются согласно MV0’ и MV1’ (уточненные векторы движения). Окончательное предсказание для текущего блока кодировки получается путем выполнения процесса уточнения оптического потока над вторыми предсказаниями, вторые предсказания указываются посредством MV0’ и MV1’. Если стоимость сопоставления меньше указанного порога, окончательное предсказание получается согласно вторым предсказаниям, указанным MV0’ и MV1’, без применения уточнения оптического потока, что означает, что этап 6 не выполняется.In step 6, according to the output of step 5, if the matching cost is greater than r equal to the mentioned threshold, the optical flow refinement process is applied to the second predictions, the second predictions are obtained according to MV0' and MV1' (refined motion vectors). The final prediction for the current encoding block is obtained by performing an optical flow refinement process on the second predictions, the second predictions being indicated by MV0' and MV1'. If the matching cost is less than the specified threshold, the final prediction is obtained according to the second predictions specified by MV0' and MV1' without applying optical flow refinement, which means that step 6 is not performed.

В одной реализации стоимость сопоставления на этапе 2 представляет собой стоимость сопоставления, соответствующую паре исходных векторов движения (которая является одной из пар кандидатных векторов движения на уточнение (MV)). Стоимость сопоставления может соответствовать паре MV0, MV1.In one implementation, the matching cost in step 2 is the matching cost corresponding to a pair of original motion vectors (which is one of the candidate refinement motion vector (MV) pairs). The matching cost can correspond to the pair MV0, MV1.

В другой реализации упомянутая стоимость сопоставления на этапе 2 является стоимостью сопоставления, равной наименьшей стоимости сопоставления среди пар кандидатных векторов движения (MV) на уточнение. Другими словами, получается стоимость сопоставления, соответствующая каждой паре кандидатных векторов движения на уточнение, и упомянутая стоимость сопоставления равна наименьшей стоимости сопоставления среди них. В одном примере упомянутая стоимость сопоставления является стоимостью сопоставления, соответствующей паре уточненных MV0’ и MV1’ векторов движения (поскольку выбрана пара уточненных векторов движения (MV0’, MV1’), поскольку она имеет наименьшую стоимость сопоставления.In another implementation, said matching cost in step 2 is a matching cost equal to the smallest matching cost among pairs of candidate motion vectors (MVs) for refinement. In other words, a matching cost corresponding to each pair of candidate motion vectors for refinement is obtained, and said matching cost is equal to the smallest matching cost among them. In one example, said matching cost is the matching cost corresponding to the refined motion vector pair MV0' and MV1' (since the refined motion vector pair (MV0', MV1') is selected because it has the lowest matching cost.

Например, пары MV можно построить следующим образом.For example, MV pairs can be constructed as follows.

Пары кандидатов MV определяются путем добавления небольших разностей векторов движения к MV0 и MV1. Например, пары кандидатных MV могут включать в себя следующее:Pairs of candidate MVs are determined by adding small motion vector differences to MV0 and MV1. For example, candidate MV pairs could include the following:

(MV0, MV1)(MV0, MV1)

(MV0 + (0,1), MV1 + (0, -1))(MV0 + (0,1), MV1 + (0, -1))

(MV0 + (1,0), MV1 + (-1,0))(MV0 + (1.0), MV1 + (-1.0))

MV0 и MV1 - это исходные векторы движения, MV0’ и MV1’ - уточненные векторы движения во всей заявке.MV0 and MV1 are the original motion vectors, MV0’ and MV1’ are the refined motion vectors throughout the application.

Согласно другой реализации, когда процесс уточнения оптического потока не выполняется, окончательное предсказание получается в соответствии со следующей формулой:According to another implementation, when the optical flow refinement process is not performed, the final prediction is obtained according to the following formula:

Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K, Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K,

где W1 и W2 - весовые коэффициенты, W1 и W2 могут передаваться в потоке битов, или W1 и W2 могут быть заранее определены на стороне кодера или на стороне декодера. K - аддитивный коэффициент, который также может быть сигнализирован в потоке битов или заранее определен на стороне кодера или на стороне декодера. В примере, двунаправленное предсказание может быть получено с использованиемwhere W1 and W2 are weights, W1 and W2 may be transmitted in the bit stream, or W1 and W2 may be predetermined at the encoder side or at the decoder side. K is an additive coefficient, which can also be signaled in the bitstream or predetermined on the encoder side or on the decoder side. In an example, bidirectional prediction can be obtained using

Bi-prediction = (Prediction1 + Prediction2)/2, Bi-prediction = (Prediction1 + Prediction2)/2,

где W1 и W2 установлены на 1/2, а K установлено на 0. Prediction1 и prediction2 - вторые предсказания, которые получены с помощью K-отводной интерполяционной фильтрации, Prediction1 соответствует первому уточненному MV (MV0’), а Prediction2 соответствует второму уточненному MV (MV1’).where W1 and W2 are set to 1/2 and K is set to 0. Prediction1 and prediction2 are the second predictions that are obtained using K-tap interpolation filtering, Prediction1 corresponds to the first refined MV (MV0'), and Prediction2 corresponds to the second refined MV ( MV1').

Приведенное выше уравнение позволяет получить взвешенную комбинацию двух предсказаний, и результатом является окончательное предсказание для блока.The above equation produces a weighted combination of the two predictions, and the result is the final prediction for the block.

Порог может быть предопределенным значением, значение порога может зависеть от размера блока предсказания. Например, порог может быть th=nCbW x nCbH x K, где K - значение больше нуля, nCbW и nCbH - ширина и высота блока предсказания.The threshold may be a predefined value, the value of the threshold may depend on the size of the prediction block. For example, the threshold could be th=nCbW x nCbH x K, where K is a value greater than zero, nCbW and nCbH are the width and height of the prediction block.

Первый вариант осуществления дополнительно проиллюстрирован блок-схемой на фиг. 6.The first embodiment is further illustrated by a block diagram in FIG. 6.

В одной реализации фильтр с M-отводами представляет собой фильтр с 2 отводами (например, билинейный фильтр) с одним из отводов, равным нулю. В этой реализации фильтр с M-отводами использует 2 коэффициента умножения, значение одного коэффициента всегда равно нулю. Какой коэффициент имеет значение, равное нулю, определяется на основе точки дробной выборки, когда точка дробной выборки указана вектором движения. В этом случае значение первого коэффициента умножения или значение второго коэффициента умножения может быть нулевым, в зависимости от дробной составляющей вектора движения.In one implementation, an M-tap filter is a 2-tap filter (eg, a bilinear filter) with one of the taps set to zero. In this implementation, the M-tap filter uses 2 multipliers, one of which is always zero. Which coefficient has a value equal to zero is determined based on the fractional sampling point when the fractional sampling point is indicated by the motion vector. In this case, the value of the first multiplication factor or the value of the second multiplication factor may be zero, depending on the fractional component of the motion vector.

Пример такого фильтра (с двумя отводами, один из которых нулевой) можно проиллюстрировать в соответствии со следующей таблицей:An example of such a filter (with two taps, one of which is zero) can be illustrated in accordance with the following table:

Положение дробной выборки pFractional sample position p коэффициенты интерполяционного фильтраinterpolation filter coefficients fbfb LL [p] [0] [p][0] fbfb LL [p] [1] [p][1] 11 1616 00 22 1616 00 33 1616 00 44 1616 00 55 1616 00 66 1616 00 77 1616 00 88 00 1616 99 00 1616 1010 00 1616 11eleven 00 1616 1212 00 1616 1313 00 1616 1414 00 1616 1515 00 1616

Позиция (p) дробной выборки может быть получена в соответствии с компонентами исходного или уточненного вектора движения. Например, если компонент -x вектора движения задается как MV0x, то позиция дробной выборки может быть получена как p=MV0x% 16, где «%» - это операция по модулю. Как правило, p=MV0x% K, где K представляет количество позиций дробной выборки между двумя позициями выборки. Фильтр интерполяции, приведенный в качестве примера выше, также может называться одноотводным фильтром, поскольку только один из отводов фильтра не равен нулю в каждый момент времени.The fractional sampling position (p) can be obtained according to the components of the original or refined motion vector. For example, if the -x component of the motion vector is specified as MV0x, then the fractional sampling position can be obtained as p=MV0x% 16, where "%" is the modulo operation. Typically, p=MV0x% K, where K represents the number of fractional sample positions between two sample positions. The interpolation filter shown as an example above may also be called a single-tap filter because only one of the filter's taps is non-zero at any given time.

В одной реализации значение K равно 8. В других примерах значение M меньше 8.In one implementation, the value of K is 8. In other examples, the value of M is less than 8.

В одной реализации значение M и значение K равны 8.In one implementation, the value of M and the value of K are 8.

Исходный вектор движения получается в блоке 710, который является входом блока уточнения вектора движения. Пространство поиска строится вокруг исходного вектора движения блоком уточнения вектора движения (740). В одном примере пространство поиска состоит из пар кандидатных векторов движения, первого вектора движения из пары, соответствующей первой опорной картинке, и второго вектора движения из пары, соответствующей второй опорной картинке. Первые предсказания, соответствующие каждой паре кандидатных векторов движения, получаются на этапе 710 посредством применения фильтра интерполяции с M-отводами. Как часть уточнения вектора движения вычисляется стоимость сопоставления, соответствующая одной из пар векторов движения в пространстве поиска (720). Упомянутая стоимость сопоставления используется как часть двух процессов, первый процесс - это уточнение вектора движения (740), где стоимость сопоставления используется для решения, какая пара векторов движения выбрана в качестве пары уточненных векторов движения (750). Второй процесс - это решение о том, применяется ли уточнение оптического потока (770) или нет. После получения уточненного вектора движения второе предсказание для текущего блока получается посредством блока (760). Если стоимость сопоставления больше или равна пороговому значению, применяется уточнение оптического потока, и прогноз на этапе 760 модифицируется на этапе 770, чтобы получить модифицированное предсказание (780). Модифицированное предсказание обычно отличается по выборочным значениям от второго предсказания на этапе 760.The original motion vector is obtained in block 710, which is the input of the motion vector refinement block. The search space is built around the original motion vector by the motion vector refinement block (740). In one example, the search space consists of pairs of candidate motion vectors, the first motion vector of the pair corresponding to the first reference picture, and the second motion vector of the pair corresponding to the second reference picture. The first predictions corresponding to each pair of candidate motion vectors are obtained at step 710 by applying an M-tap interpolation filter. As part of the motion vector refinement, a matching cost corresponding to one of the pairs of motion vectors in the search space (720) is calculated. Said matching cost is used as part of two processes, the first process is motion vector refinement (740), where the matching cost is used to decide which motion vector pair is selected as the refined motion vector pair (750). The second process is deciding whether optical flow refinement (770) is applied or not. After receiving the refined motion vector, a second prediction for the current block is obtained by block (760). If the matching cost is greater than or equal to the threshold, optical flow refinement is applied and the prediction at step 760 is modified at step 770 to obtain a modified prediction (780). The modified prediction typically differs in sample values from the second prediction at step 760.

В одном примере процесс уточнения вектора движения выполняется более одного раза для дальнейшего уточнения вектора движения. В этом примере исходные векторы движения сначала уточняются процессом уточнения вектора движения, чтобы получить первый уточненный вектор движения. После этого уточнение вектора движения выполняется еще раз, в этом случае первый уточненный вектор движения рассматривается как исходные векторы движения для второго уточнения вектора движения.In one example, the motion vector refinement process is performed more than once to further refine the motion vector. In this example, the original motion vectors are first refined by a motion vector refinement process to obtain the first refined motion vector. After this, the motion vector refinement is performed again, in this case the first refined motion vector is considered as the original motion vectors for the second motion vector refinement.

Согласно второму примерному варианту осуществления следующие этапы применяются, чтобы получить предсказание для текущего блока кодировки:According to a second exemplary embodiment, the following steps are applied to obtain a prediction for the current encoding block:

Этап 0: получить исходные векторы движения на основе информации указания в потоке битов.Step 0: Obtain the initial motion vectors based on the indication information in the bit stream.

Этап 1: получить первые предсказания на основе исходных векторов движения и интерполяционного фильтра с M-отводами. Step 1: Obtain first predictions based on the original motion vectors and the M-tap interpolation filter.

Этап 2: получить N сопоставимых стоимостей согласно первым предсказаниям. Stage 2: obtain N comparable values according to the first predictions.

Этап 3: получить уточненный вектор движения в соответствии с исходными векторами движения и N стоимостей сопоставления на основе первой функции. Step 3: Obtain the refined motion vector according to the original motion vectors and N matching costs based on the first function.

Этап 4: получить второе предсказание в соответствии с уточненным вектором движения и фильтром интерполяции с K-отводами. Step 4: Obtain the second prediction according to the refined motion vector and K-tap interpolation filter.

Этап 5: определить, следует ли выполнять процесс уточнения оптического потока, в соответствии с N стоимостей сопоставления. Выведенная стоимость получается согласно N сопоставимых стоимостей и второй функции. В примере выведенная стоимость сравнивается с пороговым значением, и процесс уточнения оптического потока выполняется, когда значение выведенной стоимости больше или равно пороговому значению. Этап 5 также может быть выполнен перед этапом 3 или этапом 4. Step 5: Determine whether to perform the optical flow refinement process according to N matching costs. The inferred value is obtained according to N comparable values and the second function. In the example, the inferred cost is compared with a threshold value, and the optical flow refinement process is performed when the inferred cost value is greater than or equal to the threshold value. Step 5 can also be performed before Step 3 or Step 4.

Этап 6: модифицируйте по меньшей мере одну выборку предсказания текущего блока кодировки с применением уточнения оптического потока, когда определено, что необходимо выполнить процесс уточнения оптического потока. Step 6: Modify at least one prediction sample of the current encoding block using optical flow refinement when it is determined that the optical flow refinement process needs to be performed.

Когда определено, что необходимо выполнить процесс уточнения оптического потока, применяется уточнение оптического потока со вторым предсказанием в качестве входных данных и измененным вторым предсказанием в качестве выходных данных. Если определено отрицательно, уточнение оптического потока не применяется ко второму предсказанию. Другими словами, когда определено, что необходимо выполнить процесс уточнения оптического потока, окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и согласно процессу уточнения оптического потока. В противном случае окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и без применения процесса уточнения оптического потока.When it is determined that the optical flow refinement process needs to be performed, optical flow refinement is applied with the second prediction as input and the modified second prediction as output. If defined negatively, the optical flow refinement is not applied to the second prediction. In other words, when it is determined that the optical flow refinement process needs to be performed, the final prediction of the current encoding block is obtained according to the second prediction and according to the optical flow refinement process. Otherwise, the final prediction of the current encoding block is obtained according to the second prediction and without applying the optical flow refinement process.

Подробное объяснение этапов следующее:The detailed explanation of the steps is as follows:

На этапе 0 в качестве входных данных получают два исходных вектора движения. Исходный вектор движения может быть определен на основе информации указания в потоке битов. Например, индекс может быть сигнализирован в потоке битов, индекс указывает позицию в списке кандидатных векторов движения. В другом примере индекс предиктора вектора движения и значение разности векторов движения могут сигнализироваться в потоке битов. Вектор движения, который определяется на основе информации указания в потоке битов, определяется как исходные векторы движения.In step 0, two initial motion vectors are received as input. The initial motion vector can be determined based on the indication information in the bitstream. For example, an index may be signaled in a bitstream, the index indicating a position in a list of candidate motion vectors. In another example, the motion vector predictor index and the motion vector difference value may be signaled in the bitstream. The motion vector, which is determined based on the indication information in the bit stream, is determined as the original motion vectors.

В другом примере указания опорных картинок могут быть получены из потока битов, исходные векторы движения получаются на основе индикаций опорных картинок. Указания опорных картинок используются для определения опорных картинок, на которые указывают исходные векторы движения.In another example, reference picture indications may be obtained from a bit stream, the original motion vectors are obtained based on the reference picture indications. Reference picture indications are used to determine the reference pictures that the source motion vectors point to.

Этап 1, этап 2 и этап 3 соответствуют процессу уточнения вектора движения, как объяснено в приведенных выше примерах. Исходные векторы движения уточняются согласно уточнению вектора движения. В одном примере стоимость сопоставления является мерой подобия, которая используется при уточнении вектора движения.Stage 1, stage 2 and stage 3 correspond to the motion vector refinement process as explained in the examples above. The initial motion vectors are refined according to the motion vector refinement. In one example, the matching cost is a measure of similarity that is used in motion vector refinement.

В соответствии с этапом 1 получают первые предсказания, соответствующие исходным векторам движения. В примере есть по меньшей мере 2 пары кандидатных векторов движения в процессе уточнения вектора движения, одна из которых обычно является парой, образованной исходными векторами движения (MV0, MV1). А другая пара кандидатных векторов движения определяется на основе (MV0, MV1) путем добавления небольших возмущений к векторам движения (как объяснено в приведенном выше примере).According to step 1, the first predictions corresponding to the original motion vectors are obtained. In the example, there are at least 2 pairs of candidate motion vectors in the motion vector refinement process, one of which is usually the pair formed by the original motion vectors (MV0, MV1). And another pair of candidate motion vectors is determined based on (MV0, MV1) by adding small perturbations to the motion vectors (as explained in the above example).

На этапе 1 первые предсказания, соответствующие каждой паре кандидатных векторов движения, получаются на основе фильтра интерполяции с M-отводами.In step 1, the first predictions corresponding to each pair of candidate motion vectors are obtained based on the M-tap interpolation filter.

На этапе 2 определяется N стоимостей сопоставления, ассоциированных с N парами кандидатных векторов движения, в соответствии с первыми предсказаниями.In step 2, N matching costs associated with N pairs of candidate motion vectors are determined according to the first predictions.

Согласно этапу 2 получается N стоимостей сопоставления (мера подобия), соответствующих N парам кандидатных векторов движения (MV) на уточнение. Чем выше подобие между двумя блоками предсказания, тем меньше стоимость сопоставления.According to step 2, N matching costs (similarity measure) corresponding to N pairs of candidate motion vectors (MVs) for refinement are obtained. The higher the similarity between two prediction blocks, the lower the matching cost.

Указанные N стоимостей сопоставления используются при уточнении исходных векторов движения на этапе 3.The specified N comparison costs are used when refining the initial motion vectors at stage 3.

Уточненный вектор движения определяется в соответствии с первой функцией и N стоимостей сопоставления.The refined motion vector is determined according to the first function and N matching costs.

В одном примере уточненный вектор движения может быть получен в соответствии со следующей функцией: In one example, the refined motion vector may be obtained in accordance with the following function:

если (sad[3]+sad[5]) равно (sad[4]<<1), dmvOffset[0] устанавливается равным 0,if (sad[3]+sad[5]) is equal to (sad[4]<<1), dmvOffset[0] is set to 0,

Иначе применяется следующее:Otherwise the following applies:

dmvOffset[0]=((sad[3]-sad[5])<<3)/(sad[3]+sad[5]-(sad[4]<< 1))dmvOffset[0]=((sad[3]-sad[5])<<3)/(sad[3]+sad[5]-(sad[4]<< 1))

если (sad[1]+sad[7]) равно (sad[4]<<1), dmvOffset[1] устанавливается равным 0,if (sad[1]+sad[7]) is equal to (sad[4]<<1), dmvOffset[1] is set to 0,

Иначе применяется следующее:Otherwise the following applies:

dmvOffset[1] = ((sad[1]-sad[7])<<3)/(sad[1]+sad[7]-(sad[4]<<1))dmvOffset[1] = ((sad[1]-sad[7])<<3)/(sad[1]+sad[7]-(sad[4]<<1))

где dmvOffset [0] и dmvOffset [1] определяют разницу между исходным и уточненным векторами движения. В примере dmvOffset [0] и dmvOffset [1] определяют компоненты -x и -y разницы между уточненным и исходным векторами движения. sad [0] до sad [7] - это N стоимостей сопоставления, соответствующих N парам кандидатных векторов движения. Уточненный вектор движения получается добавлением dmvOffset к исходным векторам движения.where dmvOffset [0] and dmvOffset [1] define the difference between the original and refined motion vectors. In the example, dmvOffset[0] and dmvOffset[1] define the -x and -y components of the difference between the refined and original motion vectors. sad[0] to sad[7] are N matching costs corresponding to N pairs of candidate motion vectors. The refined motion vector is obtained by adding dmvOffset to the original motion vectors.

Могут быть и другие функции, которые можно использовать для определения уточненного вектора движения в соответствии с N стоимостями сопоставления. Первая функция в изобретении не ограничивается приведенным выше уравнением.There may be other functions that can be used to determine the refined motion vector according to N matching costs. The first function in the invention is not limited to the above equation.

На этапе 4 второе предсказание получается согласно уточненному вектору движения и интерполяционному фильтру с K-отводами. В случае двух уточненных векторов движения (MV0’ и MV1’), что является случаем двунаправленного предсказания, получают два вторых предсказания.In step 4, the second prediction is obtained according to the refined motion vector and the K-tap interpolation filter. In the case of two refined motion vectors (MV0' and MV1'), which is the case of bidirectional prediction, two second predictions are obtained.

Второе предсказание получается путем применения второго фильтра интерполяции (фильтр с K-отводами), который может быть или не быть идентичным первому фильтру интерполяции (фильтр с M-отводами). Второе предсказание получается аналогично первому предсказанию с применением второго интерполяционного фильтра и в соответствии с блоком, указанным MV0’ и MV1’ в опорной картинке.The second prediction is obtained by applying a second interpolation filter (K-tap filter), which may or may not be identical to the first interpolation filter (M-tap filter). The second prediction is obtained similarly to the first prediction using the second interpolation filter and in accordance with the block specified by MV0' and MV1' in the reference picture.

На этапе 5 получается выведенная стоимость в соответствии со второй функцией и упомянутыми N согласованными стоимостями. Выведенная стоимость используется, чтобы определить, выполнять ли процесс уточнения оптического потока или нет. Когда значение упомянутой выведенной стоимости меньше заранее определенного порога, процесс уточнения оптического потока не выполняется. Когда значение выведенной стоимости больше или равно пороговому значению, выполняется процесс уточнения оптического потока. Если выполняется процесс уточнения оптического потока, выборки окончательного предсказания модифицируются.In step 5, the inferred cost is obtained according to the second function and the mentioned N agreed costs. The inferred cost is used to determine whether to perform the optical flow refinement process or not. When the value of said derived cost is less than a predetermined threshold, the optical flow refinement process is not performed. When the value of the inferred cost is greater than or equal to the threshold value, the optical flow refinement process is performed. If the optical flow refinement process is performed, the final prediction samples are modified.

На этапе 6, в соответствии с выходными данными этапа 5, если выведенная стоимость больше указанного порога, процесс уточнения оптического потока применяется ко вторым предсказаниям, вторые предсказания получаются согласно MV0’ и MV1’ (уточненные векторы движения). Окончательное предсказание для текущего блока кодировки получается путем выполнения процесса уточнения оптического потока над вторыми предсказаниями, вторые предсказания указываются посредством MV0’ и MV1’. Если стоимость сопоставления меньше указанного порога, окончательное предсказание получается в соответствии со вторыми предсказаниями, указанными MV0’ и MV1’, без применения уточнения оптического потока, что означает, что этап 6 не выполняется.In step 6, according to the output of step 5, if the inferred cost is greater than the specified threshold, the optical flow refinement process is applied to the second predictions, the second predictions are obtained according to MV0' and MV1' (refined motion vectors). The final prediction for the current encoding block is obtained by performing an optical flow refinement process on the second predictions, the second predictions being indicated by MV0' and MV1'. If the matching cost is less than the specified threshold, the final prediction is obtained according to the second predictions specified by MV0' and MV1' without applying optical flow refinement, which means that step 6 is not performed.

Согласно другой реализации, когда процесс уточнения оптического потока не выполняется, окончательное предсказание получается в соответствии со следующей формулой:According to another implementation, when the optical flow refinement process is not performed, the final prediction is obtained according to the following formula:

Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K, Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K,

где W1 и W2 - весовые коэффициенты, W1 и W2 могут передаваться в потоке битов или могут быть заранее определены на стороне кодера или на стороне декодера. K - аддитивный коэффициент, который также может быть сигнализирован в потоке битов или заранее определен на стороне кодера или на стороне декодера. В примере, двунаправленное предсказание может быть получено с использованиемwhere W1 and W2 are weights, W1 and W2 may be transmitted in the bit stream or may be predetermined at the encoder side or decoder side. K is an additive coefficient, which can also be signaled in the bitstream or predetermined on the encoder side or on the decoder side. In an example, bidirectional prediction can be obtained using

Bi-prediction = (Prediction1 + Prediction2)/2 , Bi-prediction = (Prediction1 + Prediction2)/2 ,

где W1 и W2 установлены на 1/2, а K установлено на 0. Prediction1 и prediction2 - вторые предсказания, которые получены с помощью интерполяционной фильтрации с К-отводами, Prediction1 соответствует первому уточненному MV (MV0’), а Prediction2 соответствует второму уточненному MV (MV1’).where W1 and W2 are set to 1/2 and K is set to 0. Prediction1 and prediction2 are the second predictions that are obtained using K-tap interpolation filtering, Prediction1 corresponds to the first refined MV (MV0'), and Prediction2 corresponds to the second refined MV (MV1').

Приведенное выше уравнение позволяет получить взвешенную комбинацию двух предсказаний, и результатом является окончательное предсказание для блока.The above equation produces a weighted combination of the two predictions, and the result is the final prediction for the block.

Порог может быть предопределенным значением, значение порога зависит от размера блока предсказания. Например, порог может быть th=nCbW x nCbH x K, где K - значение больше нуля, nCbW и nCbH - ширина и высота блока предсказания.The threshold may be a predefined value, the value of the threshold depends on the size of the prediction block. For example, the threshold could be th=nCbW x nCbH x K, where K is a value greater than zero, nCbW and nCbH are the width and height of the prediction block.

Второй вариант осуществления дополнительно проиллюстрирован блок-схемой на фиг. 7.The second embodiment is further illustrated by a block diagram in FIG. 7.

В одной реализации фильтр с M-отводами представляет собой фильтр с 2 отводами (например, билинейный фильтр) с одним из отводов, равным нулю. В этой реализации фильтр с M-отводами использует 2 коэффициента умножения, значение одного коэффициента всегда равно нулю. Коэффициент, равный нулю, определяется на основе точки дробной выборки, на которую указывает вектор движения. В этом случае значение первого коэффициента умножения или значение второго коэффициента умножения может быть нулевым, в зависимости от дробного компонента вектора движения.In one implementation, an M-tap filter is a 2-tap filter (eg, a bilinear filter) with one of the taps set to zero. In this implementation, the M-tap filter uses 2 multipliers, one of which is always zero. The coefficient equal to zero is determined based on the fractional sampling point pointed to by the motion vector. In this case, the value of the first multiplication factor or the value of the second multiplication factor may be zero, depending on the fractional component of the motion vector.

Пример такого фильтра (с двумя отводами, один из которых нулевой) можно проиллюстрировать в соответствии со следующей таблицей:An example of such a filter (with two taps, one of which is zero) can be illustrated in accordance with the following table:

Позиция дробной выборки pFractional sample position p коэффициенты интерполяционного фильтраinterpolation filter coefficients fbfb LL [p] [0] [p][0] fbfb LL [p] [1] [p][1] 11 1616 00 22 1616 00 33 1616 00 44 1616 00 55 1616 00 66 1616 00 77 1616 00 88 00 1616 99 00 1616 1010 00 1616 11eleven 00 1616 1212 00 1616 1313 00 1616 1414 00 1616 1515 00 1616

Положение дробной выборки (p) может быть получено в соответствии с компонентами исходного или уточненного вектора движения. Например, если компонент -x вектора движения задается как MV0x, то положение дробной выборки может быть получено как p=MV0x% 16, где «%» - это операция по модулю. Как правило, p=MV0x% K, где K представляет количество позиций дробной выборки между двумя позициями выборки. Фильтр интерполяции, приведенный в качестве примера выше, также может называться одноотводным фильтром, поскольку только один из отводов фильтра не равен нулю в каждый момент времени.The fractional sample position (p) can be obtained according to the components of the original or refined motion vector. For example, if the -x component of the motion vector is given as MV0x, then the fractional sampling position can be obtained as p=MV0x% 16, where "%" is the modulo operation. Typically, p=MV0x% K, where K represents the number of fractional sample positions between two sample positions. The interpolation filter shown as an example above may also be called a single-tap filter because only one of the filter's taps is non-zero at any given time.

Другой пример фильтра билинейной интерполяции может быть следующим, и в этом случае оба коэффициента фильтра не равны нулю:Another example of a bilinear interpolation filter could be the following, in which case both filter coefficients are non-zero:

Позиция дробной выборки pFractional sample position p коэффициенты интерполяционного фильтраinterpolation filter coefficients fbfb LL [p] [0] [p][0] fbfb LL [p] [1] [p][1] 11 1515 11 22 1414 22 33 1313 33 44 1212 44 55 11eleven 55 66 1010 66 77 99 77 88 88 88 99 77 99 1010 66 1010 11eleven 55 11eleven 1212 44 1212 1313 33 1313 1414 22 1414 1515 11 1515

В одной реализации значение K равно 8. В других примерах значение M меньше 8.In one implementation, the value of K is 8. In other examples, the value of M is less than 8.

В одной реализации значение M и значение K равны 8.In one implementation, the value of M and the value of K are 8.

В одной реализации вторая функция может быть функцией для линейного комбинирования N стоимостей сопоставления в соответствии с dmvOffset, где dmvOffset было получено на этапе 3. Линейная комбинация x и y будет любым выражением формы ax+by, где a и b - константы. В примере константы a и b могут быть определены на основе dmvOffset. Примеры для второй функции приведены ниже.In one implementation, the second function may be a function for linearly combining the N matching costs according to dmvOffset, where dmvOffset was obtained in step 3. The linear combination of x and y will be any expression of the form ax+by, where a and b are constants. In the example, the constants a and b can be defined based on dmvOffset. Examples for the second function are given below.

В одной реализации вторая функция может быть:In one implementation, the second function could be:

Sad [1] * A+Sad [2] * B+Sad [3] * C+Sad [4] * D, где A, B, C и D больше или равны нулю. В одном примере A, B, C и D могут быть числами от 0 до 1, и в сумме дают 1 (т. е. А+В+С+D=1). В другом примере A, B, C и D могут быть числами больше или равными 0 и которые в сумме дают заранее определенное фиксированное число P, P может быть равно 1,2, 4, 8, 16 и т. д.Sad [1] * A+Sad [2] * B+Sad [3] * C+Sad [4] * D, where A, B, C and D are greater than or equal to zero. In one example, A, B, C and D can be numbers from 0 to 1, and add up to 1 (i.e. A+B+C+D=1). In another example, A, B, C and D may be numbers greater than or equal to 0 and which add up to a predetermined fixed number P, P may be 1,2, 4, 8, 16, etc.

A, B, C и D могут быть заранее заданными фиксированными числами.A, B, C and D can be predefined fixed numbers.

A, B, C и D могут быть получены в соответствии с dmvOffset [0] и dmvOffset [1]. В примере A=dmvOffset [0], B=P1 - dmvOffset [0], C=dmvOffset [1], D=P2 - dmvOffset [1]. Где P1 и P2 могут быть равны 1, 4, 8,16 и т. д.A, B, C and D can be obtained according to dmvOffset[0] and dmvOffset[1]. In the example, A=dmvOffset [0], B=P1 - dmvOffset [0], C=dmvOffset [1], D=P2 - dmvOffset [1]. Where P1 and P2 can be 1, 4, 8,16, etc.

Вышеприведенное уравнение приводится в качестве примера. Уравнение представляет собой линейную комбинацию 4 сопоставимых стоимостей для получения выведенной стоимости. В уравнении используется dmvOffset, который может быть получен на этапе 3. dmvOffset представляет собой разницу между уточненным вектором движения и исходным вектором движения. В одной конкретной реализации dmvOffset определяется как разница между MV0 и MV0’. В частности, dmvOffset [0] может быть разницей между компонентом -x для MV0 и MV0’, тогда как dmvOffset [1] может быть разницей между -y компонентом для MV0 и MV0’.The above equation is given as an example. The equation is a linear combination of the 4 comparable values to obtain the inferred value. The equation uses dmvOffset, which can be obtained in step 3. dmvOffset represents the difference between the refined motion vector and the original motion vector. In one particular implementation, dmvOffset is defined as the difference between MV0 and MV0'. In particular, dmvOffset[0] can be the difference between the -x component for MV0 and MV0', while dmvOffset[1] can be the difference between the -y component for MV0 and MV0'.

В другой реализации вторая функция может быть:In another implementation, the second function could be:

Sad [1] * A+Sad [2] * B+Sad [3] * C, где A, B и C больше или равны нулю. В одном примере A, B и C могут быть числами от 0 до 1, а в сумме дают 1 (т. е. А+В+С=1). В другом примере A, B и C могут быть числами больше или равными 0 и которые в сумме дают заранее определенное фиксированное число P, P может быть равно 1, 2, 4, 8, 16 и т. д.Sad [1] * A+Sad [2] * B+Sad [3] * C, where A, B and C are greater than or equal to zero. In one example, A, B and C can be numbers from 0 to 1, and add up to 1 (i.e. A+B+C=1). In another example, A, B and C may be numbers greater than or equal to 0 and which add up to a predetermined fixed number P, P may be 1, 2, 4, 8, 16, etc.

A, B и C могут быть заранее заданными фиксированными числами.A, B and C can be predefined fixed numbers.

A, B и C могут быть получены в соответствии с dmvOffset [0] и dmvOffset [1]. В примере A=P - dmvOffset [0] - dmvOffset [1], B=dmvOffset [0], C=dmvOffset [1]. Где P может быть равно 1, 4, 8, 16 и т. д.A, B and C can be obtained according to dmvOffset[0] and dmvOffset[1]. In the example, A=P - dmvOffset [0] - dmvOffset [1], B=dmvOffset [0], C=dmvOffset [1]. Where P can be 1, 4, 8, 16, etc.

Вышеприведенное уравнение приводится в качестве примера. Уравнение представляет собой линейную комбинацию трех сопоставимых стоимостей для получения выведенной стоимости. В уравнении используется dmvOffset, который может быть получен на этапе 3. dmvOffset представляет собой разницу между уточненным вектором движения и исходным вектором движения. В одном примере dmvOffset определяется как разница между MV0 и MV0’. В частности, dmvOffset [0] может быть разницей между -x компонентом для MV0 и MV0’, тогда как dmvOffset [1] может быть разницей между -y компонентом для MV0 и MV0’.The above equation is given as an example. The equation is a linear combination of the three comparable values to obtain the inferred value. The equation uses dmvOffset, which can be obtained in step 3. dmvOffset represents the difference between the refined motion vector and the original motion vector. In one example, dmvOffset is defined as the difference between MV0 and MV0'. In particular, dmvOffset[0] can be the difference between the -x component for MV0 and MV0', while dmvOffset[1] can be the difference between the -y component for MV0 and MV0'.

В другой реализации вторая функция для получения выведенной стоимости может быть:In another implementation, the second function to get the inferred value could be:

Используя 5 оцененных значений стоимости неподобия (например, значения SAD) в уточненной паре MV и парах кандидатных MV, которые находятся на целочисленном расстоянии от уточненной пары MV, параметрическая функция поверхности ошибкиUsing 5 estimated dissimilarity cost values (e.g., SAD values) in the refined MV pair and candidate MV pairs that are an integer distance from the refined MV pair, a parametric error surface function

E(x,y) = A*(x - x0) 2 + B*(y - y0)2 + CE(x,y) = A*(x - x 0 ) 2 + B*(y - y 0 ) 2 + C

Подбирается, где (x0, y0) соответствует положению, в котором неподобие между двумя опорными патчами минимизировано, C - значение стоимости в (x0, y0), а A, B - коэффициенты модели. Эти 5 неизвестных могут быть решены точно, если доступны 5 значений стоимости. Другими словами, уравнение для E (x, y) делает предположение, что форма стоимостей сопоставления как функция пространственных позиций около позиции с минимальными стоимостями сопоставления имеет параболическую форму. Selected where(x0,y0) corresponds position at which the dissimilarity between two reference patches is minimized, C is the cost value at (x0, y0), and A, B - coefficients models. These 5 unknowns can be solved exactly if 5 cost values are available. In other words, the equation for E(x,y) makes the assumption that the shape of the matching costs as a function of spatial positions around the position with the minimum matching costs has a parabolic shape.

В одном варианте осуществления используются пары кандидатных MV слева, сверху, справа и снизу уточненной пары MV на расстоянии одного целого пикселя. В этом случае, учитывая оцененные значения E (x, y) в (x, y) позициях (0,0), (-1,0), (0, -1), (1,0) и (0,1) и параметрическое уравнение для E (x, y), 5 неизвестных A, B, C, x0, y0 могут быть решены следующим образом:In one embodiment, pairs of candidate MVs to the left, top, right, and bottom of the refined MV pair are used at a distance of one whole pixel. In this case, given the estimated values of E(x, y) at (x, y) positions (0,0), (-1,0), (0, -1), (1,0) and (0,1 ) and parametric equation for E (x, y), 5 unknowns A, B, C,x0, y0 can be solved as follows:

A = (E (-1,0) + E (1,0) - 2 * E (0,0)) / 2A = (E (-1.0) + E (1.0) - 2 * E (0.0)) / 2

В = (E (0, -1) + E (0,1) - 2 * E (0,0)) / 2B = (E (0, -1) + E (0.1) - 2 * E (0.0)) / 2

x0 = (E (-1,0) - E (1,0)) / (2 * (E (-1,0) + E (1,0) - 2 * E (0,0)))x0 = (E (- 1.0) - E (1.0)) / (2 * (E (-1.0) + E (1.0) - 2 * E (0.0)))

y0 = (E (0, -1) - E (0,1)) / (2 * (E (0, -1) + E (0,1) - 2 * E (0,0)))y0 = (E (0, -1) - E (0,1)) / (2 * (E (0, -1) + E (0,1) - 2 * E (0,0)))

C= C=

С другой стороны, если доступны значения стоимости в более чем 5 позициях, 5 неизвестных могут быть решены с использованием метода наименьших квадратов или аналогичного подхода. Полученное значение C становится выведенной стоимостью.On the other hand, if cost values in more than 5 positions are available, the 5 unknowns can be solved using least squares or a similar approach. The resulting value of C becomes the inferred cost.

В одной реализации вторая функция может быть следующей:In one implementation, the second function could be:

Где K - скаляр больше 0, а от sad [0] до sad [4] - N стоимости сопоставления.Where K is a scalar greater than 0, and sad[0] to sad[4] are N matching costs.

В одном примере процесс уточнения вектора движения выполняется более одного раза для дополнительного уточнения вектора движения. В этом примере исходные векторы движения сначала уточняются процессом уточнения вектора движения, чтобы получить первый уточненный вектор движения. После этого уточнение вектора движения выполняется еще раз, в этом случае первый уточненный вектор движения рассматривается как исходные векторы движения для второго уточнения вектора движения.In one example, the motion vector refinement process is performed more than once to further refine the motion vector. In this example, the original motion vectors are first refined by a motion vector refinement process to obtain the first refined motion vector. After this, the motion vector refinement is performed again, in this case the first refined motion vector is considered as the original motion vectors for the second motion vector refinement.

Исходный вектор движения получается на этапе 925, который является входом блока уточнения вектора движения. Пространство поиска строится вокруг исходного вектора движения блоком (930) уточнения вектора движения. В одном примере пространство поиска состоит из пар кандидатных векторов движения, первого вектора движения из пары, соответствующей первой опорной картинке, и второго вектора движения из пары, соответствующей второй опорной картинке. Первые предсказания, соответствующие каждой паре кандидатных векторов движения, получаются на этапе 910 путем применения фильтра интерполяции M-отводов. Как часть уточнения вектора движения вычисляется стоимость сопоставления, соответствующая N парам векторов движения в пространстве поиска (915). Упомянутые N стоимостей сопоставления используются как часть двух процессов, первый процесс - это уточнение вектора движения (930), где стоимости сопоставления используются для вычисления уточненной пары векторов движения (935) в соответствии с функцией, которая принимает N стоимостей сопоставления как вход. Второй процесс - это решение о том, применяется ли уточнение оптического потока (950) или нет, где решение принимается этапом 945. После получения уточненного вектора движения второе предсказание для текущего блока получается посредством (940). Если стоимость сопоставления превышает пороговое значение, применяется уточнение оптического потока, и предсказание на этапе 940 модифицируется на этапе 950, чтобы получить модифицированное предсказание (955-960). Модифицированное предсказание обычно отличается по выборочным значениям от второго предсказания на этапе 940. Если стоимость сопоставления меньше порогового значения, уточнение оптического потока не применяется, и второе предсказание устанавливается как выходное (окончательное предсказание текущего блока).The original motion vector is obtained at step 925, which is the input of the motion vector refiner block. The search space is built around the original motion vector by the motion vector refinement block (930). In one example, the search space consists of pairs of candidate motion vectors, the first motion vector of the pair corresponding to the first reference picture, and the second motion vector of the pair corresponding to the second reference picture. The first predictions corresponding to each pair of candidate motion vectors are obtained at step 910 by applying an M-tap interpolation filter. As part of the motion vector refinement, a matching cost corresponding to the N pairs of motion vectors in the search space (915) is calculated. The N matching costs are used as part of two processes, the first process is motion vector refinement (930), where the matching costs are used to compute a refined pair of motion vectors (935) according to a function that takes the N matching costs as input. The second process is the decision of whether optical flow refinement (950) is applied or not, where the decision is made by step 945. After receiving the refined motion vector, a second prediction for the current block is obtained by (940). If the matching cost exceeds the threshold, optical flow refinement is applied and the prediction at step 940 is modified at step 950 to obtain a modified prediction (955-960). The modified prediction typically differs in sample values from the second prediction at step 940. If the matching cost is less than a threshold, no optical flow refinement is applied and the second prediction is set as the output prediction (the final prediction of the current block).

Согласно третьему примерному варианту осуществления настоящего изобретения применяются следующие этапы, чтобы получить предсказание для текущего блока кодировки:According to a third exemplary embodiment of the present invention, the following steps are applied to obtain a prediction for the current encoding block:

Этап 0: получить пару исходных векторов движения на основе информации указания в потоке битов. Step 0: Obtain a pair of initial motion vectors based on the indication information in the bitstream.

Этап 1: получить первый набор предсказанных выборок на основе пары исходных MV и интерполяционного фильтра с M-отводами. Step 1: Obtain the first set of predicted samples based on the pair of original MVs and the M-tap interpolation filter.

Этап 2: получить первую стоимость сопоставления, соответствующую паре исходных MV, используя первый набор предсказанных выборок. Step 2: Obtain the first matching cost corresponding to a pair of original MVs using the first set of predicted samples.

Этап 3: определить, подходит ли текущий блок кодировки для выполнения уточнения вектора движения. Step 3: Determine whether the current encoding block is suitable for performing motion vector refinement.

Этап 4: Если текущий блок кодировки определен как имеющий право выполнять MVR на этапе 3, Step 4: If the current encoding block is determined to be eligible to perform MVR in step 3,

Этап 4a: получить уточненную пару MV и стоимость сопоставления, соответствующую уточненной паре MV, в соответствии с парой исходных MV и стоимостью сопоставления, используя процесс уточнения вектора движения. Step 4a: Obtain the refined MV pair and matching cost corresponding to the refined MV pair according to the original MV pair and matching cost using the motion vector refinement process.

Этап 4b: получить второй набор предсказанных выборок согласно уточненной паре MV и интерполяционному фильтру с K-отводами.Step 4b: Obtain the second set of predicted samples according to the refined MV pair and the K-tap interpolation filter.

Этап 4c: определить, выполнять ли процесс уточнения оптического потока, в соответствии со второй стоимостью сопоставления. В одном примере стоимость сопоставления сравнивается с порогом, и процесс уточнения оптического потока выполняется, когда значение стоимости сопоставления больше или равно пороговому значению.Step 4c: Determine whether to perform the optical flow refinement process according to the second matching cost. In one example, the matching cost is compared to a threshold, and the optical flow refinement process is performed when the matching cost value is greater than or equal to the threshold.

Этап 5: В противном случае (если текущий блок кодировки определен как не имеющий права на выполнение MVR на этапе 3),Step 5: Otherwise (if the current encoding block is determined to be ineligible for MVR execution in step 3),

Этап 5a: получить второй набор предсказанных выборок в соответствии с парой исходных MV и интерполяционным фильтром с K-отводами. Step 5a: Obtain a second set of predicted samples according to a pair of original MVs and a K-tap interpolation filter.

Этап 5b: определить, выполнять ли процесс уточнения оптического потока, в соответствии с первой стоимостью сопоставления. В одном примере стоимость сопоставления сравнивается с порогом, и процесс уточнения оптического потока выполняется, когда значение стоимости сопоставления больше или равно пороговому значению.Step 5b: Determine whether to perform the optical flow refinement process according to the first matching cost. In one example, the matching cost is compared to a threshold, and the optical flow refinement process is performed when the matching cost value is greater than or equal to the threshold.

Этап 6: Когда определено, что необходимо выполнить процесс уточнения оптического потока (либо на этапе 4c, либо на этапе 5b), применяется уточнение оптического потока со вторым предсказанием в качестве входных данных и измененным вторым предсказанием в качестве выходных данных. Если определено отрицательно, уточнение оптического потока не применяется ко второму предсказанию. Другими словами, когда определено, что необходимо выполнить процесс уточнения оптического потока, окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и согласно процессу уточнения оптического потока. В противном случае окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и без применения процесса уточнения оптического потока.Step 6: When it is determined that the optical flow refinement process needs to be performed (either in step 4c or step 5b), optical flow refinement is applied with the second prediction as input and the modified second prediction as output. If defined negatively, the optical flow refinement is not applied to the second prediction. In other words, when it is determined that the optical flow refinement process needs to be performed, the final prediction of the current encoding block is obtained according to the second prediction and according to the optical flow refinement process. Otherwise, the final prediction of the current encoding block is obtained according to the second prediction and without applying the optical flow refinement process.

Этот вариант осуществления дополнительно проиллюстрирован на блок-схеме на фиг.9. Блок 1110 принимает пару исходных MV для текущего блока кодировки для предсказания в позициях L0 и L1. Блок 1110 соответствует этапу 1, на котором первый набор предсказанных выборок получается с использованием пары исходных MV и восстановленных опорных выборок картинок L0 и L1. Блок 1120 соответствует этапу 2, на котором первая стоимость сопоставления (или метрика неподобия, такая как SAD) оценивается между первым набором предсказанных блоков выборок, соответствующих паре исходных MV (как описано в разделе фоновых MVR). Блок 1130 соответствует этапу 3, на котором проверяются условия соответствия текущего блока кодировки выполнению MVR. Блок 1140 соответствует этапу 4a, на котором, если выясняется, что текущий блок кодирования имеет право выполнять MVR, уточненная пара MV получается путем выполнения MVR (как описано в разделе фонового MVR) и второй стоимости сопоставления (или метрики неподобия), соответствующей уточненной паре MV. Блок 1150 соответствует этапу 4b, на котором второй набор предсказанных выборок получается с использованием фильтра интерполяции с K-отводами (в горизонтальном и вертикальном направлениях) с использованием уточненной пары MV. Блок 1160 соответствует этапу 4c, на котором проверяется, меньше ли вторая стоимость сопоставления заранее определенного порога, ниже которого уточнение на основе оптического потока с двунаправленным предсказанием и двунаправленное предсказание пропускаются. Блок 1180 соответствует этапу 5a, на котором текущий блок кодировки пропускает MVR и получает второй набор предсказанных выборок, используя фильтр интерполяции с K-отводами, используя пару исходных MV. Блок 1185 соответствует этапу 5b, на котором проверяется, меньше ли стоимость первого сопоставления заранее определенного порога, ниже которого пропускается BPOF. Блоки 1170 и 1195 соответствуют части этапа 6, в котором, если проверка на этапе 4c или этапе 5b указывает, что вторая или первая стоимость сопоставления соответственно меньше заранее определенного порога, ниже которого пропускается BPOF, усреднение взвешенного двунаправленного предсказания без BPOF выполняется с использованием второго набора предсказанных выборок. Блок 1175 соответствует части этапа 6, на котором, если проверка на этапе 4c или этапе 5b показывает, что вторая или первая стоимость сопоставления не меньше заранее определенного порога, ниже которого пропускается BPOF, получается оценка оптического потока и окончательное двунаправленное предсказание получается с использованием второго набора предсказанных выборок, градиентов второго набора предсказанных выборок и оцененного оптического потока.This embodiment is further illustrated in the block diagram of FIG. 9. Block 1110 receives a pair of source MVs for the current prediction encoding block at positions L0 and L1. Block 1110 corresponds to step 1, in which a first set of predicted samples is obtained using a pair of original MVs and reconstructed reference picture samples L0 and L1. Block 1120 corresponds to step 2, in which a first matching cost (or dissimilarity metric such as SAD) is estimated between the first set of predicted sample blocks corresponding to a pair of original MVs (as described in the background MVRs section). Block 1130 corresponds to step 3, which checks whether the current encoding block matches the MVR execution. Block 1140 corresponds to step 4a where, if the current encoding block is determined to be eligible to perform MVR, a refined MV pair is obtained by performing the MVR (as described in the background MVR section) and a second matching cost (or dissimilarity metric) corresponding to the refined MV pair . Block 1150 corresponds to step 4b, in which a second set of predicted samples is obtained using a K-tap interpolation filter (in the horizontal and vertical directions) using the refined MV pair. Block 1160 corresponds to step 4c, which checks whether the second matching cost is less than a predetermined threshold below which bidirectional predictive optical flow refinement and bidirectional prediction are skipped. Block 1180 corresponds to step 5a, where the current encoding block skips the MVR and obtains a second set of predicted samples using a K-tap interpolation filter using the pair of original MVs. Block 1185 corresponds to step 5b, which checks whether the cost of the first match is less than a predetermined threshold below which the BPOF is passed. Blocks 1170 and 1195 correspond to a portion of step 6 in which, if the check in step 4c or step 5b indicates that the second or first matching cost, respectively, is less than a predetermined threshold below which BPOF is passed, averaging the weighted bidirectional prediction without BPOF is performed using the second set predicted samples. Block 1175 corresponds to a portion of step 6 in which, if the check in step 4c or step 5b indicates that the second or first matching cost is not less than a predetermined threshold below which BPOF is passed, an optical flow estimate is obtained and a final bidirectional prediction is obtained using the second set predicted samples, gradients of the second set of predicted samples, and estimated optical flow.

Следует отметить, что при использовании первой или второй стоимости сопоставления, которые вычисляются для субблока выборок в текущем блоке кодировки, как требуется процессом уточнения вектора движения для определения раннего завершения процесса уточнения на основе оптического потока с двунаправленным предсказанием, решение пропустить или выполнить BPOF может варьироваться от одного субблока MVR к другому в пределах блока кодировки. BPOF должен применяться или пропускаться для всех блоков применения BPOF (например, уровня пикселей или уровня блока выборок 4×4) в пределах субблока на основе определения, выполненного на этапе -4c или этапе -5.It should be noted that when using the first or second matching cost, which are calculated for a sub-block of samples in the current encoding block, as required by the motion vector refinement process to determine early completion of the bidirectional predictive optical flow-based refinement process, the decision to skip or perform BPOF may vary from one MVR subblock to another within an encoding block. BPOF shall be applied or omitted for all BPOF application blocks (eg, pixel level or 4x4 sample block level) within a sub-block based on the determination made in step -4c or step -5.

В некоторых вариантах осуществления можно выполнить дополнительное раннее завершение для каждого блока применения BPOF в субблоке путем получения частичных сопоставимых стоимостей, соответствующих каждому блоку применения BPOF в субблоке MVR.In some embodiments, it is possible to perform additional early termination for each BPOF application block in a subblock by obtaining partial comparable costs corresponding to each BPOF application block in an MVR subblock.

Заранее определенное пороговое значение обычно выбирается как пороговое значение для каждой выборки, которое зависит от битовой глубины первого предсказания или первого набора предсказанных выборок. Например, если первое значение выборки предсказания, полученное с использованием билинейной (2-отводной) интерполяции, ограничено битовой глубиной b, пороговое значение для каждой выборки вычисляется как k * 2 (b - 10), а число выборок, для которых вычисляется стоимость сопоставления, равно N, то предварительно определенное пороговое значение, с которым сравнивается стоимость сопоставления для текущего субблока, должно быть k * N * 2 (10-b). Примерные значения для k равны 2 (для разрядности 10), N - 8×16=128, а b равно 8. Поскольку стоимость сопоставления для данной пары кандидатных MV может быть вычислена с прореженным набором первых предсказанных выборок, значение N следует использовать соответственно. Например, если используются чередующиеся строки блока предсказанных выборок 8×16, N должно быть вычислено как 8×8=64.The predetermined threshold value is typically selected as a per-sample threshold that depends on the bit depth of the first prediction or the first set of predicted samples. For example, if the first prediction sample value obtained using bilinear (2-tap) interpolation is limited by the bit depth b, the threshold value for each sample is calculated as k * 2 (b - 10) , and the number of samples for which the matching cost is calculated is is N, then the predefined threshold against which the matching cost for the current subblock is compared must be k * N * 2 (10-b) . Example values for k are 2 (for bit width 10), N is 8×16=128, and b is 8. Since the matching cost for a given pair of candidate MVs can be calculated with a thinned set of the first predicted samples, the value of N should be used accordingly. For example, if interleaved rows of an 8x16 block of predicted samples are used, N should be calculated as 8x8=64.

Согласно вариантам осуществления изобретения предоставляется способ раннего завершения, чтобы условно пропустить применение процесса уточнения оптического потока, применение процесса уточнения оптического потока считается ресурсоемким с вычислительной точки зрения. В результате среднее время декодирования сокращается.According to embodiments of the invention, an early termination method is provided to conditionally skip the application of the optical flow refinement process, the application of the optical flow refinement process is considered computationally intensive. As a result, the average decoding time is reduced.

Кроме того, условие для условного пропуска применения оптического потока определяется на основе параметров, которые вычисляются другим процессом (вычислением стоимостей сопоставления в ходе процесса уточнения вектора движения). Поскольку используются уже рассчитанные значения, никаких дополнительных вычислений проводить не нужно.In addition, a condition for conditionally skipping the application of optical flow is determined based on parameters that are calculated by another process (calculating matching costs during the motion vector refinement process). Since already calculated values are used, no additional calculations are necessary.

В частности, предоставляется способ кодировки видео, реализованный в устройстве декодирования или устройстве кодирования, как показано на рисунке 10. Способ содержит следующие этапы, которые могут выполняться в заданном порядке. Исходный вектор движения получается для текущего блока 1210. Текущий блок может быть текущим блоком кодировки. Первые предсказания для значения выборки в текущем блоке получаются на основе исходных векторов 1220 движения. Стоимость сопоставления вычисляется согласно первым предсказаниям 1230.Specifically, a video encoding method implemented in a decoding apparatus or an encoding apparatus is provided, as shown in Figure 10. The method comprises the following steps, which may be performed in a predetermined order. The initial motion vector is obtained for the current block 1210. The current block may be the current encoding block. The first predictions for the sample value in the current block are obtained based on the original motion vectors 1220. The matching cost is calculated according to the first 1230 predictions.

После получения первой стоимости сопоставления определяется, должен ли выполняться процесс уточнения оптического потока 1240 или нет, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно заданное условие содержит условие того, является ли вычисленная стоимость сопоставления (например, с точки зрения меры подобия; см. описание выше) равным или большим заранее определенного порогового значения. Процесс уточнения оптического потока для получения окончательного внешнего предсказания для значения выборки в текущем блоке выполняется на этапе 1250, когда определяется, что должен быть выполнен процесс уточнения оптического потока. Когда определено, что процесс уточнения оптического потока не должен выполняться, вычислительные стоимости могут быть сокращены за счет пропуска процесса уточнения оптического потока.After obtaining the first matching cost, it is determined whether the optical flow refinement process 1240 is to be performed or not according to at least one predetermined condition, wherein the at least one predefined condition comprises a condition of whether the calculated matching cost is (e.g., in terms of similarity measures; see description above) equal to or greater than a predetermined threshold value. The optical flow refinement process to obtain the final inter-prediction for the sample value in the current block is performed at step 1250 when it is determined that the optical flow refinement process is to be performed. When it is determined that the optical flow refinement process does not need to be performed, computational costs can be reduced by skipping the optical flow refinement process.

Этот способ может быть реализован в устройствах, описанных выше со ссылкой на Фигуры с 1a по 5.This method can be implemented in the devices described above with reference to Figures 1a to 5.

В частности, способ может быть реализован в контексте процесса уточнения вектора движения на стороне декодера. Входные данные такого процесса:In particular, the method may be implemented in the context of a motion vector refinement process on the decoder side. The input data for such a process is:

местоположение яркости (xSb, ySb), определяющее верхнюю левую выборку текущего субблока кодировки относительно верхней левой выборки яркости текущей картинки,luminance location (xSb, ySb), defining the top left sample of the current encoding subblock relative to the top left luminance sample of the current picture,

переменная sbWidth, определяющая ширину текущего субблока кодировки в выборках яркости,the sbWidth variable, which determines the width of the current encoding subblock in brightness samples,

переменная sbHeight, определяющая высоту текущего субблока кодировки в выборках яркости,the sbHeight variable, which determines the height of the current encoding subblock in brightness samples,

векторы движения яркости с точностью 1/16 дробной выборки mvL0 и mvL1,brightness motion vectors with an accuracy of 1/16 fractional sampling mvL0 and mvL1,

выбранные массивы выборок опорных картинок яркости refPicL0L и refPicL1L.selected arrays of samples of reference brightness pictures refPicL0L and refPicL1L.

Выходными данными этого процесса являются: дельта-векторы движения яркости dMvL0 и dMvL и переменная dmvrSad, определяющая минимальную сумму абсолютных разностей первых предсказаний (см. вычисление SAD, описанный выше). The outputs of this process are the delta brightness motion vectors dMvL0 and dMvL and the variable dmvrSad, which defines the minimum sum of the absolute differences of the first predictions (see the SAD calculation described above).

Вектор движения dMvL0 дельта-яркости может быть выведен с помощью dMvL0 [0] + = 16 * intOffX и dMvL0 [1] + = 16 * intOffY, где intOffX и intOffY - целочисленные смещения выборок в направлениях x и y соответственно. Кроме того, вектор движения dMvL дельта-яркости может быть вычислен как dMvL1 [0] = -dMvL0 [0] и dMvL1 [1] = -dMvL0 [1].The delta luminance motion vector dMvL0 can be inferred using dMvL0[0]+=16*intOffX and dMvL0[1]+=16*intOffY, where intOffX and intOffY are integer sample offsets in the x and y directions, respectively. Additionally, the delta luminance motion vector dMvL can be calculated as dMvL1[0] = -dMvL0[0] and dMvL1[1] = -dMvL0[1].

Значения первой предсказанной выборки яркости выводятся с помощью дробной билинейной интерполяции выборки. В процессе декодирования блоков с внешним предсказанием может применяться или не применяться процесс предсказания выборки двунаправленного оптического потока. Если он не применяется, процесс предсказания взвешенной выборки применяется к уточненным вторым предсказаниям, полученным на основе уточненных векторов движения. Если применяется процесс предсказания выборки двунаправленного оптического потока, он принимает вторые предсказания, полученные на основе уточненных векторов движения, как на входе, и выводит окончательные предсказания.The values of the first predicted brightness sample are derived using fractional bilinear interpolation of the sample. The inter-prediction block decoding process may or may not apply a bidirectional optical flow sample prediction process. If not applied, the weighted sample prediction process is applied to the refined second predictions obtained from the refined motion vectors. If a bidirectional optical flow sample prediction process is applied, it takes the second predictions obtained from the refined motion vectors as input and outputs the final predictions.

Флаг может использоваться, чтобы сигнализировать, можно ли применить процесс предсказания выборки двунаправленного оптического потока. Например, может считаться необходимым условием для выполнения процесса предсказания выборки двунаправленного оптического потока, чтобы флаг был ИСТИНА. Однако это необходимое условие может не быть достаточным условием для выполнения процесса предсказания выборки двунаправленного оптического потока. Достаточным условием может быть то, что и флаг имеет значение ИСТИНА, и вышеописанная стоимость сопоставления равна или превышает предварительно определенный порог. Например, стоимость сопоставления может быть определена на основе переменной dmvrSad, определяющей минимальную сумму абсолютных различий первых предсказаний.The flag may be used to signal whether the bidirectional optical flow sample prediction process can be applied. For example, it may be considered a necessary condition for the execution of the bidirectional optical flow sample prediction process that the flag be TRUE. However, this necessary condition may not be a sufficient condition to perform the bidirectional optical flow sample prediction process. A sufficient condition may be that both the flag is TRUE and the matching cost described above is equal to or greater than a predefined threshold. For example, the cost of matching can be determined based on the variable dmvrSad, which defines the minimum sum of the absolute differences of the first predictions.

С другой стороны, это может считаться достаточным условием для того, чтобы не выполнять процесс предсказания выборки оптического потока, а выполнять процесс предсказания взвешенной выборки, если флаг равен ЛОЖЬ.On the other hand, it may be considered a sufficient condition to not perform the optical flow sample prediction process but to perform the weighted sample prediction process if the flag is FALSE.

Кроме того, предоставляется устройство 1300 для использования в кодере изображения и/или декодере изображения, как показано на Фиг.11. Устройство 1300, согласно этому примерному варианту осуществления, содержит блок 1310 исходного вектора движения, который сконфигурирован для получения исходных векторов движения для текущего блока. Кроме того, устройство 1300 содержит блок 1320 предсказания, который сконфигурирован для получения первых предсказаний для значения выборки в текущем блоке на основе исходных векторов движения. Кроме того, устройство 1300 содержит блок 1330 вычисления стоимости сопоставления, который сконфигурирован для вычисления стоимости сопоставления согласно первым предсказаниям.Additionally, an apparatus 1300 is provided for use in an image encoder and/or an image decoder, as shown in FIG. 11. The device 1300, according to this exemplary embodiment, includes a source motion vector block 1310, which is configured to obtain source motion vectors for the current block. In addition, device 1300 includes a prediction block 1320 that is configured to obtain first predictions for the sample value in the current block based on the original motion vectors. In addition, the device 1300 includes a matching cost calculation unit 1330, which is configured to calculate the matching cost according to the first predictions.

Устройство 1300 содержит блок 1340 определения процесса уточнения оптического потока, который сконфигурирован для определения, следует ли выполнять процесс уточнения оптического потока, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно заданное условие содержит условие того, является ли вычисленная стоимость сопоставления равна или превышает пороговое значение. Кроме того, устройство 1300 содержит блок 1350 выполнения процесса уточнения оптического потока, который сконфигурирован для выполнения процесса уточнения оптического потока для получения окончательного внешнего предсказания для значения выборки в текущем блоке, когда определено, что процесс уточнения оптического потока должен быть выполнен.The apparatus 1300 includes an optical flow refinement process determination unit 1340, which is configured to determine whether to perform an optical flow refinement process according to at least one preset condition, wherein the at least one predefined condition comprises a condition of whether the calculated matching cost is equals or exceeds the threshold value. In addition, the device 1300 includes an optical flow refinement process execution unit 1350, which is configured to perform an optical flow refinement process to obtain a final inter-prediction for the sample value in the current block when it is determined that the optical flow refinement process is to be performed.

Математические операторыMathematical operators

Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т. д.The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are defined more precisely, and additional operations such as exponentiation and real-valued division are also defined. Numbering and counting conventions specify starting at 0, for example, "first" is equivalent to 0, "second" is equivalent to 1, etc.

Арифметические операторыArithmetic operators

Следующие арифметические операторы определены следующим образом:The following arithmetic operators are defined as follows:

++ СложениеAddition -- Вычитание (как оператор с двумя аргументами) или отрицание (как унитарный префиксный оператор)Subtraction (as a two-argument operator) or negation (as a unitary prefix operator) ** Умножение, в том числе матричное умножениеMultiplication, including matrix multiplication xy x y Возведение в степень. Определяет x в степени y. В других контекстах такое обозначение используется в качестве надстрочного индекса, которое не следует интерпретировать в качестве возведения в степень.Exponentiation. Defines x to the power of y. In other contexts, this notation is used as a superscript that should not be interpreted as exponentiation. // Целочисленное деление с усечением результата в сторону нуля. Например, 7/4 и -7 / -4 усекаются до 1, а -7/4 и 7 / -4 усекаются до -1.Integer division with the result truncated towards zero. For example, 7/4 and -7/-4 are truncated to 1, and -7/4 and 7/-4 are truncated to -1. ÷÷ Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление.Used to indicate division in mathematical equations where truncation or rounding is not intended. Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление.Used to indicate division in mathematical equations where truncation or rounding is not intended. Суммирование f (i), где i принимает все целые значения от x до y включительно.Summation f(i), where i takes all integer values from x to y inclusive. x % yx % y Операция по модулю. Остаток от деления x на y, определена только для целых чисел x и y с x >= 0 и y > 0.Modulo operation. The remainder of x divided by y is defined only for integers x and y with x >= 0 and y > 0.

Логические операторыLogical operators

Следующие логические операторы определены следующим образом:The following logical operators are defined as follows:

x && y Булево логическое "и" для x и y x && y Boolean logical "and" for x and y

х || y Булево логическое "или" для x и yx || y Boolean logical "or" for x and y

! Булево логическое «не»! Boolean logical "not"

x? y:z Если x равен ИСТИНЕ или не равен 0, вычисляется значение y; в противном случае вычисляется значение z.x? y:z If x is TRUE or not 0, the value of y is calculated; otherwise, the z value is calculated.

Операторы отношенияRelational operators

Следующие операторы отношения определены следующим образом:The following relational operators are defined as follows:

> Больше> More

>= Больше или равно>= Greater than or equal to

< Меньше< Less

<= Меньше или равно<= Less than or equal to

= = Равно= = Equal

!= Не равно!= Not equal

Когда реляционный оператор применяется к элементу синтаксиса или переменной, которому(ой) присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для элемента синтаксиса или переменной. Значение «na» не считается равным любому другому значению.When a relational operator is applied to a syntax element or variable that is assigned the value "na" (not applicable), the value "na" is treated as a separate value for the syntax element or variable. The value "na" is not considered equal to any other value.

Битовые операторыBit operators

Следующие битовые операторы определены следующим образом:The following bitwise operators are defined as follows:

& Битовое «и». При работе с целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более старших битов, равных 0.& Bitwise "and". When working with integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits that are 0.

| Битовое «или». При работе с целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более старших битов, равных 0.| Bitwise "or". When working with integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits that are 0.

^ Битовое «только или». При работе с целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более старших битов, равных 0.^ Bitwise "or only". When working with integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits that are 0.

x >> y Арифметический сдвиг вправо целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB x до операции сдвига.x >> y Arithmetic right shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the most significant bits (MSB) by a right shift have a value equal to MSB x before the shift operation.

x << y Арифметический сдвиг влево целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0.x << y Arithmetic left shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the least significant bits (LSB) by left shifting have a value of 0.

Операторы присваиванияAssignment Operators

Следующие арифметические операторы определены следующим образом:The following arithmetic operators are defined as follows:

= оператор присваивания= assignment operator

+ + Приращение, т.е. x+ + эквивалентно x=x+1; при использовании в индексе массива оценивает значение переменной до операции приращения.+ + Increment, i.e. x+ + is equivalent to x = x +1; when used in an array index, evaluates the value of the variable before the increment operation.

- - Уменьшение, т.е. x- - эквивалентно x=x-1; при использовании в индексе массива оценивает значение переменной до операции уменьшения.- - Decrease, i.e. x- - is equivalent to x = x- 1; when used in an array index, evaluates the value of the variable before the decrement operation.

+= Приращение на указанную величину, т.е. x += 3 эквивалентно x=x+3, а x += (-3) эквивалентно x=x + (-3).+= Increment by the specified amount, i.e. x += 3 is equivalent to x=x+3, and x += (-3) is equivalent to x=x + (-3).

-= Уменьшение на указанную величину, т.е. x -= 3 эквивалентно x=x - 3, а x -= (-3) эквивалентно x=x - (-3).-= Decrease by the specified amount, i.e. x -= 3 is equivalent to x=x - 3, and x -= (-3) is equivalent to x=x - (-3).

Обозначение диапазонаRange designation

Следующее обозначение используется для указания диапазона значений:The following notation is used to indicate a range of values:

x=y..z x принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, а z больше y.x=y..z x takes integer values from y to z, inclusive, where x, y and z are integers and z is greater than y.

Математические функцииMathematical functions

Определены следующие математические функции:The following mathematical functions are defined:

Abs( x ) = Abs( x ) =

Asin (x) тригонометрическая обратная синусоидальная функция, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π ÷ 2 до π ÷ 2 включительно в радианахAsin(x) is a trigonometric inverse sine function operating on an argument x that ranges from -1.0 to 1.0 inclusive, with an output value ranging from -π ÷ 2 to π ÷ 2 inclusive in radians

Atan (x) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π ÷ 2 до π ÷ 2 включительно в радианах.Atan(x) is a trigonometric arctangent function operating on an argument x, with an output value ranging from -π ÷ 2 to π ÷ 2 inclusive, in radians.

Atan2(y, x) = Atan2(y, x) =

(где англ. otherwise – иначе)(where English otherwise – otherwise)

Ceil( x ) наименьшее целое число больше или равно xCeil( x ) smallest integer greater than or equal to x

Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) - 1, x )Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) - 1, x )

Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) - 1, x )Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) - 1, x )

Clip3( x, y, z ) = Clip3( x, y, z ) =

Cos( x ) тригонометрическая функция косинуса, работающая с аргументом x в радианах. Cos( x ) is a trigonometric cosine function that operates on x in radians.

Floor( x ) наибольшее целое число, меньшее или равное x. Floor( x ) is the largest integer less than or equal to x.

GetCurrMsb( a, b, c, d ) = GetCurrMsb( a, b, c, d ) =

Ln( x ) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2.718281828…). Ln( x ) natural logarithm of x (logarithm to base e, where e is the base constant of natural logarithm 2.718281828…).

Log2( x ) логарифм x по основанию 2Log2( x ) logarithm of x to base 2

Log10( x ) логарифм x по основанию 10. Log10( x ) is the logarithm of x to base 10.

Min( x, y ) = Min( x, y ) =

Max( x, y ) = Max( x, y ) =

Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5) Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5)

Sign( x ) = Sign( x ) =

Sin( x ) тригонометрическая функция синуса, работающая с аргументом x в радианах. Sin( x ) is a trigonometric sine function that takes x in radians.

Sqrt( x ) = Sqrt( x ) =

Swap( x, y ) = ( y, x ) Swap( x, y ) = ( y, x )

Tan( x ) тригонометрическая функция тангенса, работающая с аргументом x в радианах. Tan( x ) is a trigonometric tangent function that takes the argument x in radians.

Порядок приоритетности операцийOrder of priority of operations

Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:When the order of precedence in an expression is not explicitly specified using parentheses, the following rules apply:

-- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.-- Higher priority operations are evaluated before any lower priority operation.

-- Операции с одинаковым приоритетом оцениваются последовательно слева направо.-- Operations with the same priority are evaluated sequentially from left to right.

В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.The table below lists the priority of operations from highest to lowest; a higher position in the table indicates higher priority.

Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.For those operators that are also used in the C programming language, the order of precedence used in this description is the same as in the C programming language.

Таблица: Приоритетность операций от наивысшего (в верхней части таблицы) до низшего (в нижней части таблицы)Table: Operation priority from highest (at the top of the table) to lowest (at the bottom of the table)

операции (с операндами x, y и z)operations (with operands x, y and z) "x++", "x- -""x++", "x- -" "!x", "-x" (как унарный префиксный оператор)"!x", "-x" (as unary prefix operator) xyxy "x * y", "x/y", "x ÷ y", " % y""x * y", "x/y", "x ÷ y", " %y" "x+y", "x - y" (как оператор с двумя аргументами), " ""x+y", "x - y" (as an operator with two arguments), " " "x << y", "x >> y""x << y", "x >> y" "x < y", "x <= y", "x > y", "x >= y""x < y", "x <= y", "x > y", "x >= y" "x = = y", "x != y""x == y", "x != y" "x & y""x&y" "x | y""x | y" "x && y""x && y" "x | | y""x | | y" "x ? y : z""x ? y : z" "x..y""x..y" "x=y", "x += y", "x -= y""x=y", "x += y", "x -= y"

Текстовое описание логических операцийText description of logical operations

В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:

if( condition 0 ) if( condition 0 )

statement 0 statement 0

else if( condition 1 )else if( condition 1 )

statement 1 statement 1

...

else /* informative remark on remaining condition */
statement n
else /* informative remark on remaining condition */
statement n

может быть описано следующим образом:can be described as follows:

… как указано ниже / … применяется следующее:... as below / ... the following applies:

- если условие 0, определение 0- if condition 0, definition 0

- Иначе, если условие 1, определение 1- Otherwise, if condition 1, definition 1

- …-...

-- Иначе (информативный комментарий по оставшемуся условию), определение n-- Otherwise (informative comment on the remaining condition), definition n

Каждое определение «если … иначе, если … иначе, …» в тексте вводится словами «… как указано ниже» или «…применяется следующее», за которым сразу следует «если …». Последним условием «если … иначе , если … иначе, …» всегда является «иначе, …». Чередование определений «если … иначе, если … иначе, …» могут быть идентифицированы путем сопоставления «… как указано ниже» или «… применяется следующее» с завершающим «иначе, …».Each "if...otherwise, if...else,..." definition in the text is introduced by the words "...as follows" or "...the following applies" followed immediately by "if...". The last condition “if ... otherwise, if ... otherwise, ...” is always “otherwise, ...”. Alternating definitions "if...else, if...else,..." can be identified by matching "...as follows" or "...the following applies" with the final "otherwise,...".

В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:

if( condition 0a && condition 0b ) if( condition 0a && condition 0b )

statement 0 statement 0

else if( condition 1a || condition 1b )else if( condition 1a || condition 1b )

statement 1 statement 1

...

elseelse

statement n statement n

может быть описано следующим образом:can be described as follows:

… как указано ниже / … применяется следующее:... as below / ... the following applies:

-- Если все из следующих условий истинны, определение 0:-- If all of the following conditions are true, definition 0:

- условие 0a - condition 0a

- условие 0b - condition 0b

-- Иначе, если истинными являются одно или более из следующих условий, определение 1:-- Else, if one or more of the following conditions are true, definition 1:

- условие 1a - condition 1a

- условие 1b - condition 1b

- …-...

- иначе, определение n- otherwise, definition n

В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:

if( condition 0 )if( condition 0 )

statement 0 statement 0

if( condition 1 )if( condition 1 )

statement 1 statement 1

может быть описано следующим образом:can be described as follows:

Когда условие 0, определение 0When condition is 0, definition is 0

Когда условие 1, определение 1When condition 1, definition 1

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

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

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

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

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

Claims (31)

1. Способ кодировки видео, реализованный в устройстве декодирования или устройстве кодирования, содержащий:1. A video encoding method implemented in a decoding device or encoding device, containing: получение исходных векторов движения для текущего блока;obtaining initial motion vectors for the current block; получение первых предсказаний для значения выборки в текущем блоке на основе исходных векторов движения;obtaining first predictions for the sample value in the current block based on the original motion vectors; вычисление первой стоимости сопоставления согласно первым предсказаниям;calculating a first matching cost according to the first predictions; определение, следует ли выполнять процесс уточнения оптического потока или нет, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно заданное условие содержит условие того, равна ли вычисленная первая стоимость сопоставления некоторому порогу или превышает его; иdetermining whether the optical flow refinement process should be performed or not according to at least one predetermined condition, wherein the at least one predetermined condition comprises a condition of whether the calculated first matching cost is equal to or greater than a certain threshold; And выполнение процесса уточнения оптического потока для получения окончательного внешнего предсказания для значения выборки в текущем блоке, когда определено, что должен быть выполнен процесс уточнения оптического потока;performing an optical flow refinement process to obtain a final inter-prediction for the sample value in the current block when it is determined that the optical flow refinement process is to be performed; причем способ дополнительно содержит:wherein the method additionally contains: получение уточненных векторов движения на основе исходных векторов движения и первой стоимости сопоставления;obtaining refined motion vectors based on the original motion vectors and the first matching cost; получение вторых предсказаний для значения выборки в текущем блоке согласно уточненным векторам движения; иobtaining second predictions for the sample value in the current block according to the refined motion vectors; And выполнение процесса уточнения оптического потока, содержащего выполнение уточнения оптического потока на основе вторых предсказаний.performing an optical flow refinement process comprising performing an optical flow refinement based on the second predictions. 2. Способ по п.1, в котором по меньшей мере одно предварительно заданное условие содержит условие, что текущий блок может быть предсказан посредством уточнения вектора движения на стороне декодера.2. The method of claim 1, wherein the at least one predefined condition comprises a condition that the current block can be predicted by refining a motion vector at the decoder side. 3. Способ по п. 1 или 2, в котором определяется, что должен выполняться процесс уточнения оптического потока, когда определяется, что выполнены все из по меньшей мере одного предварительно заданного условия.3. The method of claim 1 or 2, wherein it is determined that the optical flow refinement process is to be performed when it is determined that all of the at least one predetermined condition are satisfied. 4. Способ по одному из предшествующих пунктов, в котором первые предсказания для значения выборки в текущем блоке получают на основе первого фильтра интерполяции.4. The method as claimed in one of the preceding claims, wherein the first predictions for the sample value in the current block are obtained based on the first interpolation filter. 5. Способ по п. 4, в котором первый фильтр интерполяции представляет собой фильтр билинейной интерполяции.5. The method of claim 4, wherein the first interpolation filter is a bilinear interpolation filter. 6. Способ по любому из пп. 1-5, в котором получение первых предсказаний для значения выборки в текущем блоке на основе исходных векторов движения содержит: получение некоторого количества пар кандидатов на основе исходных векторов движения;6. Method according to any one of paragraphs. 1-5, wherein obtaining first predictions for a sample value in the current block based on the original motion vectors comprises: obtaining a number of candidate pairs based on the original motion vectors; получение первых предсказаний для значения выборки в текущем блоке на основе по меньшей мере одной из пар кандидатов;obtaining first predictions for the sample value in the current block based on at least one of the candidate pairs; и при этомand wherein вычисление первой стоимости сопоставления согласно первым предсказаниям содержит определение стоимости сопоставления для каждой из пар кандидатов на основе первых предсказаний иcalculating a first matching cost according to the first predictions comprises determining a matching cost for each of the candidate pairs based on the first predictions and определение наименьшей стоимости сопоставления из определенных стоимостей сопоставления в качестве первой стоимости сопоставления.determining the smallest matching cost from the determined matching costs as the first matching cost. 7. Способ по п. 6, в котором вторые предсказания для значения выборки в текущем блоке получают согласно второму фильтру интерполяции.7. The method of claim 6, wherein second predictions for the sample value in the current block are obtained according to the second interpolation filter. 8. Способ по п. 6 или 7, в котором второй фильтр интерполяции представляет собой фильтр интерполяции с 6 или 8 отводами.8. The method of claim 6 or 7, wherein the second interpolation filter is a 6- or 8-tap interpolation filter. 9. Способ по одному из пп. 6-8, отличающийся тем, что9. Method according to one of paragraphs. 6-8, characterized in that уточненные векторы движения получают согласно второй стоимости сопоставления.the refined motion vectors are obtained according to the second matching cost. 10. Способ по п. 9, в котором, когда значение второй стоимости сопоставления больше или равно другому пороговому значению, определяется, что должен быть выполнен процесс уточнения оптического потока.10. The method of claim 9, wherein when the value of the second matching cost is greater than or equal to another threshold value, it is determined that the optical flow refinement process should be performed. 11. Способ по одному из пп. 6-10, в котором, только когда определено, что процесс уточнения оптического потока не должен выполняться, окончательное внешнее предсказание получается посредством взвешенной суммы вторых предсказаний.11. Method according to one of paragraphs. 6-10, in which, only when it is determined that the optical flow refinement process should not be performed, the final external prediction is obtained by a weighted sum of the second predictions. 12. Способ по одному из предшествующих пунктов, в котором пороговое значение получают в соответствии с размером текущего блока.12. The method according to one of the preceding claims, wherein the threshold value is obtained in accordance with the size of the current block. 13. Способ по одному из предшествующих пунктов, в котором текущий блок является блоком кодировки или субблоком.13. The method according to one of the preceding claims, wherein the current block is an encoding block or a subblock. 14. Способ по одному из предшествующих пунктов, дополнительно содержащий этап, на котором генерируют блок внешнего предсказания, содержащий окончательное внешнее предсказание для значения выборки в текущем блоке.14. The method of one of the preceding claims, further comprising generating an inter prediction block containing a final inter prediction for the sample value in the current block. 15. Кодер (20), содержащий схему обработки для выполнения способа по любому из пп 1-14.15. An encoder (20) containing a processing circuit for performing the method according to any one of paragraphs 1-14. 16. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1-14.16. A decoder (30) comprising a processing circuit for performing the method according to any one of claims. 1-14. 17. Энергонезависимый машиночитаемый носитель данных, содержащий программный код для выполнения способа по любому из пп. 1-14.17. A non-volatile computer-readable storage medium containing program code for executing the method according to any one of claims. 1-14.
RU2021127327A 2019-02-22 2020-02-21 Early termination of optical flow refinement RU2808608C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IN201931007114 2019-02-22

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2023130622A Division RU2023130622A (en) 2019-02-22 2020-02-21 EARLY TERMINATION OF OPTICAL FLOW REFINEMENT

Publications (2)

Publication Number Publication Date
RU2021127327A RU2021127327A (en) 2023-03-22
RU2808608C2 true RU2808608C2 (en) 2023-11-30

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017036414A1 (en) * 2015-09-02 2017-03-09 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding
WO2017133661A1 (en) * 2016-02-05 2017-08-10 Mediatek Inc. Method and apparatus of motion compensation based on bi-directional optical flow techniques for video coding
WO2019010156A1 (en) * 2017-07-03 2019-01-10 Vid Scale, Inc. Motion-compensation prediction based on bi-directional optical flow

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017036414A1 (en) * 2015-09-02 2017-03-09 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding
WO2017133661A1 (en) * 2016-02-05 2017-08-10 Mediatek Inc. Method and apparatus of motion compensation based on bi-directional optical flow techniques for video coding
WO2019010156A1 (en) * 2017-07-03 2019-01-10 Vid Scale, Inc. Motion-compensation prediction based on bi-directional optical flow

Similar Documents

Publication Publication Date Title
JP7471328B2 (en) Encoders, decoders, and corresponding methods
US11985320B2 (en) Early termination for optical flow refinement
US11902508B2 (en) Use of extended samples during search in decoder-side motion refinement
US20210400259A1 (en) Dmvr using decimated prediction block
US20220116624A1 (en) Device and method for computing position of integer grid reference sample for block level boundary sample gradient computation
US20220321921A1 (en) Separate merge list for subblock merge candidates and intra-inter techniques harmonization for video coding
JP2024055893A (en) Clipping levels for nonlinear adaptive loop filters.
WO2020253853A1 (en) Early termination for optical flow refinment
RU2808608C2 (en) Early termination of optical flow refinement
RU2820638C2 (en) Method for calculating position of reference sample of integer grid for calculating gradient of boundary sample of block level in calculating optical flow with dual prediction and correction with dual prediction
RU2814812C2 (en) Deriving chroma sample weight for geometric separation mode
RU2815734C1 (en) Method and device for motion information storage
RU2817030C2 (en) Encoder, decoder and corresponding use methods for ibc combining list